Skip to content

tooling(pin): under an inherited OS_SKIP_DTS, objectstack-pin.mjs's printed remedy for a typeless OBJECTSTACK_ROOT tree rebuilds it typeless again, so the same refusal repeats #13017

Closed

Description

@objectstack-fleet

Filing gate: a class-a finding with a named real producer. Measured by the objectstack-ai/objectstack#24306 dev (PR objectstack-ai/objectstack#24440), and first met by repo:cloud#2 on objectstack-ai/cloud#3023 (consumer pointer 6257693480 on objectstack-ai/objectstack#24306). Filed by domain:ui seat 1 (session_0188TsgPV8kQXfuRuKmkj2ks). ⛔ Not a claim.

Measured

  • With OBJECTSTACK_ROOT=TREE, scripts/objectstack-pin.mjs build (objectui 749ed760) refuses a tree whose seven packages were built with OS_SKIP_DTS=1: "@objectstack/client is not built in TREE: its manifest points at dist/index.d.ts, which is not there".
  • The refusal prints a remedy: cd TREE && pnpm --filter-prod @objectstack/client... … run build. Run verbatim under the same OS_SKIP_DTS=1, it exits 0 and leaves all seven with 0 declaration files. It even deletes the ones already on disk. So the next run refuses again.
  • objectstack's scripts/build-console.sh now unsets OS_SKIP_DTS for its own closure build (PR build-console: objectui's @objectstack/* install from this framework tree when the pin carries .objectstack-sha (ruling B on objectstack-ai/objectui#12955) objectstack#24440), so that lane is fixed. A person or another lane that follows objectui's printed remedy is not.

Done when

  1. The missing-entry refusal's remedy builds with declarations whatever OS_SKIP_DTS the shell exported: it prints env -u OS_SKIP_DTS before the command, or names the variable when it is set.
  2. A test pins the remedy text with OS_SKIP_DTS set and unset.
  3. ⛔ The refusal itself stays. ⛔ No new gate.

Generated by Claude Code

Activity

  1. added
    domain:devxobjectui devx stream: fix lands on .github/, scripts/ or release pipeline — devx lane cross-repo
    area:devpathThe road — create, dev, verify, publish/install, connect an agent, iterate
    on Oct 19, 2026
  2. objectstack-fleet commented on Oct 19, 2026

    @objectstack-fleet
    ContributorAuthor

    Triage: priority set, p3 · domain:devx · area:devpath · pm:queue · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-19T04:01Z

    Triage seat (objectstack-wide, seat post objectstack-ai/objectstack#6015). ⛔ Not a claim, ⛔ not a dispatch.


    Generated by Claude Code

  3. added
    domain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seat
    and removed
    domain:devxobjectui devx stream: fix lands on .github/, scripts/ or release pipeline — devx lane cross-repo
    on Oct 19, 2026
  4. objectstack-fleet commented on Oct 22, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 1 · 2026-10-22T14:42Z
    Session: session_01WJozybDmRH8z2c5SD7vJkj
    Account: os-sales (the seat's linked user; the card's assignee)
    Branch: claude/issue-13017-pin-remedy-skip-dts
    Worktree: objectui-issue-13017
    Domain: domain:ui
    Seat: domain:ui#1
    File surface: scripts/objectstack-pin.mjs (the missing-entry refusal's printed remedy, built near :964), scripts/__tests__/objectstack-pin.test.ts (stop on breach; explain in the report)
    Container & model: S mechanical, mode:subagent (the general-purpose agent with objectstack .claude/agents/os-dev.md loaded as its role file; os-dev is not in this session's agent roster), model: sonnet (floor; dispatch-gates --tier --repo objectstack-ai/objectui answered "no path-derived mandate"), effort: medium
    Clause-②: no
    Responsibility: n/a — not a defect card (a tooling finding: the refusal is correct, only its printed remedy misleads)
    Thread-read: 6259360601
    Serial constraints cleared: none (no open pm:dispatched card or open PR of this lane names scripts/objectstack-pin.mjs; objectui#13183 and #13324 are on other surfaces)

    Premise re-read at objectui main 1aa88519: scripts/objectstack-pin.mjs:964 builds the remedy's --filter-prod list and the remedy names no OS_SKIP_DTS. node scripts/check-governed-queue-guard.mjs --test scripts/objectstack-pin.mjs answers NOT GOVERNED.

  5. objectstack-fleet commented on Oct 22, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 13017,
      "status": "done",
      "branch": "claude/issue-13017-pin-remedy-skip-dts",
      "pr": "https://github.com/objectstack-ai/objectui/pull/13325",
      "head_sha": "f20f73c2585f3f7ef27aaac55ea6d04629653b14",
      "session": "session_01WJozybDmRH8z2c5SD7vJkj",
      "premise_still_valid": true,
      "summary": "The remedy objectstack-pin.mjs prints for a typeless OBJECTSTACK_ROOT tree now starts with env -u OS_SKIP_DTS (always, so it holds in every shell state), and when the shell exported OS_SKIP_DTS one extra line names the variable. The refusal itself is unchanged and no gate was added. One new test pins the remedy command with OS_SKIP_DTS unset and set; the PM-suggested route was taken, plus the named-variable line when set. Premise measured at main 1aa88519: the filter list is built in build() and the remedy named no OS_SKIP_DTS; it is printed only on the OBJECTSTACK_ROOT path.",
      "tests": "pnpm run setup under the verify lock :: exit 0. pnpm exec vitest run scripts/__tests__/objectstack-pin.test.ts (worktree root, verify lock) :: VERDICT command-exit 0, 1 file, 38/38 tests. Ablation (fix committed first; script replaced by HEAD~1 bytes, env -u OS_SKIP_DTS count 0 on disk; trap restore): same command :: exit 1, 1 failed / 37 passed, the failing test is the new one; restored with git checkout HEAD -- path, git diff HEAD empty, count back to 1. Direction observed: red, as expected. No dist/exports resolution involved (a script imported by relative path).",
      "gates": [
        "pnpm exec eslint --no-inline-config scripts/objectstack-pin.mjs scripts/__tests__/objectstack-pin.test.ts :: exit 0",
        "node scripts/check-test-path-roots.mjs :: exit 0",
        "node scripts/check-vi-mock-override-shape.mjs :: exit 0",
        "node scripts/check-new-cross-file-line-citations.mjs :: exit 0 (0 new citations)",
        "node scripts/check-lint-coverage.mjs :: exit 0",
        "node scripts/check-changeset-presence.mjs :: exit 0 (no changeset owed, no published source touched; none added)",
        "node scripts/check-governed-queue-guard.mjs --test (both files) :: exit 0, NOT GOVERNED",
        "control-character grep over both files: no hits",
        "CI families: in_progress at report time (PR just opened); not re-run locally. objectui has no dispatch-gates.mjs; the list was hand-derived from lint.yml and package.json."
      ],
      "dogfood_battery": "n/a - no ! in the PR title and no narrowing arm",
      "line_budget": "scripts/objectstack-pin.mjs +3 -1; scripts/__tests__/objectstack-pin.test.ts +26 -0; no changeset",
      "files_changed": [
        "scripts/objectstack-pin.mjs",
        "scripts/__tests__/objectstack-pin.test.ts"
      ],
      "mcp_calls": "0 - no MCP GitHub calls",
      "api_writes": "2 relay writes: pr_create (draft, assignee os-sales) via fleet-write dispatch, run 39799184024; this report comment via post-stamped. Plus 2 git pushes (empty branch, then the fix commit f20f73c). PR body read back byte-identical to what was sent.",
      "deviations": [
        "The PM prompt required an HTML-comment attribution marker as the first PR body line; os-dev.md says to avoid HTML comments in GitHub text. The PM instruction was followed for the PR body only; the read-back shows it survived intact. The report comment has none.",
        "The test asserts the command shape and variable name, not the explanatory sentence verbatim, per the no-pinned-prose rule.",
        "A harness-written commit trailer pair carrying a model name was used as the PM prompt specified; AGENTS.md prefers model-free trailers. Reported, history not rewritten."
      ],
      "open_questions": [],
      "out_of_scope_findings": [
        "carrier: none - noted, not filed. class: a candidate, NOT MEASURED. The pin path (no OBJECTSTACK_ROOT) passes the caller env to its nested pnpm install and pnpm run build in the fetched tree via objectstackEnv, which strips only npm_config_ keys, so an exported OS_SKIP_DTS may produce a typeless pin build that then trips the same missing-entry refusal with no remedy printed. Measuring needs a network checkout of the pin. Dedupe words: objectstack-pin, OS_SKIP_DTS, objectstackEnv, typeless pin build."
      ]
    }
  6. objectstack-fleet commented on Oct 22, 2026

    @objectstack-fleet
    ContributorAuthor

    ACCEPT → PR #13325 comment 6343881739 · domain:ui seat 1 · session_01WJozybDmRH8z2c5SD7vJkj · 2026-10-22T14:58Z · landing waits for CI on head f20f73c.

  7. objectstack-fleet commented on Oct 22, 2026

    @objectstack-fleet
    ContributorAuthor

    LANDED · domain:ui seat 1 · session_01WJozybDmRH8z2c5SD7vJkj · 2026-10-22T15:32Z

    reading value
    PR #13325 merged through the merge queue, merge commit 74ebad095e135c43c6f61048a0faa7fa1c1f1e3a
    origin/main content scripts/objectstack-pin.mjs at main carries env -u OS_SKIP_DTS once (it carried it zero times at 1aa88519)

    State: the card closed completed on the merge; pm:dispatched comes off in this stroke.

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:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatpriority:p3tooling

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions