mesh-delivery: a merge whose walk ended before its word is settled from that walk's record (hq issue 474) #208

Merged
mesh-admin merged 2 commits from fix/474-a-delivery-settles-from-an-ended-walk into main 2026-10-11 09:45:06 +00:00
Contributor

Fixes the delivery half of novox/hq issue 474.

Symptom. mesh-controller #215 (merged as fbc7bc97) was batched with #217 (8305e4e3). The batch's walk plan-1791681624611167730 was cut done with no tier ("moved nothing the mesh holds: nothing to walk") but still says it awaits mesh-delivery. The delivery stayed published, waiting for "its walk's start", which a done walk never has; no row of the table could end it, and the operator got a stalled alert.

Fix. A published delivery whose walk ended done without ever being let go (endedUnstarted) is settled from that walk's record:

  • delivered, when the walk carried its own commit and built every module its plan moves;
  • covered, when the walk carried a later merge for it and built those modules, or when a later merge into the same trunk, delivered with a passing check, sent them everywhere and the forge says it contains this merge (ADR 0270's coverOf, unchanged);
  • stopped, with why (the walk, the modules it did not build, its note), once the cover test asked everything and found nothing, 20 minutes after the walk ended. That is inside the 30-minute bound of a published delivery, so the delivery stops before stalled lists it.

The walk's record (WalkSeen) now keeps the modules the walk builds (moved, moved_said). A record kept before this change, with tiers but no modules named, is asked for again rather than read as moving nothing. waits no longer says "its walk's start" for such a delivery.

Live. Once this is delivered, novox/mesh-controller@d2e9dc61590f becomes covered by #219 (novox/mesh-controller@ef551fdfb6b2, merged as 0a2e58c0, walk plan-1791686195314774150, which sent build-agent everywhere). gitea_contains says fbc7bc97 is in 0a2e58c0. The stalled condition then clears.

Tests. issue474_test.go replays the night's shape: covered by a later delivered merge; stopped with why when nothing covers it; delivered or covered by its own walk when that walk built its modules. All three failed on main with "published, waiting for its walk's start". table_test.go gains facts for the two new Published rows. go vet ./..., go test -race ./... -count=1 and the words check pass.

Reviewer checklist: the table still keeps one row per (state, event, act); nothing leaves a final state; Held is never stopped by observation; the stop is only taken once coverOf has no forge question left.

Fixes the delivery half of novox/hq issue 474. **Symptom.** mesh-controller #215 (merged as fbc7bc97) was batched with #217 (8305e4e3). The batch's walk plan-1791681624611167730 was cut done with no tier ("moved nothing the mesh holds: nothing to walk") but still says it awaits mesh-delivery. The delivery stayed `published`, waiting for "its walk's start", which a done walk never has; no row of the table could end it, and the operator got a stalled alert. **Fix.** A published delivery whose walk ended `done` without ever being let go (`endedUnstarted`) is settled from that walk's record: - **delivered**, when the walk carried its own commit and built every module its plan moves; - **covered**, when the walk carried a later merge for it and built those modules, or when a later merge into the same trunk, delivered with a passing check, sent them everywhere and the forge says it contains this merge (ADR 0270's `coverOf`, unchanged); - **stopped**, with why (the walk, the modules it did not build, its note), once the cover test asked everything and found nothing, 20 minutes after the walk ended. That is inside the 30-minute bound of a published delivery, so the delivery stops before `stalled` lists it. The walk's record (`WalkSeen`) now keeps the modules the walk builds (`moved`, `moved_said`). A record kept before this change, with tiers but no modules named, is asked for again rather than read as moving nothing. `waits` no longer says "its walk's start" for such a delivery. **Live.** Once this is delivered, `novox/mesh-controller@d2e9dc61590f` becomes **covered** by #219 (`novox/mesh-controller@ef551fdfb6b2`, merged as 0a2e58c0, walk plan-1791686195314774150, which sent build-agent everywhere). `gitea_contains` says fbc7bc97 is in 0a2e58c0. The stalled condition then clears. **Tests.** `issue474_test.go` replays the night's shape: covered by a later delivered merge; stopped with why when nothing covers it; delivered or covered by its own walk when that walk built its modules. All three failed on main with "published, waiting for its walk's start". `table_test.go` gains facts for the two new Published rows. `go vet ./...`, `go test -race ./... -count=1` and the words check pass. Reviewer checklist: the table still keeps one row per (state, event, act); nothing leaves a final state; Held is never stopped by observation; the stop is only taken once `coverOf` has no forge question left.
mesh-admin added 1 commit 2026-10-11 09:32:12 +00:00
mesh-delivery: a merge whose walk ended before its word is settled from that walk's record (hq issue 474)
mesh/merge-gate pass: builds mesh-delivery → novox; no bus step; every machine composes with the change as it did without (4 of 4 compose)
mesh/repo-check pass: its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript)
mesh/delivery superseded: a newer head of the same pull request
084acc042b
A batch's walk the controller judged to move nothing is done when it is cut,
and a merge it carried stayed published waiting for a start that cannot come.
Its walk's record now settles it: delivered or covered when that walk built its
modules, covered when a later delivered merge carried them (ADR 0270), and
otherwise stopped with why once the cover test says none did.
Author
Contributor

Delivery novox/mesh-catalog@9d0f93bba856 — failed since 2026-10-11T09:52:03Z

Covered: covered after its failure: a later walk that contains it was delivered: plan-1791711936761655786 (novox/mesh-catalog at 83c64dcd into main, done, contains its merge 83c64dcd)

Delivery plan — builds mesh-delivery → novox; no bus step

  • tier 0: mesh-delivery
  • novox: receives mesh-delivery

Machines

  • route-proxy on ace: passed — carried by plan-1791711055874604089
  • mesh-delivery on novox: passed — healthy 3 times over 2m19s
  • mesh-delivery on the rest running it: sent

Transitions

  • 2026-10-11 09:38 (new) → proposed (announced): novox/mesh-catalog#208's head announced
  • 2026-10-11 09:40 proposed → checked (checked): the verdict names this commit
  • 2026-10-11 09:40 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
  • 2026-10-11 09: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-11 09: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-11 09:52 delivering → failed (failed): its walk failed, carrying its own commit: a gate on a first machine (what it carried put back), a build, a machine

The commit's note under refs/notes/mesh-plan keeps every transition: git log --notes=mesh-plan.

<!-- mesh-delivery:view --> **Delivery** `novox/mesh-catalog@9d0f93bba856` — **failed** since 2026-10-11T09:52:03Z **Covered**: covered after its failure: a later walk that contains it was delivered: plan-1791711936761655786 (novox/mesh-catalog at 83c64dcd into main, done, contains its merge 83c64dcd) **Delivery plan** — builds mesh-delivery → novox; no bus step - tier 0: mesh-delivery - novox: receives mesh-delivery **Machines** - route-proxy on ace: passed — carried by plan-1791711055874604089 - mesh-delivery on novox: passed — healthy 3 times over 2m19s - mesh-delivery on the rest running it: sent **Transitions** - 2026-10-11 09:38 (new) → proposed (announced): novox/mesh-catalog#208's head announced - 2026-10-11 09:40 proposed → checked (checked): the verdict names this commit - 2026-10-11 09:40 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail - 2026-10-11 09: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-11 09: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-11 09:52 delivering → failed (failed): its walk failed, carrying its own commit: a gate on a first machine (what it carried put back), a build, a machine The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
Author
Contributor

Merge check at 084acc04

  • mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: mesh-delivery)
  • 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-delivery → novox; no bus step

  • tier 0: mesh-delivery
  • novox: receives mesh-delivery
  • read by no module's build: modules/mesh-delivery/cmd/mesh-delivery/issue474_test.go, modules/mesh-delivery/cmd/mesh-delivery/table_test.go

Run by the build seat on shanks as build-1791711156271337517 (builds --log build-1791711156271337517).

--- the gate: mesh-delivery
mesh-delivery: ok, 1 tool(s), invokes seat:mesh-controller.delivery-plan, seat:mesh-controller.delivery-order, seat:mesh-controller.delivery-check, seat:mesh-controller.deliver, seat:mesh-controller.delivery-stop, seat:mesh-controller.delivery-walks, gitea.gitea_note_append, gitea.gitea_delivery_view, gitea.gitea_commit_status, gitea.gitea_commit_statuses, gitea.gitea_contains, gitea.gitea_open_pulls, keeps state deliveries, groups
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 0 module(s) changed against 4 machine(s), as the snapshot of 2026-10-11T09:30:02Z 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-11T09:30:02Z

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-delivery

notes:
  - modules/mesh-delivery/cmd/mesh-delivery/issue474_test.go and modules/mesh-delivery/cmd/mesh-delivery/table_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 41417 strings of 672 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: 69, as kept
testing modules/mesh-delivery
ok  	mesh-delivery/cmd/mesh-delivery	2.184s
--- its merge-check-typescript.sh (typescript toolchain)
**Merge check** at `084acc04` - `mesh/merge-gate`: **PASS** — every machine composes with the change as it did without (4 of 4 compose) (modules: mesh-delivery) - `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-delivery → novox; no bus step - tier 0: mesh-delivery - novox: receives mesh-delivery - read by no module's build: modules/mesh-delivery/cmd/mesh-delivery/issue474_test.go, modules/mesh-delivery/cmd/mesh-delivery/table_test.go Run by the build seat on shanks as `build-1791711156271337517` (`builds --log build-1791711156271337517`). ``` --- the gate: mesh-delivery mesh-delivery: ok, 1 tool(s), invokes seat:mesh-controller.delivery-plan, seat:mesh-controller.delivery-order, seat:mesh-controller.delivery-check, seat:mesh-controller.deliver, seat:mesh-controller.delivery-stop, seat:mesh-controller.delivery-walks, gitea.gitea_note_append, gitea.gitea_delivery_view, gitea.gitea_commit_status, gitea.gitea_commit_statuses, gitea.gitea_contains, gitea.gitea_open_pulls, keeps state deliveries, groups 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 0 module(s) changed against 4 machine(s), as the snapshot of 2026-10-11T09:30:02Z 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-11T09:30:02Z 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-delivery notes: - modules/mesh-delivery/cmd/mesh-delivery/issue474_test.go and modules/mesh-delivery/cmd/mesh-delivery/table_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 41417 strings of 672 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: 69, as kept testing modules/mesh-delivery ok mesh-delivery/cmd/mesh-delivery 2.184s --- its merge-check-typescript.sh (typescript toolchain) ```
jschoubben added 1 commit 2026-10-11 09:38:10 +00:00
mesh-delivery: hold a stranded stop for a later merge on its way, and keep it loud (review, hq issue 474)
mesh/merge-gate pass: builds mesh-delivery → novox; no bus step; every machine composes with the change as it did without (4 of 4 compose)
mesh/repo-check pass: its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript)
mesh/delivery covered after its failure: a later walk that contains it was delivered: plan-1791711936761655786 (novox/mesh-catalog at 83c64dcd into main,…
9d0f93bba8
A stop is final, so a later merge whose queued walk would carry the modules
now holds it off; a stopped one stays in stalled until a later delivered merge
carries them. A walk counts only modules it sent, and an old walk record is read
again rather than taken as building nothing.
Author
Contributor

Merge check at 9d0f93bb

  • mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: mesh-delivery)
  • 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-delivery → novox; no bus step

  • tier 0: mesh-delivery
  • novox: receives mesh-delivery
  • read by no module's build: modules/mesh-delivery/cmd/mesh-delivery/issue474_test.go, modules/mesh-delivery/cmd/mesh-delivery/table_test.go

Run by the build seat on ace as build-1791711521307561350 (builds --log build-1791711521307561350).

--- the gate: mesh-delivery
mesh-delivery: ok, 1 tool(s), invokes seat:mesh-controller.delivery-plan, seat:mesh-controller.delivery-order, seat:mesh-controller.delivery-check, seat:mesh-controller.deliver, seat:mesh-controller.delivery-stop, seat:mesh-controller.delivery-walks, gitea.gitea_note_append, gitea.gitea_delivery_view, gitea.gitea_commit_status, gitea.gitea_commit_statuses, gitea.gitea_contains, gitea.gitea_open_pulls, keeps state deliveries, groups
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 0 module(s) changed against 4 machine(s), as the snapshot of 2026-10-11T09:36:21Z 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-11T09:36:21Z

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-delivery

notes:
  - modules/mesh-delivery/cmd/mesh-delivery/issue474_test.go and modules/mesh-delivery/cmd/mesh-delivery/table_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 41431 strings of 672 files
ok  	git.novox.be/novox/mesh-catalog/checks/agenthome	0.021s
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: 69, as kept
testing modules/mesh-delivery
ok  	mesh-delivery/cmd/mesh-delivery	1.973s
--- its merge-check-typescript.sh (typescript toolchain)
**Merge check** at `9d0f93bb` - `mesh/merge-gate`: **PASS** — every machine composes with the change as it did without (4 of 4 compose) (modules: mesh-delivery) - `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-delivery → novox; no bus step - tier 0: mesh-delivery - novox: receives mesh-delivery - read by no module's build: modules/mesh-delivery/cmd/mesh-delivery/issue474_test.go, modules/mesh-delivery/cmd/mesh-delivery/table_test.go Run by the build seat on ace as `build-1791711521307561350` (`builds --log build-1791711521307561350`). ``` --- the gate: mesh-delivery mesh-delivery: ok, 1 tool(s), invokes seat:mesh-controller.delivery-plan, seat:mesh-controller.delivery-order, seat:mesh-controller.delivery-check, seat:mesh-controller.deliver, seat:mesh-controller.delivery-stop, seat:mesh-controller.delivery-walks, gitea.gitea_note_append, gitea.gitea_delivery_view, gitea.gitea_commit_status, gitea.gitea_commit_statuses, gitea.gitea_contains, gitea.gitea_open_pulls, keeps state deliveries, groups 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 0 module(s) changed against 4 machine(s), as the snapshot of 2026-10-11T09:36:21Z 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-11T09:36:21Z 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-delivery notes: - modules/mesh-delivery/cmd/mesh-delivery/issue474_test.go and modules/mesh-delivery/cmd/mesh-delivery/table_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 41431 strings of 672 files ok git.novox.be/novox/mesh-catalog/checks/agenthome 0.021s 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: 69, as kept testing modules/mesh-delivery ok mesh-delivery/cmd/mesh-delivery 1.973s --- its merge-check-typescript.sh (typescript toolchain) ```
mesh-admin merged commit 83c64dcd34 into main 2026-10-11 09:45:06 +00:00
mesh-admin deleted branch fix/474-a-delivery-settles-from-an-ended-walk 2026-10-11 09:45:07 +00:00
Sign in to join this conversation.
No Reviewers
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-catalog#208