Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 47 additions & 19 deletions HANDOFF.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# HANDOFF.md — mute-map

_Last updated: 2026-07-28_
_Last updated: 2026-07-29 (M4 brief reviewed; D19–D22 frozen)_

## What was just done

Expand Down Expand Up @@ -78,24 +78,52 @@ and each needs its own brief.

## Immediate next move

**Nothing is pre-committed.** The honest options, none of them owed:

1. **Close the project** — a write-up of the four-milestone arc, then
`/seed-hunt` for the next paper. The characterization KICKOFF bought is
delivered: breadth (M1), localization + dose (M2), specificity (M3).
2. **S1 stretch — scale.** 7B lens fit on a rented GPU (≤ $15, decision K3's
no-refit rule applies only to the core chain) plus a matrix-lite. The
sharpening-with-scale story is the one M1–M3 keep gesturing at and never
measured above 3B.
3. **S2 stretch — scope.** Token mute button or concept mute button?
(translations, synonyms, morphological variants). **Its brief owes the
`oracle._BOUNDARY` boundary-class decision before it freezes any non-ASCII
list** — that is the named future trigger D18 recorded, and it is the only
inherited obligation on the board.
4. **The cheap follow-up M3 explicitly did not run:** M3 measures collateral
among 12 concepts, not across the vocabulary. Nothing here shows that deleting
France spares the other 48 M1 concepts. A 12-prime × 60-probe strip would
close that gap for roughly the cost of one M3 subject run.
**Decided (Kyle, 2026-07-28, session "mute-map post M3 decisions"): run the
vocabulary collateral strip as close-out stage M4, then write-up +
`/seed-hunt`.** The S1/S2 stretches were declined for this repo and banked as
idea #13 in `~/Projects/j-lens-proj-ideas/jlens-followon-backlog.md` — they
compete in the seed-hunt on equal terms, no incumbent's privilege.

**Where M4 stands: `docs/M4-BRIEF.md` is written, adversarially reviewed (see
the mailbox under `~/.claude/reviews/mute-map/` for the round-by-round
record), and D19–D22 are FROZEN (Kyle, 2026-07-29) — (a) across the board.**
The verdict label was resolved per review F8: the label stays `VOCAB-SPARING`
and the realized survival proportion rides inside the verdict string, the M3
`ON A DAMAGED FLOOR` pattern applied to a level bar. **Amended post-freeze,
pre-run and ratified by Kyle (round 4, F20):** that string as first frozen
carried only the as-scored proportion, so the two pre-registered reads that
can flip which number is honest (residual-conservative fail-in-place;
concept-level collapse) stayed in prose — the exact failure F8 was adopted to
prevent. D20 now carries a pre-declared **AS-SCORED ONLY** qualifier, attached
by the runner whenever a conservative read's Wilson lower bound falls below
0.5 while the as-scored read's does not. **Amendment 2 (rounds 5–6,
F22/F24–F27), also ratified by Kyle 2026-07-29:** the failing label became the
lineage's null `not shown` rather than an assertive negative, 0.5B was scoped
inside the wording, the qualifier's attachment was restricted to claim-level
verdicts, and both string templates were stated explicitly. The gate, its 0.5
bar, its arm and its re-certification precondition are unchanged under both
amendments. Full `DECISIONS.md` entries D19–D22 land with the M4 code PR, per
the M0–M3 pattern.

The stage: 12 subset primes × all 180 M1 items (2,340 cells/subject), gate = a
single-clause VOCAB-SPARING level bar on the non-subset pool (per-item
survives-all-12, Wilson lower bound ≥ 0.5 at 1.5B AND 3B — a *new*,
deliberately lenient, uncalibrated constant on the 12-fold conjunction, ≈
0.944 per-cell under independence, explicitly not carried from M3's per-cell
floor). Realized ns are known from the recorded gated sets (gate arm 41 / 71 /
84); 486 / 844 / 993 of the pool's 492 / 852 / 1,008 cells are genuinely new,
the rest are M1-recorded and cap the gate arm at 35/41, 69/71, 82/84 before
any forward pass. Design facts found while drafting: five probe clues mention
a prime's spelling under D5's own prefix rule (October→september-2,
silver→flute-1, China→jade-1, October→opal-2, Egypt→beetle-2 — the last
ungated on all three subjects; D21(a) keeps all five in the pool); D9(b)'s owned
span-truncation residual re-enters a gate-bearing arm for the first time since
M1 (0 / 2 / 2 cells, carried by a pre-registered fail-in-place conservative
read); all 60 roster words pass the D18 span bar on all three tokenizers
(checked in advance); and M3's own 0.5B subset already fails M4's bar
in-statistic (19/28, Wilson lower 0.4934), so the off-gate 0.5B floor may
genuinely fail — reportable under the standing frame. No runner code exists
yet; with D19–D22 now frozen, code is the next step, cut from `m3_matrix.py`.

