Skip to content

finding: REQ-PIX-007 typed-contract is spar-gated — spar emits opaque list<u8> for all AADL data (AFD-036 / spar#345) - #163

Merged
avrabe merged 1 commit into
mainfrom
finding/spar-structured-wit
Jul 23, 2026
Merged

finding: REQ-PIX-007 typed-contract is spar-gated — spar emits opaque list<u8> for all AADL data (AFD-036 / spar#345)#163
avrabe merged 1 commit into
mainfrom
finding/spar-structured-wit

Conversation

@avrabe

@avrabe avrabe commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

What

Feature-loop step 2 for REQ-PIX-007: I tried to WIT-type the NavState (16×f32) inter-core message so the contract reflects the real payload (not just list<u8>). Verified that spar codegen --format wit maps every AADL data type to type X = list<u8> regardless of structure:

  • spar v0.24.0 (CI pin) and v0.30.0 (latest), ×
  • two AADL constructs: Data_Model (Data_Representation=>Array, Base_Type=>Float, Dimension=>16) and a data implementation with Base_Types::Float subcomponents.

Both drop the structure → type vehicle-state = list<u8>.

Decision

Rather than hand-write a structured WIT (which would violate the "derived from spar, never hand-written" discipline and break the TEST-PIX-023 derivation gate), I filed spar#345 — a respectful question/friction (spar has a data-plane marshalling feature, so this may be a missing construct) with the exact repro + jess impact + a suggested mapping (data-impl subcomponents → WIT record; Array+Float+Dimensionlist<f32>).

The byte-exact NavState crossing (TEST-PIX-030) is proven and independent of this — only the typed-contract half of REQ-PIX-007 is spar-gated.

Changes

  • EXTERNALANCHOR-008 (spar supplier boundary — none existed) + AFD-036 (open, filed-upstream, traces REQ-PIX-007).
  • TEST-PIX-030 next-rung note: WIT-typing spar-gated; the IPC carrier next rung → gale's verified k_msgq (v0.4.0).

rivet validate → PASS. Not blocking the on-target path (falcon is #369-gated regardless).

🤖 Generated with Claude Code

…X-007 typed-contract spar-gated (AFD-036, spar#345)

Feature-loop step 2 for REQ-PIX-007: tried to WIT-TYPE the NavState (16xf32) inter-core
message so the contract reflects the real payload. spar codegen --format wit maps EVERY
AADL data type to an opaque byte-list type regardless of structure — verified on spar
v0.24.0 (CI pin) AND v0.30.0 (latest) across two AADL constructs (Data_Model
Array/Float/Dim16; data implementation with Float subcomponents). Both drop the structure.

Rather than hand-write a structured WIT (violates derived-from-spar + breaks the
TEST-PIX-023 gate), filed spar#345 (respectful, exact repro + suggested mapping). The
byte-exact NavState crossing (TEST-PIX-030) is proven and independent; only the
TYPED-contract half of REQ-PIX-007 is spar-gated.

- EXTERNALANCHOR-008 (spar supplier boundary) + AFD-036 (open, filed-upstream).
- TEST-PIX-030 next-rung note updated (WIT-typing spar-gated; carrier -> gale k_msgq).

rivet validate PASS.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@avrabe
avrabe merged commit 667bfff into main Jul 23, 2026
5 checks passed
@avrabe
avrabe deleted the finding/spar-structured-wit branch July 23, 2026 10:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant