You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Recurring N/A: feature-loop steps 1–2 (spar AADL → WIT), skipped every release since the loop was adopted
Filing this because the loop's own rule says to, and because the precedent
worked. [pulseengine-feature-loop]:
Recurring N/A is a backlog item, not an exemption. If you mark either one
N/A for the same reason three features running, file it — that pattern is
exactly how a real-flight MC/DC gap and a missing attestation chain stayed
hidden across ~20 features.
That rule already paid off once here: witness MC/DC (step 5) was N/A four
releases running, was filed as #912, and #978 made it real — synth now has
a BRANCH_POPULATION-pinned MC/DC gate that found genuine defects (#1100).
Steps 1–2 have never been filed. Every release records them as "N/A —
synth is a Rust compiler, not AADL-architected", which is true and has never
been examined.
The honest position, stated so it can be argued with
Steps 1–2 say architecture is modelled in spar (AADL) and WIT is generated
from it, never hand-written. For synth:
synth does ship synth-wit, a WIT parser — it consumes WIT, it does
not author interfaces that ought to be spar-generated.
So unlike step 5 — which was genuinely skipped and turned out to be
buildable — steps 1–2 may be structurally N/A rather than deferred. If so,
that deserves to be written down once, with the reasoning, instead of
re-asserted per release by whoever is cutting.
What would change my mind
Two things would make this a real gap rather than a genuine N/A:
The compliance envelope is architecture.SafetyBounds::None as the
default, the reserved-register contract (R9/R10/R11/R12), and the
linear-memory/globals/stack layout are architectural facts an assessor would
expect modelled — and Document the complete embedder layout contract for --relocatable on Cortex-M: R9 is specified, the linear-memory base is not #1131 is an integrator blocked precisely because that
layout contract is only half-written down. If spar can express a memory/
register layout contract, steps 1–2 are not N/A; they are the missing home
for the thing we are about to hand-write in RQ-62-EMBEDDER.
DO-333 consumption. The North Star's claim is a CompCert-shaped story
that DO-178C's formal-methods supplement tells authorities how to consume.
If that story expects an architecture model as an input artifact, "N/A"
costs us later, when it is expensive.
Ask
A decision, not necessarily work: are steps 1–2 permanently N/A for a
compiler (record it once in the methodology and stop re-deriving it), or is the
layout/envelope contract the architecture that should live in spar?
Either answer closes this. What should not continue is the third state — N/A
asserted fresh each release by whoever is cutting, which is how the loop's own
rule says gaps stay hidden.
Refs #912 (the precedent), #1131 (the layout contract this bears on)
Recurring N/A: feature-loop steps 1–2 (spar AADL → WIT), skipped every release since the loop was adopted
Filing this because the loop's own rule says to, and because the precedent
worked. [
pulseengine-feature-loop]:That rule already paid off once here: witness MC/DC (step 5) was N/A four
releases running, was filed as #912, and #978 made it real — synth now has
a
BRANCH_POPULATION-pinned MC/DC gate that found genuine defects (#1100).Steps 1–2 have never been filed. Every release records them as "N/A —
synth is a Rust compiler, not AADL-architected", which is true and has never
been examined.
The honest position, stated so it can be argued with
Steps 1–2 say architecture is modelled in spar (AADL) and WIT is generated
from it, never hand-written. For synth:
selector seam (v0.11.9: pointer param live across calls not preserved in a complex/register-heavy fn (sem read from 0x20000100+clobbered r0) — minimal cases pass (follow-up to #188) #197), neither of which is expressed in spar.
synth-wit, a WIT parser — it consumes WIT, it doesnot author interfaces that ought to be spar-generated.
So unlike step 5 — which was genuinely skipped and turned out to be
buildable — steps 1–2 may be structurally N/A rather than deferred. If so,
that deserves to be written down once, with the reasoning, instead of
re-asserted per release by whoever is cutting.
What would change my mind
Two things would make this a real gap rather than a genuine N/A:
SafetyBounds::Noneas thedefault, the reserved-register contract (R9/R10/R11/R12), and the
linear-memory/globals/stack layout are architectural facts an assessor would
expect modelled — and Document the complete embedder layout contract for --relocatable on Cortex-M: R9 is specified, the linear-memory base is not #1131 is an integrator blocked precisely because that
layout contract is only half-written down. If spar can express a memory/
register layout contract, steps 1–2 are not N/A; they are the missing home
for the thing we are about to hand-write in
RQ-62-EMBEDDER.that DO-178C's formal-methods supplement tells authorities how to consume.
If that story expects an architecture model as an input artifact, "N/A"
costs us later, when it is expensive.
Ask
A decision, not necessarily work: are steps 1–2 permanently N/A for a
compiler (record it once in the methodology and stop re-deriving it), or is the
layout/envelope contract the architecture that should live in spar?
Either answer closes this. What should not continue is the third state — N/A
asserted fresh each release by whoever is cutting, which is how the loop's own
rule says gaps stay hidden.
Refs #912 (the precedent), #1131 (the layout contract this bears on)