Repository navigation
chore(console): move the objectui pin 616df6598b42 → cf153eb2e535, past objectui's stored_expression toast row (objectui#13233), so PR #24778 can land - #24982
Conversation
fix(app-shell): retire the permission-set clone notice once the copy is held or saved (#13282) objectui@cf153eb2e5351505abf3b82fb76bfdc9a841bbde Claude-Session: https://claude.ai/code/session_01FM29ZqLTrnPNXxijioZwMp Co-authored-by: Claude <noreply@anthropic.com>
…er lockstep at objectui cf153eb2e535 node scripts/gen-sdui-manifest-node.mjs re-recorded the provenance record at the new pin (sdui.manifest.json itself is byte-identical: 107 components, sha256 d1fde278ffd6), and pnpm gen:sdui-lockstep re-recorded objectui's sdui-parser side, unchanged over the range. Claude-Session: https://claude.ai/code/session_01FM29ZqLTrnPNXxijioZwMp Co-authored-by: Claude <noreply@anthropic.com>
📓 Docs Drift Check
What this run could not see
Coarse fallback — 3 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): |
Seat reviewACCEPT ·
This seat readies the PR and queues it with auto-merge. Generated by Claude Code |
Fixes #24928
Clause-②: no
This PR moves the console pin from
616df6598b42tocf153eb2e535: objectuimainatcf153eb2e5351505abf3b82fb76bfdc9a841bbde. That commit carries8803ca54ac(objectstack-ai/objectui#13233, objectui#13178), which adds thestored_expressionrow to objectui'sSTRIPPED_LINEinpackages/app-shell/src/providers/writeWarningToast.ts. It is the newest objectuimaincommit at or after8803ca54acwhose objectui pushCIrun had concludedsuccess, coverage lane included, when the pin moved. With it, thedomain:speclane's PR #24778 (#24690) can land without reddening the Console Pin Gate.This PR is not a release act. The Version Packages PR is not touched, and no release workflow is dispatched. No objectui source changed, nothing was written to objectui, and no product code,
.github/workflows/**orscripts/build-console.shchange is in it.Tier: not governed.
node scripts/pm/check-governed-merges.mjs --branch claude/issue-24928-objectui-pinata1c663ae62: "0 of 4 path(s) hit the register (7 surfaces govern objectstack) ... NOT governed", exit 0. Size: 4 files, +87 / -6.Choosing the pin
The green push run. objectui
CI(workflow 223145786), run 39483449911, eventpush, branchmain, headcf153eb2e535, attempt 1, created 2026-10-20T19:26:17Z, completed 19:52:18Z, conclusion success. All 31 jobs concludedsuccess:Test (coverage)and all eightTest (coverage shard N/8), the sixteenTest (shard N/16),Test,Type Check,Build & E2E,Test (dist pins),Build DocsandChangeset Fixed Group Check. Read offrepos/objectstack-ai/objectui/actions/runs/39483449911/jobsat 2026-10-20T20:03Z.The read at the move (
actions/workflows/223145786/runs?branch=main&event=push, 20:03:24Z, re-read 20:04:58Z, just before the bump at about 20:05Z):maincommitCIrun53dea27afab5(tip, the commit the PM read)9e1bff63ad2dcf153eb2e5355235d6d57b478803ca54ac26(the row)Re-read at 20:36:19Z: both newer runs have since concluded
success(9e1bff63ad2dat 20:16:10Z,53dea27afab5at 20:21:54Z). This PR does not re-choose; see Acceptance notes. The two commits it passes over are9e1bff63a(fix(app-shell): the app report index lists the reports its navigation ships, module contributions included objectui#13283) and53dea27af(fix(app-shell): give the package dialog's Dependencies row a key/value editor objectui#13284), both app-shell fixes.Ancestry, in a full (non-shallow) scratch clone of objectui (
--is-shallow-repositoryfalse), each againstcf153eb2e535:8803ca54ac(the row) is an ancestor: exit 0;616df6598b42is an ancestor: exit 0;cf153eb2e535is onorigin/main: exit 0;cf153eb2e535an ancestor of616df6598b42): exit 1.Range: 69 non-merge commits, 33 of them past
8803ca54ac.The row is in the pin.
git show cf153eb2e535:packages/app-shell/src/providers/writeWarningToast.ts: line 145 declaresSTRIPPED_LINE: Recordkeyed byDroppedFieldsEvent['reason'] | 'stored_expression', and line 173 holds thestored_expressionentry.objectui's own objectstack pin moved in this range:
.objectstack-shaf4755a68a797→06cab4849a8a(objectstackchore: version packages (#24524), an ancestor of this branch's base, exit 0).The procedure, as written
No shared objectui checkout was written:
/home/user/objectuiis shallow and shared, so every objectui read came from the full scratch clone, whichOBJECTUI_ROOTnames.build-console.shthen makes its build worktree from that clone, so its worktree registration lands in the clone, not in the shared checkout. Exit codes were captured before any pipe; the heavy steps ran underscripts/pm/os-verify-lock.sh.OBJECTUI_ROOT=SCRATCH_CLONE bash scripts/bump-objectui.sh --no-commit cf153eb2e5351505abf3b82fb76bfdc9a841bbde: "616df6598b42..cf153eb2e535 walks completely", "objectui pin: 616df6598b42 → cf153eb2e535 (on origin/main)", "wrote changeset console-cf153eb2e535.md (@objectstack/console: minor)".--no-commitonly so the commit carries this repo's trailer pair; the files are the script'spnpm exec turbo run build --filter=@objectstack/client... --concurrency=2(36/36), thenOBJECTUI_ROOT=SCRATCH_CLONE bash scripts/build-console.sh(=pnpm objectui:build). Lock VERDICTcommand-exit 0, held 931 snode scripts/gen-sdui-manifest-node.mjs: "wrote sdui.manifest.json (107 components, 185019 bytes, sha256 d1fde278ffd6…)", "re-recorded scripts/sdui-manifest.record.json at pin cf153eb2e535 — built-tree .cache/objectui-cf153eb2e535/apps/console, @object-ui/core workspace version 17.7.0"node scripts/check-sdui-manifest.mjs: "present, intact (sha256 d1fde278ffd6…, 107 components) and recorded at the live objectui pin cf153eb2e535"pnpm check:sdui-lockstep:[pin-moved]OBJECTUI_ROOT=.cache/objectui-cf153eb2e535 pnpm gen:sdui-locksteppnpm check:sdui-lockstep: "byte-identical to objectui@cf153eb2e535 ... over 214 grammar line(s) [blob 0131f27cf86d], agrees on all 25 diagnostic code(s) and on thenot-a-containerpredicate [blob 76c18fb95d1f]"pnpm check:objectui-bump: "bump-objectui self-test PASSED — 20 assertions across 5 cases"The regenerated files
.objectui-sha616df6598b42…→cf153eb2e5351505abf3b82fb76bfdc9a841bbde(bump-objectui.sh)..changeset/console-cf153eb2e535.md(bump-objectui.sh, untouched):@objectstack/consoleminor, the highest level objectui declared over the range. Counts: 65 releasing of 66 changesets across 69 non-merge commits, 0 breaking (0 declared major, 0 annotated), 1 release-nothing, and 3 commits without a changeset, listed by subject in the changeset. With no breaking entry, the generator wrote no ADR-0087 placeholder, so no line of it is hand-written.scripts/sdui-manifest.record.json(gen-sdui-manifest-node.mjs):objectuiShaandmodulesRootmove to the new pin.packages/sdui-parser/objectui-lockstep.json(gen:sdui-lockstep):rev,revDateandrecordedAgainstPinmove. objectui'spackages/sdui-parser/srcis unchanged over the range (git diff --stat: empty), and both blobs are unchanged (0131f27cf86d,76c18fb95d1f), so no parser port is owed.sdui.manifest.jsonis not in the diff: the generator rewrote it byte-identical (107 components, sha256d1fde278ffd6…before and after).Proof that the pin carries the row, against PR #24778's spec
Staging: PR #24778's head
56cac787cbe5was fetched (pull/24778/head) into a scratch objectstack worktree, installed, and its seven packed packages built (turbo run buildof the client, formula, lint, sdui-parser and types closures, 36/36, lock VERDICT 0). A second objectui worktree atcf153eb2e535was made from the scratch clone, andOBJECTSTACK_ROOT=PR24778_WORKTREE node scripts/objectstack-pin.mjs buildpacked those packages into it ("from ... os-pr24778 (56cac78…)"), thenpnpm install --frozen-lockfile, exit 0. Frompackages/app-shellthere,@objectstack/spec/dataresolves to the packed copy, andDroppedFieldsEventSchema.shape.reason.optionsreads["readonly","readonly_when","primary_key","computed","stored_expression"]. Control: the same probe in this branch's build tree reads the four-member list.Command, from the objectui worktree root:
pnpm exec vitest run --maxWorkers=2 --reporter=verbose packages/app-shell/src/providers/writeWarningToast.test.ts.56cac787cb(five reasons)gives every reason the pinned spec declares its own wording (#3935), the test that drives each reason: passed on leg A, over all five reasons the PR feat(spec,objectql): report a caller value a stored expression replaced, as DroppedFieldsEvent reason stored_expression #24778 spec declares,stored_expressionincluded. Passed on leg B too.words reason \stored_expression` as a computed value saved in place of the one sent, in en and zh (objectui#13178)`: passed on both legs.reminds the pin bump that carries \stored_expression` to retire the widening (objectui#13178). It asserts the installed spec does NOT declarestored_expression, with the message "the spec pin now declaresstored_expression: delete| 'stored_expression'from STRIPPED_LINE's key type and make spec-symbol-batch6.test.ts's_ReasonIsTheEnumpin the five-member union". It fires once objectui's OWN.objectstack-sha` reaches a spec that declares the arm. It is objectui's suite, and objectstack's Console Pin Gate does not run it.And the console build against PR #24778's tree, at this pin.
bash scripts/build-console.shrun from the PR #24778 worktree with its.objectui-shaset tocf153eb2e535(a scratch edit) andOBJECTUI_ROOTnaming the scratch clone: exit 0, lock VERDICT 0. objectui's dependency build ran 34/34, the console'stsc && vite buildtransformed 8966 modules, andgrep -c 'error TS'over the log is 0. The injection assertion found PR #24778's own text: "present (injected only): ') written with the computed value in place of the caller'", "5 of 5 injected-only descriptions are in the bundle". So the Console Pin Gate's build holds at this pin both before and after PR #24778.The Console Pin Gate
ci.yml'sconsole-pinjob hasgithub.event_name != 'pull_request' && github.event_name != 'merge_group'in itsif:. So the pre-merge full battery is NOT MEASURED on GitHub, and the local run below is the pre-merge reading. The CI proof ismain's first full-battery run after the merge: this PR changes.objectui-sha, so the console-dist cache key misses and that run builds the console fresh atcf153eb2e535.a1c663ae62(the build itself ran ataf060f0855; the later commit changes only the two records): install (pnpm install --frozen-lockfile, exit 0); the client closure (36/36);build-console.sh(exit 0). Deviations from the job:--concurrency=2for the closure and for objectui's dependency build,NODE_OPTIONS=--max-old-space-size=4096,OBJECTUI_ROOTnames the full scratch clone where CI shallow-clones, and there is no cache restore, soCACHE_HITis empty.build-console.sh's.objectstack-shabranch ran in order: objectui's own@objectstack/*built at its.objectstack-sha06cab4849a8aas the reference, then "OBJECTSTACK_ROOT is set: packing @objectstack/* from /home/user/objectstack-issue-24928", 7 packages fromaf060f0855, then the frozen install ("Lockfile is up to date"), objectui's dependency build 34/34 (0 cached), and the console'stsc && vite build("8966 modules transformed").grep -c 'error TS': 0.assets/*.jsread); "Console bundle carries THIS tree's @objectstack/spec, and only it (vendored: @objectstack/spec of objectui's own build of objectstack 06cab48)", "2 of 2 injected-only descriptions are in the bundle"; "@objectstack/console dist ready (65684 KB) from objectui@cf153eb2e535".index.html,assets/and the.objectui-shastamp are present.pnpm check:console-sha: "Console dist matches the objectui pin (objectui@cf153eb2e535).", exit 0.pnpm check:console-injection --require-stamp: self-test 100 assertions, then "@objectstack/spec: the dist carries this tree's copy, and not the published one.", exit 0.Checklist-cited objectui specs whose blob changes over
616df6598b42..cf153eb2e535Read, not edited: every
*.spec.ts,*.test.tsand*.test.tsxpath cited anywhere indocs/qa/platform-checklist/areas/*.json(atorigin/main3a7a60af8f), resolved against objectui's tree at both pins. 89 objectui paths resolve, 21 of them thee2e/live/*.spec.tslive specs. Each one's blob was compared at the two pins (git ls-tree -r):packages/app-shell/src/views/setup/PackagedAutomationPage.test.tsx:b321640a6100→aeb3e5f94e38. It is cited inautomated.refofautomation.setup-packaged-automation-board, and changed by objectui673a71c39(fix(app-shell): packaged automation does not show "On" for a flow the engine left unarmed (objectui#13159) objectui#13185) and5235d6d57(fix(app-shell): offer switch-source-off and open-in-Studio on the packaged flow clone result objectui#13279).That is the only one. The other 88 are byte-identical at both pins, every
e2e/live/*.spec.tsamong them: over the range,e2e/live/changes onlye2e/live/ci/backend.env. No checklist file is touched here; the checklist anchor #24579 reads this list.Gates
Every gate ran at this PR's head
a1c663ae62, after a workspace build there:turbo run build --filter='!@objectstack/docs' --concurrency=2, 76/76, lock VERDICTcommand-exit 0.packages/runtime/.objectstackwas removed first. Each exit code was captured before any pipe.node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --commands, with no paths, derived 73 commands from 4 paths against merge base6440cf163, three-dot. All 73 exited 0.--ranoverCOMMAND :: exit Nlines: "Run reconciliation — 73 derived, 73 run, 0 NOT-MEASURED, 0 UNRUN", then "73 derived famil(ies) accounted for — 73 run, 0 NOT-MEASURED (a DERIVED zero — all 73 recorded an exit code and none of them is 3)". Exit 0.check-adr-0087-registration --base origin/main: "this PR adds no declared-breaking changeset (1 non-breaking changeset(s) seen)";check-empty-changeset --base origin/main: "1 declaring changeset(s) added";check-sdui-manifest.mjsand its--self-test;pnpm check:sdui-lockstep;pnpm check:console-sha;pnpm check:console-injection;pnpm check:objectui-changeset,pnpm check:published-files,pnpm check:pm-changeset-deadline-census;pnpm check:nul-bytes: "scanned 11523 text file(s) ... no raw ASCII control bytes".pnpm check:objectui-bump, exit 0.test/typecheckis owed.test:repois CI's (Test Core).git merge-tree --write-tree origin/main HEADagainstorigin/main3a7a60af8f: exit 0, clean. None of the four paths is routed to theos-regenmerge driver (git check-attr merge: unspecified), so the local answer is GitHub's too. The three commitsmaingained since the base (test(driver-sql): pin the NODE_ENV=production auto-migrate guard with a safe drift, beside a dev control #24967, liveness(webhook): a declared webhook's label and description are live on the Studio metadata list #24972, docs: give the @objectstack/skills install line for the project's own package manager #24973) touch none of the four files and none of the console build scripts. Inside the seven packed packages they change onlypackages/spec/liveness/webhook.json,packages/spec/liveness/state-counts/webhook.mdand onepackages/linttest file, none of them underdist/, which is what the console bundles.Acceptance notes
Observations, not filed:
maincommits' push runs were still in progress. Both concludedsuccessby 20:22Z, after the bump and while the build ran. Moving to53dea27afab5instead is a mechanical re-bump plus a rebuild, about 25 minutes of lock. Neither commit (fix(app-shell): the app report index lists the reports its navigation ships, module contributions included objectui#13283, fix(app-shell): give the package dialog's Dependencies row a key/value editor objectui#13284) is needed for PR feat(spec,objectql): report a caller value a stored expression replaced, as DroppedFieldsEvent reason stored_expression #24778.06cab4849a8a, 40 commits behind this tree's base) declares no description this tree lacks, so the pin-only pool is 0 and the stamp recordsstaleDetector: null. The fresh leg found its witness (2 of 2). At616df6598b42both legs had witnesses (16 of 22 and 10 pin-only). This is the script's documented honest case, not a failure..objectstack-shapast PR feat(spec,objectql): report a caller value a stored expression replaced, as DroppedFieldsEvent reason stored_expression #24778 (delete| 'stored_expression'and widen_ReasonIsTheEnum, per the test's own message). Nothing in this repo runs it.approvals.record-page-decisionscitespackages/app-shell/src/views/RecordDetailView.approvalDecisionActions.test.tsxin itssource. That file is absent at both pins: objectui99782f961deleted it, and that commit is an ancestor of616df6598b42(exit 0). Carrier: the checklist anchor qa(checklist): 18.0 release sweep anchor at 5b14b7f3 — re-point 5 red-row clauses + the wave's checklist-accuracy findings, fixture gaps and not-run handover (18 records) #24579.Generated by Claude Code