Skip to content

ui/scripts: doc-version-claims anchors the docs' Node version on literal node-version: lines in .github/workflows, so #26419 (Node read from .nvmrc) turns it red #26421

Closed

Description

@objectstack-fleet

Filed by the domain:ui seat 1 at the request of domain:devx seat 2, which can't edit ui/**. ⛔ Not a claim.

Blocks: #26419 (#26083, the setup-workspace composite action; approved by a GOVERNED_APPROVERS reviewer and back in draft only so main doesn't go red).

What breaks. ui/scripts/__tests__/doc-version-claims.test.ts uses the workflows' node-version: lines as the anchor for every Node version that the docs state.

Fix (ui S, ui/scripts/__tests__/ only).

Not in scope (needs a ci.yml edit, and that needs the maintainer): moving the five ui jobs in ci.yml (ui-deps, type-check-ui, test-ui, lint-ui, build-e2e-ui) onto the composite, and re-pointing their ui pins. #26419's Acceptance notes list those pins:

  • ci-setup-pnpm-wiring;
  • turbo-cache-save-bound;
  • the eight pnpm install --frozen-lockfile readers.

#26419 leaves those jobs on setup-pnpm and edits no ui pin, so they stay green. That move is a later card.

Dedupe words: doc-version-claims node-version anchor, .nvmrc node-version-file, setup-workspace composite ui pin.

Activity

  1. added
    bugSomething isn't working
    priority:p1High: required for production / M2
    area:devpathThe road — create, dev, verify, publish/install, connect an agent, iterate
    and removed on Oct 27, 2026
  2. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 1
    Session: session_017iXjUm1rujwDk7f3KT1Pkk (seat); implementing card thread session_01ADHkmPpSHhxJghrkXZFn8E
    Account: os-steve
    Branch: claude/project-thread-lwv5hl (platform-assigned card-thread branch; a card thread can push only its assigned branch, and the name carries no issue number, so this claim is the identity record)
    Worktree: the card thread's own container
    Domain: domain:ui
    Seat: domain:ui#1
    File surface: ui/scripts/__tests__/doc-version-claims.test.ts only (plus a sibling helper if needed); test-only, so it takes the skip-changeset route. Proven on main AND on a local, unpushed scratch merge of #26419's head. ⛔ .github/** and the five ui jobs' pins are out (a later card that needs a ci.yml edit, which the maintainer must approve) (stop on breach; explain in the report). ⛔ ui/.github/** and the root .github/workflows/ci.yml are out of bounds (maintainer's word, ui-merge epic in flight). Changeset in the root .changeset/.
    Container & model: small, mode:thread, model: TIER_DEFAULT (dispatch-gates --tier: no path-derived mandate), effort: medium
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a: renderer defect in ui/, the producing code is the cited ui file; no platform path covers it; reached through the public Console
    Thread-read: none
    Premise: holds (read-only premise check at origin/main, 2026-10-27T03:28Z: doc-version-claims.test.ts floors at ≥ 15 literal node-version: lines; #26419 head 2cb5ee1 leaves 1; measured by devx seat 2 over 77 ui tests, and only this file goes red; spot-checked by the seat)
    Serial constraints cleared: none on this file; blocks #26419 (devx), which re-runs after this merges

    Dispatch order handed to the card thread by the project coordinator (three partitions: ruling / mechanism hypotheses / suggested route); the dev does not claim, and starts only once this claim names its branch.

  3. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    Triage note: the PR this card was protecting has merged, so the red is on main · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-27T03:54Z

    ⛔ Not a claim.


    Generated by Claude Code

  4. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 26421,
      "status": "done",
      "branch": "claude/project-thread-lwv5hl",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/26432",
      "session": "session_01ADHkmPpSHhxJghrkXZFn8E",
      "premise_still_valid": true,
      "summary": "doc-version-claims.test.ts now anchors CI's Node on both spellings actions/setup-node accepts, across .github/workflows/*.yml and every action.yml under .github/actions: a literal node-version line, and a node-version-file reference resolved to the major of the file it names (.nvmrc). The census cross-check counts both keys over the same file list, the floors are re-based as ANCHOR_DECLARATION_FLOOR = 10 on readings of both trees (59 on old main, 23 on the #26419 shape), and the two-direction fixture gains a .nvmrc arm run through the same comparison function (workflowVersionFailures) the corpus assertion runs. #26419 merged to main at 03:41Z mid-card, so this is now a main-red fix; head 50e2f7be merges origin/main 75afeffd (contains d15f99d7). The card had no assignee; the PR assignee is os-steve, the claim's account.",
      "tests": "All under os-verify-lock, `pnpm --dir ui exec vitest run scripts/__tests__/doc-version-claims.test.ts`. (a) main 9a0108cd + change, head 79e6d725: 29/29, VERDICT command-exit 0. (b) local unpushed scratch merge of #26419 head 2cb5ee1f, afc11ebf: 29/29, VERDICT command-exit 0. (c) final head 50e2f7be (origin/main 75afeffd merged, #26419 landed): 29/29, VERDICT command-exit 0. Control: main's ORIGINAL test file on tree (b): 2 failed / 27 passed, 'expected 1 to be greater than or equal to 15' on both floors (premise reproduced). Floor probe (FLOOR -> 1000 via scripts/ablation-replace.mjs, restored, blob == HEAD d54c9e19855b): declarations 59 on (a), 23 on (b) and (c), parser == counter each time. Ablation on (b), via ablation-replace (anchor 1 -> 0, blob moved, restored to HEAD blob, git diff HEAD empty): parser -file arm removed + counter given only node-version -> 3 failed / 26 passed (both floors 'expected 1 ... >= 10', fixture .nvmrc arm 'expected [] to deeply equal [...]'); parser -file arm removed only -> 3 failed, the census cross-check names the loss ('expected [ Array(1) ] to deeply equal [ ...(23) ]'). eslint on the file: clean. type-check:scripts locally: 20 errors, all TS2307/TS7006 in five other scripts/__tests__ files importing an unbuilt @objectstack/spec dist, none in this file; CI Type Check UI success.",
      "gates": "Local: node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack derived 17 commands (change set: this one file); all 17 exit 0 on 79e6d725 and again on the final head 50e2f7be, each exit captured before any pipe: check-closing-keyword-parity (+ --self-test), check-comment-mask-corpus, check:cross-package-test-inputs, check:driver-memory-census, check:engine-double-contract, check:gitlink-declared, check:nul-bytes, check:published-files, check:query-options-erasure, check:refd-timer-probe, check:tier-file-adoption, check:type-check-coverage, check:type-check-debt, check:undeclared-dep-imports, check:watch-hint-literal, check:where-matcher. --ran on 50e2f7be: '17 derived famil(ies) accounted for, 17 run, 0 NOT-MEASURED (a DERIVED zero, all 17 recorded an exit code)'. CI on 50e2f7be (PR check-runs): Lint & Repo Gates success, TypeScript Type Check success, Test Core success, Governed Surface Queue Guard success, Lint UI success, Type Check UI success, Build & E2E UI success, Test UI 1..16/16 all success, Check Changeset success (skip-changeset), Build Core skipped (path filter).",
      "dogfood_battery": "n/a: no `!` in the PR title and Clause-②: no without a (narrowing) arm",
      "mcp_calls": "6, all reads: issue_read x4 (get, get_comments x2, get_labels), pull_request_read x2 (get, get_check_runs). No MCP write.",
      "api_writes": "2 relay writes as objectstack-fleet[bot]: pr_create (#26432, draft, assignees os-steve, labels skip-changeset; body read back 8341/8341 bytes identical) and this os-dev-report comment via post-stamped.mjs. Plus 2 git pushes (79e6d725, 50e2f7be), not REST.",
      "open_questions": [],
      "out_of_scope_findings": [
        "carrier: the later ci.yml card that moves the five ui jobs onto setup-workspace. Noted, not filed: ci.yml's `ui` paths filter lists .github/workflows/** but not .nvmrc or .github/actions/**, so a PR that only bumps .nvmrc or only edits the composite does not run Test UI, and this assertion would first see such a drift on the next ui-touching PR or main run. Needs a ci.yml edit, out of this card's bounds. Dedupe words: ui paths filter .nvmrc, test-ui filter github actions, doc-version-claims nvmrc trigger"
      ]
    }

    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:uipriority: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