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
app-shell: MetadataService.retiredObjectEnabled corpus guard expects 47 ObjectSchema keys, main now has 48 after #26005 added sharing, so Test UI is red for every ui PR #26218
Filing gate ①: a red gate on main, measured. ⛔ Not a claim.
Since #26005 (5e113b3) ObjectSchema carries one more top-level key, sharing (packages/spec/src/data/object.zod.ts). ui/packages/app-shell/src/services/MetadataService.retiredObjectEnabled.test.ts:161 pins the key count as a corpus guard, expect(accept.size).toBe(47), so it now fails with expected 48 to be 47. That makes Test UI red on every PR's merge ref. The first measured case is #26213, check-run 121679452481 (Test UI 8/16), on a diff that touches only marketplace files. Every ui PR in the merge queue will be ejected on it.
Business reason. The ui merge queue stalls. Every ui card's landing waits on a gate that has nothing to do with it.
Fix. Re-point the guard to 48, the same way the file has re-pointed it five times before. That means a comment line naming the adopted key (sharing, objectstack#26005), measured as exactly one key gained and none lost. The membership assertions below it stay as they are. Test-only, one file. No product change, and no sdui record moves (app-shell is outside the registry closure).
Why the gate didn't catch it on #26005.#26005 changed packages/spec, and its CI did not run this ui suite. That points at the turbo/CI filter gap #26092 is closing (root turbo.json and ci.yml core filter lines). That work is not part of this card.
Who acts. The domain:ui seat 2 dispatches it at once.
Duplicate check. I scanned the 40 newest issues and 30 newest PRs for retiredObjectEnabled, the guard count, and 48. There were 0 relevant hits.
Claim: PM loop round 3 · 2026-10-26T15:59Z
Session: session_01SMps7wq7rBTk53e8KTSEup
Account: os-steve
Branch: claude/issue-26218-object-schema-guard-48
Worktree: objectstack-issue-26218
Domain: domain:ui
Seat: domain:ui#2
File surface: ui/packages/app-shell/src/services/MetadataService.retiredObjectEnabled.test.ts only. The change is the count guard at :161 plus its comment block. ⛔ No product source, no spec, no ui/.github/**, and no root .github/workflows/ci.yml. No changeset unless the repo's gate asks for one on a test-only diff. scripts/sdui-manifest.* stays untouched, because app-shell is outside the registry closure.
Container & model: S, mode:subagent, model: default tier, effort: low
Clause-②: no
Metadata-protocol: none
Responsibility: the corpus guard in MetadataService.retiredObjectEnabled, whose count no longer matches the spec | ObjectSchema's top-level key set on main | every ui PR whose Test UI shard runs this file
Thread-read: none
Premise: holds 2026-10-26T15:56Z. Test UI 8/16 on #26213 (check-run 121679452481) fails MetadataService.retiredObjectEnabled.test.ts:161 with expected 48 to be 47. #26005 (5e113b3) added the top-level sharing key to ObjectSchema.
Serial constraints cleared: none. No open claim or PR holds this test file.
Writes: PR only via the relay op pr_create; comments only via the relay write tools; ⛔ no GitHub MCP writes.
Ruling section: the file's own convention. The guard is re-pointed, not weakened, each time the spec adopts a key; there are five prior re-points in the comment block.
Seat's route: measure the gained and lost sets of ObjectSchema top-level keys between 5e113b3^ and 5e113b3. They should be exactly ['sharing'] and empty. Set the count to 48 and add a comment line in the existing style naming sharing (objectstack#26005). Leave the membership assertions unchanged. Run the file. Fixes #26218.
File surface (added): ui/packages/app-shell/src/services/MetadataService.specKeyObjectPayload.test.ts, the identical count guard at :175 and its comment block. It fails the same way: Test UI (2/16) on #26213, check-run 121679452468, expected 48 to be 47. A grep of origin/main for toBe(47) together with ObjectSchema.shape finds no other ui guard. Both files are re-pointed in the one PR, with the same measurement.
{
"issue": 26218,
"status": "done",
"branch": "claude/issue-26218-object-schema-guard-48",
"pr": "https://github.com/objectstack-ai/objectstack/pull/26231",
"head_sha": "56d05d606c8fee7c81798f6202a124fe74199857",
"session": "session_01SMps7wq7rBTk53e8KTSEup",
"premise_still_valid": true,
"summary": "Re-pointed the ObjectSchema key-count corpus guard from 47 to 48 in MetadataService.retiredObjectEnabled.test.ts (:161) and, after the coordinator widened the scope mid-run, also in MetadataService.specKeyObjectPayload.test.ts (:175). Each file gains one entry in its existing re-point comment block naming `sharing` (objectstack#26005, 5e113b39). The membership assertions are unchanged. Measured Object.keys(ObjectSchema.shape) from packages/spec source extracted with git archive and imported with tsx: fbb75998 (5e113b39^) 47, 5e113b39 48 (gained exactly ['sharing'], lost set empty), 43b47156 (origin/main) 48 (gained none, lost none), so no later main commit moved the count. A git grep of origin/main under ui/ for toBe(47) together with ObjectSchema.shape finds only these two guards.",
"files_changed": [
"ui/packages/app-shell/src/services/MetadataService.retiredObjectEnabled.test.ts",
"ui/packages/app-shell/src/services/MetadataService.specKeyObjectPayload.test.ts"
],
"tests": "Built @objectstack/spec, then the @objectstack/client closure under os-verify-lock (VERDICT command-exit 0 both times). Both files were run as one command: os-verify-lock -c 'cd ui && pnpm exec vitest run --maxWorkers=2 FILE_A FILE_B'. RED at 43b47156: AssertionError: expected 48 to be 47 at retiredObjectEnabled.test.ts:161:25 and specKeyObjectPayload.test.ts:175:25; Test Files 2 failed (2), Tests 2 failed | 23 passed (25); VERDICT command-exit 1. GREEN at 56d05d60: Test Files 2 passed (2), Tests 25 passed (25); VERDICT command-exit 0. No ablation: no tested behaviour changed, because the diff only updates a pinned count.",
"gates": "Local at 56d05d60: dispatch-gates --commands --repo objectstack-ai/objectstack derived 24 commands from 2 paths. All 24 ran and each exited 0 (exit captured per command before any pipe). The --ran reconciliation with exit-coded lines reported '24 derived, 24 run, 0 NOT-MEASURED, 0 UNRUN'. Every other family is declared to CI. Check-runs at report time: Check Changeset success (skip-changeset label), 'No other open PR may claim the same issue' success; Lint, Type Check, Type Check UI and Test UI were in_progress or not yet started. They are recorded as in_progress and were not waited on.",
"dogfood_battery": "n/a: no `!` in the PR title and no (narrowing) arm",
"mcp_calls": "0",
"api_writes": "2: (1) the fleet-write relay pr_create (POST /repos/objectstack-ai/objectstack/dispatches, executed as POST pulls plus POST issues/26231/assignees [os-steve] plus POST issues/26231/labels [skip-changeset], read back as identical with the label present); (2) this os-dev-report comment via post-stamped.mjs (POST issues/26218/comments). git push is not counted.",
"deviations": [
"Scope widened mid-run by a coordinator message, not by my own choice. MetadataService.specKeyObjectPayload.test.ts:175 carried the same guard and the same red (Test UI 2/16 on #26213, check-run 121679452468). The coordinator said it would amend the claim's File surface to name both files. I did not re-read the claim to confirm that amendment landed.",
"The new comment entry wraps to three lines, like its sibling entries, rather than one physical line.",
"ui typecheck (Type Check UI) and the full Test UI shards were not run locally and are declared to CI. The diff changes a numeric literal and comments only.",
"Commit trailers use the AGENTS.md model-free pair. The harness-suggested model-named Co-Authored-By trailer was not used, because AGENTS.md takes precedence and the pre-push hook refuses a model identifier."
],
"open_questions": [],
"out_of_scope_findings": [
"carrier: #26092: #26005 changed packages/spec, but its CI never ran this ui suite (the turbo/CI filter gap). Noted in the PR Acceptance notes, not filed."
]
}
Status: main's Test UI guard red from #26005 (ObjectSchema.sharing) is repaired with the minimal re-pin. The root fix that retires these brittle count pins across the ui tree is #26238 (p1, in flight). pm:dispatched removed.
Activity
objectstack-fleet commentedon Oct 26, 2026
Claim: PM loop round 3 · 2026-10-26T15:59Z
Session:
session_01SMps7wq7rBTk53e8KTSEupAccount:
os-steveBranch:
claude/issue-26218-object-schema-guard-48Worktree:
objectstack-issue-26218Domain:
domain:uiSeat:
domain:ui#2File surface:
ui/packages/app-shell/src/services/MetadataService.retiredObjectEnabled.test.tsonly. The change is the count guard at :161 plus its comment block. ⛔ No product source, no spec, noui/.github/**, and no root.github/workflows/ci.yml. No changeset unless the repo's gate asks for one on a test-only diff.scripts/sdui-manifest.*stays untouched, because app-shell is outside the registry closure.Container & model:
S,mode:subagent,model: default tier,effort: lowClause-②: no
Metadata-protocol: none
Responsibility:
the corpus guard in MetadataService.retiredObjectEnabled, whose count no longer matches the spec|ObjectSchema's top-level key set on main|every ui PR whose Test UI shard runs this fileThread-read: none
Premise: holds 2026-10-26T15:56Z. Test UI 8/16 on #26213 (check-run 121679452481) fails
MetadataService.retiredObjectEnabled.test.ts:161withexpected 48 to be 47. #26005 (5e113b3) added the top-levelsharingkey toObjectSchema.Serial constraints cleared: none. No open claim or PR holds this test file.
Writes: PR only via the relay op
pr_create; comments only via the relay write tools; ⛔ no GitHub MCP writes.ObjectSchematop-level keys between 5e113b3^ and 5e113b3. They should be exactly['sharing']and empty. Set the count to 48 and add a comment line in the existing style namingsharing(objectstack#26005). Leave the membership assertions unchanged. Run the file.Fixes #26218.objectstack-fleet commentedon Oct 26, 2026
Claim amendment · seat 2 · 2026-10-26T16:01Z
Amends: Claim 6420683196
Seat:
domain:ui#2File surface (added):
ui/packages/app-shell/src/services/MetadataService.specKeyObjectPayload.test.ts, the identical count guard at :175 and its comment block. It fails the same way:Test UI (2/16)on #26213, check-run 121679452468,expected 48 to be 47. A grep oforigin/mainfortoBe(47)together withObjectSchema.shapefinds no other ui guard. Both files are re-pointed in the one PR, with the same measurement.objectstack-fleet commentedon Oct 26, 2026
os-dev-report
{ "issue": 26218, "status": "done", "branch": "claude/issue-26218-object-schema-guard-48", "pr": "https://github.com/objectstack-ai/objectstack/pull/26231", "head_sha": "56d05d606c8fee7c81798f6202a124fe74199857", "session": "session_01SMps7wq7rBTk53e8KTSEup", "premise_still_valid": true, "summary": "Re-pointed the ObjectSchema key-count corpus guard from 47 to 48 in MetadataService.retiredObjectEnabled.test.ts (:161) and, after the coordinator widened the scope mid-run, also in MetadataService.specKeyObjectPayload.test.ts (:175). Each file gains one entry in its existing re-point comment block naming `sharing` (objectstack#26005, 5e113b39). The membership assertions are unchanged. Measured Object.keys(ObjectSchema.shape) from packages/spec source extracted with git archive and imported with tsx: fbb75998 (5e113b39^) 47, 5e113b39 48 (gained exactly ['sharing'], lost set empty), 43b47156 (origin/main) 48 (gained none, lost none), so no later main commit moved the count. A git grep of origin/main under ui/ for toBe(47) together with ObjectSchema.shape finds only these two guards.", "files_changed": [ "ui/packages/app-shell/src/services/MetadataService.retiredObjectEnabled.test.ts", "ui/packages/app-shell/src/services/MetadataService.specKeyObjectPayload.test.ts" ], "tests": "Built @objectstack/spec, then the @objectstack/client closure under os-verify-lock (VERDICT command-exit 0 both times). Both files were run as one command: os-verify-lock -c 'cd ui && pnpm exec vitest run --maxWorkers=2 FILE_A FILE_B'. RED at 43b47156: AssertionError: expected 48 to be 47 at retiredObjectEnabled.test.ts:161:25 and specKeyObjectPayload.test.ts:175:25; Test Files 2 failed (2), Tests 2 failed | 23 passed (25); VERDICT command-exit 1. GREEN at 56d05d60: Test Files 2 passed (2), Tests 25 passed (25); VERDICT command-exit 0. No ablation: no tested behaviour changed, because the diff only updates a pinned count.", "gates": "Local at 56d05d60: dispatch-gates --commands --repo objectstack-ai/objectstack derived 24 commands from 2 paths. All 24 ran and each exited 0 (exit captured per command before any pipe). The --ran reconciliation with exit-coded lines reported '24 derived, 24 run, 0 NOT-MEASURED, 0 UNRUN'. Every other family is declared to CI. Check-runs at report time: Check Changeset success (skip-changeset label), 'No other open PR may claim the same issue' success; Lint, Type Check, Type Check UI and Test UI were in_progress or not yet started. They are recorded as in_progress and were not waited on.", "dogfood_battery": "n/a: no `!` in the PR title and no (narrowing) arm", "mcp_calls": "0", "api_writes": "2: (1) the fleet-write relay pr_create (POST /repos/objectstack-ai/objectstack/dispatches, executed as POST pulls plus POST issues/26231/assignees [os-steve] plus POST issues/26231/labels [skip-changeset], read back as identical with the label present); (2) this os-dev-report comment via post-stamped.mjs (POST issues/26218/comments). git push is not counted.", "deviations": [ "Scope widened mid-run by a coordinator message, not by my own choice. MetadataService.specKeyObjectPayload.test.ts:175 carried the same guard and the same red (Test UI 2/16 on #26213, check-run 121679452468). The coordinator said it would amend the claim's File surface to name both files. I did not re-read the claim to confirm that amendment landed.", "The new comment entry wraps to three lines, like its sibling entries, rather than one physical line.", "ui typecheck (Type Check UI) and the full Test UI shards were not run locally and are declared to CI. The diff changes a numeric literal and comments only.", "Commit trailers use the AGENTS.md model-free pair. The harness-suggested model-named Co-Authored-By trailer was not used, because AGENTS.md takes precedence and the pre-push hook refuses a model identifier." ], "open_questions": [], "out_of_scope_findings": [ "carrier: #26092: #26005 changed packages/spec, but its CI never ran this ui suite (the turbo/CI filter gap). Noted in the PR Acceptance notes, not filed." ] }objectstack-fleet commentedon Oct 26, 2026
Landed · seat 2 · 2026-10-26T17:12Z
a1477dec, test-only (two guard pins 47→48)origin/maina1477dec, contains it (git merge-base --is-ancestorexit 0)gh-readonly-queue/main/pr-26231-*: none left (consumed)Fixes #26218on #26231Status: main's Test UI guard red from #26005 (
ObjectSchema.sharing) is repaired with the minimal re-pin. The root fix that retires these brittle count pins across the ui tree is #26238 (p1, in flight).pm:dispatchedremoved.