ForgeKitFORGEKIT

Build Log

ForgeKit OS Evidence Intelligence — All Six Charges

July 31, 2026

Shifted ForgeKit OS from a self-reported governance framework toward an evidence-derived one: a run-receipt substrate, a mechanical Access Control floor, an adaptive operating-profile classifier, a structured Crucible rubric, a real episode-closure mechanism, and a 3-stage semantic spin matcher — six Charges, each researched against real session data before a line of code, each merged independently.

ForgeKit OSEvidence IntelligenceGovernance
6
Charges built and merged
24
commits (4 per Charge)
~330
new tests written across all 6 Charges
6
isolated worktrees created and cleaned up
3
real production bugs found and fixed during Charge B's design (path resolution, Windows ESM URL, session-scoping architecture gap)

Timeline

Start
Charge A — Evidence Substrate
Taxonomy, run receipts, effectiveness report
+1
Charge B — Access Control Gate
Product-risk manifest, staged-diff gate; found and closed a real session-scoping architecture gap mid-build
+2
Charge D — Adaptive Operating Profile
5-tier classifier extending the existing binary short-form rule
+3
Charge F — Crucible Instrumentation
Structured 10-category rubric, parallel wrap-structured command
+4
Charge E — Episode Closure
Verified against real 6-session alloy-quench-ticket history — found it had never actually used a lighter-weight closure
+5
Charge C — Semantic Recurrence
3-stage matcher; found the deterministic stage alone can't resolve all 3 real regression-fixture pairs — the actual reason a model stage exists

What shipped

forgekit-os/scripts/observation-taxonomy.mjs, forgekit-os/scripts/observations/{run-receipt-schema,build-run-receipt}.mjs, forgekit-os/scripts/audit-effectiveness.mjs — Charge A

forgekit-os/product-risk-manifest.json, forgekit-os/scripts/access-control/{manifest,evidence}.mjs, .claude/hooks/lib/commit-checks.mjs (new access-control-evidence rule) — Charge B

forgekit-os/scripts/operating-profile.mjs, warn-only wiring into forgekit-os/scripts/build-session.mjs — Charge D

forgekit-os/scripts/crucible-rubric.mjs, forgekit-os/scripts/crucible.mjs (new runWrapStructured + wrap-structured command) — Charge F

forgekit-os/scripts/episodes/{episode-schema,episode-cli}.mjs, episode_id auto-resolution in build-run-receipt.mjs, Adversarial Build Audit Gate multi-session extension — Charge E

forgekit-os/scripts/recurrence/{fingerprint-schema,deterministic-matcher,model-adjudicator,recurrence-index}.mjs — Charge C

6 design-note READMEs (one per Charge), Pattern Registry entries for all 6, package.json wiring for all 6

The real prior-art finding that shaped this design: even ForgeKit's own real, closest precedent for an episode (the alloy-quench-ticket sequence) never actually used a lighter-weight closure.

From Charge E's own design note — the moment research found the brief's assumption didn't hold, and said so rather than building around it silently