This specification is maintained by the AgentRules Working Group. Have enhancements or want to claim maintainership?Submit Specification →
backendcritical PriorityID: arrow-flight-sql-contiguous-memory-alignment

Arrow Flight SQL Zero-Copy Contiguous Memory Alignment Invariant

Arrow Flight SQL exchanges IPC RecordBatches across distributed analytical runtimes via gRPC streams. To guarantee true zero-copy data transfer and prevent costly deserialization overhead or SIMD bus errors, all exported and ingested Arrow buffers must strictly conform to 64-byte memory boundary alignments and continuous contiguous layouts. Any misaligned slice or intermediary buffer copy destroys query execution speed and breaks the distributed memory fabric.

Prohibited Anti-Pattern: Unaligned Buffer Slicing and Row-Level Serialization in Arrow Flight SQL Endpoints

Export Ready-to-Drop Configuration

Select format below to copy code or download file directly.

---
description: Arrow Flight SQL Zero-Copy Contiguous Memory Alignment Invariant - Arrow Flight SQL exchanges IPC RecordBatches across distributed analytical runtimes via gRPC streams. To guarantee true zero-copy data transfer and prevent costly deserialization overhead or SIMD bus errors, all exported and ingested Arrow buffers must strictly conform to 64-byte memory boundary alignments and continuous contiguous layouts. Any misaligned slice or intermediary buffer copy destroys query execution speed and breaks the distributed memory fabric.
globs: src/flight/**/*.ts, src/arrow/**/*.ts, src/rpc/**/*.ts, src/query/**/*.ts
alwaysApply: true
verified_by: "agentrules.org"
license: "CC-BY-4.0"
source: "https://agentrules.org/rules/arrow-flight-sql-contiguous-memory-alignment"
---

# Arrow Flight SQL Zero-Copy Contiguous Memory Alignment Invariant

> **Severity**: CRITICAL | **Category**: backend
> **Anti-Pattern Warning**: Unaligned Buffer Slicing and Row-Level Serialization in Arrow Flight SQL Endpoints

## System Constraints
You are a Principal Software Architect enforcing the Apache Arrow Flight SQL Contiguous Memory Alignment Invariant. You must reject any code that copies Arrow buffer data, creates unaligned memory offsets, deserializes columnar data into intermediate row maps, or bypasses 64-byte boundary validation before dispatching gRPC FlightData streams. Ensure all buffers are pre-allocated on 64-byte boundaries, memory references remain continuous, and IPC headers match physical byte representations for deterministic zero-copy analytical execution.

## Strict Guidelines
- Engineers MUST ALWAYS verify that all IPC memory allocations for FlightData bodies adhere to 64-byte alignment to maintain compatibility with AVX-512 and ARM Neon vectorized execution.
- Engineers MUST NOT slice Arrow Buffer objects using arbitrary byte offsets without realigning to the nearest 64-byte boundary or zero-copy offset.
- Code SHOULD leverage direct RecordBatch stream writers with continuous memory buffers, avoiding row-oriented JSON or object mapping transitions.
- Services MUST validate byte padding inside custom IPC generators and assert that underlying ArrayBuffer byteOffsets are multiples of 64.
- Components NEVER re-allocate or serialize record batches on the hot path when moving FlightData between storage engines and the network transport.

## Bad vs Good Implementations
### Arrow Flight SQL Stream Construction and Buffer Alignment

#### Bad Antipattern (AI Common Hallucination)
> **Why it fails**: Converting row dictionaries into Arrow tables triggers full re-allocation and memory copies. Slicing raw buffers at arbitrary byte offsets (e.g., offset 3) breaks 64-byte memory boundary invariants required for zero-copy SIMD ingestion, forcing downstream clients to fall back to expensive deserialization or trigger bus errors.
```typescript
import { RecordBatch, tableFromJSON } from 'apache-arrow';
import { ServerWritableStream } from '@grpc/grpc-js';

// ANTI-PATTERN: Row serialization into JSON before constructing Arrow batches
// and slicing raw Buffer without checking 64-byte alignment, forcing deep memcpy.
export function streamFlightDataBad(
  rows: Array<Record<string, unknown>>,
  call: ServerWritableStream<any, any>
): void {
  // Serializes to intermediate structure, destroying zero-copy columnar format
  const table = tableFromJSON(rows);
  for (const batch of table.batches) {
    // Slice without checking byte alignment
    const rawBuffer = Buffer.from(batch.data.children[0].values.buffer);
    const unalignedSlice = rawBuffer.subarray(3, rawBuffer.byteLength);
    
    call.write({
      data_header: Buffer.alloc(10), // Arbitrary unpadded header
      data_body: unalignedSlice // Causes SIMD misalignment crashes / copies in client runtimes
    });
  }
  call.end();
}
```

#### Production Standard (Correct)
> **Standard**: The fix validates the 64-byte alignment of each vector buffer and null bitmap prior to serialization, streams pre-constructed columnar RecordBatches directly using `RecordBatchStreamWriter`, and emits a continuous aligned byte slice directly to gRPC with zero intermediate row allocations or unaligned slicing.
```typescript
import { RecordBatch, RecordBatchStreamWriter } from 'apache-arrow';
import { ServerWritableStream } from '@grpc/grpc-js';

const ALIGNMENT_BYTES = 64;

function assertAlignment(buffer: ArrayBufferView, boundary: number = ALIGNMENT_BYTES): void {
  if (buffer.byteOffset % boundary !== 0) {
    throw new Error(`Memory alignment invariant violated: byteOffset ${buffer.byteOffset} is not aligned to ${boundary}-byte boundary`);
  }
}

// PRODUCTION FIX: Pure zero-copy IPC streaming maintaining 64-byte alignment
export async function streamFlightDataGood(
  batches: AsyncIterable<RecordBatch>,
  call: ServerWritableStream<any, any>
): Promise<void> {
  const writer = new RecordBatchStreamWriter();

  for await (const batch of batches) {
    // Validate contiguous columnar memory alignment
    for (const vector of batch.data.children) {
      assertAlignment(vector.values);
      if (vector.nullBitmap) {
        assertAlignment(vector.nullBitmap);
      }
    }

    // Serialize zero-copy directly to Arrow IPC stream format
    writer.write(batch);
  }

  writer.finish();
  const ipcPayload = writer.toUint8Array(true); // Retains contiguous underlying buffer
  assertAlignment(ipcPayload, ALIGNMENT_BYTES);

  call.write({
    data_header: Buffer.from(ipcPayload.buffer, ipcPayload.byteOffset, 0),
    data_body: Buffer.from(ipcPayload.buffer, ipcPayload.byteOffset, ipcPayload.byteLength)
  });
  call.end();
}
```

Recommended MCP Servers (mcp-serverlist.com)

Equip agent with system tools to verify code for this stack.

Recommended Agent Skills (askills.dev)

Ready-to-use executable skill functions tailored to this stack.

Architectural Specification & Invariant Rationale

Architectural Invariant Design: Arrow Flight SQL Zero-Copy Contiguous Memory Alignment Invariant

Arrow Flight SQL Zero-Copy Contiguous Memory Alignment Invariant defines an industrial-grade behavioral standard for backend engineering. Arrow Flight SQL exchanges IPC RecordBatches across distributed analytical runtimes via gRPC streams. To guarantee true zero-copy data transfer and prevent costly deserialization overhead or SIMD bus errors, all exported and ingested Arrow buffers must strictly conform to 64-byte memory boundary alignments and continuous contiguous layouts. Any misaligned slice or intermediary buffer copy destroys query execution speed and breaks the distributed memory fabric. Modern software architectures require strict adherence to deterministic patterns to guarantee high availability, maintainability, and zero security vulnerabilities.

Framework Paradigm Shift & Drift MechanicsLLMs are trained on millions of open-source repositories containing outdated code, legacy idioms, and unpatched antipatterns. When coding assistants generate implementations for this stack, they default to common statistical tokens: Unaligned Buffer Slicing and Row-Level Serialization in Arrow Flight SQL Endpoints Without an explicit system instruction file, developers spend hours debugging silent failures.
Failure Modes & Production Blast Radius

Hazard Analysis: What Breaks Without This Rule

The following failure modes have been cataloged from hundreds of hours of production code reviews where AI assistants produced non-compliant implementations:

Failure ModeAI Symptom (The Anti-Pattern)SeverityProduction Impact & Remedy
AI Hallucination & Deprecation DriftUnaligned Buffer Slicing and Row-Level Serialization in Arrow Flight SQL EndpointsCritical
Violating this industrial standard introduces regression bugs, security risks, and unexpected runtime failures in production.
Enforce explicit behavioral system directives across all AI coding assistants in your repository.
Silent Architecture InconsistencyAI assistants produce mixed paradigms across files, creating fragmented codebase conventions.Medium
Increases cognitive load during code reviews and leads to maintenance debt across engineering teams.
Pin project conventions in .cursor/rules, CLAUDE.md, and AGENTS.md so all team agents follow identical guardrails.
Architectural Directives in Detail

Step-by-Step Production Directives

Each rule constraint below is injected into the AI agent's system prompt to establish deterministic boundaries:

1

Engineers MUST ALWAYS verify that all IPC memory allocations for FlightData bodies adhere to 64-byte alignment to maintain compatibility with AVX-512 and ARM Neon vectorized execution.

Engineers MUST ALWAYS verify that all IPC memory allocations for FlightData bodies adhere to 64-byte alignment to maintain compatibility with AVX-512 and ARM Neon vectorized execution.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
2

Engineers MUST NOT slice Arrow Buffer objects using arbitrary byte offsets without realigning to the nearest 64-byte boundary or zero-copy offset.

Engineers MUST NOT slice Arrow Buffer objects using arbitrary byte offsets without realigning to the nearest 64-byte boundary or zero-copy offset.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
3

Code SHOULD leverage direct RecordBatch stream writers with continuous memory buffers, avoiding row-oriented JSON or object mapping transitions.

Code SHOULD leverage direct RecordBatch stream writers with continuous memory buffers, avoiding row-oriented JSON or object mapping transitions.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
4

Services MUST validate byte padding inside custom IPC generators and assert that underlying ArrayBuffer byteOffsets are multiples of 64.

Services MUST validate byte padding inside custom IPC generators and assert that underlying ArrayBuffer byteOffsets are multiples of 64.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
5

Components NEVER re-allocate or serialize record batches on the hot path when moving FlightData between storage engines and the network transport.

Components NEVER re-allocate or serialize record batches on the hot path when moving FlightData between storage engines and the network transport.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
Technical Questions & Answers

Frequently Asked Technical Questions

Common questions developers face when configuring AI coding assistants for this stack:

Q:Why is Arrow Flight SQL Zero-Copy Contiguous Memory Alignment Invariant critical for AI coding assistants?

Arrow Flight SQL exchanges IPC RecordBatches across distributed analytical runtimes via gRPC streams. To guarantee true zero-copy data transfer and prevent costly deserialization overhead or SIMD bus errors, all exported and ingested Arrow buffers must strictly conform to 64-byte memory boundary alignments and continuous contiguous layouts. Any misaligned slice or intermediary buffer copy destroys query execution speed and breaks the distributed memory fabric. Without explicit behavioral boundaries, AI coding assistants (Cursor, Claude Code, Windsurf, Codex) rely on training data averages, which frequently produce deprecated, inefficient, or vulnerable code patterns.

Q:How does adopting this rule prevent AI hallucinations?

This rule explicitly declares what the AI must avoid (Unaligned Buffer Slicing and Row-Level Serialization in Arrow Flight SQL Endpoints) and prescribes verified positive examples. Grounding the LLM with negative and positive pairs eliminates guesswork.

Q:Which AI coding environments are supported?

This specification is multi-platform compatible: Cursor (.cursor/rules/*.mdc & .cursorrules), Anthropic Claude Code (CLAUDE.md), Windsurf (.windsurfrules), Codex / Cline (AGENTS.md), and GitHub Copilot (.github/copilot-instructions.md).

Q:Can I combine this rule with other technology stacks?

Yes. Use the Interactive Stack Builder or download an Agent Pack to merge this rule with other frontend, backend, database, security, and DevOps rules without syntax collision.

Open Specification · CC BY 4.0·Free for Personal, Team & Commercial In-Repo Use

Citation & Open Source Attribution Guidelines

This specification is licensed under Creative Commons Attribution 4.0 International (CC BY 4.0). You are completely free to adapt and share this rule in your workspace. If citing, including in public AI benchmark datasets, or redistributing, attribution to AgentRules.org is required.

1 Rule in Stack

Arrow