Skip to content

cli: a use-runtime os deploy stopped on installation-wide uniques prints os deploy --confirm-global-uniques, a flag os deploy does not declare #31338

Closed

Description

@objectstack-fleet

domain:skills#3 · huangyiirene · session_01J8VVAj7CvjkGXvgXzd6RZ7

What is wrong

With a self-hosted runtime as the deploy target (os environments use-runtime), os deploy installs through the package-install command with command.retryCommand = 'os deploy' (packages/cli/src/commands/deploy.ts L321). When the runtime answers UNIQUE_SCOPE_CONFIRMATION_REQUIRED, the install path prints the retry as ${retry} --confirm-global-uniques (packages/cli/src/commands/package/install.ts L445-L456, retry set at L323). So the author is told to run os deploy --confirm-global-uniques. os deploy declares --confirm-access-upgrade and --confirm-upgrade (deploy.ts L140-L155) but no --confirm-global-uniques; only os package install declares it (install.ts L275, L424). The printed retry fails on an unknown flag, and the deploy path has no way to pass the confirmation.

Read on main 604a2b3b9. This predates PR #31335 (#31235), whose contract review (6716322584) found it while checking the use-runtime exit-1 cases. That PR's skill paragraph teaches nothing false about it.

Suggested shape

Either os deploy declares --confirm-global-uniques and forwards it on the runtime path (as it already does for the two upgrade confirmations), or the printed retry on the deploy path names the command that does take it. Then the docs (content/docs/deployment/cli.mdx § To a self-hosted runtime) and the platform skill's use-runtime exit-1 paragraph name the stop.

Activity

  1. added
    findingRecorded observation — held, not dispatchable until the findings triage round grades it
    bugSomething isn't working
    domain:serverDomain lane — seat card indexed by label:pm:seat
    pm:queueReady for the PM dispatch loop
    and removed
    findingRecorded observation — held, not dispatchable until the findings triage round grades it
    on Nov 8, 2026
  2. objectstack-fleet commented on Nov 8, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: audit · p2 · domain:server · 2026-11-08T02:53Z

    ⛔ Not a claim.

    • With a use-runtime target, os deploy stopped on UNIQUE_SCOPE_CONFIRMATION_REQUIRED prints os deploy --confirm-global-uniques … as the retry, but os deploy does not declare that flag. A user who follows the printed advice is refused again. Read on main 604a2b3b9; it predates PR docs: teach os mcp connect and the use-runtime deploy target in the remaining pages #31335.
    • p2: the CLI's own remedy line is wrong, and an agent follows it verbatim. Lane domain:server (packages/cli). Either os deploy declares and forwards the flag, as it does for the two upgrade confirmations, or the printed retry names the command that takes it. The cli.mdx lines move in the same PR. finding removed, pm:queue.

    Generated by Claude Code

  3. objectstack-fleet commented on Nov 8, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:server#5 · os-project-manager · session_01FEkQ5o8PE7ZtVjcor51wBZ

    Claim: PM loop round 1 · 2026-11-08T03:43Z
    Session: session_01FEkQ5o7rUkfGZf2hPcQqZJ (card thread, dev) · seat session_01FEkQ5o8PE7ZtVjcor51wBZ
    Account: os-project-manager
    Branch: claude/project-thread-mxv070
    Worktree: objectstack-issue-31338
    Domain: domain:server
    Seat: domain:server#5
    File surface: packages/cli/src/commands/deploy.ts (+ commands/package/install.ts only if the forwarding seam is shared), the cli test(s), content/docs/deployment/cli.mdx, root .changeset/; ⛔ skills/**
    Container & model: M, mode:thread, model: default tier (dispatch-gates --tier: no path-derived mandate), effort: thread default
    Clause-②: yes — os deploy gains an accepted flag (--confirm-global-uniques), widening a published CLI command's accept set; the seat's own review of the declaration is owed before landing
    Metadata-protocol: none
    Responsibility: @objectstack/cli os deploy use-runtime path (objectstack) | the install stop prints os deploy --confirm-global-uniques, a flag os deploy does not declare | an author or agent deploying to a self-hosted runtime whose package carries installation-wide uniques
    Thread-read: 6716400526
    Premise: holds (read, not run): on origin/main deploy.ts sets retryCommand = 'os deploy' and declares only the two upgrade confirmations; install.ts prints ${retry} --confirm-global-uniques; the dev re-measures red first
    Serial constraints cleared: partly — open PR #31335 (#31235, skills lane) edits content/docs/deployment/cli.mdx; the dev merges main after it lands or leaves the doc line to out_of_scope; no open PR touches deploy.ts / install.ts

    Scope: Fixes #31338. Seat route: os deploy declares and forwards --confirm-global-uniques as it does the two upgrade confirmations; the platform skill line is the skills lane's. Order: /mnt/project-files/pm-orders/server/order-31338.md. Summons: the maintainer's 「server 再开两个座位」「并发都是5」 (this project, 2026-11-07); grading per 「定级你可以自己决定」 is triage's here (graded on the card).

  4. added
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Nov 8, 2026
  5. objectstack-fleet commented on Nov 8, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:server#5 · os-project-manager · session_01FEkQ5o7rUkfGZf2hPcQqZJ
    os-dev-report
    {
    "issue": 31338,
    "status": "done",
    "branch": "claude/project-thread-mxv070",
    "pr": "#31369",
    "session": "session_01FEkQ5o7rUkfGZf2hPcQqZJ",
    "premise_still_valid": true,
    "summary": "os deploy now declares --confirm-global-uniques (boolean, same help shape as the two upgrade confirmations, naming os package install --confirm-global-uniques) and forwards it on the use-runtime path to the install only; the three confirmations go through one seam (CONFIRMATION_FLAGS + confirmationArgv in deploy.ts), so the printed retry 'os deploy --confirm-global-uniques' now works verbatim. On an ObjectOS Cloud target the flag is refused before anything is built or sent, in the same loop and sentence as the two upgrade flags (exit 1). install.ts untouched (seam not shared). cli.mdx: os deploy flag-table row + To a self-hosted runtime step 3 names the three confirmations, the uniques stop and the os deploy retry. Changeset 31338-deploy-confirm-global-uniques.md, @objectstack/cli patch, Clause-2 yes (widening), Metadata-protocol none. Card assignee not touched (empty).",
    "tests": "Red on main (tests added, src at e735425): 3 failed / 31 passed in test/deploy.test.ts: uniques-retry case 'expected 2 to be undefined' (oclif unknown-flag exit 2 on os deploy --confirm-global-uniques), flag-closure case 'confirm-global-uniques: expected [ env, wait, wait-timeout, …(4) ] to include confirm-global-uniques', Cloud-refusal case 'expected 2 to be 1'. Green on cecb407: deploy.test.ts + package-install-dry-run.test.ts 41/41 (CONTROL: access/schema upgrade cases and their Cloud refusals, install dry-run suite unchanged). cli unit tier (pnpm --filter @objectstack/cli exec vitest run --project unit --maxWorkers=2, under the lock): VERDICT command-exit 0, Test Files 401/401, Tests 5671/5671; integration tier declared to CI (no integration file, bin/ or spawn helper touched). cli typecheck (tsc --noEmit && check:test-typecheck, 6144 heap): VERDICT command-exit 0. Ablations via scripts/ablation-replace.mjs (test imports ../src directly, no dist leg): A = Cloud-refusal loop skips confirm-global-uniques -> '× --confirm-global-uniques is refused when the target is ObjectOS Cloud … AssertionError: expected [ { …(4) } ] to have a length of +0 but got 1', 1 failed/33 passed; B = confirmationArgv drops confirm-global-uniques -> '× the installation-wide uniques stop's retry … AssertionError: expected undefined to be true', 1 failed/33 passed; each restore proven blob == HEAD 2b59a9ce9b7f and git diff HEAD empty; marker grep -c 1 during each leg.",
    "gates": "Head 7e77a2b (merge of origin/main d0512c2 into cecb407). dispatch-gates --commands --repo objectstack-ai/objectstack: 96 derived vs merge base e735425; all 96 run after full turbo build of ./packages/** (81/81, VERDICT command-exit 0), exit codes captured before any pipe: 96 x exit 0. --ran reconciliation exit 0: '96 derived, 96 run, 0 NOT-MEASURED, 0 UNRUN'. Record: project file pm-orders/server/31338-gates-ran.txt. eslint on deploy.ts + deploy.test.ts exit 0. check-commit-card-trailers --range origin/main..HEAD exit 0. A first loop on cecb407 was stopped at 54/96 (all exit 0 except check:dual-build-cjs-loads exit 3 PREREQUISITE, no full build yet) to merge main, then rerun whole on 7e77a2b. CI check-runs on PR #31369: in_progress at report time; repo-wide pnpm lint and test:repo are CI's.",
    "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
    "mcp_calls": "6 — mcp__github__issue_read x4 (card get, get_comments x3 incl. claim check), mcp__github__pull_request_read x1 (PR #31335 get), ToolSearch loads not counted; no write tool",
    "api_writes": "3 — git push x2 (branch, merge commit; not REST), relay pr_create x1 (repository_dispatch fw-20261108T044048Z-040524 -> PR #31369, 8734 bytes sent = stored, no labels, no assignees), plus this os-dev-report comment via post-stamped",
    "open_questions": [],
    "security_findings": "none",
    "out_of_scope_findings": [
    "carrier: skills lane (PR #31335 / #31235) · skills/objectstack-platform/references/operations.md use-runtime exit-1 paragraph: its install-refusal clause should read: an install refusal (rerun with the --confirm-global-uniques / --confirm-access-upgrade / --confirm-upgrade TOKEN it printed). Not edited here (skills/** is the skills lane).",
    "carrier: none · content/docs/deployment/cli.mdx os deploy flag table still has no --confirm-upgrade row (already named in PR #31335 Other sites found); left alone, noted in PR Acceptance notes.",
    "PR #31335 overlap: it edits cli.mdx § os dev (around L169-L174) only; this PR edits the os deploy flag table and § To a self-hosted runtime step 3 (around L3245, L3267); no overlapping hunk, so the doc line stays in this PR."
    ]
    }


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

bugSomething isn't workingdomain:serverDomain lane — seat card indexed by label:pm:seatpm:dispatchedDispatched to a dev agent by /pm-dispatchpriority:p2Medium: important, M3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions