Skip to content

For the generator team: two fitted features cancel when both are on - #50

Open
syncytium2 wants to merge 2 commits into
mainfrom
generator-revision-input
Open

For the generator team: two fitted features cancel when both are on#50
syncytium2 wants to merge 2 commits into
mainfrom
generator-revision-input

Conversation

@syncytium2

Copy link
Copy Markdown
Owner

Input for the generator team's parameter revision, written ahead of their request
for feedback so it can be read while options are open. A proposal — not set to
auto-merge.

The finding, with the picture

bg_rate_shape gives the background its real shape: a few busy ROIs, many
near-silent, 26.7% with no event at all over the bench recording. The
promiscuity probe raises every ROI by the same absolute rate. Run both and
the silent tail is gone — 0.0%.

probe vs heterogeneity

probe span 11.1% of the recording
probe share of a typical ROI's events 39.7%

Nothing is broken today — the bench still runs flat, both knobs off by design
so the RNG stream stays stable. This bites when the revision turns the shape on,
which is presumably why it was fitted.

The one that outlasts any parameter set

Participants are drawn uniformly (rng.choice(n_roi, …)), so who takes part is
independent of how active a cell is — ρ² < 0.005 either way. Unobjectionable
while every ROI was interchangeable; once they differ 6.6-fold it is an
assertion about the preparation that nobody made. That one is the lab's to
answer, not ours.

Re-derivable, not asserted

tools/probe_vs_heterogeneity.py prints every number the document quotes and
renders the figure — the arrangement fit_background_shape.py already gives the
fit. It calls raster_panel and the generator-figure writer rather than
re-deriving them.

Murderboard

11 of 11 roles, 1 blind verify round — record in
docs/reviews/generator_revision_input_2026-08-16.md. It caught:

  • a stale base that had invalidated the draft's lead finding (the worktree
    was branched from a main 41 commits behind origin, so the draft asked for
    heterogeneity that had already landed);
  • a probe count computed instead of measuredhot_rate_hz × span ignores
    ramp_sec's wash-in, 18.0 vs 17.1;
  • a figure drawn on the most flattering seed of forty (seed 1 is the maximum
    silent count; switched to the seed nearest the mean);
  • clipped y-labels that ate a digit off a count in the render.

One residual flag: two claims about upstream MATLAB files
(rederive_optima_fast.m PROVISIONAL, optim_history/README.md on the skipped
validation) cannot be checked from this repo — they need MATLAB and an interface2
checkout. Attributed to simulation_plan.md §6 rather than asserted. The
generator team can check both directly.

🤖 Generated with Claude Code

Written for the generator team ahead of their parameter revision, from the
consumer side: the six ports, their bench, and a paused look at learned
detectors.

The finding worth the figure: bg_rate_shape gives the background its real shape —
a few busy ROIs, many near-silent, 26.7% of them with no event at all over the
bench recording. The promiscuity probe raises every ROI by the same absolute
rate. Run both and the silent tail is gone, 0.0%. The probe occupies 11.1% of the
recording and contributes 39.7% of a typical ROI's events. Both features are
well-argued alone; their product does not look chosen. Nothing is broken today,
because the bench still runs flat — this bites when the revision switches the
shape on, which is presumably why it was fitted.

The one that outlasts any parameter set: participants are drawn uniformly, so who
takes part in an event is independent of how active a cell is. That was
unobjectionable while every ROI was interchangeable. Once they differ 6.6-fold it
becomes an assertion about the preparation that nobody made, and it is the
question only the lab can answer.

Numbers are re-derivable rather than asserted — tools/probe_vs_heterogeneity.py
prints every one of them and renders the figure, the arrangement
fit_background_shape.py already gives the fit. It calls raster_panel and the
generator-figure writer rather than re-deriving either; the writer moves through
a temp name because writing into Dropbox in place once left 188 MB of orphans.

Murderboarded: 11 of 11 roles, one blind verify round, record in docs/reviews/.
It caught a stale base that had invalidated the draft's lead finding, a probe
count computed instead of measured (ramp_sec thins the wash-in, 18.0 vs 17.1), a
figure drawn on the most flattering seed of forty, and clipped y-labels that ate
a digit off a count. One residual warning flag: two claims about upstream MATLAB
files cannot be checked from this repo and are attributed rather than asserted.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
syncytium2 pushed a commit that referenced this pull request Aug 17, 2026
`bg_rate_shape` was fitted to reproduce one fact: 35% of ROIs record no event at
all in a real baseline window. It does — 28.8% at bench structure. Plant the
fifteen coordinated events on top at the measured participation and it falls to
0.5%, because participants are drawn uniformly and an ROI escapes all fifteen
draws about 4% of the time.

