Skip to content

scaffold(create-objectstack): measure npx -y create-objectstack@next on node 22 / npm 10 with pnpm absent — does 18.0 GA fix the latest install crash by itself? (#24445) #24487

Closed

Description

@objectstack-fleet

Filed by the director seat (summon #43 continuation 5, session_01QJC7i981TSs9L1CGJK59Ax) on the maintainer's words of 2026-10-19 in this seat's chat, on #24445: 「等我发布了新的 v18 npx create-objectstack问题就能解决吗?要不要派一个卡测试一下」 then 「你只需要创建卡片」. A measurement card: it fixes nothing, changes no workflow, publishes nothing. ⛔ Not a claim.

Why

What to measure

On a machine or container with Node 22 (npm 10.9.x) and pnpm absent from PATH (so the scaffolder takes the npm path a first-time user takes). Mirror the canary's steps at scaffold-e2e.yml:549ff; ⛔ do not edit the workflow (Tier H) — run it by hand.

  1. The case: npx -y create-objectstack@next canary-app -t blank --skip-skills. Record the banner version (expected 18.0.0-next.N), the package manager it chose, the full outcome of its install step, and whatever the canary runs after scaffolding (the same objectstack command the job runs).
  2. The control: the same command with @latest (expected: banner 17.7.0, edgesOut crash, objectstack: not found). If the control passes, the premise of [Decision] The nightly registry canary is red since 10-16: npx create-objectstack@latest is 17.7.0, whose install crashes on npm 10 (edgesOut), and 17.x is frozen — canary on @next until 18.0 GA (A), a scaffolder-only 17.7.1 (B), or wait (C)? #24445 has changed; say so.
  3. The common path: repeat case 1 with pnpm on PATH (expected green; records which path the scaffolder took).
  4. Dist-tags at the time of the reading: npm view create-objectstack dist-tags and npm view @objectstack/runtime dist-tags.

Done when

Dedupe

needs-user-decision and pm:queue cards read in this act: #24445 is the decision card (it names A / B / C and runs no measurement); no other card measures the registry path on @next. #23805 / #23806 / #23849 / #23966 are the 18.x fixes and their docs, all landed.

Related: #24445 (the decision; this card's reading precedes its letter), #24168 (the next version PR, merged), scaffold-e2e.yml (registry-canary), ADR none.

Activity

  1. objectstack-fleet commented on Oct 19, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 3 · priority:p1 cut in on the maintainer's 「24487 插队」 in this session's chat
    Session: session_01FM29ZqLTrnPNXxijioZwMp
    Account: os-warren (the seat's linked user as GET /user answers it; the card's assignee)
    Branch: claude/issue-24487-next-npm10-scaffold-reading (a measurement card: no PR expected)
    Worktree: objectstack-issue-24487 (read-only use; the scaffolds run in a scratch directory outside every worktree)
    Domain: domain:devx
    Seat: domain:devx#1
    File surface: none in the tree. Writes are the readings on this card, one pointer line on #24445, and, only on a red @next reading, one fix card on the 18.x line (domain:devx) through the filing gate. ⛔ No workflow edit (scaffold-e2e.yml is Tier H), no fix, no release (stop on breach; explain in the report).
    Container & model: S (four registry readings, by hand), mode:subagent, model: TIER_DEFAULT (dispatch-gates --tier: no file surface, so no path-derived mandate)
    Clause-②: no
    Responsibility: n/a — not a defect card (a measurement that precedes the maintainer's letter on #24445)
    Thread-read: none
    Serial constraints cleared: none — the card touches no file; #24445 is its decision card (needs-user-decision, no claim) and #24462 (pm:blocked) is the registry canary's own card; neither is in flight (read at 2026-10-19T07:18Z).


    Generated by Claude Code

  2. objectstack-fleet commented on Oct 19, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 24487,
      "status": "done",
      "branch": "claude/issue-24487-next-npm10-scaffold-reading",
      "pr": null,
      "session": "session_01FM29ZqLTrnPNXxijioZwMp — the parent PM's harness-stamped id (subagent = parent's), as the dispatch and Claim 6261874232 name it",
      "premise_still_valid": true,
      "summary": "Measurement card, no tree change. Verdict: GREEN on @next (npm path). `npx -y create-objectstack@next canary-app -t blank --skip-skills` ran on node v22.22.0 / npm 10.9.4 with `command -v pnpm` empty and a cold npm cache. It printed the banner `Create ObjectStack v18.0.0-next.3`, chose npm, installed (`added 565 packages, and audited 566 packages in 1m`, scaffold exit 0) and passed the canary's post-scaffold steps: validate 0, build 0, test 0, health ok, ready 200. The @latest control (banner v17.7.0) reproduced #24445: `npm error Cannot read properties of null (reading 'edgesOut')`, scaffold exit 0 behind `Dependency installation failed`, then validate and build exit 127 with `sh: 1: objectstack: not found`. With pnpm on PATH (10.28.0), @next chose pnpm and went fully green. Both 18.x fixes are inside the published 18.0.0-next.3: the blank template carries overrides.vitest ~4.0.0 and is byte-identical to main's, and metadata-core@18.0.0-next.3 has no vitest peer. Main itself is at 18.0.0-next.4, which is unpublished. So 18.0 GA moving `latest` is expected to turn the registry canary green on its own, and no 17.x release is needed for the new-user path. Limits: next.3 is not GA; only npm 10.9.x was measured; Node 20's npm 10.8.x was not. No fix card was filed because the reading is green. Side effect: one `git fetch origin main` in the PM's worktree /home/user/objectstack-pm-devx1, which advanced the shared origin/main to ae6bd1a69 and rewrote that checkout's FETCH_HEAD. No file was edited anywhere in a tree, and no worktree, branch or push was made, because the card edits nothing.",
      "tests": "No repo tests: no file changed. Readings, each case in a fresh scratch dir outside every worktree with a fresh npm_config_cache. (1) PATH=/usr/local/bin:/usr/bin:/bin, pnpm=[] corepack=[]: `npx -y create-objectstack@next canary-app -t blank --skip-skills` gave SCAFFOLD_EXIT=0, banner v18.0.0-next.3, npm, `added 565 packages`. Then VALIDATE_EXIT=0, BUILD_EXIT=0, TEST_EXIT=0 (`Tests 1 passed (1)`), HEALTH ok after ~14s, READY_EXIT=0 `{\"success\":true,\"data\":{\"status\":\"ready\",\"state\":\"running\"}}`. (2) The same with @latest gave SCAFFOLD_EXIT=0, banner v17.7.0, `npm error Cannot read properties of null (reading 'edgesOut')`. Then VALIDATE_EXIT=127 and BUILD_EXIT=127 (`sh: 1: objectstack: not found`), no test script, BOOT_EXIT=1 (`npm error could not determine executable to run`). The install log's last 20 lines are on the card. (3) PATH with /opt/node22/bin first, pnpm 10.28.0, fresh pnpm store: @next gave SCAFFOLD_EXIT=0, banner v18.0.0-next.3, `Done in 9.7s using pnpm v10.28.0`, and validate, build, test, health and ready all 0. (4) dist-tags at 07:21:29Z and again at 07:29:32Z: create-objectstack, @objectstack/runtime and @objectstack/metadata-core each read { rc: '17.0.0-rc.6', latest: '17.7.0', next: '18.0.0-next.3' }. Contents check: `npm pack create-objectstack@18.0.0-next.3` gave a template package.json with overrides.vitest ~4.0.0, and `cmp` against main ae6bd1a69 exited 0; `npm view @objectstack/metadata-core@18.0.0-next.3 --json` shows peerDependencies absent, versus vitest ^4.0.0 optional on 17.7.0. Ablation: n/a, since no behaviour changed.",
      "gates": "Local subset: none from the tree. This card changes no file, so `dispatch-gates --commands` has no change set to derive from: NOT MEASURED by design, as the dispatch states. Exit codes were captured before any pipe: each run redirected to a file and read `$?` first. The three post-scaffold runs went through `scripts/pm/os-verify-lock.sh` with stable OS_VERIFY_LOCK_SLOT names, and each printed `VERDICT command-exit 0` (held 28s / 5s / 29s, waited 0s, shared-box seconds). CI check-runs: none to cite, because there is no PR. The registry canary workflow was not edited or dispatched.",
      "mcp_calls": "0 — no MCP GitHub tool called; reads were unauthenticated-header REST GETs through the container proxy (GET /issues/24487, /issues/24487/comments, /issues/24445, /issues/24445/comments)",
      "api_writes": "2 — via scripts/pm/post-stamped.mjs (fleet relay, transport auto): POST comment on #24487 (this os-dev-report), then POST comment on #24445 (the one-line pointer)",
      "open_questions": [],
      "out_of_scope_findings": [
        "carrier: 承接者:无 · noted, not filed — observation, not a defect class: the scaffolder (17.7.0 and 18.0.0-next.3 alike, `execSync(pm install)` in a try/catch) exits 0 after a failed dependency install. It prints `Dependency installation failed. Run npm install manually.` and then `Environment created!`. So a scripted caller, the registry canary included, sees the failure first at the next step as `objectstack: not found`. Deliberate warn-and-continue design; recorded because it explains why the canary's red step is `Gate the generated project` and never the scaffold step. Dedupe words: create-objectstack install failure exit code, Dependency installation failed, scaffold exit 0, registry canary objectstack not found"
      ]
    }

    Verdict

    GREEN on @next (npm path). npx -y create-objectstack@next canary-app -t blank --skip-skills on node v22.22.0 / npm 10.9.4, with command -v pnpm and command -v corepack both empty and a cold npm cache, printed the banner Create ObjectStack v18.0.0-next.3, took the npm path, installed (added 565 packages, and audited 566 packages in 1m) and passed every post-scaffold step the registry canary runs: npm run validate 0, npm run build 0, npm test 0 (1 passed), npx os start healthy, /api/v1/ready 200. The @latest control (banner v17.7.0) reproduces #24445 step for step. So 18.0 GA moving latest is expected to turn the registry canary green on its own, and no 17.x release is needed for the new-user path. That expectation holds only within the limits at the end of this comment.

    What the published 18.0.0-next.3 contains (both 18.x fixes: present)

    Reading 1: the case (@next, npm path, pnpm absent)

    case: /tmp/claude-0/-home-user/5e5f3ad1-48c1-5930-8512-e71ce7585a21/scratchpad/issue-24487/case1-next-npm
    start: 2026-10-19T07:23:36Z
    PATH=/usr/local/bin:/usr/bin:/bin
    command -v node: /usr/local/bin/node (v22.22.0)
    command -v npm: /usr/local/bin/npm (10.9.4)
    command -v npx: /usr/local/bin/npx
    command -v pnpm: []
    command -v corepack: []
    git toplevel of cwd: []
    + npx -y create-objectstack@next canary-app -t blank --skip-skills
    SCAFFOLD_EXIT=0
    end: 2026-10-19T07:24:44Z
    

    Scaffold output (ANSI colour codes stripped; otherwise verbatim):

    
      ╔═════════════════════════════════════════╗
      ║   ◆ Create ObjectStack v18.0.0-next.3   ║
      ╚═════════════════════════════════════════╝
    
    ◆ New Environment
    ────────────────────────────────────────
      Environment: canary-app
      Namespace: canary_app
      Template: blank — Minimal starter — one object, REST API, ready to extend
      Directory: /tmp/claude-0/-home-user/5e5f3ad1-48c1-5930-8512-e71ce7585a21/scratchpad/issue-24487/case1-next-npm/canary-app
    
      ✓ Template files written (22)
    
      → Installing dependencies...
    npm warn deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
    npm warn deprecated prebuild-install@7.1.3: No longer maintained. Please contact the author of the relevant native addon; alternatives are available.
    npm warn deprecated rimraf@2.7.1: Rimraf versions prior to v4 are no longer supported
    npm warn deprecated lodash.isequal@4.5.0: This package is deprecated. Use require('node:util').isDeepStrictEqual instead.
    npm warn deprecated fstream@1.0.12: This package is no longer supported.
    npm warn deprecated glob@7.2.3: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
    npm warn deprecated glob@7.2.3: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
    npm warn deprecated glob@7.2.3: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
    npm warn deprecated uuid@8.3.2: uuid@10 and below is no longer supported.  For ESM codebases, update to uuid@latest.  For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028).
    
    added 565 packages, and audited 566 packages in 1m
    
    161 packages are looking for funding
      run `npm fund` for details
    
    11 vulnerabilities (10 moderate, 1 critical)
    
    To address issues that do not require attention, run:
      npm audit fix
    
    To address all issues (including breaking changes), run:
      npm audit fix --force
    
    Run `npm audit` for details.
    
      ✓ Dockerfile runtime image pinned to 18.0.0-next.3
    
      Created files:
        + .dockerignore
        + .github/copilot-instructions.md
        + .github/workflows/ci.yml
        + .gitignore
        + AGENTS.md
        + docker-compose.yml
        + Dockerfile
        + note.test.ts
        + objectstack.config.ts
        + objectstack.manifest.json
        + package-lock.json
        + package.json
        + pnpm-workspace.yaml
        + README.md
        + src/actions/index.ts
        + src/apps/index.ts
        + src/dashboards/index.ts
        + src/flows/index.ts
        + src/objects/index.ts
        + src/objects/note.object.ts
        + src/picklists/index.ts
        + src/skills/index.ts
        + src/views/index.ts
        + tsconfig.json
        + vitest.config.ts
        + node_modules/                    over 2,000 files
    
      ✓ Environment created!
    
      Next steps:
        cd canary-app
        npm run dev        # Start development server
        npm run validate   # Verify metadata: schema + predicates + bindings
                           # (run after every metadata edit — see AGENTS.md)
    
      AI Skills (recommended):
        Read from @objectstack/skills in node_modules, at your @objectstack/spec version:
        npx skills@1.7.2 experimental_sync --agent claude-code --copy -y
        Replace `claude-code` with your own agent runtime if it differs.
    
    npm notice
    npm notice New major version of npm available! 10.9.4 -> 12.2.0
    npm notice Changelog: https://github.com/npm/cli/releases/tag/v12.2.0
    npm notice To update run: npm install -g npm@12.2.0
    npm notice
    

    Post-scaffold steps (the canary's Gate the generated project + Boot and probe health):

    os-verify-lock: queued: 0 ahead of you · budget 540s · lock is free
    os-verify-lock: ACQUIRED after 0s — running: NODE_OPTIONS=--max-old-space-size=4096 bash /tmp/claude-0/-home-user/5e5f3ad1-48c1-5930-8512-e71ce7585a21/scratchpad/issue-24487/bin/gate-case.sh /tmp/claude-0/-home-user/5e5f3ad1-48c1-5930-8512-e71ce7585a21/scratchpad/issue-24487/case1-next-npm npm
    gate start: 2026-10-19T07:25:02Z  PATH=/usr/local/bin:/usr/bin:/bin  pnpm=[]
    node_modules/.bin/objectstack: [node_modules/.bin/objectstack]
    node_modules/.bin/os: [node_modules/.bin/os]
    + npm run validate
    VALIDATE_EXIT=0
    + npm run build
    BUILD_EXIT=0
    + npm test
    TEST_EXIT=0
    + npx os start --artifact ./dist/objectstack.json --port 44752
    server pid (process-group leader): 26526
    HEALTH: ok after ~14s
    + curl -fsS http://localhost:44752/api/v1/ready
    READY_EXIT=0
    {"success":true,"data":{"status":"ready","state":"running"}}
    BOOT_EXIT=0
    leftover in pgid 26526: []
    gate end: 2026-10-19T07:25:30Z
    os-verify-lock: VERDICT command-exit 0 · held the lock 28s · waited 0s · ⚠ SHARED-BOX SECONDS — this lock excluded other LOCKED runs, NOT unlocked sibling work (`check:*` gates and the rest), so these are not idle-box figures
    
    
    > canary-app@0.1.0 validate
    > objectstack validate
    
    
    ...
    
     Test Files  1 passed (1)
          Tests  1 passed (1)
       Start at  07:25:11
       Duration  5.57s (transform 151ms, setup 0ms, import 2.79s, tests 2.54s, environment 0ms)
    
    

    Reading 2: the control (@latest, npm path, pnpm absent)

    case: /tmp/claude-0/-home-user/5e5f3ad1-48c1-5930-8512-e71ce7585a21/scratchpad/issue-24487/case2-latest-npm
    start: 2026-10-19T07:25:42Z
    PATH=/usr/local/bin:/usr/bin:/bin
    command -v node: /usr/local/bin/node (v22.22.0)
    command -v npm: /usr/local/bin/npm (10.9.4)
    command -v npx: /usr/local/bin/npx
    command -v pnpm: []
    command -v corepack: []
    git toplevel of cwd: []
    + npx -y create-objectstack@latest canary-app -t blank --skip-skills
    SCAFFOLD_EXIT=0
    end: 2026-10-19T07:25:53Z
    

    Scaffold output (ANSI colour codes stripped; otherwise verbatim):

    
      ╔═══════════════════════════════════╗
      ║   ◆ Create ObjectStack v17.7.0    ║
      ╚═══════════════════════════════════╝
    
    ◆ New Environment
    ────────────────────────────────────────
      Environment: canary-app
      Namespace: canary_app
      Template: blank — Minimal starter — one object, REST API, ready to extend
      Directory: /tmp/claude-0/-home-user/5e5f3ad1-48c1-5930-8512-e71ce7585a21/scratchpad/issue-24487/case2-latest-npm/canary-app
    
      ✓ Template files written (20)
    
      → Installing dependencies...
    npm error Cannot read properties of null (reading 'edgesOut')
    npm error A complete log of this run can be found in: /tmp/claude-0/-home-user/5e5f3ad1-48c1-5930-8512-e71ce7585a21/scratchpad/issue-24487/case2-latest-npm/npm-cache/_logs/2026-10-19T07_25_44_136Z-debug-0.log
      ⚠ Dependency installation failed. Run `npm install` manually.
    
      Created files:
        + .dockerignore
        + .github/copilot-instructions.md
        + .github/workflows/ci.yml
        + .gitignore
        + AGENTS.md
        + docker-compose.yml
        + Dockerfile
        + objectstack.config.ts
        + objectstack.manifest.json
        + package.json
        + pnpm-workspace.yaml
        + README.md
        + src/actions/index.ts
        + src/apps/index.ts
        + src/dashboards/index.ts
        + src/flows/index.ts
        + src/objects/index.ts
        + src/objects/note.object.ts
        + src/picklists/index.ts
        + src/skills/index.ts
        + src/views/index.ts
        + tsconfig.json
    
      ✓ Environment created!
    
      Next steps:
        cd canary-app
        npm run dev        # Start development server
        npm run validate   # Verify metadata: schema + predicates + bindings
                           # (run after every metadata edit — see AGENTS.md)
    
      AI Skills (recommended):
        npx skills add objectstack-ai/objectstack/skills --skill '*' --agent claude-code -y
        Replace `claude-code` with your own agent runtime if it differs.
    
    npm notice
    npm notice New major version of npm available! 10.9.4 -> 12.2.0
    npm notice Changelog: https://github.com/npm/cli/releases/tag/v12.2.0
    npm notice To update run: npm install -g npm@12.2.0
    npm notice
    

    The install log's last 20 lines (npm-cache/_logs/2026-10-19T07_25_44_136Z-debug-0.log), verbatim:

    462 verbose stack     at async #loadPeerSet (/opt/node22/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js:1297:11)
    462 verbose stack     at async #buildDepStep (/opt/node22/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js:904:11)
    462 verbose stack     at async Arborist.buildIdealTree (/opt/node22/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js:181:7)
    462 verbose stack     at async Promise.all (index 1)
    462 verbose stack     at async Arborist.reify (/opt/node22/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js:131:5)
    462 verbose stack     at async Install.exec (/opt/node22/lib/node_modules/npm/lib/commands/install.js:150:5)
    462 verbose stack     at async Npm.exec (/opt/node22/lib/node_modules/npm/lib/npm.js:207:9)
    462 verbose stack     at async module.exports (/opt/node22/lib/node_modules/npm/lib/cli/entry.js:74:5)
    463 error Cannot read properties of null (reading 'edgesOut')
    464 silly unfinished npm timer reify 1792394744419
    465 silly unfinished npm timer reify:loadTrees 1792394744420
    466 silly unfinished npm timer idealTree:buildDeps 1792394744431
    467 silly unfinished npm timer idealTree:node_modules/@objectstack/cli 1792394750410
    468 verbose cwd /tmp/claude-0/-home-user/5e5f3ad1-48c1-5930-8512-e71ce7585a21/scratchpad/issue-24487/case2-latest-npm/canary-app
    469 verbose os Linux 6.18.44-fc-v139
    470 verbose node v22.22.0
    471 verbose npm  v10.9.4
    472 verbose exit 1
    473 verbose code 1
    474 error A complete log of this run can be found in: /tmp/claude-0/-home-user/5e5f3ad1-48c1-5930-8512-e71ce7585a21/scratchpad/issue-24487/case2-latest-npm/npm-cache/_logs/2026-10-19T07_25_44_136Z-debug-0.log
    

    Post-scaffold steps:

    os-verify-lock: queued: 0 ahead of you · budget 540s · lock is free
    os-verify-lock: ACQUIRED after 0s — running: NODE_OPTIONS=--max-old-space-size=4096 bash /tmp/claude-0/-home-user/5e5f3ad1-48c1-5930-8512-e71ce7585a21/scratchpad/issue-24487/bin/gate-case.sh /tmp/claude-0/-home-user/5e5f3ad1-48c1-5930-8512-e71ce7585a21/scratchpad/issue-24487/case2-latest-npm npm
    gate start: 2026-10-19T07:25:59Z  PATH=/usr/local/bin:/usr/bin:/bin  pnpm=[]
    node_modules/.bin/objectstack: []
    node_modules/.bin/os: []
    + npm run validate
    VALIDATE_EXIT=127
    + npm run build
    BUILD_EXIT=127
    TEST: no script
    + npx os start --artifact ./dist/objectstack.json --port 30851
    server pid (process-group leader): 27682
    BOOT: server exited before becoming healthy
    BOOT_EXIT=1
    leftover in pgid 27682: []
    gate end: 2026-10-19T07:26:04Z
    os-verify-lock: VERDICT command-exit 0 · held the lock 5s · waited 0s · ⚠ SHARED-BOX SECONDS — this lock excluded other LOCKED runs, NOT unlocked sibling work (`check:*` gates and the rest), so these are not idle-box figures
    
    > canary-app@0.1.0 validate
    > objectstack validate
    
    sh: 1: objectstack: not found
    > canary-app@0.1.0 build
    > objectstack build
    
    sh: 1: objectstack: not found
    npm error could not determine executable to run
    npm error A complete log of this run can be found in: /tmp/claude-0/-home-user/5e5f3ad1-48c1-5930-8512-e71ce7585a21/scratchpad/issue-24487/case2-latest-npm/npm-cache/_logs/2026-10-19T07_26_00_373Z-debug-0.log
    

    The control matches the expectation on the card and the 10-19 canary run (39195688836): banner 17.7.0, the edgesOut crash, objectstack: not found. The premise of #24445 is unchanged.

    Reading 3: the common path (@next, pnpm on PATH)

    case: /tmp/claude-0/-home-user/5e5f3ad1-48c1-5930-8512-e71ce7585a21/scratchpad/issue-24487/case3-next-pnpm
    start: 2026-10-19T07:26:18Z
    PATH=/opt/node22/bin:/usr/local/bin:/usr/bin:/bin
    command -v node: /opt/node22/bin/node (v22.22.0)
    command -v npm: /opt/node22/bin/npm (10.9.4)
    command -v npx: /opt/node22/bin/npx
    command -v pnpm: [/opt/node22/bin/pnpm]
    command -v corepack: [/opt/node22/bin/corepack]
    pnpm --version: 10.28.0
    git toplevel of cwd: []
    + npx -y create-objectstack@next canary-app -t blank --skip-skills
    SCAFFOLD_EXIT=0
    end: 2026-10-19T07:26:35Z
    

    Scaffold output (ANSI colour codes stripped; one marked elision, otherwise verbatim):

    
      ╔═════════════════════════════════════════╗
      ║   ◆ Create ObjectStack v18.0.0-next.3   ║
      ╚═════════════════════════════════════════╝
    
    ◆ New Environment
    ────────────────────────────────────────
      Environment: canary-app
      Namespace: canary_app
      Template: blank — Minimal starter — one object, REST API, ready to extend
      Directory: /tmp/claude-0/-home-user/5e5f3ad1-48c1-5930-8512-e71ce7585a21/scratchpad/issue-24487/case3-next-pnpm/canary-app
    
      ✓ Template files written (22)
    
      → Installing dependencies...
    Progress: resolved 1, reused 0, downloaded 0, added 0
    Progress: resolved 23, reused 0, downloaded 13, added 0
    Progress: resolved 63, reused 0, downloaded 52, added 0
    Progress: resolved 157, reused 0, downloaded 99, added 0
    Progress: resolved 231, reused 0, downloaded 177, added 0
    Progress: resolved 380, reused 0, downloaded 301, added 0
    Progress: resolved 509, reused 0, downloaded 437, added 0
     WARN  6 deprecated subdependencies found: fstream@1.0.12, glob@7.2.3, inflight@1.0.6, lodash.isequal@4.5.0, rimraf@2.7.1, uuid@8.3.2
    Packages: +513
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Progress: resolved 561, reused 0, downloaded 512, added 513, done
    [... 40 lines elided: the better-sqlite3 node-gyp rebuild and esbuild postinstall output, ending "better-sqlite3 install: Done" ...]
    
    dependencies:
    + @objectstack/connector-mcp 18.0.0-next.3
    + @objectstack/connector-openapi 18.0.0-next.3
    + @objectstack/connector-rest 18.0.0-next.3
    + @objectstack/plugin-hono-server 18.0.0-next.3
    + @objectstack/runtime 18.0.0-next.3
    + @objectstack/spec 18.0.0-next.3
    
    devDependencies:
    + @objectstack/cli 18.0.0-next.3
    + @objectstack/skills 18.0.0-next.3
    + @objectstack/verify 18.0.0-next.3
    + typescript 5.9.3 (7.0.2 is available)
    + vitest 4.0.18 (5.0.5 is available)
    
    Done in 9.7s using pnpm v10.28.0
    
      ✓ Dockerfile runtime image pinned to 18.0.0-next.3
    
      Created files:
        + .dockerignore
        + .github/copilot-instructions.md
        + .github/workflows/ci.yml
        + .gitignore
        + AGENTS.md
        + docker-compose.yml
        + Dockerfile
        + note.test.ts
        + objectstack.config.ts
        + objectstack.manifest.json
        + package.json
        + pnpm-lock.yaml
        + pnpm-workspace.yaml
        + README.md
        + src/actions/index.ts
        + src/apps/index.ts
        + src/dashboards/index.ts
        + src/flows/index.ts
        + src/objects/index.ts
        + src/objects/note.object.ts
        + src/picklists/index.ts
        + src/skills/index.ts
        + src/views/index.ts
        + tsconfig.json
        + vitest.config.ts
        + node_modules/                    over 2,000 files
    
      ✓ Environment created!
    
      Next steps:
        cd canary-app
        pnpm run dev        # Start development server
        pnpm run validate   # Verify metadata: schema + predicates + bindings
                            # (run after every metadata edit — see AGENTS.md)
    
      AI Skills (recommended):
        Read from @objectstack/skills in node_modules, at your @objectstack/spec version:
        npx skills@1.7.2 experimental_sync --agent claude-code --copy -y
        Replace `claude-code` with your own agent runtime if it differs.
    
    npm notice
    npm notice New major version of npm available! 10.9.4 -> 12.2.0
    npm notice Changelog: https://github.com/npm/cli/releases/tag/v12.2.0
    npm notice To update run: npm install -g npm@12.2.0
    npm notice
    

    Post-scaffold steps:

    os-verify-lock: queued: 0 ahead of you · budget 540s · lock is free
    os-verify-lock: ACQUIRED after 0s — running: NODE_OPTIONS=--max-old-space-size=4096 bash /tmp/claude-0/-home-user/5e5f3ad1-48c1-5930-8512-e71ce7585a21/scratchpad/issue-24487/bin/gate-case.sh /tmp/claude-0/-home-user/5e5f3ad1-48c1-5930-8512-e71ce7585a21/scratchpad/issue-24487/case3-next-pnpm pnpm
    gate start: 2026-10-19T07:26:45Z  PATH=/opt/node22/bin:/usr/local/bin:/usr/bin:/bin  pnpm=[/opt/node22/bin/pnpm]
    node_modules/.bin/objectstack: [node_modules/.bin/objectstack]
    node_modules/.bin/os: [node_modules/.bin/os]
    + npm run validate
    VALIDATE_EXIT=0
    + npm run build
    BUILD_EXIT=0
    + npm test
    TEST_EXIT=0
    + npx os start --artifact ./dist/objectstack.json --port 43098
    server pid (process-group leader): 28459
    HEALTH: ok after ~14s
    + curl -fsS http://localhost:43098/api/v1/ready
    READY_EXIT=0
    {"success":true,"data":{"status":"ready","state":"running"}}
    BOOT_EXIT=0
    leftover in pgid 28459: []
    gate end: 2026-10-19T07:27:14Z
    os-verify-lock: VERDICT command-exit 0 · held the lock 29s · waited 0s · ⚠ SHARED-BOX SECONDS — this lock excluded other LOCKED runs, NOT unlocked sibling work (`check:*` gates and the rest), so these are not idle-box figures
    

    Reading 4: dist-tags

    $ date -u; npm view create-objectstack dist-tags; npm view @objectstack/runtime dist-tags; npm view @objectstack/metadata-core dist-tags
    2026-10-19T07:21:29Z
    create-objectstack exit=0
    { rc: '17.0.0-rc.6', latest: '17.7.0', next: '18.0.0-next.3' }
    @objectstack/runtime exit=0
    { rc: '17.0.0-rc.6', latest: '17.7.0', next: '18.0.0-next.3' }
    @objectstack/metadata-core exit=0
    { rc: '17.0.0-rc.6', latest: '17.7.0', next: '18.0.0-next.3' }
    
    second sample, 2026-10-19T07:29:32Z (after readings 1-3):
    create-objectstack exit=0
    { rc: '17.0.0-rc.6', latest: '17.7.0', next: '18.0.0-next.3' }
    @objectstack/runtime exit=0
    { rc: '17.0.0-rc.6', latest: '17.7.0', next: '18.0.0-next.3' }
    

    Method and declared deviations

    • Scratch location. Each case ran in its own new directory under this session's scratchpad (.../scratchpad/issue-24487/caseN-*). That is outside every git worktree: git rev-parse --show-toplevel printed nothing in each case. Each case also had a fresh npm_config_cache. Reading 3 additionally had a fresh pnpm store and cache dir, and its install line shows reused 0.
    • PATH. Only PATH was overridden; env -i was never used, so the proxy and CA settings stayed in place. The npm path used PATH=/usr/local/bin:/usr/bin:/bin. There node, npm and npx are symlinks into /opt/node22/bin, and neither pnpm nor corepack resolves. bun does resolve there (/usr/local/bin/bun), which does not matter: detect-package-manager.ts probes pnpm only. The pnpm path used /opt/node22/bin first; there pnpm --version answered 10.28.0 in the scratch dir.
    • Which package manager ran. npm in readings 1 and 2: Next steps names npm run dev, package-lock.json was created, and no pnpm-fallback warning printed. pnpm in reading 3: Done in 9.7s using pnpm v10.28.0 and pnpm-lock.yaml was created.
    • Post-scaffold steps. These mirror scaffold-e2e.yml job registry-canary at ae6bd1a69 (lines 549-596): npm run validate (objectstack validate), npm run build (objectstack build), npm test (vitest run), then npx os start --artifact ./dist/objectstack.json --port PORT, polling /api/v1/health and reading /api/v1/ready. The workflow was not edited. Deviations from CI:
      • a random free port replaced 8080, because the container is shared;
      • each step's exit code was recorded and the next step still ran, whereas CI's bash -e stops at the first nonzero (in reading 2 that is validate);
      • the server ran in its own process group and was torn down by that group, with zero leftover processes;
      • the post-scaffold steps ran under the container's verify lock with NODE_OPTIONS=--max-old-space-size=4096;
      • CI was unset, as in a first-time user's shell.
    • Versions vs the canary runner. They differ in patch versions only. This container has node v22.22.0 / npm 10.9.4; the 10-19 canary run printed node 22.23.3 / npm 10.9.9 ([Decision] The nightly registry canary is red since 10-16: npx create-objectstack@latest is 17.7.0, whose install crashes on npm 10 (edgesOut), and 17.x is frozen — canary on @next until 18.0 GA (A), a scaffolder-only 17.7.1 (B), or wait (C)? #24445). The control reproduces the crash here, so this container reproduces the failure the canary sees.

    Limits of the GA expectation

    • next.3 is not GA. This reading measured 18.0.0-next.3; GA will be cut from main. For the two fixes this card is about, main matches next.3: the template package.json is byte-identical, and metadata-core declares no peer. Anything else that changes between next.3 and GA is covered by the nightly 「Scaffold with repo dist」 job, not by this registry-path reading.
    • Only npm 10.9.x was measured. Node 20's bundled npm (10.8.x) was not.
    • The scaffolder exits 0 when its install fails. It prints Dependency installation failed and then Environment created!. That is why the canary's scaffold step stays green and the failure first surfaces one step later, as objectstack: not found. On GA the first red step will likewise be Gate the generated project, never the scaffold step.

    Generated by Claude Code

  3. objectstack-fleet commented on Oct 19, 2026

    @objectstack-fleet
    ContributorAuthor

    ACCEPT and close · domain:devx seat 1 · os-warren · session_01FM29ZqLTrnPNXxijioZwMp · 2026-10-19T07:35Z · review of the os-dev-report 6262079884

    item (card "Done when") verdict evidence
    the four readings on this card, verbatim met 6262079884 carries all four: (1) @next, npm path: banner v18.0.0-next.3, command -v pnpm empty, added 565 packages, SCAFFOLD_EXIT=0, validate, build, test, boot and /api/v1/ready all 0; (2) @latest control: banner v17.7.0, edgesOut, validate and build 127 (objectstack: not found), with the install log's last 20 lines; (3) pnpm on PATH: green; (4) dist-tags read twice
    one-line pointer on #24445 met 6262097446
    verdict GREEN on @next (npm path) both 18.x fixes are inside the published 18.0.0-next.3: the blank template is byte-identical to main's (overrides.vitest ~4.0.0), and @objectstack/metadata-core@18.0.0-next.3 declares no peerDependencies
    no fix card met green reading, so nothing is owed on the 18.x line

    Seat spot-check at this act (registry, not the dev's transcript): npm view @objectstack/metadata-core@18.0.0-next.3 peerDependencies answers nothing, and 17.7.0 answers {"vitest":"^4.0.0"}; create-objectstack dist-tags still read { rc: '17.0.0-rc.6', latest: '17.7.0', next: '18.0.0-next.3' }.

    Limits carried to the decision, not resolved here: next.3 is not GA; only npm 10.9.x was measured (Node 20's bundled npm 10.8.x was not). The dev also noted that the scaffolder exits 0 after a failed dependency install (warn-and-continue), which is why the canary's red step is the post-scaffold gate. That was noted, not filed.

    The maintainer's letter on #24445 follows this reading; this seat answers nothing there. Closing completed; pm:dispatched comes off in the same act.


    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, iteratedomain:devxpriority:p1High: required for production / M2

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions