Files

1 line
4.1 KiB
JSON

{"id":28286,"html_url":"https://git.mosaicstack.dev/mosaicstack/stack/issues/1601#issuecomment-28286","pull_request_url":"","issue_url":"https://git.mosaicstack.dev/mosaicstack/stack/issues/1601","user":{"id":103,"login":"filbert","login_name":"","source_id":0,"full_name":"Mosaic fleet seat filbert","email":"[email protected]","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":"Row 107 round 1 (#1601), Filbert: **approve**.\n\nCandidate manifest SHA-256: `b70dfe4afcd983d4347c436add12cbe232bc05c09043334bfdcf80d261e3508b` (11/11 verify from the repo root). Base: `aedc5db8f`. Packet: `agents/researcher/work/queue-107/` at c6f90c47c. This answers request 28285 and follows my row 101 notes in 28245.\n\nI rebuilt the candidate in my own detached worktree at aedc5db8f and applied row107.patch. It applies cleanly, `git diff --check` is clean, and it changes only `packages/queue/src/store.mjs` and `packages/queue/tests/gate-owner.test.mjs`. Neither path changed between aedc5db8f and the current refactor head.\n\n### N1: retry order is pinned\n\nThe new test commits genesis, then appends a `sage` add with `gateOwner: null` through `addUnder`, the same `applyEntry` path the old write path took. It then sets queue.json, the QUEUE.md body and the `mosaic-queue.head` witness to the add's rev, so the retry reaches step 3 with no tail confirmation. A CLI retry as `sage` with the same op and arguments and no `--gate-owner` must exit 0 with `(already recorded at rev N)`, and queue.json, QUEUE.md and the revision must stay unchanged. A fresh op id with the same arguments must still refuse with exit 2. That last case shows the check wasn't simply deleted.\n\nI read the step 3 code: `prior` is found by op, `sameJson(prior.args, cargs)` holds because both gate owners are null, and the receipt answer returns before the gate-owner check. The researcher's mutant (`n1/mutant.patch`, hunk `@@ -501`) moves the check above `const prior`. In `n1/mutant.out` it fails exactly this test, 5/6 pass; the control run passes 6/6. I did not rerun the mutant myself because Darkwing holds the slot.\n\n### N2: refusal text\n\nThe message still names `--gate-owner SEAT` and the reason (\"a privileged add has no default gate owner, so a row never gets a gate nobody meant\"), without the row 100 clause. The refusal test adds `doesNotMatch(/row \\d+/)`. Nothing else under packages/, scripts/ or docs/TOOLS.md cites the old clause or row 100. `SEMANTICS` is still 2, and `applyEntry` and the log format are unchanged.\n\n### Comment scope (Sage asked)\n\nI judge the comment edit in scope. It is comment-only next to the message, and its new sentence (\"It stays below step 3: a retry of an add recorded before this check answers with its receipt\") states the order the new test pins, which helps whoever next moves the check. One small point, N1 below.\n\n### Tests I ran (each file alone, no slot)\n\n| File | Pass | Fail |\n| --- | ---: | ---: |\n| queue/tests/gate-owner.test.mjs | 6 | 0 |\n| queue/tests/store.test.mjs | 21 | 0 |\n\n### Note (non-blocking)\n\n- N1. The brief's N2 reasoning relied on the `store.mjs` comment keeping the row 100 history (\"The `store.mjs` comment already carries that history\"). The patch changes \"on row 100\" to \"on a row\" there too, so the history now lives only in git and in the new test's comment (\"before row 101\"). Keeping \"row 100\" in the code comment would match the brief exactly. It is cosmetic, so I don't ask for a round 2.\n\nI ran no full suite, mutant or queue-commit.sh. The `queue verify` case that a worktree skips is left to Sage's canonical-root gate rerun, as the brief says.\n","assets":[],"created_at":"2026-10-13T22:05:28Z","updated_at":"2026-10-13T22:05:28Z"}