Every ticket as the root of its provenance graph — goal, patch, approval, runs and (as the ticket-class build lands) mandate, manifestations, guarantees, journey, artifacts and children. Rendered through the <<<TicketGraphList>>> tag.
STOP: #200 forge-rewrite standard is BRAKED (deferred, not cancelled) — 'ENTIRELY NEW source' caused measured 5-27x ballooning; brakes all 46 spawned units pending #445 family map + the codebean coupler
goal
STOP brake on #200 (the FORGE-wide refactor standard) — and therefore, via the recursive
`spawned` ancestry the brake walks, on EVERY forge-rewrite unit spawned from it (46 ready today,
plus any the decomposition factory files next). Authorized by the operator.
WHY — #200's own clause is the defect. It mandates that "every unique module rewritten ... the
deliverable is ENTIRELY NEW source". That marks every function NEW by default and licenses a worker
to reimagine a module instead of preserving it. MEASURED RESULT (all Claude pairs, all review-passed):
bash-mcp/server.py 65 -> 1791 lines 27.6x (a DECOY that executes nothing)
crank_job.py 81 -> 1340 16.5x
crank_discipline.py 99 -> 1567 15.8x
audit_guard.py 111 -> 1500 13.5x
ats_service.py 114 -> 1314 11.5x
ats_http.py 427 -> 2204 5.2x
The 27x case is the proof: 1791 lines to reimplement a 65-line refusal stub whose entire job is to
log an attempt and say "use python". This is not a worker fault - every one of those pairs PASSED its
adversarial review. The standard asked for it.
SECOND CAUSE — the bloat also drives the timeout churn: workers exceed 1200s/2400s spawn budgets
because they are writing 10-27x more code than the original, then the pair cannot self-settle because
every unit regenerates the shared package scaffolding (pyproject/registry) its siblings also touch.
Three units (#417/#419/#432) passed review and died on that merge conflict.
THIRD CAUSE — scope is wrong anyway. forge2 today is 9 packages that are really ~5 projects:
audio_tagger x2, coupler x2, dz_debug x3 (one of them EMPTY, 0 modules). Nothing in the pipeline
models a repo FAMILY, so each ingestion alias mints its own package. #445 (family tree) will produce
the canonical-tip/home map that re-scopes this. Measured: 264 repos -> 109 lineages; 24,978 source
files -> 5,736 unique blobs (4.4x dup; PHP alone is 20.2x - 7,197 files -> 357 unique).
WHAT REPLACES IT — the codebean coupler (senior/junior split), in design with the operator:
* `lower_functions(original)` yields the signatures MECHANICALLY - no LLM, no invention.
* the junior agent is handed ONE signature + docstring and returns ONLY the body. It never sees a
path, a tool, or a sibling module - so wandering, wrong paths, malformed tool schemas and
ballooning all become UNREPRESENTABLE rather than merely discouraged.
* `critic` gates PRESERVE functions by AST/token-normalized equivalence to the original - a
mechanical proof, not an auditor's prose opinion. Only genuinely NEW functions need a test.
* per-function retry + per-function escalation (cheap model -> Claude for the blanks it fails).
NOT CANCELLED - DEFERRED. The forge rebuild is still wanted. This brake holds the ~46 units until
(a) #445 lands the family/home map so units are scoped to canonical tips rather than aliases, and
(b) the coupler exists so bodies are filled against a fixed skeleton instead of reimagined.
#200 ITSELF NEEDS SUPERSEDING, not just braking: ticket bodies are immutable, and its "ENTIRELY NEW
source" clause must be replaced with PRESERVE-by-default + explicitly-declared NEW. That is the
operator's standard to rewrite, not the dispatch agent's.
ALREADY-HARVESTED MODULES ARE UNAFFECTED and stay on main (ats_http, ats_service, audit_guard,
crank_approve, crank_job) - they are valid, review-passed code, merely larger than they should be.
#417/#419/#432 remain unharvested on their branches pending the family map.
patch
none
approval
unapproved
runs
no runs recorded
mandate (clauses)
not yet recorded — lands with the ticket-class build
manifestations
not yet recorded — lands with the ticket-class build
guarantees
not yet recorded — lands with the ticket-class build
journey (blunders & successes)
not yet recorded — lands with the ticket-class build
artifacts (forge)
not yet recorded — lands with the ticket-class build