So the two features fitted off real recordings cannot both be true of the same
simulated one. A recording matching the real silent fraction has almost no
coordination in it; a recording with realistic coordination has a background
nothing like a real field's.

This is a third face of the mechanism PR #50 documents twice, and neither section
states it: §1's version needs the promiscuity probe switched on and is explicitly
about a test construct, §2's is about the uniform draw as an unchosen assertion.
This one needs nothing switched on and is about the data every bench run would
produce the day the fitted background is adopted — which sharpens §2's ask rather
than answering it, since whether busy cells coordinate more is the lab's question
and not this repo's.

`tools/quiet_tail_vs_events.py` prints the table, so it can be re-taken when the
generator moves instead of quoted from a note. Two implementations agree: the
browser port that ships with the viewer gives 28.2% and 1.1%.

Found by building the viewer's simulator, which needed defaults a stranger could
trust and so had to be pointed at the measured values.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
syncytium2 pushed a commit that referenced this pull request Aug 27, 2026
…o surface

Two sessions closed together; this is the one file the next one reads. Root
HANDOFF.md, because five PRs are in flight — #304, #292, #270 (red), #53, #50 —
and `tests/test_handoff_is_honest.py` retires it when the last of them closes.

MURDERBOARDED, 11 of 11 roles, 2 blind rounds, record in
docs/reviews/HANDOFF_2026-08-27.md. The freshness gate stopped the run first, for
the second time in three days — vendored 94d720c against upstream 73dad04 — so the
family was re-vendored before any role ran. Roster unchanged at 11.

THE TWO FINDINGS THAT MATTER WERE BOTH FOUND BY RUNNING SOMETHING.

The handoff guard rejected the first draft. Its opening forty lines — the region
the guard checks and the briefing shows — named exactly one PR, #298, which is
closed. The page asserted "five PRs are open" in prose while the only
machine-checkable thing where it counted was a dead one. The open PRs are named
there now and it resolves all six live.

Then the full suite caught the file starving the waiting-on-Tony list. ALARM_ROOM
is a shared pool spent in emission order, and a root handoff renders first —
correctly; it is the stop-something-is-in-flight line. This one is 601B, which left
the list too little, and the third item's action line came out as "-> Did […]".
That item is "did you mean to close PR #298" — one of the three decisions the page
exists to put in front of a person. The handoff was cutting the decision list to
make room for itself.

The fix follows this file's own ALARM_ROOM comment, which already calls that trade
backwards: the handoff is the safer thing to shorten, because its alarm says READ
THE FILE and the reader is about to, while a decision request appears nowhere else.
emit_bounded takes a RESERVE — a block that renders early is told what a later,
less truncatable one needs and spends only the remainder. The ADR todo's waiting:
line also went from 278B to 160B, three sentences where the convention is one.

A SECOND TEST WAS WRITTEN FOR THIS AND DELETED. It counted action lines; the
truncation cut the tail of the third line rather than the line, so the count never
moved and it passed with the fix reverted.
test_it_surfaces_work_that_is_finished_and_waiting_on_a_person already asserts the
real property and fails without the reserve — verified in both directions. A guard
nobody has watched fail is not a guard, and shipping a redundant one that cannot
fire would have been this session's own criticism, committed.

The budget could not just be raised. tools/hook_spill_census.sh, built by the other
session from 55 real spill records, puts the threshold at (8962B, 10186B] and rates
the 9,000B budget "ok, 1186B under the smallest refusal". No room to buy.

ALSO: the machine-local board went from 12 ACTIVE claims to 4. The eight released
held nothing — merged branches, reaped worktrees — and the briefing was showing
them as live to every session that started.

Suite 1,378 passed, 13 skipped. sapper clear. Briefing 8,962B against 9,000B, which
the page states, because the next thing added to that hook degrades FOUNDATIONS §9.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
syncytium2 pushed a commit that referenced this pull request Aug 28, 2026
bg_rate_shape and bg_burst_shape are wired into BENCH_RECORDING. Both were
fitted and documented weeks ago and left None for one reason: keeping the RNG
stream identical so published seeds reproduced. Tony spent that -- "all the
benchmarks have changed because the bench is changed" -- so the Nones were
buying nothing and costing realism.

MEASURED_BURST_SHAPE and MEASURED_BURST_BINS move up beside MEASURED_RATE_SHAPE,
because the dict now uses them about 950 lines before they were defined. Both
"not wired into the bench" docstring notes were false and are rewritten.

Paired over 12 seeds, the deltas are modest: quiet keeps its ranking, busy
reorders three detectors that sat within 0.02 of each other. The first 3-seed
run showed swings up to 0.12 that were seed noise, which is why the table in the
handoff is 12.

The result worth more than the deltas is that PR #50 section 1 is now
measurable on the shipped bench: the fit takes per-ROI CV from 0.23 to 1.52
against 2.00 in real windows, and the promiscuity probe gives half of it back,
to 0.77, because it adds a flat rate to every ROI.

Six tests fail and none is touched. Coact's optimum has moved to the low end of
its alpha grid, rate's regime-shift precision swing is 0.103 against a 0.10
budget, detectors now plateau above the shipped 1.5 s tolerance, and the three
background-curve tests fail because coact now wins everywhere -- the instability
they were written to prove was partly an artifact of the flat field. Re-baselining
them would delete a finding, so they are left red for a human.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
syncytium2 pushed a commit that referenced this pull request Aug 29, 2026
bg_rate_shape and bg_burst_shape are wired into BENCH_RECORDING. Both were
fitted and documented weeks ago and left None for one reason: keeping the RNG
stream identical so published seeds reproduced. Tony spent that -- "all the
benchmarks have changed because the bench is changed" -- so the Nones were
buying nothing and costing realism.

MEASURED_BURST_SHAPE and MEASURED_BURST_BINS move up beside MEASURED_RATE_SHAPE,
because the dict now uses them about 950 lines before they were defined. Both
"not wired into the bench" docstring notes were false and are rewritten.

Paired over 12 seeds, the deltas are modest: quiet keeps its ranking, busy
reorders three detectors that sat within 0.02 of each other. The first 3-seed
run showed swings up to 0.12 that were seed noise, which is why the table in the
handoff is 12.

The result worth more than the deltas is that PR #50 section 1 is now
measurable on the shipped bench: the fit takes per-ROI CV from 0.23 to 1.52
against 2.00 in real windows, and the promiscuity probe gives half of it back,
to 0.77, because it adds a flat rate to every ROI.

Six tests fail and none is touched. Coact's optimum has moved to the low end of
its alpha grid, rate's regime-shift precision swing is 0.103 against a 0.10
budget, detectors now plateau above the shipped 1.5 s tolerance, and the three
background-curve tests fail because coact now wins everywhere -- the instability
they were written to prove was partly an artifact of the flat field. Re-baselining
them would delete a finding, so they are left red for a human.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
syncytium2 pushed a commit that referenced this pull request Sep 1, 2026
… rotting

The root HANDOFF.md is read aloud at every session start. It claimed main at
ced0da4 (37 commits back), the suite at 1,569 against 1,708 collected, and the
board at "30 ACTIVE, 7 with a live worktree" against 39 ACTIVE of 275 with 29
having none.

What makes this worth a commit rather than a quiet fix: the note directly beneath
those figures, dated 2026-08-30, says "every figure above had rotted" and draws
the general lesson -- "a file whose whole job is to say what is true cannot be
checked only on its own retirement condition". Then it refreshed the numbers and
left them there. Same file, same claim, wrong twice in three days, with the
diagnosis printed underneath both times.

So the counts come out rather than getting a third value. Each is one command and
the commands are now in their place, alongside docs/MILESTONES.md for the durable
question -- rows pinned to commits, which can go incomplete but cannot silently
change their minds. RESET.md reached this first and says why: "those were wrong
within the hour it took to draft this."

The retirement gate is untouched and still cannot fire: #292, #53 and #50 are all
open, so test_handoff_is_honest.py stays green no matter what this file says.
That is a separate defect and it stays open.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
syncytium2 added a commit that referenced this pull request Sep 1, 2026
… rotting (#437)

The root HANDOFF.md is read aloud at every session start. It claimed main at
ced0da4 (37 commits back), the suite at 1,569 against 1,708 collected, and the
board at "30 ACTIVE, 7 with a live worktree" against 39 ACTIVE of 275 with 29
having none.

What makes this worth a commit rather than a quiet fix: the note directly beneath
those figures, dated 2026-08-30, says "every figure above had rotted" and draws
the general lesson -- "a file whose whole job is to say what is true cannot be
checked only on its own retirement condition". Then it refreshed the numbers and
left them there. Same file, same claim, wrong twice in three days, with the
diagnosis printed underneath both times.

So the counts come out rather than getting a third value. Each is one command and
the commands are now in their place, alongside docs/MILESTONES.md for the durable
question -- rows pinned to commits, which can go incomplete but cannot silently
change their minds. RESET.md reached this first and says why: "those were wrong
within the hour it took to draft this."

The retirement gate is untouched and still cannot fire: #292, #53 and #50 are all
open, so test_handoff_is_honest.py stays green no matter what this file says.
That is a separate defect and it stays open.

Co-authored-by: richard defazio <defazio@umich.edu>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants