Skip to content

chore(devx): launch entries for the scheduled-work and react-pages-off showcase boots - #30154

Merged
objectstack-fleet[bot] merged 3 commits into
mainfrom
claude/issue-29819-studio-boot-fixtures
Nov 4, 2026
Merged

objectstack-fleet[bot] merged 3 commits into
mainfrom
claude/issue-29819-studio-boot-fixtures

Conversation

@objectstack-fleet

@objectstack-fleet objectstack-fleet Bot commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

Requested by 田騏 · project thread

Fixes #29819

Clause-②: no
Metadata-protocol: none

维护者速读

  • 改了什么:.claude/launch.json 新增两条可直接启动的 showcase 配置(3778 开启定时任务、3779 关闭 React 页面),两个 Studio 检查项改为点名这两条配置。
  • 为什么改:QA 只能从 launch.json 起服务,原来没有这两种启动方式,flow-status-matches-runtime 的定时腿和 custom-page-source-tiers 的关闭态每次都只能记 partial / blocked。
  • 风险与回滚:只加配置和检查清单文字,不动任何发布包和运行时代码;回滚即 revert 本 PR。
  • 先看:.claude/launch.json(两条新配置的 env 写法),docs/qa/platform-checklist/areas/studio-authoring.json 的 flow-status-matches-runtime(定时腿改在新配置的独立库上重建流程)。
  • 两分钟验证:jq -r '.configurations[].name' .claude/launch.json,预期三行:showcase-dogfood-3777、showcase-scheduled-work-3778、showcase-react-pages-off-3779。
  • 需要你做的:无,.claude/** 属 Tier S,席位凭当前 head 的 Contract review PASS 落地。

What changes

  • .claude/launch.json gains two entries beside showcase-dogfood-3777. Each has its own port and its own file:/tmp/... DB, and exports OS_PORT as RUNNER.md asks for any non-3000 boot:
    • showcase-scheduled-work-3778 exports OS_AUTOMATION_SCHEDULED_WORK_ENABLED=1. DB: file:/tmp/showcase-scheduled-work-3778/data.db.
    • showcase-react-pages-off-3779 exports OS_PAGE_REACT_ENABLED=false. DB: file:/tmp/showcase-react-pages-off-3779/data.db.
  • How the env is set: the launch format this repo uses has no env key anywhere. Both committed launch files use only name, runtimeExecutable, runtimeArgs, port and url. The repo already sets env from an entry through its runtime command: ui/.claude/launch.json console-build-test runs bash -lc "... VITE_SERVER_URL= DEV_PROXY_TARGET=... exec pnpm dev ...". The new entries do the same thing with runtimeExecutable: "env", so no shell string is needed and the argument list stays readable.
  • docs/qa/platform-checklist/areas/studio-authoring.json:
    • studio-authoring.flow-status-matches-runtime (rev 4 to 5). fixtures.requires[2] and steps[4] name showcase-scheduled-work-3778 as the schedule leg's second boot. That entry has its own DB, so the step authors the writable package's schedule flow again there and runs it beside the default boot. steps[5] now says it stays on the default boot. acceptance[3].clause now reads "a schedule flow authored the same way" (the flow is re-authored on that entry's own DB). A history row was added.
    • studio-authoring.custom-page-source-tiers (rev 5 to 6). fixtures.requires[1] and steps[6] name showcase-react-pages-off-3779 as the off-state boot of the both-sides gate. The blocked(environment) fallback now applies only if that entry cannot boot. No clause changed. A history row was added.
  • The card's third gap, studio-authoring.picklist-bound-select, is already met and is not touched here. PR docs(qa): re-point the wave-5 checklist lines and add the package export round-trip item #30128 (merged as 55337f4) re-pointed its fixtures.requires[0] to a picklist and a picklistExtensions entry added in a scratch copy of the showcase, never the shared tree (item rev 5). So that item no longer needs a seed change to examples/app-showcase/objectstack.config.ts, and this PR changes nothing under examples/app-showcase/**.

Tests

No code changed, so there is no unit test. The evidence is the boot probe and the gates below.

Acceptance notes

  • OS_PAGE_REACT_ENABLED=false does override the showcase's committed .env value OS_PAGE_REACT_ENABLED=true. os dev loads .env* through dotenvFlow.config (packages/cli/src/commands/dev.ts:432). dotenv-flow 4.1.0 sets a file variable only when !process.env.hasOwnProperty(varname) (node_modules/.pnpm/dotenv-flow@4.1.0/.../lib/dotenv-flow.js:193). The CLI notes the same precedence at packages/cli/src/commands/doctor.ts:448 and packages/cli/src/utils/schema-migrate.ts:906. The serve path reads the variable at packages/cli/src/utils/console.ts:930-942 (readReactPagesTier; false is in REACT_PAGES_OFF).
  • OS_AUTOMATION_SCHEDULED_WORK_ENABLED=1 is an accepted ON value: resolveScheduledWorkEnabled() accepts 1, true, on and yes (packages/types/src/env.ts:237-240).
  • The new entries carry --no-compile and --no-watch (contract review 6637078272, S1): the schedule leg boots beside the default boot of the same checkout, and a compiling boot would rewrite the shared dist/objectstack.json the live boot's artifact watcher re-ingests. --no-compile still compiles when the artifact is missing (packages/cli/src/utils/dev-compile-at-boot.ts). showcase-dogfood-3777 boots alone and is unchanged.

Verification

Boot probe (head 71ec4cc, built closure of the showcase plus the CLI)
  • showcase-scheduled-work-3778, booted with the exact entry args: health 200. The banner printed 32 flow(s) 21 bound. With an authenticated GET /api/v1/automation/_status, showcase_scheduled_digest answered bound: true (triggerType schedule) and showcase_task_due_reminder answered bound: true (time_relative).
  • showcase-react-pages-off-3779, booted with the exact entry args as the control leg (no scheduled-work switch): health 200, and the banner printed 32 flow(s) 19 bound, the default-boot count RUNNER.md records.
  • The react-pages-off rendering itself is NOT MEASURED in the browser. This container has no packages/console/dist, and the boot logged ConsoleNotBuilt. The env precedence above was measured directly instead. With OS_PAGE_REACT_ENABLED=false exported, dotenvFlow.config in examples/app-showcase kept false. With it unset, it loaded true from .env.
  • Both servers were stopped by process group, and their /tmp DB directories were removed.
Gates (dispatch-gates --commands at 71ec4cc, 19 derived)

All 19 derived commands exited 0. Seven of them first exited 3 (PREREQUISITE NOT MET) before pnpm install --frozen-lockfile, and check:doc-formula-expressions also needed its formula and lint build. Each was re-run after that, and those re-runs exited 0. --ran reconciliation: 19 derived, 19 run, 0 NOT-MEASURED (a derived zero). node scripts/check-platform-checklist.mjs: OK, 16 areas and 360 items.

🤖 Generated with Claude Code

…f boots

Two .claude/launch.json entries give a runner that starts servers only
from launch.json the two boots studio-authoring checklist items need:
showcase-scheduled-work-3778 exports OS_AUTOMATION_SCHEDULED_WORK_ENABLED=1
and showcase-react-pages-off-3779 exports OS_PAGE_REACT_ENABLED=false,
each on its own port and DB with OS_PORT exported. The env is set through
runtimeExecutable `env`, the way ui/.claude/launch.json sets it through
its runtime command. flow-status-matches-runtime and
custom-page-source-tiers name the entries in fixtures.requires and steps,
with a revision bump and a history row each.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017ihL2ebbZkr2QAEG1x7UC8
@objectstack-fleet objectstack-fleet Bot added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Nov 4, 2026
@github-actions github-actions Bot added the size/s label Nov 4, 2026
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

domain:devx#2 · marchtian · session_017ihL2ebbZkr2QAEG1x7UC8

Contract review

Served-tier: CONTRACT_REVIEW_TIER
Head-sha: 71ec4ccb5dff348f4a10acbcbbc93db38489ff64
Local-runs: none
Scope: .claude/launch.json + ui/.claude/launch.json, docs/qa/platform-checklist/RUNNER.md, .claude/skills/dogfood-verification/SKILL.md, packages/cli/src/commands/dev.ts, packages/cli/src/utils/console.ts, packages/types/src/env.ts, examples/app-showcase/.env, scripts/check-platform-checklist.mjs (all read at origin/main 471add3). The remainder, docs/qa/platform-checklist/areas/studio-authoring.json, is the lane seat's ACCEPT at TIER_DEFAULT; read here only to check the items name the new entries correctly and still reach every acceptance clause.

Inputs read: card #29819 body and all three comments (triage, claim, os-dev-report), PR #30154 body and file list, git diff origin/main...origin/claude/issue-29819-studio-boot-fixtures (2 files, +57/-8), and the check-runs on the head. The PR body's account was not taken as evidence; every claim below was re-read in the tree.

① Derived judgments

  • Two new configurations[] entries in .claude/launch.json, nothing else in the file touched; showcase-dogfood-3777 is byte-identical — RIGHT.
  • Names showcase-scheduled-work-3778 and showcase-react-pages-off-3779: unique in the file, and spelled identically in both checklist items' fixtures.requires and steps (jq would print exactly the three names the PR body predicts) — RIGHT.
  • Ports 3778 / 3779: no other committed launch entry (root or ui/: 3777, 5180, 5190, 5198, 5199) or RUNNER.md convention uses them; each entry's -p, OS_PORT= and port agree with each other — RIGHT. No port collision between the three entries, so the step "boot 3778 beside the default boot" is possible on ports.
  • DB paths file:/tmp/showcase-scheduled-work-3778/data.db and file:/tmp/showcase-react-pages-off-3779/data.db: own directory per entry, same shape as the 3777 entry and dogfood §0 ("own port and DB") — RIGHT. No DB collision with 3777 or with each other.
  • OS_PORT=NNNN exported beside -p NNNN: what RUNNER.md asks of every non-3000 boot (the showcase self-URL reads the environment). Since cli/dev: os dev -p N without OS_PORT leaves the showcase self URL at 3000, so its self-ping connector fails fetch failed and /meta serves :3000 (the #7538 symptom on the port-flag path) #26243 dev.ts also writes the -p value into process.env before the compile (portFlagEnv, dev.ts:535), so the export is belt-and-braces, not wrong — RIGHT.
  • OS_AUTOMATION_SCHEDULED_WORK_ENABLED=1: an accepted ON spelling of resolveScheduledWorkEnabled() (['1','true','on','yes'], packages/types/src/env.ts) — RIGHT.
  • OS_PAGE_REACT_ENABLED=false: in REACT_PAGES_OFF of readReactPagesTier() (packages/cli/src/utils/console.ts), read from process.env at serve time — RIGHT. It overrides the showcase's committed .env (OS_PAGE_REACT_ENABLED=true): dev.ts:432 loads .env* with dotenvFlow.config(...) and dotenv-flow's default is non-overriding (a file value is applied only when the variable is absent from process.env); the serve child inherits process.env. The dev's node_modules line cite could not be re-read here (no install in this checkout), so this rests on the documented dotenv-flow default plus the dev's direct measurement — RIGHT.
  • Command shape pnpm -C examples/app-showcase exec objectstack dev --ui --seed-admin -p N -d file:... behind env: the canonical checklist boot (RUNNER.md) and the 3777 entry's argv, unchanged apart from the two env assignments — RIGHT.
  • No --no-compile / --no-watch on the new entries: consistent with 3777, but see ④ (should-fix).
  • Checklist: flow-status-matches-runtime rev 4 to 5, custom-page-source-tiers rev 5 to 6, each with a dated history row whose ref is #29819, and revision equals the last history entry (the invariant check-platform-checklist.mjs enforces) — RIGHT. The card's third gap (picklist-bound-select) is correctly left out: the claim records PR docs(qa): re-point the wave-5 checklist lines and add the package export round-trip item #30128 already re-pointed it.
  • check-governed-merges: .claude/** is the Tier S row (Tier S iff every governed path lies under it); the only governed path here is .claude/launch.json — Tier S, this record is the landing condition — RIGHT.

② Semver level

The diff publishes nothing: .claude/launch.json (agent instruction tree) and a checklist area JSON under docs/qa/. No file under any released package, so skip-changeset is the right label and no changeset is owed. Clause-②: no on the PR body is right: no published spec, export or metadata-protocol surface moves; Metadata-protocol: none likewise. No (widening)/(narrowing) arm, correctly.

Check-runs on 71ec4cc at review time: every completed run is success or skipped (incl. Governed Surface Queue Guard, PR-body guards, Lint · docs & code guards which carries check-platform-checklist, Lint · PM dispatch-gates, Plan Test Core shards, Dogfood Regression Gate, Test UI, Type Check · source gates). Still in progress: Lint · ESLint, Test Core (1/8, 2/8), Type Check · consumer gates / debt ledger / workspace. None failed. The diff touches no TypeScript, so the in-progress families cannot be moved by it; the seat should still see them green before landing.

③ Boundary flags

(a) runtimeExecutable: "env" with VAR=value as leading runtimeArgs — SOUND, with a portability caveat that is not new. The repo's launch format (root and ui/) uses only name, runtimeExecutable, runtimeArgs, port, url; ui/.claude/launch.json console-build-test already sets env through the runtime command (bash -lc "... VITE_SERVER_URL= DEV_PROXY_TARGET=... exec pnpm dev ..."), so "env from the command, no env key" is the committed precedent. env(1) exists on every POSIX host and resolves pnpm on PATH exactly as the 3777 entry's direct pnpm does; a runner that spawns runtimeExecutable with runtimeArgs runs it unchanged. A runner that ignored runtimeExecutable would break every committed entry, not just these. Windows has no env, but the same entries already assume /tmp/... DB paths and the file's sibling uses bash -lc, and the QA containers are Linux — no regression. One residual the tree cannot settle: whether the consuming runner's format also accepts an env key; nothing in the repo says so, and the env executable works regardless. Answered: sound.

(b) Separate DB for the schedule leg — RIGHT CHOICE; the item still proves its title. Sharing one DB between two live servers would be a real DB collision (two writers on one SQLite file, and the default boot's DB mutated by the schedule run) and would break dogfood §0's "own port and DB". Sequential reuse (stop 3777, boot the switch on 3777's DB) is what the old "reboot" step meant, but a launch entry pinned to another entry's DB path is a collision waiting for the first concurrent run. The title's claim is per boot: the words Studio shows equal what _status reports and the deployment runs. Steps 0–3 prove the OFF state on the default boot (Not running here, bound false with the platform's reason), steps[4] proves the ON state on 3778 (Switched on, bound true, a schedule run completes), steps[5] stays on the default boot for the disable half of acceptance[2]. acceptance[0] "on both boots" and acceptance[3] "on the boot that enables scheduled work" are both reachable. One wording seam: acceptance[3].clause still says "the same schedule flow" while requires[2] now says the flow is authored again on the fresh DB — same definition, different persisted record. Escalated as should-fix wording only (see ④); the clause's verify is satisfiable as written.

(c) No --no-compile to match showcase-dogfood-3777 — ANSWERED, but the match is the wrong anchor: 3777 is a solo boot; these two entries are, by the rewritten steps, boots that run BESIDE another boot of the same checkout. RUNNER.md's shared-checkout rule says exactly that case wants --no-compile (and --no-watch). Should-fix, reasoning in ④.

④ Design judgment

.claude/launch.json against the card's scenario — a runner that can start servers only from .claude/launch.json reaches each item's path:

  • custom-page-source-tiers steps[6]: boot showcase-react-pages-off-3779, sign in as the seeded admin (--seed-admin on a fresh DB), open showcase_crm_workbench (a showcase-shipped page, present on a fresh seed). readReactPagesTier() reads false from the process env, the .env true is skipped by dotenv-flow, the Console gate renders CapabilityDisabledNotice. Reachable from launch.json alone — HOLDS.
  • flow-status-matches-runtime steps[4]: boot showcase-scheduled-work-3778 beside the default boot, author the writable package and schedule flow there, read Studio and _status, wait for the first run. The switch is read by every binder (resolveScheduledWorkEnabled()), _status answers bound true (the dev's probe measured 21 bound and both schedule flows bound). Reachable — HOLDS.
  • Port collisions: none (3777/3778/3779 distinct, -p, OS_PORT, port agree). DB collisions: none (own /tmp dir each). Env precedence: process env over .env, verified in dev.ts and dotenv-flow's documented default. env availability: POSIX, same assumption the file already makes.

Findings:

  • SHOULD-FIX (hits file): add --no-compile and --no-watch to the two new entries. Both boot through a default os dev, which compiles objectstack.config.ts into examples/app-showcase/dist/objectstack.json under the boot's own environment before starting (dev.ts compile block, OS_PORT=3778 exported into it at dev.ts:535) and runs a watch-recompile loop into the same file. flow-status-matches-runtime steps[4] now REQUIRES this boot to run beside the default boot of the same checkout, so the 3778 boot rewrites the artifact the live default boot serves; dev.ts:836-845 records that MetadataPlugin's artifact watcher on the running server re-ingests the registry, re-syncs DDL + seeds and fires the SSE HMR event on that rewrite, and RUNNER.md's shared-checkout rule names "two runners booting it concurrently rewrite the artifact under each other" as the hazard and --no-compile (plus --no-watch) as the fix. A runner confined to launch.json cannot add the flags itself. --no-compile still compiles when the artifact is missing, so a cold tree boots unchanged; the item's own path is not blocked (the writable package lives in the DB, the showcase re-sync is idempotent, live connector dispatch follows the env not the artifact), which is why this is should-fix rather than must-fix. Same for 3779 if run beside another boot. Alternative: respell steps[4] to stop the default boot first and keep the entries as they are — but that re-introduces the item's old assumption and costs steps[5] a reboot.
  • SHOULD-FIX (remainder, lane seat): flow-status-matches-runtime acceptance[3].clause reads "the same schedule flow" while requires[2] now says the schedule flow is authored again on the fresh 3778 DB. Respell to "a schedule flow authored the same way" (or note "same definition, re-authored" in the clause's verify) so the runner is not left to decide whether a re-authored flow counts as "the same"; the clause is satisfiable as it stands.

Nothing in ④ is a must-fix: every surface change is named right, each item's path is reachable from .claude/launch.json alone, no port, DB or env precedence collision, and the one hazard found degrades a sibling boot's artifact hygiene rather than the item's result.

Implemented-by: claude/issue-29819-studio-boot-fixtures
Reviewed-by: session_017ihL2ebbZkr2QAEG1x7UC8

VERDICT: PASS

… --no-watch

showcase-scheduled-work-3778 and showcase-react-pages-off-3779 now pass
--no-compile and --no-watch. The schedule leg boots beside the default
boot of the same checkout, and a default os dev rewrites
examples/app-showcase/dist/objectstack.json, which the live default boot
re-ingests. --no-compile still compiles when the artifact is missing.
showcase-dogfood-3777 is a solo boot and stays as it was.
flow-status-matches-runtime acceptance[3].clause now reads "a schedule
flow authored the same way", because the 3778 boot holds a re-authored
copy. The item's rev 5 history row says so.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017ihL2ebbZkr2QAEG1x7UC8
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

domain:devx#2 · marchtian · session_017ihL2ebbZkr2QAEG1x7UC8

Contract review

Served-tier: CONTRACT_REVIEW_TIER
Head-sha: 4c396be07fd3352fedcccc11040a2043ce8d8727
Local-runs: none
Scope: .claude/launch.json + packages/cli/src/commands/dev.ts, packages/cli/src/utils/dev-compile-at-boot.ts, docs/qa/platform-checklist/RUNNER.md, scripts/check-platform-checklist.mjs (read at origin/main 471add3). The remainder, docs/qa/platform-checklist/areas/studio-authoring.json, is the lane seat's ACCEPT at TIER_DEFAULT; read here to confirm the S2 respelling.

Delta review on the previous PASS at 71ec4cc. Inputs: git diff 71ec4ccb5dff348f4a10acbcbbc93db38489ff64 4c396be07fd3352fedcccc11040a2043ce8d8727 (one commit, parent 71ec4cc, no merge of main; 2 files, +6/-2), the dev's delta report (#29819 comment 6637261898, read as an input, not evidence), and the check-runs on 4c396be. The PR body is out of this record's scope (the seat is patching its two stale lines). Every judgment of the first record that this commit does not touch stands as written there.

① Derived judgments

  • S1 applied: showcase-scheduled-work-3778 and showcase-react-pages-off-3779 each gain --no-compile and --no-watch between --seed-admin and -p; nothing else in either entry moved (names, ports, OS_PORT, env switch, -d paths identical) — RIGHT.
  • Flag spellings against the tree: dev.ts declares compile: Flags.boolean({ default: true, allowNo: true }) and watch: Flags.boolean({ char: 'w', default: true, allowNo: true }), so --no-compile and --no-watch are the parsed negations (RUNNER.md: the --[no-]x spelling in FLAGS is the only proof a --no-x parses; both are there). Position before -p/-d is irrelevant to oclif — RIGHT.
  • Cold-tree behaviour: devCompilesAtBoot() (packages/cli/src/utils/dev-compile-at-boot.ts:40-49) returns true when the artifact does not exist regardless of compile, so an entry with --no-compile still compiles on a checkout with no examples/app-showcase/dist/objectstack.json; with the artifact present it serves it as built and warns if stale. devWatchActive() returns false under --no-watch, so no watch recompile from these boots — RIGHT; this closes the shared-checkout hazard S1 named without breaking a first boot.
  • showcase-dogfood-3777 left as it was: it is the solo default boot and the one the steps run first, so its compile is the one that brings the artifact current — RIGHT (RUNNER.md's "boot once with the compile beforehand, then every run with --no-compile").
  • S2 applied: flow-status-matches-runtime acceptance[3].clause now reads "a schedule flow authored the same way" in place of "the same schedule flow"; oracle, verify, evidence unchanged. The rev-5 history row (this PR's own) now records the respelling and no longer says "No clause changed". No second revision bump: rev 5 was introduced by this PR and the item's revision still equals the last history entry, the invariant check-platform-checklist.mjs enforces — RIGHT.
  • Nothing else moved: the diff between the two heads is exactly the four launch.json lines and the two JSON string edits; custom-page-source-tiers and the root entry are untouched — CONFIRMED.

② Semver level

Unchanged from the first record: nothing published, skip-changeset right, Clause-②: no right, Metadata-protocol: none right. The labels on the PR are still size/s, skip-changeset.

Check-runs on 4c396be at review time: every completed run is success or skipped (incl. Governed Surface Queue Guard, PR-body guards, Lint · docs & code guards which carries check-platform-checklist, Lint · PM dispatch-gates, Lint · ESLint, Lint & Repo Gates, Type Check · debt ledger / workspace / source gates, Plan Test Core shards, Dogfood Regression Gate, Test UI). Still in progress: Lint · CI, release & engine gates, Test Core (1/8, 2/8), Type Check · consumer gates. None failed. The diff touches no TypeScript, so the in-progress families cannot be moved by it; the seat should still see them finish before landing.

③ Boundary flags

No new flag raised by the dev. The two earlier flags that the delta touches:

  • (c) --no-compile omitted to match 3777 — now resolved the other way, correctly: the side-by-side entries carry the flags, the solo entry does not.
  • (b) separate DB and "the same schedule flow" — the clause now says what the fixture does; the title's claim (Studio words equal _status on each boot) is unchanged and still reachable.
    (a) runtimeExecutable: "env" is untouched and stands as answered.

④ Design judgment

.claude/launch.json against the card's scenario: both items' paths are reachable from launch.json alone exactly as before, and the one hazard the first record found is closed. Attempt to break the fix: a 3778/3779 boot on a checkout whose artifact was compiled by the 3777 boot under OS_PORT=3777 serves that artifact as built; its connector baseUrl metadata reads 3777, but RUNNER.md records (and resolveShowcaseSelfUrl() is an environment read) that live dispatch follows the exported OS_PORT, and the 3778 entry exports 3778 — no regression on the item's path. A 3778 boot on a cold tree compiles under its own env, as any first boot does. No port, DB or env precedence change.

Findings: none. No must-fix, no should-fix remaining.

Implemented-by: claude/issue-29819-studio-boot-fixtures
Reviewed-by: session_017ihL2ebbZkr2QAEG1x7UC8

VERDICT: PASS

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

domain:devx#2 · marchtian · session_017ihL2ebbZkr2QAEG1x7UC8

席位核对 — ACCEPT · domain:devx#2 · Head-sha 4c396be07fd3352fedcccc11040a2043ce8d8727 · 2026-11-04T17:44Z

  • Shape: 2 files, +62/−9 (from check-governed-merges --pr 30154): .claude/launch.json gains showcase-scheduled-work-3778 (OS_AUTOMATION_SCHEDULED_WORK_ENABLED=1) and showcase-react-pages-off-3779 (OS_PAGE_REACT_ENABLED=false), each with its own port and DB, OS_PORT, --no-compile --no-watch; showcase-dogfood-3777 is unchanged. studio-authoring.json: flow-status-matches-runtime rev 5 and custom-page-source-tiers rev 6 name the new entries in fixtures.requires and the boot step, each with a history row.
  • Tier S (.claude/**): the only governed path is under the Tier S row. Fable contract review PASS on 71ec4ccb5d (6637078272) with two should-fixes; the patch round (report 6637261898) applied both; the same reviewer's delta PASS on this head (6637413050), no findings.
  • Premise measured (report 6636890905): the exported env wins over the showcase .env (dotenv-flow is non-overriding, dev.ts:432); 1 is an ON value of the scheduled-work switch; a boot of 3778 bound the two schedule flows (_status bound: true). Not measured in this container: the React-pages-off notice in a browser (no console build), which the item's next run scores.
  • Card scope: the third gap (picklist-bound-select) was closed by docs(qa): re-point the wave-5 checklist lines and add the package export round-trip item #30128 and is left alone, as the PR body says.
  • Gates: every check-run on the head is success (27) or skipped (19); check-expected-skips OK, all 19 skips in main's roster. Local dispatch-gates --commands 19/19 exit 0 on both rounds, --ran reconciled; check-platform-checklist exit 0.
  • Accepted deviations: the PR body's two lines that predated the patch round were rewritten by the seat to match the head; the body is not otherwise changed.
  • Out of scope: Skills-docs: n/a, Clause-②: no, Metadata-protocol: none.
  • Landing: skip-changeset (no published package). Ready, then auto-merge through the merge queue.

@objectstack-fleet
objectstack-fleet Bot marked this pull request as ready for review November 4, 2026 17:50
@objectstack-fleet
objectstack-fleet Bot added this pull request to the merge queue Nov 4, 2026
Merged via the queue into main with commit 232d3bb Nov 4, 2026
47 checks passed
@objectstack-fleet
objectstack-fleet Bot deleted the claude/issue-29819-studio-boot-fixtures branch November 4, 2026 18:02
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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

checklist: give three Studio items the boot fixtures their steps need (two launch entries, one showcase picklist)

1 participant