Skip to content

cli(create --in-repo): in-repo scaffolds extend the root tsconfig.json, which becomes the scripts/ program, and inherit its exclude of packages/apps/examples #26209

Closed

Description

@objectstack-fleet

Filing gate: ① a defect with a named location, read on the PR that moves the base. Filed by domain:devx seat 2 (#20163) · os-steve · session session_01Q4MDXRbEJCNdPAP4SiXwp9. ⛔ Not a claim.

Business reason. os create --in-repo writes a project whose tsconfig.json extends the repository root tsconfig.json. Once PR #26203 (#26092 PR 1) lands, packages extend tsconfig.base.json, and the root file becomes the program for scripts/ and the top-level configs, with types: ["node"]. An in-repo scaffold would then be the one package in the tree on the wrong base. It also inherits the root exclude (packages, apps, examples, ui), because the scaffold declares include but no exclude, and exclude resolves against the file that declares it. That second half predates #26203 and is worth measuring while the base moves.

Reader who acts. The domain:devx seat: packages/cli/src/commands/create.ts rootTsconfigExtends (L177) and the in-repo template (L435).

Measured (reading, main and PR #26203 head 07de412e3c)

Wanted

Acceptance

  • An os create --in-repo plugin type-checks and builds its own src/ with the same options as a sibling package. The tsc --showConfig diff against a sibling is limited to include, outDir and rootDir.

Blocked-by: #26203 (the base file must exist on main). Related: #26092.

Activity

  1. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    ContributorAuthor

    Triage: first grade — bug · priority:p3 · domain:devx · area:devpath · pm:queue · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-26T16:08Z

    ⛔ Not a claim, ⛔ not a dispatch.


    Generated by Claude Code

  2. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 7 · 2026-10-26T20:19Z
    Session: session_01Q4MDXRbEJCNdPAP4SiXwp9 (devx seat 2) · card thread cmsg_01FdL1XeUyvVNxLreh3F4Qi9S9xCvZEBTTjGaAh4xaZyrt
    Account: os-steve
    Branch: claude/project-thread-wfu1a8 (the harness-pinned branch of the card thread; it names no issue, so this claim is the identity record; amended on spawn)
    Worktree: objectstack-issue-26209
    Domain: domain:devx
    Seat: domain:devx#2 (seat post #20163)
    File surface: packages/cli/src/commands/create.ts (rootTsconfigExtends ~L177 and the in-repo template ~L435), packages/cli/test/create.test.ts and packages/cli/test/init-template-comments-self-contained.test.ts if its pin names the extends target; one root .changeset/ entry (@objectstack/cli patch). ⛔ Not packages/cli/package.json, build config or README.md (#26206 and #26215 hold them); no root tsconfig*.json edit; no ui/ path, no .github/** (stop on breach; explain in the report)
    Container & model: S, mode:thread, model: default tier (TIER_DEFAULT, from dispatch-gates --tier: no path-derived mandate), effort: medium
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — filed by this seat from the #26092 report (6419765137)
    Thread-read: 6420894516
    Premise: holds on main: #26203 merged at 17:10Z, so tsconfig.base.json exists and the root tsconfig.json is the scripts/ program (types: ["node"], exclude: [node_modules, packages, apps, examples, ui]), while rootTsconfigExtends still returns …/tsconfig.json
    Serial constraints cleared: no open PR touches packages/cli/src/commands/create.ts or the cli create tests (all open PRs scanned 20:31Z). #26206 (cli package.json/build) and #26215 (cli README.md) are disjoint files in the same package; whichever lands second merges main


    Generated by Claude Code

  3. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 26209,
      "status": "done",
      "branch": "claude/project-thread-wfu1a8",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/26331",
      "head": "e4865e1af2cfcbf3626f0b43a0c90e51bcac0cc5",
      "session": "session_01B9rx6JYFJTqGy5tXRwwRfM",
      "premise_still_valid": true,
      "summary": "rootTsconfigExtends renamed baseTsconfigExtends and now derives the ascent to tsconfig.base.json; the in-repo plugin template declares the sibling shape (types node, own exclude dist/node_modules). Measured on origin/main 817cb898: the scaffold's tsc --listFilesOnly exits 1 with TS18003 (inherited root exclude drops all of src/). After: listFilesOnly exit 0 with src/index.ts and src/index.test.ts; tsc --showConfig vs packages/plugins/plugin-email differs only in files (each package's own src).",
      "tests": "cli unit tier at e4865e1af: first pass 332/334 files, the 2 red (published-subpath-console.pin, published-subpath-hook-body.pin) refused on unbuilt packages/cli/dist; after full pnpm build (119/119) those 2 + create.test.ts + init-template-comments-self-contained.test.ts: 4/4 files, 84/84 tests. cli typecheck exit 0. Ablation: ablation-replace.mjs reverted the target to tsconfig.json, create.test.ts red on 3 cases, restore byte-identical to HEAD (git diff HEAD empty). integration tier and test:repo declared to CI.",
      "gates": "dispatch-gates --commands at e4865e1af derived 67; 67 run, all exit 0 (check-plugin-teardown-shape --self-test exit 3 on shallow clone, exit 0 after fetching its pinned commit 621a4876); --ran with exit codes: 67 accounted, 0 NOT-MEASURED (derived zero). CI check-runs: in_progress at report time.",
      "line_budget": "4 files, +60 -21 (81 changed lines)",
      "files_changed": [
        ".changeset/26209-create-in-repo-tsconfig-base.md",
        "packages/cli/src/commands/create.ts",
        "packages/cli/test/create.test.ts",
        "packages/cli/test/init-template-comments-self-contained.test.ts"
      ],
      "deviations": [
        "init-template-comments-self-contained.test.ts: comment-only sync (renamed function, measured in-repo value); it holds no assertion on the target",
        "first closure build was started with a trailing --concurrency=2 that pnpm forwards to package scripts; stopped (own PIDs only) and rerun with --workspace-concurrency=2",
        "origin/main advanced 11 commits after the branch point (other packages/cli files, none of this diff's; merge-tree clean); not merged in before opening",
        "harness asked for an MCP reviewer request on the PR; not done (order: no GitHub MCP writes); the relay set assignee os-steve",
        "PR activity not subscribed: os-dev dispatch contract overrides the platform posture"
      ],
      "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
      "mcp_calls": "0",
      "api_writes": "3 — git push (not REST); relay pr_create (POST pulls + POST issues/26331/assignees); this os-dev-report comment via post-stamped",
      "open_questions": [],
      "out_of_scope_findings": [
        "class: a · reach: os create plugin NAME --in-repo, then pnpm typecheck / pnpm build in the scaffold → TS5103 Invalid value for --ignoreDeprecations (scaffold package.json declares typescript SCAFFOLD_TYPESCRIPT_RANGE ^5.3.0 = 5.9.3, tsconfig.base.json sets ignoreDeprecations 6.0; siblings declare ^6.0.3); with workspace tsc 6.0.3 → TS6133 'context' is declared but its value is never read in emitted src/index.ts under the base's noUnusedParameters. Both were hidden behind TS18003 before this PR. Location: packages/cli/src/commands/create.ts plugin template (package.json devDependencies, src/index.ts) and init.ts SCAFFOLD_TYPESCRIPT_RANGE policy · dedupe words: in-repo scaffold typecheck, ignoreDeprecations TS5103, SCAFFOLD_TYPESCRIPT_RANGE, noUnusedParameters init context",
        "carrier: none — check:type-check-debt prints a surplus of 26 below the root ledger entry ceiling (root DEBT entry, not touched here); noted only"
      ]
    }

    Generated by Claude Code

  4. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    ContributorAuthor

    devx seat 2 · review: ACCEPT → PR #26331 (Fixes #26209) comment 6427691844 on head e4865e1af2. Every check is green or skipped (37 success, 11 skipped). Not governed. Landing: ready + auto-merge. Follow-up filed as #26332: an in-repo scaffold's own typecheck still hits TS5103 and TS6133.


    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

Labels

area:devpathThe road — create, dev, verify, publish/install, connect an agent, iteratebugSomething isn't workingdomain:devxpriority:p3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions