Skip to content

docs(adr-0119): the /batch atomic-refusal precedent anchor names batch-routes.ts (#23050 slice 13e, split-off anchor) - #24333

Merged
os-zhuang merged 1 commit into
mainfrom
claude/issue-23050-s13e-adr-0119-anchor
Oct 18, 2026
Merged

os-zhuang merged 1 commit into
mainfrom
claude/issue-23050-s13e-adr-0119-anchor

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Part of #23050
Clause-②: no

The basis for the Clause-②: no line: one anchor token in an ADR's prose changes, to name the file where the route the sentence already describes has lived since #23050 slice 2. No contract, schema, export, route, answer or configuration key changes, and no package's published files change.

维护者速读(草稿)

改了什么

ADR-0119(插件可达的事务与诚实的原子批处理)第 118 行有一处代码锚点,指向"跨对象 /batch 路由已有的先例":运行时无法回滚时,原子批处理请求以 501 NOT_IMPLEMENTED 拒绝,而不是悄悄降级。本 PR 只把这个锚点的文件从 packages/rest/src/rest-server.ts 改为 packages/rest/src/batch-routes.ts,锚定的仍是同一个 NOT_IMPLEMENTED。ADR 的决策内容、状态行和其他任何文字都不变。

为什么改

/batch 路由早在 #23050 第 2 片(commit a647783d4)就整体搬到了 batch-routes.ts,它的 501 拒绝就在那里(第 177 行)。旧锚点之所以一直"能解析",靠的是 rest-server.ts 里另外两个无关路由(对象状态机读取、已发布版本读取)的 501 字样;第 13e 片(PR #24330)把这两个路由也搬走后,旧锚点再也解析不到,CI 的 ADR symbol anchors resolve 门禁因此变红,门禁给出的修法就是改锚点。docs/adr/** 需要人工审批(Tier H),所以这一个 token 单独开 PR,不把 1,444 行的搬迁 PR 也拖进人工审批。

风险与代价(含回滚)

风险极低:只改文档里的一个路径,运行时、契约、发布产物都不变。本 PR 单独合入时锚点同样解析(batch-routes.ts 在 main 上已有该 token),与 PR #24330 合在一起时也解析(下面的实测)。回滚就是还原这一行;但若 #24330 已合入,回滚会让该门禁重新变红。

席位意见

你要做的(一个动作)

审阅这一行改动后,对本 PR 提交一次批准(APPROVED review);之后由席位合入本 PR,再让 #24330 合并 main 并落地。

What changes

docs/adr/0119-plugin-reachable-transactions-and-honest-atomic-batch.md:118, one token: packages/rest/src/rest-server.ts#NOT_IMPLEMENTED → packages/rest/src/batch-routes.ts#NOT_IMPLEMENTED. The sentence names "the cross-object /batch route's existing precedent"; that route's 501 NOT_IMPLEMENTED refusal is batch-routes.ts:177 (code: 'NOT_IMPLEMENTED'), moved there by slice 2 (a647783d4, PR #23642). Nothing else in the record moves: no status line, no other ADR, and ADR-0076 stays the maintainer's own carry.

This follows the seat's review record on PR #24330 (comment 6250370051, pointer 6250393018) and the claim 6249541908, amended in place with this second branch.

Proof

  • node scripts/check-adr-symbol-anchors.mjs on origin/main ec749fbb4 before the edit: exit 0. On this branch (5ab4ac08a): exit 0, "check-adr-symbol-anchors: 2353 anchors across 142 records resolve — 451 symbol (424 declaration, 27 literal), 1874 file-level, 28 cross-repo, 6 exempt, 18 continuation".
  • Control, the red this repairs: on PR refactor(rest): move the /meta object state-machine read and the published read out of rest-server.ts (#23050 slice 13e) #24330's head f2c84cc6f alone, exit 1, [unresolved-symbol] docs/adr/0119-plugin-reachable-transactions-and-honest-atomic-batch.md:118 packages/rest/src/rest-server.ts#NOT_IMPLEMENTED, the finding CI's job 117683703796 reports.
  • The combination that lands: a scratch merge of this branch with origin/claude/issue-23050-s13e-meta-object-state-published (f2c84cc6f, git merge --no-commit --no-ff, automatic merge, the 19 files of refactor(rest): move the /meta object state-machine read and the published read out of rest-server.ts (#23050 slice 13e) #24330 plus this one): exit 0, 2353 anchors resolve. In that tree rest-server.ts keeps one NOT_IMPLEMENTED, inside a // comment (:1592), which the checker does not count. The merge was aborted and the scratch worktree removed.
  • node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack docs/adr/0119-plugin-reachable-transactions-and-honest-atomic-batch.md, with and without --commands: 19 commands (11 by path, 8 declared whole-tree), identical to the git-derived list. All 19 exit 0. check:doc-formula-expressions first refused with exit 3 (@objectstack/formula and @objectstack/lint not built in this worktree); after pnpm exec turbo run build --filter=@objectstack/formula --filter=@objectstack/lint under the verify lock it exits 0 ("22 record-scoped formula example(s) across 476 files / 1393 TS blocks judged clean"). --ran: "Run reconciliation — 19 derived, 19 run, 0 NOT-MEASURED, 0 UNRUN."
  • node scripts/pm/check-governed-merges.mjs --branch HEAD: exit 3, GOVERNED, 1 of 1 path, landing tier H, +1 / −1.
  • Changeset: none. docs/adr/** ships in no package's files[], and Check Changeset refuses a newly added empty changeset (空 frontmatter changeset 相对 skip-changeset 标签零收益、单向风险 —— 「禁止空 changeset 进 .changeset/」的决策证据(#5292 结案后无处存放) #5471), so this PR carries the skip-changeset label, applied in the stroke that created it.

Landing order

This PR lands first, the Tier H way: an authorized APPROVED review, then the owning seat lands it. The seat then merges main into PR #24330, whose Lint · docs & code guards lane re-runs on that head; its other 33 completed checks on f2c84cc6f are green (all six Test Core shards, Build Core, TypeScript Type Check, Governed Surface Queue Guard). ⛔ No NOT_IMPLEMENTED token is kept in rest-server.ts to keep the old anchor alive.


Generated by Claude Code

…h-routes.ts, where the route has lived since #23050 slice 2

ADR-0119 D4's sentence "the cross-object `/batch` route's existing precedent"
anchored `packages/rest/src/rest-server.ts#NOT_IMPLEMENTED`. The `/batch`
route moved to `packages/rest/src/batch-routes.ts` in #23050 slice 2
(a647783), and its 501 `NOT_IMPLEMENTED` refusal is there; the anchor kept
resolving in rest-server.ts only on the /meta state and published reads'
501 tokens, which #23050 slice 13e moves out. One anchor token changes;
nothing else in the record does.

Claude-Session: https://claude.ai/code/session_01SYEJqDL3NXxrJRBVqaMu9T
Co-authored-by: Claude <noreply@anthropic.com>
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

维护者速读

改了什么

ADR-0119 第 118 行有一个代码锚点,指向「跨对象 /batch 路由已有的先例」:运行时无法回滚时,原子批处理以 501 NOT_IMPLEMENTED 拒绝。本 PR 只把这个锚点的文件从 packages/rest/src/rest-server.ts 改成 packages/rest/src/batch-routes.ts,锚定的仍是同一个 NOT_IMPLEMENTED。ADR 的决策、状态行和其他文字一字未动(+1 / −1)。

为什么改

/batch 路由早在 #23050 第 2 片(PR #23642)就搬到了 batch-routes.ts,它的 501 拒绝在那里的第 177 行。旧锚点一直「能解析」,靠的是 rest-server.ts 里另外两个无关路由碰巧也有 501 字样。#23050 第 13e 片(PR #24330)把这两个路由也搬走后,ADR symbol anchors resolve 门禁变红,门禁自己给出的修法就是改锚点;豁免只有维护者能加。docs/adr/** 要人工批准,所以这一个 token 单独开 PR,不把 1,444 行的搬迁 PR 一起拖进人工审批。

风险与代价(含回滚)

风险极低:只改文档里的一个路径,运行时、契约和发布产物都不变。席位实测了两种情况:本 PR 单独合入时锚点能解析(main 上的 batch-routes.ts 已有该 token),和 #24330 合在一起时也能解析。回滚就是还原这一行;但如果 #24330 已经合入,回滚会让这道门禁重新变红。

席位意见

建议批准。这是对一个早已失效的引用做的机械更正,不涉及 ADR 的任何决定;新锚点指向的正是那句话描述的代码。#24330 的其余检查全部通过(41 个检查,33 成功、6 个按名单跳过),只等这一处。

你要做的(一个动作)

对本 PR 提交一次批准(APPROVED review)。之后由席位把它转为正式并经队列合入,再把 main 合进 #24330 落地。


席位核对

ACCEPT (Tier H, awaiting an authorised approval) · domain:cli seat 1 (seat post #6024) · zhuangjianguo · session session_01SYEJqDL3NXxrJRBVqaMu9T · 2026-10-18T13:38Z · on head 5ab4ac08a · #23050 sub-slice 13e, split off by REWORK 6250370051 on PR #24330 (claim 6249541908, amended in place; report 6250559765).

  1. Shape: draft against main. The first line is Part of #23050 (no closing keyword), and Clause-②: no is line-initial and bare. Assignee zhuangjianguo. 1 file, +1 / −1, the one token read on the diff. check-governed-merges --branch: GOVERNED, Tier H (人合). No changeset; the repo's docs-only route is the skip-changeset label.
  2. Premise, measured:
  3. Gates: the 19 families dispatch-gates names for the path were run, with 0 NOT-MEASURED except two value-bearing ci.yml steps whose values come from the workflow. CI on this head at the report: no failure.
  4. Deviations accepted: the skip-changeset label instead of an empty changeset (Check Changeset refuses a new empty-frontmatter one). The claim's worktree name was reused for the second branch.
  5. Out of scope: none.
  6. Landing: this PR stays a draft until an authorised APPROVED review is on it. Review is requested from os-zhuang and hotlong in this act, and the PR carries needs-user-decision while it waits. After the approval, the seat runs the landing pre-checks, then ready and auto-merge through the queue. It then merges main into PR refactor(rest): move the /meta object state-machine read and the published read out of rest-server.ts (#23050 slice 13e) #24330, whose only red is this anchor lane.

Generated by Claude Code

@os-zhuang
os-zhuang marked this pull request as ready for review October 18, 2026 14:23
@os-zhuang
os-zhuang enabled auto-merge October 18, 2026 14:23
@os-zhuang
os-zhuang added this pull request to the merge queue Oct 18, 2026
Merged via the queue into main with commit 33f700b Oct 18, 2026
51 checks passed
@os-zhuang
os-zhuang deleted the claude/issue-23050-s13e-adr-0119-anchor branch October 18, 2026 14:41
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/xs skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants