Skip to content

[Decision] TypeScript's legacy node10 resolution resolves no subpath on 15 published packages: declare node10 unsupported, or mirror exports into typesVersions? #26208

Closed

Description

@objectstack-fleet

Ruled: 6422810199 · letter A · 2026-10-26T17:25Z

Filing gate: ② a maintainer-only decision. It sets which consumer setups the published packages support. Filed by domain:devx seat 2 (#20163) · os-steve · session session_01Q4MDXRbEJCNdPAP4SiXwp9. ⛔ Not a claim.

Reader who acts. The maintainer chooses. The domain:devx seat dispatches the chosen letter.

Measured

维护者速读

TypeScript 老的 node 解析方式不认 exports 子路径,所以用这种配置的用户 import 这 15 个包的子路径时类型找不到。两条路:A 在文档里写明不支持 node10(要求 moduleResolution 用 node16/nodenext/bundler),不改包;B 给 15 个包加 typesVersions,把 exports 子路径镜像一份。B 能多兼容一类老配置,但同一组子路径要声明两遍,以后容易漂移,还得加一道检查。我推荐 A:TypeScript 5 以上的新项目默认都不是 node10,我们的模板也不是。选 A 还是 B?

Options

Option What Consequence Workload
A (recommended) One paragraph in the docs plus a line in each affected README: node10 resolution is unsupported; use node16, nodenext or bundler. Legacy-config consumers get a clear statement instead of a silent miss. Nothing to drift. devx · 1 docs PR
B Add a typesVersions mirror of each exports subpath on the 15 packages, plus a check that the mirror matches exports. node10 consumers resolve subpaths. Two declarations of one surface, and a new gate to keep them equal. devx · 1 PR plus a new check

Related: #26095, PR #26198.

Activity

  1. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    ContributorAuthor

    Brief-claimed-by: session_01KrKXQVvgYk2AJ4VkqMobyb · batch #401 · 2026-10-26T15:42Z

    Director seat, summon #51 continuation (ledger objectstack#12708). Presented to the maintainer in batch #401 as item 1 of 5 (with #26149, batch #400's open item, re-presented beside it at the maintainer's word 「按照总监决裁格式详细写」). Seat increment (re-verified on origin/main cdd4eea9; the card's own analysis is not restated):

    • Premises hold: no typesVersions in any packages/*/package.json (0 files); the published docs already tell plugin authors moduleResolution: "bundler" (content/docs/plugins/development.mdx:46); PR chore(packages): publishing metadata for the 73 published packages — per-format types, sideEffects, publishConfig, and 18 missing READMEs #26198 (the attw run that produced the finding) is open.
    • Human floor: 对外承诺 — which consumer setups the published packages support — so the letter is the maintainer's. The card has no facets block; the seat's reading on the four axes: ① one declaration of each subpath (exports) stays the only one — a typesVersions mirror is a second copy that drifts and needs its own gate (④ 新增门禁默认否); ② no consumer has reported a node10 miss; TypeScript 5 projects and this repository's own templates resolve with bundler / node16; ③ a documented refusal is loud (the consumer reads one sentence), a mirror that drifts is silent; ④ A adds nothing.
    • Facets read: same direction; the seat agrees with A (one docs paragraph plus a README line per affected package: node10 unsupported, use node16 / nodenext / bundler). Workload: devx · 1 docs PR, no governed path.
      Prior rulings read: typesVersions · moduleResolution · node10 → the docs line only; ADR none; thread: none.
  2. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    ContributorAuthor

    Ruling: batch #401 item 2 · letter A · maintainer 「同意」 2026-10-26T17:25Z

    Recorded by the director seat (summon #51 continuation, session_01KrKXQVvgYk2AJ4VkqMobyb, ledger objectstack#12708). The maintainer answered batch #401 with 「同意」 — every seat letter. Brief 6420278132. Letter A: TypeScript's legacy node10 module resolution is declared unsupported for the published @objectstack/* packages — consumers use moduleResolution: node16, nodenext or bundler (the shape content/docs/plugins/development.mdx:46 already shows). One docs paragraph (the consumer setup page) plus one line in each of the 15 affected packages' README; no typesVersions mirror, no new check (④ 新增门禁默认否; one declaration of each subpath stays the only one). Not B.

    Workload of the chosen letter (card column): devx · 1 docs PR, no governed path.

    Execution: needs-user-decision → pm:queue in this act (domain:devx, p3). Ruling-ref: names this comment; Clause-②: no, Metadata-protocol: none. The PR cites the attw reading on PR #26198 (report 6419735271) as its evidence.

  3. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 8 · 2026-10-27T00:44Z
    Session: session_01Q4MDXRbEJCNdPAP4SiXwp9 (devx seat 2) · card thread cmsg_01FdL1XeUyvVNxLreh3F4Qi941YjangeAFXEgevqVv4bY9
    Account: os-steve
    Branch: claude/project-thread-upgscu (the harness-pinned branch of the card thread; it names no issue, so this claim is the identity record; amended on spawn)
    Worktree: objectstack-issue-26208
    Domain: domain:devx
    Seat: domain:devx#2 (seat post #20163)
    File surface: ruled letter A (6422810199): one docs paragraph on the consumer-setup page (the dev finds the page that tells consumers how to configure TypeScript; content/docs/plugins/development.mdx:46 already shows moduleResolution: "bundler") stating that TypeScript's legacy node10 resolution is unsupported for the published @objectstack/* packages and naming node16, nodenext or bundler; one line in the README of each of the 15 packages the card lists (spec, cli, connector-imap, core, create-objectstack, lint, metadata, metadata-core, objectql, platform-objects, plugin-auth, plugin-webhooks, service-cluster, service-datasource, types); one root .changeset/ patch for the packages whose shipped README changes. ⛔ No typesVersions, no exports change, no new check (④ 新增门禁默认否); ⛔ no ui/ path (stop on breach; explain in the report)
    Container & model: S, mode:thread, model: default tier (TIER_DEFAULT, from dispatch-gates --tier: no path-derived mandate), effort: medium
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — filed by this seat from the #26198 attw report; ruled letter A, maintainer 「同意」 2026-10-26T17:25Z
    Thread-read: 6422810199
    Premise: no packages/*/package.json declares typesVersions, and the 15 packages still expose subpath exports (the dev re-reads the list on main; #26321 and #26352 changed metadata-core, service-cluster and cli since the attw run)
    Serial constraints cleared: #26352 (cli README) and #26321 (three export maps) are merged; no open PR touches these READMEs


    Generated by Claude Code

  4. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 1 · 2026-10-27T00:44Z
    Session: session_011GEU2fao9E7fipNbUZo9RL (devx seat 3; the dev is an in-session subagent, same session, identified by the branch)
    Account: os-justin
    Branch: claude/issue-26208-node10-unsupported
    Worktree: objectstack-issue-26208
    Domain: domain:devx
    Seat: domain:devx#3 (seat post #26373)
    File surface: one consumer-setup docs page under content/docs/ that is not under content/docs/getting-started/**, plus README.md of the 15 packages the attw reading names (packages/spec, packages/cli, packages/connectors/connector-imap, packages/core, packages/create-objectstack, packages/lint, packages/metadata, packages/metadata-core, packages/objectql, packages/platform-objects, packages/plugins/plugin-auth, packages/plugins/plugin-webhooks, packages/services/service-cluster, packages/services/service-datasource, packages/types), and one .changeset/26208-*.md only if the repo's changeset rules require one for README-only edits in published packages. ⛔ content/docs/getting-started/**, the root README.md, CONTRIBUTING.md (held by #26088) and any package.json (stop on breach; explain in the report)
    Container & model: S docs card, mode:subagent, model: floor tier (dispatch-gates --tier at 6390fe52: no path-derived mandate), effort: medium
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — not a defect card
    Ruling-ref: 6422810199 (letter A: node10 declared unsupported; one docs paragraph + one README line per affected package; no typesVersions, no new check)
    Thread-read: 6422810199
    Premise: holds (read at 6390fe5: no docs page states node10 support or non-support; content/docs/plugins/development.mdx:46 shows "moduleResolution": "bundler"; all 15 READMEs exist; only packages/types/README.md mentions moduleResolution/node10 at all, 1 line, which the dev re-reads)
    Serial constraints cleared: #26088 (devx seat 2, in flight) holds README.md, CONTRIBUTING.md, content/docs/getting-started/**, which are excluded above; open PRs #26337 and #26244 touch content/docs/getting-started/quick-reference.mdx, also excluded. No open PR and no in-flight domain:devx claim names a packages/*/README.md.

  5. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    already claimed — yielding · devx seat 3 (#26373) · session_011GEU2fao9E7fipNbUZo9RL · 2026-10-27T00:46Z

    Seat 2's claim 6430866829 is earlier than this seat's claim 6430867629 (3 s apart), so seat 2 holds the card, and seat 3's claim is withdrawn. Seat 3's own label write had put pm:dispatched on the card and assigned os-justin. This stroke swaps the assignee to os-steve, matching seat 2's Account: line; the labels stay as seat 2's claim needs them.

    Readings handed over (taken 2026-10-27T00:42Z at origin/main 6390fe5, so the winner need not rescan):

  6. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 26208,
      "status": "done",
      "branch": "claude/project-thread-upgscu",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/26378",
      "session": "session_01ADHkmRdDB2C42HgHcE5Vrt",
      "premise_still_valid": true,
      "summary": "Ruled letter A (6422810199) landed as one docs PR. content/docs/plugins/development.mdx gains a 'Module resolution' paragraph under its tsconfig step (node10 unsupported; use bundler, node16 or nodenext), and each of the 15 packages' README gains one identical line linking to that anchor. Root changeset: one patch for the 15 packages, since each README ships in files[]. Premise re-read on origin/main 6390fe52: all 15 still expose subpath exports (none dropped after #26321/#26352), 0 package.json declares typesVersions, and these 15 are exactly the non-private packages with subpath exports.",
      "tests": "docs and README only; no package test or typecheck owed. Acceptance gates at 894bdb38: pnpm check:published-readme-links exit 0 (567 links, 159 files, 0 root-relative, 17 anchors verified); pnpm check:published-readme-exports exit 0 (built tree); pnpm check:doc-anchors exit 0 (598 fragments); pnpm check:doc-authoring exit 0. No ablation: docs change.",
      "gates": "dispatch-gates --repo objectstack-ai/objectstack at 894bdb38: 92 derived, 92 run, 0 NOT-MEASURED (DERIVED zero, all exit 0). check-engine-split-ratio --days 90 (exit 2) and check-plugin-teardown-shape --self-test (exit 3) first refused on the shallow clone, exit 0 after deepening. Build-reading families ran after a locked turbo build of ./packages/** (VERDICT command-exit 0). check:published-readme-exports recorded as outside the derivation. lychee (check-links.yml) not run locally: read from PR check-runs, in_progress at report time.",
      "line_budget": "+60 / -0 across 17 files (16 docs/README lines plus a 26-line changeset)",
      "files_changed": [".changeset/26208-node10-resolution-unsupported.md", "content/docs/plugins/development.mdx", "packages/{spec,cli,core,create-objectstack,lint,metadata,metadata-core,objectql,platform-objects,types}/README.md", "packages/connectors/connector-imap/README.md", "packages/plugins/{plugin-auth,plugin-webhooks}/README.md", "packages/services/{service-cluster,service-datasource}/README.md"],
      "deviations": ["Docs page is content/docs/plugins/development.mdx, not getting-started/**: no getting-started page covers TypeScript setup, and that tree is held by open work (seat-3 hand-over 6430890935).", "No PR subscription or CI wait, per os-dev; CI convergence is the seat's."],
      "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
      "mcp_calls": "4 — issue_read x3 (get, get_comments x2), pull_request_read x1 (get); no write tool",
      "api_writes": "2 — pr_create via fleet-write relay (POST pulls, #26378, read back identical, assignee os-steve); this os-dev-report comment via post-stamped. git push is not a REST write.",
      "open_questions": [],
      "out_of_scope_findings": []
    }

    Generated by Claude Code

  7. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    devx seat 2 · review: ACCEPT → PR #26378 (Fixes #26208) on head 894bdb38. CI green on that head (42 success, 8 skipped, 0 other); not governed (check-governed-merges: tier null).

    Landing: ready + auto-merge. The changeset nit (the "root entry" clause does not fit create-objectstack) stays as is; not worth a CI cycle.


    Generated by Claude Code

  8. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    devx seat 2 · released: PR #26378 merged as 3b480e0c, and its +/- lines on main match the reviewed head 894bdb38 in all 17 files (the guide paragraph, 15 READMEs, the changeset). The card closed on Fixes. pm:dispatched comes off. Seat 3's hand-over readings on this card (yield at 6430825199's round) were used.


    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

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions