Skip to content

plan(v0.7.0): split depth from breadth, and give the deferred timing triad a home - #253

Merged
avrabe merged 1 commit into
mainfrom
plan/v0.7.0-split
Aug 5, 2026
Merged

plan(v0.7.0): split depth from breadth, and give the deferred timing triad a home#253
avrabe merged 1 commit into
mainfrom
plan/v0.7.0-split

Conversation

@avrabe

@avrabe avrabe commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Two committed artifacts disagreed about what v0.7.0 is

Both are in the repo and both cannot govern. Split, rather than let one silently overrule the other:

  • v0.7.0 — depth. E1 execute the composite, E2 dissolve it, plus the timing triad E2 unblocks.
  • v0.7.1 — breadth. RV32, partition tenants, driver componentization, plus E3/E4.

The machinery finding

v0.6.0 is tagged (2026-07-30), but six of its thirteen artifacts still pointed at it unverified — the T2/T3/T4 timing triad, deliberately deferred at that release and never re-pointed.

Two consequences, both bad: a shipped release queried as permanently unclosed, and six real work items were invisible to every later plan. The release-planning skill names this exactly — deferral is a scope decision (bump release:), surfaced and logged, not silence.

release before after
v0.6.0 7 verified, 5 proposed, 1 implemented 7 verified — CLOSED
v0.7.0 2 verified, 8 proposed 2 verified, 1 implemented, 9 proposed
v0.7.1 did not exist 6 proposed

Why the triad ships with the dissolve

E1  execute the composite ─────► one scheduler / one clock become OBSERVED
     │
E2  dissolve the composite ────► the first native object for the whole OS exists
     │                            ├──► T2  object-code verification has an object
     │                            └──► T4  per-function WCET has something to bound
     └────────────────────────────────► T3  schedulability consumes T4's numbers

T2 has nothing to verify and T4 has nothing to bound until E2 produces an object. Planning them apart would have scheduled the consumers ahead of the producer.

New artifact pair

The ladder's E2 rung had no rivet artifact at all — the scope did not represent the thing the triad depends on. Added REQ-OS-COMPOSITE-DISSOLVE-001 / VER-OS-COMPOSITE-DISSOLVE-001.

Its kill-criterion is the one that matters: a smaller object with no undefined symbols is the failure mode, not the win — it means the gust:hal seam was swallowed and the OS is no longer swappable.

Oracle

rivet validate: PASS, 341 warnings before and after — the new artifacts add none. (I did catch myself copying method: test from a neighbouring artifact; it is not an allowed value, so mine uses automated-test. Eight pre-existing artifacts still carry the invalid value — not fixed here, happy to do it as a separate change.)

What this PR does not do

No implementation. This is scope and plan only — E1 has still never been run, and v0.6.0's own notes remain the honest statement of that gap.

…triad a home

Two committed artifacts disagreed about what v0.7.0 is. docs/releases/v0.7.0-plan.md
(2026-07-29) said depth on one claim -- "new drivers, new capabilities and new targets
all wait behind E1". The rivet scope typed in #244 (2026-07-30) put a third target
family, ARINC component tenants and driver componentization inside v0.7.0. Both were in
the repo; both cannot govern. Split rather than let one silently overrule the other.

v0.7.0 is now depth: execute the composite (E1), dissolve it (E2), and the timing triad.
v0.7.1 is breadth: RV32, partition tenants, driver componentization, plus E3/E4.

The bigger finding is a machinery one. v0.6.0 is TAGGED (2026-07-30) but six of its
thirteen artifacts still pointed at it unverified -- the T2/T3/T4 timing triad, which was
deliberately deferred at that release and never re-pointed. The effect is that a shipped
release queried as permanently unclosed and six real work items were invisible to every
later plan. Re-pointed to v0.7.0, which is where the work actually is:

  v0.6.0  7 verified, 5 proposed, 1 implemented  ->  7 verified, CLOSED
  v0.7.0  2 verified, 8 proposed                 ->  2 verified, 1 implemented, 9 proposed
  v0.7.1  (did not exist)                        ->  6 proposed

The triad belongs with the dissolve rather than in its own release: object-code
verification has no object to verify and per-function WCET has nothing to bound until E2
produces one, and schedulability consumes WCET's numbers. Planning them apart would have
scheduled the consumers ahead of the producer.

Added the missing E2 pair (REQ/VER-OS-COMPOSITE-DISSOLVE-001). The ladder's second rung
had no artifact at all, so the release scope did not represent the thing the triad
depends on. Its kill-criterion is the one that matters: a smaller object with NO
undefined symbols means the gust:hal seam was swallowed, which is the failure mode, not
the win.

rivet validate: PASS, 341 warnings before and after -- the new artifacts add none.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011QG86sovTbfnPNY9SfhSmo
@codecov

codecov Bot commented Aug 5, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@avrabe
avrabe merged commit 2fac420 into main Aug 5, 2026
62 checks passed
@avrabe
avrabe deleted the plan/v0.7.0-split branch August 5, 2026 16:56
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