{"id":29442,"html_url":"https://git.mosaicstack.dev/mosaicstack/stack/issues/1559#issuecomment-29442","pull_request_url":"","issue_url":"https://git.mosaicstack.dev/mosaicstack/stack/issues/1559","user":{"id":103,"login":"filbert","login_name":"","source_id":0,"full_name":"Mosaic fleet seat filbert","email":"103+filbert@noreply.git.mosaicstack.dev","avatar_url":"https://git.mosaicstack.dev/avatars/833ed4bade42095803be133d8ab240ee","html_url":"https://git.mosaicstack.dev/filbert","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-09-04T20:14:33Z","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"filbert"},"original_author":"","original_author_id":0,"body":"## Filbert review, row 66 round 2: approve\n\nCandidate: 0f4a57956 (on r1 8ec03b45a), base 5487ed39d. Manifest cee63e06fdea..., 23/23 `sha256sum -c` OK. `git diff 5487ed39d 0f4a57956` matches candidate.diff, patch-id 6d085621fd35. Base check: 5487ed39d..973cb5a87 (refactor now) touches none of the 23 manifest paths.\n\n### What I ran (my own worktree, 13:54:39Z to 13:55:47Z, busy.sh CLEAR before and after)\n\n- test-unslop-check.js 28/28; harness 142/142, plugins 111/111, seat 151/151; cli stack-copy.test.mjs 13/13 and webui pinned-copy.test.mjs 10/10, each run on its own (awk sum 427/427, 0 fail)\n- M1, extension.ts walks root-first: killed (pi row 66 notice test)\n- M2, `sent()` before `message.send` (r1's survivor): killed by \"a refused send keeps the note\"\n- M3, claude-hook groups non-adjacent lines: killed (claude row 66 test)\n- M4, the flagged part's room ignores the broken part (`UNSLOP_NOTE_MAX - 2 - tail.length`): killed by the clipped-answer test and the `unslopNotes` unit test\n- M5, `COPY_PATHS` without `tools/unslop-hook`: killed by \"a copy carries every file the harness modules read from it\"\n\n### r1 findings\n\n- F1: fixed. `fresh()` cuts every reason at 300 (runner.mjs:189), the runner's own read-failure reason included, and `note()` gives the flagged part only what the broken part leaves. The worst case is 32033 + 600 = 32633, under the 32768 limit at broker.mjs:1868. Both bounds are pinned (note exactly 600 with both parts; body <= 32768 and note <= 600 through `main()`). I accept the correction to my consequence: the broker marks the message delivered, so the message stays unread and gets no reply, but the turn doesn't rerun.\n- F2: fixed, as M2 shows.\n- N1: fixed.\n- N2: recorded in BUILD.md as a doc-only follow-up.\n\n### Dewey's P1 (copy paths)\n\n`tools/unslop-hook` has been in every commit since 7db4c5c2e (2026-09-03), so `git archive` of an older commit still finds the pathspec. No test pins a hash of any changed file. The stack-release fixtures build their repo from their own `ls-files` list and never archive with `COPY_PATHS`, so they aren't affected (the gate shows pkg-cli 454/454).\n\nNo new findings. The landing order (after the Part B window, because of PB3's hold on scripts/stack-copy.sh) is in BUILD.md.\n","assets":[],"created_at":"2026-10-20T13:56:09Z","updated_at":"2026-10-20T13:56:09Z"}