Skip to content

Acceptance decks scripted: DSL catalog, swift run AcceptanceDecks, differential gate (#24) - #34

Merged
leogdion merged 5 commits into
v0.1.xfrom
24-acceptance-decks
Jul 30, 2026
Merged

Acceptance decks scripted: DSL catalog, swift run AcceptanceDecks, differential gate (#24)#34
leogdion merged 5 commits into
v0.1.xfrom
24-acceptance-decks

Conversation

@leogdion

Copy link
Copy Markdown
Member

Part of #24 — the AFK half. The Keynote 15.3 open pass and the v0.1.0 tag 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, mirroring research/examples/*.json field-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 via UUIDMapVerifier), then prints the PLAN Step 6 human checklist. Default output: ./acceptance-decks/.

  • AcceptanceDeckTests — three gates per deck (15 tests):

    1. the DSL lowering equals DeckSpec.load of the committed spec;
    2. authoring the lowered model into the stripped golden reproduces the golden archive graph (GoldenSurgeryStripper + ArchiveGraphComparer, same normalization as the 08 — Writer: builds match goldens + invariants (KeynoteKit) #20 differential);
    3. the full public write path emits a structurally valid deck.

    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

  • Full suite green on the 6.4 toolchain (swift test): 93 tests incl. the 15 new ones.
  • LINT_MODE=STRICT ./Scripts/lint.sh: 0 violations.
  • swift run AcceptanceDecks <scratch>: five .key files written and self-checked (~100 KB each).

🤖 Generated with Claude Code

…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>
@coderabbitai

coderabbitai Bot commented Jul 30, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 722dc607-fd49-4f65-871f-c465f2084a1b

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@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>
@leogdion

Copy link
Copy Markdown
Member Author

Pushed 181d2db: @SlideBuilder now annotates the SlideContent.body requirement itself (like SwiftUI's @ViewBuilder var body), so conformances get builder inference automatically — the explicit attribute on BuildAcceptanceContent.body is gone. Side effect: the primitives' unreachable Never bodies had to become real compositions (Slide/SlideGroup compose to themselves) because an inferred builder can't produce Never. Full suite + strict lint green.

CI and others added 3 commits July 30, 2026 08:57
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>
@leogdion
leogdion merged commit a8ccfb8 into v0.1.x Jul 30, 2026
17 checks passed
@leogdion
leogdion deleted the 24-acceptance-decks branch July 30, 2026 13:27
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