feat(method): ceremony-to-effort — 7 ceremony cuts, floors untouched (7/7 gate PASS)#146
Merged
Conversation
…d ceremony cuts Create + confirm the ceremony-to-effort sub-milestone (extends risk-proportional-ceremony's held-open <=12-call criterion). Grounded in two audits run 2026-07-13: - transcript anatomy of the LOOP-2 benchmark runs: best run 37% artifact / 63% ceremony vs spec-kit 95%; skip-bait, byte-identical retries (12-21% of calls), --help residue, and the scope repair cycle quantified per call; - guide/template weight audit: 56KB read burden per task (56% in 3 task-agnostic files); TASK.md.tmpl ~30% boilerplate + ~25% derivable; 5 rules stated 3-5x across surfaces. 7 tasks: kickoff-truth · derived-stamps · template-dedup · gate-read-diet · scope-echo-draft · risk-report-render · fold-draft-at-close. Floors untouched (freeze · red-first · recorded gate · HARD-STOP); exit binds at the pinned-meter WM1 re-measure (calls <= 12, read <= ~30KB). Author-toil follow-ups captured as todos #30-#32 (seams-symbol-pins · sync-twins · stale global skill). author: Tin Dang <tindang.ht97@gmail.com>
…failure short-circuit (kickoff-truth, ceremony-to-effort 1/7) Three measured waste classes killed at the message layer (evidence: the 2026-07-13 transcript audit of loop2-lever rep0/1/2): - init kickoff + headless hint lead with the single-task --oneshot lane (milestone-first kickoff cost rep0/rep1 2+ calls; rep2 skipped it and won) - new-task stdout ends with the FULL remaining 6-call recipe, all lanes (replaces 6-11 measured status/guide/--help re-orientation calls per run) - a consecutive byte-identical failing call gets a short-circuit hint (12-21% of all measured calls were exact duplicate failures); sig sidecar lives in the OS tmp dir keyed by md5(root) — contract v2 after the full suite refuted v1's in-tree sidecar against the reject-writes-nothing byte fence (16 suites). Success clears; fail-open everywhere. Floor intact: red-first (4 red for the right reason), frozen contract v2 (change request, human-approved), tamper tripwire honored (one soft-edit revert), sibling InitKickoffTest pin STRENGTHENED never weakened, gate PASS. Evidence: test_kickoff_truth 7/7 + full suite 3453/3453 OK + check 734/0 + live end-to-end probe. ENGINE_MD5 -> 3937d5c1, PKG -> d83fc67f, twins x4. author: Tin Dang <tindang.ht97@gmail.com>
…s, ceremony-to-effort 2/7) The weight audit measured Ground SHA as 100%-derivable data the agent hand-types (`git rev-parse --short HEAD`). cmd_freeze now fills a placeholder-form `Ground SHA:` line with the real short HEAD inside the SAME atomic write as the Status flip, so the freeze fingerprint hashes the stamped text. Grandfather (a hand-filled line never matches) + fail-open (no git -> line untouched, freeze succeeds), mirroring _stamp_gate_record. HONEST SCOPE TRIM at ground: gate-record stamps, the Status flip, and the fast-template Ground SHA line already existed; Reported: is an honesty attestation and stays human-written. Evidence: test_derived_stamps 4/4 (M1 red-first) + freeze-family neighbors green + full suite 3457 (sole fail = SEAMS line-pin drift, re-aimed 5512->5526, todo #30) + check 738/0. ENGINE_MD5 -> e2ed6599, twins x4. Gate PASS. author: Tin Dang <tindang.ht97@gmail.com>
…mp comments (template-dedup, ceremony-to-effort 3/7) TASK.md.tmpl comments compress to pointers where the content has a canonical home elsewhere: EXIT restatements -> one-line pointers to each phase guide's exit_gate; the scope-lock comment trims; Ground SHA comments (both templates + phases/3-plan.md) now say "stamped by freeze" instead of instructing the hand-typed rev-parse (derived-stamps shipped the stamp). CHANGE REQUEST v2, fence-driven: v1 also deleted the scope-grammar restatements per the weight audit — the full suite refuted it (4 suites pin the template as the FROZEN scope-decl declaration surface). v2 restored them verbatim and flipped my test into a pin that PROTECTS the restatement from the next dedup pass. Net: comments 2848->2568B, template 12374->12055B, lean pins honored (one merged S3 comment, <12 total, merged not split). Evidence: test_template_dedup 6/6 + 86 neighbor tests + full suite 3463/3463 OK. Templates x5 + skill x3 synced; zero engine bytes. Gate PASS. author: Tin Dang <tindang.ht97@gmail.com>
…rences read-once (ceremony-to-effort 4/7) The weight audit measured report-template.md (9.6KB x3 call sites) and run.md (8.9KB x4) re-read per gate/session — the heaviest task-agnostic reads after SKILL.md. Each gate's phase guide now carries its render card inline; the big files demote to read-at-most-once references. - 3-plan.md freeze section: banner→ARC→SHAPE→SUMMARY→FLAGS→DECIDED→ EVIDENCE→APPROVE→NEXT card + read-once pointer; the pinned 'rendering SHAPE then the freeze APPROVE as a guided choice' sentence kept verbatim (test_report_shape_scan_audit, x3 trees) - 6-verify.md gate section: verify-dialect card + the kept reconcile-FLAGS / report --decide sentence - SKILL.md: one read-once rule line; absorbed under the frozen 18186B core-pool target by same-pool compression (landed 18186/18186) - test_gate_read_diet.py: 7 red/green tests (ordered skeleton, verbatim imperatives, wiring pins, pool byte target) - synced x3 skill trees; prose-only — ENGINE_MD5 unchanged Fence: full suite 3470/3470 OK. Gate PASS. refs: milestone ceremony-to-effort (gate-read-diet), stacked on PR #145 author: Tin Dang <tindang.ht97@gmail.com>
… zero-call read (ceremony-to-effort 5/7) The scope-token grammar's silent mis-resolution class (three tasks independently rediscovered it per SEAMS.md) becomes visible at the approval already happening: freeze now renders each RESOLVED scope entry, and proposes a Scope line when the declaration is dead. - add.py: _scope_echo helper — per-entry `scope: <rel> [ok|MISSING]` echo after the froze-print (footer stays last); UNDECLARED/garbage/ all-MISSING also prints `scope (proposed from §3 Touches): ...` composed from real Touches paths — propose-not-impose, pure read, fail-open (never blocks a freeze) - test_scope_echo_draft.py: 6 red/green tests on a live CLI board; two honest ground corrections found red-side (second freeze is a benign exit-0 no-op; the ./src/ default is REAL — new-task scaffolds a task-local src/) - ENGINE_MD5 -> 80b8121a, engine synced x3; SEAMS _declared_scope pin re-aimed 5526->5562; docstring reworded twice for the SEAMS-anchor guard + the 'seam' slang scanner Fence: full suite 3476/3476 OK. Gate PASS. refs: milestone ceremony-to-effort (scope-echo-draft), stacked on PR #145 author: Tin Dang <tindang.ht97@gmail.com>
…ical/fast (ceremony-to-effort 6/7) The verify-gate render now scales with the risk class instead of one 8-section ceremony for everything: `sensitivity: mechanical` and fast-lane tasks use the compact form (banner - SUMMARY - EVIDENCE - APPROVE); security/data/architecture and every freeze keep the full card. - 6-verify.md: right-size dispatch appended to the gate card; imperatives (render-before-gate · Reported: yes · never-self-stamp) verbatim - 3-plan.md: the freeze always renders the full card, never compact - fast-lane.md: render sentence aligned (freeze full, fast verify compact); the guide lives in the REFERENCE pool (32B headroom) — growth absorbed by same-guide compression - test_risk_report_render.py: 7 red/green tests (dispatch, order, reservation, single-home guard, pool target) - synced x3 skill trees; prose-only — ENGINE_MD5 unchanged Fence: full suite 3483/3483 OK. Gate PASS. refs: milestone ceremony-to-effort (risk-report-render), stacked on PR #145 author: Tin Dang <tindang.ht97@gmail.com>
…n SPEC deltas (ceremony-to-effort 7/7) Close-time delta resolution now starts from a proposal instead of a blank re-read: milestone-done's SPEC nudge grows a mechanical draft — `seed` when a delta's cited path resolves in the current tree, `drop?` (a question, never a verdict) when its paths are dead, `seed — forward hand-off by default` when pathless. Stdout only, fail-open; the human still resolves every delta — no gate change. - add.py: draft block inside cmd_milestone_done's open_spec branch; label rendered via _FOLD_VERB (the add.py literal slang guard bans the bare word — same dodge as the v11 nudge) - test_fold_draft_at_close.py: 5 red/green tests driving a real milestone to done through the CLI (three delta shapes, nudge survival, stdout-only equality, footer-last) - ENGINE_MD5 -> 8aef02ae, engine synced x3; SEAMS _declared_scope pin re-aimed 5562->5581 Fence: full suite 3488/3488 OK. Gate PASS. This closes the 7-task build: all seven ceremony cuts shipped inline via the fast lane, each with a frozen contract, a red-first suite, and a green full-suite fence. refs: milestone ceremony-to-effort (fold-draft-at-close), stacked on PR #145 author: Tin Dang <tindang.ht97@gmail.com>
…a verified, 2 bind at re-measure Fill the milestone's Close ship-review: per-task evidence rows (7 gates PASS, commits cited), ship-by-domain summary, and exit-criteria verifiers. 7/9 checked with test-pinned evidence; OPEN: read-burden <=30KB (partial — fast lane 37KB / full 49.1KB from 56KB; big refs 0x on standard gates) and the pinned-meter WM1 re-measure (human-gated paid run). Milestone stays open until the re-measure per intake. refs: milestone ceremony-to-effort, stacked on PR #145 author: Tin Dang <tindang.ht97@gmail.com>
… runners Two consecutive py3.10 CI failures observed peak=2 concurrent lock holders in the reclaim tests (known-waived flake class, but the window is real on slow runners). Captured so it survives the close. author: Tin Dang <tindang.ht97@gmail.com>
| print(f"froze §3 of {slug} @ {ver} — approved by {who}") | ||
| try: # scope-echo-draft: fail-open, never blocks a freeze | ||
| _scope_echo(root, slug) | ||
| except Exception: |
| print(f"froze §3 of {slug} @ {ver} — approved by {who}") | ||
| try: # scope-echo-draft: fail-open, never blocks a freeze | ||
| _scope_echo(root, slug) | ||
| except Exception: |
| else: | ||
| cls, why = "seed ", "forward hand-off by default" | ||
| print(f" {cls} {d['text']} [{d['task']}] — {why}") | ||
| except Exception: |
| else: | ||
| cls, why = "seed ", "forward hand-off by default" | ||
| print(f" {cls} {d['text']} [{d['task']}] — {why}") | ||
| except Exception: |
) The pilot path calls resolve_setup_steps; the thin run.py CLI passed the arm raw, so a live `run --arm add --wm 1` executed the literal `uv pip install -e {REPO_ROOT}/add-method` and the rep died at setup (observed at the ceremony-to-effort WM1 re-measure rep 1 — $0 spent, caught before any agent turns). Red/green: test_run_cli_resolve pins both the run and resume paths; benchmark suite 188/188. author: Tin Dang <tindang.ht97@gmail.com>
| with mock.patch.object(run_cli, "execute_wm", _fake_execute_wm): | ||
| try: | ||
| run_cli.main(argv) | ||
| except SystemExit: |
3 reps on the pinned meter with the new engine: fidelity 0.97-0.98, zero regressions, mean 134 turns / 18.7 add.py calls / $3.51 — the cheapest honest ADD round ever archived (-32% turns / -44% cost vs baseline-round3; lean rounds excluded as engine-bypassing). Strict exit bar (calls <=12, <=77.7t/$2.97) UNMET; --help and dup-retry residue near-zero. Residual waste anatomy recorded as next levers: double-init (harness/flow), milestone bait (r1), re-cross repairs, status re-reads. Criterion #9 annotated, box left open for the human's accept-partial or follow-on decision. author: Tin Dang <tindang.ht97@gmail.com>
TinDang97
added a commit
that referenced
this pull request
Jul 14, 2026
… nudge · scope coverage hint Three small levers from the WM1 re-measure's residual anatomy, batched under one fence (3496/3496 OK, +8 new tests): - init-resume-pointer: the `already initialised` refusal ends with `resume: add.py status` — the observed double-init (+2 calls/rep) dead-ends in one call; still a refusal, zero tree writes - milestone-lane-nudge: new-milestone prints `lane: single task? the oneshot lane is cheaper...` at the bait point that cost rep r1 ~10 calls; v2 change request re-prefixed from note: after three persona-nudge suites pinned that marker class one-per-invocation - scope-coverage-hint: the freeze echo notes §3 Touches paths that exist but sit OUTSIDE the resolved scope — the too-narrow class behind the measured re-cross repairs; propose-not-impose, never speculative ENGINE_MD5 -> 6f4e791f, engine synced x3, SEAMS _declared_scope pin re-aimed 5581->5595. Gate PASS x3. refs: milestone call-floor (1-3/5), stacked on PR #146 author: Tin Dang <tindang.ht97@gmail.com>
pilotspacex-byte
added a commit
that referenced
this pull request
Jul 14, 2026
… orient split (supersedes #147) (#149) * chore(method): intake call-floor milestone — 5 evidence-traced residual levers Extends ceremony-to-effort's open meter criteria; every task maps to a measured residual in the WM1 re-measure (double-init, milestone bait, too-narrow scope, pure ticks, SKILL.md read weight). Human 'fix all' 2026-07-13. author: Tin Dang <tindang.ht97@gmail.com> * feat(method): call-floor 1-3/5 — init resume pointer · milestone lane nudge · scope coverage hint Three small levers from the WM1 re-measure's residual anatomy, batched under one fence (3496/3496 OK, +8 new tests): - init-resume-pointer: the `already initialised` refusal ends with `resume: add.py status` — the observed double-init (+2 calls/rep) dead-ends in one call; still a refusal, zero tree writes - milestone-lane-nudge: new-milestone prints `lane: single task? the oneshot lane is cheaper...` at the bait point that cost rep r1 ~10 calls; v2 change request re-prefixed from note: after three persona-nudge suites pinned that marker class one-per-invocation - scope-coverage-hint: the freeze echo notes §3 Touches paths that exist but sit OUTSIDE the resolved scope — the too-narrow class behind the measured re-cross repairs; propose-not-impose, never speculative ENGINE_MD5 -> 6f4e791f, engine synced x3, SEAMS _declared_scope pin re-aimed 5581->5595. Gate PASS x3. refs: milestone call-floor (1-3/5), stacked on PR #146 author: Tin Dang <tindang.ht97@gmail.com> * feat(method): compound ticks — opt-in freeze --cross + gate-from-build (call-floor 4/5) The oneshot lane's 8-9 engine calls include two PURE ticks with no work between them: freeze->tests and build->verify->gate. Two opt-in compressions remove them, worth ~2 calls/task at the WM1 meter: - `freeze --by X --cross`: after a plan-phase freeze STAMPS, the task lands in tests in the same call (state first, marker mirrored). A refused/already-frozen freeze never crosses; a change-request re-freeze at a non-plan phase gets an advisory note instead. - `gate PASS|RISK-ACCEPTED` at the BUILD phase auto-crosses build->verify then runs every completion check unchanged (tamper, scope, high-risk, consumer-stale, green-bar). Phases before build keep their refusals verbatim; HARD-STOP is untouched. - the new-task recipe advertises the compressed lane; the test_kickoff_truth RecipeTest pin updates to the new recipe truth (declared in-scope doc-truth ripple, flow-honesty precedent). Defaults byte-identical: the bare freeze and every existing tick sequence are unchanged (3496 prior fixtures still pass unmodified). 7 red/green tests in test_compound_ticks.py; full fence 3503/3503 OK. Engine synced x3, ENGINE_MD5 re-aimed 26f78f04, SEAMS _declared_scope pin 5595->5619. The feature proved itself: this task's own gate ran from the build phase via the new compound tick. refs: milestone call-floor (WM1 residual: pure ticks), task compound-ticks frozen @ v1 author: Tin Dang <tindang.ht97@gmail.com> * feat(method): skill orient split — lean SKILL.md core + on-demand beyond.md (call-floor 5/5) SKILL.md is read on EVERY task but carried ~3.4KB of on-demand routing prose ("Beyond the bundle" verbose bullets) most tasks never take: - the prose moves to the NEW on-demand guide skill/add/beyond.md (synced x3: canonical + _bundled + .claude/skills) - SKILL.md keeps a compact one-line-per-trigger index; the always-read orient core drops 12819 -> 9498 bytes (-26%), pinned <= 9500 by test_skill_orient_split.py - every structural pin holds: 17 on-demand pointers, phase-guide rows, banner-cue sentence, question-summary line, SOUL.md proximity, "Depth by stage" + "method rationale" sections, .add/personas/ + persona loop, advisor-gate-relax, agent-call-preferred default execution mode, retrospective-consolidation keep-term - core pool absorbs beyond.md; baseline 20666 -> 20906 for the +211B net new surface (index + file header) per the documented rebaseline-for-human-approved-surface method, contract FROZEN @ v1 - wording-lint surface count pins 31 -> 32 (test_wording_lint + test_per_step_hooks), declared doc-truth ripples 5 red/green tests; pin battery 131 green; full fence 3508/3508 OK. No engine change (ENGINE_MD5 untouched). The task's own freeze ran `freeze --cross` and its gate ran from build — both call-floor 4/5 compound ticks proved themselves here. refs: milestone call-floor (read burden toward <=30KB), task skill-orient-split frozen @ v1 author: Tin Dang <tindang.ht97@gmail.com> * chore(method): call-floor 5/5 tasks shipped — milestone HELD OPEN on the paid re-measure All 5 tasks gate PASS with test-pinned evidence (a2df502 tasks 1-3, d8e1718 compound-ticks, 2d10b2a skill-orient-split); 6/7 exit criteria checked with evidence. The 7th (paid WM1 re-measure, mean calls <= 12) is human-gated spend — the goal-gate holds the milestone open until it runs. skill-orient-split criterion checked PARTIAL-ACCEPTED (9498B vs ~8.5K sketch, read path ~33KB vs 30; remaining levers move to the phase-restructure milestone). refs: milestone call-floor author: Tin Dang <tindang.ht97@gmail.com> --------- Co-authored-by: Tin Dang <tindang.ht97@gmail.com>
pilotspacex-byte
added a commit
that referenced
this pull request
Jul 14, 2026
…als follow-on draft (#150) Human decisions 2026-07-14: run the paid WM1 re-measure, then "Close + draft follow-on milestone". - WM1 re-measure (3 reps, pinned sonnet meter, engine = merged main 8360b06): fidelity 0.98 x3 / 0 regressions / oracle 1.0 -> criterion MET; calls 20.7 mean vs <=12 -> UNMET, HUMAN-ACCEPTED-PARTIAL at close; cost $3.17 mean = cheapest honest ADD round (-10% vs ceremony). Full record + waste anatomy: benchmark/results/2026-07-sixphase-remeasure.md (runs archived benchmark/runs/sixphase-r{1,2,3}). - six-phase-loop -> done (RETRO.md written; 21 open deltas left for the human fold review). - NEW milestone draft call-residuals (--await-confirm, tasks gated): the four message-layer levers the anatomy named — init-idempotent-nudge · scope-first-draft · status-orientation-diet · help-habit-kill — targeting the ~11-12 call landing with zero enforcement-path changes. refs: six-phase-loop close, PRs #146/#149/#148 merged author: Tin Dang <tindang.ht97@gmail.com> Co-authored-by: Tin Dang <tindang.ht97@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
ceremony-to-effort — 7 evidence-traced ceremony cuts, floors untouched
Converts measured evaporating ceremony into artifact effort. Evidence base: transcript anatomy of the pinned-meter benchmark runs (best ADD run = 37% artifact turns vs spec-kit's 95%; duplicate failing retries 12–21% of calls; skip-bait taken in ALL reps) + a guide/template weight audit (56KB read per task, 56% task-agnostic).
The 7 cuts (each gate PASS, red-first, full-suite fence green)
new-task· byte-identical failing retry gets a short-circuit hint (OS-tmp sidecar — reject-writes-nothing floor held)freezestamps the §3Ground SHA:placeholder itself (grandfathered, fail-open, inside the tamper fingerprint)report-template.md/run.mddemoted to read-once references (SKILL.md rule); core pool landed exactly 18186/18186[ok|MISSING]+ proposes a Scope line from §3 Touches when the declaration is dead — propose-not-impose, pure readsensitivity: mechanical/fast verify gates render a compact form; security/data/architecture + every freeze keep the full cardmilestone-donepre-classifies open SPEC deltas (seed/drop?by mechanical path-resolution) — human still resolvesProof the floors held while being cut
The fence refuted drafts six times (byte fence · frozen grammar pins · two lean pools · slang scanner · SEAMS-anchor guard); every recovery went through a sanctioned path (change request, tests-phase step-back, same-pool compression). Zero tests weakened. Suite grew 3446 → 3488. The features also proved themselves downstream: the SHA stamp fired live on tasks 4–7's own freezes, the scope echo verified tasks 6–7's declarations.
Exit criteria: 7/9 verified (close ship-review in
.add/milestones/ceremony-to-effort/MILESTONE.md)Open, by design: read-burden ≤30KB (partial — fast lane 37KB / full 49.1KB from 56KB; big-ref re-reads now 0× on standard gates) and the pinned-meter WM1 re-measure (paid run, ~$10–15) where the goal numbers (calls ≤12, ≤77.7t/$2.97) bind. The milestone stays open until that re-measure.
ENGINE_MD5 →
8aef02ae(4 re-aims) · PKG →d83fc67f· twin parity green throughout. Also captures todo #33 (lock-reclaim TOCTOU window seen twice on py3.10 CI).