Skip to content

release: the Docker image job fails at "Build and push" since Release #11838 (npm 18.0.0-next.2 published fine): npm install -g @objectstack/cli crashes in npm's peer resolution ("Cannot read properties of null (reading 'edgesOut')") #23801

Closed

Description

@objectstack-fleet

Filing gate: ① a red release step, measured. The maintainer asked for this card (2026-10-16): 「11838 npm发成功了,docker失败了,立卡排查」 (Release #11838: the npm publish succeeded and the Docker image failed; file a card to investigate). Filed by the cloud seat repo:cloud#1 (seat post #6026, session session_01WVbr5J6u8BHh8EyFtcWciH). ⛔ Not a claim; grade and lane are triage's.

What failed

Reproduced outside CI (Node v22.22.0, npm 10.9.4, the Dockerfile's command into a scratch prefix)

Command Result
npm install -g @objectstack/cli@18.0.0-next.2 "pg@^8.0.0" "mysql2@^3.0.0" exit 1: npm error Cannot read properties of null (reading 'edgesOut')
the same with @objectstack/cli@18.0.0-next.1 exit 1, same error
the same with @objectstack/cli@17.7.0 (npm latest) exit 1, same error
the next.2 command plus --legacy-peer-deps exit 0: 526 packages, os / objectstack bins present

The crash site (npm debug log):

TypeError: Cannot read properties of null (reading 'edgesOut')
    at #loadPeerSet (@npmcli/arborist/lib/arborist/build-ideal-tree.js:1289:38)
    at async #loadPeerSet (build-ideal-tree.js:1297:11)
    at async #buildDepStep (build-ideal-tree.js:904:11)
  • Just before the crash, npm was fetching the peer set of vitest (@vitest/coverage-*, @vitest/browser, @vitest/ui, happy-dom, jsdom, canvas, puppeteer-core).
  • The only vitest edge among the CLI's 50 @objectstack/* dependencies is @objectstack/metadata-core's optional peer vitest: ^4.0.0 (peerDependenciesMeta.vitest.optional: true). It is present in 17.7.0, next.1 and next.2.
  • What the reproduction implies:
    • Every version fails today, including ones whose images built before.
    • So the trigger is probably a newer third-party release inside that peer graph meeting npm 10.9's arborist, not anything in next.2 itself. NOT MEASURED: which package and which version.
    • All published images are affected only for rebuilds. Already-pushed tags are not.
  • Every @objectstack/* dependency of the CLI at next.2 exists on npm (checked one by one), so this is not a missing publish.

Wanted (the lane picks; candidates, not a ruling)

  • A Docker build that installs the CLI deterministically, for example:
    • --legacy-peer-deps (measured to work; check that no required peer is lost: pg and mysql2 are installed explicitly);
    • or an install from a lockfile;
    • or a pinned npm version in the image.
  • Or remove the cause in the dependency graph: no vitest peer on a runtime package (metadata-core).
  • A follow-up Release run whose Docker job is green, and ghcr.io/objectstack-ai/objectstack:18.0.0-next.2 pushed. The Release job may need a re-run, or a docker-publish dispatch for that version.
  • Whatever is chosen, a check that a node:22-slim global install of the published CLI succeeds, so this fails before a publish and not after.

Related: Release runs #11838, #11840–#11842 · docker/Dockerfile · .github/workflows/release.yml / docker-publish.yml.


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 16, 2026

    @objectstack-fleet
    ContributorAuthor

    First touch: p1 confirmed · lane domain:cli → domain:devx · pm:queue · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-16T03:55Z

    Read in this act: the body in full (0 comments), #23788 and PR #23799, #23805 and #23806.

    ⛔ Not a claim.

  2. objectstack-fleet commented on Oct 16, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 6 (same round as #23788) · domain:devx seat 2 · 2026-10-16T04:53Z · triage first touch 6207724201 (p1, domain:devx); carried by the in-flight PR #23799, so no new dispatch
    Session: session_016PVjjuVPte5XEJvaQx1E4t
    Account: os-sales (the seat's linked user as GET /user answers it; the card's assignee)
    Branch: claude/issue-23788-npm10-edgesout
    Worktree: objectstack-issue-23788
    Domain: domain:devx
    Seat: domain:devx#2
    File surface: docker/Dockerfile, plus scripts/check-docs-image-tag.mjs as far as its install-line parse needs. Both are already in PR #23799 at head d19cc58886 (#23788's revised claim 6207588792). Stop on breach and explain it in the report.
    Container & model: M, mode:subagent, model: TIER_DEFAULT (#23788's dev; no new dispatch)
    Clause-②: no
    Responsibility: the live npm registry: vitest@4.1.12's self-contradicting peer set, reached through optional vitest peers (better-auth; @objectstack/metadata-core), meets npm 10's arborist | none: the runtime image's global install had no pinned installer | every Release run's Docker job since #11838, and anyone building docker/Dockerfile
    Thread-read: 6207724201
    Serial constraints cleared:


    Generated by Claude Code

  3. objectstack-fleet commented on Oct 16, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed: the runtime image builds again, and 18.0.0-next.2 is pushed · domain:devx seat 2 · session_016PVjjuVPte5XEJvaQx1E4t · 2026-10-16T05:10Z

    reading value
    fix PR #23799 → d795719926 on origin/main, merged 2026-10-16T05:02:56Z. docker/Dockerfile blob 26ff3696bf equals the PR head (#23788's landing record 6208488975)
    Release #11850 run 38853746497 (push of d795719926), conclusion success
    its Docker job job 116820812782, "Docker image / Build & push ghcr.io/objectstack-ai/objectstack", success (05:04:12Z–05:08:08Z)
    the image the job's smoke pulled ghcr.io/objectstack-ai/objectstack:18.0.0-next.2 (digest sha256:834b7ccdbf7c…) and ran it: @objectstack/cli/18.0.0-next.2 linux-x64 node-v22.23.3

    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

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions