Skip to content

docs: the @objectstack/skills install line npm install --save-dev … exits 1 in a pnpm-installed project (edgesOut), and five sites still print it as the only command #24926

Closed

Description

@objectstack-fleet

Filing gate ①: a documented command that fails, measured, with named locations. finding class a. Reader who acts: the domain:devx seat for the content/docs/** rows. The two skills/** rows are governed (Tier H) and belong to domain:skills, so triage splits them or routes them. Filed by domain:devx seat 1 (os-warren, session_01FM29ZqLTrnPNXxijioZwMp, seat post #6023), from #24905's upgrade walk (PR #24922, out-of-scope finding 3). ⛔ Not a claim. The lane is self-labelled under rule B; grade and area:* are triage's.

Measured (2026-10-20)

The walk scaffolded an app with create-objectstack@17.7.0 and installed it with pnpm 10.28 on Node 22.22. In that app:

  • npm install --save-dev "@objectstack/skills@$(node -p "require('@objectstack/spec/package.json').version")" exited 1 with npm error Cannot read properties of null (reading 'edgesOut');
  • pnpm add -D of the same spec succeeded and wrote "@objectstack/skills": "18.0.0".

create-objectstack installs with pnpm when it is available, so a scaffolded app is commonly a pnpm project.

The sites (main)

path row
content/docs/upgrading.mdx (≈:111, the skills step) devx
content/docs/ai/skills.mdx (≈:32) devx
content/docs/ai/skills-reference.mdx (≈:21) devx
skills/README.md (≈:11) skills (Tier H)
skills/objectstack-upgrade/SKILL.md (≈:129) skills (Tier H)
content/docs/releases/v18/index.mdx fixed in PR #24922

Wanted

Dedupe

MCP search_issues, objectstack, open and closed, for "npm install --save-dev @objectstack/skills fails pnpm project edgesOut skills install command": 0 hits. #23788 (closed) is npm 10's edgesOut crash on lockfile-less installs in the release lane, which is a different site.

Dedupe words: skills npm install pnpm; @objectstack/skills save-dev; experimental_sync pnpm.


Generated by Claude Code

Activity

  1. added
    area:devpathThe road — create, dev, verify, publish/install, connect an agent, iterate
    documentationImprovements or additions to documentation
    priority:p1High: required for production / M2
    and removed on Oct 20, 2026
  2. objectstack-fleet commented on Oct 20, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 28 · a p1 domain:devx docs card this seat filed from #24905's upgrade walk; serial dispatch under the maintainer's 「串行派发」
    Session: session_01FM29ZqLTrnPNXxijioZwMp
    Account: os-warren (the seat's linked user as GET /user answers it; the card's assignee)
    Branch: claude/issue-24926-skills-install-pm
    Worktree: objectstack-issue-24926
    Domain: domain:devx
    Seat: domain:devx#1
    File surface: the card's three content/docs/** rows, each giving the @objectstack/skills install line for the project's own package manager:

    • content/docs/upgrading.mdx (the skills step, ≈:111);
    • content/docs/ai/skills.mdx (≈:32);
    • content/docs/ai/skills-reference.mdx (≈:21).

    ⛔ Not the two skills/** rows (skills/README.md, skills/objectstack-upgrade/SKILL.md). They are governed and domain:skills's, and this seat moves them to their own card when this one lands. ⛔ Not content/docs/releases/v18/**, which is fixed by PR #24922. ⛔ No new gate. Stop on breach and explain.
    Container & model: S (three install lines, each measured in a pnpm- and an npm-installed scaffold), mode:subagent, model: TIER_DEFAULT
    Clause-②: no
    Responsibility: the documented skills install line exits 1 in a pnpm-installed create-objectstack project (#24926) | PR #24922's releases/v18 spelling | every app moving to 18 that follows the skills step, first HotCRM
    Thread-read: none
    Serial constraints cleared: the open PRs touching these files are Version Packages PR #24876, whose upgrading.mdx change is the image tag at ≈:55, outside the skills step. No live Claim: names these files: #24522's claim excludes content/docs/** (read at 2026-10-20T19:08Z). No dev of this session is in flight: round 16 of #24579 has reported, and its PR #24963 is queued.


    Generated by Claude Code

  3. objectstack-fleet commented on Oct 20, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report
    {
    "issue": 24926,
    "status": "done",
    "branch": "claude/issue-24926-skills-install-pm",
    "pr": "#24973",
    "session": "session_01FM29ZqLTrnPNXxijioZwMp — the parent's id (this run is a subagent); it is also the session the relay stamped on the pr_create stroke",
    "premise_still_valid": true,
    "summary": "Draft PR #24973 changes the three content/docs sites on the claim's file surface: upgrading.mdx (only the skills step, step 4; the image-tag line is untouched), ai/skills.mdx and ai/skills-reference.mdx. Each now uses PR #24922's shape. The block carries pnpm add -D \"@objectstack/skills@$(node -p …)\" followed by the comment # npm: npm install --save-dev \"@objectstack/skills@…\" · yarn: yarn add -D \"@objectstack/skills@…\", and the block is followed by the rule sentence 'Add the package with the manager that installed the project', which cites the measured npm edgesOut exit 1. skills-reference.mdx also runs npx skills list before npx skills remove --all. Its 17.x refusal sentence now names pnpm's ERR_PNPM_NO_MATCHING_VERSION beside npm's ETARGET; left as it was, it would have become false under the pnpm line (see deviations). upgrading.mdx already ran npx skills list first, and skills.mdx prints no --all. The two governed skills/** rows are named in the PR body as not in this PR. CI was in_progress when this report was written. Base 2941a19, head bd08586.",
    "tests": "No package code changed, so there is no package test or typecheck to run. The measured lines follow (Node 22.22.0, each scaffold in its own new empty scratch directory; package.json was diffed before and after each command). M1: pnpm 10.28.0 in a pnpm-installed create-objectstack@18.0.0 scaffold, pnpm add -D \"@objectstack/skills@$(node -p \"require('@objectstack/spec/package.json').version\")\" exit 0, wrote \"@objectstack/skills\": \"18.0.0\" (the template had ^18.0.0). M2: in a second pnpm-installed 18.0.0 scaffold, the old line npm install --save-dev \"@objectstack/skills@$(…)\" (npm 10.9.4) exit 1, npm error Cannot read properties of null (reading 'edgesOut'), package.json unchanged. M3: in an npm-installed 18.0.0 scaffold (pnpm taken off PATH, so the scaffolder chose npm and wrote package-lock.json), npm install --save-dev \"@objectstack/skills@$(…)\" exit 0. It SUCCEEDS and writes \"@objectstack/skills\": \"^18.0.0\" (npm's default caret prefix). M4: yarn 1.22.22 is installed here. In a scaffold made with --skip-install and then yarn install (exit 0), yarn add -D \"@objectstack/skills@$(…)\" exit 0, wrote \"18.0.0\". M5: in a pnpm-installed create-objectstack@17.7.0 --skip-skills scaffold (spec 17.7.0), the pnpm line exits 1 with ERR_PNPM_NO_MATCHING_VERSION No matching version found for @objectstack/skills@17.7.0, package.json unchanged. M6: npm's 17.x refusal was measured in the M3 scaffold with the literal version: npm install --save-dev \"@objectstack/skills@17.7.0\" exit 1, npm error code ETARGET, No matching version found. A literal was needed because create-objectstack@17.7.0's own npm install exits 1 with edgesOut, twice, so no npm-installed 17.7.0 scaffold could be built. Yarn's 17.x refusal: exit 1, Couldn't find any versions; the page does not name it. No ablation was run: docs only, no tested behaviour changed. All readings were taken at head bd08586.",
    "gates": "Local, at head bd08586. The list was derived with node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack from the merge base: 44 commands, 3 paths. All 44 exit 0, each exit code captured before any pipe. Five needed a build first: they returned exit 3 (PREREQUISITE NOT MET, nothing measured) and were re-run after pnpm --workspace-concurrency=2 --filter '@objectstack/lint...' build and --filter '@objectstack/client-react...' build, both under os-verify-lock (VERDICT command-exit 0, 117 s and 307 s held; the worktree stayed clean). The five are lint check:doc-formula-expressions, lint check:doc-security-posture, spec check:docs, spec check:skill-examples (262 examples type-check) and check:docs-transcript-drift. --ran reconciliation with the exit codes recorded: '44 derived, 44 run, 0 NOT-MEASURED, 0 UNRUN … a DERIVED zero'. Selected verdict lines: doc-anchors, 563 fragment links all reach a real heading; docs-single-h1, 418 pages clean; docs-image-tag OK; skill-docs in sync; nul-bytes OK. git merge-tree --write-tree origin/main HEAD exit 0 against origin/main 693352e (3 commits past base, none under content/docs). Branch not merged with main. CI check-runs on bd08586, read once at 2026-10-20T19:41Z and not polled: success for Check Changeset, Check Documentation Links, filter, and the claim/closing guards ('The card this PR closes must claim this branch', 'No other open PR may claim the same issue'); skipped for Build Core; in_progress for the Lint lanes, the Type Check lanes, Test Core (1/6 to 6/6), Governed Surface Queue Guard, Build Docs, Dogfood Regression Gate and Spec property liveness.",
    "mcp_calls": "0 — no MCP GitHub tool was called. Reads went through gh api (REST GET): the card, its comments, the PR and its check-runs.",
    "api_writes": "2 relay strokes. (1) pr_create via scripts/pm/fleet-write/dispatch.mjs: POST /repos/objectstack-ai/objectstack/dispatches (HTTP 204, run 39485467419 success), which executed as objectstack-fleet[bot] POST /repos/objectstack-ai/objectstack/pulls (draft) → #24973, POST /repos//issues/24973/assignees [os-warren] and POST /repos//issues/24973/labels [skip-changeset]. The relay's read-back confirmed the body (8385 bytes sent and stored, identical) and the assignee os-warren. Its read-back line did not print the label set; an independent REST GET of the PR lists labels ['skip-changeset'], assignees ['os-warren'] and draft true, and its body is byte-identical to the file sent. (2) This os-dev-report comment via scripts/pm/post-stamped.mjs: POST /repos//issues/24926/comments. Plus two git pushes, which are not REST: the empty-branch probe and the commit.",
    "open_questions": [],
    "deviations": [
    "The ruling says no other prose change, and the role file says a sentence this change makes false must be fixed; the role file wins. skills-reference.mdx's 17.x sentence named npm's ETARGET for step 1. Step 1 is now the pnpm line, which prints ERR_PNPM_NO_MATCHING_VERSION (M5), so the sentence now names both codes (npm measured in M6). This is the only sentence edited beyond the install block, the rule sentence and npx skills list.",
    "The npm-installed 17.7.0 scaffold could not be built (its own npm install exits 1 with edgesOut), so npm's 17.x refusal was measured with the version literal in the 18.0.0 npm scaffold (M6).",
    "origin/main moved 3 commits past the base (none under content/docs, merge-tree clean). The branch was not merged with main before the PR was opened.",
    "Assumption: the label read-back counts as passed. Its evidence is the PR's label set as read by REST GET; the relay's read-back line printed only the body and the assignees."
    ],
    "out_of_scope_findings": [
    "class: a · reach: public door, the published @objectstack/skills README. packages/skills/README.md:28 is in the package's files[], so this text is on the npm package page and in the tarball. It prints npm install --save-dev \"@objectstack/skills@$(node -p …)\" as its only step 1, which is the exact command that exits 1 with npm error Cannot read properties of null (reading 'edgesOut') in a pnpm-installed create-objectstack@18.0.0 scaffold (M2). This is a sixth site of #24926's family that the card does not list. It is outside this claim's file surface, so it was not touched. It belongs in the family's follow-up card with skills/README.md and skills/objectstack-upgrade/SKILL.md, not in a card of its own. The change publishes, so it owes a patch changeset for @objectstack/skills. Dedupe words: @objectstack/skills README install npm pnpm; packages/skills README save-dev; skills package page install line",
    "carrier: none · noted, not filed. skills-reference.mdx still says 'A bare npm install --save-dev @objectstack/skills installs whichever version the registry tags latest'. That is true as stated, and it was left alone under the no-other-prose ruling.",
    "carrier: none · noted, not filed. With pnpm off PATH, create-objectstack@17.7.0 cannot install with npm 10.9.4: its own lockfile-less npm install exits 1 with edgesOut, twice. 17.7.0 is superseded, and the 18.0.0 npm path succeeds (M3).",
    "carrier: none · noted, not filed. pnpm and yarn write the exact \"18.0.0\" and npm writes \"^18.0.0\". None of the three pages says which; the claim in releases/v18/18-0.mdx that 'the command writes the exact version' refers to its pnpm line and matches M1."
    ]
    }

  4. objectstack-fleet commented on Oct 20, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed · domain:devx seat 1 · session_01FM29ZqLTrnPNXxijioZwMp · 2026-10-20T20:49Z

    reading result
    merge queue none left: the entry has drained
    PR object PR #24973 merged at 2026-10-20T20:47Z as 3a7a60af8f (ACCEPT 6300131789; not governed; Fixes #24926)
    origin/main, by content content/docs/upgrading.mdx, content/docs/ai/skills.mdx and content/docs/ai/skills-reference.mdx are byte-identical to the head bd085862fc

    State change: PR #24973 closed this card through Fixes #24926 (completed). pm:dispatched comes off in this act.

    The three content/docs/** sites now give the install line for the project's package manager: pnpm in the block, with npm and yarn beside it, each measured. The rows this PR left are #24974 (domain:skills): the two governed skills/** pages, and the published packages/skills/README.md, which owes a patch changeset.


    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, iteratedocumentationImprovements or additions to documentationdomain: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