mesh-issues: triage every new issue — severity, needs, suggested owner, dependencies — and ready when what it depends on is delivered (hq ADR 0279)
#184
Merged
mesh-adminmerged 1 commits from feat/mesh-issues-triage into main2026-10-10 16:11:57 +00:00
Builds hq ADR 0279 (hq PR for decisions/0279), to-be 53 §10. Second slice after #183 (ADR 0278), which is live and proven.
Issue gains severity, needs, suggested-owner, delivered, triage (the judgement kept before it is applied). Optional JSON keys; no schema to migrate.
Link kind depends-on; link refuses a cycle (ErrCycle).
Verbs: open takes severity/needs; new set (severity, needs, suggested-owner; event set); list filters severity/needs/ready and rows carry them; get answers a View with waits-for, needed-by, ready.
Triage (groom.go): Q2 always asked; answers verdict + severity/needs/owner (owner only from the registered list) + depends_on/relates_to (only shortlisted). Apply: keep triage + event triaged → one note → fill empty values only (set with onlyEmpty) → links (skip existing, cycles, closed targets; note older) → duplicate steps, move last. Author triage; ADR 0278's duplicate-check notes still read (legacy verdict kept, estimates added by groom).
Ready (ready.go): consumes mesh-delivery.transition (to delivered + number → mark <repo>#<n> on issues naming it) and own moved (resolved → ask seat:mesh-delivery.checks once per PR not heard; resolved/wontfix → let go dependents: one Ready: issue N note + event ready).
groom: backfills every non-resolved issue without a kept triage; findings carry the triage and what applying would do.
Tests (judgement and delivery stubbed), triage_test.go: clear duplicate (event order), related / not certain, none + values + owner validation, issuer's value stands with disagreement note, resolved/wontfix/newer/unoffered never touched, idempotent redelivery + kept-not-applied, legacy verdict kept, failed judgement (incl. bad severity) one note + not taken, dependencies + cycles of two and three + needed-by, ready table incl. transition twice (one note, one event), delivered-before-resolve via checks, wontfix dependency, set refusals + triage leaves set values, dry run byte-identical + confirm skips + fills, interrupted pass, pass beside a new triage under -race.
Reviewers' checklist: glossary words; no secret in any event; never closes both sides / a resolved issue / overwrites a person's value / removes a link; dry run changes nothing; idempotent on redelivery; failure loud; store change (KV keys, no migration).
Builds hq ADR 0279 (hq PR for decisions/0279), to-be 53 §10. Second slice after #183 (ADR 0278), which is live and proven.
- Issue gains `severity`, `needs`, `suggested-owner`, `delivered`, `triage` (the judgement kept before it is applied). Optional JSON keys; no schema to migrate.
- Link kind `depends-on`; `link` refuses a cycle (`ErrCycle`).
- Verbs: `open` takes severity/needs; new `set` (severity, needs, suggested-owner; event `set`); `list` filters severity/needs/ready and rows carry them; `get` answers a View with `waits-for`, `needed-by`, `ready`.
- Triage (groom.go): Q2 always asked; answers verdict + severity/needs/owner (owner only from the registered list) + depends_on/relates_to (only shortlisted). Apply: keep triage + event `triaged` → one note → fill empty values only (`set` with onlyEmpty) → links (skip existing, cycles, closed targets; note older) → duplicate steps, move last. Author `triage`; ADR 0278's `duplicate-check` notes still read (legacy verdict kept, estimates added by groom).
- Ready (ready.go): consumes `mesh-delivery.transition` (to delivered + number → mark `<repo>#<n>` on issues naming it) and own `moved` (resolved → ask `seat:mesh-delivery.checks` once per PR not heard; resolved/wontfix → let go dependents: one `Ready: issue N` note + event `ready`).
- groom: backfills every non-resolved issue without a kept triage; findings carry the triage and what applying would do.
- Manifest: verb `set`; emits set/triaged/ready; consumes + `mesh-issues.moved`, `mesh-delivery.transition`; invokes + `seat:mesh-delivery.checks`; setting `forge-owner`.
Tests (judgement and delivery stubbed), triage_test.go: clear duplicate (event order), related / not certain, none + values + owner validation, issuer's value stands with disagreement note, resolved/wontfix/newer/unoffered never touched, idempotent redelivery + kept-not-applied, legacy verdict kept, failed judgement (incl. bad severity) one note + not taken, dependencies + cycles of two and three + needed-by, ready table incl. transition twice (one note, one event), delivered-before-resolve via checks, wontfix dependency, set refusals + triage leaves set values, dry run byte-identical + confirm skips + fills, interrupted pass, pass beside a new triage under -race.
Reviewers' checklist: glossary words; no secret in any event; never closes both sides / a resolved issue / overwrites a person's value / removes a link; dry run changes nothing; idempotent on redelivery; failure loud; store change (KV keys, no migration).
Deliverynovox/mesh-catalog@9bb825360999 — delivered since 2026-10-10T16:17:49Z
Delivery plan — builds mesh-issues → novox; no bus step
tier 0: mesh-issues
novox: receives mesh-issues
Machines
mesh-issues on novox: passed — healthy 3 times over 2m36s
mesh-issues on the rest running it: sent
Transitions
2026-10-10 15:56 (new) → proposed (announced): novox/mesh-catalog#184's head announced
2026-10-10 15:59 proposed → checked (checked): the verdict names this commit
2026-10-10 15:59 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-10 16:14 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
2026-10-10 16:14 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-10 16:17 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-catalog@9bb825360999` — **delivered** since 2026-10-10T16:17:49Z
**Delivery plan** — builds mesh-issues → novox; no bus step
- tier 0: mesh-issues
- novox: receives mesh-issues
**Machines**
- mesh-issues on novox: passed — healthy 3 times over 2m36s
- mesh-issues on the rest running it: sent
**Transitions**
- 2026-10-10 15:56 (new) → proposed (announced): novox/mesh-catalog#184's head announced
- 2026-10-10 15:59 proposed → checked (checked): the verdict names this commit
- 2026-10-10 15:59 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-10 16:14 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
- 2026-10-10 16:14 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-10 16:17 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/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: mesh-issues)
mesh/repo-check: PASS — its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript)
Delivery plan — builds mesh-issues → novox; no bus step
tier 0: mesh-issues
novox: receives mesh-issues
read by no module's build: modules/mesh-issues/README.md, modules/mesh-issues/cmd/mesh-issues/groom_test.go, modules/mesh-issues/cmd/mesh-issues/manifest_test.go, modules/mesh-issues/cmd/mesh-issues/tracker_test.go, modules/mesh-issues/cmd/mesh-issues/triage_test.go
Run by the build seat on shanks as build-1791647409447487753 (builds --log build-1791647409447487753).
--- the gate: mesh-issues
mesh-issues: ok, invokes claude-code.claude_code_judge, seat:mesh-delivery.checks, keeps state issues, counters, grooming
long-running resources without health: 0
files asking for a setting without saying whether it is trusted: 0
1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here
judging 1 module(s) changed against 4 machine(s), as the snapshot of 2026-10-10T15:46:57Z says they run
composing every machine as the mesh is
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
composing every machine with the change
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose)
judged by controller development build against the facts of 2026-10-10T15:46:57Z
modules the change moves:
- mesh-issues (changed)
machines:
- a machine (f35): composes
- holds mesh-dns-resolver (idt): composes
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-delivery, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes
- a machine (yvbpsm): composes
a merge would rebuild 1 module(s) in 1 tier(s): mesh-issues
notes:
- modules/mesh-issues/README.md, modules/mesh-issues/cmd/mesh-issues/groom_test.go, modules/mesh-issues/cmd/mesh-issues/manifest_test.go, modules/mesh-issues/cmd/mesh-issues/tracker_test.go and modules/mesh-issues/cmd/mesh-issues/triage_test.go read by no module's build, and rebuild nothing (issue 280)
--- its merge-check.sh (go toolchain)
ok git.novox.be/novox/mesh-catalog/checks/words 0.003s
words: 12 retired words and 70 daemons' lines, none in the 38475 strings of 643 files
ok git.novox.be/novox/mesh-catalog/checks/agenthome 0.012s
agent-home: no archive and no file written into under the agent's home
ok git.novox.be/novox/mesh-catalog/checks/paths 0.006s
paths: no module names another's state on its machine (3 known, listed to go)
long-running resources without health: 70, as kept
testing modules/mesh-issues
ok mesh-issues/cmd/mesh-issues 6.148s
--- its merge-check-typescript.sh (typescript toolchain)
Unable to find image 'novox.internal:5100/mesh-tools/build@sha256:6af966c761db958a2f021d1cb4f4b65061016545b66f38245d189ae29a004edb' locally
novox.internal:5100/mesh-tools/build@sha256:6af966c761db958a2f021d1cb4f4b65061016545b66f38245d189ae29a004edb: Pulling from mesh-tools/build
501c3e032d32: Already exists
d456d1aa143e: Already exists
60f37e2c93ec: Already exists
e53f92c42dd6: Already exists
b571db164614: Already exists
3130c230dcec: Already exists
4198e49907ef: Already exists
487f65298731: Already exists
b7c34aa97486: Already exists
8a0200dee3b4: Pulling fs layer
1724f328ad6c: Pulling fs layer
ec17680e3745: Pulling fs layer
f40ed2016c96: Pulling fs layer
33683062e5fd: Pulling fs layer
33683062e5fd: Waiting
f40ed2016c96: Waiting
8a0200dee3b4: Download complete
8a0200dee3b4: Pull complete
f40ed2016c96: Download complete
1724f328ad6c: Verifying Checksum
1724f328ad6c: Download complete
ec17680e3745: Verifying Checksum
ec17680e3745: Download complete
1724f328ad6c: Pull complete
ec17680e3745: Pull complete
f40ed2016c96: Pull complete
33683062e5fd: Verifying Checksum
33683062e5fd: Download complete
33683062e5fd: Pull complete
Digest: sha256:6af966c761db958a2f021d1cb4f4b65061016545b66f38245d189ae29a004edb
Status: Downloaded newer image for novox.internal:5100/mesh-tools/build@sha256:6af966c761db958a2f021d1cb4f4b65061016545b66f38245d189ae29a004edb
**Merge check** at `745985fd`
- `mesh/merge-gate`: **PASS** — every machine composes with the change as it did without (4 of 4 compose) (modules: mesh-issues)
- `mesh/repo-check`: **PASS** — its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript)
**Delivery plan** — builds mesh-issues → novox; no bus step
- tier 0: mesh-issues
- novox: receives mesh-issues
- read by no module's build: modules/mesh-issues/README.md, modules/mesh-issues/cmd/mesh-issues/groom_test.go, modules/mesh-issues/cmd/mesh-issues/manifest_test.go, modules/mesh-issues/cmd/mesh-issues/tracker_test.go, modules/mesh-issues/cmd/mesh-issues/triage_test.go
Run by the build seat on shanks as `build-1791647409447487753` (`builds --log build-1791647409447487753`).
```
--- the gate: mesh-issues
mesh-issues: ok, invokes claude-code.claude_code_judge, seat:mesh-delivery.checks, keeps state issues, counters, grooming
long-running resources without health: 0
files asking for a setting without saying whether it is trusted: 0
1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here
judging 1 module(s) changed against 4 machine(s), as the snapshot of 2026-10-10T15:46:57Z says they run
composing every machine as the mesh is
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
composing every machine with the change
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose)
judged by controller development build against the facts of 2026-10-10T15:46:57Z
modules the change moves:
- mesh-issues (changed)
machines:
- a machine (f35): composes
- holds mesh-dns-resolver (idt): composes
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-delivery, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes
- a machine (yvbpsm): composes
a merge would rebuild 1 module(s) in 1 tier(s): mesh-issues
notes:
- modules/mesh-issues/README.md, modules/mesh-issues/cmd/mesh-issues/groom_test.go, modules/mesh-issues/cmd/mesh-issues/manifest_test.go, modules/mesh-issues/cmd/mesh-issues/tracker_test.go and modules/mesh-issues/cmd/mesh-issues/triage_test.go read by no module's build, and rebuild nothing (issue 280)
--- its merge-check.sh (go toolchain)
ok git.novox.be/novox/mesh-catalog/checks/words 0.003s
words: 12 retired words and 70 daemons' lines, none in the 38475 strings of 643 files
ok git.novox.be/novox/mesh-catalog/checks/agenthome 0.012s
agent-home: no archive and no file written into under the agent's home
ok git.novox.be/novox/mesh-catalog/checks/paths 0.006s
paths: no module names another's state on its machine (3 known, listed to go)
long-running resources without health: 70, as kept
testing modules/mesh-issues
ok mesh-issues/cmd/mesh-issues 6.148s
--- its merge-check-typescript.sh (typescript toolchain)
Unable to find image 'novox.internal:5100/mesh-tools/build@sha256:6af966c761db958a2f021d1cb4f4b65061016545b66f38245d189ae29a004edb' locally
novox.internal:5100/mesh-tools/build@sha256:6af966c761db958a2f021d1cb4f4b65061016545b66f38245d189ae29a004edb: Pulling from mesh-tools/build
501c3e032d32: Already exists
d456d1aa143e: Already exists
60f37e2c93ec: Already exists
e53f92c42dd6: Already exists
b571db164614: Already exists
3130c230dcec: Already exists
4198e49907ef: Already exists
487f65298731: Already exists
b7c34aa97486: Already exists
8a0200dee3b4: Pulling fs layer
1724f328ad6c: Pulling fs layer
ec17680e3745: Pulling fs layer
f40ed2016c96: Pulling fs layer
33683062e5fd: Pulling fs layer
33683062e5fd: Waiting
f40ed2016c96: Waiting
8a0200dee3b4: Download complete
8a0200dee3b4: Pull complete
f40ed2016c96: Download complete
1724f328ad6c: Verifying Checksum
1724f328ad6c: Download complete
ec17680e3745: Verifying Checksum
ec17680e3745: Download complete
1724f328ad6c: Pull complete
ec17680e3745: Pull complete
f40ed2016c96: Pull complete
33683062e5fd: Verifying Checksum
33683062e5fd: Download complete
33683062e5fd: Pull complete
Digest: sha256:6af966c761db958a2f021d1cb4f4b65061016545b66f38245d189ae29a004edb
Status: Downloaded newer image for novox.internal:5100/mesh-tools/build@sha256:6af966c761db958a2f021d1cb4f4b65061016545b66f38245d189ae29a004edb
```
The operator asked for the judgement that already reads the backlog to fill what an
issuer cannot know, and for dependencies between issues, an issue being workable
only once what it waits for is on the machines. The triage fills only empty values,
adds links and removes none; readiness follows mesh-delivery's own events, said once
per spell, through a duplicate to its original, and loud when a delivery cannot be asked.
mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: mesh-issues)
mesh/repo-check: PASS — its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript)
Delivery plan — builds mesh-issues → novox; no bus step
tier 0: mesh-issues
novox: receives mesh-issues
read by no module's build: .gitignore, modules/mesh-issues/README.md, modules/mesh-issues/cmd/mesh-issues/groom_test.go, modules/mesh-issues/cmd/mesh-issues/manifest_test.go, modules/mesh-issues/cmd/mesh-issues/tracker_test.go, modules/mesh-issues/cmd/mesh-issues/triage_test.go
Run by the build seat on shanks as build-1791647714682762301 (builds --log build-1791647714682762301).
--- the gate: mesh-issues
mesh-issues: ok, invokes claude-code.claude_code_judge, seat:mesh-delivery.checks, keeps state issues, counters, grooming
long-running resources without health: 0
files asking for a setting without saying whether it is trusted: 0
1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here
judging 1 module(s) changed against 4 machine(s), as the snapshot of 2026-10-10T15:46:57Z says they run
composing every machine as the mesh is
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
composing every machine with the change
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose)
judged by controller development build against the facts of 2026-10-10T15:46:57Z
modules the change moves:
- mesh-issues (changed)
machines:
- a machine (f35): composes
- holds mesh-dns-resolver (idt): composes
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-delivery, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes
- a machine (yvbpsm): composes
a merge would rebuild 1 module(s) in 1 tier(s): mesh-issues
notes:
- .gitignore, modules/mesh-issues/README.md, modules/mesh-issues/cmd/mesh-issues/groom_test.go, modules/mesh-issues/cmd/mesh-issues/manifest_test.go, modules/mesh-issues/cmd/mesh-issues/tracker_test.go and modules/mesh-issues/cmd/mesh-issues/triage_test.go read by no module's build, and rebuild nothing (issue 280)
--- its merge-check.sh (go toolchain)
ok git.novox.be/novox/mesh-catalog/checks/words 0.003s
words: 12 retired words and 70 daemons' lines, none in the 38478 strings of 643 files
ok git.novox.be/novox/mesh-catalog/checks/agenthome 0.013s
agent-home: no archive and no file written into under the agent's home
ok git.novox.be/novox/mesh-catalog/checks/paths 0.006s
paths: no module names another's state on its machine (3 known, listed to go)
long-running resources without health: 70, as kept
testing modules/mesh-issues
ok mesh-issues/cmd/mesh-issues 6.180s
--- its merge-check-typescript.sh (typescript toolchain)
**Merge check** at `e6fb779e`
- `mesh/merge-gate`: **PASS** — every machine composes with the change as it did without (4 of 4 compose) (modules: mesh-issues)
- `mesh/repo-check`: **PASS** — its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript)
**Delivery plan** — builds mesh-issues → novox; no bus step
- tier 0: mesh-issues
- novox: receives mesh-issues
- read by no module's build: .gitignore, modules/mesh-issues/README.md, modules/mesh-issues/cmd/mesh-issues/groom_test.go, modules/mesh-issues/cmd/mesh-issues/manifest_test.go, modules/mesh-issues/cmd/mesh-issues/tracker_test.go, modules/mesh-issues/cmd/mesh-issues/triage_test.go
Run by the build seat on shanks as `build-1791647714682762301` (`builds --log build-1791647714682762301`).
```
--- the gate: mesh-issues
mesh-issues: ok, invokes claude-code.claude_code_judge, seat:mesh-delivery.checks, keeps state issues, counters, grooming
long-running resources without health: 0
files asking for a setting without saying whether it is trusted: 0
1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here
judging 1 module(s) changed against 4 machine(s), as the snapshot of 2026-10-10T15:46:57Z says they run
composing every machine as the mesh is
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
composing every machine with the change
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose)
judged by controller development build against the facts of 2026-10-10T15:46:57Z
modules the change moves:
- mesh-issues (changed)
machines:
- a machine (f35): composes
- holds mesh-dns-resolver (idt): composes
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-delivery, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes
- a machine (yvbpsm): composes
a merge would rebuild 1 module(s) in 1 tier(s): mesh-issues
notes:
- .gitignore, modules/mesh-issues/README.md, modules/mesh-issues/cmd/mesh-issues/groom_test.go, modules/mesh-issues/cmd/mesh-issues/manifest_test.go, modules/mesh-issues/cmd/mesh-issues/tracker_test.go and modules/mesh-issues/cmd/mesh-issues/triage_test.go read by no module's build, and rebuild nothing (issue 280)
--- its merge-check.sh (go toolchain)
ok git.novox.be/novox/mesh-catalog/checks/words 0.003s
words: 12 retired words and 70 daemons' lines, none in the 38478 strings of 643 files
ok git.novox.be/novox/mesh-catalog/checks/agenthome 0.013s
agent-home: no archive and no file written into under the agent's home
ok git.novox.be/novox/mesh-catalog/checks/paths 0.006s
paths: no module names another's state on its machine (3 known, listed to go)
long-running resources without health: 70, as kept
testing modules/mesh-issues
ok mesh-issues/cmd/mesh-issues 6.180s
--- its merge-check-typescript.sh (typescript toolchain)
```
mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: mesh-issues)
mesh/repo-check: PASS — its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript)
Delivery plan — builds mesh-issues → novox; no bus step
tier 0: mesh-issues
novox: receives mesh-issues
read by no module's build: .gitignore, modules/mesh-issues/README.md, modules/mesh-issues/cmd/mesh-issues/groom_test.go, modules/mesh-issues/cmd/mesh-issues/manifest_test.go, modules/mesh-issues/cmd/mesh-issues/tracker_test.go, modules/mesh-issues/cmd/mesh-issues/triage_test.go
Run by the build seat on g14 as build-1791647780801725805 (builds --log build-1791647780801725805).
--- the gate: mesh-issues
mesh-issues: ok, invokes claude-code.claude_code_judge, seat:mesh-delivery.checks, keeps state issues, counters, grooming
long-running resources without health: 0
files asking for a setting without saying whether it is trusted: 0
1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here
judging 1 module(s) changed against 4 machine(s), as the snapshot of 2026-10-10T15:46:57Z says they run
composing every machine as the mesh is
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
composing every machine with the change
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose)
judged by controller development build against the facts of 2026-10-10T15:46:57Z
modules the change moves:
- mesh-issues (changed)
machines:
- a machine (f35): composes
- holds mesh-dns-resolver (idt): composes
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-delivery, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes
- a machine (yvbpsm): composes
a merge would rebuild 1 module(s) in 1 tier(s): mesh-issues
notes:
- .gitignore, modules/mesh-issues/README.md, modules/mesh-issues/cmd/mesh-issues/groom_test.go, modules/mesh-issues/cmd/mesh-issues/manifest_test.go, modules/mesh-issues/cmd/mesh-issues/tracker_test.go and modules/mesh-issues/cmd/mesh-issues/triage_test.go read by no module's build, and rebuild nothing (issue 280)
--- its merge-check.sh (go toolchain)
ok git.novox.be/novox/mesh-catalog/checks/words 0.004s
words: 12 retired words and 70 daemons' lines, none in the 38478 strings of 643 files
ok git.novox.be/novox/mesh-catalog/checks/agenthome 0.010s
agent-home: no archive and no file written into under the agent's home
ok git.novox.be/novox/mesh-catalog/checks/paths 0.005s
paths: no module names another's state on its machine (3 known, listed to go)
long-running resources without health: 70, as kept
testing modules/mesh-issues
ok mesh-issues/cmd/mesh-issues 5.794s
--- its merge-check-typescript.sh (typescript toolchain)
Unable to find image 'novox.internal:5100/mesh-tools/build@sha256:6af966c761db958a2f021d1cb4f4b65061016545b66f38245d189ae29a004edb' locally
novox.internal:5100/mesh-tools/build@sha256:6af966c761db958a2f021d1cb4f4b65061016545b66f38245d189ae29a004edb: Pulling from mesh-tools/build
501c3e032d32: Already exists
d456d1aa143e: Already exists
60f37e2c93ec: Already exists
e53f92c42dd6: Already exists
b571db164614: Already exists
3130c230dcec: Already exists
4198e49907ef: Already exists
487f65298731: Already exists
b7c34aa97486: Already exists
8a0200dee3b4: Pulling fs layer
1724f328ad6c: Pulling fs layer
ec17680e3745: Pulling fs layer
f40ed2016c96: Pulling fs layer
33683062e5fd: Pulling fs layer
33683062e5fd: Waiting
f40ed2016c96: Waiting
8a0200dee3b4: Download complete
ec17680e3745: Verifying Checksum
ec17680e3745: Download complete
8a0200dee3b4: Pull complete
f40ed2016c96: Verifying Checksum
f40ed2016c96: Download complete
1724f328ad6c: Verifying Checksum
1724f328ad6c: Download complete
1724f328ad6c: Pull complete
ec17680e3745: Pull complete
f40ed2016c96: Pull complete
33683062e5fd: Verifying Checksum
33683062e5fd: Download complete
33683062e5fd: Pull complete
Digest: sha256:6af966c761db958a2f021d1cb4f4b65061016545b66f38245d189ae29a004edb
Status: Downloaded newer image for novox.internal:5100/mesh-tools/build@sha256:6af966c761db958a2f021d1cb4f4b65061016545b66f38245d189ae29a004edb
**Merge check** at `9bb82536`
- `mesh/merge-gate`: **PASS** — every machine composes with the change as it did without (4 of 4 compose) (modules: mesh-issues)
- `mesh/repo-check`: **PASS** — its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript)
**Delivery plan** — builds mesh-issues → novox; no bus step
- tier 0: mesh-issues
- novox: receives mesh-issues
- read by no module's build: .gitignore, modules/mesh-issues/README.md, modules/mesh-issues/cmd/mesh-issues/groom_test.go, modules/mesh-issues/cmd/mesh-issues/manifest_test.go, modules/mesh-issues/cmd/mesh-issues/tracker_test.go, modules/mesh-issues/cmd/mesh-issues/triage_test.go
Run by the build seat on g14 as `build-1791647780801725805` (`builds --log build-1791647780801725805`).
```
--- the gate: mesh-issues
mesh-issues: ok, invokes claude-code.claude_code_judge, seat:mesh-delivery.checks, keeps state issues, counters, grooming
long-running resources without health: 0
files asking for a setting without saying whether it is trusted: 0
1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here
judging 1 module(s) changed against 4 machine(s), as the snapshot of 2026-10-10T15:46:57Z says they run
composing every machine as the mesh is
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
composing every machine with the change
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose)
judged by controller development build against the facts of 2026-10-10T15:46:57Z
modules the change moves:
- mesh-issues (changed)
machines:
- a machine (f35): composes
- holds mesh-dns-resolver (idt): composes
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-delivery, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes
- a machine (yvbpsm): composes
a merge would rebuild 1 module(s) in 1 tier(s): mesh-issues
notes:
- .gitignore, modules/mesh-issues/README.md, modules/mesh-issues/cmd/mesh-issues/groom_test.go, modules/mesh-issues/cmd/mesh-issues/manifest_test.go, modules/mesh-issues/cmd/mesh-issues/tracker_test.go and modules/mesh-issues/cmd/mesh-issues/triage_test.go read by no module's build, and rebuild nothing (issue 280)
--- its merge-check.sh (go toolchain)
ok git.novox.be/novox/mesh-catalog/checks/words 0.004s
words: 12 retired words and 70 daemons' lines, none in the 38478 strings of 643 files
ok git.novox.be/novox/mesh-catalog/checks/agenthome 0.010s
agent-home: no archive and no file written into under the agent's home
ok git.novox.be/novox/mesh-catalog/checks/paths 0.005s
paths: no module names another's state on its machine (3 known, listed to go)
long-running resources without health: 70, as kept
testing modules/mesh-issues
ok mesh-issues/cmd/mesh-issues 5.794s
--- its merge-check-typescript.sh (typescript toolchain)
Unable to find image 'novox.internal:5100/mesh-tools/build@sha256:6af966c761db958a2f021d1cb4f4b65061016545b66f38245d189ae29a004edb' locally
novox.internal:5100/mesh-tools/build@sha256:6af966c761db958a2f021d1cb4f4b65061016545b66f38245d189ae29a004edb: Pulling from mesh-tools/build
501c3e032d32: Already exists
d456d1aa143e: Already exists
60f37e2c93ec: Already exists
e53f92c42dd6: Already exists
b571db164614: Already exists
3130c230dcec: Already exists
4198e49907ef: Already exists
487f65298731: Already exists
b7c34aa97486: Already exists
8a0200dee3b4: Pulling fs layer
1724f328ad6c: Pulling fs layer
ec17680e3745: Pulling fs layer
f40ed2016c96: Pulling fs layer
33683062e5fd: Pulling fs layer
33683062e5fd: Waiting
f40ed2016c96: Waiting
8a0200dee3b4: Download complete
ec17680e3745: Verifying Checksum
ec17680e3745: Download complete
8a0200dee3b4: Pull complete
f40ed2016c96: Verifying Checksum
f40ed2016c96: Download complete
1724f328ad6c: Verifying Checksum
1724f328ad6c: Download complete
1724f328ad6c: Pull complete
ec17680e3745: Pull complete
f40ed2016c96: Pull complete
33683062e5fd: Verifying Checksum
33683062e5fd: Download complete
33683062e5fd: Pull complete
Digest: sha256:6af966c761db958a2f021d1cb4f4b65061016545b66f38245d189ae29a004edb
Status: Downloaded newer image for novox.internal:5100/mesh-tools/build@sha256:6af966c761db958a2f021d1cb4f4b65061016545b66f38245d189ae29a004edb
```
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.
Builds hq ADR 0279 (hq PR for decisions/0279), to-be 53 §10. Second slice after #183 (ADR 0278), which is live and proven.
severity,needs,suggested-owner,delivered,triage(the judgement kept before it is applied). Optional JSON keys; no schema to migrate.depends-on;linkrefuses a cycle (ErrCycle).opentakes severity/needs; newset(severity, needs, suggested-owner; eventset);listfilters severity/needs/ready and rows carry them;getanswers a View withwaits-for,needed-by,ready.triaged→ one note → fill empty values only (setwith onlyEmpty) → links (skip existing, cycles, closed targets; note older) → duplicate steps, move last. Authortriage; ADR 0278'sduplicate-checknotes still read (legacy verdict kept, estimates added by groom).mesh-delivery.transition(to delivered + number → mark<repo>#<n>on issues naming it) and ownmoved(resolved → askseat:mesh-delivery.checksonce per PR not heard; resolved/wontfix → let go dependents: oneReady: issue Nnote + eventready).set; emits set/triaged/ready; consumes +mesh-issues.moved,mesh-delivery.transition; invokes +seat:mesh-delivery.checks; settingforge-owner.Tests (judgement and delivery stubbed), triage_test.go: clear duplicate (event order), related / not certain, none + values + owner validation, issuer's value stands with disagreement note, resolved/wontfix/newer/unoffered never touched, idempotent redelivery + kept-not-applied, legacy verdict kept, failed judgement (incl. bad severity) one note + not taken, dependencies + cycles of two and three + needed-by, ready table incl. transition twice (one note, one event), delivered-before-resolve via checks, wontfix dependency, set refusals + triage leaves set values, dry run byte-identical + confirm skips + fills, interrupted pass, pass beside a new triage under -race.
Reviewers' checklist: glossary words; no secret in any event; never closes both sides / a resolved issue / overwrites a person's value / removes a link; dry run changes nothing; idempotent on redelivery; failure loud; store change (KV keys, no migration).
Delivery
novox/mesh-catalog@9bb825360999— delivered since 2026-10-10T16:17:49ZDelivery plan — builds mesh-issues → novox; no bus step
Machines
Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.Merge check at
745985fdmesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: mesh-issues)mesh/repo-check: PASS — its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript)Delivery plan — builds mesh-issues → novox; no bus step
Run by the build seat on shanks as
build-1791647409447487753(builds --log build-1791647409447487753).e6fb779eb5to9bb8253609Merge check at
e6fb779emesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: mesh-issues)mesh/repo-check: PASS — its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript)Delivery plan — builds mesh-issues → novox; no bus step
Run by the build seat on shanks as
build-1791647714682762301(builds --log build-1791647714682762301).Merge check at
9bb82536mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: mesh-issues)mesh/repo-check: PASS — its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript)Delivery plan — builds mesh-issues → novox; no bus step
Run by the build seat on g14 as
build-1791647780801725805(builds --log build-1791647780801725805).