You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
metadata-protocol: a pair row declared for package X is served at an addition package Z's exact address as Z's item, where the registry answers Z's own (ADR-0150 D4, red line 2) #32606
Parent: #31527 (ADR-0150, epic red line 2: ambiguity reported, never guessed; another package's customization is never served at this address). Found by server seat 5 while working #32561, measured at PR #32557's head 075fb3188 and again after #32561's local fix, which does not change it. Detail: /mnt/project-files/server-seatC/card-32561/finding-declared-row-at-addition.md.
Premise
Setup:
App A (com.acme.suite) has module packages X and Z. Z depends on A and on X.
X ships welcome in en-US. Z ships only fr-FR, a bundle addition to X's template.
A.custom stores a fr-FR row declaring overrides: { package: X }, both stored and hydrated.
What happens:
?package=X&member=fr-FR serves the row. This is correct: the row is declared for X.
?package=Z&member=fr-FR serves the same row, restamped _packageId: Z with provenance: package and _diagnostics.valid: false.
The registry answers Z's own item there: getPackageScopedItem(Z, 'welcome', 'fr-FR') is Z's fr-FR.
CONTROL: a full holder Y (which ships en-US and fr-FR) serves its own item at ?package=Y&member=fr-FR.
So a row declared for X is served at an addition's address as that addition's item. The exact qualifier's pair arm never sees it: the item arrives already stamped Z, so exactQualifierItem returns it.
Likely surface (estimated by the finder, not measured): findServedOverlayRow and servedOverlayRowCandidates in packages/metadata-protocol/src/protocol-environment-rows.ts. These produce the pair's served-override candidate for a package that depends on the declared base.
Re-check: the harness above in packages/objectql/src/package-scoped-exact-qualifier.test.ts, reading ?package=Z&member=fr-FR.
Fix shape
At Z's exact address, a row whose overrides.package names X is not Z's layer. Serve what the registry answers at Z, which is Z's own item.
Sweep every served-override candidate reader for the same "depends on the declared base" shortcut.
Pin both registration orders, with CONTROLs for X's own address and for a full holder.
Declare the move FROM → TO with its arm, narrowing. The first-party count is expected to be 0.
Order
Same lane as #32561 (server seat 5). Lands after #32561, because both touch the exact read's pair rows.
Parked by the epic #31527 release-line ruling 6824949405 (the maintainer's decision card on the epic seat's thread, project "Objectstack security ui"): this is a p2 card of the epic with no open PR, so it is not on the release line. The maintainer's follow-up (13:30Z) keeps cards that are already built on a pushed branch going to merge; this card has no branch, so it parks.
Restart-when: the release that carries the epic #31527 release line is published (ruling on #31527, comment 6824949405)
State: Unclaimed and unstarted; its Blocked-by: line stays for the restart. pm:blocked → pm:on-hold; no assignee. Nothing is deleted.
Un-parked · #32606 · 2026-11-12T21:35Z. The maintainer (Sales) lifted the park of unstarted p2 epic cards (ruling record 6836538545 on #31527, amending 6824949405). pm:on-hold → pm:queue; the epic seat dispatches it (see that record for the seat).
⛔ Not a claim; grade and state unchanged. Open card(s) #32849 name this card on a line-leading Blocked-by:, so the derived cache is added. It comes off when they close or drop the line.
Claim: area-lease pilot #33059, area E1 (seat domain:server#5, rules /mnt/project-files/server-area-pilot/pilot-rules.md) · 2026-11-14T14:53Z
Session: session_016WV4cy1y7UNVbT2QAdmgdn (area E1 thread)
Account: os-elon-musk
Branch: claude/project-thread-725bea
Worktree: objectstack-issue-32606
Domain: domain:server
Seat: domain:server#5 (lease E1)
File surface: packages/metadata-protocol/src/** (the moved-edit predicates and their three callers), packages/objectql/src/package-scoped-exact-qualifier.test.ts, the spec semantic entry, changesets
Clause-②: no
Metadata-protocol: semantic
Responsibility: an App pair row declared for X is no longer served at a bundle addition Z's address, list, execution list or customizations read while X still ships the name (PR #33251)
Premise: holds — measured on maine540baf in both registration orders before any edit (Z's address, list and execution list served the row stamped Z)
Activity
objectstack-fleet commentedon Nov 12, 2026
triage#1 · hotlong · session_01Q4EjjMnyLqJdzuktEmRPXH
Path: none
Triage:
findingpromoted →domain:server· p2 ·pm:blocked· 2026-11-12T07:47Z⛔ Not a claim.
domain:server(packages/metadata-protocolexact read at an addition package's address). Linked under design(metadata): address behavioural metadata by package — key flows, actions, jobs and other non-object types by (package, name); re-open ADR-0028 (replaces #30806 phase 3 renames) #31527.Blocked-by: #32561is indexed; metadata-protocol: the exact read binds an undeclared App-pair row to X even when an addition package ships the same bundle member, where the registry binds it to no package (ADR-0150 D4, red line 2) #32561 is open. Grade: p2, as metadata-protocol: the exact read binds an undeclared App-pair row to X even when an addition package ships the same bundle member, where the registry binds it to no package (ADR-0150 D4, red line 2) #32561 (the same red line 2 family).Generated by Claude Code
objectstack-fleet commentedon Nov 12, 2026
domain:server#1 · os-sales · session_01L6bhgVaKJ9TPfXPRhdqx3e
Parked by the epic #31527 release-line ruling 6824949405 (the maintainer's decision card on the epic seat's thread, project "Objectstack security ui"): this is a p2 card of the epic with no open PR, so it is not on the release line. The maintainer's follow-up (13:30Z) keeps cards that are already built on a pushed branch going to merge; this card has no branch, so it parks.
Restart-when: the release that carries the epic #31527 release line is published (ruling on #31527, comment 6824949405)
State: Unclaimed and unstarted; its
Blocked-by:line stays for the restart.pm:blocked→pm:on-hold; no assignee. Nothing is deleted.objectstack-fleet commentedon Nov 12, 2026
epic:#31527#1 · os-sales · session_01L6bhgXQnNkXTT1Wu7i7Y3i
Un-parked · #32606 · 2026-11-12T21:35Z. The maintainer (Sales) lifted the park of unstarted p2 epic cards (ruling record 6836538545 on #31527, amending 6824949405).
pm:on-hold→pm:queue; the epic seat dispatches it (see that record for the seat).Generated by Claude Code
objectstack-fleet commentedon Nov 13, 2026
triage#1 · hotlong · session_01Q4EjjMnyLqJdzuktEmRPXH
Path: none
Triage: H14 ·
pm:blockingderived · 2026-11-13T12:18Z⛔ Not a claim; grade and state unchanged. Open card(s) #32849 name this card on a line-leading
Blocked-by:, so the derived cache is added. It comes off when they close or drop the line.objectstack-fleet commentedon Nov 14, 2026
domain:server#5 · os-elon-musk · session_016WV4cy1y7UNVbT2QAdmgdn
Claim: area-lease pilot #33059, area E1 (seat domain:server#5, rules /mnt/project-files/server-area-pilot/pilot-rules.md) · 2026-11-14T14:53Z
Session:
session_016WV4cy1y7UNVbT2QAdmgdn(area E1 thread)Account:
os-elon-muskBranch:
claude/project-thread-725beaWorktree:
objectstack-issue-32606Domain:
domain:serverSeat:
domain:server#5(lease E1)File surface:
packages/metadata-protocol/src/**(the moved-edit predicates and their three callers),packages/objectql/src/package-scoped-exact-qualifier.test.ts, the spec semantic entry, changesetsClause-②: no
Metadata-protocol: semantic
Responsibility: an App pair row declared for X is no longer served at a bundle addition Z's address, list, execution list or customizations read while X still ships the name (PR #33251)
Premise: holds — measured on
maine540baf in both registration orders before any edit (Z's address, list and execution list served the row stamped Z)