Skip to content

Demo dry-run: rehearsed runbook for the one-hour live terminal demo - #40

Open
Hafeok wants to merge 8 commits into
mainfrom
claude/demo-dryrun-rehearsal-wkkjuu
Open

Demo dry-run: rehearsed runbook for the one-hour live terminal demo#40
Hafeok wants to merge 8 commits into
mainfrom
claude/demo-dryrun-rehearsal-wkkjuu

Conversation

@Hafeok

@Hafeok Hafeok commented Aug 13, 2026

Copy link
Copy Markdown
Owner

Five beats executed end to end against the real stores, with pasted output
and measured timings: the interceptor rejection, the signed declaration and
its reuse refusal, the out-of-band bypass catch, the acceptance refusal
under a model identity, and the governance-chain lookup.

Reports rather than repairs the two findings that change the demo: the Rust
path costs 17-54s against 0.05s for the hostless HTML/CSS path (and its
one-shot invocation returns a third "loading" status rather than failing),
and the aggregate-range form of diff-contracts marks a correctly declared
change undischarged once an unsigned commit lands after it.

No source, test or config changed. No acceptances filed.

Co-Authored-By: Claude Opus 5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session_01VqA8geFhRv2YkJQ96Ca4fE

claude and others added 8 commits August 12, 2026 19:31
Five beats executed end to end against the real stores, with pasted output
and measured timings: the interceptor rejection, the signed declaration and
its reuse refusal, the out-of-band bypass catch, the acceptance refusal
under a model identity, and the governance-chain lookup.

Reports rather than repairs the two findings that change the demo: the Rust
path costs 17-54s against 0.05s for the hostless HTML/CSS path (and its
one-shot invocation returns a third "loading" status rather than failing),
and the aggregate-range form of diff-contracts marks a correctly declared
change undischarged once an unsigned commit lands after it.

No source, test or config changed. No acceptances filed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VqA8geFhRv2YkJQ96Ca4fE
The reset was re-verified after tagging demo-base at the runbook commit:
tree polluted as a rehearsal leaves it, reset, beat 1 re-run clean in
0.052s. Content hashes reproduced byte-identically across rehearsals.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VqA8geFhRv2YkJQ96Ca4fE
Beat 5 becomes one read-only pass through the product flow on the acme
product: enumeration and conformance, the Decider signature derived from
the event model, the un-authored/authored simulate contrast, the How, and
the computed gate status a deliverable is judged by. 0.147s across nine
commands, tree clean.

The seam between the two flows is stated from the flows' own behaviour:
ddd what already classifies the product store's What boundaries, and that
is the only mechanical join today. The design note the brief referenced is
not in this repository, which the section says.

Four new findings reported and not fixed, the largest being that the build
context never loads the How for any product: load_how() resolves only the
legacy layouts and reads the default product name rather than --product.

The swamp content survives as an optional Q&A card, out of the sequence.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VqA8geFhRv2YkJQ96Ca4fE
…es not do

Reported from a WSL Ubuntu 24 run as "the python change isn't doing
anything". Two things, one of them a real defect in the runbook.

The staging step deliberately leaves the governed file byte-identical --
it writes candidate files under /tmp, and beat 1 is the interceptor
refusing to let a candidate land. An unchanged repo file is the demo
working, which the runbook never said.

The defect: str.replace returns the string unchanged when the pattern is
absent, with no error and no exit code, so an un-reset tree or a drifted
stylesheet produced a candidate identical to the source and the beat
quietly did nothing. Replaced with docs/demo/stage-beat1.sh, which
asserts the anchor is present, asserts the token is not already there,
pre-checks for a dirty parent, and exits non-zero with the fix. The
heredoc form also drops the escaped newline the old one-liner carried
inside a double-quoted shell string.

CRLF line endings were tested and ruled out as a cause.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VqA8geFhRv2YkJQ96Ca4fE
The old guard only asked whether docs/demo existed at the tag. A tag that
predated a newly added script therefore passed, and the reset silently
deleted that script -- F7 recurring. Compare the tag against HEAD over the
demo paths, and refuse on uncommitted demo edits too.
F14 (new): the pre-flight's ddd render leaves .ddd/render.html untracked, so
step 5c's 'git status --short' prints a stray line under the exact claim that
it prints nothing. Scope it to .product/ and reorder the pre-flight.

F7 recurred and the guard missed it -- record the currency fix.
F13's 40x timing claim did not reproduce (0.041s vs 0.040s); keep the
line-count reason, drop the number.

Also: 5b's block was pasted 4 lines short, 2d used tail -8 for a 7-line
block, 5f used tail -12 for a 10-line one, the 2a binding hash moves with
HEAD, 222 entries reads 223 after beat 2a, and the 30 declarations is
M8-scoped rather than whole-store.
Warming means really running the 1a rejection, so it logs a seam-event row --
the script therefore runs BEFORE reset.sh in the pre-flight, and says so.

Re-measured: 30.8s cold, 16.0-21.7s warm. The on-disk index survives reset.sh
(target/ is untouched), but it does NOT rescue the one-shot mcp-call.sh, which
still returns status:loading in 0.099s with a fully warm index -- so F1's
two-script split is absolute, not a warmup artifact.
Headings re-read from a clean pre-flight render: 63 declarations, 46
interception rows. The 64/49 figure was captured mid-rehearsal with the
demo's own declaration in the store -- same pre-demo/mid-demo split already
noted for the entry count in 6a.
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.

2 participants