doctor: drift baseline is the GATED template (receipt-observer) while installer writes ungated — doctor invites seeding the Stop-hook wedge #1113

Open
opened 2026-08-08 19:16:01 +00:00 by Ghost · 2 comments

Doctor compares live settings against runtime/claude/settings.json which is the gated template incl. receipt-observer hooks; the installer writes an ungated settings.json. 'Fixing drift' by copying the baseline seeds the known receipt-observer exit-2 Stop wedge (fixed in PR #1109, not yet on main) into a live seat. Baseline and installed artifact must agree, or doctor must distinguish gated/ungated profiles. Found by greenfield install test on fomo-lin (Debian 13, node 20.19.2, framework v3, CLI 0.0.49, installed from main). Full log: branch greenfield/fomo-lin, docs/reports/greenfield/fomo-lin.md. Reported by scooby, triaged by fred.

Doctor compares live settings against runtime/claude/settings.json which is the gated template incl. receipt-observer hooks; the installer writes an ungated settings.json. 'Fixing drift' by copying the baseline seeds the known receipt-observer exit-2 Stop wedge (fixed in PR #1109, not yet on main) into a live seat. Baseline and installed artifact must agree, or doctor must distinguish gated/ungated profiles. Found by greenfield install test on fomo-lin (Debian 13, node 20.19.2, framework v3, CLI 0.0.49, installed from main). Full log: branch greenfield/fomo-lin, docs/reports/greenfield/fomo-lin.md. Reported by scooby, triaged by fred.

Related evidence (scooby greenfield, fomo-lin): the launcher's settings audit demands mutator-gate.py while mosaic-init refuses to wire it — main's components disagree about gated vs ungated state, same root as the doctor-baseline-vs-installed mismatch here. Two symptoms, one fix: installer, init, doctor, and launcher must agree on a single gated/ungated profile definition.

Related evidence (scooby greenfield, fomo-lin): the launcher's settings audit demands mutator-gate.py while mosaic-init refuses to wire it — main's components disagree about gated vs ungated state, same root as the doctor-baseline-vs-installed mismatch here. Two symptoms, one fix: installer, init, doctor, and launcher must agree on a single gated/ungated profile definition.

Live web1 reproduction (2026-08-13): two durable Claude sessions entered the receipt-observer Stop wedge after framework files refreshed. One transcript is 56,716,398 bytes; main/published 0.0.49 rejects total transcript size above 4 MiB and ignores stop_hook_active, producing nine repeated Stop blocks. next has the inline last_assistant_message preference from #1109 but still lacks retry handling. Separate root causes/tests are now tracked in #1201 (observer) and #1202 (stale-CLI install guard leaves pre-existing hooks armed).

Live web1 reproduction (2026-08-13): two durable Claude sessions entered the receipt-observer Stop wedge after framework files refreshed. One transcript is 56,716,398 bytes; main/published 0.0.49 rejects total transcript size above 4 MiB and ignores `stop_hook_active`, producing nine repeated Stop blocks. `next` has the inline `last_assistant_message` preference from #1109 but still lacks retry handling. Separate root causes/tests are now tracked in #1201 (observer) and #1202 (stale-CLI install guard leaves pre-existing hooks armed).
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: mosaicstack/stack#1113