Issue 1281: the indexer wrote no module fingerprint at a trunk merge, because a build record names its repository by clone URL and a build a delivery plan asked after a merge carries no ref. The indexer (Builds.Modules, Builds.Module) and the view (fingerprintRows) now use mesh-sdk's SameRepository and BuildRecord.IsTrunkBuild.
Needs mesh-sdk pull request 40 first (same branch name, one delivery group); both go.mod pins are set to its head 680a78bae270 and go.sum is tidy. No vendor directory.
Acceptance criteria and tests:
1281/AC3: TestMergeWritesEveryModuleTheLiveRecordsNameInTheRepository (indexer, live-captured records: no ref, clone URL; a module of mesh-media-catalog is not written)
1281/AC4: TestChangedDirectoryMapsToTheModuleItsLiveRecordNamesByPath (indexer, Builds.Module by path)
1281/AC5: TestAPlanAskedBuildWithNoRefIsATrunkBuild (view, live-captured record with no ref: same)
1281/AC6 is the live check after delivery.
Fixtures: copied from mesh-controller.command builds on 2026-10-19 about 21:20 local; each test file says which fields came from the listing and which (path, source-inputs) from elsewhere. The view's older test helper trunkBuild now writes source-inputs with the fingerprint, as the controller does.
Issue 1281: the indexer wrote no module fingerprint at a trunk merge, because a build record names its repository by clone URL and a build a delivery plan asked after a merge carries no ref. The indexer (Builds.Modules, Builds.Module) and the view (fingerprintRows) now use mesh-sdk's `SameRepository` and `BuildRecord.IsTrunkBuild`.
Needs mesh-sdk pull request 40 first (same branch name, one delivery group); both go.mod pins are set to its head 680a78bae270 and go.sum is tidy. No vendor directory.
Acceptance criteria and tests:
- 1281/AC3: `TestMergeWritesEveryModuleTheLiveRecordsNameInTheRepository` (indexer, live-captured records: no ref, clone URL; a module of mesh-media-catalog is not written)
- 1281/AC4: `TestChangedDirectoryMapsToTheModuleItsLiveRecordNamesByPath` (indexer, Builds.Module by path)
- 1281/AC5: `TestAPlanAskedBuildWithNoRefIsATrunkBuild` (view, live-captured record with no ref: same)
- 1281/AC6 is the live check after delivery.
Fixtures: copied from `mesh-controller.command builds` on 2026-10-19 about 21:20 local; each test file says which fields came from the listing and which (path, source-inputs) from elsewhere. The view's older test helper `trunkBuild` now writes source-inputs with the fingerprint, as the controller does.
Reviewed-by: review-1281@shanks at 4b8e71370cc2fb4fb795511ba8dcce9b50b538df
Deliverynovox/mesh-delivery@4b8e71370cc2 — delivered since 2026-10-19T21:23:49Z
Delivery plan — builds mesh-delivery-indexer, mesh-delivery-view → novox, shanks; no bus step
tier 0: mesh-delivery-indexer, mesh-delivery-view
novox: receives mesh-delivery-indexer
shanks: receives mesh-delivery-view
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 mesh-delivery-view is judged on its first machine
composed together: pass — every machine composes with the change as it did without (4 of 4 compose)
Machines
mesh-delivery-indexer on every machine running it: sent
mesh-delivery-view on every machine running it: sent
mesh-sdk on every machine running it: sent
mesh-tools on every machine running it: sent
audit-logger on every machine running it: sent
baserow on every machine running it: sent
bazarr on every machine running it: sent
bookshelf on every machine running it: sent
confluence on every machine running it: sent
gitea on every machine running it: sent
gitlab on every machine running it: sent
grafana on every machine running it: sent
home-assistant on every machine running it: sent
icecast on every machine running it: sent
influxdb on every machine running it: sent
jackett on every machine running it: sent
jira on every machine running it: sent
kometa on every machine running it: sent
lab on every machine running it: sent
letta on every machine running it: sent
lidarr on every machine running it: sent
mesh-catalog on every machine running it: sent
model-usage on every machine running it: sent
mosquitto on every machine running it: sent
netcheck on every machine running it: sent
nextcloud on every machine running it: sent
nodered on every machine running it: sent
ombi on every machine running it: sent
openai-consumer on every machine running it: sent
radarr on every machine running it: sent
redis on every machine running it: sent
route-adapter on every machine running it: sent
searxng on every machine running it: sent
showcase on every machine running it: sent
sonarr on every machine running it: sent
tautulli on every machine running it: sent
umami on every machine running it: sent
unifi on every machine running it: sent
zsh on every machine running it: sent
Transitions
2026-10-19 20:40 (new) → proposed (announced): novox/mesh-delivery#6's head announced
2026-10-19 20:45 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
2026-10-19 20:45 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-19 20:59 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
2026-10-19 20:59 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-19 21:23 delivering → delivered (done): its walk is done, carrying its own commit: every machine of its deploy plan passed, or was left as its policy says
The commit's note under refs/notes/mesh-plan keeps every transition: git log --notes=mesh-plan.
<!-- mesh-delivery:view -->
**Delivery** `novox/mesh-delivery@4b8e71370cc2` — **delivered** since 2026-10-19T21:23:49Z
**Delivery plan** — builds mesh-delivery-indexer, mesh-delivery-view → novox, shanks; no bus step
- tier 0: mesh-delivery-indexer, mesh-delivery-view
- novox: receives mesh-delivery-indexer
- shanks: receives mesh-delivery-view
- 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 mesh-delivery-view is judged on its first machine
**Group** `fix/1281-trunk-builds-by-repository`: novox/mesh-delivery@4b8e71370cc2, novox/mesh-sdk@84a764372337
- composed together: pass — every machine composes with the change as it did without (4 of 4 compose)
**Machines**
- mesh-delivery-indexer on every machine running it: sent
- mesh-delivery-view on every machine running it: sent
- mesh-sdk on every machine running it: sent
- mesh-tools on every machine running it: sent
- audit-logger on every machine running it: sent
- baserow on every machine running it: sent
- bazarr on every machine running it: sent
- bookshelf on every machine running it: sent
- confluence on every machine running it: sent
- gitea on every machine running it: sent
- gitlab on every machine running it: sent
- grafana on every machine running it: sent
- home-assistant on every machine running it: sent
- icecast on every machine running it: sent
- influxdb on every machine running it: sent
- jackett on every machine running it: sent
- jira on every machine running it: sent
- kometa on every machine running it: sent
- lab on every machine running it: sent
- letta on every machine running it: sent
- lidarr on every machine running it: sent
- mesh-catalog on every machine running it: sent
- model-usage on every machine running it: sent
- mosquitto on every machine running it: sent
- netcheck on every machine running it: sent
- nextcloud on every machine running it: sent
- nodered on every machine running it: sent
- ombi on every machine running it: sent
- openai-consumer on every machine running it: sent
- radarr on every machine running it: sent
- redis on every machine running it: sent
- route-adapter on every machine running it: sent
- searxng on every machine running it: sent
- showcase on every machine running it: sent
- sonarr on every machine running it: sent
- tautulli on every machine running it: sent
- umami on every machine running it: sent
- unifi on every machine running it: sent
- zsh on every machine running it: sent
**Transitions**
- 2026-10-19 20:40 (new) → proposed (announced): novox/mesh-delivery#6's head announced
- 2026-10-19 20:45 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
- 2026-10-19 20:45 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-19 20:59 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
- 2026-10-19 20:59 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-19 21:23 delivering → delivered (done): its walk is done, carrying its own commit: every machine of its deploy plan passed, or was left as its policy says
The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
Merge check at f0fa629f
Judged: head f0fa629fa496 merged into trunk fa4be27c1e40
mesh/merge-gate: FAIL — head f0fa629fa4 does not merge cleanly into trunk fa4be27c1e: in conflict modules/mesh-delivery-indexer/go.mod, modules/mesh-delivery-indexer/go.sum
mesh/repo-check: FAIL — head f0fa629fa4 does not merge cleanly into trunk fa4be27c1e: in conflict modules/mesh-delivery-indexer/go.mod, modules/mesh-delivery-indexer/go.sum
Delivery plan — builds mesh-delivery-indexer, mesh-delivery-view → novox, shanks; no bus step
tier 0: mesh-delivery-indexer, mesh-delivery-view
novox: receives mesh-delivery-indexer
shanks: receives mesh-delivery-view
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 mesh-delivery-view is judged on its first machine
read by no module's build: modules/mesh-delivery-indexer/internal/index/live_builds_test.go, modules/mesh-delivery-view/internal/view/fingerprints_test.go
Run by the build seat on shanks as build-1792441376405411706 (builds --log build-1792441376405411706).
head f0fa629fa496 does not merge cleanly into trunk fa4be27c1e40: in conflict modules/mesh-delivery-indexer/go.mod, modules/mesh-delivery-indexer/go.sum
**Merge check** at `f0fa629f`
Judged: head `f0fa629fa496` merged into trunk `fa4be27c1e40`
- `mesh/merge-gate`: **FAIL** — head f0fa629fa496 does not merge cleanly into trunk fa4be27c1e40: in conflict modules/mesh-delivery-indexer/go.mod, modules/mesh-delivery-indexer/go.sum
- `mesh/repo-check`: **FAIL** — head f0fa629fa496 does not merge cleanly into trunk fa4be27c1e40: in conflict modules/mesh-delivery-indexer/go.mod, modules/mesh-delivery-indexer/go.sum
**Delivery plan** — builds mesh-delivery-indexer, mesh-delivery-view → novox, shanks; no bus step
- tier 0: mesh-delivery-indexer, mesh-delivery-view
- novox: receives mesh-delivery-indexer
- shanks: receives mesh-delivery-view
- 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 mesh-delivery-view is judged on its first machine
- read by no module's build: modules/mesh-delivery-indexer/internal/index/live_builds_test.go, modules/mesh-delivery-view/internal/view/fingerprints_test.go
Run by the build seat on shanks as `build-1792441376405411706` (`builds --log build-1792441376405411706`).
```
head f0fa629fa496 does not merge cleanly into trunk fa4be27c1e40: in conflict modules/mesh-delivery-indexer/go.mod, modules/mesh-delivery-indexer/go.sum
```
mesh-delivery: not merged. This pull request's checks passed at f0fa629fa4, and now its check failed: head f0fa629fa4 does not merge cleanly into trunk fa4be27c1e: in conflict modules/mesh-delivery-indexer/go.mod, modules/mesh-delivery-indexer/go.sum (head f0fa629fa4 merged into trunk fa4be27c1e). A new head, or a recheck that passes, asks the operator again.
mesh-delivery: **not merged.** This pull request's checks passed at f0fa629fa4966655cbb9d691976ed5d87763d178, and now its check failed: head f0fa629fa496 does not merge cleanly into trunk fa4be27c1e40: in conflict modules/mesh-delivery-indexer/go.mod, modules/mesh-delivery-indexer/go.sum (head f0fa629fa496 merged into trunk fa4be27c1e40). A new head, or a recheck that passes, asks the operator again.
mesh/merge-gate head 4b8e71370cc2 merged into trunk fa4be27c1e40 — pass: group fix/1281-trunk-builds-by-repository composed: every machine composes with th…
Build records name their repository by clone URL and a plan-asked build has no ref, so no module fingerprint was ever written or compared; both now use the SDK's tests.
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.
Issue 1281: the indexer wrote no module fingerprint at a trunk merge, because a build record names its repository by clone URL and a build a delivery plan asked after a merge carries no ref. The indexer (Builds.Modules, Builds.Module) and the view (fingerprintRows) now use mesh-sdk's
SameRepositoryandBuildRecord.IsTrunkBuild.Needs mesh-sdk pull request 40 first (same branch name, one delivery group); both go.mod pins are set to its head 680a78bae270 and go.sum is tidy. No vendor directory.
Acceptance criteria and tests:
TestMergeWritesEveryModuleTheLiveRecordsNameInTheRepository(indexer, live-captured records: no ref, clone URL; a module of mesh-media-catalog is not written)TestChangedDirectoryMapsToTheModuleItsLiveRecordNamesByPath(indexer, Builds.Module by path)TestAPlanAskedBuildWithNoRefIsATrunkBuild(view, live-captured record with no ref: same)Fixtures: copied from
mesh-controller.command buildson 2026-10-19 about 21:20 local; each test file says which fields came from the listing and which (path, source-inputs) from elsewhere. The view's older test helpertrunkBuildnow writes source-inputs with the fingerprint, as the controller does.Reviewed-by: review-1281@shanks at
4b8e71370cDelivery
novox/mesh-delivery@4b8e71370cc2— delivered since 2026-10-19T21:23:49ZDelivery plan — builds mesh-delivery-indexer, mesh-delivery-view → novox, shanks; no bus step
Group
fix/1281-trunk-builds-by-repository: novox/mesh-delivery@4b8e71370c, novox/mesh-sdk@84a7643723Machines
Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.Merge check at
f0fa629fJudged: head
f0fa629fa496merged into trunkfa4be27c1e40mesh/merge-gate: FAIL — headf0fa629fa4does not merge cleanly into trunkfa4be27c1e: in conflict modules/mesh-delivery-indexer/go.mod, modules/mesh-delivery-indexer/go.summesh/repo-check: FAIL — headf0fa629fa4does not merge cleanly into trunkfa4be27c1e: in conflict modules/mesh-delivery-indexer/go.mod, modules/mesh-delivery-indexer/go.sumDelivery plan — builds mesh-delivery-indexer, mesh-delivery-view → novox, shanks; no bus step
Run by the build seat on shanks as
build-1792441376405411706(builds --log build-1792441376405411706).mesh-delivery: not merged. This pull request's checks passed at
f0fa629fa4, and now its check failed: headf0fa629fa4does not merge cleanly into trunkfa4be27c1e: in conflict modules/mesh-delivery-indexer/go.mod, modules/mesh-delivery-indexer/go.sum (headf0fa629fa4merged into trunkfa4be27c1e). A new head, or a recheck that passes, asks the operator again.f0fa629fa4to4b8e71370c