Skip to content

decision: packages/vscode-extension (1,513 LOC, 'the official VSCode extension') has no CI build and no vsce/ovsx publish step — build it in CI, or move it out of the monorepo? #25910

Closed

Description

@os-zhuang

Ruled: 6386223367 · letter B · 2026-10-24T15:47Z

Filing gate ②: a decision only the maintainer can make. Raised by the 2026-10-24 whole-repo review; the maintainer approved filing the review's independent cards verbatim: 「同意:建议新建:与合并无关、独立成卡的产品/契约项(可现在建)」. Batch-of: 13.

维护者速读

一句话问题:README 称之为「official」的 VS Code 扩展,在本仓没有任何构建或发布门禁,坏了没人知道。1,513 行、private、工作区里没人依赖它、.github 里没有 vsce / ovsx;ci.yml 的注释把它列在「闭包之外的 11 个工作区包」里。要么把它接进 turbo/CI 并定义发布路径,要么移出单仓(独立仓或归档)。

Measured (2026-10-24, HEAD 7981384)

Options × real cost × effort

what what a user sees effort
A Add the extension to turbo run build and type-check, plus a tag-triggered vsce package / ovsx publish workflow an extension that is actually released and stays green M; workflow is a governed surface
B Move it to its own repository (or archive it) and delete the package here no "official" claim without a release path; one fewer package in the tree S here, plus a new repo
C Keep as is a 1.5k-line package that rots silently 0

Business meaning: A is "it is a product, ship it"; B is "it is a side project, do not let it borrow the monorepo's name"; C is "undecided, forever".

四轴:① 长远:A 或 B 都比 C 合理,C 是最差的(声明了但不兑现);② 业务拉动:没有已知用户(npm / marketplace 安装数未实测);零拉动默认 B;③ 防 AI 犯错:一个没有门禁的包会被 AI 席位「顺手修」而无法验证;④ 创业阶段不扩散:B 删一个永久义务,A 新增一条发布管线。

Recommendation: B unless the maintainer names a user; confidence gap: marketplace install counts are 未实测. Only-① check: 只看①选 A 或 B 均可,②④ 定 B;是否翻转:否(①不分高下)。

裁后执行:A → one PR adding the package to turbo's build/type-check filters and a release workflow (authorised approval needed); B → one PR deleting packages/vscode-extension, its README references and the ci.yml comment that lists it.

os-decision-facets
① 项目长远合理性:A/B 都消除「声明了但不兑现」;C 保留它。
② 实际业务拉动:无已知用户(未实测),零拉动默认 remove。
③ 防 AI 犯错:无门禁的包会被顺手改而无从验证。
④ 创业阶段不扩散:B 删一个永久义务;A 新增一条发布管线。
Prior rulings read: vscode-extension|vsce|ovsx → 5 hits (incidental); ADR none; thread: none.

Filed by the read-only whole-repo review session https://claude.ai/code/session_01BDtwYUWhLGyWLzYQjZ95Cf on 2026-10-24, written through the maintainer's own account token (the session holds no fleet-bot credential). Evidence files: that session's scratchpad (objectui-review-report.md, findings-*.md). ⛔ Not a claim; triage grades and routes; suggested labels are suggestions only.


Generated by Claude Code

Activity

  1. os-zhuang commented on Oct 24, 2026

    @os-zhuang
    ContributorAuthor

    Maintainer ruling — letter B.

    Source: the maintainer, in the Claude Code review session https://claude.ai/code/session_01BDtwYUWhLGyWLzYQjZ95Cf chat on 2026-10-24, verbatim and untranslated: 「13469 移出」

    Recorded by that session on the maintainer's instruction (who: the maintainer; what: the quote above; where: the session chat, not GitHub). Per the card's 裁后执行 section, execution is now:

    • One os-dev PR deleting packages/vscode-extension, its README / docs references and the ci.yml comment that lists it among the packages outside the closure; .changeset with empty frontmatter is not enough if any published manifest changes — read scripts/check-changeset-presence.mjs's header. The extension's history stays in git; a separate repository, if wanted later, starts from that history.

    Transition applied in the same write: needs-user-decision → pm:queue; the Ruled: line is prepended to the body. Dispatch is the objectui domain:ui seat's.


    Generated by Claude Code

  2. objectstack-fleet commented on Oct 24, 2026

    @objectstack-fleet
    Contributor

    Triage: first grade — tooling · priority:p3 · domain:devx · area:devpath · pm:queue · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-24T17:01Z

    ⛔ Not a claim, ⛔ not a dispatch.
    finding comes off.

    • Ruled B (移出), 6386223367. The work: remove packages/vscode-extension from the workspace, and its README's "official" claim with it; the history stays in git.
    • Its own repository is the maintainer's to create (repository creation and settings are a maintainer action). Until then, the code is archived by removal, with no new repository.

    Generated by Claude Code

  3. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    Contributor

    Transferred 2026-10-26T03:48Z from objectstack-ai/objectui#13469, with its comments and timeline; the old URL redirects here. objectui moved into this repository as the ui/ workspace (epic #25677) and is being archived (#25854). The body is left exactly as filed.

    Paths. Read every repository path in the body with a ui/ prefix: packages/vscode-extension is now ui/packages/vscode-extension.

    References. The bare issue numbers in the body were written in objectui and now resolve against this repository by mistake; read them as objectstack-ai/objectui#12139, objectstack-ai/objectui#12405, objectstack-ai/objectui#12415.

    No stale pm:dispatched or assignee to strip.


    Generated by Claude Code

  4. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    Contributor

    Deferral readings · devx seat 3 (#26373) · session_011GEU2fao9E7fipNbUZo9RL · 2026-10-27T00:50Z · ⛔ not a claim, no state change

    The ruling (B, 移出) is executable, but the surface is under two open PRs right now, so this seat did not claim it this round. Read at origin/main 6390fe5:

  5. objectstack-fleet commented on Oct 28, 2026

    @objectstack-fleet
    Contributor

    Claim: PM loop round 7 · 2026-10-28T13:12Z
    Session: session_01QSeKYmTYfaPbLQD4BJfomW (the dispatching seat; the dispatch note under this claim names the cloud session)
    Account: os-justin (the seat's linked user, as GET /user answers it; the card's assignee)
    Branch: claude/issue-25910-remove-vscode-extension
    Worktree: the cloud session's own container
    Domain: domain:devx
    Seat: domain:devx#2
    File surface: ruling B (6386223367, 移出). Delete ui/packages/vscode-extension/ (25 files) and every reader that names it on main: CONTRIBUTING.md (L291, L517), scripts/check-changeset-fixed.mjs (L38, plus the object-ui fixed-group entry if it exists only for this package), ui/tsconfig.json comments, ui/content/docs/utilities/{index.md,meta.json,vscode-extension.mdx}, ui/content/docs/guide/architecture.md, ui/packages/types/src/__tests__/package-exports-manifest.test.ts, the ui/scripts/** gates and tests that enumerate it, and pnpm-lock.yaml regenerated with pnpm install (never by hand). Released CHANGELOG entries and dated ui/docs/audits/* stay as history. ⛔ skills/** is out of scope (governed rule text, domain:skills per #26997 ruling B): skills/objectui/README.md L59 goes into out_of_scope_findings, and the seat forwards it. ⛔ No .github/workflows/** edit (root ci.yml has 0 hits). Every assertion that counts packages is updated to the new count, never loosened (stop on breach; explain in the report)
    Container & model: M, mode:cloud, model: TIER_DEFAULT (dispatch-gates --tier: "no path-derived mandate"), effort: medium
    Clause-②: no (a private package, never published)
    Metadata-protocol: none
    Responsibility: n/a — not a defect card
    Ruling-ref: 6386223367
    Thread-read: 6430941995
    Premise: holds at origin/main 4d3a077f66. ui/packages/vscode-extension/ has 25 files. The two PRs the deferral reading waited on are settled: #26343 merged, #26365 closed unmerged. #26080 already folded ui/README.md and ui/QUICK_REFERENCE.md into the root files, so that collision is gone.
    Serial constraints cleared: open PR #27042 (retire @object-ui/plugin-ai) also touches CONTRIBUTING.md and pnpm-lock.yaml, and its ui/packages/plugin-ai/tsconfig.test.json names this package. Different rows, so no serial wait. The dev merges origin/main before opening the PR and regenerates the lockfile on the merged tree.


    Generated by Claude Code

  6. objectstack-fleet commented on Oct 28, 2026

    @objectstack-fleet
    Contributor

    Dispatched under claim 6469909924 · 2026-10-28T13:15Z: cloud session session_01QSeKYm29SiQaonK2q8F7CS (mode:cloud, TIER_DEFAULT), branch claude/issue-25910-remove-vscode-extension. The report comes back here as os-dev-report.


    Generated by Claude Code

  7. objectstack-fleet commented on Oct 28, 2026

    @objectstack-fleet
    Contributor

    os-dev-report

    {
    "issue": 25910,
    "status": "done",
    "branch": "claude/issue-25910-remove-vscode-extension",
    "pr": "#27275",
    "session": "session_01QSeKYm29SiQaonK2q8F7CS — this cloud dev session (dispatching seat session_01QSeKYmTYfaPbLQD4BJfomW; claim 6469909924 names this branch, verified)",
    "premise_still_valid": true,
    "summary": "Ruling B (6386223367, 移出) executed: ui/packages/vscode-extension/ (25 files) deleted, pnpm-lock.yaml regenerated with pnpm install (-1098/+18, moved hunks only), and every reader re-derived by git grep of the path and the package name object-ui. Changes: CONTRIBUTING rows, the object-ui member of the .changeset fixed group plus its PRIVATE_FIXED_MEMBERS row (now empty, mechanism kept), the docs page and its meta.json/index.md/architecture.md mentions, the unused-deps bundler allowances, the markdown-test-inputs ledger entry, and census/doc-link/component-type pins whose subjects left with the package. Floors and ui tsconfig extends-graph counts were re-measured on the new tree (87 files, 73 extend root), and present-tense comments in core/types/ui scripts were past-tensed. Released CHANGELOG entries and dated ui/docs/audits are untouched. PR is draft, assignee os-justin, label skip-changeset (private package; comment-only edits in published packages). Changed lines are 8704, over the 3000 human-merge threshold, so it lands by authorized approval or the maintainer's merge.",
    "tests": "Merged head bf73eca. pnpm --dir ui exec vitest run --maxWorkers=2 scripts/ under the lock: VERDICT command-exit 1, Test Files 16 failed / 158 passed, Tests 57 failed / 4672 passed. The failing set is identical (comm diff empty) to an untouched baseline worktree at 4d3a077 (57 failed / 4679 passed). All 57 are environment: the unbuilt @objectstack/spec dist, e.g. Cannot find module .../@objectstack/spec/dist/ui/index.mjs in spec-symbol-ledger-, check-doc-expression-carriage and date-only-zone-pins. The package deletion alone added 10 failures over baseline (body-dialect-census x2, check-changeset-fixed x1, check-doc-links x3, emitted-census x1, unused-deps x1, markdown-test-inputs x2); the doc deletion surfaced 3 more (check-doc-links x2, check-doc-component-types x1). All 13 are fixed. Proof: none of them appears in the final full run above, and a targeted rerun of check-doc-links.test.ts after its floor fix passed 121/121. Root node scripts/check-changeset-fixed.mjs --self-test: 12 cases pass. node scripts/check-changeset-fixed.mjs: in sync with 109 public workspace packages. pnpm install --frozen-lockfile after merging origin/main: exit 0. No ablation: no tested runtime behaviour changed (config, scripts, docs, comments).",
    "gates": "node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack at bf73eca: exit 0, 75 commands. 73 non-suite commands ran, each exit captured before any pipe: 69 exit 0; 4 exit 3 PREREQUISITE NOT MET (no pnpm build in this container): check:dts-closure, check:dual-build-cjs-loads, check:lean-entry-closure, check:sourcemap-no-sources-content. All four read built @objectstack/
    dists this diff does not touch, so they are NOT MEASURED locally and CI's Build Core/Lint carry them. pnpm --dir ui exec vitest run scripts/ exit 1 (baseline-identical, see tests). pnpm check:pm-dispatch-gates exit 0 (fast tier 1935 cases pass, 7 slow sections deferred). --ran reconciliation: exit 0, 75 derived, 71 run, 4 NOT-MEASURED, 0 UNRUN, all 75 with recorded exit codes. Also ran ui check-changeset-fixed / check-doc-links (13 scan roots) / check-doc-component-types / check-unused-dependencies / check-phantom-dependencies: all exit 0. PR check-runs: in_progress at report time, not awaited per contract.",
    "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
    "mcp_calls": "0 — no MCP GitHub calls (reads went through unauthenticated REST GET via curl)",
    "api_writes": "2 strokes: (1) pr_create via fleet-write relay request fw-20261028T141546Z-f4cfe8 (POST /repos/objectstack-ai/objectstack/dispatches, then the relay's POST /repos/objectstack-ai/objectstack/pulls, POST /repos//issues/27275/assignees, POST /repos//issues/27275/labels); body read back 6790/6790 bytes identical, assignee os-justin, label skip-changeset read back via GET. (2) this os-dev-report comment via scripts/pm/post-stamped.mjs (POST /repos//issues/25910/comments). git push is not a REST write.",
    "deviations": [
    "Comment-only edits touch two published packages (@object-ui/core src/utils, @object-ui/types src/zod/form.zod.ts JSDoc). No step ① closure build or package typecheck was run locally; the change is comment text only. CI Type Check UI carries it.",
    "Lowered floors in check-doc-links.test.ts (11 to 8, 14 to 11, 135 to 129, 6 to 5, 2 to 1). Each moves by exactly the content this ruling deletes, follows the in-file objectui#5965 precedent, and records the measured value and reason in a comment. The check-changeset-fixed.test.ts pin still keeps the private VS Code extension inside the fixed group was replaced by puts no private package inside the fixed group (true on the new tree, red on the old one). The body-dialect-census by-name CompletionProvider pin was removed with its subject; the population zero and both of its lit controls remain.",
    "check:changeset-fixed itself has no fixed-group-size pin beyond the self-test; PRIVATE_FIXED_MEMBERS is kept as an empty frozen map rather than deleting the mechanism, so a future private member still needs a ruled row."
    ],
    "open_questions": [
    {
    "question": "Should the release-time prose that counts the extension (content/docs/releases/v18/18-2.mdx L88, The VS Code extension (object-ui) takes the version) get an erratum note now that the package is gone?",
    "options": [
    "A leave it: it is a released record of 18.2.0 and true for that release",
    "B a docs-only PR at the next release adds a line that the extension left the workspace"
    ],
    "recommendation": "A, because the page records what 18.2.0 shipped and releases/ is release-owned; the next release notes can say the extension left."
    }
    ],
    "out_of_scope_findings": [
    "skills/objectui/README.md L59 still lists vscode-extension under Tooling. class: stale reference in governed rule text (skills/**, domain:skills, Tier H). reach: the published skills catalog ships it to customer projects. carrier: the dispatching seat forwards it to domain:skills. dedupe words: vscode-extension skills objectui README tooling",
    "ui/packages/plugin-ai/tsconfig.test.json L42 names vscode-extension in a comment. Left untouched because open PR #27042 retires that whole package, and an edit here would conflict with its deletion. carrier: PR #27042 (the file goes with it). Noted, not filed.",
    "ui/scripts/tests/body-dialect-producer-scan.test.ts L155/L185 plant synthetic packages/vscode-extension/... paths in a temp root. They are fixture names only and test nothing about the real tree. class: naming, not filed. carrier: none."
    ]
    }


    Generated by Claude Code

  8. objectstack-fleet commented on Oct 28, 2026

    @objectstack-fleet
    Contributor

    ACCEPT → PR #27275 comment 6471812189 · 2026-10-28T14:34Z · over the 3,000-line floor (8,704 lines; not governed): review requested from os-zhuang and hotlong, needs-user-decision on the PR, draft held until approval. Open question → A (18.2 release note left as is).


    Generated by Claude Code

  9. objectstack-fleet commented on Oct 28, 2026

    @objectstack-fleet
    Contributor

    domain:devx#2 · os-justin · session_01QSeKYm29SiQaonK2q8F7CS
    os-dev-report

    {
    "issue": 25910,
    "status": "done",
    "round": "patch round 1: the merge-queue red in build 40739047226 (Test UI 15/16, check-doc-links README floor, expected 126 to be at least 129)",
    "branch": "claude/issue-25910-remove-vscode-extension",
    "pr": "#27275",
    "head": "383f0f0a",
    "session": "session_01QSeKYm29SiQaonK2q8F7CS",
    "premise_still_valid": true,
    "summary": "Merged origin/main (1c5fe3c) into the branch (merge commit, no rebase, no force-push). The merge was clean, and pnpm install left pnpm-lock.yaml unchanged. Re-measured all floors this PR moved in check-doc-links.test.ts on the merged tree, by the test's own expressions, at bf73eca and on the merge. Only the README-row pair moved: decidable 129 to 126, and site-absolute 40 to 39. The site-absolute floor was also red on the merged tree, but the queue's first failing assertion hid it. Per-README diff: the sole change is packages/plugin-ai/README.md (3 decidable, 1 site-absolute), deleted by #27042 (c59b1bf). git log of ui README/doc paths over bf73eca..origin/main shows only c59b1bf and 6dbff8e (#27219); #27219 moves no count. Cross-check: origin/main reads 138 / 47, the extension README this card deletes carried 12 / 8, and 138-12 = 126, 47-8 = 39. The other four floors are unchanged on the merged tree: packages/* 8, combined 11, package-dir decidable 1, content/docs site-absolute 5. Each floor equals its measured value, and the comment names both deletions.",
    "measured": {
    "packages/* scanned": 8,
    "packages/+apps/ combined": 11,
    "package-dir decidable": 1,
    "README decidable": 126,
    "README site-absolute": 39,
    "content/docs site-absolute": 5,
    "origin/main README decidable / site-absolute": "138 / 47"
    },
    "tests": "Head 383f0f0. Touched suites, 11 files under the lock (check-doc-links, body-dialect-census, check-changeset-fixed, check-doc-component-types, check-doc-snippet-emitted-census, check-published-dist-tooling, check-unused-dependencies, doc-version-claims, package-files-exist, quick-reference-commands-4149, markdown-test-inputs): VERDICT command-exit 0, 465/465. Full pnpm --dir ui exec vitest run scripts/: exit 1, 57 failed / 4659 passed. A fresh baseline worktree at origin/main 1c5fe3c reads 57 failed / 4662 passed. The failing sets are identical (comm: 0 new, 0 gone), all the unbuilt-spec-dist environment class.",
    "gates": "dispatch-gates --commands at 383f0f0: exit 0, the same 75 commands as before. 73 non-suite: 69 exit 0; 4 exit 3 PREREQUISITE NOT MET (check:dts-closure, check:dual-build-cjs-loads, check:lean-entry-closure, check:sourcemap-no-sources-content: no pnpm build, so NOT MEASURED; CI carries them). ui vitest scripts/ exit 1 (baseline-identical). check:pm-dispatch-gates exit 0. --ran: exit 0, 75 derived, 71 run, 4 NOT-MEASURED, 0 UNRUN, all with recorded exit codes. Changed lines 8708, still over 3000; the approval stands per the seat.",
    "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
    "mcp_calls": "0",
    "api_writes": "1 — this addendum os-dev-report via scripts/pm/post-stamped.mjs (POST /repos//issues/25910/comments). git push of 383f0f0 is not a REST write. No PR body write.",
    "pr_body_changes_for_the_seat": [
    "What changes, floors bullet: replace README decidable hrefs 135 → 129 with README decidable hrefs 135 → 126 and site-absolute 40 → 39 (this card's extension README, plus #27042's plugin-ai README on the merge with main).",
    "Tests and Verification: the cited head bf73eca becomes 383f0f0. The figures there are 57 failed / 4659 passed, baseline-identical against origin/main 1c5fe3c."
    ],
    "open_questions": [],
    "out_of_scope_findings": [],
    "deviations": [
    "The addendum opens with the seat signature line domain:devx#2 · os-justin · session_01QSeKYm29SiQaonK2q8F7CS, which post-stamped requires since #27263 (merged on main after the first report). The os-dev-report marker is on the next line; the tool's recognisers skip the signature line."
    ]
    }


    Generated by Claude Code

  10. objectstack-fleet commented on Oct 28, 2026

    @objectstack-fleet
    Contributor

    domain:devx#2 · os-justin · session_01QSeKYmTYfaPbLQD4BJfomW

    Landed: PR #27275, merged as ebfadb02c3 through the merge queue · 2026-10-28T19:11Z

    Merged = reviewed. The merged diff matches head 383f0f0a45: the sorted +/− lines are hash-identical, 58 files, +173/−8535. ACCEPT → PR #27275 comment 6471812189. os-zhuang approved it (review 5687185062), readied it and enqueued it. The first queue build (40739047226) went red on a semantic conflict with main: #27042 (c59b1bfa) had removed the plugin-ai README after this PR measured its floors. The dev re-measured on a merge of main and set the README floors to 126 / 39, with the reason recorded beside each (addendum 6477490125). The second queue run landed it. The approval stood across the push.

    Ruling B (6386223367, 移出) is executed: ui/packages/vscode-extension is out of the monorepo, and every reader of it is updated. The card was closed by Fixes #25910. pm:dispatched is removed and the assignee cleared in this act, and cloud session session_01QSeKYm29SiQaonK2q8F7CS is archived. The one governed line left, skills/objectui/README.md L59, rides #27048 (note 6471473734).

    This was a stay-behind tail of devx seat 2 (sign-off brief 6473747705), and it is now closed.


    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

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions