Symptom
The console served to a QA run is not the console the repo pins, and the gap is large enough to invalidate findings.
Measured in this run:
- served bundle —
packages/console/dist/.objectui-sha = 09987b680, built 2026-08-09 02:35 UTC - repo-root pin —
.objectui-sha = 6314e87f2, 2026-08-11 04:17 UTC
Two days and a substantial range of objectui work separate them, and the run's page-variables-and-actions item was marked blocked(dependency) rather than FAIL because of it.
The blocked clauses
page-variables-and-actions clauses 4-5: the submit POSTs a literally empty body, because bodyExtra is dropped by ElementButtonRenderer's key whitelist at the served pin. objectui origin/main forwards it end-to-end via 7e5bb5d4e — "fix(actions): forward bodyExtra end-to-end through the action chain (#3924)" — and git merge-base --is-ancestor 09987b680 7e5bb5d4e confirms the fix landed after the served pin (fix 2026-08-09 05:38 UTC; pin 02:35 UTC). The repo-root pin already contains it.
The server half is proven healthy independently — a real POST created a showcase_inquiry with source:'web', status:'new'. So there is nothing to fix in the framework here; there is a bundle to rebuild and clauses to re-run.
Everything else that passes in that item is genuine and unaffected: page variables initialize empty and gate dependent blocks, a ref-targeted picker selection flips the gate live with 0 main-frame navigations, one text input's write drives another component's visibility, and a reload with no selection re-initializes empty.
Root cause / remediation
packages/console/dist is a gitignored, locally-built artifact (packages/console/.gitignore = dist/). It is rebuilt only by scripts/build-console.sh — pnpm objectui:build — and not by turbo run build, so pulling a branch that moves .objectui-sha updates the pin and leaves the old dist serving.
Remediation is pnpm objectui:build (rebuild at the pinned SHA), notobjectui:refresh — the pin is already correct, and refresh would re-bump it to the local ../objectui HEAD.
Worth a second look while fixing: the drift guard for exactly this condition already exists. scripts/check-console-sha.mjs compares the dist stamp against the pin and exits 1 with that remediation, and it is wired into pnpm dev / dev:showcase / dev:crm / dev:todo via check:console-sha. A run that served a drifted dist therefore booted the app by a path that does not pass through it. Either the QA boot path should route through the guarded script, or the guard needs a second seat on whatever path the runner uses — otherwise the next run silently repeats this.
What to re-run after the rebuild
Related
Console-pin cards are a recurring lane: #7411 (bump, closed), #7268 (bump, closed), #6813 (bump, closed). All of those move the pin; this one is the other half — the pin moved and the dist did not follow.
Source
Extracted from the QA run #7695 (framework 92f26f7, console 09987b680).
Symptom
The console served to a QA run is not the console the repo pins, and the gap is large enough to invalidate findings.
Measured in this run:
packages/console/dist/.objectui-sha=09987b680, built 2026-08-09 02:35 UTC.objectui-sha=6314e87f2, 2026-08-11 04:17 UTCTwo days and a substantial range of objectui work separate them, and the run's
page-variables-and-actionsitem was markedblocked(dependency)rather than FAIL because of it.The blocked clauses
page-variables-and-actionsclauses 4-5: the submit POSTs a literally empty body, becausebodyExtrais dropped byElementButtonRenderer's key whitelist at the served pin. objectuiorigin/mainforwards it end-to-end via7e5bb5d4e— "fix(actions): forward bodyExtra end-to-end through the action chain (#3924)" — andgit merge-base --is-ancestor 09987b680 7e5bb5d4econfirms the fix landed after the served pin (fix 2026-08-09 05:38 UTC; pin 02:35 UTC). The repo-root pin already contains it.The server half is proven healthy independently — a real POST created a
showcase_inquirywithsource:'web',status:'new'. So there is nothing to fix in the framework here; there is a bundle to rebuild and clauses to re-run.Everything else that passes in that item is genuine and unaffected: page variables initialize empty and gate dependent blocks, a ref-targeted picker selection flips the gate live with 0 main-frame navigations, one text input's write drives another component's visibility, and a reload with no selection re-initializes empty.
Root cause / remediation
packages/console/distis a gitignored, locally-built artifact (packages/console/.gitignore=dist/). It is rebuilt only byscripts/build-console.sh—pnpm objectui:build— and not byturbo run build, so pulling a branch that moves.objectui-shaupdates the pin and leaves the old dist serving.Remediation is
pnpm objectui:build(rebuild at the pinned SHA), notobjectui:refresh— the pin is already correct, and refresh would re-bump it to the local../objectuiHEAD.Worth a second look while fixing: the drift guard for exactly this condition already exists.
scripts/check-console-sha.mjscompares the dist stamp against the pin and exits 1 with that remediation, and it is wired intopnpm dev/dev:showcase/dev:crm/dev:todoviacheck:console-sha. A run that served a drifted dist therefore booted the app by a path that does not pass through it. Either the QA boot path should route through the guarded script, or the guard needs a second seat on whatever path the runner uses — otherwise the next run silently repeats this.What to re-run after the rebuild
page-variables-and-actionsclauses 4-5 (bodyExtraon the action chain).my-work: the personal work queue authorsfilters:(plural) and no$filterever reaches the wire — the grid lists every row #7750's fix verification: objectui#4041 (9154d9e, 2026-08-10) is likewise absent from the served pin and present in the root pin, soobject-grid's singularfilterinput is not reachable on the old bundle.Related
Console-pin cards are a recurring lane: #7411 (bump, closed), #7268 (bump, closed), #6813 (bump, closed). All of those move the pin; this one is the other half — the pin moved and the dist did not follow.
Source
Extracted from the QA run #7695 (framework 92f26f7, console 09987b680).