Skip to content

coord: DD-026 — relay→jess flight-component consumption contract (jess#167) - #168

Merged
avrabe merged 8 commits into
mainfrom
coord/dd026-consumption-contract
Jul 23, 2026
Merged

coord: DD-026 — relay→jess flight-component consumption contract (jess#167)#168
avrabe merged 8 commits into
mainfrom
coord/dd026-consumption-contract

Conversation

@avrabe

@avrabe avrabe commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

relay opened jess#167 asking jess (the system-integration + on-target authority) to pin the consumption contract for how it integrates relay's flight components across the 3 cores, before relay mints interfaces the wrong shape. DD-026 records jess's position (status: proposed, pending relay's falcon-rate worked example):

  1. Granularity — relay ships fine-grained Level-1 verified stream components (cosign OCI) + a placement manifest; jess owns the per-core meld_fuse + lowering (loom→synth per-ISA→gale) + the flashable-set attestation. Not pre-fused bundles — DD-018 + jess signs its own fused output (TEST-PIX-026/029).
  2. Seam shape — synchronous step(sensor-sample) -> actuator-cmd at the ARINC-653 partition window (DD-025 outer, WCET-bounded); relay keeps stream<T> for Level-1 intra-bundle composition (inner kiln-async).
  3. Seam types — spar-generated from jess's AADL, 1:1 with the HAL seams — already realized (ActuatorCmd.pwm/VehicleState.nav, REQ-PIX-007/TEST-PIX-023).
  4. F100 failsafe — maximal-wasm on M3 (TEST-PIX-028) with gale's verified HM FSM (VER-OS-HM-001, v0.5.0) as the mechanism — not a parallel relay-fsafe.
  5. Delivery — OCI-per-component; jess's V-gates (scry/witness/repro/sigil) run on jess's fused set.

Endorsed the falcon-rate worked example; stated the sequencing honesty (M7 cascade is float-gated, AFD-035 — the F100/M3 path is the green-today validation target).

Replied on jess#167 with the full position. rivet validate → PASS.

🤖 Generated with Claude Code

avrabe and others added 8 commits July 23, 2026 21:51
…ss#167 position)

relay opened jess#167 asking jess to pin the consumption contract for how it integrates
relay's flight components (WASM on all 3 cores) before relay mints interfaces. DD-026
records jess's POSITION (status: proposed, pending relay's falcon-rate worked example):

1. GRANULARITY: relay delivers fine-grained Level-1 verified stream components as cosign OCI
   + a placement manifest; JESS owns per-core meld_fuse + lowering (loom->synth per-ISA->gale)
   + the flashable-set attestation. Not pre-fused bundles (DD-018 + jess signs its own fused
   output, TEST-PIX-026/029).
2. SEAM SHAPE: synchronous step(sensor-sample)->actuator-cmd at the ARINC-653 partition window
   (DD-025 outer, WCET-bounded); relay keeps stream<T> for Level-1 intra-bundle composition
   (inner kiln-async).
3. SEAM TYPES: spar-generated from jess's AADL, 1:1 with the HAL seams — already realized
   (ActuatorCmd.pwm / VehicleState.nav, REQ-PIX-007/TEST-PIX-023).
4. F100 FAILSAFE: maximal-wasm on M3 (TEST-PIX-028) with gale's VERIFIED HM FSM (VER-OS-HM-001,
   v0.5.0) as the mechanism — not a parallel relay-fsafe.
5. DELIVERY: OCI-per-component; jess's V-gates (scry/witness/repro/sigil) run on jess's fused set.

Endorsed relay's falcon-rate worked example. Stated the sequencing honesty: the M7 cascade
can't lower yet (float gate, AFD-035); the F100/M3 path is the green-today validation target.

Replied on jess#167 with the full position. rivet validate PASS.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
… OCI (gale#223), aligning with relay's falcon-flight

Per the consumption contract's OCI-per-component delivery: gale ships release-tarball .o/.wasm
(not OCI) while relay went to ghcr-OCI, so jess's per-core meld-fuse would pull from two paths.
Filed gale#223 asking gale to publish its verified consumable components (HM/failsafe FSM,
gust:os, sync primitives, the fused gale-nano subset) as cosign-signed OCI wasm components -
uniform acquisition + sidesteps the standalone-.o unshipped-scheduler-seam problem. RECORD
(float-gated), aligned now while the contract shape is fresh.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…CI component (residual host = gust:hal), v0.6 cut

gale maintainer agreed on gale#223. Updated the DD-026 delivery decision:
- Artifact shapes pinned: v0.5.0 msgq .o = self-contained decision fragment (0 undef);
  .wasm = core module with the 9-symbol scheduler seam. Neither is the consumable unit
  (corrects my earlier '.o needs 9 symbols' imprecision).
- Resolution: gale delivers a cosign OCI wasm COMPONENT = the fused gale-nano subset
  (msgq/mutex/sem + gust:os + executor) resolving the scheduler seam internally, residual
  host contract = gust:hal (DD-018 thin native seam) and stays that thin. jess's per-core
  meld_fuse pulls relay Level-1 + gale's fused component (both OCI). Cross-linked DD-026 <->
  gale's forthcoming DD; tracked for gale v0.6. F100=VER-OS-HM-001 half already consistent.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…t gust:hal); three WIT layers

Corrected per the gale component-model architecture: the app<->runtime COMPOSITION seam is
gust:os (gale's typed capability world = 'the OS surface an app sees'), which relay's flight
imports and gale's OCI component exports. gust:hal is the deeper NATIVE residual (mmio, jess-
provided), not the composition seam. Three WIT layers, each owned right:
  (i)   gust:os  = capability abstraction (gale) - the composition seam
  (ii)  data seams (sensor-sample/actuator-cmd/NavState) = app<->app (jess-AADL, REQ-PIX-007)
  (iii) gust:hal = native mmio residual (jess)
Scheduler primitives live BELOW gust:os (resolved by the composed executor), never exposed.
gale delivers the gust:os PROVIDERS as the OCI component; jess composes flight+providers along
gust:os -> residual gust:hal. Refined on gale#223.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
… integrator owns seam, loop-complete closed-loop-proof)

relay settled on jess#167: option (a) + two principles jess accepted.
P1: integrator (jess) owns the cross-core seam + width + airframe binding; relay stays
    airframe/target-agnostic (ActuatorCmd.pwm=4xf32 is jess's X500-V2/quad specialization;
    hex = jess seam-width + manifest change, relay mixer parameterized underneath). Confirms
    decision 3.
P2: loop-complete minimality (smallest seam that closes the loop) + every relay component
    ships a closed-loop proof (not a step stub). Proof division: relay proves loop-closes-
    in-source (SIL); jess proves loop-survives-lowering (SIL-vs-Renode differential) = jess's
    on-target value-add; stacks to the full V per stage. Bonus: falcon-rate as its own OCI
    entity gives jess the per-stage skip inventory -> a falcon-skip-to-zero priority signal.

DD-026 stays 'proposed' until falcon-rate validates the seam end-to-end (relay building it).
Replied on jess#167. rivet validate PASS.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…le#225) + build target gale#224 (v0.6)

gale landed its mirror decision with the gust:os correction baked in: DD-OS-DELIVERY-001
(gale#225, rivet PASS) - the consumable cut is a cosign OCI component EXPORTING gust:os,
scheduler resolved below it, residual = gust:hal. Build target gale#224 (the fused gale-nano
component) bound to v0.6, acceptance invariant = wasm-tools confirms a component exporting
gust:os + after wac plug/meld/loom/synth the only undefined syms are the gust:hal mmio seam
(no scheduler/heap leak). Already demonstrated at the tl/ts node level (VER-OS-SYSCALL-001).
DD-026 <-> DD-OS-DELIVERY-001 cross-linked; consumption contract bilaterally pinned across
relay/jess/gale.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ers shrink jess-native to gust:hal (the DD-026 driver half)

gale v0.5.0's verified + silicon-validated thin-seam driver suite (spi/i2c/adc/can/pwm/gpio/
wdg over gust:hal) refines the DD-015 driver seam: the bus TRANSPORT that DD-015 put in jess's
native host moves DOWN into gale-verified wasm, shrinking jess's native TCB to just gust:hal.
New layering: gust:hal[jess] -> gale verified thin-seam bus driver -> relay protocol/decode/
voting -> sensor-sample[jess AADL] -> relay flight app. Open reconciliation (raised on jess#167):
the gale-bus-driver <-> relay-protocol-driver boundary = the embedded-hal-async transport traits
(gale implements, relay consumes) so the register bus is owned once; + gust-target-gen AADL vs
jess's AADL needs one owner (jess). To pin in the DD-026 driver-path extension.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…+ M7 rate loop); NavState confirmed biases-not-rates

relay found the cascade seams already exist (falcon:cascade@0.7.0) and asked jess (seam owner)
to confirm the M4<->M7 data flow. Confirmed + added jess's side:
- VehicleState.nav (16, biases + NO rates) is the canonical IEKF state; the rate loop takes the
  RAW gyro as a SEPARATE co-scheduled-on-M7 sample and bias-corrects it with NavState's gyro-bias
  (freshest inner-loop gyro, no cross-core/filter lag) - the standard PX4 fan-out.
- Added ImuSample.raw (6xf32 = gyro3+accel3) to hardware/pixhawk6x-rt.aadl; spar emits
  `record imu-sample-raw` on both falcon.wit (rate loop) + estimator.wit (ekf) = the fan-out.
  WIT-derivation gate green (committed wit/ == spar codegen).
- innovation stays OUT of the controller crossing (separate Health-Monitor signal, VER-OS-HM-001).
- Recorded in DD-026. relay's one seam edit: rate re-feeds gyro from imu-sample, not vehicle-state.

Verified: rivet validate PASS; spar parse+instance OK; WIT-derivation gate OK.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@avrabe
avrabe merged commit 13ea1fd into main Jul 23, 2026
5 checks passed
@avrabe
avrabe deleted the coord/dd026-consumption-contract branch July 23, 2026 22:44
avrabe added a commit that referenced this pull request Jul 23, 2026
…self-verify findings) (#169)

Clean-room self-verify (2026-07-24) came back 5/7 CONFIRMED (WIT seams derive from AADL,
rivet PASS, REQ-PIX-007 'implemented' + AFD-036 'resolved' both honest, DD-026 records match
the real threads, CI gates non-bypassed). Two findings recorded on DD-026:
- CAVEAT: the relay/jess/gale 'agreements' (jess#167, gale#223/#225) are all one maintainer
  (avrabe) across supplier hats - single-actor coordination, not independent sign-off. jess must
  keep validating claims against the REAL BUILD (per AFD-035), and the mechanical acceptance gates
  (gust:hal-residual check, falcon-rate consumption run, closed-loop-survives-lowering) are what
  make it real - not thread consensus.
- MELD WATCH v0.42.0: ADR-7 multiply-instantiated + PIC linking, relevant to the per-core fuse;
  CI pinned v0.41.3; re-verify the reproducibility gate + multi-component fuse when un-floated.

(The self-verify also flagged a CI-hygiene gap: #166/#168 main-branch push runs didn't complete
- #166 concurrency-cancelled, #168 stuck queued - though both PR-branch runs were verified green
before merge. This PR's merge re-triggers a fresh main run to close it.)

rivet validate PASS.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
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