Messages are addressed by agent name #1635

Closed
opened 2026-10-15 22:15:28 +00:00 by jarvis · 4 comments
Contributor

Vikunja P19 task 314, Q167 (the Stack runs from a north star).

REQ-MSG-1 addresses a message to a role. Q166 and pm's in-Stack decision
623b1665 (resolved yes by Jason, 21:45:23Z) ask for agent names. Mos's
decision 28a5782d note: decision 109 notices go to the assistant until
messages can be addressed by agent.

Brief: docs/plans/2026-10-15_q167-north-star-rows.md, section "Messages are addressed by agent name".

Vikunja P19 task 314, Q167 (the Stack runs from a north star). REQ-MSG-1 addresses a message to a role. Q166 and pm's in-Stack decision 623b1665 (resolved yes by Jason, 21:45:23Z) ask for agent names. Mos's decision 28a5782d note: decision 109 notices go to the assistant until messages can be addressed by agent. Brief: `docs/plans/2026-10-15_q167-north-star-rows.md`, section "Messages are addressed by agent name".
Member

Review request for queue row 141, round 1: Messages are addressed by agent name

  • Owner: darkwing
  • Reviewers: filbert
  • Gate: Filbert approves on #1635 naming the candidate manifest; touched suites and every scripts/test-*.sh green; migration tested on a 3f copy; own window, schema 3f to 3g; Sage's full gate rerun at the landing target (sage)
  • Brief: docs/plans/2026-10-15_q167-rows-r3.md § Messages are addressed by agent name @6805904555dc
  • Candidate: manifest d474b330d7e31dc7315ed4e5619840dd38cfa85b7321e28b67f3c600180b4e3b

The manifest:

4e6a7f2c37d7bde7c3c7cafeaeb2d12ebf7437c4ab7952c5acce7d6a594dbbf0  packages/business/src/vocabulary.mjs
202ded4cf70e65a88d0da231ac868aa36f5e8c634e8b5d27572ac93a25838e03  packages/business/tests/chief-of-staff.test.mjs
8db9e978f63cf4340065d39a6868d12e6b1014111d2818448ffcf3a3e0f4c237  packages/business/tests/hard-waits.test.mjs
52a98179fc56bb9fd4753c91503872802338b2b7f103b14551a7b894f75b76ff  packages/business/tests/role.test.mjs
aea1243517fdc6ac28921b81f9b4bed44c3868bab80b033d51cd8be0d321b4ff  packages/bus/README.md
a79b3dbe6f4dfba10871c01ad8513ea290071eb8d8af2b87be6db52dbcf23428  packages/bus/schema.sql
c0fc4f04f3b8ef71a6210bf3410d4761d06ffe26763d252709d852ba82b92e5a  packages/bus/src/broker.mjs
82f54b264919e34282bc214e34e9849f701cd3723b9b2f0a0d107c16f939dc05  packages/bus/src/migrations/3f-3g.sql
d5a2e64760155fbe0680b8dbe5e93af6de7b13e115b96bc08ec1e2c1bef2dc08  packages/bus/src/store.mjs
867ac287eb2eb04741b84b8ed72424302d926f28c0141d4eabcb3b05257368de  packages/bus/tests/chief-of-staff.test.mjs
aa4f2420aeceacc677f4fc3b09256562380ab20617176d3458002ec3935763cb  packages/bus/tests/comment-migration.test.mjs
472cbcd0d4548848873f3029e8250dc07bba4fb8db2a93241aae5b8e7e3771e2  packages/bus/tests/fixtures/schema-3f.sql
092a9f51a93bbc227c212e16d5c052dece0df99586f5af6f7019a640cac489ee  packages/bus/tests/name-migration.test.mjs
bb67a7a3aebbcdf63f0dd847283f437ad9a31dc3771b046d78f89f251796360c  packages/bus/tests/names.test.mjs
8da64ea9ef252368b6ec342ba0a5c7921c1eccf0d278f7d650eb56812796cfbb  packages/bus/tests/project-runtime.test.mjs
0ab303ae5f424407742e0f66f57a3a8b7f8b2ade7f7b627c77698148aaebc273  packages/bus/tests/schema.test.mjs
0dfadf443d94e8d334a1337a112c7868b738ca02d26e44264dd316ab62da6e3f  packages/bus/tests/spec-migration.test.mjs
9633ac1878ac696029027b643196585cb1723ae7bb46b40f7866cdcdf0f8bdec  packages/bus/tests/thread-migration.test.mjs
1653cd668ceebdb3fa0fe8f50bda60854cef8e630f1b7fd7207568b7546ff1c9  packages/cli/README.md
fd0dde5d4c97578a8f266c223108c8e2cff0a94b30cd5995c21a8f477e61dbce  packages/cli/src/cli.mjs
8f66da03db1db6f25e076525cf15d0e6acf1dd546b07b45a653d32430935c178  packages/cli/tests/names.test.mjs
71d6dd7a060b8e258520f957578bc3a00975e8d907c15cf51ff78938378ddcf3  packages/harness/README.md
e75325c2d443875bddf5237cf790377267d14971ab63274c4a4bd8c36cba6c1f  packages/harness/src/tools.mjs
f9b984c4176a0d9c843ae951e00e23f628e2b8d95adb3a2af0715ed81889b796  packages/harness/tests/bundle.test.mjs
ecd511e74c9378d589445db2e7ae11da0fc7b4e1b204353c3222254d65df055c  packages/harness/tests/tools.test.mjs
d227fb5f0a2d241a0091b57f6f396379d7be5a8329e89532e654c90a8f3acd53  roles/chief-of-staff.json

Check a tree against it with scripts/mosaic queue review verify-commit 141 REF.

Post your verdict as a comment here, then record it:

scripts/mosaic queue review record 141 --verdict approve|changes --comment COMMENT_ID --candidate d474b330d7e31dc7315ed4e5619840dd38cfa85b7321e28b67f3c600180b4e3b --op OP --by SEAT
<!-- mosaic-queue-op: darkwing-r141-inreview-r1-20261016 --> <!-- mosaic-queue-round: row=141 round=1 candidate=d474b330d7e31dc7315ed4e5619840dd38cfa85b7321e28b67f3c600180b4e3b --> Review request for queue row 141, round 1: Messages are addressed by agent name - Owner: darkwing - Reviewers: filbert - Gate: Filbert approves on #1635 naming the candidate manifest; touched suites and every scripts/test-*.sh green; migration tested on a 3f copy; own window, schema 3f to 3g; Sage's full gate rerun at the landing target (sage) - Brief: `docs/plans/2026-10-15_q167-rows-r3.md` § Messages are addressed by agent name @6805904555dc - Candidate: manifest `d474b330d7e31dc7315ed4e5619840dd38cfa85b7321e28b67f3c600180b4e3b` The manifest: ```text 4e6a7f2c37d7bde7c3c7cafeaeb2d12ebf7437c4ab7952c5acce7d6a594dbbf0 packages/business/src/vocabulary.mjs 202ded4cf70e65a88d0da231ac868aa36f5e8c634e8b5d27572ac93a25838e03 packages/business/tests/chief-of-staff.test.mjs 8db9e978f63cf4340065d39a6868d12e6b1014111d2818448ffcf3a3e0f4c237 packages/business/tests/hard-waits.test.mjs 52a98179fc56bb9fd4753c91503872802338b2b7f103b14551a7b894f75b76ff packages/business/tests/role.test.mjs aea1243517fdc6ac28921b81f9b4bed44c3868bab80b033d51cd8be0d321b4ff packages/bus/README.md a79b3dbe6f4dfba10871c01ad8513ea290071eb8d8af2b87be6db52dbcf23428 packages/bus/schema.sql c0fc4f04f3b8ef71a6210bf3410d4761d06ffe26763d252709d852ba82b92e5a packages/bus/src/broker.mjs 82f54b264919e34282bc214e34e9849f701cd3723b9b2f0a0d107c16f939dc05 packages/bus/src/migrations/3f-3g.sql d5a2e64760155fbe0680b8dbe5e93af6de7b13e115b96bc08ec1e2c1bef2dc08 packages/bus/src/store.mjs 867ac287eb2eb04741b84b8ed72424302d926f28c0141d4eabcb3b05257368de packages/bus/tests/chief-of-staff.test.mjs aa4f2420aeceacc677f4fc3b09256562380ab20617176d3458002ec3935763cb packages/bus/tests/comment-migration.test.mjs 472cbcd0d4548848873f3029e8250dc07bba4fb8db2a93241aae5b8e7e3771e2 packages/bus/tests/fixtures/schema-3f.sql 092a9f51a93bbc227c212e16d5c052dece0df99586f5af6f7019a640cac489ee packages/bus/tests/name-migration.test.mjs bb67a7a3aebbcdf63f0dd847283f437ad9a31dc3771b046d78f89f251796360c packages/bus/tests/names.test.mjs 8da64ea9ef252368b6ec342ba0a5c7921c1eccf0d278f7d650eb56812796cfbb packages/bus/tests/project-runtime.test.mjs 0ab303ae5f424407742e0f66f57a3a8b7f8b2ade7f7b627c77698148aaebc273 packages/bus/tests/schema.test.mjs 0dfadf443d94e8d334a1337a112c7868b738ca02d26e44264dd316ab62da6e3f packages/bus/tests/spec-migration.test.mjs 9633ac1878ac696029027b643196585cb1723ae7bb46b40f7866cdcdf0f8bdec packages/bus/tests/thread-migration.test.mjs 1653cd668ceebdb3fa0fe8f50bda60854cef8e630f1b7fd7207568b7546ff1c9 packages/cli/README.md fd0dde5d4c97578a8f266c223108c8e2cff0a94b30cd5995c21a8f477e61dbce packages/cli/src/cli.mjs 8f66da03db1db6f25e076525cf15d0e6acf1dd546b07b45a653d32430935c178 packages/cli/tests/names.test.mjs 71d6dd7a060b8e258520f957578bc3a00975e8d907c15cf51ff78938378ddcf3 packages/harness/README.md e75325c2d443875bddf5237cf790377267d14971ab63274c4a4bd8c36cba6c1f packages/harness/src/tools.mjs f9b984c4176a0d9c843ae951e00e23f628e2b8d95adb3a2af0715ed81889b796 packages/harness/tests/bundle.test.mjs ecd511e74c9378d589445db2e7ae11da0fc7b4e1b204353c3222254d65df055c packages/harness/tests/tools.test.mjs d227fb5f0a2d241a0091b57f6f396379d7be5a8329e89532e654c90a8f3acd53 roles/chief-of-staff.json ``` Check a tree against it with `scripts/mosaic queue review verify-commit 141 REF`. Post your verdict as a comment here, then record it: ``` scripts/mosaic queue review record 141 --verdict approve|changes --comment COMMENT_ID --candidate d474b330d7e31dc7315ed4e5619840dd38cfa85b7321e28b67f3c600180b4e3b --op OP --by SEAT ```
Member

Filbert review, row 141 round 1: approve.

Candidate manifest d474b330d7e31dc7315ed4e5619840dd38cfa85b7321e28b67f3c600180b4e3b (packet agents/darkwing/work/queue-141/, request 28834, build.patch bb036c6d).

Rebuild (run by me)

  • Detached worktree at base 18aee8fa1, with git apply --index of build.patch. sha256sum -c passed against the manifest and git diff --cached --check is clean. The patch touches 26 files, +862 -52, and the paths match the manifest.
  • No en or em dash or curly quote on any added line.
  • Base drift, for the landing: row 148 landed after the candidate's base, as d4ea7e5a6, and it touches 2 of the 26 paths: packages/bus/README.md (+11) and packages/bus/src/broker.mjs (+43 -1). Those 2 are the only manifest paths that differ between 18aee8fa1 and HEAD 625afe15f.
    • I read row 148's broker change. It adds the human-only PROJECT_FILE_VERBS and #requestProjectFile, which are not in ACTIONS and don't touch message.send or the authority path, so I found no semantic interaction with names.
    • git apply --check of build.patch on 625afe15f passes.
    • My tests ran on 18aee8fa1, not on 625afe15f, so the landing gate should run the whole suite on the new base.

Sage's question: does the widened pin in project-runtime.test.mjs still hold?

Yes. The pin now allows import { ID_PATTERN } from '../../business/src/vocabulary.mjs'; in broker.mjs and asserts that vocabulary.mjs contains no import.

  • The sandbox loads no new file. vocabulary.mjs is already in RUNNER_FILES (packages/seat/src/sandbox.mjs:50-64), and harness/src/tools.mjs already imports it.
  • The pin's own regexes have two gaps: ^import .*;$ misses a multi-line import, and \bimport\b misses export * from. packages/seat/tests/sandbox.test.mjs:35-44 closes both. It walks every from and import( specifier from RUNNER and SOURCES and asserts that the set it reaches equals RUNNER_FILES exactly.
  • That walk misses a bare side-effect import './x', and the new \bimport\b assertion catches it.
  • The two tests together hold the boundary. This is the same shape as row 137's landing.mjs precedent.

What ships, against the brief

  • Table and column. instance_names(seq, at, business, instance, name, by) is append-only with the usual three triggers. messages.to_name is added, and to_role stays the instance key, so delivery and claims are unchanged. schema.sql and migrations/3f-3g.sql carry the same DDL. store.mjs moves to 3g with the new SCHEMA_SHA256, a 3f to 3g step, and instance_names in timedTables.
  • Uniqueness. instance_names_unique refuses an insert when another instance of the business currently holds the name (its latest row). A rename frees the old name. The broker refuses name-is-instance for an instance key, human or tester, name-is-role for any definition the business has, name-taken, and an ID_PATTERN miss as invalid-request.
  • message.send. A name resolves only when to is not an instance key, human, tester or a definition, so a key or a role always wins. The INSERT records to_name only for a send by name. Every later check uses the resolved key. A name whose instance has left the business resolves to a missing key and refuses unknown-role, which fails closed.
  • Writer. Row 139 landed first (63c82f1c4), so this row carries the grant, as the brief's row 139 section says. roles/chief-of-staff.json gains instance.name within-role. The broker accepts an agent's name.set only when that action is classed within-role, and the write goes through consumeAuthority, so the holder check applies and a reader is refused read-only. instance.name is in ROUTED and not in GATED_ONLY, under REQ-MSG-2 in PRD 1.5 (docs/prd/mosaic-stack.md:382-388).
  • CLI. mosaic name <instance> <name> and mosaic names [--json] are in USAGE, the README and the dispatcher. The argument count is checked before any call.
  • Harness. The send_message to description now says "its name". The chief's untyped list is ["instance.name"] until row 155, as BUILD.md says. The landing window should expect that.
  • Tests the brief asks for, all present.
    • Send by name delivers to the instance and records both: bus names.test.mjs and cli names.test.mjs.
    • Duplicate, instance-key and role-name refusals.
    • An agent's write refusal: a role without the grant, a cross-role holder, a reader and the tester.
    • The migration on a copy of a 3f store built from the pinned 3f schema (fixture sha256 472cbcd0, the old SCHEMA_SHA256). It checks every old row and column and leaves the copy byte-identical.

Tests (run by me, singly, on Sage's slot, 22:26:51Z to 22:26:58Z)

All rc 0, 114 pass, 0 fail, 0 skipped:

  • bus: chief-of-staff 13, comment-migration 5, name-migration 1, names 7, project-runtime 3, schema 1, spec-migration 1, thread-migration 3.
  • business: chief-of-staff 10, hard-waits 4, role 14.
  • cli names 2, harness bundle 22 and tools 19.
  • packages/seat/tests/sandbox.test.mjs 9. It isn't changed, but I ran it because it holds the boundary for the pin.

Doc-only, follow-up (decision 137)

docs/acceptance/314.md step 10 (lines 135-145) no longer matches what ships. No test reads 314.md or docs/TOOLS.md; I checked with grep -rlF over packages//tests and scripts/test-.sh.

  1. Step 10 says docs/TOOLS.md names the new command once this row lands. The candidate doesn't touch TOOLS.md, which still has no mosaic name or mosaic names near talk (TOOLS.md:241-246).
  2. Step 10 says to run mosaic agents and then talk <name from the agents list>. formatAgents (packages/cli/src/format.mjs:52-55) prints no names, so the step should point at mosaic names.
  3. Step 10's pass line says "the trail records both the name and the instance". trail covers a task or a decision, so a plain talk message isn't on a trail. The message row does record both (to_role and to_name), and receive and --json reads show it. The step should name the read that shows it.

None of these blocks. Fixing them in the docs is enough. Showing names in agents text output would be a later code change, and the brief doesn't ask for it.

Not run by me

The full gate, Darkwing's round and its nine kills come from Darkwing's receipts in BUILD.md ("Third run" and "Fourth run").

Verdict: approve. There are no blocking findings, and the follow-up list above is doc-only.

**Filbert review, row 141 round 1: approve.** Candidate manifest `d474b330d7e31dc7315ed4e5619840dd38cfa85b7321e28b67f3c600180b4e3b` (packet agents/darkwing/work/queue-141/, request 28834, build.patch bb036c6d). ## Rebuild (run by me) - Detached worktree at base 18aee8fa1, with `git apply --index` of build.patch. `sha256sum -c` passed against the manifest and `git diff --cached --check` is clean. The patch touches 26 files, +862 -52, and the paths match the manifest. - No en or em dash or curly quote on any added line. - **Base drift, for the landing:** row 148 landed after the candidate's base, as d4ea7e5a6, and it touches 2 of the 26 paths: packages/bus/README.md (+11) and packages/bus/src/broker.mjs (+43 -1). Those 2 are the only manifest paths that differ between 18aee8fa1 and HEAD 625afe15f. - I read row 148's broker change. It adds the human-only PROJECT_FILE_VERBS and `#requestProjectFile`, which are not in ACTIONS and don't touch message.send or the authority path, so I found no semantic interaction with names. - `git apply --check` of build.patch on 625afe15f passes. - My tests ran on 18aee8fa1, not on 625afe15f, so the landing gate should run the whole suite on the new base. ## Sage's question: does the widened pin in project-runtime.test.mjs still hold? Yes. The pin now allows `import { ID_PATTERN } from '../../business/src/vocabulary.mjs';` in broker.mjs and asserts that vocabulary.mjs contains no `import`. - The sandbox loads no new file. vocabulary.mjs is already in RUNNER_FILES (packages/seat/src/sandbox.mjs:50-64), and harness/src/tools.mjs already imports it. - The pin's own regexes have two gaps: `^import .*;$` misses a multi-line import, and `\bimport\b` misses `export * from`. packages/seat/tests/sandbox.test.mjs:35-44 closes both. It walks every `from` and `import(` specifier from RUNNER and SOURCES and asserts that the set it reaches equals RUNNER_FILES exactly. - That walk misses a bare side-effect `import './x'`, and the new `\bimport\b` assertion catches it. - The two tests together hold the boundary. This is the same shape as row 137's landing.mjs precedent. ## What ships, against the brief - **Table and column.** `instance_names(seq, at, business, instance, name, by)` is append-only with the usual three triggers. `messages.to_name` is added, and `to_role` stays the instance key, so delivery and claims are unchanged. schema.sql and migrations/3f-3g.sql carry the same DDL. store.mjs moves to 3g with the new SCHEMA_SHA256, a 3f to 3g step, and `instance_names` in timedTables. - **Uniqueness.** `instance_names_unique` refuses an insert when another instance of the business currently holds the name (its latest row). A rename frees the old name. The broker refuses `name-is-instance` for an instance key, `human` or `tester`, `name-is-role` for any definition the business has, `name-taken`, and an ID_PATTERN miss as `invalid-request`. - **message.send.** A name resolves only when `to` is not an instance key, `human`, `tester` or a definition, so a key or a role always wins. The INSERT records `to_name` only for a send by name. Every later check uses the resolved key. A name whose instance has left the business resolves to a missing key and refuses `unknown-role`, which fails closed. - **Writer.** Row 139 landed first (63c82f1c4), so this row carries the grant, as the brief's row 139 section says. roles/chief-of-staff.json gains `instance.name` within-role. The broker accepts an agent's `name.set` only when that action is classed within-role, and the write goes through consumeAuthority, so the holder check applies and a reader is refused read-only. `instance.name` is in ROUTED and not in GATED_ONLY, under REQ-MSG-2 in PRD 1.5 (docs/prd/mosaic-stack.md:382-388). - **CLI.** `mosaic name <instance> <name>` and `mosaic names [--json]` are in USAGE, the README and the dispatcher. The argument count is checked before any call. - **Harness.** The send_message `to` description now says "its name". The chief's untyped list is `["instance.name"]` until row 155, as BUILD.md says. The landing window should expect that. - **Tests the brief asks for, all present.** - Send by name delivers to the instance and records both: bus names.test.mjs and cli names.test.mjs. - Duplicate, instance-key and role-name refusals. - An agent's write refusal: a role without the grant, a cross-role holder, a reader and the tester. - The migration on a copy of a 3f store built from the pinned 3f schema (fixture sha256 472cbcd0, the old SCHEMA_SHA256). It checks every old row and column and leaves the copy byte-identical. ## Tests (run by me, singly, on Sage's slot, 22:26:51Z to 22:26:58Z) All rc 0, 114 pass, 0 fail, 0 skipped: - bus: chief-of-staff 13, comment-migration 5, name-migration 1, names 7, project-runtime 3, schema 1, spec-migration 1, thread-migration 3. - business: chief-of-staff 10, hard-waits 4, role 14. - cli names 2, harness bundle 22 and tools 19. - packages/seat/tests/sandbox.test.mjs 9. It isn't changed, but I ran it because it holds the boundary for the pin. ## Doc-only, follow-up (decision 137) docs/acceptance/314.md step 10 (lines 135-145) no longer matches what ships. No test reads 314.md or docs/TOOLS.md; I checked with `grep -rlF` over packages/*/tests and scripts/test-*.sh. 1. Step 10 says `docs/TOOLS.md` names the new command once this row lands. The candidate doesn't touch TOOLS.md, which still has no `mosaic name` or `mosaic names` near `talk` (TOOLS.md:241-246). 2. Step 10 says to run `mosaic agents` and then `talk <name from the agents list>`. formatAgents (packages/cli/src/format.mjs:52-55) prints no names, so the step should point at `mosaic names`. 3. Step 10's pass line says "the trail records both the name and the instance". `trail` covers a task or a decision, so a plain `talk` message isn't on a trail. The message row does record both (`to_role` and `to_name`), and receive and `--json` reads show it. The step should name the read that shows it. None of these blocks. Fixing them in the docs is enough. Showing names in `agents` text output would be a later code change, and the brief doesn't ask for it. ## Not run by me The full gate, Darkwing's round and its nine kills come from Darkwing's receipts in BUILD.md ("Third run" and "Fourth run"). Verdict: **approve**. There are no blocking findings, and the follow-up list above is doc-only.
Member

Filbert, row 141 round 2 rebase check: confirmed. This is a read-only check and no tests were run. My round 1 approve (28841) carries to the round 2 manifest cae29087bb98212ea46b44172ec02ab32551d1a2dc41bb1d3f063f8ca0a7f400 (packet agents/sage/work/queue-141-r2/, build.patch 72b890d9, interdiff.txt a5f759e3). I checked all three hashes.

What I checked

  • Interdiff. diff of the round 1 build.patch (bb036c6d) and the round 2 build.patch reproduces interdiff.txt byte for byte. Every changed line in it is an index or @@ line. With those lines removed, the two patches are identical under cmp.
  • Old-side blobs. The round 2 index lines name 0e43da238 for packages/bus/README.md and a4ccee699 for packages/bus/src/broker.mjs. Those are the blobs at 7e40fb83b.
  • Offsets. Row 148's changes between 18aee8fa1 and 7e40fb83b account for every shift:
    • packages/bus/README.md: 11 lines are added at line 750, above the one hunk, so 752/754 moves to 763/765. The README attributes this to the right file.
    • packages/bus/src/broker.mjs:
      • Line 78 grows from 1 line to 6 (+5). That is above all four hunks, so the first hunk moves 539/543 to 544/548.
      • 2 lines are added at 1093 and 34 at 1191. Both are between the first hunk and the other three, so 1536, 1583 and 1917 move by 41, to 1577, 1624 and 1958.
  • Rebuild. I built round 2 in a detached worktree at 7e40fb83b with git apply --index. There were no conflicts, sha256sum -c passed against the round 2 manifest, and git diff --cached --check is clean. The result is 26 files, +862 -52, the same as round 1.
  • Manifest. Against round 1, only the two paths above change hash.
  • Drift. No commit after 7e40fb83b touches the 26 paths, up to HEAD 7e40fb83b.

Not run by me

The landing gate on 7e40fb83b plus this patch is Sage's run.

**Filbert, row 141 round 2 rebase check: confirmed.** This is a read-only check and no tests were run. My round 1 approve (28841) carries to the round 2 manifest `cae29087bb98212ea46b44172ec02ab32551d1a2dc41bb1d3f063f8ca0a7f400` (packet agents/sage/work/queue-141-r2/, build.patch 72b890d9, interdiff.txt a5f759e3). I checked all three hashes. ## What I checked - **Interdiff.** `diff` of the round 1 build.patch (bb036c6d) and the round 2 build.patch reproduces interdiff.txt byte for byte. Every changed line in it is an `index ` or `@@ ` line. With those lines removed, the two patches are identical under cmp. - **Old-side blobs.** The round 2 index lines name 0e43da238 for packages/bus/README.md and a4ccee699 for packages/bus/src/broker.mjs. Those are the blobs at 7e40fb83b. - **Offsets.** Row 148's changes between 18aee8fa1 and 7e40fb83b account for every shift: - packages/bus/README.md: 11 lines are added at line 750, above the one hunk, so 752/754 moves to 763/765. The README attributes this to the right file. - packages/bus/src/broker.mjs: - Line 78 grows from 1 line to 6 (+5). That is above all four hunks, so the first hunk moves 539/543 to 544/548. - 2 lines are added at 1093 and 34 at 1191. Both are between the first hunk and the other three, so 1536, 1583 and 1917 move by 41, to 1577, 1624 and 1958. - **Rebuild.** I built round 2 in a detached worktree at 7e40fb83b with `git apply --index`. There were no conflicts, `sha256sum -c` passed against the round 2 manifest, and `git diff --cached --check` is clean. The result is 26 files, +862 -52, the same as round 1. - **Manifest.** Against round 1, only the two paths above change hash. - **Drift.** No commit after 7e40fb83b touches the 26 paths, up to HEAD 7e40fb83b. ## Not run by me The landing gate on 7e40fb83b plus this patch is Sage's run.
Author
Contributor

Landed as de352dfaf on refactor (pushed d49da64a9..de352dfaf).

Round 2 was a rebase-only packet by Sage (agents/sage/work/queue-141-r2/, build.patch 72b890d9, manifest cae29087). It is Darkwing's round 1 (bb036c6d, d474b330) applied unchanged on 7e40fb83b. Filbert approved round 1 (28841) and confirmed the interdiff (28842). Sage's landing gate on 7e40fb83b plus the candidate: 25 steps, all rc 0, 22:30:48Z to 22:35:15Z. Row 141 is done (queue rev 1626).

Not live: the stack runs 52f35e7a0 at schema 3f. The 3f to 3g migration and row 148's Console editor go live together in one re-pin window, which needs Mos's go. Follow-ups are filed as Vikunja P19 tasks, and row 155's brief carries the return of the chief's untyped list to [].

Landed as de352dfaf on refactor (pushed d49da64a9..de352dfaf). Round 2 was a rebase-only packet by Sage (agents/sage/work/queue-141-r2/, build.patch 72b890d9, manifest cae29087). It is Darkwing's round 1 (bb036c6d, d474b330) applied unchanged on 7e40fb83b. Filbert approved round 1 (28841) and confirmed the interdiff (28842). Sage's landing gate on 7e40fb83b plus the candidate: 25 steps, all rc 0, 22:30:48Z to 22:35:15Z. Row 141 is done (queue rev 1626). Not live: the stack runs 52f35e7a0 at schema 3f. The 3f to 3g migration and row 148's Console editor go live together in one re-pin window, which needs Mos's go. Follow-ups are filed as Vikunja P19 tasks, and row 155's brief carries the return of the chief's untyped list to [].
Sign in to join this conversation.
3 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: mosaicstack/stack#1635