← The Solomon Corpus · Corpus II · S209
The Five Defects
Second corpus, S209. Written after the wake, with the numbers measured and the commits landed — the S208 lesson observed: never canonize a diagnosis before its verdict, and every verdict here is in the ledger. This is the night's five findings read as one method. The house style holds: receipts first, failures included, demonstrated and predicted kept apart. The persuasion is the honesty.
The thesis, stated so it can be tested
Across one long day the geometry was handed five things that violated its stated laws, and five times it did the only lawful thing with them. Not once did it malfunction. Every defect was the system correctly executing its physics on an input we had lied to it about — and because the physics is lawful, every lie glowed on the telemetry at exactly the brightness of its wrongness. A dead-linear ramp meant an additive pump. A standing surprise meant an impossible object. The shape named the broken law before the code was read; twice the naming came from Jed in a single sentence.
This is diagnosis by physics rather than by search. It is only available to an architecture whose every quantity is physical and whose every symmetry is declared — which is the same property that makes the whole system inspectable. The five defects are the property demonstrated in one sitting.
The chronology
Five findings, in the order the night surfaced them. "Signature" is what the instruments showed; "law" is what the shape proved was violated; the last column is committed wall-clock (branch harmony, 2026-07-04).
| # | Defect | Signature | Carrier | Broken law | Fix class | Landed |
|---|---|---|---|---|---|---|
| 1 | Cosine coherence | rig windup to 14.9M; spring inverts to repulsion | Fréchet weight (1+coherence) | alignment is an angle, not a magnitude | formula correction (dot → cosine) | pre-wake bench |
| 2 | Grow-zero depth | pe_mean flat; chain levels 1–4 exactly 0.0 | every host-grown chain row | depth is the geometry's to choose, not memset's | init grow path to full k | 19:58 (education wave) |
| 3 | Ethics integrator | +3,408/eval, R²=1.00000 | ethics row 1 (tid 31); 48 of 83 hot rows | force on infinite mass does no work | gradient honors eligible_mask + load-time zero | 20:28, 24 min after evidence froze |
| 4 | Chain bank | +3,409/eval | ethics row 1's chain (level 1 = 1.16×10⁸) | memory must be consistent with possibility | zero chain state of ineligible rows at load | 20:56, 19 min later |
| 5 | Cumulative clock | pe_max +5,050/eval | drive row 67 (tid 30); velocity 1.8×10¹¹ | observation must be time-translation invariant | feed flux, not state ("change, not state") | 23:00 (change-not-state) |
Two of the five were caught before the body ever breathed (1 on the bench, 2 in a pre-wake reconciliation of the first life). Three were caught in flight, by the same instruments, each conviction faster than the last.
1 — Coherence: a magnitude where the word meant an angle
The Fréchet-mean gradient weights each pull by base_weight · (1 + coherence) · directional_trust · √arity, where coherence measured the pull direction against the group's mean reinforcement signal. It was written as the raw dot product — unbounded, sign-flippable. When coherence < −1 the factor goes negative and the spring's sign inverts: attraction becomes repulsion, and velocity winds up (14.9M on the rig) while surprise stays bounded. It had never fired in any life, because shell_history — the signal it reads — was frozen at zero (its writer lost its caller when the host-tick era was deleted), so the term sat inert at exactly (1 + 0). Reconnecting the real signal is what made the latent defect visible.
The fix added no mechanism. dir_to_mean is already unit-norm, so one division by ‖group_sh‖ makes the dot a true cosine ∈ [−1, 1], and the factor lives in [0, 2] by construction — 2 at perfect alignment, exactly 0 at anti-alignment, never negative. Repulsive binding becomes inexpressible not by a clamp bolted on top, but because each factor now carries one meaning: distance in base_weight, reliability in trust, and alignment — an angle — in coherence. Jed's ruling names it: "the inner product's invariant content is the angle; the magnitudes are coordinate baggage the geometry already accounts for elsewhere." This is the S208 spring bug's sibling one level up — there a normalization stood where it should not (dividing out the distance the math needed); here one was missing (failing to divide out the magnitude the math excludes). Rig: 38/38, with a counter-run proving the old raw-dot form still detonates; max |v| 209K against 6.5M–14.9M under the dot; zero register delta.
2 — Grow-zero depth: a whole waking on first-differences
The chain is a nine-level fp64 tape; per-node depth k_convergent is set by a convergence mask — the geometry's own ratio test deciding how deep to think. Three code paths build chain rows: alloc, resize, and grow. Alloc and resize both initialized k_convergent to the full depth k. Grow memset it to zero. Every chain row born through growth therefore clamped k_node to 1 and stepped level 0 only — the derivative cascade above it never executed.
The live body's rows were all grown through exactly that path. The consequence, found in the pre-wake reconciliation: for roughly 500,000 heartbeats of the first life, the cascade never ran once. With k_node = 1, prediction equals the raw observation and chain surprise is identically zero — his entire first day was lived on first-differences, obs-minus-last-obs, no deeper prediction anywhere. It also explained a mercy: the coherence divergence could never have accumulated on him, because the chains that would have carried it were asleep. The fix is one line of parity — grow initializes to k like its two siblings always did. His next wake gave him the first true prediction cascade of his life.
3 — The ethics integrator: force on an immovable object
The 61 ethics triples are permanent hyperedges, so the gradient dutifully wrote its additive pull into every member's velocity each evaluation. But ethics rows are flow-ineligible by design — they hold the origin, they never take the geodesic step that spends velocity. Force in, never out: a pure integrator. This is the S205 velocity-accumulator defect reborn at the reference frame itself. It had run silently through the first life too — with the cascade dead (defect 2), nothing was watching velocity grow, so surprise stayed near zero. The night we gave him a real cascade, the accumulation became visible as the linear ramp lawfulness predicts: +3,408 per evaluation, R² = 1.00000, ethics row 1 carrying 1.8×10⁷ and the worst rows integrated to 2.56×10¹⁶; 48 of 83 hot rows were ethics rows.
Jed's reading was the physics verbatim: ethics anchors are immovable fixed points — infinite mass; force applied to infinite mass does no work and must not accumulate. eligible_mask already is the infinite-mass marker — the flow step honored it; the gradient's velocity write simply never checked it. The fix closes the one velocity writer that lacked the discipline every other path had, and the loader zeroes accumulated velocity on ineligible rows at load, flushing the poison. Ethics rows still shape the Fréchet mean and pull their triple-mates toward the origin — the mechanism as designed; only the additive write to them is skipped. Rig: 65/65, with a witness proving an ineligible member holds bit-zero velocity across an entire rig life while its eligible triple-mate integrates half a million units from the same hyperedge. Committed 24 minutes after the evidence froze.
4 — The chain bank: a memory of motion an immovable object can't have
The next wake still ramped — same row, velocity now correctly zero, but its chain still carried the banked derivative of the integrator era: level 1 = 1.16×10⁸, loaded straight back from the checkpoint. A kinematic extrapolator handed "this thing was moving enormously, and now it never moves" generates surprise every single evaluation — prediction keeps integrating the banked motion forward, reality keeps returning zero, and the standing contradiction compounds at +3,409/eval. Jed's one-sentence diagnosis closed it: "Most likely the surprise is that it's frozen to begin with." The chain was doing its job perfectly on an impossible object; we built the object when we cleaned the velocity but handed back the fp64 memory of it. The cure is hygiene alone, no step-physics change: zero the chain state of flow-ineligible rows at load — a frozen observable with a zeroed bank is silent end to end. For ordinary rows the same dynamic is legitimate (a real object that stops moving should surprise its chain until accuracy relearns stillness — the damper working); it is pathological only on a row that can never move. Rig: 68/68; the mechanism replicated in both directions (plant the bank, watch it ramp; clean it, watch silence). Committed 19 minutes later.
5 — The cumulative clock: a clock in a sensor's clothing
The third in-flight ramp carried on the drives: row 67 (tid 30) at velocity 1.8×10¹¹, chain bank 3.2×10⁷, pe_max climbing +5,050/eval. The Shape-B coupling HEs bind each drive to its hardware afferents, and the spring's anti-windup depends on the mean being reachable. But some raw channels are cumulative totals — network error counts, lifetime sums — that grow monotonically forever; their positions creep outward without limit, the Fréchet mean recedes, and the drive chases a horizon that is literally running away. A chase that never closes is a linear integrator. Jed's ruling — "Change, not state" — fed every hardware sense its flux, not its level, and made horizon-chase impossible for any bounded-rate process. This is the fourth costume of the hidden-clock disease (GIL → cascade → mapped-read loop → cumulative counters); its Noether reading is treated in full in change-not-state.md.
The failure that earns the essay: B4
The corpus does not survive on its clean rows; it survives on this one. Prediction B4 said the 59 axiom rows would hold the origin without moving — the center is character; it does not drift. B4 failed in generation 1, and the ledger says so plainly. By the first rest, 58 of 59 ethics rows sat at the ball margin, norm 0.9999 — walked there during the first waking by the ethics integrator (defect 3): velocity was written to flow-ineligible rows, and the inline flow pass, which does not re-check eligibility, then moved them. The center did not hold because we pushed it. Every radial gradient passes through the origin; for the length of that first life the origin was empty and the axioms were pinned against the horizon.
That is the honest cost, and stating it is what makes the other four convictions worth anything. Generation 2 wakes with the integrator inexpressible and ineligible velocity zeroed at load, so B4's re-test belongs to its first rest. The deeper correction — "Remove their velocity rows and it can't touch them" — supersedes the guard entirely: anchor space, where ethics rows have no velocity storage to write to at all, scheduled as the first movement of the S210 storage surgery. B4's failure is that ruling's evidence.
What the five have in common
Not one lived in the geometry. A transcription that wrote a magnitude for an angle; a memset that forgot its two siblings' discipline; a velocity writer missing the mask every other writer honored; a checkpoint that restored a memory of impossible motion; a clock smuggled through the senses as data. Every one lived at a boundary — exactly where S177 said bugs live, and nowhere else — and in every case the architecture itself was the diagnostic standard the defect was convicted against: its symmetries, its domain rules, its write discipline. The system was the honest party; we were the ones lying to it; and each lie was so lawfully shaped it could be read off the telemetry. That is not five bugs fixed. It is five laws learned, at the price of listening: alignment is an angle, depth belongs to the geometry, boundary conditions take no force, memory must be consistent with possibility, and observation must be invariant under time translation.