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 8a990d8
Browse filesBrowse the repository at this point in the historyBrowse files
docs: build the Console with pnpm console:build, not the retired objectui pin scripts (#26052)
<!-- claude-projects-attribution: {"github_login":"os-elon-musk"} -->
_Requested by **Elon** · [project
thread](https://claude.ai/code/project/chan_01WedDzV26nniwxv7jC88B9D?thread=cmsg_01WedDzV26nniwxv7jC88B9D5QXEJEkGv9hHj99t49Ab4t)_
Part of #26035 (slice 2: ungoverned docs).
## What changed
The retired pin flow (`pnpm objectui:build`, `.objectui-sha`,
`scripts/build-console.sh`, the `os dev` stamp-vs-pin refusal) is
replaced by the in-workspace flow in five files. Re-measured on main
`39ca5878` with `git grep -nE
"objectui:(build|refresh|bump|clean)|build-console\.sh|\.objectui-sha"`
over the slice surface: 22 hits in 6 files before, 0 in the 5 edited
files after.
| File | Change |
|:--|:--|
| `README.md` | "Hack on the framework" runs `pnpm console:build`; the
paragraph says what it does (builds `ui/apps/console`, copies to
`packages/console/dist`, nothing cloned or pinned, `pnpm build` builds
the Console but does not copy it). Timing row re-measured (below). |
| `content/docs/getting-started/examples.mdx` | Callout names `pnpm
console:build`. |
| `docs/screenshots/render-readme-demo.mjs` | Prerequisite comment names
`pnpm console:build`. |
| `docs/qa/platform-checklist/RUNNER.md` | Cold-tree trap,
one-tree-at-a-time trap (the `OBJECTUI_DEPS_BUILD_CMD` override is gone;
the fix is `pnpm console:build --concurrency=2`), the
`stale-console-bundle` counter, and the run record (the `objectuiPin`
env field is dropped: the console builds from the `framework` SHA). Trap
names unchanged, so `check:platform-checklist` vocabulary holds. |
| `docs/qa/studio-benchmark/SCENARIO.md` | The console row and the
"record both SHAs" step: one SHA now, plus `pnpm console:build` before
booting. |
## Verified, not recalled
- `pnpm console:build` = `turbo run build:dist
--filter=@objectstack/console`; `@objectstack/console#build:dist`
depends on `@object-ui/console#build` (`turbo.json`), and
`packages/console/build-dist.sh` copies `ui/apps/console/dist` to
`packages/console/dist`.
- Ran on a fresh worktree after `pnpm install` only:
`NODE_OPTIONS=--max-old-space-size=6144 pnpm console:build
--concurrency=2` → 72 tasks, 0 cached, 12 m 16 s, exit 0, `✓
@objectstack/console dist ready (80724 KB) from ui/apps/console`.
Re-run: 72/72 cached, ~1 s. These are the README row's numbers.
## Left alone, and why
- **ADR-0082 L198** is not edited. It sits in the "Where the line lives"
list under the maintainer's 2026-08-07 decision, so it is part of a
decision record, and `docs/adr/**` is governed surface: editing it would
make this PR Tier H. The neighbouring L197 (`scripts/bump-objectui.sh`)
is equally stale. Both belong with the governed slice.
- **README `pnpm build` row** (6 m 54 s, 72 tasks) predates the ui/
import; `pnpm build` now builds the ui tree too, so that row is likely
low. Not re-measured here (out of this slice's prescription surface);
flagged for whoever next refreshes the table.
- The pin-specific drift guard in `packages/cli/src/utils/console.ts` is
slice 3.
## Gates
`node scripts/pm/dispatch-gates.mjs --ran`: 42 derived, 42 run, 0
NOT-MEASURED, all exit 0 (`check:skill-examples` after building
`@objectstack/client-react...`). No `docs:check-links` script exists on
main. `skip-changeset`: repo-root docs, and `content/docs` ships only in
the private `@objectstack/docs` app.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_01JrWb13NvNX4Nnw76uBX95H
Co-authored-by: Claude <noreply@anthropic.com>
at the commit pinned in `.objectui-sha` into `packages/console/dist`
257
-
(gitignored). It builds from a `../objectui` checkout if one sits next to this
258
-
repo, otherwise from a shallow clone of objectui into `.cache/`; either way it
259
-
installs objectui's dependencies, so it needs network. Skip it and `pnpm dev`
260
-
still serves the REST API, without the Console. Rerun it when `.objectui-sha`
261
-
moves.
255
+
`pnpm console:build` builds the Console from its source in this workspace
256
+
(`ui/apps/console`, against this tree's own spec and client) and copies the
257
+
result into `packages/console/dist` (gitignored), which is where `pnpm dev`
258
+
serves it from. Nothing is cloned or pinned. `pnpm build` builds the Console
259
+
too but does not copy it, so after `pnpm build` this step is a copy. Skip it
260
+
and `pnpm dev` still serves the REST API, without the Console. Rerun it after
261
+
pulling changes under `ui/`: `packages/console/dist` is never refreshed on its
262
+
own.
262
263
263
264
A first run is slow, not stuck. Measured once on a fresh clone of `main`
264
265
(4-vCPU container, Node 22.22, pnpm 10.31):
@@ -267,7 +268,7 @@ A first run is slow, not stuck. Measured once on a fresh clone of `main`
267
268
|:---|---:|:---|
268
269
|`pnpm install`| 16 s ||
269
270
|`pnpm build`| 6 m 54 s | 72 turbo tasks |
270
-
|`pnpm objectui:build`|10 m 36 s |clones objectui and builds the Console |
271
+
|`pnpm console:build`|12 m 16 s |72 turbo tasks: the Console and what it depends on, run before any `pnpm build` (`--concurrency=2`); a cache hit plus a copy, about 1 s, once `pnpm build` has run|
271
272
|`pnpm test`| 54 m 03 s | the full suite: 135 turbo tasks |
272
273
273
274
For your own change, test what it reaches instead of the full suite:
Copy file name to clipboardExpand all lines: docs/qa/platform-checklist/RUNNER.md
+17-18Lines changed: 17 additions & 18 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -429,8 +429,8 @@ contradicts it, and correct it here when it does.
429
429
them.
430
430
431
431
-**A cold tree cannot boot the app from the console-build recipe alone.**
432
-
`pnpm objectui:build`runs `scripts/build-console.sh`, which builds the **console**, not
433
-
the framework CLI. On a fresh tree `packages/cli` has no `dist`, and the bare binary
432
+
`pnpm console:build` builds the **console** and the packages it depends on, not the
433
+
framework CLI. On a fresh tree `packages/cli` has no `dist`, and the bare binary
434
434
then answers `Error: command dev not found` (exit 2) — a message that names neither the
435
435
cause nor the fix. **Check:**`node scripts/check-dev-prereqs.mjs`; it reports every
436
436
package whose declared `dist/` entry point is missing, and exits non-zero. **Fix:
@@ -619,22 +619,22 @@ contradicts it, and correct it here when it does.
619
619
passed at `bfc1539fe0`.
620
620
621
621
-**One container builds one tree at a time: never run `pnpm build` and
622
-
`pnpm objectui:build` together, and give the heavy steps a concurrency the shell's memory
623
-
can hold.**`pnpm objectui:build` (`scripts/build-console.sh`) runs `turbo run build` in
624
-
THIS checkout as well —`@objectstack/spec` when its dist is absent or incomplete,
625
-
`@objectstack/client`, and every `@objectstack/*` package the objectui pin overrides,
626
-
declarations included — so a `pnpm build` beside it writes the same `packages/spec/dist`
627
-
from a second turbo process nothing serialises, and the spec's DTS pass races (the 18.0
628
-
sweep, #24579 §6). The shell's cgroup is capped near 13.4 GiB (`memory.limit_in_bytes`
629
-
read `14343688192` on the cgroup `/proc/self/cgroup` names, at `bfc1539fe0`), and the
630
-
console's dependency build is `turbo run build --filter=@object-ui/console^...`at turbo's
631
-
default concurrency unless overridden. The 18.0 sweep's runner held both under that cap
622
+
`pnpm console:build` together, and give the heavy steps a concurrency the shell's memory
623
+
can hold.**`pnpm console:build` (`turbo run build:dist --filter=@objectstack/console`)
624
+
runs `turbo run build` for`@object-ui/console` and everything it depends on in THIS
625
+
checkout — `@objectstack/spec` and `@objectstack/client` among them, declarations
626
+
included — so a `pnpm build` beside it writes the same `packages/spec/dist` from a second
627
+
turbo process nothing serialises, and the spec's DTS pass races (the 18.0 sweep, #24579 §6,
628
+
met it with the retired pin script, which built the same packages). The shell's cgroup is
629
+
capped near 13.4 GiB (`memory.limit_in_bytes` read `14343688192` on the cgroup
630
+
`/proc/self/cgroup` names, at `bfc1539fe0`), and the console build runs at turbo's default
631
+
concurrency unless overridden. The 18.0 sweep's runner held both under that cap
632
632
only at `--concurrency=2`, and the Tier 1 vitest pins only at `--maxWorkers=1`, and was
633
633
killed with exit **137** otherwise (#24579 §6; QA run #24598's environment fingerprint
634
634
records the settings that held; the OOM itself is not re-run here). **Fix:**
635
-
`pnpm build --concurrency=2` first; then
636
-
`OBJECTUI_DEPS_BUILD_CMD='pnpm exec turbo run build --concurrency=2 --filter=@object-ui/console^...' pnpm objectui:build`
637
-
(the override the script's header documents); vitest one package at a time with
635
+
`pnpm build --concurrency=2` first (it builds the console too); then
636
+
`pnpm console:build --concurrency=2` (pnpm appends it to the turbo command), which after that
637
+
build is a cache hit plus a copy; vitest one package at a time with
638
638
`--maxWorkers=1`. ⛔ An exit 137 is the container's memory limit, not a failing test or a
639
639
broken build — re-run narrower before reading anything into it.
640
640
@@ -686,7 +686,7 @@ contradicts it, and correct it here when it does.
686
686
| trap | what it fakes | counter |
687
687
|---|---|---|
688
688
|`hydration-race`| empty nav/list right after navigation | screenshot first; settle; then read DOM |
689
-
|`stale-console-bundle`| UI bug already fixed upstream in objectui | check against objectui HMR console / fresh build (skill §2). `os dev` refuses to mount a console whose stamp ≠ the `.objectui-sha` pin, so a 404 `/_console/` reads "rebuild with `pnpm objectui:build`", never "console broken" |
689
+
|`stale-console-bundle`| UI bug already fixed upstream in objectui | check against objectui HMR console / fresh build (skill §2). `packages/console/dist` is a gitignored copy that `pnpm build` never refreshes, so a console older than the tree, or a 404 `/_console/`, reads "rebuild with `pnpm console:build`", never "console broken" |
690
690
|`stale-dist`| src edits with no runtime effect | rebuild package + restart before judging |
691
691
|`automation-input`| dead buttons / empty submits caused by the driver | ref-targeted clicks; native setter + input/change events |
Copy file name to clipboardExpand all lines: docs/qa/studio-benchmark/SCENARIO.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -13,14 +13,14 @@ Scoring rules live in [SCORING.md](./SCORING.md); the sheet a run fills in is
13
13
|---|---|
14
14
| app |`examples/app-showcase`, a **fresh** boot — empty database, nothing left from an earlier run |
15
15
| boot |`OS_PORT=PORT pnpm -C ABS/examples/app-showcase exec objectstack dev --ui --seed-admin -p PORT -d file:/tmp/RUN/data.db` (the dogfood-verification §0 line; `OS_PORT` exported, not only `-p`) |
16
-
| console | the vendored build at the `.objectui-sha` pin (`pnpm objectui:build`), served at `/_console/` — **never**an objectui HEAD dev server: the benchmark measures what users get |
16
+
| console | the build of the same tree's `ui/apps/console`(`pnpm console:build`, into `packages/console/dist`), served at `/_console/` — **never**a console dev server: the benchmark measures what users get |
17
17
| author | the seeded platform admin `admin@objectos.ai` / `admin123`, signed in through the form |
18
18
| end user | a second identity minted by admin create (`POST /api/v1/auth/admin/create-user`, then `change-password`), or by invite + sign-up — a stock showcase refuses self-registration |
19
19
| browser | Chromium at 1440×900 |
20
20
21
-
Record both SHAs before step 1: `git rev-parse HEAD` of the objectstack tree you booted, and the
22
-
contents of `.objectui-sha` (cross-check `packages/console/dist/.objectui-sha` — `os dev` refuses
23
-
to mount a console whose stamp differs).
21
+
Record the SHA before step 1: `git rev-parse HEAD` of the objectstack tree you booted. The console
22
+
builds from that same tree, so it has no SHA of its own; run `pnpm console:build` on that HEAD
23
+
before booting, because `pnpm build` does not refresh `packages/console/dist`.
0 commit comments