Files go through the store: object-store links, node-files upload/download, a document converter, and brother printing a key, a path on any machine or a web link (design 60 F3, ADR 0468)
#417
Merged
mesh-toolsmerged 20 commits from feat/files-through-the-store into main2026-10-21 16:31:23 +00:00
Design 60 milestone F3, building ADR 0468 (as changed by ADR 0479 §5, whose parts are not here). Member of the delivery group feat/files-through-the-store with mesh-controller #424 (mesh-sdk d4deecdb, issue 1718): mesh-files' new node-files verbs need that controller, and that controller needs this mesh-files.
minio: a link key per bucket limited to get and put (issue 1594); object-store.link in a Go bundle, signed with that key for the consumer and its shares, seat: shares matched through mesh-controller.seats; minio_presigned_url retired (issue 1516).
mesh-files: node-files.upload and download by short links, secret places refused before anything is sent, 25 s bound (issue 1597).
only-office: seat document-converter, verb convert queued to the converter process that alone holds the JWT and posts to the document server's /converter (issues 1595, 1596).
brother: the scan folder filed from the store by a link (issue 1601); printer.print takes exactly one of object, path with node, url or ask, answers within 25 s, checks the printer's document-format-supported (issue 1598); a URL fetched bounded and never inside the mesh (issue 1599); non-PDF documents converted first (issue 1600).
Every issue's acceptance criteria are on the issue, each tested at its level and seen failing first. Review: three rounds (round 1: every verb answers within 25 s since the tool runner cuts calls at 30 s; round 3: three data races the group's check found under -race, fixed by 6cf51173 and ad85a979; every suite passes -race three times). The integration tests run in this group's check, since no try composes the two heads.
Delivery: minio and only-office on novox (minio's data backed up first), mesh-files on ace, g14, novox and shanks, brother on shanks. Live proofs after delivery: a .docx on g14 printed by path, a PDF and an HTML page by URL, a glass scan in the scan folder by a link.
Design 60 milestone F3, building ADR 0468 (as changed by ADR 0479 §5, whose parts are not here). Member of the delivery group feat/files-through-the-store with mesh-controller #424 (mesh-sdk d4deecdb, issue 1718): mesh-files' new node-files verbs need that controller, and that controller needs this mesh-files.
- minio: a link key per bucket limited to get and put (issue 1594); object-store.link in a Go bundle, signed with that key for the consumer and its shares, seat:<s> shares matched through mesh-controller.seats; minio_presigned_url retired (issue 1516).
- mesh-files: node-files.upload and download by short links, secret places refused before anything is sent, 25 s bound (issue 1597).
- only-office: seat document-converter, verb convert queued to the converter process that alone holds the JWT and posts to the document server's /converter (issues 1595, 1596).
- brother: the scan folder filed from the store by a link (issue 1601); printer.print takes exactly one of object, path with node, url or ask, answers within 25 s, checks the printer's document-format-supported (issue 1598); a URL fetched bounded and never inside the mesh (issue 1599); non-PDF documents converted first (issue 1600).
Every issue's acceptance criteria are on the issue, each tested at its level and seen failing first. Review: three rounds (round 1: every verb answers within 25 s since the tool runner cuts calls at 30 s; round 3: three data races the group's check found under -race, fixed by 6cf51173 and ad85a979; every suite passes -race three times). The integration tests run in this group's check, since no try composes the two heads.
Delivery: minio and only-office on novox (minio's data backed up first), mesh-files on ace, g14, novox and shanks, brother on shanks. Live proofs after delivery: a .docx on g14 printed by path, a PDF and an HTML page by URL, a glass scan in the scan folder by a link.
Reviewed-by: review-fts@shanks at 6cf51173d586fc8fb7fc1188d7a990f2ca835531
mesh/merge-gate checking again: rejected at 16:52 only because the group sibling mesh-controller#424 (227c86eb) no longer merged into main; the sibling's n…
mesh/repo-check checking again: rejected at 16:52 only because the group sibling mesh-controller#424 (227c86eb) no longer merged into main; the sibling's n…
Deliverynovox/mesh-catalog@6cf51173d586 — superseded since 2026-10-21T16:51:19Z
Covered: delivered after its walk was superseded: the walk plan-1792597220088006936, which took its walk plan-1792600286186319151 over, ended done
Delivery plan — builds brother, mesh-files, minio, only-office → ace, g14, novox, shanks; no bus step; 1 wait(s) for a person
tier 0: brother, mesh-files, minio, only-office
ace: receives mesh-files
g14: receives mesh-files
novox: receives mesh-files, only-office; waits for a person: minio
shanks: receives brother, mesh-files
minio waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends
minio provides s3-bucket: its consumers are sent again after it
minio keeps data (ADR 0233): what it holds is backed up before it moves
only-office keeps data (ADR 0233): what it holds is backed up before it moves
grants step: if this changes what the bus's user list says (a new tool, subject or user), novox is sent that list alone, every build there kept, before brother, mesh-files is judged on its first machine
composed together: pass — every machine composes with the change as it did without (4 of 4 compose)
Transitions
2026-10-21 16:05 (new) → proposed (announced): novox/mesh-catalog#417's head announced
2026-10-21 16:06 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
2026-10-21 16:06 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-21 16:51 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
2026-10-21 16:51 published → delivering (go): its walk started: let go by this owner in its group's order, by a person, or on the controller's own path — not a failed walk that carried a later commit for it, after which it waits for a walk of its own commit
2026-10-21 16:51 delivering → superseded (superseded): its walk was superseded and names no walk that took it over: a walk that took it over answers its merge, and it follows that walk (novox/hq ADR 0276)
The commit's note under refs/notes/mesh-plan keeps every transition: git log --notes=mesh-plan.
<!-- mesh-delivery:view -->
**Delivery** `novox/mesh-catalog@6cf51173d586` — **superseded** since 2026-10-21T16:51:19Z
**Covered**: delivered after its walk was superseded: the walk plan-1792597220088006936, which took its walk plan-1792600286186319151 over, ended done
**Delivery plan** — builds brother, mesh-files, minio, only-office → ace, g14, novox, shanks; no bus step; 1 wait(s) for a person
- tier 0: brother, mesh-files, minio, only-office
- ace: receives mesh-files
- g14: receives mesh-files
- novox: receives mesh-files, only-office; waits for a person: minio
- shanks: receives brother, mesh-files
- minio waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends
- minio provides s3-bucket: its consumers are sent again after it
- minio keeps data (ADR 0233): what it holds is backed up before it moves
- only-office keeps data (ADR 0233): what it holds is backed up before it moves
- grants step: if this changes what the bus's user list says (a new tool, subject or user), novox is sent that list alone, every build there kept, before brother, mesh-files is judged on its first machine
**Group** `feat/files-through-the-store`: novox/mesh-catalog@6cf51173d586, novox/mesh-controller@550cf37d7109
- composed together: pass — every machine composes with the change as it did without (4 of 4 compose)
**Transitions**
- 2026-10-21 16:05 (new) → proposed (announced): novox/mesh-catalog#417's head announced
- 2026-10-21 16:06 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
- 2026-10-21 16:06 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-21 16:51 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
- 2026-10-21 16:51 published → delivering (go): its walk started: let go by this owner in its group's order, by a person, or on the controller's own path — not a failed walk that carried a later commit for it, after which it waits for a walk of its own commit
- 2026-10-21 16:51 delivering → superseded (superseded): its walk was superseded and names no walk that took it over: a walk that took it over answers its merge, and it follows that walk (novox/hq ADR 0276)
The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
Merge check at a2deae03
Judged: head a2deae03b712 merged into trunk 90ecba4e50a3
Siblings read beside it: novox/mesh-controller#424227c86ebb388 merged onto 12752911b644 (main)
mesh/merge-gate: FAIL — the sibling novox/mesh-controller#424 (head 227c86ebb388) does not merge cleanly into its base main 12752911b644: in conflict go.mod, go.sum, testdata/beside/CAPTURED, vendor/modules.txt
mesh/repo-check: FAIL — the sibling novox/mesh-controller#424 (head 227c86ebb388) does not merge cleanly into its base main 12752911b644: in conflict go.mod, go.sum, testdata/beside/CAPTURED, vendor/modules.txt
Delivery plan — builds brother, mesh-files, minio, only-office → ace, g14, novox, shanks; no bus step; 1 wait(s) for a person
tier 0: brother, mesh-files, minio, only-office
ace: receives mesh-files
g14: receives mesh-files
novox: receives mesh-files, only-office; waits for a person: minio
shanks: receives brother, mesh-files
minio waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends
minio provides s3-bucket: its consumers are sent again after it
minio keeps data (ADR 0233): what it holds is backed up before it moves
only-office keeps data (ADR 0233): what it holds is backed up before it moves
grants step: if this changes what the bus's user list says (a new tool, subject or user), novox is sent that list alone, every build there kept, before brother, mesh-files is judged on its first machine
Run by the build seat on ace as build-1792593798722564984 (builds --log build-1792593798722564984).
the sibling novox/mesh-controller#424 (head 227c86ebb388) does not merge cleanly into its base main 12752911b644: in conflict go.mod, go.sum, testdata/beside/CAPTURED, vendor/modules.txt
**Merge check** at `a2deae03`
Judged: head `a2deae03b712` merged into trunk `90ecba4e50a3`
Siblings read beside it: novox/mesh-controller#424 `227c86ebb388` merged onto `12752911b644` (main)
- `mesh/merge-gate`: **FAIL** — the sibling novox/mesh-controller#424 (head 227c86ebb388) does not merge cleanly into its base main 12752911b644: in conflict go.mod, go.sum, testdata/beside/CAPTURED, vendor/modules.txt
- `mesh/repo-check`: **FAIL** — the sibling novox/mesh-controller#424 (head 227c86ebb388) does not merge cleanly into its base main 12752911b644: in conflict go.mod, go.sum, testdata/beside/CAPTURED, vendor/modules.txt
**Delivery plan** — builds brother, mesh-files, minio, only-office → ace, g14, novox, shanks; no bus step; 1 wait(s) for a person
- tier 0: brother, mesh-files, minio, only-office
- ace: receives mesh-files
- g14: receives mesh-files
- novox: receives mesh-files, only-office; waits for a person: minio
- shanks: receives brother, mesh-files
- minio waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends
- minio provides s3-bucket: its consumers are sent again after it
- minio keeps data (ADR 0233): what it holds is backed up before it moves
- only-office keeps data (ADR 0233): what it holds is backed up before it moves
- grants step: if this changes what the bus's user list says (a new tool, subject or user), novox is sent that list alone, every build there kept, before brother, mesh-files is judged on its first machine
- read by no module's build: modules/brother/README.md, modules/brother/cmd/brother/convert_test.go, modules/brother/cmd/brother/documents_test.go, modules/brother/cmd/brother/fetch_test.go, modules/brother/cmd/brother/manifest_test.go, modules/brother/cmd/brother/objects_test.go, modules/brother/cmd/brother/printlink_test.go, modules/brother/cmd/brother/rig_test.go, modules/brother/cmd/brother/scanlink_test.go, modules/brother/cmd/brother/service_test.go, modules/mesh-files/cmd/mesh-files/manifest_test.go, modules/mesh-files/cmd/mesh-files/transfer_test.go, modules/only-office/cmd/only-office/convert.go, modules/only-office/cmd/only-office/convert_test.go, modules/only-office/cmd/only-office/converter.go, modules/only-office/cmd/only-office/converter_integration_test.go, modules/only-office/cmd/only-office/converter_test.go, modules/only-office/cmd/only-office/main.go, modules/only-office/go.mod, modules/only-office/go.sum
Run by the build seat on ace as `build-1792593798722564984` (`builds --log build-1792593798722564984`).
```
the sibling novox/mesh-controller#424 (head 227c86ebb388) does not merge cleanly into its base main 12752911b644: in conflict go.mod, go.sum, testdata/beside/CAPTURED, vendor/modules.txt
```
mesh/repo-check head 6cf51173d586 merged into trunk b2f5ebb27dbf beside mesh-controller#424@550cf37d — pass: its merge-check.sh passed, each part in its to…
mesh/merge-gate head 6cf51173d586 merged into trunk b2f5ebb27dbf — pass: group feat/files-through-the-store composed: every machine composes with the chang…
mesh/delivery superseded: its walk was superseded and names no walk that took it over: a walk that took it over answers its merge, and it follows that wa…
mesh/delivery-group group feat/files-through-the-store stopped: superseded, not carried by a later delivery: novox/mesh-catalog@6cf51173d586, novox/mesh-contro…
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Design 60 milestone F3, building ADR 0468 (as changed by ADR 0479 §5, whose parts are not here). Member of the delivery group feat/files-through-the-store with mesh-controller #424 (mesh-sdk d4deecdb, issue 1718): mesh-files' new node-files verbs need that controller, and that controller needs this mesh-files.
shares matched through mesh-controller.seats; minio_presigned_url retired (issue 1516).Every issue's acceptance criteria are on the issue, each tested at its level and seen failing first. Review: three rounds (round 1: every verb answers within 25 s since the tool runner cuts calls at 30 s; round 3: three data races the group's check found under -race, fixed by
6cf51173and ad85a979; every suite passes -race three times). The integration tests run in this group's check, since no try composes the two heads.Delivery: minio and only-office on novox (minio's data backed up first), mesh-files on ace, g14, novox and shanks, brother on shanks. Live proofs after delivery: a .docx on g14 printed by path, a PDF and an HTML page by URL, a glass scan in the scan folder by a link.
Reviewed-by: review-fts@shanks at
6cf51173d5Delivery
novox/mesh-catalog@6cf51173d586— superseded since 2026-10-21T16:51:19ZCovered: delivered after its walk was superseded: the walk plan-1792597220088006936, which took its walk plan-1792600286186319151 over, ended done
Delivery plan — builds brother, mesh-files, minio, only-office → ace, g14, novox, shanks; no bus step; 1 wait(s) for a person
Group
feat/files-through-the-store: novox/mesh-catalog@6cf51173d5, novox/mesh-controller@550cf37d71Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.Merge check at
a2deae03Judged: head
a2deae03b712merged into trunk90ecba4e50a3Siblings read beside it: novox/mesh-controller#424
227c86ebb388merged onto12752911b644(main)mesh/merge-gate: FAIL — the sibling novox/mesh-controller#424 (head 227c86ebb388) does not merge cleanly into its base main 12752911b644: in conflict go.mod, go.sum, testdata/beside/CAPTURED, vendor/modules.txtmesh/repo-check: FAIL — the sibling novox/mesh-controller#424 (head 227c86ebb388) does not merge cleanly into its base main 12752911b644: in conflict go.mod, go.sum, testdata/beside/CAPTURED, vendor/modules.txtDelivery plan — builds brother, mesh-files, minio, only-office → ace, g14, novox, shanks; no bus step; 1 wait(s) for a person
Run by the build seat on ace as
build-1792593798722564984(builds --log build-1792593798722564984).