ForgeKitFORGEKIT

Build Log

From pattern-capture to compounding — fixing the reuse mechanism

July 16, 2026

Found a false 'done, used by two apps' claim with zero real imports, traced it to a structural gap (statuses written from memory, no forced check-before-build), rebuilt the model with Zeb's correction (two dimensions, not one contradictory status), and a full duplication sweep found six more real, uncatalogued instances of the same defect class.

ForgeKit OSPattern RegistryExtractionForgeLeashlineKnown
6
real uncatalogued duplications found
2
duplications fixed and verified tonight
53
registry rows re-audited against real evidence
1
pre-existing test bug found and fixed as a side effect

Timeline

Start
Zeb asks whether most ForgeKit packages are actually implemented
Prompted by the Aalok onboarding deck
+20m
forgekit-testing found marked DONE with zero real consumers
Status was written the day the package was created, not the day it was verified consumed
+40m
First redesign draft — Zeb's review finds a real contradiction
CANONICAL defined as 'needs a consumer import' but applied to a 0-consumer package in the same table
+1h
Model corrected — two dimensions, not one status column
Pattern maturity (OBSERVED/REAPPLIED/CANONICAL/RETIRED) separated from adoption evidence (Consumers, grep-verified)
+1.5h
forgekit-testing actually wired into Forge, not just relabeled
Root cause: products/forge was missing from root package.json workspaces entirely
+2h
verify-reuse.mjs built and run for real — found a stale path immediately
experiments/medina-navigator had been renamed to medina-square; two registry entries never updated
+2.5h
Aalok deck regenerated — first pass missed the point
Only updated the honest-gaps slide, left the chapter that actually explains gates unchanged
+3h
Zeb pushes back on 'not enough volume yet' — full duplication sweep launched
cn() found byte-identical in 3 places within 5 minutes of direct grep
+3.5h
cn() fixed in Forge + Leashline; fix exposed a real pre-existing test bug
Forge's tsconfig.json excluded tests/** from the project, silently breaking @/ alias resolution
+4h
Full sweep (2 background agents) returns 6 confirmed findings
Known duplicates createDb and getTenantId; Leashline duplicates 3 UI primitives; PilotLight's rate limiter copy-pasted into 2 more apps; 21 files call the Anthropic SDK directly
Close
All findings written into patterns.md/extraction-backlog.md with grep evidence, nothing silently promoted
Session closes with a real, evidence-backed backlog instead of a vibes-based one

What shipped

Two-dimension Pattern Registry status model in forgekit-os/patterns.md (pattern maturity vs. adoption evidence, COMPOUNDING derived not assigned)

forgekit-os/scripts/verify-reuse.mjs — a real, working script that checks patterns.md claims against actual files (not a spec, ran it repeatedly, fixed its own bugs)

REUSE RESOLUTION step in ignition.md §3.1 — fires per capability touched, not per build-size threshold

Evidence requirement added to Extraction Gate in gates.md — no CANONICAL/COMPOUNDING status without a pasted grep result

forgekit-testing actually wired into Forge (products/forge/tests/helpers/seed-test-db.ts now imports createTestDb from the package)

products/forge added to root package.json workspaces (was silently missing, blocking all forgekit-* imports into Forge)

cn() de-duplicated in Forge and Leashline — both now re-export from forgekit-ui instead of carrying a local copy

Fixed products/forge/tsconfig.json — tests/** was excluded from the TS project, breaking @/ alias resolution in 5 of 9 test files

Corrected two false claims in CLAUDE.md and extraction-backlog.md (forgekit-testing 'used by Forge and Leashline' with zero real imports)

Corrected a stale path in patterns.md (experiments/medina-navigator → experiments/medina-square, caught by verify-reuse.mjs's first real run)

Regenerated docs/aalok/manifest.json + cheat-sheet.md to reflect the real gate-enforcement mechanism (found a real PreToolUse hook exists — .claude/hooks/gate-check.mjs — that the deck previously said didn't exist) and the corrected reuse model

Full duplication sweep (2 background agents) — 6 real findings written into patterns.md/extraction-backlog.md with independently-verified evidence, not just trusted from the agents

It is both, and the discipline problem is more important... The registry records the past. It does not reliably influence the future.

Zeb, on why 'not enough volume yet' wasn't a sufficient explanation