feat(method): call-floor — 5 call-count levers from the WM1 residual anatomy#147
Closed
pilotspacex-byte wants to merge 5 commits into
Closed
feat(method): call-floor — 5 call-count levers from the WM1 residual anatomy#147pilotspacex-byte wants to merge 5 commits into
pilotspacex-byte wants to merge 5 commits into
Conversation
…al 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>
… 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>
…d (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>
…ond.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>
…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>
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>
TinDang97
added a commit
that referenced
this pull request
Jul 14, 2026
…x-phase-loop 1/6) TRUE phase merge, first of two (human-decided over recipe-ticks): the scenarios PHASE folds into specify — one drafting phase now produces §1 rules AND §2 Given/When/Then. The TASK.md §-section shape is UNTOUCHED (sections are the stable API; only the lifecycle list shrinks). Engine (synced x3 — tooling · .add/tooling · _bundled): - constants.py: PHASES=(specify,plan,tests,build,verify,observe,done); _SKIPPABLE_PHASES=(observe,); PHASE_GUIDE specify action gains the Given/When/Then duty; PHASE_OWNER/PHASE_AGENT drop scenarios; PHASE_GROUPS DIRECTION=(specify,plan,tests) - add.py: _normalize_phase_tokens legacy map gains scenarios->specify (silent, TOTAL, idempotent, normalize-on-read — expectations-first precedent); _FRONT_PHASES/(spawn-hints/guide-file map/freeze early-phase check/skip-rationale regex follow); _RETIRED_SKIP_TOKENS: a pre-merge `skips: scenarios` header is tolerated LOUD (note at the observe crossing, filtered from the skip set) while non-skippable tokens keep the die — the frozen M13 pin (zero skip logic on non-skippable crossings) holds; task_phases: explicit _PHASE_SECTIONS table replaces the index-derived n->section mapping (the named off-by-one trap, hit live) - installer showcase twins (bin/cli.js BRAND_LOOP · _installer.py _LOOP): 6-step loop, grounded by test_onboarding_brand Tests: NEW test_phase_merge_specify.py (8 red->green: phase list + maps, advance lands plan, scenarios refused, legacy state normalizes, old skip declaration tolerated loud, bad token still dies). ~30 fixture suites repaired as the declared sequence-shift ripple (test_min_pillar walk now 4 advances to verify; test_add advance pin; onboarding showcase slice; report dots; phase-detail blocks; fast-lane skips rewritten to observe) — zero tests weakened. Full fence 3517/3517 OK. Pins: ENGINE_MD5 -> b27ce845 · ENGINE_PKG_MD5 -> 870a4ce0 · SEAMS _declared_scope anchor -> add.py:5631. Gate: PASS (compound tick from build; scope widened +installer twins via sanctioned re-cross). refs: six-phase-loop milestone (37d5a80), stacked on feat/call-floor (#147) author: Tin Dang <tindang.ht97@gmail.com>
pilotspacex-byte
added a commit
that referenced
this pull request
Jul 14, 2026
…es, persona presets, build-entry spec echo (#148) * chore(method): draft six-phase-loop milestone (await-confirm) 8->6 phase merge (specify absorbs scenarios; verify absorbs observe) + phase-guide disclosure into the bundle-owning roster agents so the orchestrator loads only SKILL.md + per-phase persona presets + the build-entry spec echo. Human decisions from the 2026-07-14 interview recorded in Ground; tasks gated until milestone-confirm. refs: milestone six-phase-loop (await-confirm) author: Tin Dang <tindang.ht97@gmail.com> * feat(method): phase-merge-specify — scenarios merged into specify (six-phase-loop 1/6) TRUE phase merge, first of two (human-decided over recipe-ticks): the scenarios PHASE folds into specify — one drafting phase now produces §1 rules AND §2 Given/When/Then. The TASK.md §-section shape is UNTOUCHED (sections are the stable API; only the lifecycle list shrinks). Engine (synced x3 — tooling · .add/tooling · _bundled): - constants.py: PHASES=(specify,plan,tests,build,verify,observe,done); _SKIPPABLE_PHASES=(observe,); PHASE_GUIDE specify action gains the Given/When/Then duty; PHASE_OWNER/PHASE_AGENT drop scenarios; PHASE_GROUPS DIRECTION=(specify,plan,tests) - add.py: _normalize_phase_tokens legacy map gains scenarios->specify (silent, TOTAL, idempotent, normalize-on-read — expectations-first precedent); _FRONT_PHASES/(spawn-hints/guide-file map/freeze early-phase check/skip-rationale regex follow); _RETIRED_SKIP_TOKENS: a pre-merge `skips: scenarios` header is tolerated LOUD (note at the observe crossing, filtered from the skip set) while non-skippable tokens keep the die — the frozen M13 pin (zero skip logic on non-skippable crossings) holds; task_phases: explicit _PHASE_SECTIONS table replaces the index-derived n->section mapping (the named off-by-one trap, hit live) - installer showcase twins (bin/cli.js BRAND_LOOP · _installer.py _LOOP): 6-step loop, grounded by test_onboarding_brand Tests: NEW test_phase_merge_specify.py (8 red->green: phase list + maps, advance lands plan, scenarios refused, legacy state normalizes, old skip declaration tolerated loud, bad token still dies). ~30 fixture suites repaired as the declared sequence-shift ripple (test_min_pillar walk now 4 advances to verify; test_add advance pin; onboarding showcase slice; report dots; phase-detail blocks; fast-lane skips rewritten to observe) — zero tests weakened. Full fence 3517/3517 OK. Pins: ENGINE_MD5 -> b27ce845 · ENGINE_PKG_MD5 -> 870a4ce0 · SEAMS _declared_scope anchor -> add.py:5631. Gate: PASS (compound tick from build; scope widened +installer twins via sanctioned re-cross). refs: six-phase-loop milestone (37d5a80), stacked on feat/call-floor (#147) author: Tin Dang <tindang.ht97@gmail.com> * feat(method): phase-merge-verify — observe merged into verify (six-phase-loop 2/6) The second TRUE phase merge: the observe PHASE folds into verify — verify owns evidence + gate AND the watch/spec-delta duty. §7 OBSERVE stays as a section (the stable API) rendered under the verify block, exactly as §2 renders under specify. The lifecycle is now specify · plan · tests · build · verify (+ done). Engine (synced x3): - constants.py: PHASES=(specify,plan,tests,build,verify,done); _SKIPPABLE_PHASES=() — nothing is skippable; PHASE_GUIDE verify action gains the watch+spec-delta duty; PHASE_GROUPS VERIFY=(verify,); PHASE_OWNER/PHASE_AGENT drop observe - add.py: _legacy gains observe->verify (normalize-on-read; a recorded gate survives); _RETIRED_SKIP_TOKENS={scenarios,observe}; the cmd_advance skip block PRUNED whole (dead once the tuple emptied — the old M13 zero-skip- logic placement is now universal); gate/completion is the ONE seam that reads a vestigial `skips:` header (one loud note, never a die) and the new home of the fold nudge; advance --fill + status --section resolve through _PHASE_SECTIONS (verify: (6,7)) — repairing the two ordinal->section mappings that broke silently at phase-merge-specify (plan filled §2, not §3); membership lists/spawn hints/guide map/help text swept - templates: the fast template's skips scaffold removed (grammar retired end-to-end); both templates' phase-marker comments show the 6-token flow - installer showcase twins: BRAND_LOOP/_LOOP = 5 pre-done steps Tests: NEW test_phase_merge_verify.py (13: list+maps, advance/gate land done with the fold nudge, observe refused, legacy state normalizes keeping its gate, vestigial skips noted at gate never die, _PHASE_SECTIONS + --fill/ --section table pins). Fence r1 ripple: 49 failures/17 suites repaired — test_fast_lane_skips REWRITTEN to pin the retirement (resolver keeps naming bad tokens; historic recorded skips keep status/audit surface); fold nudge test re-aimed to gate; report dots 6-wide; phase-detail 5 blocks with §7 under verify; onboarding showcase 5 steps; len/range pins swept. Zero tests weakened. Full fence 3527/3527 OK. Pins: ENGINE_MD5 -> 5d5e0538 · ENGINE_PKG_MD5 -> fc40ad47 · SEAMS _declared_scope anchor -> add.py:5603. Gate: PASS (compound tick from build; the new fold nudge printed on this task's own gate — self-proved). refs: six-phase-loop milestone, stacked branch feat/six-phase-loop author: Tin Dang <tindang.ht97@gmail.com> * feat(method): guide-recut — phase guides re-cut to the 6-phase loop (six-phase-loop 3/6) The skill's guide tree follows the engine's merged lifecycle: 1-specify.md absorbs 2-scenarios' load-bearing duties (gherkin Given/When/Then format, one scenario per Must AND per Reject, the And-unchanged clause on every rejection, the edge-case sweep, the exit-gate boxes); 6-verify.md absorbs 7-observe's as a post-gate Observe block (scope-of-impact release, scenarios-as-monitors, the next SPEC delta, the voice-delta -> soul.md route, the persona tag line, the self-improve.md map pointer). The two absorbed files are DELETED from all three guide trees. SKILL.md's phase table shows the 6-row loop (specify row owns §1+§2, verify row §6+§7); 9355 B, under the orient-split 9500 ceiling. soul.md re-routes its Emit line to the verify guide. Pools: phases baseline re-anchored 41605 -> 40205 — the INVERSE of the rebaseline-for-new-surface method: deletion is won ground the ceiling locks in, so the baseline shrinks by NET won bytes ÷ ratio (deleted 3855 B minus the absorbing guides' +2735 B = 1120 net; −⌈1120/0.80⌉=1400), ratio 0.80 kept exactly. test_ground_anchor_sha's baseline floor forward-migrated 40280 -> 40205 with the accounting signed. Tests: NEW test_guide_recut.py (8: deletion ×3 trees · duty markers in both absorbing guides · no live prose names a deleted file · table rows/§-spans · ceiling held). Ripple: 11 failures/10 suites re-aimed (wording-surface census 32→30 in two pins; soul/persona/ADR/xml-census/per-step-hook pins moved onto the absorbing guides; pool lists trimmed). Zero tests weakened. Full fence 3535/3535 OK. Engine untouched — no MD5 re-aim. refs: six-phase-loop milestone, stacked branch feat/six-phase-loop author: Tin Dang <tindang.ht97@gmail.com> * feat(method): bundle-disclosure — phase guides load inside the roster agents (six-phase-loop 4/6) The user's directive made mechanism: when the orchestrator delegates a phase, the roster bundle agent loads its OWN phase guides at spawn — the orchestrator reads only SKILL.md. The inline lane stays first-class (load the one phase guide yourself, unchanged). - add-design.md: NEW "Load your bundle guides" section (phases/0-setup.md on fresh projects + phases/1-specify.md + phases/3-plan.md); span prose re-cut to setup · specify · plan (grounding/scenarios/contract live inside them); description spawn steps -> SETUP, SPECIFY, or PLAN; Return enum follows - add-build.md: loads phases/4-tests.md + phases/5-build.md at spawn - add-verify.md: loads phases/6-verify.md (carries the post-gate Observe block); owns verify end-to-end — OBSERVE is no longer a spawn step; Return enum verify-only - SKILL.md flow lead-in states the split in one sentence: inline -> load only the phase you are in; delegating -> the Bundle-column agent loads its own guides, you read ONLY this file. 9442 B, under the orient-split 9500 ceiling. Synced x3 skill trees; agents synced canonical -> _bundled + .claude installed copies. Tests: NEW test_bundle_disclosure.py (6: per-agent guide census · no deleted guide or retired step name — path-qualified, docs chapters keep their names · disclosure sentence · ceiling · x2 parity). Full fence 3541/3541 OK. Engine untouched — no MD5 re-aim. refs: six-phase-loop milestone, stacked branch feat/six-phase-loop author: Tin Dang <tindang.ht97@gmail.com> * feat(method): persona-presets — per-phase teacher-grade fallback stances (six-phase-loop 5/6) The interview decision made mechanism: per-phase expertise via PRESETS on the lean 5-agent roster, not a per-step agent rebuild. Each bundle agent's thin "use a generic engineer" fallback upgrades to named expert stances per owned phase, distilled from the vendored teacher library: - add-design.md: Preset (specify) — a 15-year domain analyst who asks rather than assumes, every Reject earns a named error code (setup rides this); Preset (plan) — a systems architect, contract-first, cites only anchors that exist, sizes the change's reach before freezing scope - add-build.md: Preset (tests) — red for the RIGHT reason, one test per scenario, behavior never internals; Preset (build) — the smallest honest diff in small reviewable batches, a test is never touched to go green - add-verify.md: Preset (verify) — adversarial reviewer then reliability analyst, refutes the green before trusting it, security always HARD-STOP, spans the post-gate Observe duties (§7) Presets are the FALLBACK tier only: project-persona routing stays first (the flow: selection sentence untouched); a preset never blocks and never lowers a gate. Synced canonical -> _bundled + .claude installed copies. Tests: NEW test_persona_presets.py (4: per-phase preset census · no bare generic fallback left · routing-first + never-lowers-a-gate survive · x2 parity). Full fence 3545/3545 OK. Engine untouched. refs: six-phase-loop milestone, stacked branch feat/six-phase-loop author: Tin Dang <tindang.ht97@gmail.com> * feat(method): build-entry-spec-echo — the tick INTO build re-renders WHAT to build (six-phase-loop 6/6) The interview decision made mechanism: at every successful tests->build tick the engine prints `build to (frozen plan):` + the §1 Must/Reject bullet first-lines + the frozen §3 contract-fence head, so the builder starts from the spec on the screen, not from memory. - add.py: NEW _spec_echo (PURE read beside _scope_echo; bullet walk stops at the next top-level `Key:` line, continuations never echo) + a wrapped tail call in _build_entry — AFTER every guard and snapshot, so a refused entry never echoes and BOTH entries (advance + the `phase build` override) fire; fail-open: exit code, state.json, and TASK.md are identical either way - ENGINE_MD5 re-aimed bf89b033; ENGINE_PKG_MD5 deliberately NOT re-aimed (add_engine/ untouched — the digest proved it unchanged); SEAMS _declared_scope pin 5603->5653; engine synced x3 twins - SELF-PROVED: the task's own re-cross into build rendered its Must/Reject/ contract echo live Tests: NEW test_build_entry_spec_echo.py (9: echo at advance + at the phase override · line order · forced-raise never blocks the tick · malformed §1/§3 partial-echo no-crash · refused crossing never echoes · --skip-freeze DRAFT crossing still echoes · pure-read byte check · engine-twin parity). Full fence 3554/3554 OK. LESSON: declare §4 tests as the exact FILE — a dir-form declaration sweeps the build targets into the tamper snapshot (recovered via signed re-cross, the expectations-first recipe). refs: six-phase-loop milestone, stacked branch feat/six-phase-loop author: Tin Dang <tindang.ht97@gmail.com> * docs(method): six-phase-loop close review — 6/6 tasks ticked, 7/8 exit criteria evidenced Milestone close-review bookkeeping: all six task boxes checked, seven exit criteria checked with (verify: ...) citations (test suites + fence 3554/3554 + the self-proved build-entry echo), rationale placeholder filled with the confirmed intake classification. The goal-gate holds the milestone OPEN on the eighth criterion — the paid WM1 re-measure (fid >= 0.97, calls <= 12) — which is human-gated: run or accept-partial. refs: six-phase-loop milestone, stacked branch feat/six-phase-loop author: Tin Dang <tindang.ht97@gmail.com> * fix(test): exists()-skip gitignored engine twins in the echo parity test CI fresh-checkout failure on PR #148: test_engine_twins_carry_the_echo asserted parity on the two gitignored dogfood twins (.add/tooling/ and add-method/.add/tooling/), which do not exist on a fresh clone — the known gitignored-twins class (build-strategy-facets lesson). The tracked _bundled twin now binds unconditionally; the dogfood twins are checked only when present (fresh-checkout skip-tolerance precedent ba09498). No assertion weakened where the files exist. refs: six-phase-loop milestone, PR #148 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.
Stacked on #146 (feat/ceremony-to-effort). Five levers targeting the WM1 re-measure residuals (mean 18.7 calls vs the ≤12 bar), all fast-lane, all gate PASS, fence 3508/3508.
Tasks
a2df502) — thealready initialisedrefusal namesadd.py status; kills the observed +2 double-init calls/rep.a2df502) —new-milestoneprints alane:advisory naming the oneshot lane (rep r1 lost 9-10 calls to milestone bait). v2 prefix after the persona-nudge marker fence.a2df502) — the freeze scope echo also notes §3 Touches paths OUTSIDE the declared scope (the too-narrow class behind the re-cross repairs).d8e1718) — OPT-INfreeze --cross(stamp → land in tests) + completinggateaccepted at build (auto-cross → record); oneshot lane 8-9 → 6 calls; defaults byte-identical; recipe advertises the compressed lane. Self-proved: tasks 4 and 5 shipped through their own compound ticks.2d10b2a) — SKILL.md 12819 → 9498B (-26%); the Beyond-the-bundle routing prose moves to on-demandbeyond.md; every structural pin held; core pool rebaselined +211B net per the documented method.State
26f78f04(@compound-ticks); no engine change in 5/5.author: Tin Dang tindang.ht97@gmail.com