Skip to content

feat(method): ceremony-to-effort — 7 ceremony cuts, floors untouched (7/7 gate PASS)#146

Merged
pilotspacex-byte merged 12 commits into
mainfrom
feat/ceremony-to-effort
Jul 14, 2026
Merged

feat(method): ceremony-to-effort — 7 ceremony cuts, floors untouched (7/7 gate PASS)#146
pilotspacex-byte merged 12 commits into
mainfrom
feat/ceremony-to-effort

Conversation

@pilotspacex-byte

Copy link
Copy Markdown
Contributor

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)

Task Lever
kickoff-truth lane-aware kickoff (oneshot-first) · full remaining-call recipe at new-task · byte-identical failing retry gets a short-circuit hint (OS-tmp sidecar — reject-writes-nothing floor held)
derived-stamps freeze stamps the §3 Ground SHA: placeholder itself (grandfathered, fail-open, inside the tamper fingerprint)
template-dedup TASK.md.tmpl EXIT restatements → ≤120B pointers; 12055B/2568B under both ceilings; the pinned scope-grammar restatement kept verbatim
gate-read-diet each gate's render card inline in its phase guide; report-template.md/run.md demoted to read-once references (SKILL.md rule); core pool landed exactly 18186/18186
scope-echo-draft freeze echoes every resolved scope token [ok|MISSING] + proposes a Scope line from §3 Touches when the declaration is dead — propose-not-impose, pure read
risk-report-render sensitivity: mechanical/fast verify gates render a compact form; security/data/architecture + every freeze keep the full card
fold-draft-at-close milestone-done pre-classifies open SPEC deltas (seed / drop? by mechanical path-resolution) — human still resolves

Proof 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).

TinDang97 added 10 commits July 13, 2026 18:37
…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>
Comment thread add-method/tooling/add.py
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:
Comment thread add-method/tooling/add.py
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>
@pilotspacex-byte
pilotspacex-byte merged commit fd94fb8 into main Jul 14, 2026
9 checks passed
@pilotspacex-byte
pilotspacex-byte deleted the feat/ceremony-to-effort branch July 14, 2026 03:40
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>
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