Issue 263. Takes ADR 0049's option C and adds the two placements the issue asks for:
Each offer states the longest consumer identity its backend keeps (identity: {max, in} or false). If an offer says nothing: 20 when the provider is told its consumers (it receives the provision, or serves ${consumer:as}), and no bound when it is told nothing.
The catalogue check (module check, plus the controller's test over the real catalogue) judges every identity on the longest machine name before merge.
A provider leaves an overflowing consumer out of its grants and composes everything else. The consumer is named by push, by plan and in status, and the provider's machine is never refused.
Also in this PR: dated mechanism-changed notes on ADR 0049 and ADR 0202, the issue moved to located, and to-be 27 amended. records.py, index.py (regenerated) and cycle.py all pass.
Merge order: this PR, then novox/mesh-controller fix/263-identity-bound-per-provision, then novox/mesh-catalog fix/263-identity-bounds-per-provision. The catalogue goes last because older controllers parse manifests strictly and would refuse the new identity field.
Issue 263. Takes ADR 0049's option C and adds the two placements the issue asks for:
1. Each offer states the longest consumer identity its backend keeps (`identity: {max, in}` or `false`). If an offer says nothing: 20 when the provider is told its consumers (it receives the provision, or serves `${consumer:as}`), and no bound when it is told nothing.
2. The catalogue check (`module check`, plus the controller's test over the real catalogue) judges every identity on the longest machine name before merge.
3. A provider leaves an overflowing consumer out of its grants and composes everything else. The consumer is named by push, by plan and in `status`, and the provider's machine is never refused.
Also in this PR: dated mechanism-changed notes on ADR 0049 and ADR 0202, the issue moved to `located`, and to-be 27 amended. records.py, index.py (regenerated) and cycle.py all pass.
**Merge order:** this PR, then novox/mesh-controller `fix/263-identity-bound-per-provision`, then novox/mesh-catalog `fix/263-identity-bounds-per-provision`. The catalogue goes last because older controllers parse manifests strictly and would refuse the new `identity` field.
Issue 263: one global 20-character bound held keyless provisions to an
object store's key, was found only when a provider composed, and then
refused the provider's whole machine. Take ADR 0049's option C, check
overflows before merge, and leave an overflowing consumer out of its
provider's grants instead of refusing the provider.
Deliverynovox/hq@09fa192cac0e — held since 2026-10-06T23:05:28Z
Held for a person: merged without a passing check: only a person decides that it goes on — mesh-delivery.release with why lets it go on.
Delivery plan — builds nothing: the change touches no module of the mesh's graph
Transitions
2026-10-06 23:05 (new) → proposed (announced): novox/hq#127 merged; its head was not heard by this owner, so it is made from the forge's word
2026-10-06 23:05 proposed → held (merged-unchecked): merged without a passing check — a verdict known with it is taken first: only a person decides that it goes on
The commit's note under refs/notes/mesh-plan keeps every transition: git log --notes=mesh-plan.
<!-- mesh-delivery:view -->
**Delivery** `novox/hq@09fa192cac0e` — **held** since 2026-10-06T23:05:28Z
Held for a person: merged without a passing check: only a person decides that it goes on — `mesh-delivery.release` with why lets it go on.
**Delivery plan** — builds nothing: the change touches no module of the mesh's graph
**Transitions**
- 2026-10-06 23:05 (new) → proposed (announced): novox/hq#127 merged; its head was not heard by this owner, so it is made from the forge's word
- 2026-10-06 23:05 proposed → held (merged-unchecked): merged without a passing check — a verdict known with it is taken first: only a person decides that it goes on
The commit's note under `refs/notes/mesh-plan` keeps every transition: `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 263. Takes ADR 0049's option C and adds the two placements the issue asks for:
identity: {max, in}orfalse). If an offer says nothing: 20 when the provider is told its consumers (it receives the provision, or serves${consumer:as}), and no bound when it is told nothing.module check, plus the controller's test over the real catalogue) judges every identity on the longest machine name before merge.status, and the provider's machine is never refused.Also in this PR: dated mechanism-changed notes on ADR 0049 and ADR 0202, the issue moved to
located, and to-be 27 amended. records.py, index.py (regenerated) and cycle.py all pass.Merge order: this PR, then novox/mesh-controller
fix/263-identity-bound-per-provision, then novox/mesh-catalogfix/263-identity-bounds-per-provision. The catalogue goes last because older controllers parse manifests strictly and would refuse the newidentityfield.Delivery
novox/hq@09fa192cac0e— held since 2026-10-06T23:05:28ZHeld for a person: merged without a passing check: only a person decides that it goes on —
mesh-delivery.releasewith why lets it go on.Delivery plan — builds nothing: the change touches no module of the mesh's graph
Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.