Skip to content

docs: TypeScript legacy node10 resolution is unsupported for the 15 packages with subpath exports - #26378

Merged
objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/project-thread-upgscu
Oct 27, 2026
Merged

objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/project-thread-upgscu

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Requested by Steve · project thread
Fixes #26208
Clause-②: no
Metadata-protocol: none

维护者速读

  • 改了什么:插件开发指南加一段「Module resolution」,15 个带子路径 exports 的已发布包 README 各加一行:TypeScript 老的 node10 解析不支持,请用 node16、nodenext 或 bundler。
  • 为什么改:按裁决 A(6422810199)落地。node10 不读 exports,用这种配置的使用方 import 子路径时类型静默找不到。
  • 风险与回滚:只改文档和 README,不动 exports、不加 typesVersions、不加门禁。回滚即 revert 本 PR。
  • 先看:content/docs/plugins/development.mdx(新段落),packages/spec/README.md(README 行的样子),.changeset/26208-node10-resolution-unsupported.md。
  • 两分钟验证:pnpm check:published-readme-links,预期 0 root-relative、锚点全部解析(含新的 #module-resolution)。
  • 需要你做的:无,席位落地。

What changes

  • content/docs/plugins/development.mdx: a ### Module resolution paragraph right under the Step 1 tsconfig.json block (the page already shows moduleResolution: "bundler"). It states that the published packages declare entry points only through exports, that node10 ("node", the default under module: commonjs) ignores exports and is unsupported, and that bundler, node16 or nodenext is required. Chosen over content/docs/getting-started/**: no page there covers TypeScript setup, and open work holds that tree (the seat-3 hand-over 6430890935 names the collisions).
  • One identical line in the README of each of the 15 packages, linking to that anchor. Placed before the first ## heading (after the intro), appended at the end for the three READMEs that have no ## heading (platform-objects, plugin-webhooks, service-cluster), and under the existing "TypeScript Configuration" section in packages/types/README.md.
  • Root changeset: one patch for the 15 packages, because each README is in its package's files[] and ships in the tarball.

Acceptance notes

Verification

At head 894bdb3.

Derived gate families: 92 derived, 92 run, 0 NOT-MEASURED

node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --ran FILE printed: ✓ dispatch-gates --ran: 92 derived famil(ies) accounted for — 92 run, 0 NOT-MEASURED (a DERIVED zero — all 92 recorded an exit code and none of them is 3).

Two families first exited on shallow-clone prerequisites (check-engine-split-ratio --days 90 exit 2, check-plugin-teardown-shape --self-test exit 3); after deepening the clone both exit 0. The build-reading families (check:dts-closure, check:dual-build-cjs-loads, check:i18n, spec check:docs, check:skill-examples) ran after a locked turbo run build --filter='./packages/**' (VERDICT command-exit 0) and exit 0.

Acceptance gates
  • pnpm check:published-readme-links exit 0: 567 outbound link(s) across 159 published markdown file(s): 0 root-relative, 0 non-canonical origin(s), 62 docs-site page(s) resolved (0 via redirect), 17 anchor(s) verified.
  • pnpm check:published-readme-exports exit 0 (run on the built tree; outside the derivation, run because the card names it).
  • pnpm check:doc-anchors exit 0: 598 internal fragment links all resolve.
  • pnpm check:doc-authoring exit 0.
  • lychee (check-links.yml) not run locally; the docs paragraph adds no outbound link. Read from this PR's check-runs.

🤖 Generated with Claude Code

https://claude.ai/code/session_01ADHkmRdDB2C42HgHcE5Vrt


Generated by Claude Code

…he 15 packages with subpath exports

The plugin development guide gains a "Module resolution" paragraph under
its tsconfig step, and each of the fifteen published packages whose
`exports` map carries subpaths gets one README line pointing at it:
use node16, nodenext or bundler. No exports or typesVersions change.

Claude-Session: https://claude.ai/code/session_01ADHkmRdDB2C42HgHcE5Vrt
Co-authored-by: Claude <noreply@anthropic.com>
@github-actions github-actions Bot added size/s documentation Improvements or additions to documentation tooling labels Oct 27, 2026
@github-actions

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

⚠️ 15 changed file(s) yielded no anchor (packages/cli/README.md, packages/connectors/connector-imap/README.md, packages/core/README.md, …), so the pages documenting them are NOT COVERED by this run — this is not a clean bill of health for those files. Nothing else in this diff resolved to a documentable surface (no symbol, route or SDK anchor derived from 15 changed package(s)).

What this run could not see
  • 15 changed file(s) yielded no anchor (packages/cli/README.md, packages/connectors/connector-imap/README.md, packages/core/README.md, …) — pages documenting those are invisible to this run
  • a page that states a rule by its inputs shares no identifier with the emitter that implements the rule, so an emitter-only diff cannot list it — not on this run and not on any run. Measured on fix(driver-sql): emit varchar(maxLength) for a text field a declared index keys on #11430: content/docs/protocol/objectql/types.mdx documents the text-family column mapping by the ObjectQL type names it maps FROM (text / textarea / html) while the diff changed createColumn; it went unlisted, and it was the page that diff falsified, in four places. No shared token exists to detect this on, so a rule your change carries has to be re-read by hand in the pages that restate it.
  • a key NAME is not a key, so the hand re-read the line above prescribes can land on the wrong schema. The same spelling is authorable on one governed type and a [REMOVED] tombstone on another for each of active, aria, joins, objects, template, tools and version (censused on [finding] tools is a key on BOTH AgentSchema (tombstoned, dead) and SkillSchema (live, cloud-attested), so a name-based search attributes skill examples to the agent key — it produced a false stop-the-line alarm on PR #19059 #19093 over the liveness ledger's governed types, top-level keys); nothing in a search result distinguishes the two, so a grep hit on a LIVE example reads as evidence about the DEAD key. Measured on fix(spec): the agent.tools liveness row says dead — it claimed live on a key the schema tombstoned #19059: content/docs/ai/agents.mdx was reported as contradicting the agent.tools tombstone over its tools: example at :161, which is inside the defineSkill({ block opened at :155 — the page was already correct. Settle ownership by PARSING the value against both schemas, never by the name: that literal PASSES SkillSchema, and as an AgentSchema it FAILS at tools with the tombstone prescription. ⛔ These names are not the whole class — a key retired through a .strict() guidance map leaves no tombstone in the walked shape and none of them here (tool.category, live as AIToolDefinition.category).

Coarse fallback — 163 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): node scripts/docs-audit/affected-docs.mjs --json 61c079862ac726a1e16fcd73a04122567f475c4a → packageMentionDocs.

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

席位核对 · ACCEPT · devx seat 2 · 2026-10-27T01:08Z

Seat domain:devx#2 (#20163) · session_01Q4MDXRbEJCNdPAP4SiXwp9 · reviewed head 894bdb38 · card #26208, claim 6430866829 (wave 8, delta F). PR carries Fixes #26208.

  • Scope: 17 files, +60/−0: one ### Module resolution paragraph in content/docs/plugins/development.mdx, one identical line in 15 package READMEs, one root .changeset/ file (patch × 15). Not governed (check-governed-merges: tier null). No exports change, no typesVersions, no ui/.
  • Premise: I spot-checked the package manifests on the PR head: spec (./data, ./system, ./kernel…), cli (./console, ./hook-body), types (./node), core (./logger) and create-objectstack (./created-summary) all declare subpaths only through exports, with no typesVersions, so node10 cannot see them. The thread's count (exactly these 15 among non-private packages) stands.
  • Placement: the paragraph sits under the guide's tsconfig.json step, whose example already uses "moduleResolution": "bundler", so "(as above)" is true. Each README line links that anchor; published-readme-links and doc-anchors passed in the thread's run.
  • Accuracy: "node10 is the default when module is commonjs" holds for the TypeScript 5.x line this repo uses. Nit, not blocking: the changeset's "while the root entry still appears to work" does not apply to create-objectstack, which has no root entry (only ./created-summary); true for the other 14.
  • Changeset: patch is right, since the README ships in each tarball; the Clause-② / Metadata-protocol lines follow the root .changeset/ convention.

Landing: when CI is green on this head, the seat readies the PR and arms auto-merge.

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

Labels

documentation Improvements or additions to documentation size/s tooling

Projects

None yet

2 participants