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: after a package-less write of an action name, the host package comes back as a phantom holder in the bare read (the boot pass's host stamp on a stored row; follow-up of #32791) #32812
Follow-up of #32791 (PR #32802). Finding S2 of PR #32802's contract review (6835430791). The epic #31527 seat ruled it its own card on the release line, p1. Dispatch it after PR #32676 (card #32521) has merged, because the preferred fix touches that PR's boot-pass guard (D1).
What moves
Composition of #32791 (one package com.alpha.app holds the action name in a stored row, a package-less stored row of the name is saved last, the host declares com.host.app). PR #32802 corrects the bare read right after the boot pass. After one package-less write it is wrong again:
register('action', 'helper', body) with no package, then the bare read
the written body
409 RESOURCE_CONFLICT naming com.host.app, com.alpha.app and the environment
registerInMemory of a package-less item, then the bare read
the item
the same 409
It fails closed (a refusal, no widening, no silent pick), but it names a holder that does not exist (ADR-0150 red line 2), and #32791's TO holds only for the state right after the boot pass.
Claim: PM loop round 1 · 2026-11-13T00:51Z
Session: session_01L6bhgVSjQBHNkZd6Eqx2XX (the seat; a card thread implements and its session is named in the os-dev-report)
Account: os-sales
Branch: platform-assigned claude/project-thread-* (named in the PR)
Worktree: card thread container
Domain: domain:server
Seat: domain:server#7
File surface: packages/metadata/src/** (the boot priming pass in plugin.ts, metadata-manager.ts, package-slotted-store.ts), its tests, the changeset (stop on breach; explain in the report)
Container & model: M, mode:thread, model: default tier, effort: high (Sales economy rule 2026-11-12T21:58Z: M card code and gates high; design and red-line self-read in an xhigh sub-agent)
Clause-②: no expected (a refusal naming a holder that does not exist moves to the written body; #32560 has not shipped), to be measured per moved answer
Metadata-protocol: none
Responsibility: objectstack, packages/metadata boot priming pass and the bare read's judged view (PR #32802, #32676) | after a package-less write the host package is counted as a holder again | hosts that declare their package and wire a DatabaseLoader; first-party reach to be measured
Ruling: epic seat design direction on the card (preferred B: the boot pass does not give the host's stamp to a package-less stored row); release line, p1 (epic #31527 dispatch order 2026-11-12T22:50Z).
Thread-read: none
Premise: holds (card body; PR #32676 and PR #32802 merged)
Serial constraints cleared: PR #32802 (card #32791) merged; no other in-flight card of this seat touches packages/metadata
{
"issue": 32812,
"status": "done",
"branch": "claude/project-thread-y90728 (platform-assigned)",
"pr": "https://github.com/objectstack-ai/objectstack/pull/33006",
"session": "session_01L6bhgVHhRMN8oWxaL4Ph3X (card thread of domain:server#7)",
"premise_still_valid": true,
"summary": "Design B-slotted (step 0 measured B against A in an xhigh sub-agent; epic seat ruled the scope and the Clause-② value): the boot priming pass no longer gives the host's package stamp to a package-less stored row of the ten types stored per (package, name) (plugin.ts unstampedStoredRow, replacing #32521's contestedNames). PR #32802's read-time filing has nothing left to file for the boot pass and is removed (metadata-manager.ts and package-slotted-store.ts byte-identical to 25ee5076^); every #32791 CONTROL passes unchanged. Both rows of the card's table move from 409 naming the host's package to the written item; the bare removal now names the holders the bare read names; 13 existing pins move, each with FROM (main 25ee5076) and TO in its comment, every TO being the host-none answer. B-all was conditional on no reader of the stamp for object/view/app/hook/dashboard; ObjectQL registers an object read from the metadata service under its _packageId, so it fell back to B-slotted (reported to the seat).",
"tests": "pnpm --filter @objectstack/metadata test at ec483d4f: 76 files, 2089 passed (2089). database-loader.test.ts over main 25ee5076's three source files: 18 failed (5 new pins + 13 moved) | 258 passed (276), restored blob == HEAD, git diff HEAD empty. Ablations at 571346fc via scripts/ablation-replace.mjs (anchor hit 1, restored blob == HEAD each): ABL_32812_STAMP 48 failed, ABL_32812_ACTION 32 failed, ABL_32812_LOADER 20 failed, ABL_32812_PKG 1 failed (src-imported suite, no dist step). Step-0 probe re-run on 571346fc: sections A-D (2082 cells) and F byte-identical to the B-slotted measurement; E differs in E1 only (declared). typecheck exit 0 at 571346fc.",
"gates": "dispatch-gates --commands at ec483d4f: 70 derived, all 70 run after a full pnpm turbo run build --concurrency=2 (120/120, exit 0): 70 exit 0. --ran: 70 run, 0 NOT-MEASURED, 0 UNRUN. Changeset gates check-changeset-no-major, check-empty-changeset, check-adr-0087-registration (base and self-test) exit 0 among them. CI check-runs: in_progress at report time.",
"dogfood_battery": "ec483d4f · os-verify-lock VERDICT command-exit 0 · Test Files 457 passed | 3 skipped (460) · Tests 3837 passed | 42 skipped (3879) · no failure",
"mcp_calls": "0 MCP GitHub calls (reads via gh api REST only)",
"api_writes": "relay writes for this card: pr_create #33006 with assignee os-sales; the Ruling-ref comment on #33006; this report. Seat-thread messages are not GitHub writes. One further write is with the owner seat.",
"open_questions": [],
"security_findings": "withheld",
"out_of_scope_findings": [
"carrier: domain:server#7 seat · the epic seat ruled two follow-up cards the seat files: the non-by-package types' unregisterPackage of the host removing the environment's own rows (p1 under #32198), and rows an earlier release's boot pass wrote the host's stamp into (p2 under #32791)",
"carrier: domain:server#7 seat · #32752's by-host difference is gone at this head (declared); the seat updates or closes #32752",
"carrier: domain:server#7 seat · #32813: in the card's composition the bare removal now agrees with the bare read (pinned); the seat tells #32813"
],
"deviations": "Commit 7a3dbecc's Claude-Session trailer names the seat's session instead of this card thread's (session_01L6bhgVHhRMN8oWxaL4Ph3X); history not rewritten. The #32791 changeset is not edited (its no-longer-true statements are named in this PR's changeset instead). Pending: after #32999 lands, merge main once and rerun the affected gates (seat order)."
}
Landed · #32812 · 2026-11-13T06:33Z — PR #33006 (ACCEPT 6845551766; contract review r2 PASS 6845067990 on f61e8ab1) merged as 64c426ab22aa1f13290240aff1cd02dc1bf56027 (on origin/main). pm:dispatched removed in this stroke. Follow-ups (sub-issues, queued): #33013 (N3) and #33035 (S4). #32752 closes on this landing. #32813 is to be re-measured against main.
Activity
objectstack-fleet commentedon Nov 12, 2026
triage#1 · hotlong · session_01Q4EjjMnyLqJdzuktEmRPXH
Path: none
Triage: first touch →
domain:server· p1 ·pm:queue· 2026-11-12T21:52Z⛔ Not a claim.
domain:server(the boot pass's host stamp on a bare action read). Part of 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 (ADR-0150 release line).Generated by Claude Code
objectstack-fleet commentedon Nov 13, 2026
domain:server#7 · os-sales · session_01L6bhgVSjQBHNkZd6Eqx2XX
Claim: PM loop round 1 · 2026-11-13T00:51Z
Session:
session_01L6bhgVSjQBHNkZd6Eqx2XX(the seat; a card thread implements and its session is named in the os-dev-report)Account:
os-salesBranch: platform-assigned
claude/project-thread-*(named in the PR)Worktree: card thread container
Domain:
domain:serverSeat:
domain:server#7File surface:
packages/metadata/src/**(the boot priming pass inplugin.ts,metadata-manager.ts,package-slotted-store.ts), its tests, the changeset (stop on breach; explain in the report)Container & model:
M,mode:thread,model: default tier,effort: high(Sales economy rule 2026-11-12T21:58Z: M card code and gates high; design and red-line self-read in an xhigh sub-agent)Clause-②: no expected (a refusal naming a holder that does not exist moves to the written body; #32560 has not shipped), to be measured per moved answer
Metadata-protocol: none
Responsibility:
objectstack, packages/metadata boot priming pass and the bare read's judged view (PR #32802, #32676)| after a package-less write the host package is counted as a holder again |hosts that declare their package and wire a DatabaseLoader; first-party reach to be measuredRuling: epic seat design direction on the card (preferred B: the boot pass does not give the host's stamp to a package-less stored row); release line, p1 (epic #31527 dispatch order 2026-11-12T22:50Z).
Thread-read: none
Premise: holds (card body; PR #32676 and PR #32802 merged)
Serial constraints cleared: PR #32802 (card #32791) merged; no other in-flight card of this seat touches
packages/metadataobjectstack-fleet commentedon Nov 13, 2026
domain:server#7 · os-sales · session_01L6bhgVHhRMN8oWxaL4Ph3X
os-dev-report
Reported 2026-11-13T03:46Z at head
ec483d4f.{ "issue": 32812, "status": "done", "branch": "claude/project-thread-y90728 (platform-assigned)", "pr": "https://github.com/objectstack-ai/objectstack/pull/33006", "session": "session_01L6bhgVHhRMN8oWxaL4Ph3X (card thread of domain:server#7)", "premise_still_valid": true, "summary": "Design B-slotted (step 0 measured B against A in an xhigh sub-agent; epic seat ruled the scope and the Clause-② value): the boot priming pass no longer gives the host's package stamp to a package-less stored row of the ten types stored per (package, name) (plugin.ts unstampedStoredRow, replacing #32521's contestedNames). PR #32802's read-time filing has nothing left to file for the boot pass and is removed (metadata-manager.ts and package-slotted-store.ts byte-identical to 25ee5076^); every #32791 CONTROL passes unchanged. Both rows of the card's table move from 409 naming the host's package to the written item; the bare removal now names the holders the bare read names; 13 existing pins move, each with FROM (main 25ee5076) and TO in its comment, every TO being the host-none answer. B-all was conditional on no reader of the stamp for object/view/app/hook/dashboard; ObjectQL registers an object read from the metadata service under its _packageId, so it fell back to B-slotted (reported to the seat).", "tests": "pnpm --filter @objectstack/metadata test at ec483d4f: 76 files, 2089 passed (2089). database-loader.test.ts over main 25ee5076's three source files: 18 failed (5 new pins + 13 moved) | 258 passed (276), restored blob == HEAD, git diff HEAD empty. Ablations at 571346fc via scripts/ablation-replace.mjs (anchor hit 1, restored blob == HEAD each): ABL_32812_STAMP 48 failed, ABL_32812_ACTION 32 failed, ABL_32812_LOADER 20 failed, ABL_32812_PKG 1 failed (src-imported suite, no dist step). Step-0 probe re-run on 571346fc: sections A-D (2082 cells) and F byte-identical to the B-slotted measurement; E differs in E1 only (declared). typecheck exit 0 at 571346fc.", "gates": "dispatch-gates --commands at ec483d4f: 70 derived, all 70 run after a full pnpm turbo run build --concurrency=2 (120/120, exit 0): 70 exit 0. --ran: 70 run, 0 NOT-MEASURED, 0 UNRUN. Changeset gates check-changeset-no-major, check-empty-changeset, check-adr-0087-registration (base and self-test) exit 0 among them. CI check-runs: in_progress at report time.", "dogfood_battery": "ec483d4f · os-verify-lock VERDICT command-exit 0 · Test Files 457 passed | 3 skipped (460) · Tests 3837 passed | 42 skipped (3879) · no failure", "mcp_calls": "0 MCP GitHub calls (reads via gh api REST only)", "api_writes": "relay writes for this card: pr_create #33006 with assignee os-sales; the Ruling-ref comment on #33006; this report. Seat-thread messages are not GitHub writes. One further write is with the owner seat.", "open_questions": [], "security_findings": "withheld", "out_of_scope_findings": [ "carrier: domain:server#7 seat · the epic seat ruled two follow-up cards the seat files: the non-by-package types' unregisterPackage of the host removing the environment's own rows (p1 under #32198), and rows an earlier release's boot pass wrote the host's stamp into (p2 under #32791)", "carrier: domain:server#7 seat · #32752's by-host difference is gone at this head (declared); the seat updates or closes #32752", "carrier: domain:server#7 seat · #32813: in the card's composition the bare removal now agrees with the bare read (pinned); the seat tells #32813" ], "deviations": "Commit 7a3dbecc's Claude-Session trailer names the seat's session instead of this card thread's (session_01L6bhgVHhRMN8oWxaL4Ph3X); history not rewritten. The #32791 changeset is not edited (its no-longer-true statements are named in this PR's changeset instead). Pending: after #32999 lands, merge main once and rerun the affected gates (seat order)." }Generated by Claude Code
test(metadata): type the S1 table read's options as never, not any (#…
Merge origin/main into claude/project-thread-y90728 (#32812)
objectstack-fleet commentedon Nov 13, 2026
domain:server#7 · os-sales · session_01L6bhgVSjQBHNkZd6Eqx2XX
Landed · #32812 · 2026-11-13T06:33Z — PR #33006 (ACCEPT 6845551766; contract review r2 PASS 6845067990 on
f61e8ab1) merged as64c426ab22aa1f13290240aff1cd02dc1bf56027(onorigin/main).pm:dispatchedremoved in this stroke. Follow-ups (sub-issues, queued): #33013 (N3) and #33035 (S4). #32752 closes on this landing. #32813 is to be re-measured against main.test(metadata): move the #32812 object-less pin, whose registry now h…