From b5c422168aec68f2a181fbd359b9594abe32d893 Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Mon, 24 Aug 2026 23:34:37 -0600 Subject: [PATCH] =?UTF-8?q?docs(decision-log):=20S59=20A-prop=20decomposit?= =?UTF-8?q?ion=20=E2=80=94=20consume=20every=20verdict=20layer;=20never=20?= =?UTF-8?q?key=20by=20bare=20fn=20name?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/decision-log.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/docs/decision-log.md b/docs/decision-log.md index d65e5fc06..9f717dfb9 100644 --- a/docs/decision-log.md +++ b/docs/decision-log.md @@ -2459,3 +2459,33 @@ lui+consumer as an address anchor). **Hindsight.** The probe order in the plan (build NCs → probe ONE card → then the pile) was right; what it should ALSO have said is "probe the CLASSIFIER against the pile before building any driver" — that reordering is what saved the effort here. + +--- + +## 2026-08-24 (P31 S59) — the A-prop 0-bank decomposition: consume the verdicts you already compute + +**Decision.** When the free A-prop lane banked 0/117 three passes running, the response was to +decompose the failure population INDIVIDUALLY (four probes, four DIFFERENT causes) rather than +treat "the lane is broken" as one defect — and then to fix each class in the LANE, not as one-off +rescues. + +**What the decomposition bought.** 117 staged = 82 already-refuted-by-match_one (staged anyway: +the filter read `status==AGREE` and ignored `shape`) + 19 judged by the WRONG oracle (standalone +compile for a TU-destined draft; 7/27 were byte-perfect in their real TU) + 16 byte-correct +bodies stranded on TU decl walls the pipeline had a tool for but no wiring to. Even the "gate +never saw it" probe artifact decomposed: a triage harness racing itself on an fn-keyed scratch +dir — the third fn-keyed-collision defect found in one session (staging filter, reloc --fix +rowmap, triage dir), which is now a named anti-pattern: **key nothing by bare fn name; overlays +share function names.** + +**The general law (cookbook §270).** A mechanical remap is judged four times — instructions, +symbols, TU coexistence, whole-binary bytes — and a lane that stages on fewer than all four burns +a build per missing layer per pass, forever. Result of wiring all four + the decl-layer fixes: +the same population banked 64+ in one session, zero model tokens, and the mechanisms are in the +unattended lane. + +**Ceiling honesty (R41).** The lane's own number ("117") was a stage count with a +three-quarters-hopeless numerator. The real denominator is 973 open members; the mechanically +reachable slice is ~120/pass banking at ~50–60%; the remaining ~850 are named residuals (169 +STRUCT cracks, 121 type-inference, ~73 IMM tier-2, wrong-family cards) — work for different +tools, not this lane. Saying so beats reporting a flattering fraction of the wrong denominator.