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
Commit 8fcdf52
Browse filesBrowse the repository at this point in the historyBrowse files
fix(cli): the Console drift remedy names pnpm console:build, not the retired objectui:build (#26063)
<!-- claude-projects-attribution: {"github_login":"os-elon-musk"} -->
_Requested by **Elon** · [project
thread](https://claude.ai/code/project/chan_01WedDzV26nniwxv7jC88B9D?thread=cmsg_01WedDzV26nniwxv7jC88B9DBj9PuBdWNyyNdW8Wq2GYFd)_
Part of #26035 (slice 3 only: the CLI stamp-drift remedy). Slice 2, the
ungoverned docs, runs on its own branch; slice 1, the governed text,
waits for the maintainer.
Clause-②: no
Metadata-protocol: none
## What changes
The Console drift warning (`os serve`), the `os dev` drift refusal and
the `503` body at `/_console/` that the refusal mounts told the reader
to run `pnpm objectui:build`, and the refusal also mentioned `pnpm
objectui:refresh`. Both scripts retired with the objectui pin in #25745.
All three texts now name `pnpm console:build`, the root script that
builds `@objectstack/console` from `ui/apps/console`. The refresh line
is dropped. The SHAs, `OS_ALLOW_CONSOLE_DRIFT` and the status codes are
unchanged.
- `packages/cli/src/utils/console.ts`: the remedy text in
`formatConsoleShaDriftWarning` and `describeConsoleShaDrift`; the
docblocks of the drift guard, `formatConsoleShaDriftRefusal` and
`decideConsoleMount`, and the header's resolution note, stop describing
the pin, `scripts/build-console.sh` and `pnpm check:console-sha` as
current.
- `packages/cli/src/utils/console.sha-drift.test.ts` and
`packages/cli/test/console-resolve.test.ts`: the pinned remedy strings
move with the code in the same commit. The drift-message case now also
asserts that neither message names any
`objectui:(build|refresh|bump|clean)` script. No assertion is removed.
- `packages/cli/src/commands/serve.ts` (comment only) and
`packages/cli/src/console.ts` (the L66 reading record, comment only):
the pin is described as retired; the dated reading keeps its sha.
- `.changeset/26035-console-drift-remedy-console-build.md`:
`@objectstack/cli` patch, written for the reader of the message.
## Re-measure on `main` (`39ca58787`)
- **Is the drift path reachable?** Not in this repository.
`findObjectuiPin` walks up from the resolved console package for a
`.objectui-sha`; the repo has none since #25745.
`packages/console/build-dist.sh` writes no `dist/.objectui-sha` stamp
and replaces the whole dist (`rm -rf` then copy), so
`detectConsoleShaDrift` returns `null` for every framework checkout
built with `pnpm console:build`. A published install carries no pin
either.
- **Why it is kept, not removed.** The header of `console.ts` names an
objectos/cloud Docker overlay that carries its own `cloud/.objectui-sha`
above the console package, and the published
`@objectstack/console@18.1.0` dist still ships a `dist/.objectui-sha`
stamp (#25745's tarball comparison). Such a tree still reaches the
guard. That overlay is **NOT MEASURED**: the `cloud` repository is not
readable from this seat (the public `src/console.ts` docblock records
the same gap). Removing the guard would also change the published
`resolveConsolePath` options type (`onDrift`, pinned by
`test/published-subpath-console.pin.test.ts`), which is beyond this
slice.
- **`scripts/check-console-sha.mjs` / `check:console-sha`.** Already
deleted by #25745, with the root alias and the `pnpm dev*` wiring; no
workflow or dev chain runs it. Nothing to change.
- **Known remedy limit.** In an overlay tree that has no `console:build`
script, the named remedy is the framework's script, not that tree's. The
dispatch order set the remedy to `pnpm console:build`; the tree that
would see it is the unmeasured one above.
## File surface
The claim's surface plus `packages/cli/test/console-resolve.test.ts`
(one line), added to the claim by the seat at 10:02Z: it pins the same
warning string this PR re-points.
## Verification
All on head `9aefb25e8`, local, under the verify lock.
- Closure: `pnpm turbo run build --filter='@objectstack/cli^...'
--concurrency=2` → VERDICT command-exit 0 (60/60 tasks).
- The two touched files: `pnpm --filter @objectstack/cli exec vitest run
--project unit src/utils/console.sha-drift.test.ts
test/console-resolve.test.ts` → Test Files 2 passed, Tests 29 passed.
- CLI unit layer: `pnpm --filter @objectstack/cli exec vitest run
--project unit` → 331 files passed, 4825 tests passed, 29 skipped; 2
files failed only on their prerequisite (`packages/cli is not built
(./dist/index.js is absent)`). After `pnpm --filter @objectstack/cli
build`, those two (`test/published-subpath-console.pin.test.ts`,
`test/published-subpath-hook-body.pin.test.ts`) → 2 passed, 29 tests
passed. The integration layer is declared to CI (no spawn entry or
integration file in the diff).
- `pnpm --filter @objectstack/cli typecheck` → exit 0
(`check:test-typecheck: OK`).
- Derived gates (`dispatch-gates --commands`, 71 families): 70 exit 0,
`check:dual-build-cjs-loads` exit 3 = NOT MEASURED (needs every
package's dist; CI owns it). The three `check:i18n*` families first
exited 3 and were re-run green after the prerequisite build they print.
`dispatch-gates --ran` → `71 derived famil(ies) accounted for — 70 run,
1 NOT-MEASURED`.
- `check:commit-card-trailers --range origin/main..HEAD` ✓;
`check-nul-bytes` exit 0.
- No ablation: the diff changes message text that the tests pin by
string, not a tested behaviour.
## Acceptance notes
- Slice acceptance: after this PR, `git grep -nE
"objectui:(build|refresh|bump|clean)" -- packages/cli ':!*CHANGELOG.md'`
finds nothing.
- Outside this slice and not named in the card's slicing:
`scripts/check-dev-prereqs.mjs`,
`scripts/check-pnpm-flag-spellings.mjs`,
`scripts/check-sdui-manifest.mjs`, `scripts/gen-sdui-manifest-node.mjs`,
`packages/client/src/envelope-caller-census.test.ts` and
`packages/qa/dogfood/test/print-service-render.dogfood.test.ts` still
name an `objectui:*` script (comments, or the pinned-mode branch of the
SDUI manifest tools). Carrier: none; noted here for the seat. #26035
remains open for slices 1, 2 and 4.
---
_Generated by [Claude
Code](https://claude.ai/code/session_01CBGRCbYq9F1ceLwZ2YCbWE)_
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_01CBGRCbYq9F1ceLwZ2YCbWE
Co-authored-by: Claude <noreply@anthropic.com>
fix(cli): the Console drift warning and refusal name `pnpm console:build` instead of the retired `pnpm objectui:build`
6
+
7
+
Clause-②: no
8
+
Metadata-protocol: none
9
+
10
+
When the Console build being served was stamped from a different objectui commit than the `.objectui-sha` pin above it, `os serve` printed a warning and `os dev` refused to mount the Console (and answered `503` at `/_console/`). Both told you to run `pnpm objectui:build`, and the refusal also mentioned `pnpm objectui:refresh`. Neither script exists any more: the objectui pin and its scripts were retired when the Console moved into this workspace, and the Console is now built with `pnpm console:build`.
11
+
12
+
-**Now.** The warning ends with `rebuild it with 'pnpm console:build'.`, and the refusal (terminal and `503` body) says `Rebuild the console:` followed by `pnpm console:build`. The `objectui:refresh` line is gone. The SHAs, the `OS_ALLOW_CONSOLE_DRIFT=1` escape hatch and the status codes are unchanged.
13
+
-**Who sees it.** Only a tree that still carries its own `.objectui-sha` above a stamped Console build. The framework repository carries no pin, and `pnpm console:build` writes no stamp, so a framework checkout never reaches this message. A published install carries no pin either.
0 commit comments