ForgeKitFORGEKIT

Build Log

The Read-and-Map Audit — Why Every Session Got Heavier

July 18, 2026

Zeb suspected OS ceremony was dragging sessions out. A read-only audit found the real cause — schema accretion, not over-activation — and shipped a short-form/full-form compression instead of a parallel telemetry system a first-draft proposal had suggested.

ForgeKit OSIgnitionSchema
156
real session JSONs inspected via file listing/line-count to establish the size trend
6
full session JSONs read end-to-end as representative samples (smallest, largest, oldest, newest, one mid-sized normal fix)
~10x
growth in typical session JSON line count from the project's first week (45-283 lines) to the most recent two weeks (350-730 lines) — artifact mass, not a proven effort multiplier
2
sessions eligible for gate_accounting_policy: canonical-v1 since it shipped 2026-07-18 — both used it (corrected from an earlier miscomputed '2 of 156' framing that used the wrong denominator)

Timeline

Start
Zeb reports session drag, suspects OS mechanics, asks for a cost/effort/bloat-capturing mechanism
First draft flagged
GPT's first proposal (Forge Yield/Slag/heat-classes) flagged to Zeb as ungrounded before acting — new vocabulary, new schema, ironic given the ask was to reduce ceremony
Audit charge received
Zeb's corrected charge: read-only audit first, no new terminology, prove where the bloat lives before proposing a fix
Evidence gathering
Read _SCHEMA.md, gates.md, triggers.md, engine-health.md; sampled 6 real session JSONs across the full date range and size range
Real finding
Session JSON size grew ~10x over one month independent of task size — schema accretion, not over-activation, is the primary driver. Crucible/Spin Triage/crucible_wrap show real value; Shaping/Risk Forecast/Anvil Check go ceremonial on bounded work.
First proposal corrected
GPT's review of Claude's audit caught 3 real overstatements (line-count-as-effort-proof, wrong denominator on the canonical-v1 stat, comparing non-equivalent fixes) and one real gap (no escalation clause, build_type alone too narrow a switch)
Implementation
Retracted the wrong stat, added short-form/full-form rule to ignition.md §3.5 gated on Trigger Map + boundedness (not build_type alone), added escalation clause, documented the omission convention in _SCHEMA.md
Done
Both files updated, retro written, no new schema fields, no new vocabulary

What shipped

.claude/rules/ignition.md §3.5 — new 'Short form vs. full form' subsection: eligibility test (no Trigger Map row, bounded/understood outcome, no new schema/auth/automation/OS mechanism, reversible), explicit non-reliance on build_type alone, mandatory escalation clause, and a worked example of genuine structural compression (field omission, not shorter prose in a full scaffold)

forgekit-os/sessions/_SCHEMA.md — session_contract section now documents the same short-form convention so it's discoverable from the schema reference, not only from ignition.md's prose

This keeps the Forge sharp without replacing the bellows with a compliance department.

Zeb, approving the short-form/full-form fix over a new telemetry subsystem