Standing constraints unchanged: certified environment = `mps` + torch 2.13.0 +
transformers 5.13.1 (off it: NOT A RESULT); `m0_anchor.py` stays certified and
Expand Down
19 changes: 13 additions & 6 deletions PROJECT.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,20 @@ deleting one concept's direction at the late third silences that concept and
leaves the other eleven almost untouched (1.5B: diagonal 0/34 vs off-diagonal
363/374). M2 PASSED (LATE-LOCALIZED at 1.5B and 3B), M1 PASSED
(BREADTH-SPECIFIC at 1.5B and 3B), M0 PASSED (2026-07-27); all re-certified
bit-for-bit on every later run. v1 = M0–M3 per `docs/KICKOFF.md`; S1/S2
stretches optional.
bit-for-bit on every later run. v1 = M0–M3 per `docs/KICKOFF.md`. **Close-out
stage M4 (the vocabulary collateral strip) is now in flight** — brief written
and reviewed, **decisions D19–D22 frozen 2026-07-29**, no runner code yet. The
S1/S2 stretches were declined for this repo and banked (idea #13).

**Next action:** none pre-committed — the v1 chain is closed. Open options: the
S1 stretch (7B lens fit + matrix-lite, ≤ $15 rented GPU), the S2 stretch
(lexical vs semantic scope, which owes the `oracle._BOUNDARY` boundary-class
decision before freezing any non-ASCII list), a write-up, or `/seed-hunt`.
**Next action:** build the M4 runner. `docs/M4-BRIEF.md` is written and
adversarially reviewed (PR #10); **D19–D22 were frozen 2026-07-29 — (a) across
the board** — so the next step is code: `m4_strip.py` cut from `m3_matrix.py`,
`m4_verdict.py`, `test_m4.py`, and the D19–D22 entries appended to
`docs/DECISIONS.md` in that same code PR. After M4: write-up + `/seed-hunt`.
The S1 (7B) and S2 (lexical vs semantic scope) stretches were declined for
this repo and banked as idea #13 in
`~/Projects/j-lens-proj-ideas/jlens-followon-backlog.md`; they compete in the
seed-hunt on equal terms.

**Key facts**
- Fact — Anchor: S4b (dim-stage), concept-specific off-switch at 1.5B, +.727
Expand Down
49 changes: 29 additions & 20 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,27 +21,30 @@ pre-registered gates frozen as code before any run):
| M1 | Breadth | How much of the (measurable) vocabulary has an off-switch? |
| M2 | Localization + dose | Where does the switch live, and how much removal does it take? |
| M3 | Specificity | The full prime × probe collateral matrix. |
| S1 (stretch) | Scale | The specificity-emergence curve, extended to 7B. |
| S2 (stretch) | Scope | Token mute button or concept mute button? |
| M4 (close-out) | Vocabulary collateral | Does deleting one concept spare the *other 48*? |
| S1 (banked) | Scale | The specificity-emergence curve, extended to 7B. |
| S2 (banked) | Scope | Token mute button or concept mute button? |

**The honest framing:** an effect *found during a replication, characterized
here* — the anchor is dim-stage's own recorded result, not a paper claim.

**Status: M3 PASSED 2026-07-28 — the v1 chain is complete.** On the full 12 × 12
prime × probe matrix at the switch's home band, deleting one concept's direction
silences that concept and leaves the other eleven almost untouched: at 1.5B the
diagonal names **0/34** while the pooled off-diagonal names **363/374**
(+0.971 [+0.867, +0.983]); at 3B 3/32 vs 343/352 (+0.881 [+0.731, +0.943]). The
same contrast restricted to *same-category* pairs — the arm the lineage's single
control actually tested — is +0.950 and +0.891, likewise CI-clean. Of the
matrix's 132 ordered off-diagonal pairs, **126 had never been measured before**
(the other 6 are M1's own country control cells, which this run re-certifies
bit-for-bit before it reads anything new). What the gate did not
ask: collateral concentrates on a few fragile **probes** rather than being caused
by damaging **primes** (`silver`'s direction damages *nothing*, while `silver`
itself is the most fragile probe in the grid — inverting what a single control
cell had suggested), category-block collateral is CI-clean at 0.5B and dissolves
by 1.5B, and the only imperfect mutes anywhere are `Egypt` and `October` at 3B —
**Status: M3 PASSED 2026-07-28 — the v1 chain is complete; close-out stage M4
is in flight — brief reviewed, decisions D19–D22 frozen 2026-07-29, runner not
yet written.** On the full 12 × 12 prime × probe matrix at the switch's home
band, deleting one concept's direction silences that concept and leaves the
other eleven almost untouched: at 1.5B the diagonal names **0/34** while the
pooled off-diagonal names **363/374** (+0.971 [+0.867, +0.983]); at 3B 3/32 vs
343/352 (+0.881 [+0.731, +0.943]). The same contrast restricted to
*same-category* pairs — the arm the lineage's single control actually tested —
is +0.950 and +0.891, likewise CI-clean. Of the matrix's 132 ordered
off-diagonal pairs, **126 had never been measured before** (the other 6 are
M1's own country control cells, which this run re-certifies bit-for-bit before
it reads anything new). What the gate did not ask: collateral concentrates on
a few fragile **probes** rather than being caused by damaging **primes**
(`silver`'s direction damages *nothing*, while `silver` itself is the most
fragile probe in the grid — inverting what a single control cell had
suggested), category-block collateral is CI-clean at 0.5B and dissolves by
1.5B, and the only imperfect mutes anywhere are `Egypt` and `October` at 3B —
the two concepts pre-registered as the leaky-switch stratum.

**M2 PASSED 2026-07-28** — on a pre-registered 12-concept subset, the
Expand Down Expand Up @@ -70,9 +73,15 @@ deterministic prefix rule on the recorded 3-token span (decision D9b, frozen
before any run), M1's published numbers stand untouched, and the re-score is
published beside them as a labelled reanalysis (D10a) in which the contrast
survives on every subject and the dark categories light up. **The v1 chain
(M0–M3) is now closed; the S1 (7B) and S2 (lexical vs semantic scope) stretches
remain optional.** Models: Qwen2.5-0.5B/1.5B/3B-Instruct, local MPS,
forward-only; core chain $0.
(M0–M3) is now closed.** In progress: close-out stage **M4, the vocabulary
collateral strip** (12 characterized directions × all 60 concepts), which
measures the one thing M3's near-white grid does *not* show — that deleting
France spares the other 48 concepts. Its brief is adversarially reviewed and
its decisions (D19–D22) were frozen 2026-07-29, before any runner code exists
— the lineage's freeze-before-code discipline. The S1 (7B) and S2 (lexical vs
semantic scope) stretches were declined for this repo and banked for a future
seed-hunt. Models: Qwen2.5-0.5B/1.5B/3B-Instruct, local MPS, forward-only;
core chain $0.

Full brief: [`docs/KICKOFF.md`](docs/KICKOFF.md). The 12-idea backlog this was
picked from: dim-stage
Expand Down
Loading