The seats change (ADRs 0109–0111 accepted, code merged in mesh-catalog #69 and mesh-controller #63) touches both manifests issue 121 names and landed the same day it was filed, so the first question was whether the deadlock had been fixed in passing. It has not.
The trail, from the code as merged:
builder's requirement is renamed package-registry → npm-package-registry, now a seat the forge holds and serves. Same relationship, a name the mesh defines.
The seat's holder is consulted only where several nodes provide the provision and no pin says which. With nothing providing it, resolution takes the no-providers branch and refuses: "nothing in this mesh provides "npm-package-registry", wanted by builder — assign gitea to a node". A refusal, not a deferral.
Ruled out: genesis has no exemption. Unchecked resolution looked like one, but it exists for the first of two passes and its own comment states a declaration is never built from an unchecked resolution — the pass that produces the declaration refuses.
The forge's manifest still carries its build section, so the other arm stands: the builder cannot resolve before the forge provides, and the forge cannot exist before the builder builds it.
The part worth recording is what did change: the three tests deliberately left failing were deleted by the controller's seats PR and replaced with passing seat-based ones. The gap the report kept visible is invisible again — the second time correct work has removed the evidence.
located-in: gains mesh-controller internal/catalogue/resolve.go, since that is where the refusal happens. Status stays located; the report's open questions are unchanged, and the diagnosis names the three shapes that would actually answer it.
Checks: cycle 284 documents, the chain holds; records 104, all passed; index current.
The seats change (ADRs 0109–0111 accepted, code merged in mesh-catalog #69 and mesh-controller #63) touches both manifests issue 121 names and landed the same day it was filed, so the first question was whether the deadlock had been fixed in passing. **It has not.**
The trail, from the code as merged:
1. `builder`'s requirement is renamed `package-registry` → `npm-package-registry`, now a seat the forge holds and serves. Same relationship, a name the mesh defines.
2. **The seat's holder is consulted only where several nodes provide the provision** and no pin says which. With nothing providing it, resolution takes the no-providers branch and refuses: *"nothing in this mesh provides \"npm-package-registry\", wanted by builder — assign gitea to a node"*. A refusal, not a deferral.
3. **Ruled out:** genesis has no exemption. `Unchecked` resolution looked like one, but it exists for the first of two passes and its own comment states a declaration is never built from an unchecked resolution — the pass that produces the declaration refuses.
4. The forge's manifest still carries its `build` section, so the other arm stands: the builder cannot resolve before the forge provides, and the forge cannot exist before the builder builds it.
The part worth recording is what *did* change: the three tests deliberately left failing were deleted by the controller's seats PR and replaced with passing seat-based ones. The gap the report kept visible is invisible again — the second time correct work has removed the evidence.
`located-in:` gains `mesh-controller internal/catalogue/resolve.go`, since that is where the refusal happens. Status stays `located`; the report's open questions are unchanged, and the diagnosis names the three shapes that would actually answer it.
Checks: cycle 284 documents, the chain holds; records 104, all passed; index current.
Asked first whether the seats change fixed this in passing, since it landed the same day and
touches both manifests the report names. It did not: the seat's holder is consulted only where
several nodes provide the thing, and with none providing it resolution refuses outright. Genesis
has no exemption — the unchecked first pass exists to learn what each node offers, and a
declaration is never built from it.
Records the part that did change: the three tests left failing on purpose were deleted by the
controller's seats PR and replaced with passing seat-based ones, so the gap is invisible again.
Adds the resolver to located-in, since that is where the refusal is.
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.
The seats change (ADRs 0109–0111 accepted, code merged in mesh-catalog #69 and mesh-controller #63) touches both manifests issue 121 names and landed the same day it was filed, so the first question was whether the deadlock had been fixed in passing. It has not.
The trail, from the code as merged:
builder's requirement is renamedpackage-registry→npm-package-registry, now a seat the forge holds and serves. Same relationship, a name the mesh defines.Uncheckedresolution looked like one, but it exists for the first of two passes and its own comment states a declaration is never built from an unchecked resolution — the pass that produces the declaration refuses.buildsection, so the other arm stands: the builder cannot resolve before the forge provides, and the forge cannot exist before the builder builds it.The part worth recording is what did change: the three tests deliberately left failing were deleted by the controller's seats PR and replaced with passing seat-based ones. The gap the report kept visible is invisible again — the second time correct work has removed the evidence.
located-in:gainsmesh-controller internal/catalogue/resolve.go, since that is where the refusal happens. Status stayslocated; the report's open questions are unchanged, and the diagnosis names the three shapes that would actually answer it.Checks: cycle 284 documents, the chain holds; records 104, all passed; index current.