Issue 1966; design 47 fix-unpublished-placed-module U6 and U7 (hq design/47-unpublished-placed-module). Group with mesh-host fix/1966-unpublished-placed-module.
Live: the four *.mesh-build-node.secret-npm-package-registry keys stay retiring with the why "its ask waits until fewer than 3 of mesh-provisioner's asks stand open", while the router refuses each ask at every pass because its id is over 64 characters (holder.go ask id, operatorchannelclient ask.go:240).
U7: askID is retire-<16 hex of sha256(key)>- (34 characters); a refused ask sets the key's why to "its ask is refused: ", read back by Holder.RefusedAsks, and provisioner_health is unhealthy naming the key and the refusal; a later accepted ask clears it.
U6: the comments at holder.go:113-114 and FromCompositions say what the code does: an unpublished module keeps only its own plan and keys.
Tests: TestARetiringAskIsBoundedAndARefusedOneIsSaid (fails with the old id). vet, vet -tags integration, unit and integration tests of the module pass.
Reviewed-by: mesh-code-reviewer@shanks at 3bb8ace833 (round 2)
Pushed-by: fix-1965@shanks
Issue 1966; design 47 fix-unpublished-placed-module U6 and U7 (hq design/47-unpublished-placed-module). Group with mesh-host fix/1966-unpublished-placed-module.
Live: the four *.mesh-build-node.secret-npm-package-registry keys stay retiring with the why "its ask waits until fewer than 3 of mesh-provisioner's asks stand open", while the router refuses each ask at every pass because its id is over 64 characters (holder.go ask id, operatorchannelclient ask.go:240).
- U7: askID is retire-<16 hex of sha256(key)>-<unix> (34 characters); a refused ask sets the key's why to "its ask is refused: <words>", read back by Holder.RefusedAsks, and provisioner_health is unhealthy naming the key and the refusal; a later accepted ask clears it.
- U6: the comments at holder.go:113-114 and FromCompositions say what the code does: an unpublished module keeps only its own plan and keys.
Tests: TestARetiringAskIsBoundedAndARefusedOneIsSaid (fails with the old id). vet, vet -tags integration, unit and integration tests of the module pass.
Reviewed-by: mesh-code-reviewer@shanks at 3bb8ace833d11070401dbc306627cfaf8fa3bee7 (round 2)
Pushed-by: fix-1965@shanks
The retiring ask's id is made from the key's digest and the time (at most 64 characters),
so a long key is asked. An ask the router's rules refuse is said in the key's why and in
provisioner_health. The Composition comment says what the code does: an unpublished
module keeps only its own plan and keys.
Builds: design 47 fix-unpublished-placed-module U6, U7, ADR 0593 §8
Deliverynovox/mesh-catalog@3bb8ace833d1 — merged since 2026-11-12T15:34:22Z
Source — source.main moved to novox/mesh-catalog@c0d666fdcf. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.
2026-11-12 15:03 (new) → proposed (announced): novox/mesh-catalog#666's head announced
2026-11-12 15:03 proposed → ready (accepted): a verdict names this commit and the trunk's head as its trunk commit, the gate passed or warned, and the repository's own check did not fail; or the check gates no merge (check-gates-merge false)
2026-11-12 15:34 ready → merged (merged): on the trunk its modules follow: merged there
The commit's note under refs/notes/mesh-plan keeps every transition of this change up to its merge: git log --notes=mesh-plan.
<!-- mesh-delivery:view -->
**Delivery** `novox/mesh-catalog@3bb8ace833d1` — **merged** since 2026-11-12T15:34:22Z
**Source** — source.main moved to novox/mesh-catalog@c0d666fdcf55. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves.
**Group** `fix/1966-unpublished-placed-module`: novox/mesh-catalog@3bb8ace833d1, novox/mesh-host@8e993c759a5c
**Transitions**
- 2026-11-12 15:03 (new) → proposed (announced): novox/mesh-catalog#666's head announced
- 2026-11-12 15:03 proposed → ready (accepted): a verdict names this commit and the trunk's head as its trunk commit, the gate passed or warned, and the repository's own check did not fail; or the check gates no merge (check-gates-merge false)
- 2026-11-12 15:34 ready → merged (merged): on the trunk its modules follow: merged there
The commit's note under `refs/notes/mesh-plan` keeps every transition of this change up to its merge: `git log --notes=mesh-plan`.
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 1966; design 47 fix-unpublished-placed-module U6 and U7 (hq design/47-unpublished-placed-module). Group with mesh-host fix/1966-unpublished-placed-module.
Live: the four *.mesh-build-node.secret-npm-package-registry keys stay retiring with the why "its ask waits until fewer than 3 of mesh-provisioner's asks stand open", while the router refuses each ask at every pass because its id is over 64 characters (holder.go ask id, operatorchannelclient ask.go:240).
Tests: TestARetiringAskIsBoundedAndARefusedOneIsSaid (fails with the old id). vet, vet -tags integration, unit and integration tests of the module pass.
Reviewed-by: mesh-code-reviewer@shanks at
3bb8ace833(round 2)Pushed-by: fix-1965@shanks
Delivery
novox/mesh-catalog@3bb8ace833d1— merged since 2026-11-12T15:34:22ZSource — source.main moved to novox/mesh-catalog@c0d666fdcf. Whether it reached the machines is
mesh-delivery-view's, derived fromsource.main, the wants and the haves.Group
fix/1966-unpublished-placed-module: novox/mesh-catalog@3bb8ace833, novox/mesh-host@8e993c759aTransitions
The commit's note under
refs/notes/mesh-plankeeps every transition of this change up to its merge:git log --notes=mesh-plan.