docs(decisions): 0238 — fabrika re-implements v1 rather than calling it - #4728
Conversation
Founder ruling in-session on the wave-0 pilot. Records the isolation rule and the reasoning that forced it, so sessions on other tasks inherit it.
No preview deploy
|
|
review-doc: advisory — blocking-set PR (§CP — approval-gated) PR #4728 touches a guard-touching Reviewed-head: @ f142fed Required-namespace set for this diff ( Acceptance criteria
Doc hygiene
ADR contradiction sweep (Step 4a)
Falsifiable claims — verified against freshly fetched
Notes for the control-plane approver (non-blocking)
Read the PR head (§HEAD): every file under review was sourced from All checks pass. review-doc does not merge, and this verdict does not authorize one: a Verdict-written: 2026-08-02T01:38:22Z |
…ention it 33 files reference the package; 31 invoke a verb. deploy.yml names the path only in comments, and publish.yml is the package's own release workflow - its pipeline-cli line is `pnpm --filter @kampus/pipeline-cli typecheck`, which runs the package's own script rather than calling a verb. The original count came from grep -rl | wc -l, which counts mentions, and was written as "call". Caught in review. Either number supports the claim it sits under, but the ADR states it as fact and bodies are immutable once accepted, so it is cheaper to be right now than to amend later.
|
review-doc: advisory — blocking-set PR (§CP — approval-gated) PR #4728 touches a guard-touching Reviewed-head: @ 6c24ebc Re-review at a new head. The prior round was advisory-PASS at Required-namespace set (dispatch). Acceptance criteria
The corrected claim — re-counted from scratch
Other falsifiable claims spot-checked (7 beyond the count)
Doc hygiene
One non-blocking note for the author (not a gate failure) Read the PR head (§HEAD): every file under review sourced from All checks pass at this head. review-doc does not merge, and for this §CP PR the verdict is advisory: a Verdict-written: 2026-08-02T02:00:29Z |
Adds ADR 0238 — the founder ruling that fabrika calls no v1 code.
Purely additive: one
.decisions/file, nothing else.What it records
fabrika's stated posture was that it may call
pipeline-clibut never grows into it. The wave-0 pilot (#4704 / #4724) showed that does not survive contact — and the reason it fails is the deletion test: a fabrika that calls v1 can never be the thing that replaces it, because every call keeps the old tree alive.Two forces surfaced it during the pilot:
cli-invocation-guardreds a barepipeline-cliin a runnable fence anywhere underclaude-plugins/, and the fix it suggests uses the variable expansion the fabrika conventions ban (ADR 0232's isolation verifier). Verified both ways — clean without the call, red with it.pipeline-cliinside fabrika by accretion, which is what the original posture existed to prevent.Two things it is careful about
It does not make
packages/pipeline-cli/removable. 31 CI workflows invoke that package directly, independent of any skill — it is the guard layer, not v1's skill tooling. This makes the v1 skills deletable once fabrika replaces them; retiring the package is a separate, larger question the ADR explicitly declines to answer.Not every v1 capability becomes a fabrika verb — some become nothing. Where a thing is already enforced elsewhere, fabrika does not compute a second answer to it. The pilot dropped its
adr classifyverb on that test, because a fabrika copy of the guard vocabulary could contradictcp-classifyat the merge gate, and two answers to a gated question are worse than a dependency.Process
Sweep run: 8 shortlisted, all opened. One real hit — ADR 0232, the isolation-verifier decision this ADR's reasoning rests on — now cited. 0228/0229 (script relay) and 0236 (eval harness) are adjacent but re-decide nothing here. No supersede, no amend-in-part.
decisions-index validatepasses. Vocabulary impact: none — "the deletion test" is already canonical in.glossary/LANGUAGE.md; this applies it rather than coining anything.Control plane:
guard-content-probeclassifies thisguard-touching, so it routes as §CP and needs a @kamp-us/control-plane approval at head. Not reworded to shake that verdict — see #2617 on the probe's calibration.Companion PR: #4724 carries the skill and contract changes this decision governs.