Skip to content

test(app-shell): re-point the ObjectSchema corpus guards to 48 after sharing was adopted - #26231

Merged
objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/issue-26218-object-schema-guard-48
Oct 26, 2026
Merged

objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/issue-26218-object-schema-guard-48

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Fixes #26218
Clause-②: no
Metadata-protocol: none

What

Re-points the ObjectSchema key-count corpus guard from 47 to 48 in the two app-shell tests that pin it:

  • ui/packages/app-shell/src/services/MetadataService.retiredObjectEnabled.test.ts (was :161)
  • ui/packages/app-shell/src/services/MetadataService.specKeyObjectPayload.test.ts (was :175)

Each file gains one entry in its existing re-point comment block, in the same style as the five earlier re-points. The membership assertions under the count are unchanged. The diff touches tests only: no product source, no spec, no workflow, and no scripts/sdui-manifest.* (app-shell is outside the sdui registry closure).

Why

5e113b3 (#26005) added the top-level sharing key to ObjectSchema. Both guards then read expected 48 to be 47, and Test UI went red on every PR's merge ref (#26213: shard 8/16, check-run 121679452481, and shard 2/16, check-run 121679452468).

Measurement

Object.keys(ObjectSchema.shape) was read from packages/spec/src/data/object.zod.ts at each commit. The source was extracted with git archive and imported with tsx.

commit count delta vs previous
fbb7599 (5e113b3^) 47 none (control)
5e113b3 (#26005) 48 gained exactly ['sharing'], lost set empty
43b4715 (origin/main at branch point) 48 gained none, lost none

No later main commit moved the count again. git grep on origin/main for toBe(47) together with ObjectSchema.shape under ui/ finds only these two guards.

Red, then green

Both files were run as one command: bash scripts/pm/os-verify-lock.sh -c 'cd ui && pnpm exec vitest run --maxWorkers=2 FILE_A FILE_B'. The spec and @objectstack/client dependency closure were built first.

  • Red at 43b4715 (unchanged base): AssertionError: expected 48 to be 47 at retiredObjectEnabled.test.ts:161:25 and at specKeyObjectPayload.test.ts:175:25. Result: Test Files 2 failed (2), Tests 2 failed | 23 passed (25), and the lock printed VERDICT command-exit 1.
  • Green at 56d05d6: Test Files 2 passed (2), Tests 25 passed (25), and the lock printed VERDICT command-exit 0.

Changeset

None. The diff is test-only and publishes nothing: app-shell's files[] is dist, src/styles.css, README.md, CHANGELOG.md and LICENSE. The PR carries skip-changeset, the same as #26212.

Gates (local, at 56d05d6)

node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack derived 24 commands from the 2-path change set. All 24 were run, and each exited 0. The reconciliation --ran reported: 24 derived, 24 run, 0 NOT-MEASURED, 0 UNRUN, with every line exit-coded. Every other family, along with Type Check UI and the full Test UI shards, is declared to CI. Their verdicts are the PR check-runs.

Acceptance notes


Generated by Claude Code

…sharing was adopted

objectstack 5e113b3 added the top-level `sharing` key to ObjectSchema, so the
key-count corpus guard in MetadataService.retiredObjectEnabled.test.ts and
MetadataService.specKeyObjectPayload.test.ts read 48 against a pinned 47 and
Test UI went red on every merge ref.

Measured Object.keys(ObjectSchema.shape) from packages/spec source:
fbb7599 (parent) 47 -> 5e113b3 48, gained exactly ['sharing'], lost none;
43b4715 (origin/main) 48, no change since. Membership assertions unchanged.

Claude-Session: https://claude.ai/code/session_01SMps7wq7rBTk53e8KTSEup
Co-authored-by: Claude <noreply@anthropic.com>
@objectstack-fleet objectstack-fleet Bot added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Oct 26, 2026
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

席位核对

ACCEPT · domain:ui seat 2 · session_01SMps7wq7rBTk53e8KTSEup · 2026-10-26T16:29Z · head 56d05d60

  1. 形态 (shape): draft PR into main, assigned to os-steve, labelled skip-changeset (test-only). The body leads with Fixes #26218, followed by Clause-②: no and Metadata-protocol: none. It touches 2 files, the two guards named in claim 6420683196 and amendment 6420725473. Nothing else.
  2. 前提实测 (premise, measured): the seat read the diff at this head. Each guard goes from 47 to 48, with one re-point line in the file's existing style. The dev measured the change: the parent fbb75998 has 47 keys; 5e113b39 has 48 (gained exactly ['sharing'], lost none); origin/main 43b47156 has 48, unchanged since. Both files fail on origin/main (expected 48 to be 47) and pass at this head (25/25). The membership assertions are untouched.
  3. 门禁 check-runs (gates): CI was in progress when read. Auto-merge goes on now, so GitHub enqueues the PR only once every required check is green.
  4. 接受的偏差 (accepted deviations): the scope widened to the second guard file by the seat's own amendment, so it is accepted. The local run skipped Type Check UI and the full shards, which CI covers; the diff changes only a numeric literal and comments.
  5. 范围外去向 (out of scope): the PR side never ran this ui suite for feat(spec,plugin-security,lint): sharing.controlledByParent.ownerMayEdit — a detail row's owner updates it with read on the master #26005's spec change. That gap is tooling: the root tsconfig.json is both the shared base for 72 packages and the scripts/ program (the one DEBT entry, 26 errors); 14 packages re-set module resolution three ways; 18 vitest configs are byte-identical; three debt ledgers are empty #26092's (turbo/CI filters), noted in the PR. No new card.
  6. 落地条款 (landing terms): p1, because main is red on Test UI for every ui PR. Not governed. app-shell is outside the registry closure, so no sdui record moves. Lands via relay pr_ready + automerge_enable. When it merges, the bot's aggregation issues Queue-flake anchor: packages/app-shell/src/services/MetadataService.specKeyObjectPayload.test.ts #26222 and Queue-flake anchor: packages/app-shell/src/services/MetadataService.retiredObjectEnabled.test.ts #26223 are answered by this PR.

@objectstack-fleet
objectstack-fleet Bot marked this pull request as ready for review October 26, 2026 16:30
@objectstack-fleet
objectstack-fleet Bot enabled auto-merge October 26, 2026 16:30
@objectstack-fleet
objectstack-fleet Bot added this pull request to the merge queue Oct 26, 2026
Merged via the queue into main with commit a1477de Oct 26, 2026
60 checks passed
@objectstack-fleet
objectstack-fleet Bot deleted the claude/issue-26218-object-schema-guard-48 branch October 26, 2026 17:10
zhuangjianguo pushed a commit that referenced this pull request Oct 26, 2026
Brings in #26231 (the ObjectSchema corpus guards re-pointed to 48); merged clean, nothing deferred for regeneration.

Claude-Session: https://claude.ai/code/session_013w86pS2SMm6BU2PfGQ3vJ7
Co-authored-by: Claude <noreply@anthropic.com>
os-project-manager pushed a commit that referenced this pull request Oct 26, 2026
Brings in #26231, which re-points the ObjectSchema corpus guards to 48
(main's own red on Test UI). Clean merge.

Claude-Session: https://claude.ai/code/session_01NndsH9Qm7k6AS2i2fWbjNA
Co-authored-by: Claude <noreply@anthropic.com>
zhuangjianguo pushed a commit that referenced this pull request Oct 26, 2026
Brings in the 29 commits main gained since the previous merge, among them
the re-pointed ObjectSchema corpus guards (#26231) this branch's console
pins were waiting on. One text conflict: the sdui core source record
(scripts/sdui-manifest.sources/core.json), re-recorded on both sides, is
taken from main and then re-recorded from the merged tree by the manifest
generator. Generator-owned artifacts are regenerated from the merged tree
with the spec generators, not by hand.

Claude-Session: https://claude.ai/code/session_01H37vtTJRVBf1LkyYNW5yfo
Co-authored-by: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/s skip-changeset PR has no user-facing published change; bypasses the changeset gate tests

Projects

None yet

2 participants