B1 closure trio (post-T-014): business + security + performance baseline#16
Conversation
…2 prep activated Closes B1 — Drop to EL1 + exception infrastructure. The fresh closure trio replaces the 2026-04-28 trio's load-bearing role: that trio approved B1 implementation-complete based on host-test + miri + paper-review evidence; the maintainer-side QEMU smoke (still `Pending QEMU smoke verification` on UNSAFE-2026-0019/0020/0021 at the time) had not run. When the maintainer ran it on 2026-05-06, the smoke surfaced an idle-dispatch regression. T-014 fixed the regression; the comprehensive multi-agent code review (also 2026-05-06) generated α/β/γ doc-polish PRs; today's trio records what B1 actually is once smoke-verified end-to-end. ## Three new review artefacts - docs/analysis/reviews/business-reviews/2026-05-07-B1-closure.md — Period 2026-04-28 → 2026-05-07. What landed (T-014 + ADR-0026 + PRs #12 / #13 / #14 / #15); what changed in the plan (B1 reopen → T-014 fix → fresh closure; B2 prep reactivated; ADR-0026 repurposed); what we learned (smoke is the project's only end-to- end liveness oracle; ADR analysis must simulate, not just argue; comprehensive review's blind spot was "did you actually run the program?"; bot-driven review-rounds are productive when findings are factual-mechanical, less so when stylistic). Adjustments include "no closure-trio without recorded smoke", write-adr skill simulation-table check, comprehensive-review Track K — Live execution. - docs/analysis/reviews/security-reviews/2026-05-07-B1-closure.md — Eight axes, all OK. ADR-0026 / T-014 introduce no new attack surface, capability widening, memory-safety hazard, or threat- model shift. UNSAFE-2026-0014 third Amendment for register_idle; UNSAFE-2026-0019/0020 partial-verification + post-T-014 smoke Amendments; UNSAFE-2026-0021 no-verification Amendment. Eight inherited forward-flagged items unchanged at original severity. Verdict: Approve. - docs/analysis/reviews/performance-optimization-reviews/2026-05-07-B1-closure.md — Re-baseline. Net footprint-neutral vs 2026-04-28: .text 21,792 bytes (-116), .rodata 2,928 (+144), .bss 22,256 (+8). The +144 .rodata is panic-message clarity strings; the +8 .bss is idle: Option<TaskHandle>. Smoke 5.5–6.5 ms boot-to-end, zero events. 11 P-numbered proposals from Track D remain queued (P3 partially landed by γ; P1 / P10 / P4 highest-ROI near-term). No proposals to merge this cycle. Verdict: Merge. ## Status flips + index updates - T-014 In Review → Done. T-014 user-story file's review-history gains row 4 recording the maintainer's independent verification and the closure trio's landing. - docs/analysis/tasks/phase-b/README.md — T-014 row to Done. - docs/roadmap/phases/phase-b.md — sub-breakdown item 7 (T-014) flipped to Done; B1 status block rewritten ("B1 closed 2026-05-07") with citations to the three new review artefacts. - docs/roadmap/current.md — top callout rewritten to record B1 truly closed (2026-05-07); active phase remains B; active milestone advances to B2 (MMU activation); active task cleared (B2 prep / ADR-0027 drafting opens next per ADR-0025 §Rule 1); audit status footnote gains the 2026-05-07 update. - The three review-folder README index tables (business / security / performance) gain 2026-05-07-B1-closure rows. ## Verification recap - cargo fmt --check, cargo host-clippy -D warnings, cargo kernel-clippy -D warnings, cargo kernel-build — all clean. - cargo host-test 25 + 93 + 34 = 152/152. - cargo +nightly miri test 152/152 clean. - QEMU smoke at HEAD e9fa019 reproduces the full demo trace + the boot-to-end elapsed = ... line; -d int,unimp,guest_errors empty for the entire ~5.8 ms run. ## What stays open for δ + B2 prep - δ — write ADR-0023 placeholder file with Status: Deferred body (the README index gained the row in α; the file body is δ's job). - δ — endpoint rollback / ipc_cancel_recv ADR before B2 lands the first userspace destroy path (Track A non-blocker; SchedError::Deadlock rollback leaves endpoint in RecvWaiting). - B2 prep — ADR-0027 (kernel virtual memory layout) drafting + docs/architecture/memory-management.md design-first. The ADR's Dependency chain opens T-015 in the same commit per ADR-0025 §Rule 1. Refs: ADR-0026, ADR-0022, ADR-0025, T-014, B1 closure trio Audit: UNSAFE-2026-0014, UNSAFE-2026-0019, UNSAFE-2026-0020, UNSAFE-2026-0021 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
ⓘ You've reached your Qodo monthly free-tier limit. Reviews pause until next month — upgrade your plan to continue now, or link your paid account if you already have one. |
Reviewer's GuideMarks B1 milestone as truly closed after T-014 by updating roadmap/status docs and adding a fresh business/security/performance closure trio, while documenting the T-014 idle-dispatch refactor’s effects on tests, unsafe-audit status, and future B2/ADR-0027 work. Sequence diagram for B1 closure verification and documentation workflow (sequence)sequenceDiagram
actor Maintainer
participant HostTests as Host_test_suite
participant Miri as Miri_runner
participant Qemu as Qemu_smoke
participant UnsafeLog as Unsafe_audit_log
participant Roadmap as Roadmap_docs
participant Reviews as Closure_trio_docs
participant Tasks as Task_T014_doc
Maintainer->>HostTests: run cargo host-test
HostTests-->>Maintainer: 152/152 tests pass
Maintainer->>Miri: run cargo +nightly miri test
Miri-->>Maintainer: 152/152 tests pass
Maintainer->>Qemu: run ./tools/run-qemu.sh
Qemu-->>Maintainer: full demo trace\n"tyrne: all tasks complete"\n"boot-to-end elapsed = ... ns"\n-d int,unimp,guest_errors empty
Maintainer->>UnsafeLog: append Amendments for\nUNSAFE-2026-0014/0019/0020/0021
UnsafeLog-->>Maintainer: audit status updated
Maintainer->>Tasks: flip T-014 status\nIn Review -> Done
Tasks-->>Maintainer: T-014 documented as Done
Maintainer->>Roadmap: update current.md and phase-b.md\nB1 status -> closed 2026-05-07\nActive milestone -> B2
Roadmap-->>Maintainer: roadmap reflects B1 closure
Maintainer->>Reviews: add 2026-05-07 B1 closure\nBusiness review
Maintainer->>Reviews: add 2026-05-07 B1 closure\nSecurity review
Maintainer->>Reviews: add 2026-05-07 B1 closure\nPerformance baseline
Reviews-->>Maintainer: closure trio published
Maintainer->>Roadmap: update next task / review trigger\nB2 prep (ADR-0027) now active
Roadmap-->>Maintainer: roadmap points to B2 prep
Flow diagram for B1 lifecycle and transition to B2 (flow)flowchart TD
A_B0["B0 milestone closed\n2026-04-27 (PR #9)"]
B_B1_impl_claim["B1 implementation marked complete\n2026-04-28 (PR #10; T-012 + T-013)"]
C_Pending_smoke["UNSAFE-2019/20/21 carry\nPending QEMU smoke verification"]
D_Smoke_regression["2026-05-06: maintainer runs QEMU smoke\nIdle-dispatch regression discovered"]
E_B1_reopened["B1 milestone reopened\nper smoke-regression mini-retro"]
F_ADR0026["ADR-0026 Accepted\nIdle dispatch via separate fallback slot"]
G_T014_impl["T-014 implemented\nScheduler::idle + register_idle"]
H_T014_in_review["T-014 In Review\nVerification green"]
I_T014_done["2026-05-07: T-014 Done\nMaintainer smoke re-run matches"]
J_B1_true_closed["B1 milestone truly closed\n2026-05-07"]
K_Closure_trio["2026-05-07 closure trio landed\nBusiness + Security + Performance"]
L_B2_prep_active["B2 prep reactivated\nADR-0027 (kernel virtual memory layout)"]
A_B0 --> B_B1_impl_claim
B_B1_impl_claim --> C_Pending_smoke
C_Pending_smoke --> D_Smoke_regression
D_Smoke_regression --> E_B1_reopened
E_B1_reopened --> F_ADR0026
F_ADR0026 --> G_T014_impl
G_T014_impl --> H_T014_in_review
H_T014_in_review --> I_T014_done
I_T014_done --> J_B1_true_closed
J_B1_true_closed --> K_Closure_trio
K_Closure_trio --> L_B2_prep_active
Flow diagram for B1 closure trio documentation relationships (flow)flowchart TD
subgraph StatusDocs["Roadmap and task status docs"]
A_current["docs/roadmap/current.md\nB1 closed 2026-05-07"]
B_phaseB["docs/roadmap/phases/phase-b.md\nStatus: B1 closed"]
C_T014["docs/analysis/tasks/phase-b/T-014-idle-dispatch-fallback.md\nStatus: Done"]
D_TaskIndex["docs/analysis/tasks/phase-b/README.md\nT-014 row: Done"]
end
subgraph ClosureTrio["B1 closure trio (2026-05-07)"]
E_Biz["Business review\n2026-05-07-B1-closure.md"]
F_Sec["Security review\n2026-05-07-B1-closure.md"]
G_Perf["Performance baseline\n2026-05-07-B1-closure.md"]
end
subgraph ReviewIndexes["Review index READMEs"]
H_BizIndex["business-reviews/README.md\nadds 2026-05-07 row"]
I_SecIndex["security-reviews/README.md\nadds 2026-05-07 row"]
J_PerfIndex["performance-optimization-reviews/README.md\nadds 2026-05-07 row"]
end
K_OldTrio["2026-04-28 B1 closure trio\nmarked historical only"]
A_current --> ClosureTrio
B_phaseB --> ClosureTrio
C_T014 --> ClosureTrio
D_TaskIndex --> ClosureTrio
E_Biz --> H_BizIndex
F_Sec --> I_SecIndex
G_Perf --> J_PerfIndex
K_OldTrio --> E_Biz
K_OldTrio --> F_Sec
K_OldTrio --> G_Perf
H_BizIndex --> A_current
I_SecIndex --> A_current
J_PerfIndex --> A_current
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (18)
📝 WalkthroughWalkthroughThis PR adds comprehensive B1 milestone closure documentation, establishes mandatory ADR simulation requirements in the template and skill, defers cross-table capability revocation policy as ADR-0023, introduces endpoint-state rollback decision ADR-0032 with implementation task T-015, and updates status across roadmaps, task indexes, and business/security reviews. All changes are documentation-only with no code modifications. ChangesADR Governance & Template Updates
New Decisions & Implementation Tasks
B1 Milestone Closure & Roadmap Status
Estimated code review effort🎯 2 (Simple) | ⏱️ ~12 minutes Possibly related PRs
Poem
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Hey - I've left some high level feedback:
- You now repeat fairly detailed B1 closure metadata (dates, commit hashes, test counts, smoke description) across
current.md,phase-b.md, the T-014 task file, and the three closure reviews; consider centralizing these canonical numbers in a single source (or a small include-style snippet) and referencing them to reduce the risk of future drift. - The new process rules you articulate in the business review (e.g., 'no closure-trio without recorded smoke', ADR simulation tables) are only captured narratively; it might be worth promoting them immediately into the relevant standards/skills files as normative checklists so that future work doesn’t rely on readers extracting them from a long retrospective.
Prompt for AI Agents
Please address the comments from this code review:
## Overall Comments
- You now repeat fairly detailed B1 closure metadata (dates, commit hashes, test counts, smoke description) across `current.md`, `phase-b.md`, the T-014 task file, and the three closure reviews; consider centralizing these canonical numbers in a single source (or a small include-style snippet) and referencing them to reduce the risk of future drift.
- The new process rules you articulate in the business review (e.g., 'no closure-trio without recorded smoke', ADR simulation tables) are only captured narratively; it might be worth promoting them immediately into the relevant standards/skills files as normative checklists so that future work doesn’t rely on readers extracting them from a long retrospective.Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.
…on table" rules Promote the two process learnings the 2026-05-07 B1 closure retrospective identified into normative checklists at the standards / skills layer, so future work doesn't rely on readers extracting them from a long retrospective. ## Closure-trio acceptance: smoke trace required `docs/analysis/reviews/business-reviews/master-plan.md` §Acceptance criteria gains a new rule: for milestone-completion and phase-closure triggers only, the *What landed* section must include a verbatim copy of the most recent QEMU smoke trace + an `-d int,unimp,guest_errors` event count. A milestone cannot promote past `In Review` to `Done` without this evidence; *narrative* claims of smoke-pass are insufficient. Codified after the 2026-05-06 B1 smoke-regression mini-retro and the 2026-05-07 B1 closure retro §"What we learned" demonstrated that 152 host tests + 152 miri tests + paper-review approval can pass a kernel that hangs at runtime; the smoke is the project's only end-to-end liveness oracle. Maintainer-initiated mini-retros and adhoc reviews are exempt (no closure semantics). ## ADR Simulation section for state-machine ADRs `docs/decisions/template.md` and `.claude/skills/write-adr/SKILL.md` gain a new *Simulation* sub-section under *Decision outcome* + an acceptance-criterion bullet. For multi-step state-machine ADRs (capability flows, IPC handshakes, scheduler dispatch, exception entry, MMU/TLB transitions, syscall ABI handshakes), the body must include a 3-5 row table walking the worst-case interaction through the proposed shape — `(state-pre, action, state-post, switch target / observable effect)`. For non-state-machine subjects (process, governance, dependency policy, single-decision shape), the section is omitted with a one-line "Not applicable" note. Codified after ADR-0026's table caught what ADR-0022's prose-only reasoning had missed; the 2026-05-07 B1 closure retro §"What we learned" is the source. The discipline is what would have surfaced the demo's three-task moment (B unblocked + A yielding + idle in FIFO) before ADR-0022 Accepted, instead of the kernel hang surfacing it 14 days later. Refs: 2026-05-07 B1 closure retrospective, ADR-0022, ADR-0026, sourcery-ai PR #16 review feedback (process-rules-into-checklists) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…e-b.md trim Address sourcery-ai PR #16 review feedback: B1 closure metadata (test counts, ELF section sizes, smoke trace, audit Amendments) appears across current.md, phase-b.md, T-014 review-history, and the three closure reviews; centralize the source of truth in the closure trio and trim the most verbose downstream restatement. ## Closure-trio canonical-source callouts (3 files) Each of the three 2026-05-07 closure reviews (business / security / performance) gains a callout at the top of its body explicitly naming the trio as the source of truth for B1's closing metrics. Other locations referencing B1 metrics (current.md, phase-b.md, T-014 review-history, unsafe-log Amendments) are documented as *summaries at their layer of abstraction*; corrections start at the trio. Reduces drift risk: when a number changes (e.g., a post-closure follow-up adds a test), the trio is what gets corrected first; downstream summaries follow. ## phase-b.md Status block trim The B1 milestone Status block in phase-b.md previously restated the closure trio's headline numbers verbatim (T-013 + T-012 + T-014 commit references, audit-log Amendment list, B5+ caller trigger). Trimmed to a kompakt pointer at the closure trio entry point (the business retro), preserving the *trigger* for the Pending audit notes' clearance but dropping the duplication. Reduces the same-fact-three-places drift risk the sourcery review flagged. current.md and the T-014 review-history are intentionally not trimmed: each is at a different abstraction level (current.md is the reader's pointer; T-014's history is task-level chronicle), and brief restatements at those layers are useful navigation markers, not pure duplication. Refs: sourcery-ai PR #16 review feedback (centralize-canonical-numbers) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Closes δ.1 of the post-B1-closure follow-up arc. ADR-0023's slot was recorded as "accept-deferred" at the B0 closure (2026-04-27), but the file did not exist; the README index gained a no-link row in α (PR #13), and the glossary's CDT entry pointed at the missing path. This commit lands the placeholder body so: - The in-tree references that mention ADR-0023 (glossary, phase-b.md ledger, decisions/README.md index, the B0 closure security review prose) resolve to a citable artefact instead of a 404. - The deferral conditions are recorded at the slot itself rather than scattered across review prose; future agents recognise when the trigger fires (multi-task server arc; first userspace driver with sub-cap delegation; threat-model escalation). - The four-option sketch (whole-system CDT, per-table + back-pointer, explicit revoke-token, indefinite defer to userspace) gives a future ADR author a starting analysis instead of a blank page. Status remains `Deferred`. The body is a placeholder, not a load- bearing decision; when a trigger fires, the body gets rewritten in place with a Status flip from `Deferred` to `Proposed` (then `Accepted`). The append-only rule that protects original Accepted bodies does not apply to Deferred placeholders. ## Files changed - docs/decisions/0023-cross-table-capability-revocation-policy.md (new) — placeholder body with deferral conditions, options sketch, references. - docs/decisions/README.md — index row gains the file link (was a prose-only no-link row from α). - docs/glossary.md — CDT entry's "no file at HEAD" qualification removed; clean link to the placeholder. Refs: ADR-0023, ADR-0014, ADR-0017, B0 closure security review 2026-04-27 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Code Review
This pull request formally closes the B1 milestone for the Tyrne project following the resolution of an idle-dispatch regression. It includes the implementation of T-014, the acceptance of ADR-0026, and a comprehensive suite of documentation and polish updates. The pull request also provides a complete B1 closure trio, including a business retrospective, security review, and performance baseline. Review feedback suggests minor terminology clarifications in the business retrospective to improve clarity regarding project phases.
|
|
||
| The bug is exactly what a four-row table of `(queue-state-pre, action, queue-state-post)` walked through `unblock_receiver_on` + `yield_now` would have surfaced before the ADR Accept. ADR-0022 didn't write that table; ADR-0026 §Decision outcome does, as the central evidence for why Option B is the correct shape. **The same critique fits every multi-step state-machine ADR the project has shipped:** ADR-0014 cap-derivation tree (had its bug-discoveries via riders post-Accept rather than via simulation pre-Accept), ADR-0017 IPC primitive set (same), ADR-0019 scheduler shape (same), ADR-0022 idle-location (this one). | ||
|
|
||
| Adjustment: extend the [`write-adr` skill](../../../../.claude/skills/write-adr/SKILL.md) with a *Simulation* check item. For every multi-step state-machine ADR (capability flows, IPC handshakes, scheduler dispatch, exception entry, etc.), the body must include a 3-5 row table walking the worst-case interaction through. The simulation table is a *structural discipline* on the body, not a stylistic suggestion. Phase α adopts this for ADR-0027 onwards. |
There was a problem hiding this comment.
The term "Phase α" is confusing here, as "α" was previously used to label a specific documentation PR (#13) and the project follows a Phase A/B/C nomenclature. Since ADR-0027 is part of the B2 milestone preparation, it would be clearer to refer to "B2 prep" or "The project".
| Adjustment: extend the [`write-adr` skill](../../../../.claude/skills/write-adr/SKILL.md) with a *Simulation* check item. For every multi-step state-machine ADR (capability flows, IPC handshakes, scheduler dispatch, exception entry, etc.), the body must include a 3-5 row table walking the worst-case interaction through. The simulation table is a *structural discipline* on the body, not a stylistic suggestion. Phase α adopts this for ADR-0027 onwards. | |
| Adjustment: extend the [`write-adr` skill](../../../../.claude/skills/write-adr/SKILL.md) with a *Simulation* check item. For every multi-step state-machine ADR (capability flows, IPC handshakes, scheduler dispatch, exception entry, etc.), the body must include a 3-5 row table walking the worst-case interaction through. The simulation table is a *structural discipline* on the body, not a stylistic suggestion. B2 prep adopts this for ADR-0027 onwards. |
| - [ ] **Extend `write-adr` skill with a Simulation check.** For every multi-step state-machine ADR, the body must include a 3-5 row queue-state / handshake-state / dispatch-state simulation table. Trigger: drafted alongside ADR-0027 (B2 prep) so the rule lands with its first user. | ||
| - [ ] **Add Track K — Live execution to the comprehensive-review template.** Promote Track F §F-1 to a standalone live-execution track that boots the kernel under QEMU and traces one demo flow end-to-end. Trigger: when the next full-tree review is commissioned (no scheduled trigger; maintainer-initiated). | ||
| - [ ] **B2 prep — ADR-0027 (kernel virtual memory layout) drafting.** Reactivated post-B1-closure; design-first applies (`docs/architecture/memory-management.md` lands alongside or before the implementation, mirroring T-008's `scheduler.md`/`ipc.md` and T-012's `exceptions.md` precedents). The ADR's *Dependency chain* section opens the implementation task (T-015, next free slot) per ADR-0025 §Rule 1. | ||
| - [ ] **δ — write ADR-0023 placeholder file with `Status: Deferred` body.** [`decisions/README.md`](../../../decisions/README.md)'s deferred-row was added in α; per ADR-0025 §Rule 1, every Deferred ADR should still have a file with a body that explains the deferral conditions. δ writes the body. Trigger: opens any time before B2 prep needs to cross-reference the Deferred state from a real task. |
There was a problem hiding this comment.
The phrase "δ writes the body" is redundant and confusingly uses the task label "δ" as a subject. It would be clearer to state that the task involves writing the body or simply remove the redundant sentence.
| - [ ] **δ — write ADR-0023 placeholder file with `Status: Deferred` body.** [`decisions/README.md`](../../../decisions/README.md)'s deferred-row was added in α; per ADR-0025 §Rule 1, every Deferred ADR should still have a file with a body that explains the deferral conditions. δ writes the body. Trigger: opens any time before B2 prep needs to cross-reference the Deferred state from a real task. | |
| - [ ] **δ — write ADR-0023 placeholder file with `Status: Deferred` body.** [`decisions/README.md`](../../../decisions/README.md)'s deferred-row was added in α; per ADR-0025 §Rule 1, every Deferred ADR should still have a file with a body that explains the deferral conditions. This task provides the body. Trigger: opens any time before B2 prep needs to cross-reference the Deferred state from a real task. |
…ecv) + open T-015 Closes δ.2 of the post-B1-closure follow-up arc. The 2026-05-06 comprehensive code review (Track A non-blocker) and the 2026-05-07 B1 closure security review (forward-flagged item) both surfaced an asymmetric rollback in `ipc_recv_and_yield`'s Deadlock path: Phase 1's `ipc_recv` transitions the endpoint from `Idle` to `RecvWaiting`; Phase 2's Deadlock path rolls back the *scheduler* state but does NOT reverse the *endpoint* transition. v1 hides the asymmetry behind ADR-0026's `register_idle` (Deadlock is structurally unreachable when idle is registered as the dispatcher fallback), but the gap becomes a live bug under any of: - userspace-driven endpoint destroy (B2+); - multi-waiter wake-up (ADR-0019 §Open questions); - preemption (B5+). ADR-0032 settles on Option A — add `ipc_cancel_recv(...)` primitive; Deadlock path calls it before returning `Err(SchedError::Deadlock)`. The primitive becomes the single canonical "reverse a recv registration" call site that all three future arcs (destroy-drain, multi-waiter wake, preemption-rollback) will reuse, replacing the per-site duplication Option B would have created. The ADR includes a *Simulation* table per the discipline introduced by ADR-0026 and codified in `template.md` / write-adr skill in the preceding commit — the table walks Phase 2 Deadlock path under v1 + Option A through `(state-pre, action, state-post)` triples; row 3b is what the new host test will mechanically replay. ## Files changed - docs/decisions/0032-endpoint-rollback-and-cancel-recv.md (new) — ADR Proposed status; Decision outcome with Simulation table; Dependency chain naming T-015. - docs/analysis/tasks/phase-b/T-015-endpoint-rollback-cancel-recv.md (new) — Draft user-story per ADR-0025 §Rule 1 (forward-reference contract). Will move to In Progress only after ADR-0032 is Accepted. - docs/analysis/tasks/phase-b/README.md — index row for T-015 (B2 prep, Draft). - docs/decisions/README.md — index row for ADR-0032 (Proposed 2026-05-07). [Updated in earlier δ.1 commit; this commit's diff covers only the entries directly attributable to this decision-pair landing.] - docs/roadmap/phases/phase-b.md — ADR ledger gains the ADR-0032 row; non-blocking for ADR-0027 but required before B-phase userspace-destroy work. Status remains `Proposed` per the [write-adr skill's careful- re-read rule](.claude/skills/write-adr/SKILL.md): Accept may follow same-day after a careful re-read of the ADR end-to-end, but never in the same commit as the initial draft. Refs: ADR-0032, ADR-0017, ADR-0019, ADR-0021, ADR-0022, ADR-0026, T-015, comprehensive review 2026-05-06 Track A, B1 closure security review 2026-05-07 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…ubject wording) - line 110: "Phase α adopts" → "B2 prep adopts" (α is PR alias, not project phase) - line 149: "δ writes the body" → "This task provides the body" (δ as subject of action was confusing) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
All five inline findings from coderabbitai's review of PR #18 verified against current state and applied. (qodo + sourcery rate-limit / cap prevented their input on this PR.) - track-d-perf.md L147: append `#L733-L745` to the bsp-qemu-virt main.rs link so the URL fragment matches the link text. - track-e-docs.md L229-233: remove accidental export artefacts (absolute local path + `Co-Authored-By:` trailer) — these belong in commit metadata, not the review body. - track-f-tests.md L43-44 + L134-138: §F-1 RecvComplete coverage gap is now closed by PR #18 commit `25854a1`'s new `cancel_recv_on_recv_complete_does_not_drop_message_or_cap` test; matrix entry updated and Finding §F-1 moved to "Minor (closed)" with a note that the new test is *stronger* than originally recommended (pins cap-bearing-state property as well). - track-g-process.md L41: fenced code block gains `text` language identifier to satisfy MD040. - current.md L17: "closure trio that lands with this PR" → "closure trio that landed in PR #16 (`95b15aa`)" — the ambiguous "this PR" reading was load-bearing only at the moment PR #16 was open; now permanent history requires a fixed reference. No code changes; no gate impact. fmt clean. Refs: PR #18 review-round (coderabbitai) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Summary
What's in this PR
Test plan
Out of scope (handed off to follow-up work)
🤖 Generated with Claude Code
Summary by Sourcery
Record final closure of B1 milestone after resolving idle-dispatch regression, and rebaseline business, security, and performance artefacts post-T-014.
Enhancements:
Documentation:
Summary by CodeRabbit
Release Notes
Documentation
Chores