Acceptance decks scripted: DSL catalog, swift run AcceptanceDecks, differential gate (#24) - #34
Conversation
…fferential gate (#24) The AFK half of #24. AcceptanceDeckCatalog expresses the five acceptance decks (4 bisect cases + build_acceptance) in the public DSL — Action via .action { MotionPath() }, direction via .direction(.moveInNonDefault) — mirroring the committed specs. `swift run AcceptanceDecks [dir]` writes them for the human pass and self-checks each (every record decodes, both SIGTRAP invariants hold) before printing the PLAN Step 6 checklist. AcceptanceDeckTests gate the catalog three ways per deck: the lowering equals DeckSpec.load of the committed spec; authoring the lowered model into the stripped golden reproduces the golden archive graph; and the full template write path emits a structurally valid deck. Verified the gate can fail by perturbing one spec value. The Keynote 15.3 open pass and the v0.1.0 tag stay human-in-the-loop. Roadmap current-position updated for the post-PR-#32 state. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
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 |
@slidebuilder now annotates the SlideContent.body requirement itself, so conformances get builder inference automatically instead of opting in at each use site. The primitives' unreachable Never bodies become real compositions (Slide and SlideGroup compose to themselves) since the inferred builder cannot produce Never. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Pushed |
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Refresh PARALLEL-WORKTREES current-position and the v0.1.0 progress memory so the next session starts at the human Keynote 15.3 acceptance gate. Co-authored-by: Cursor <cursoragent@cursor.com>
Part of #24 — the AFK half. The Keynote 15.3 open pass and the
v0.1.0tag stay with Leo.What this adds
AcceptanceDeckCatalog(internal target, not a product): the five acceptance decks —bisect_in,bisect_out,bisect_action,bisect_direction,build_acceptance— expressed in the public DSL, mirroringresearch/examples/*.jsonfield-for-field. Per PLAN Step 6, Action goes through.action { MotionPath() }and direction through the typed.direction(.moveInNonDefault).swift run AcceptanceDecks [dir](executable target): writes the five decks from the bundled template, self-checks each (every record decodes; both SIGTRAP invariants hold viaUUIDMapVerifier), then prints the PLAN Step 6 human checklist. Default output:./acceptance-decks/.AcceptanceDeckTests— three gates per deck (15 tests):DeckSpec.loadof the committed spec;GoldenSurgeryStripper+ArchiveGraphComparer, same normalization as the 08 — Writer: builds match goldens + invariants (KeynoteKit) #20 differential);Verified non-vacuous: perturbing one catalog value (bisect_in duration 1→2) fails gates 1 and 2.
.claude/PARALLEL-WORKTREES.md: current-position note updated for the post-05–11 — Container stack, navigation, writer, supply, and authoring API (#17, #18, #20, #22, #23) #32 state; phases 2–3 struck.Verification
swift test): 93 tests incl. the 15 new ones.LINT_MODE=STRICT ./Scripts/lint.sh: 0 violations.swift run AcceptanceDecks <scratch>: five.keyfiles written and self-checked (~100 KB each).🤖 Generated with Claude Code