Skip to content

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

Closed

Description

@objectstack-fleet

domain:devx#2 · marchtian · session_017ihL2gLghEqeDKTbDTC7Zd

Filing gate: ① follow-up owed by landed work (#29679 / PR #29815), checklist tri-state ②: three items' steps cannot reach the path their title asserts, so every run scores them partial or blocked.
Reader: domain:devx seat, next PR that touches .claude/launch.json and examples/app-showcase/objectstack.config.ts (two slices if the launch half is governed)
Dedupe (open AND closed): "launch.json OS_AUTOMATION_SCHEDULED_WORK_ENABLED", "OS_PAGE_REACT_ENABLED launch", "picklist-bound-select", "flow-status-matches-runtime", "custom-page-source-tiers" → 0 cards for this gap (hits are #29679, QA run records, and closed #21957 which added the item)
reach: QA run #29672 at 3482f3d scored the three items below without driving their path
QA-source: #29672 · studio-authoring · flow-status-matches-runtime, custom-page-source-tiers, picklist-bound-select
Checklist item priority: inherits each item's
type: Task

Why

The QA run of 2026-11-03 could not drive three studio-authoring items. Each one needs the server booted with something the checklist's own fixture declarations cannot provide. #29679 was scoped to re-point clauses only, and its order says a gap that needs a governed or seed-data change gets reported, not patched. So the three items stay partial or blocked on every run, and that costs a human read each time. This card is that report.

The gaps (named by #29679's table; the #29679 dev confirmed on main 339f63da30 that no checklist fixture declaration can hold them)

  1. flow-status-matches-runtime needs a boot with OS_AUTOMATION_SCHEDULED_WORK_ENABLED=1. A runner that can start servers only from .claude/launch.json has no such entry.
  2. custom-page-source-tiers needs a boot with OS_PAGE_REACT_ENABLED=false. .claude/launch.json has no such entry either.
  3. picklist-bound-select needs a package picklist plus an object extension that binds a field to it in examples/app-showcase/objectstack.config.ts. Until the showcase ships them, every run scores the item blocked.

.claude/launch.json is a governed surface (Tier S); check check-governed-merges --pr N on the final file list. The picklist fixture is a seed-data change to the showcase.

Acceptance notes

  • Each item's fixtures.requires names the new launch entry or seed artefact by name, with a revision bump and a history row.
  • A run that boots from .claude/launch.json reaches each item's path. Score the three items again on the next studio-authoring run.

Activity

  1. added
    findingRecorded observation — held, not dispatchable until the findings triage round grades it
    on Nov 3, 2026
  2. objectstack-fleet commented on Nov 3, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: first-touch audit · p2 · domain:devx · pm:queue · 2026-11-03T06:55Z

    ⛔ Not a claim.


    Generated by Claude Code

  3. added
    domain:devxDomain lane — seat card indexed by label:pm:seat
    pm:queueReady for the PM dispatch loop
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    findingRecorded observation — held, not dispatchable until the findings triage round grades it
    pm:queueReady for the PM dispatch loop
    on Nov 3, 2026
  4. objectstack-fleet commented on Nov 4, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:devx#2 · marchtian · session_017ihL2ebbZkr2QAEG1x7UC8

    Claim: PM loop round 1
    Session: session_017ihL2ebbZkr2QAEG1x7UC8
    Account: marchtian
    Branch: claude/issue-29819-studio-boot-fixtures
    Worktree: objectstack-issue-29819
    Domain: domain:devx
    Seat: domain:devx#2
    File surface: .claude/launch.json (two new boot entries: one with OS_AUTOMATION_SCHEDULED_WORK_ENABLED=1, one with OS_PAGE_REACT_ENABLED=false) and docs/qa/platform-checklist/areas/studio-authoring.json (flow-status-matches-runtime and custom-page-source-tiers: fixtures.requires names the entry, revision bump, history row). ⛔ picklist-bound-select is out: PR #30128 already re-pointed it to the scratch-copy edit, and the showcase seed is not touched.
    Container & model: S, mode:subagent, model: default tier (dispatch-gates --tier: no path-derived mandate), effort: medium
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — not a defect card (follow-up finding from #29679)
    Thread-read: 6597425957
    Premise: holds for two of three (origin/main 6d1dc7f: .claude/launch.json has one entry, showcase-dogfood-3777, with no env; both items still tell the runner to flip the env by hand). The third gap was closed by #30128.
    Serial constraints cleared: no open PR or live Claim: names these files. .claude/** is Tier S under check-governed-merges: the seat lands it only on a ## Contract review PASS at CONTRACT_REVIEW_TIER for the current head.

  5. objectstack-fleet commented on Nov 4, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:devx#2 · marchtian · session_017ihL2ebbZkr2QAEG1x7UC8
    os-dev-report

    {
      "gates": {
        "derived_at": "71ec4ccb5d",
        "derived_count": 19,
        "local_exits": "all 19 exit 0 on the final run: check-adr-links (+ --self-test), check-closing-keyword-parity (+ --self-test), check-comment-mask-corpus, ci/plan-test-core-shards --self-test, @objectstack/lint check:doc-formula-expressions, check:agent-test-spelling, check:ci-filter-parity, check:cross-package-test-inputs, check:doc-authoring, check:driver-memory-census, check:gitlink-declared, check:nul-bytes, check:platform-checklist, check:pm-governed-merges, check:refd-timer-probe, check:skill-frame-sync, check:watch-hint-literal",
        "first_run_exit_3": "7 families exited 3 (PREREQUISITE NOT MET, no node_modules) before pnpm install --frozen-lockfile; doc-formula-expressions also needed turbo build of @objectstack/formula + @objectstack/lint (lock VERDICT command-exit 0); all re-run, exit 0",
        "ran_reconciliation": "19 derived, 19 run, 0 NOT-MEASURED (a DERIVED zero: all 19 recorded an exit code, none 3); outside derivation 1: node scripts/check-platform-checklist.mjs exit 0",
        "check_governed_merges_pr": "node scripts/pm/check-governed-merges.mjs --pr 30154 exit 3: GOVERNED Tier S, .claude/launch.json under .claude/**; 65 changed lines",
        "ci": "in_progress at report time; not awaited"
      },
      "line_budget": {
        "budget_net": 60,
        "additions": 57,
        "deletions": 8,
        "net": 49,
        "files": 2
      },
      "deviations": [
        "runtimeExecutable env rather than the bash -lc shape of ui/.claude/launch.json:16-19: same mechanism (env from the runtime command), no shell string",
        "flow-status-matches-runtime: because the order gives the schedule entry its own DB, steps[4] now authors the schedule flow again on that entry and runs it beside the default boot, and steps[5] is pinned to the default boot; the old step assumed a reboot on the same DB",
        "new entries carry no --no-compile, matching showcase-dogfood-3777"
      ],
      "files_changed": [
        ".claude/launch.json (+42/-0)",
        "docs/qa/platform-checklist/areas/studio-authoring.json (+15/-8)"
      ],
      "launch_format_evidence": [
        ".claude/launch.json:4-20 and ui/.claude/launch.json:4-55: the only keys used are name, runtimeExecutable, runtimeArgs, port, url; no env key exists in either file",
        "ui/.claude/launch.json:16-19 console-build-test: env is set from an entry through its runtime command (bash -lc with VITE_SERVER_URL= DEV_PROXY_TARGET=... exec pnpm dev); the new entries use runtimeExecutable env with the assignments as leading runtimeArgs",
        ".claude/launch.json:5-20 showcase-dogfood-3777 gets its port from runtimeArgs -p 3777 plus port 3777 and its DB from -d file:/tmp/showcase-dogfood-3777/data.db; the new entries copy that shape on 3778 and 3779 with file:/tmp/showcase-scheduled-work-3778/data.db and file:/tmp/showcase-react-pages-off-3779/data.db",
        "docs/qa/platform-checklist/RUNNER.md:304-349: a non-3000 boot exports OS_PORT beside -p; both new entries export it"
      ],
      "env_precedence_evidence": [
        "packages/cli/src/commands/dev.ts:432 dotenvFlow.config({ node_env: 'development', silent: true })",
        "node_modules/.pnpm/dotenv-flow@4.1.0/node_modules/dotenv-flow/lib/dotenv-flow.js:193 a file variable is set only if !process.env.hasOwnProperty(varname): process env wins over .env",
        "packages/cli/src/commands/doctor.ts:448 and packages/cli/src/utils/schema-migrate.ts:906 state the same precedence",
        "packages/cli/src/utils/console.ts:903-942 readReactPagesTier reads OS_PAGE_REACT_ENABLED; false is in REACT_PAGES_OFF",
        "packages/types/src/env.ts:237-240 resolveScheduledWorkEnabled accepts 1/true/on/yes",
        "measured in examples/app-showcase with dotenv-flow 4.1.0: OS_PAGE_REACT_ENABLED=false exported stays false after config; unset loads true from .env"
      ],
      "boot_probe": {
        "showcase-scheduled-work-3778": "booted with the exact entry args after a built closure (OS_SKIP_DTS=1, 66/66 tasks): health 200; banner 32 flow(s) 21 bound; authenticated GET /api/v1/automation/_status: showcase_scheduled_digest bound true (schedule), showcase_task_due_reminder bound true (time_relative); stopped by process group, port free",
        "showcase-react-pages-off-3779": "booted with the exact entry args: health 200; banner 32 flow(s) 19 bound (control leg for the scheduled-work switch); stopped by process group, port free",
        "not_measured": "react-pages-off rendering in the browser: no packages/console/dist in this container (boot logged ConsoleNotBuilt); env precedence measured directly instead"
      },
      "mcp_calls": "0",
      "api_writes": "2: POST /repos/objectstack-ai/objectstack/dispatches (relay pr_create: draft create #30154 + labels leg skip-changeset, read back 6304/6304 bytes identical, labels listed, assignees none); POST /repos/objectstack-ai/objectstack/issues/29819/comments (this report, via post-stamped.mjs)",
      "out_of_scope_findings": []
    }
  6. objectstack-fleet commented on Nov 4, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:devx#2 · marchtian · session_017ihL2ebbZkr2QAEG1x7UC8
    os-dev-report

    Patch round (delta) for PR #30154 after Contract review comment 6637078272 (PASS, two should-fixes). Head 71ec4cc moved to 4c396be in one commit. No merge of main: the PR is mergeable and has no conflict.

    {
      "head": "4c396be07f",
      "fixes": {
        "S1": ".claude/launch.json: showcase-scheduled-work-3778 and showcase-react-pages-off-3779 gain --no-compile and --no-watch after --seed-admin. showcase-dogfood-3777 is unchanged: it is a solo boot, and no code requires the flags there",
        "S2": "studio-authoring.flow-status-matches-runtime acceptance[3].clause now reads 'a schedule flow authored the same way' in place of 'the same schedule flow'. There is no second bump: rev 5 already belongs to this PR. Its history row now records the respelling, which replaces the earlier 'No clause changed'"
      },
      "flag_evidence": [
        "packages/cli/src/commands/dev.ts:319-324 watch: Flags.boolean default true, allowNo true, so --no-watch is the spelling",
        "packages/cli/src/commands/dev.ts:342-346 compile: Flags.boolean default true, allowNo true, so --no-compile is the spelling; its description says the artifact is still compiled when missing",
        "packages/cli/src/utils/dev-compile-at-boot.ts:40-49 devCompilesAtBoot: returns true when the artifact does not exist, so --no-compile compiles only on a cold tree"
      ],
      "line_budget": { "round_additions": 6, "round_deletions": 2, "pr_total_vs_main": "+63/-10, 53 net of 60" },
      "gates": {
        "derived_count": 19,
        "local_exits": "all 19 derived commands exit 0 at 4c396be07f (the same 19 as round 1); node scripts/check-platform-checklist.mjs exit 0",
        "ran_reconciliation": "19 derived, 19 run, 0 NOT-MEASURED (a DERIVED zero)"
      },
      "pr_body_stale": "The PR body still says the new entries carry no --no-compile (Acceptance notes, third bullet) and 'No clause changed' for flow-status-matches-runtime (What changes). The dev writes the body only once, so the seat should rewrite those two lines",
      "mcp_calls": "0",
      "api_writes": "1: POST /repos/objectstack-ai/objectstack/issues/29819/comments (this delta, via post-stamped.mjs); git push is not a REST write",
      "out_of_scope_findings": []
    }
  7. objectstack-fleet commented on Nov 4, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:devx#2 · marchtian · session_017ihL2ebbZkr2QAEG1x7UC8

    Landed · PR #30154 merged as 232d3bb5ef · 2026-11-04T18:03Z. .claude/launch.json now has showcase-scheduled-work-3778 (scheduled work on) and showcase-react-pages-off-3779 (React pages off), and flow-status-matches-runtime (rev 5) and custom-page-source-tiers (rev 6) name them. The picklist-bound-select gap was closed earlier by #30128. Tier S: Fable PASS 6637078272, delta PASS 6637413050, ACCEPT 6637748403. The next studio-authoring run should score the two items from these entries. The card closed through Fixes; pm:dispatched comes off in this stroke.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

domain:devxDomain lane — seat card indexed by label:pm:seatpriority:p2Medium: important, M3tests

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions