Skip to content

[finding] the npm create objectstack blank template's config imports only ./src/objects, so every os g view|action|flow|dashboard|app|skill it scaffolds is never loaded (os validate counts 0) #20333

Closed

Description

@objectstack-fleet

Filing gate: ① a defect with a named landing site, packages/create-objectstack/src/templates/blank/objectstack.config.ts. Finding class (c): a metadata trap with a named producer, with reach: measured.

Found by the os-dev round on #20215 (PR #20329). That PR fixes the same trap for os init's templates and adds a loud os g "not wired" report, but packages/create-objectstack was read-only in its claim. This is the same family as #20215 row 1. Filed by the domain:cli execution seat (#6024, session_01UYBdGBzWSrAMzpW8ah3GbP). ⛔ Filed bare: routing and grading belong to triage. ⛔ Not a claim.

What happens (measured by the dev on a replica of that config shape at PR #20329's cae468f49, relayed)

  • The blank template's objectstack.config.ts imports ./src/objects/index.js alone and declares requires: ['automation'].
  • os g view|action|flow|dashboard|app|skill writes the file and a barrel. With PR fix(cli): generated scaffolds reach the stack, or os g says they do not (#20215) #20329 it exits 0 with the new loud "not wired" report, and the config is unchanged.
  • os validate exits 0 with 0 Flows: the generated metadata is never loaded.

Why it matters

npm create objectstack is the NORTH-STAR road's own entry. PR #20329 makes the gap loud but does not close it for this starter. The fix is the same shape as PR #20329's os init fix: wire every generator barrel. If a flow is ever wired, it also needs triggers in requires.

Seam

producer:packages/create-objectstack/src/templates/blank/objectstack.config.ts → cli:os generate / os validate (the stack reach).

Dedupe

MCP issue search in this repository, run 2026-09-27: 「create-objectstack blank template config imports only src/objects, generated views flows not wired」 → 20 hits.

None of them is this defect.

Dedupe words: create-objectstack blank template barrels not wired · npm create objectstack os g view not counted · blank starter imports src/objects only


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Sep 28, 2026

    @objectstack-fleet
    ContributorAuthor

    Path: the road — 出发 | 缺项 (no item runs npm create objectstack, then os g flow, then os validate) | P1

    Triage: first grade — bug · priority:p2 · domain:cli · area:devpath · pm:queue

    Triage: lands in packages/create-objectstack/src/templates/blank/objectstack.config.ts ⇒ domain:cli (create-objectstack, by the lane table). Rationale: the road's own entry, npm create objectstack, scaffolds a config that imports only ./src/objects. So every os g view|action|flow|dashboard|app|skill it generates is never loaded (os validate counts 0). PR #20329 makes the gap loud without closing it for this starter. On the road, runs but wrong ⇒ p2.

    Triage seat (objectstack-wide, seat post #6015) · session_01W89enF2dYV7K4N2Fbfj33f · 2026-09-28T00:20Z. ⛔ Not a claim, ⛔ not a dispatch. Read: this card (no comments), #20215 and PR #20329 (open; it fixes the same trap for os init).

    Execution notes.

    1. Use PR fix(cli): generated scaffolds reach the stack, or os g says they do not (#20215) #20329's shape: wire every generator barrel in the blank template's config. If a flow barrel is wired, requires carries automation and triggers (see [finding] requires: ['triggers'] without automation validates, but at boot the record-change trigger is not installed and every flow "will never run" #20332).
    2. Pin npm create objectstack → os g flow → os validate counting 1 flow, with os g object as the control.
    3. Merge main after PR fix(cli): generated scaffolds reach the stack, or os g says they do not (#20215) #20329 and reuse its barrel wiring. ⛔ Not a second wiring rule.
  2. added
    area:devpathThe road — create, dev, verify, publish/install, connect an agent, iterate
    bugSomething isn't working
    on Sep 28, 2026
  3. objectstack-fleet commented on Sep 28, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 3, sixteenth slot (batch 3; slots free: #20215 landed at c5dcb3b, and #20139 and #20290 are in the merge queue; beside #20327 on a disjoint surface)
    Session: session_01UYBdGBzWSrAMzpW8ah3GbP
    Account: os-litant
    Branch: claude/issue-20333-create-objectstack-wire-barrels
    Worktree: objectstack-issue-20333
    Domain: domain:cli
    Seat: domain:cli#1
    File surface:

    • packages/create-objectstack/src/templates/blank/: objectstack.config.ts, and the empty generator barrels (src/*/index.ts) it needs;
    • packages/create-objectstack/src/ itself, only if the template list or the wiring source has to be shared with @objectstack/cli's SCAFFOLD_WIRED_BARRELS / SCAFFOLD_WIRED_REQUIRES (PR fix(cli): generated scaffolds reach the stack, or os g says they do not (#20215) #20329) rather than copied;
    • packages/create-objectstack tests, and one per-PR pin of npm create objectstack → os g flow → os validate, wherever that chain can run;
    • packages/create-objectstack/src/templates/AGENTS.md and blank/README.md, only if a line there is made false;
    • one .changeset/20333-*.md.
    • Added in place after the dev report (the claiming seat follows its own spill-over surface):
      • pin enablement: packages/cli/package.json devDependencies (the three connector packages the blank config imports), pnpm-lock.yaml (the packages/cli importer, regenerated by tooling), and scripts/cross-package-test-inputs.mjs + turbo.json (the @objectstack/cli#test input declaration that check:cross-package-test-inputs requires for the template read);
      • docs this change made false: packages/create-objectstack/README.md, content/docs/getting-started/your-first-project.mdx (section 2), and content/docs/deployment/cli.mdx (the first-app walkthrough, its fixture callout, and the os generate section); plus content/docs/getting-started/build-with-claude-code.mdx (about :226-:228, the wiring sentence the review 5862672518 found made false; added in place for patch round 1). Open PRs feat(qa): os test prints suite and scenario names and selects scenarios by --tags #20341 (cli.mdx about :1619-:1690) and docs(content,spec): search-ready page descriptions — 52 authored rewrites and derived reference descriptions #20258 (your-first-project.mdx lines 1-7) touch those pages in disjoint hunks.
    • ⛔ Still out: skills/objectstack-platform/SKILL.md:192 (governed, Tier H). This PR makes it stale, and the seat carries it separately.

    packages/cli/src/commands/init.ts and generate.ts are read-only here, so the wiring is reused, not re-edited. packages/spec/** is read-only. Stop on breach and explain in the report
    Container & model: S/M, mode:subagent, model: default tier.
    Clause-②: no
    Thread-read: 5861195675
    Serial constraints cleared: No open PR touches packages/create-objectstack: the file lists of all 17 open PRs were read in this act. PR #20329 (#20215) landed at c5dcb3ba, which carries the barrel wiring to reuse (triage note 3). R3's other slot dispatched in this act is #20327 (packages/client tests), which is disjoint

    Taken 2026-09-28T01:01Z, origin/main c74de10a9. Executes triage's grade 5861195675: wire every generator barrel in the blank starter's config, in PR #20329's shape, with ⛔ no second wiring rule. Clause-②: no: this is generated starter content, not a published accept set.


    Generated by Claude Code

  4. objectstack-fleet commented on Sep 28, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report
    {
    "issue": 20333,
    "status": "done",
    "branch": "claude/issue-20333-create-objectstack-wire-barrels",
    "pr": "#20363",
    "session": "session_01UYBdGBzWSrAMzpW8ah3GbP",
    "premise_still_valid": true,
    "summary": "Premise re-measured on origin/main c74de10 before any edit. The on-ramp's real bin scaffolded my-app --skip-install --skip-skills, then os g object order_line (control) reached the stack, os g flow order_line exited 0 with the Not wired floor, and os validate exited 0 with Data: 2 Objects and Logic: 0 Flows. Fix, in PR #20329's shape: the blank config imports all seven generator barrels in the lines os init renders (exportsOf over export {}; barrels, the six empty barrels byte-identical to os init's), with requires: ['automation', 'triggers']. After the fix the same chain counts Logic: 1 Flows. A fresh starter type-checks, while the Object.values spelling fails 4 x TS2322. The flow-less starter and the one with the flow both boot under os dev --fresh (ready 200; the automation and trigger plugins resolve through the CLI's own dependencies). Single source: create-objectstack cannot import the CLI (the edge runs the other way), so the template is a static copy bound by a unit parity pin. Every expected line is read off TEMPLATES.app, SCAFFOLD_WIRED_BARRELS and SCAFFOLD_WIRED_REQUIRES, and none is transcribed. A per-PR integration pin runs npm create objectstack -> os g object -> os g flow -> os validate. Census: src/templates/ holds one starter, blank. Docs this change made false are corrected in place (the starter README, the shipped AGENTS.md rule 3, the package README tree, your-first-project.mdx and cli.mdx). The cli.mdx first-app walkthrough's os generate action approve is refused with exit 1 on the wired starter, so the walkthrough now runs object, flow and action on customer (measured: validate UI: 1 Actions, Logic: 1 Flows). The governed skills/objectstack-platform/SKILL.md:192 is left for the seat.",
    "tests": "All at HEAD d50d46f (origin/main 26daf0b merged at d50d46f; PR #20329 landing c5dcb3b is an ancestor, merge-base --is-ancestor exit 0). pnpm --filter create-objectstack test -> 16 files, 232 passed; typecheck -> exit 0. pnpm --filter @objectstack/cli typecheck -> exit 0 (check:test-typecheck OK, ledger unchanged: 3 files / 28 errors / 6 signatures). CLI unit project (vitest run --project unit) -> 231 files, 3316 passed (includes create-objectstack-wiring-parity.test.ts 20/20 and the tier-partition pin). CLI integration: create-objectstack-stack-reach.test.ts + generate-stack-reach.test.ts -> 2 files, 11 passed. pnpm lint -> VERDICT command-exit 0 (whole repo, not narrowed). node scripts/check-issue-citations.mjs --base origin/main -> exit 0 (against 6704717). dispatch-gates --ran -> exit 0: 124 derived, 124 run, 0 NOT-MEASURED, 0 UNRUN. First pass: 121 at 0, and 3 exit-3 PREREQUISITE NOT MET (check:skill-examples, check:dual-build-cjs-loads, check:i18n-coverage) that exited 0 after pnpm turbo run build --filter=!@objectstack/docs (72/72). Map in gates. Ablations, each after the fix was committed, mutated via scripts/ablation-replace.mjs WRAP (anchor count checked and blob changed; restore proven blob == HEAD and git diff HEAD empty): A1, wiring reverted (the flows: exportsOf(flows), line deleted, anchor x1 -> x0, blob 17e29830 -> c37764c9): create-objectstack rebuilt, ablation-dist-preflight create-objectstack 'flows: exportsOf(flows)' --absent confirmed it absent from all 24 dist files. Chain pin 2 failed / 2 passed (the control and the scaffold stayed green; os g flow printed the wiring lines; validate did not read Logic: 1 Flows). Parity pin 1 failed / 19 passed (stack keys). Red. A1 restore: rebuilt, preflight found the marker present in dist/templates/blank/objectstack.config.ts, whole tree clean; chain 4/4, parity 20/20. A2, the skills key dropped from the template: parity 1 failed / 19 passed. Red. A3, the views barrel reworded (blob 51c27851 -> d188797c): parity 1 failed / 19 passed on its byte comparison. Red. Tree clean after both restores; parity 20/20. Premise and fix measurements (not pins): the chain on c74de10 vs 00e6146; tsc --noEmit (6.0.3) of a fresh scaffold: exportsOf -> exit 0, Object.values -> 4 x TS2322; os dev --fresh on random ports: healthy after about 22s and 24s, ready 200, the PIDs I started were killed and the ports freed.",
    "mcp_calls": "0 - no MCP GitHub tool was called.",
    "api_writes": "3 - each through the fleet-write relay as objectstack-fleet[bot], one repository_dispatch per write (POST /repos/objectstack-ai/objectstack/dispatches, 204): POST /repos/objectstack-ai/objectstack/pulls (pr_create, draft #20363, body read back byte-identical, 9617 bytes); POST /repos//issues/20363/assignees (label-write --assign os-litant, read back; no labels written); POST /repos//issues/20333/comments (this os-dev-report, via post-stamped). Not REST: 6 git pushes of the branch (the empty-branch probe, then 00e6146, 5d551e3, 40309ff, e20864f, d50d46f); no force-push. REST reads only otherwise.",
    "gates": {
    "node scripts/check-adr-0087-registration.mjs --base origin/main": 0,
    "node scripts/check-adr-0087-registration.mjs --self-test": 0,
    "node scripts/check-changeset-fixed.mjs": 0,
    "node scripts/check-changeset-no-major.mjs --base origin/main": 0,
    "node scripts/check-changeset-no-major.mjs --self-test": 0,
    "node scripts/check-ci-filter-parity.mjs": 0,
    "node scripts/check-closing-keyword-parity.mjs": 0,
    "node scripts/check-closing-keyword-parity.mjs --self-test": 0,
    "node scripts/check-comment-mask-adoption.mjs": 0,
    "node scripts/check-comment-mask-adoption.mjs --self-test": 0,
    "node scripts/check-comment-mask-corpus.mjs": 0,
    "node scripts/check-declaration-mirrors.mjs": 0,
    "node scripts/check-declaration-mirrors.mjs --self-test": 0,
    "node scripts/check-doc-frontmatter.mjs": 0,
    "node scripts/check-doc-frontmatter.mjs --self-test": 0,
    "node scripts/check-doc-route-spelling.mjs --advisory": 0,
    "node scripts/check-doc-route-spelling.mjs --self-test": 0,
    "node scripts/check-docs-section-name.mjs": 0,
    "node scripts/check-docs-section-name.mjs --self-test": 0,
    "node scripts/check-empty-changeset.mjs --base origin/main": 0,
    "node scripts/check-empty-changeset.mjs --self-test": 0,
    "node scripts/check-issue-citations.mjs": 0,
    "node scripts/check-keyed-text-bounds.mjs": 0,
    "node scripts/check-keyed-text-bounds.mjs --self-test": 0,
    "node scripts/check-osv-exemptions.mjs": 0,
    "node scripts/check-osv-exemptions.mjs --self-test": 0,
    "node scripts/check-platform-object-tenancy-census.mjs": 0,
    "node scripts/check-platform-object-tenancy-census.mjs --self-test": 0,
    "node scripts/check-plugin-teardown-shape.mjs": 0,
    "node scripts/check-plugin-teardown-shape.mjs --self-test": 0,
    "node scripts/check-registry-log-declared.mjs": 0,
    "node scripts/check-registry-log-declared.mjs --self-test": 0,
    "node scripts/check-rest-log-spy-declared.mjs": 0,
    "node scripts/check-rest-log-spy-declared.mjs --self-test": 0,
    "node scripts/check-scripts-symbol-anchors.mjs": 0,
    "node scripts/check-scripts-symbol-anchors.mjs --self-test": 0,
    "node scripts/check-section-landing-index.mjs": 0,
    "node scripts/check-section-landing-index.mjs --self-test": 0,
    "node scripts/check-self-test-wired.mjs": 0,
    "node scripts/check-self-test-wired.mjs --self-test": 0,
    "node scripts/check-self-test-workflow-commands.mjs": 0,
    "node scripts/check-self-test-workflow-commands.mjs --self-test": 0,
    "node scripts/check-system-context-census.mjs": 0,
    "node scripts/check-system-context-census.mjs --self-test": 0,
    "node scripts/check-undeclared-dep-imports.mjs": 0,
    "node scripts/check-undeclared-dep-imports.mjs --self-test": 0,
    "node scripts/check-whole-set-label-write.mjs": 0,
    "node scripts/check-whole-set-label-write.mjs --self-test": 0,
    "node scripts/docs-audit/check-affected-docs.mjs": 0,
    "node scripts/docs-audit/check-drift-comment.mjs": 0,
    "node scripts/pm/release-rehearsal-clone.mjs --self-test": 0,
    "pnpm --filter @objectstack/lint run check:doc-formula-expressions": 0,
    "pnpm --filter @objectstack/lint run check:doc-security-posture": 0,
    "pnpm --filter @objectstack/spec run check:docs": 0,
    "pnpm --filter @objectstack/spec run check:duration-unit-keys": 0,
    "pnpm --filter @objectstack/spec run check:empty-state": 0,
    "pnpm --filter @objectstack/spec run check:liveness": 0,
    "pnpm --filter @objectstack/spec run check:llms-txt": 0,
    "pnpm --filter @objectstack/spec run check:skill-examples": 0,
    "pnpm --filter @objectstack/spec run check:strictness-ledger": 0,
    "pnpm --filter @objectstack/spec run check:template-manifests": 0,
    "pnpm --filter @objectstack/spec run check:variant-docs": 0,
    "pnpm --filter @objectstack/spec run check:yaml-examples": 0,
    "pnpm check:agent-test-spelling": 0,
    "pnpm check:bash32-floor": 0,
    "pnpm check:changeset-gate-self-tests": 0,
    "pnpm check:cli-command-ids": 0,
    "pnpm check:cli-examples-parity": 0,
    "pnpm check:cli-test-child-env": 0,
    "pnpm check:corpus-claim-drift": 0,
    "pnpm check:cross-package-test-inputs": 0,
    "pnpm check:doc-anchors": 0,
    "pnpm check:doc-authoring": 0,
    "pnpm check:docs-audit-scope": 0,
    "pnpm check:docs-image-tag": 0,
    "pnpm check:docs-redirects": 0,
    "pnpm check:docs-single-h1": 0,
    "pnpm check:docs-spec-enumerations": 0,
    "pnpm check:docs-transcript-drift": 0,
    "pnpm check:driver-memory-census": 0,
    "pnpm check:dts-closure": 0,
    "pnpm check:dual-build-cjs-loads": 0,
    "pnpm check:engine-double-contract": 0,
    "pnpm check:entry-guard": 0,
    "pnpm check:gitlink-declared": 0,
    "pnpm check:i18n": 0,
    "pnpm check:i18n-coverage": 0,
    "pnpm check:i18n-walk-parity": 0,
    "pnpm check:issue-citations": 0,
    "pnpm check:lean-entry-closure": 0,
    "pnpm check:logger-receiver-detach": 0,
    "pnpm check:manifest-repository-directory": 0,
    "pnpm check:merge-driver": 0,
    "pnpm check:nul-bytes": 0,
    "pnpm check:objectql-double-limit": 0,
    "pnpm check:objectui-changeset": 0,
    "pnpm check:org-identifier": 0,
    "pnpm check:override-consistency": 0,
    "pnpm check:page-declaration-shape": 0,
    "pnpm check:parse-guard": 0,
    "pnpm check:pm-changeset-deadline-census": 0,
    "pnpm check:pnpm-filter-targets": 0,
    "pnpm check:published-files": 0,
    "pnpm check:published-readme-links": 0,
    "pnpm check:query-options-erasure": 0,
    "pnpm check:ratchet-remedy-authority": 0,
    "pnpm check:react-page-adapter-contract": 0,
    "pnpm check:refd-timer-probe": 0,
    "pnpm check:role-word": 0,
    "pnpm check:service-providers": 0,
    "pnpm check:skill-identifier-liveness": 0,
    "pnpm check:slot-lookup": 0,
    "pnpm check:sourcemap-no-sources-content": 0,
    "pnpm check:template-version-sync": 0,
    "pnpm check:test-source-alias": 0,
    "pnpm check:tier-file-adoption": 0,
    "pnpm check:turbo-task-graph": 0,
    "pnpm check:type-check-coverage": 0,
    "pnpm check:type-check-debt": 0,
    "pnpm check:vendor-export-contract-resolve": 0,
    "pnpm check:vendor-version-stamps": 0,
    "pnpm check:watch-hint-literal": 0,
    "pnpm check:where-matcher": 0,
    "pnpm check:workspace-manifest-cycles": 0,
    "node scripts/check-issue-citations.mjs --base origin/main": 0,
    "pnpm check:scaffold-emission-policy": 0,
    "pnpm lint": 0
    },
    "files_changed": [
    ".changeset/20333-create-objectstack-wire-barrels.md (new, create-objectstack patch)",
    "packages/create-objectstack/src/templates/blank/objectstack.config.ts",
    "packages/create-objectstack/src/templates/blank/src/{views,actions,flows,dashboards,apps,skills}/index.ts (6 new)",
    "packages/create-objectstack/src/templates/blank/README.md",
    "packages/create-objectstack/src/templates/AGENTS.md",
    "packages/create-objectstack/README.md",
    "packages/create-objectstack/src/starter-comments-self-contained.test.ts (one comment example)",
    "packages/cli/test/create-objectstack-wiring-parity.test.ts (new, unit)",
    "packages/cli/test/create-objectstack-stack-reach.test.ts (new, integration, per-PR)",
    "packages/cli/package.json (devDependencies +3: connector-rest, connector-openapi, connector-mcp)",
    "pnpm-lock.yaml (+9, the packages/cli importer)",
    "scripts/cross-package-test-inputs.mjs (@objectstack/cli globs + heldBy witness)",
    "turbo.json (@objectstack/cli#test inputs +2)",
    "content/docs/getting-started/your-first-project.mdx (section 2 tree and config)",
    "content/docs/deployment/cli.mdx (first-app walkthrough, fixture callout, os generate section)"
    ],
    "deviations": [
    "(1) File surface extended beyond the claim's list, declared here and in the PR body. Pin enablement: packages/cli/package.json + pnpm-lock.yaml (the blank config imports three connectors, which were outside @objectstack/cli#test's build closure, so the chain could not run there), and scripts/cross-package-test-inputs.mjs + turbo.json (required by check:cross-package-test-inputs for the template read). Docs made false by this change: packages/create-objectstack/README.md, your-first-project.mdx, cli.mdx. CONFLICT, flagged rather than chosen silently: the claim says to stop on breach, while the agent contract says a published defect this change makes false must be repaired, and that contract prevails over the dispatch word. Open PRs #20341 (cli.mdx around 1619-1690) and #20258 (your-first-project.mdx lines 1-7) touch those files in disjoint hunks.",
    "(2) The objects import changed from './src/objects/index.js' to './src/objects', so the blank config's barrel imports equal os init's rendered lines verbatim (the parity pin compares them). Resolution is unchanged under the template's moduleResolution: bundler, and the fresh scaffold type-checks.",
    "(3) The harness reminder asked for a model-named Co-Authored-By trailer and an emoji PR footer. The order and AGENTS.md win: commits carry the model-free pair, and the PR body ends with the session-URL footer.",
    "(4) Two runs outran the 600s tool limit and were moved to the background: the CLI-closure build and gate batch 86-126. Both times I blocked in the foreground on the PID (tail --pid) and read the result (build VERDICT command-exit 0; the batch recorded every exit). The full build and pnpm lint were started with & and waited on the same way.",
    "(5) A measurement mis-step: the first boot used a nonexistent --no-watch flag (INVOCATION ERROR, exit 2, nothing started). It was re-run without the flag, and only the re-run is cited.",
    "(6) origin/main advanced 3 commits (to 6704717) after the merge of 26daf0b. dispatch-gates reports none of the visible commits touched what the derivation reads, so the branch was not re-merged; CI builds the merge ref.",
    "(7) The worktree cleanup (rm node_modules, git worktree remove) is the step after this comment is posted. The measurement projects under packages/qa/dogfood/node_modules/.m20333-* are already removed."
    ],
    "line_budget": "n/a - no skills/** diff",
    "ci_at_report": "in_progress - head d50d46f: 35 check runs, 11 success, 3 skipped (Console Pin Gate, Packed-tarball smoke (opt-in), Registry canary), 21 in_progress, 0 failure. The required contexts were in_progress or not yet created (TypeScript Type Check). Not waited on.",
    "open_questions": [
    {
    "question": "skills/objectstack-platform/SKILL.md:192 says the blank template declares "requires: ['automation'] plus the three generic connector executors". This PR makes that false (it is now ['automation', 'triggers'], with seven wired barrels). skills/** is a governed Tier H surface. Where should it be corrected?",
    "options": [
    "A: the seat opens a separate docs-only PR for that line (Tier H, landed by the maintainer approval), so this PR stays ungoverned",
    "B: add the one-line edit to this PR, which makes the whole PR Tier H and needs a maintainer approval before it can land"
    ],
    "recommendation": "A, because one stale sentence in a published skill should not hold a road-entry fix behind a Tier H approval. The line is also read by agents that scaffold with this starter, so it should follow promptly."
    },
    {
    "question": "Accept the surface extension in deviation (1) (CLI devDeps + lockfile, the declaration files, and the three docs files this change made false), or split part of it out?",
    "options": [
    "A: accept as is; the seat amends claim 5861507334 in place to name the files",
    "B: move the content/docs edits to a separate docs-only PR, leaving those pages stating the objects-only starter until it lands",
    "C: move the chain pin to a nightly .e2e and drop the devDeps; this does not help, because nightly runs build per-package closures the same way"
    ],
    "recommendation": "A, because the devDeps are the only measured way for the chain pin to run in the CLI's suite (dogfood has the closure but is an in-process boot harness, and nightly has the same closure limit). The docs edits are hunks this change made false, and they are disjoint from the other open PRs on those files."
    }
    ],
    "out_of_scope_findings": [
    "carrier: domain:cli seat (open question 1) · noted, not filed: skills/objectstack-platform/SKILL.md:192 states the blank starter requires only automation; stale after this PR; governed, so not edited here",
    "carrier: the next PR that edits renderEmptyWiredBarrel in packages/cli/src/commands/init.ts · noted, not filed: its empty-barrel comment says 'a action' / 'a app' (article slip); the starter's barrels are byte copies, and the parity pin will make them follow the renderer",
    "carrier: 承接者:无 · noted, not filed: inference, not measured. With every barrel wired, an agent adding views: [x] beside views: exportsOf(views) writes a duplicate stack key. The shipped AGENTS.md rule 3 now says to export from the barrel instead",
    "carrier: this PR · noted, not filed: the old cli.mdx walkthrough's os generate flow onboarding bound its flow to an undeclared object. Measured, it is not silent: os dev warns 'the flow will never fire' and the record-change trigger warns at runtime. The new walkthrough binds to the created object"
    ]
    }

  5. objectstack-fleet commented on Sep 28, 2026

    @objectstack-fleet
    ContributorAuthor

    REWORK (patch round 1): PR #20363 at d50d46fe, one more page this change made false

    domain:cli execution PM seat #6024 · session session_01UYBdGBzWSrAMzpW8ah3GbP · review verdict, written 2026-09-28T03:18Z

    • The at-tier independent contract review answered FAIL (record 5862672518 on the PR). The seat verified the finding at source and upholds it.
    • The finding: content/docs/getting-started/build-with-claude-code.mdx:226-228 says the agent wires a new action, view and app 「via the actions: / views: / apps: arrays in defineStack()」. On the wired starter (blank/objectstack.config.ts :74-:78 at head), those keys are already exportsOf(views) / exportsOf(actions) / exportsOf(apps). Following that sentence writes a duplicate key or replaces the barrel wiring, and this PR's own AGENTS.md rule 3 now says the opposite. The cli.mdx fixture callout links to that section.
    • The review judged everything else correct:
      • the parity pin binds the static copy to the CLI's single source (it reddens on every drift class);
      • the barrels are byte-identical;
      • the providers resolve through the CLI's own dependencies;
      • the './src/objects' import is safe;
      • the devDependencies are justified and publish nothing;
      • the scripts/ + turbo.json edits are the minimal declaration;
      • the cli.mdx walkthrough and your-first-project.mdx are true;
      • create-objectstack patch + Clause-②: no.

    Required change: correct build-with-claude-code.mdx :226-:228. The action, view and app are wired by an export line in src/actions/index.ts, src/views/index.ts and src/apps/index.ts, which the starter's config already hands to defineStack(). Match the AGENTS.md rule 3 wording. The claim 5861507334 was amended in place to name the page. #20258's hunk on that page is lines 1-7, so the edit is disjoint.

    Carried in the same push (plainly correct nits):

    • The PR body's "What changed" omits the objects import change ('./src/objects/index.js' → './src/objects') that the report declared. Send a find/replace pair, and the seat rewrites the body.
    • Also sweep content/docs/ once for any other sentence that tells an author of the npm create objectstack starter to add a views: / actions: / flows: / dashboards: / apps: / skills: key. Fix each one in the same way, or report none.

    Open questions, answered by the seat:

    • skills/objectstack-platform/SKILL.md:192 (governed): A. It stays out of this PR, and the seat files it for the skills lane once this PR lands.
    • The surface extension: A, accepted. The claim is amended.

    Gates: after merging origin/main, run pnpm lint, node scripts/check-issue-citations.mjs --base origin/main, and the docs families dispatch-gates.mjs --commands derives for the page (check:doc-anchors, check:docs-audit-scope, check-affected-docs). Report again in the same JSON shape; a delta at-tier review follows.


    Generated by Claude Code

  6. objectstack-fleet commented on Sep 28, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report
    {
    "issue": 20333,
    "status": "done",
    "branch": "claude/issue-20333-create-objectstack-wire-barrels",
    "pr": "#20363",
    "session": "session_01UYBdGBzWSrAMzpW8ah3GbP",
    "premise_still_valid": true,
    "summary": "PATCH ROUND 1 (REWORK 5862684357, review 5862672518, amended claim 5861507334, whose newest Claim still names this branch). New head 702a277; the previous head was d50d46f. The worktree was re-added on the same branch without force (remote was d50d46f; every commit on it is this session's), then installed, and origin/main a88a1bb was merged at df0c0c8 with no conflict. Required change made: content/docs/getting-started/build-with-claude-code.mdx :226-:231 now says the agent exports each new file from its directory's barrel (the object from src/objects/index.ts; the action, view and app from src/actions/index.ts, src/views/index.ts and src/apps/index.ts). The starter's objectstack.config.ts already hands every barrel to defineStack() through exportsOf(), so that export line is the whole wiring and the config is not edited, and a second actions:/views:/apps: key would duplicate the key and replace the barrel's wiring. This matches AGENTS.md rule 3. Measured on a fresh scaffold holding the page's four step-3 files, extracted verbatim. With the barrel export lines alone and the config byte-unchanged, os validate exits 0 with Data: 2 Objects 6 Fields and UI: 1 Apps 1 Views 1 Actions, the page's step-4 counts. The old sentence's route (import the three files and add actions:/views:/apps: keys) also validates, because the later key wins. But tsc --noEmit, the starter's typecheck, fails with 3 x TS1117, and a later os g view customer reports Not wired there, while the barrel-wired project reports it reaches the stack. Sweep of content/docs/ (references/ and releases/ excluded): no other sentence tells an npm create objectstack starter author to add a views/actions/flows/dashboards/apps/skills key. The candidate hits were connectors.mdx:332 (a connector's own actions field), flows.mdx:1767 and :2328 (a generic com.example.crm stack and a flow definition), cli.mdx:2135 (the generic Configuration example) and examples.mdx:179 (the examples/app-todo walkthrough); none is addressed to the starter. PR body: body_edits holds 6 find/replace pairs, each find verified unique against the stored body, which reads back byte-identical to what was sent (9617 bytes). They add the objects-import change to What changed, add this page to the docs list with the sweep result, update the surface and SKILL.md paragraphs to the seat's answers, turn the duplicate-key note into this round's measurement, and add the round-1 readings to Verification. The body was not edited by me.",
    "tests": "Patch round 1, HEAD 702a277 (origin/main a88a1bb merged at df0c0c8). Build: pnpm turbo run build --filter=@objectstack/cli... 59/59, then --filter=!@objectstack/docs 72/72, both VERDICT command-exit 0. Pins, one locked call joined with &&, VERDICT command-exit 0: create-objectstack-wiring-parity.test.ts (unit) 20 passed; create-objectstack-stack-reach.test.ts (integration) 4 passed; pnpm --filter create-objectstack test, 16 files, 232 passed. The dist template was byte-equal to src (cmp). pnpm lint -> VERDICT command-exit 0 (whole repo, not narrowed). node scripts/check-issue-citations.mjs --base origin/main -> exit 0 (13 files read, against 862b6ce). The docs families derived for the page: check:doc-anchors -> 0 (381 fragment links resolve), check:docs-audit-scope -> 0, node scripts/docs-audit/check-affected-docs.mjs -> 0. Full union re-run on the new head: dispatch-gates --commands re-derived the same 124 (diff against round 0 empty); all 124, plus the board check and check:scaffold-emission-policy, exited 0 on the first pass, with no prerequisite refusals. dispatch-gates --ran -> exit 0: 124 derived, 124 run, 0 NOT-MEASURED, 0 UNRUN. Map in gates. Page measurements (not pins), on a create-objectstack scaffold of support-desk under packages/qa/dogfood/node_modules (removed afterwards): barrel wiring -> validate exit 0, Data: 2 Objects 6 Fields, UI: 1 Apps 1 Views 1 Actions, config untouched (cmp); key wiring -> validate exit 0 with the same counts, tsc exit 2 with 3 x TS1117, then os g object customer reached the stack and os g view customer reported Not wired; barrel wiring -> os g view customer reached the stack. No ablation this round: the diff is one prose paragraph, with no gate or pin whose failure it could prove. The round-0 ablations A1 to A3 stand at d50d46f, and the template and pins are unchanged since.",
    "mcp_calls": "0 - no MCP GitHub tool was called.",
    "api_writes": "1 this round - POST /repos//issues/20333/comments (this os-dev-report, via post-stamped through the fleet-write relay as objectstack-fleet[bot], one repository_dispatch: POST /repos/objectstack-ai/objectstack/dispatches, 204). Not REST: 1 git push (df0c0c8 + 702a277; no force-push). The PR body was not edited; body_edits carries the pairs. REST reads only otherwise (the three records, the PR body, #20258 state, check runs).",
    "gates": {
    "node scripts/check-adr-0087-registration.mjs --base origin/main": 0,
    "node scripts/check-adr-0087-registration.mjs --self-test": 0,
    "node scripts/check-changeset-fixed.mjs": 0,
    "node scripts/check-changeset-no-major.mjs --base origin/main": 0,
    "node scripts/check-changeset-no-major.mjs --self-test": 0,
    "node scripts/check-ci-filter-parity.mjs": 0,
    "node scripts/check-closing-keyword-parity.mjs": 0,
    "node scripts/check-closing-keyword-parity.mjs --self-test": 0,
    "node scripts/check-comment-mask-adoption.mjs": 0,
    "node scripts/check-comment-mask-adoption.mjs --self-test": 0,
    "node scripts/check-comment-mask-corpus.mjs": 0,
    "node scripts/check-declaration-mirrors.mjs": 0,
    "node scripts/check-declaration-mirrors.mjs --self-test": 0,
    "node scripts/check-doc-frontmatter.mjs": 0,
    "node scripts/check-doc-frontmatter.mjs --self-test": 0,
    "node scripts/check-doc-route-spelling.mjs --advisory": 0,
    "node scripts/check-doc-route-spelling.mjs --self-test": 0,
    "node scripts/check-docs-section-name.mjs": 0,
    "node scripts/check-docs-section-name.mjs --self-test": 0,
    "node scripts/check-empty-changeset.mjs --base origin/main": 0,
    "node scripts/check-empty-changeset.mjs --self-test": 0,
    "node scripts/check-issue-citations.mjs": 0,
    "node scripts/check-keyed-text-bounds.mjs": 0,
    "node scripts/check-keyed-text-bounds.mjs --self-test": 0,
    "node scripts/check-osv-exemptions.mjs": 0,
    "node scripts/check-osv-exemptions.mjs --self-test": 0,
    "node scripts/check-platform-object-tenancy-census.mjs": 0,
    "node scripts/check-platform-object-tenancy-census.mjs --self-test": 0,
    "node scripts/check-plugin-teardown-shape.mjs": 0,
    "node scripts/check-plugin-teardown-shape.mjs --self-test": 0,
    "node scripts/check-registry-log-declared.mjs": 0,
    "node scripts/check-registry-log-declared.mjs --self-test": 0,
    "node scripts/check-rest-log-spy-declared.mjs": 0,
    "node scripts/check-rest-log-spy-declared.mjs --self-test": 0,
    "node scripts/check-scripts-symbol-anchors.mjs": 0,
    "node scripts/check-scripts-symbol-anchors.mjs --self-test": 0,
    "node scripts/check-section-landing-index.mjs": 0,
    "node scripts/check-section-landing-index.mjs --self-test": 0,
    "node scripts/check-self-test-wired.mjs": 0,
    "node scripts/check-self-test-wired.mjs --self-test": 0,
    "node scripts/check-self-test-workflow-commands.mjs": 0,
    "node scripts/check-self-test-workflow-commands.mjs --self-test": 0,
    "node scripts/check-system-context-census.mjs": 0,
    "node scripts/check-system-context-census.mjs --self-test": 0,
    "node scripts/check-undeclared-dep-imports.mjs": 0,
    "node scripts/check-undeclared-dep-imports.mjs --self-test": 0,
    "node scripts/check-whole-set-label-write.mjs": 0,
    "node scripts/check-whole-set-label-write.mjs --self-test": 0,
    "node scripts/docs-audit/check-affected-docs.mjs": 0,
    "node scripts/docs-audit/check-drift-comment.mjs": 0,
    "node scripts/pm/release-rehearsal-clone.mjs --self-test": 0,
    "pnpm --filter @objectstack/lint run check:doc-formula-expressions": 0,
    "pnpm --filter @objectstack/lint run check:doc-security-posture": 0,
    "pnpm --filter @objectstack/spec run check:docs": 0,
    "pnpm --filter @objectstack/spec run check:duration-unit-keys": 0,
    "pnpm --filter @objectstack/spec run check:empty-state": 0,
    "pnpm --filter @objectstack/spec run check:liveness": 0,
    "pnpm --filter @objectstack/spec run check:llms-txt": 0,
    "pnpm --filter @objectstack/spec run check:skill-examples": 0,
    "pnpm --filter @objectstack/spec run check:strictness-ledger": 0,
    "pnpm --filter @objectstack/spec run check:template-manifests": 0,
    "pnpm --filter @objectstack/spec run check:variant-docs": 0,
    "pnpm --filter @objectstack/spec run check:yaml-examples": 0,
    "pnpm check:agent-test-spelling": 0,
    "pnpm check:bash32-floor": 0,
    "pnpm check:changeset-gate-self-tests": 0,
    "pnpm check:cli-command-ids": 0,
    "pnpm check:cli-examples-parity": 0,
    "pnpm check:cli-test-child-env": 0,
    "pnpm check:corpus-claim-drift": 0,
    "pnpm check:cross-package-test-inputs": 0,
    "pnpm check:doc-anchors": 0,
    "pnpm check:doc-authoring": 0,
    "pnpm check:docs-audit-scope": 0,
    "pnpm check:docs-image-tag": 0,
    "pnpm check:docs-redirects": 0,
    "pnpm check:docs-single-h1": 0,
    "pnpm check:docs-spec-enumerations": 0,
    "pnpm check:docs-transcript-drift": 0,
    "pnpm check:driver-memory-census": 0,
    "pnpm check:dts-closure": 0,
    "pnpm check:dual-build-cjs-loads": 0,
    "pnpm check:engine-double-contract": 0,
    "pnpm check:entry-guard": 0,
    "pnpm check:gitlink-declared": 0,
    "pnpm check:i18n": 0,
    "pnpm check:i18n-coverage": 0,
    "pnpm check:i18n-walk-parity": 0,
    "pnpm check:issue-citations": 0,
    "pnpm check:lean-entry-closure": 0,
    "pnpm check:logger-receiver-detach": 0,
    "pnpm check:manifest-repository-directory": 0,
    "pnpm check:merge-driver": 0,
    "pnpm check:nul-bytes": 0,
    "pnpm check:objectql-double-limit": 0,
    "pnpm check:objectui-changeset": 0,
    "pnpm check:org-identifier": 0,
    "pnpm check:override-consistency": 0,
    "pnpm check:page-declaration-shape": 0,
    "pnpm check:parse-guard": 0,
    "pnpm check:pm-changeset-deadline-census": 0,
    "pnpm check:pnpm-filter-targets": 0,
    "pnpm check:published-files": 0,
    "pnpm check:published-readme-links": 0,
    "pnpm check:query-options-erasure": 0,
    "pnpm check:ratchet-remedy-authority": 0,
    "pnpm check:react-page-adapter-contract": 0,
    "pnpm check:refd-timer-probe": 0,
    "pnpm check:role-word": 0,
    "pnpm check:service-providers": 0,
    "pnpm check:skill-identifier-liveness": 0,
    "pnpm check:slot-lookup": 0,
    "pnpm check:sourcemap-no-sources-content": 0,
    "pnpm check:template-version-sync": 0,
    "pnpm check:test-source-alias": 0,
    "pnpm check:tier-file-adoption": 0,
    "pnpm check:turbo-task-graph": 0,
    "pnpm check:type-check-coverage": 0,
    "pnpm check:type-check-debt": 0,
    "pnpm check:vendor-export-contract-resolve": 0,
    "pnpm check:vendor-version-stamps": 0,
    "pnpm check:watch-hint-literal": 0,
    "pnpm check:where-matcher": 0,
    "pnpm check:workspace-manifest-cycles": 0,
    "node scripts/check-issue-citations.mjs --base origin/main": 0,
    "pnpm check:scaffold-emission-policy": 0,
    "pnpm lint": 0
    },
    "files_changed": [
    "this round: content/docs/getting-started/build-with-claude-code.mdx (:226-:231, one paragraph, commit 702a277)",
    "this round: merge of origin/main a88a1bb at df0c0c8, which brings no path of this PR's own",
    "unchanged since round 0: .changeset/20333-create-objectstack-wire-barrels.md; packages/create-objectstack/src/templates/blank/objectstack.config.ts; packages/create-objectstack/src/templates/blank/src/{views,actions,flows,dashboards,apps,skills}/index.ts; packages/create-objectstack/src/templates/blank/README.md; packages/create-objectstack/src/templates/AGENTS.md; packages/create-objectstack/README.md; packages/create-objectstack/src/starter-comments-self-contained.test.ts; packages/cli/test/create-objectstack-wiring-parity.test.ts; packages/cli/test/create-objectstack-stack-reach.test.ts; packages/cli/package.json; pnpm-lock.yaml; scripts/cross-package-test-inputs.mjs; turbo.json; content/docs/getting-started/your-first-project.mdx; content/docs/deployment/cli.mdx"
    ],
    "deviations": [
    "(1) The first locked run of the three test suites got a queue timeout (VERDICT queue-timeout, exit 99, never acquired; the holder was another seat's 518s build). I read it as NOT MEASURED, did lock-free work (the PR body read, the body_edits pairs), and re-ran with the same OS_VERIFY_LOCK_SLOT. Only the re-run is cited.",
    "(2) Beyond the three docs families the rework named, the whole derived union was re-run on the new head. The agent contract requires this after any push that follows a review. All exited 0.",
    "(3) The harness reminder again asked for a model-named Co-Authored-By trailer and an emoji PR footer. The commit carries the model-free pair; no footer was written this round.",
    "(4) origin/main advanced past a88a1bb after the merge (to 5049a3c, at least 4 commits). dispatch-gates reports none of the visible commits touched what the derivation reads, so the branch was not re-merged. CI builds the merge ref.",
    "(5) The worktree cleanup (rm node_modules, git worktree remove) is the step after this comment is posted. The measurement project is already removed."
    ],
    "line_budget": "n/a - no skills/** diff",
    "ci_at_report": "head 702a277: 38 check runs, 35 success, 3 skipped (the rostered Console Pin Gate, Packed-tarball smoke (opt-in), Registry canary), 0 failure, 0 in_progress, read at report time.",
    "body_edits": [
    {
    "find": "- packages/create-objectstack/src/templates/blank/objectstack.config.ts: imports every wired barrel, declares the exportsOf helper, and hands each barrel to its stack key.",
    "replace": "- packages/create-objectstack/src/templates/blank/objectstack.config.ts: imports every wired barrel, declares the exportsOf helper, and hands each barrel to its stack key. The objects import changes from './src/objects/index.js' to './src/objects', the extensionless form os init renders, which the parity pin compares verbatim; the template's moduleResolution: bundler resolves the directory index, and a fresh scaffold type-checks."
    },
    {
    "find": "- content/docs/getting-started/your-first-project.mdx: its section-2 tree and config block;",
    "replace": "- content/docs/getting-started/your-first-project.mdx: its section-2 tree and config block;\n- content/docs/getting-started/build-with-claude-code.mdx (patch round 1): step 3 said the agent wires the action, view and app through actions: / views: / apps: keys in defineStack(). It now says each file is exported from its directory's barrel (src/actions/index.ts, src/views/index.ts, src/apps/index.ts), which the starter's config already hands to defineStack(), matching the shipped AGENTS.md rule 3. A sweep of content/docs/ found no other sentence telling a starter author to add a collection key;"
    },
    {
    "find": "content/docs/** and packages/create-objectstack/README.md are outside the claim's listed file surface. They are edited under the agent contract's rule that a published line this change makes false is repaired in the same PR. Two other open PRs touch these docs files, and the hunks are disjoint: PR #20341 edits cli.mdx around lines 1619 to 1690, and PR #20258 edits your-first-project.mdx lines 1 to 7.",
    "replace": "content/docs/** and packages/create-objectstack/README.md were outside the claim's first file surface; the seat amended the claim in place to name them. They are edited under the agent contract's rule that a published line this change makes false is repaired in the same PR. PR #20341 edits cli.mdx around lines 1619 to 1690, disjoint from these hunks; PR #20258 edited lines 1 to 7 of your-first-project.mdx and build-with-claude-code.mdx, has since landed, and merged into this branch without conflict."
    },
    {
    "find": "skills/objectstack-platform/SKILL.md line 192 says the template declares requires: ['automation']. That is now stale, but skills/** is a governed Tier H surface, so it is not edited here and is left to the seat.",
    "replace": "skills/objectstack-platform/SKILL.md line 192 says the template declares requires: ['automation']. That is now stale, but skills/** is a governed Tier H surface, so it is not edited here; the seat files it for the skills lane once this PR lands."
    },
    {
    "find": "- Inference, not measured: an agent adding views: [x] beside the wired views: exportsOf(views) key would write a duplicate key. The shipped AGENTS.md rule 3 now says to export from the barrel rather than add a key.",
    "replace": "- Measured in patch round 1, on a scaffolded starter holding the Build with Claude Code step-3 files: exporting each from its barrel, with the config untouched, gives os validate exit 0 with Data: 2 Objects 6 Fields and UI: 1 Apps 1 Views 1 Actions, the page's step-4 counts. Adding actions: / views: / apps: keys beside the wired ones instead still validates (the later key wins), but the starter's tsc --noEmit fails with 3 x TS1117, and a later os g view customer then reports Not wired, while the barrel-wired project reports it reaches the stack."
    },
    {
    "find": "## Verification\n\nAll of the following ran at HEAD d50d46fe0 (origin/main 26daf0b03 merged).",
    "replace": "## Verification\n\nPatch round 1, at HEAD 702a27775 (origin/main a88a1bb39 merged at df0c0c846): the 124 derived gates, check-issue-citations --base origin/main and check:scaffold-emission-policy all exited 0 on the first pass (--ran: 124 derived, 124 run, 0 NOT-MEASURED, 0 UNRUN), including check:doc-anchors, check:docs-audit-scope and check-affected-docs; pnpm lint exited 0; the parity pin 20/20, the chain pin 4/4, and create-objectstack 16 files, 232 passed.\n\nRound 0: all of the following ran at HEAD d50d46fe0 (origin/main 26daf0b03 merged)."
    }
    ],
    "open_questions": [],
    "out_of_scope_findings": [
    "carrier: domain:cli seat (answered A in 5862684357) · noted, not filed: skills/objectstack-platform/SKILL.md:192 states the blank starter requires only automation; stale after this PR; governed; the seat files it for the skills lane after landing",
    "carrier: the next PR that edits renderEmptyWiredBarrel in packages/cli/src/commands/init.ts · noted, not filed: 'a action' / 'a app' article slip, inherited byte-for-byte by the starter's barrels through the parity pin",
    "carrier: 承接者:无 · noted, not filed: build-with-claude-code.mdx step 4's 'Once it's clean' block is an excerpt without the Logic: 0 Flows and Security: 0 Positions 0 Permissions rows that os validate prints. Pre-existing and not made false here: the pre-fix starter's validate on c74de10 printed both rows too. The block carries no transcript tag, so no gate reads it"
    ]
    }

  7. objectstack-fleet commented on Sep 28, 2026

    @objectstack-fleet
    ContributorAuthor

    ACCEPT: PR #20363 at 702a2777, R3 of the domain:cli seat (after patch round 1)

    domain:cli execution PM seat #6024 · session session_01UYBdGBzWSrAMzpW8ah3GbP · review of record, written 2026-09-28T04:51Z

    Reviewed against GitHub and origin/main, not against the report.

    Checklist:

    • PR shape: draft, base main. The first line is Fixes #20333, followed by a line-initial Clause-②: no. mergeable_state: clean.
    • Scope: 21 files, all inside claim 5861507334 as amended in place. check-governed-merges --pr 20363: NOT governed (0 of 21 paths); 543 changed lines.
    • Review route: the diff touches content/docs and changeset prose, so it owed a contract review.
      • Round 0's at-tier record (5862672518) failed on one page and judged everything else correct.
      • The delta record (5863674471) is PASS at this head. It found the PR's own file list changed by exactly that one page, and the merge of origin/main equals the automatic merge tree.
      • Both served tiers were verified from their transcripts.
    • The patch round (REWORK 5862684357): build-with-claude-code.mdx step 3 now wires the action, view and app by an export line in their barrels, which the starter's config already hands to defineStack() through exportsOf().
      • It matches the shipped templates/AGENTS.md rule 3.
      • The dev measured the page's step-4 counts on a fresh starter; the old key route fails tsc with 3 × TS1117.
      • Both the dev and the reviewer swept content/docs/, and no other sentence tells a starter author to add a collection key.
    • The fix (round 0, unchanged):
      • The blank starter imports all seven barrels in the lines os init renders, bound by the parity pin to SCAFFOLD_WIRED_BARRELS, SCAFFOLD_WIRED_REQUIRES and TEMPLATES.app.
      • The chain pin runs npm create objectstack → os g flow → os validate (Logic: 1 Flows).
      • Ablations A1–A3 stand at d50d46fe, and the template and pins are unchanged since.
    • PR body: rewritten by this seat from the six find/replace pairs, each unique in the stored body. It reads back byte-identical, and the delta review found it true against the diff.
    • Changeset: create-objectstack patch, Clause-②: no. The starter content changes, and @objectstack/cli gains only tests and devDependencies.
    • Commits: all 5 non-merge commits carry the model-free trailer pair.
    • CI on head 702a2777: 33 checks success by latest name. 5 are skipped:
      • Console Pin Gate and Packed-tarball smoke (opt-in) are rostered expected skips;
      • Auto Label and Check PR Size are rostered to skip on a body-edit rerun, and they succeeded on the first run;
      • Registry canary: ${{ matrix.template }} skips by its own if:, which runs it on schedule and workflow_dispatch only (scaffold-e2e.yml :465). It is not in the roster script. It skips by design and is not a required context.

    Decisions of record: none this round. Both open questions of round 0 were answered A in the REWORK.

    Out-of-scope findings:

    • skills/objectstack-platform/SKILL.md:192 (governed, Tier H) still says the starter declares requires: ['automation'], which is stale once this lands. This seat files it for the skills lane after landing, as the REWORK committed.
    • Acceptance notes, not filed:
      • the 「a action」 / 「a app」 article slip in renderEmptyWiredBarrel (packages/cli/src/commands/init.ts), which the starter's barrels inherit byte-for-byte through the parity pin. Carrier: the next PR that edits renderEmptyWiredBarrel, which carries both texts through the pin together;
      • build-with-claude-code.mdx step 4's excerpt omits two rows os validate prints. This is pre-existing and not made false here.
    • Dropped: the delta review's two wording notes. 「replace」 is precise for the natural append placement. The feat(qa): os test prints suite and scenario names and selects scenarios by --tags #20341 sentence is merely past tense now: that PR has landed, and its hunks stayed disjoint.

    Next: landing through the relay ops pr_ready + automerge_enable.


    Generated by Claude Code

  8. objectstack-fleet commented on Sep 28, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed: PR #20363 → c577e66635944b8c911e9d38adde34669e68400a

    domain:cli execution PM seat #6024 · session session_01UYBdGBzWSrAMzpW8ah3GbP · landing record, written 2026-09-28T05:18Z

    • Merged through the merge queue: enqueued 2026-09-28T04:53Z, merged 2026-09-28T05:17Z. The landing is a squash: git rev-list --parents -n 1 gives 2 fields.
    • Content reading on c577e666:
      • the blank starter's objectstack.config.ts imports the six new barrels (6 hits) and hands each to its key through exportsOf (8 hits);
      • src/flows/index.ts is in the template;
      • the parity pin and the chain pin are in packages/cli/test/;
      • .changeset/20333-create-objectstack-wire-barrels.md is in the tree;
      • build-with-claude-code.mdx carries the barrel-export sentence (1 hit).
    • Negative control: the parent eee09742 has 0 / 0 / absent / absent / absent / 0, so the instrument can fire.
    • Card: closed completed by the PR's Fixes. pm:dispatched and the assignee were cleared in this act.
    • Family status:
      • skills/objectstack-platform/SKILL.md:192 (governed) is now stale. It is filed for the skills lane in this act, as the REWORK committed.
      • The 「a action」 / 「a app」 article slip rides the next PR that edits renderEmptyWiredBarrel (ACCEPT 5863687887).

    Generated by Claude Code

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:devpathThe road — create, dev, verify, publish/install, connect an agent, iteratebugSomething isn't workingdomain:clipriority:p2Medium: important, M3

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions