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
spec(api): add names to GetMetaItemsRequestSchema — a batch by-names read on every /meta/:type list (#29236 ruling A) #29441
Source: ruling A on #29236 (6580261740, batch #458 item 2, maintainer 「同意」). The ruling orders the spec half first. The server PR (#29236, parked thread claude/project-thread-ddr31t) is Blocked-by this card.
Ask.packages/spec/src/api/protocol.zod.ts: GetMetaItemsRequestSchema gains an optional names, a list of item machine names. On the wire it is one comma-separated value, ?names=a,b,c, the data routes' convention for fields and orderby. Its describe says that only the named items are answered, that an unknown name is simply absent (no 404), and that an empty value is refused with 400. Regenerate and commit gen:schema, gen:docs and the api-surface artifacts.
Declarations: Clause-②: yes (widening), Metadata-protocol: none (an API key, not authorable metadata). A spec minor.
Not in this card: the rest chain step, the empty refusal, the list door's closed query set, the dispatcher twin, the store push-down and the client option. Those are the server PR on #29236.
Raised to p1: a new key on the published API contract is a protocol addition, which is p1 by standing ruling (「协议新增定 p1」). The name and its wire shape were in the ruled option, so no separate name approval is owed.
Claim: PM loop round 1
Session: session_01WGufzhJG3tKnksHVa1krBz
Account: os-support-ai
Branch: claude/project-thread-0neu2n (card thread, executor session_01WGufzik1dDv4DzrV1fWBV9; the thread can push only its own branch, the measured platform exception to claude/issue-29441-…)
Worktree: objectstack-issue-29441
Domain: domain:spec
Seat: domain:spec#2
File surface: packages/spec/src/api/protocol.zod.ts (GetMetaItemsRequestSchema ≈:242 only), its tests, the regenerated gen:schema / gen:docs / api-surface artifacts, .changeset/29441-meta-items-names.md
Container & model: S, mode:thread, model: TIER_DEFAULT (reason: Clause-② widening is default-judgment tier; contract review goes to triage, the account's at-tier budget is spent, maintainer 2026-10-28), effort: xhigh (p1)
Clause-②: yes
Metadata-protocol: none
Responsibility: n/a — not a defect card
Thread-read: 6582535222
Premise: holds — ruling A on #29236 (6580261740) orders the spec half first; GetMetaItemsRequestSchema on origin/main744211fc has no names; the protocol.ts freeze was lifted at 6588593530.
Serial constraints cleared: #29415 (this seat, claude/project-thread-fbdrz1) edits the cascadeDeleteObjects describes in the same file and PR #29628 edits the device-registration schemas (≈:3519+): different regions, ordinary concurrency. #29236's server PR is Blocked-by this card.
Claim amendment to 6592535841 (same session, same branch claude/project-thread-0neu2n).
Clause-②: yes
Metadata-protocol: added
Reason: names moves the packages/spec/authorable-surface/api.json shard (api/GetMetaItemsRequest:names, beside GetMetaItemsRequest:previewDrafts), so check-changeset-no-major.mjs refuses none at any level (none-baseline-moved). A newly accepted key is added by AGENTS.md's rule; precedents #29521 (45b4922d) and #29100 (f1d795b1) moved the same shard with an API key and declared Clause-②: yes (widening) + Metadata-protocol: added + spec minor. The ruled "spec minor" stands. Measured by the executor before the PR opened.
{
"issue": 29441,
"status": "done",
"branch": "claude/project-thread-0neu2n",
"pr": "https://github.com/objectstack-ai/objectstack/pull/29722",
"head": "064d4e01dc713cb2df6c30f60acf97c0a1cb6866",
"session": "session_01WGufzik1dDv4DzrV1fWBV9",
"premise_still_valid": true,
"summary": "GetMetaItemsRequestSchema (packages/spec/src/api/protocol.zod.ts, ~:242 on origin/main 744211fc) gains optional names: z.array(z.string()).min(1, ...), with the describe the card names (only the named items answered, unknown name simply absent / no 404, empty value refused with 400, wire spelling ?names=a,b,c) and the rationale in the schema docblock. Empty-list choice: the ?id= sibling has no spec member (its empty refusal is the REST door's refuseEmptyListFilter), so it answers nothing about a list member; the ruling's named spelling siblings do declare it (searchFieldsArray = z.array(z.string()).min(1), transportProjectionArray), so names follows searchFieldsArray: .min(1), no member check, minItems: 1 in the published JSON Schema. Declarations: Clause-② yes (widening) + Metadata-protocol added + @objectstack/spec minor, not the card's none: check-changeset-no-major refuses none with a minor (none-minor) and whenever an authorable-surface shard moves (none-baseline-moved), and gen:schema adds api/GetMetaItemsRequest:names to authorable-surface/api.json; precedents #29521 and #29100; seat 2 agreed and amended the claim (6592613238). origin/main (14 commits) merged before the PR opened via os-regen-merge.sh; the delta vs main is exactly 5 files, +107/-0.",
"tests": "On final head 064d4e01d under os-verify-lock: spec test Test Files 803 passed (803), Tests 23793 passed | 1 todo; spec typecheck exit 0; spec test:repo 89/89 files, 1522 tests. Pre-merge head c968b47f: spec test 802/802 files, 23739 tests; typecheck 0; test:repo 89/89, 1522. New describe in protocol.test.ts: 7 cases (parse with names preserves the list; absent-names control; [] refused with one too_small at ['names']; members not judged; comma string and non-string member refused; z.toJSONSchema minItems 1; type pin string[] | undefined). Ablation (one) on c968b47f in a detached worktree via ablation-replace.mjs: .min(1, ...) -> .min(0, 'ABLATED-29441'), anchor x1->x0, blob e8475ac80907->e261fbcb5c77; control 7 passed, mutated 2 failed | 5 passed (empty-list refusal, JSON Schema minItems); restored blob = HEAD blob, git diff HEAD empty. Spec suites read src by relative path, so no build/dist preflight.",
"gates": "dispatch-gates --commands --repo objectstack-ai/objectstack on 064d4e01d: 102 derived (5 paths vs merge base 3d5933a97), run serially: 102 exit 0; --ran: 102 derived, 102 run, 0 NOT-MEASURED, 0 UNRUN. Pre-merge c968b47f: same 102, 96 exit 0 + 6 exit 3 (unbuilt lint/formula dist and dist-reading gates) -> all 6 exit 0 after full turbo build 117/117; --ran 102/102. check-changeset-no-major with this PR body as event: exit 0 (yes (widening), added); control with Metadata-protocol: none exit 1 none-baseline-moved. spec check:generated after the merged-head build: all 14 current. check-closing-keyword-parity --body: report mode, one declaration Fixes #29441. check:dev-prereqs exit 0. CI check-runs on 064d4e01d at report time: 34 runs, 8 success, 7 skipped, 19 in_progress, 0 failed.",
"dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm",
"mcp_calls": "0 — no MCP GitHub calls; reads were unauthenticated REST GETs through the proxy",
"api_writes": "3 relay writes — pr_create (#29722, body 11214 bytes stored identical, assignee os-support-ai), pr_request_reviewers (#29722, os-support-ai, read back), this os-dev-report comment on #29441; plus 3 git pushes of the branch",
"deviations": [
"Metadata-protocol: added (card and claim: none) — gate-forced, seat 2 agreed, claim amended 6592613238",
"Clause-②: yes (widening) per card and order; the claim spells Clause-②: yes (same semver reading)",
"pr_create carried assignees [os-support-ai] per AGENTS.md (the PR's assignee mirrors the card's, set by the executor at pr_create), over os-dev.md's no-assignees line; pr_request_reviewers sent per the harness instruction",
"the PR attribution line links this card thread (the harness's required block), not the seat thread the order quoted",
"origin/main merged before opening per AGENTS.md §10; the PR is not subscribed for activity (the dispatch contract owns CI convergence)",
"api-surface/ did not move: no export added or removed (check:api-surface green on the rebuilt dist)"
],
"open_questions": [],
"security_findings": "none",
"out_of_scope_findings": [
"carrier: domain:server#5 (the server PR on #29236) · noted, not filed: ruling 6580261740's server workload reads 'rest / metadata-protocol / client minor' beside 'Metadata-protocol: none'; check-changeset-no-major refuses none with any minor (none-minor), so that PR owes a kind (added, for the new client option and door parameter) or patch levels"
]
}
State change: pm:dispatched removed. pm:blocking is left for the triage sweep (its dependant #29236 is now unblocked). The server half's inherited obligations are on #29236 (6594515725).
Activity
objectstack-fleet commentedon Nov 2, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Path: none
Triage: first-touch audit · p1 (was p2) ·
domain:speckept ·pm:queue· 2026-11-02T16:34Z⛔ Not a claim.
GetMetaItemsRequestSchemagains an optionalnames(?names=a,b,c), executing ruling A on Metadata API: no batch by-names read, so the Console roster gate costs one /meta/object request per name #29236 (6580261740, the maintainer's 「同意」). The ruling orders the spec half first, and Metadata API: no batch by-names read, so the Console roster gate costs one /meta/object request per name #29236's server PR is blocked behind this card.Generated by Claude Code
objectstack-fleet commentedon Nov 3, 2026
domain:spec#2 · os-support-ai · session_01WGufzhJG3tKnksHVa1krBz
Claim: PM loop round 1
Session:
session_01WGufzhJG3tKnksHVa1krBzAccount:
os-support-aiBranch:
claude/project-thread-0neu2n(card thread, executorsession_01WGufzik1dDv4DzrV1fWBV9; the thread can push only its own branch, the measured platform exception toclaude/issue-29441-…)Worktree:
objectstack-issue-29441Domain:
domain:specSeat:
domain:spec#2File surface:
packages/spec/src/api/protocol.zod.ts(GetMetaItemsRequestSchema≈:242 only), its tests, the regenerated gen:schema / gen:docs / api-surface artifacts,.changeset/29441-meta-items-names.mdContainer & model:
S,mode:thread,model: TIER_DEFAULT (reason: Clause-② widening is default-judgment tier; contract review goes to triage, the account's at-tier budget is spent, maintainer 2026-10-28),effort: xhigh (p1)Clause-②: yes
Metadata-protocol: none
Responsibility:
n/a — not a defect cardThread-read: 6582535222
Premise: holds — ruling A on #29236 (6580261740) orders the spec half first;
GetMetaItemsRequestSchemaonorigin/main744211fchas nonames; theprotocol.tsfreeze was lifted at 6588593530.Serial constraints cleared: #29415 (this seat,
claude/project-thread-fbdrz1) edits thecascadeDeleteObjectsdescribes in the same file and PR #29628 edits the device-registration schemas (≈:3519+): different regions, ordinary concurrency. #29236's server PR is Blocked-by this card.objectstack-fleet commentedon Nov 3, 2026
domain:spec#2 · os-support-ai · session_01WGufzhJG3tKnksHVa1krBz
Claim amendment to 6592535841 (same session, same branch
claude/project-thread-0neu2n).Clause-②: yes
Metadata-protocol: added
Reason:
namesmoves thepackages/spec/authorable-surface/api.jsonshard (api/GetMetaItemsRequest:names, besideGetMetaItemsRequest:previewDrafts), socheck-changeset-no-major.mjsrefusesnoneat any level (none-baseline-moved). A newly accepted key isaddedby AGENTS.md's rule; precedents #29521 (45b4922d) and #29100 (f1d795b1) moved the same shard with an API key and declaredClause-②: yes (widening)+Metadata-protocol: added+ spec minor. The ruled "spec minor" stands. Measured by the executor before the PR opened.objectstack-fleet commentedon Nov 3, 2026
domain:spec#2 · os-support-ai · session_01WGufzik1dDv4DzrV1fWBV9
os-dev-report
{ "issue": 29441, "status": "done", "branch": "claude/project-thread-0neu2n", "pr": "https://github.com/objectstack-ai/objectstack/pull/29722", "head": "064d4e01dc713cb2df6c30f60acf97c0a1cb6866", "session": "session_01WGufzik1dDv4DzrV1fWBV9", "premise_still_valid": true, "summary": "GetMetaItemsRequestSchema (packages/spec/src/api/protocol.zod.ts, ~:242 on origin/main 744211fc) gains optional names: z.array(z.string()).min(1, ...), with the describe the card names (only the named items answered, unknown name simply absent / no 404, empty value refused with 400, wire spelling ?names=a,b,c) and the rationale in the schema docblock. Empty-list choice: the ?id= sibling has no spec member (its empty refusal is the REST door's refuseEmptyListFilter), so it answers nothing about a list member; the ruling's named spelling siblings do declare it (searchFieldsArray = z.array(z.string()).min(1), transportProjectionArray), so names follows searchFieldsArray: .min(1), no member check, minItems: 1 in the published JSON Schema. Declarations: Clause-② yes (widening) + Metadata-protocol added + @objectstack/spec minor, not the card's none: check-changeset-no-major refuses none with a minor (none-minor) and whenever an authorable-surface shard moves (none-baseline-moved), and gen:schema adds api/GetMetaItemsRequest:names to authorable-surface/api.json; precedents #29521 and #29100; seat 2 agreed and amended the claim (6592613238). origin/main (14 commits) merged before the PR opened via os-regen-merge.sh; the delta vs main is exactly 5 files, +107/-0.", "tests": "On final head 064d4e01d under os-verify-lock: spec test Test Files 803 passed (803), Tests 23793 passed | 1 todo; spec typecheck exit 0; spec test:repo 89/89 files, 1522 tests. Pre-merge head c968b47f: spec test 802/802 files, 23739 tests; typecheck 0; test:repo 89/89, 1522. New describe in protocol.test.ts: 7 cases (parse with names preserves the list; absent-names control; [] refused with one too_small at ['names']; members not judged; comma string and non-string member refused; z.toJSONSchema minItems 1; type pin string[] | undefined). Ablation (one) on c968b47f in a detached worktree via ablation-replace.mjs: .min(1, ...) -> .min(0, 'ABLATED-29441'), anchor x1->x0, blob e8475ac80907->e261fbcb5c77; control 7 passed, mutated 2 failed | 5 passed (empty-list refusal, JSON Schema minItems); restored blob = HEAD blob, git diff HEAD empty. Spec suites read src by relative path, so no build/dist preflight.", "gates": "dispatch-gates --commands --repo objectstack-ai/objectstack on 064d4e01d: 102 derived (5 paths vs merge base 3d5933a97), run serially: 102 exit 0; --ran: 102 derived, 102 run, 0 NOT-MEASURED, 0 UNRUN. Pre-merge c968b47f: same 102, 96 exit 0 + 6 exit 3 (unbuilt lint/formula dist and dist-reading gates) -> all 6 exit 0 after full turbo build 117/117; --ran 102/102. check-changeset-no-major with this PR body as event: exit 0 (yes (widening), added); control with Metadata-protocol: none exit 1 none-baseline-moved. spec check:generated after the merged-head build: all 14 current. check-closing-keyword-parity --body: report mode, one declaration Fixes #29441. check:dev-prereqs exit 0. CI check-runs on 064d4e01d at report time: 34 runs, 8 success, 7 skipped, 19 in_progress, 0 failed.", "dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm", "mcp_calls": "0 — no MCP GitHub calls; reads were unauthenticated REST GETs through the proxy", "api_writes": "3 relay writes — pr_create (#29722, body 11214 bytes stored identical, assignee os-support-ai), pr_request_reviewers (#29722, os-support-ai, read back), this os-dev-report comment on #29441; plus 3 git pushes of the branch", "deviations": [ "Metadata-protocol: added (card and claim: none) — gate-forced, seat 2 agreed, claim amended 6592613238", "Clause-②: yes (widening) per card and order; the claim spells Clause-②: yes (same semver reading)", "pr_create carried assignees [os-support-ai] per AGENTS.md (the PR's assignee mirrors the card's, set by the executor at pr_create), over os-dev.md's no-assignees line; pr_request_reviewers sent per the harness instruction", "the PR attribution line links this card thread (the harness's required block), not the seat thread the order quoted", "origin/main merged before opening per AGENTS.md §10; the PR is not subscribed for activity (the dispatch contract owns CI convergence)", "api-surface/ did not move: no export added or removed (check:api-surface green on the rebuilt dist)" ], "open_questions": [], "security_findings": "none", "out_of_scope_findings": [ "carrier: domain:server#5 (the server PR on #29236) · noted, not filed: ruling 6580261740's server workload reads 'rest / metadata-protocol / client minor' beside 'Metadata-protocol: none'; check-changeset-no-major refuses none with any minor (none-minor), so that PR owes a kind (added, for the new client option and door parameter) or patch levels" ] }Generated by Claude Code
objectstack-fleet commentedon Nov 3, 2026
domain:spec#2 · os-support-ai · session_01WGufzhJG3tKnksHVa1krBz
Landed. PR #29722 merged through the queue (merge commit
6f094645); this card closed as completed by itsFixesline.MERGEDat 2026-11-03T03:58Z, headbb07931c, contract review PASS 6594380969 + delta 6594773032closed(completed)State change:
pm:dispatchedremoved.pm:blockingis left for the triage sweep (its dependant #29236 is now unblocked). The server half's inherited obligations are on #29236 (6594515725).