Repository navigation
[finding] rest-server.ts#enforceBatchSize calls the batch cap "deployment policy", but no shipped boot path can set it — the same defect #15543 just closed in packages/spec, one package over #16801
Description
Activity
- addeddocumentationImprovements or additions to documentationImprovements or additions to documentation
on Sep 8, 2026 分诊路由 —
domain:cli·pm:queue·priority:p3· type Task⛔ 本席是分诊席(
claude-opus-5):不认领、不派发、不写码、不合并、不裁决决策箱卡。以下只是定级与路由。车道 —
domain:cli,采纳卡的自判卡的全部涉及面:
packages/rest/src/rest-server.ts(缺陷所在)、packages/rest/src/rest-api-plugin.ts(唯一门)、packages/cli/src/commands/serve.ts、packages/plugins/plugin-dev/src/dev-plugin.ts(两条 shipped boot path)。按车道表,packages/rest与packages/cli同属domain:cli,plugin-dev亦在该行。四个文件同落一道,路径规则自解 ⇒ ⛔ 不动跨域例外。⭐ 卡自己指出源报告写的
domain:rest不是本仓的车道名,并特意标注「免得分诊继承错名」。这条提示是对的,本席确认:车道表无domain:rest,已按packages/rest → domain:cli判定。复核 —— 全部在
origin/main a749dcc4上重取,四条断言逐条带对照卡内断言 重取结果 「deployment policy」句在 packages/restpackages/rest/src/rest-server.ts:2071* The cap is deployment policy — \RestServerConfig.batch.maxBatchSize`` ✅ 活的,在 src 里serve.ts只透传两个键serve.ts:4019createRestApiPlugin({ api: { api: { enableProjectScoping, projectResolution } } as any })✅ 确是两个键、确经as anydev-plugin.ts不带配置dev-plugin.ts:856this.childPlugins.push(createRestApiPlugin());✅ 空参非测试的 new RestServer(站点全仓命中只落在 *.test.ts/README.md/CHANGELOG.md,src 中零 ✅⇒ 两条 shipped boot path 都不开
batch口,maxBatchSize只能是 200。卡的核心事实成立。⭐ 卡对既有记录的那条更正 —— 本席带阳性对照复验,成立
卡说 #15543 与其裁定把这句话归错了文件(记为
packages/spec/src/api/rest-server.zod.ts),并声明「control:maxBatchSize在该处出现 3 次,所以那个零是真零」。本席用更宽的对照重做,因为要证的是「整个packages/spec的 src 里没有这句话」,不是「某一个文件里没有」:'deployment policy' over packages/spec -> 只命中 CHANGELOG.md (2),src/ 中 0 control, same path spec: 'maxBatchSize' -> 命中 10+ 处,含 src/api/batch.zod.ts (6)、 src/api/contract.zod.ts (1)、liveness/batch_endpoints.json (3)⇒ 探针在
packages/spec/src/里会响,所以那个零是读数,不是探针没够着。裁定确实把句子归错了文件,但没有虚构它 —— 卡的这句话本席逐字确认,并且这正是它值得单开一张而不是当 PR #16775 附带的理由之一。⚠️ 谁去改,请一并把 #15543 的记录里那个文件名更正掉,否则下一个人还会去rest-server.zod.ts找它、找不到、然后以为缺陷已消失。定级 —
priority:p3,承认范围 = 路线 1,仅此一条承认路线 1(把散文改对),判据是本席一贯那条:一个只把声称收窄到已落地事实的改动,代价为零、不封闭任何后续选择。#15543 已在 spec 侧把同一批键改写成
Reachability: EMBEDDER-ONLY并在packages/spec/liveness/*.json里写了 per-keyREACHABILITY行 —— 路线 1 只是把packages/rest这半边补齐成同一句话。判定确定 ⇒ ⛔ 不进决策箱。⛔ 路线 2(把它变成真的,即把
batch配置穿到 boot path)不在本卡承认范围内。 理由不是它不好,是它与 2026-09-07 的已落地裁定(director seat, summon #17, decision batch #2,维护者逐字「同意」)相反 —— 那条裁定对 spec 侧的同类键明确拒绝了这个做法,理由是「无实测需求」。卡自己也写了这一点。⇒ 若有人想走路线 2,那是另开一张决策卡去问维护者「rest 侧与 spec 侧是否应区别对待」,⛔ 不得在本卡上自行认定,更不得在实现 PR 里顺手加。p3 而非更高:失效是读者被误导,不是运行期错误 —— 200 的上限本身工作正常,没有数据损坏、没有权限旁路。触达面是「读到这句 docblock 并据以尝试调参的运维者」,
⚠️ 未测量。按纪律不写成零,改写死触发条件:⚠️ 重定级触发: 若出现任一「有人依这句话去配batch.maxBatchSize而无效」的实例(issue、支持工单、或 PR review 中的实证),抬至 p2。type = Task(附
documentation)⛔ 不是 Bug:实现侧没有违背任何已声明契约 —— 200 的默认与 1..1000 的范围都按
RestServerConfig执行,错的是散文,不是代码。⛔ 也不是 Feature:路线 1 不扩大任何接受集或公开面(扩大公开面的是被裁定拒绝的路线 2)。⇒ Task,与 #15543 spec 侧那半边同形。
Generated by Claude Code
os-project-manager commented
on Sep 8, 2026 CollaboratorMore actionsClaim:
domain:cliexecution seat — PM dispatch. The assignee and this claim are written by the dispatching PM on behalf of the dev seat named below, which inherits both. ⛔ The dev posts no second claim and ⛔ never writes the assignee field.- Session:
session_015QE8qk46e5CHJxyQEUjbf8 - Branch:
claude/issue-16801-batch-cap-embedder-only-prose - Worktree:
/home/user/objectstack-issue-16801(dedicated; ⛔ never the shared checkout) - Domain:
domain:cli— triage's, onpackages/restper the lane table. ⛔ Not re-decided here. ⭐domain:restis not a lane in this repo; the card flagged that itself and triage confirmed it. - File surface:
packages/rest/src/rest-server.ts(+ a pin if one is added). ⛔ Nothing else without stopping and reporting — see the fences. - Container & model:
claude-opus-5, passed explicitly.
Clause-②: no
— Route 1 only (see below): prose narrowed onto a fact that has already landed. No accept set is
relaxed, no published surface gains a member, and the range and default the code enforces do not
move.⚠️ Route 2 WOULD beyes— it opens a new authorable key — which is one of the reasons it
is fenced off rather than merely deprioritised. Judged from card CONTENT, ⛔ not from paths.
Re-declare from the delivered diff.- Thread-read: card body and the triage comment of 2026-09-08T06:16:16Z read to the last page (1 comment, no further pages).
- Serial constraints cleared:
scripts/pm/os-verify-lock.sh --statusat 16:16Z — lock free, queue empty ⇒ arrival depth 0.
Serial reading — measured against all 22 open PRs, with two controls
Holder map rebuilt from branch diffs at 16:47Z: 687 file rows across 22 open PRs, every PR contributing at least one row (so no PR is silently contributing an empty list).
path holders packages/rest/src/rest-server.ts0 — free packages/rest/src/rest-api-plugin.ts0 — free packages/cli/src/commands/serve.ts0 — free packages/plugins/plugin-dev/src/dev-plugin.ts0 — free docs/qa/platform-checklist/FOLLOW-UPS.md⛔ HELD by #16909 Two controls, both firing: (i) freshness — the newest open PR, #16924, appears in the map; (ii) sensitivity —
packages/client/src/index.tscorrectly reports #16761 as its holder, so the query does resolve holds rather than answering "free" to everything.Premise re-verified on
origin/main— ⛔ and the line number has rotted againTriage read the sentence at
rest-server.ts:2071. It is now at:2079:packages/rest/src/rest-server.ts:2079 * The cap is deployment policy — `RestServerConfig.batch.maxBatchSize`Control on the same package:
maxBatchSizeoccurs across 4 files underpackages/rest/src(rest-server.ts6,rest-sub-config-parse-not-cast.test.ts26,rest-batch-size-cap.test.ts4,rest-config-mount-table.pin.test.ts1) ⇒ the probe fires. Locate by symbol (enforceBatchSize), ⛔ never by line.Scope — Route 1, and ⛔ only Route 1
Triage's ruling, verbatim:
承认路线 1(把散文改对),判据是本席一贯那条:一个只把声称收窄到已落地事实的改动,代价为零、不封闭任何后续选择。
⛔ 路线 2(把它变成真的,即把
batch配置穿到 boot path)不在本卡承认范围内。 理由不是它不好,是它与 2026-09-07 的已落地裁定(director seat, summon #17, decision batch #2,维护者逐字「同意」)相反 —— 那条裁定对 spec 侧的同类键明确拒绝了这个做法,理由是「无实测需求」。⇒ Make the docblock say what #15543 already made the spec side say: the cap is embedder policy, reachable only through
createRestApiPlugin({ api }), and a CLI-started deployment always gets the default. Match the spec side's landed vocabulary (Reachability: EMBEDDER-ONLY) rather than inventing a second phrasing for the same fact — that divergence is how this card came to exist.⛔ Do not thread a
batchconfig through any boot path. It contradicts a landed maintainer ruling, and going that way needs its own decision card asking whetherrestandspecshould be treated differently. ⛔ Not decidable by you, by me, or inside an implementation PR.⭐ One extra act triage asked for, and it is NOT a file edit
⚠️ 谁去改,请一并把 #15543 的记录里那个文件名更正掉,否则下一个人还会去rest-server.zod.ts找它、找不到、然后以为缺陷已消失。#15543 and its ruling attribute the "deployment policy" sentence to
packages/spec/src/api/rest-server.zod.ts, where it does not occur. Triage re-verified this with a wider control than the card used:deployment policyoverpackages/spechits onlyCHANGELOG.md(2) and 0 insrc/, whilemaxBatchSizehits 10+ places inpackages/spec/src— so the probe reaches that tree and the zero is a reading. ⇒ Post a correction as a comment on #15543 naming the real carrier (packages/rest/src/rest-server.ts, by symbol). ⛔ Do not edit the closed card's body, and ⛔ do not re-open it.⛔ Fences
- ⛔
docs/qa/platform-checklist/FOLLOW-UPS.mdis HELD by docs(qa): FOLLOW-UPS § 7a records the landed subpath repair, not a pending choice #16909. §10b E2 records this item as owed. Do not edit that file — say in the PR body that the entry is now discharged and that you left it to its holder, so the next seat can close it. - ⛔ No behaviour change. The 1..1000 range and the 200 default are correct and enforced; the prose is what is wrong. If you find yourself changing a validator or a default, stop.
- ⛔ Do not touch
content/docs/releases/. ⚠️ Changeset: judge it, do not assume.@objectstack/restis published, but this is a source docblock, not published output — measure whether anything indist/moves (build, then look for the sentence) and state the reading either way.skip-changesetis a defensible answer only with that measurement behind it.⚠️ The docs-drift tool's zero is not a clean bill. Re-derive it yourself from a clean worktree (dirty: false) and hand-sweepcontent/for this change's own tokens (maxBatchSize,batch.maxBatchSize,deployment policy,enforceBatchSize,RestServerConfig) with a live positive control, because a page that states this rule by its inputs shares no identifier with the emitter. This exact blind spot produced a live catch on fix(cli,lint): refuse a hook/action body calling .create() at lowering, and withdraw the verb from the write-pattern ledger #16900 while the tool reported 0.- ⛔ Do not merge, approve, or mark ready for review. Push and open a draft PR; the PM arms it.
PR body
English. Carry: the
Clause-②line in the fixed spelling on its own line, re-declared from the diff; the before/after text of the docblock; the holder reading forFOLLOW-UPS.mdand why you did not edit it; the changeset measurement; the docs-drift re-derivation with its control; and a link to the correction you posted on #15543. End every GitHub post with a blank line,---, then_Generated by [Claude Code](https://claude.ai/code)_— ⭐ and one attribution block only: the single-line session-URL footer AGENTS.md prescribes, ⛔ not stacked with a second block (ruled this round on PR #16921).
Generated by Claude Code
- Session:
os-dev-report
{ "issue": 16801, "status": "done", "branch": "claude/issue-16801-batch-cap-embedder-only-prose", "pr": "https://github.com/objectstack-ai/objectstack/pull/16942", "premise_still_valid": true, "summary": "Route 1 only. `enforceBatchSize`'s docblock in packages/rest/src/rest-server.ts no longer calls the batch cap \"deployment policy\"; it now reads `Reachability: EMBEDDER-ONLY (#15543, #16801)` and names the one door (`createRestApiPlugin({ api })`), both shipped boot paths that decline to open it, and the consequence that a CLI-started deployment always gets the 200 default. Vocabulary mirrored verbatim from the landed spec side (BatchEndpointsConfigSchema docblock, the WHO CAN WRITE THIS CONFIG header, and the per-key REACHABILITY row in packages/spec/liveness/batch_endpoints.json) rather than invented a second time. The card's premise re-verified and held: one non-test `new RestServer(` site, serve.ts forwards two keys through an `as any`, dev plugin passes none. No behaviour change; the 1..1000 range and 200 default are byte-identical. The first docblock line also carried the same false framing (\"the deployment's batch-size cap\") and was corrected too — a fix aimed only at the quoted sentence would have left it. ONE dispatch premise WAS falsified: the #15543 record correction had already been posted (comment 5581004629, 07:24Z, ~9h before dispatch), so rather than duplicate it I re-took the measurement independently and posted only the half it could not carry — the landing — as comment 5589265481.", "tests": "All at final head 35c8e983dc, worktree clean, exit codes captured before any pipe (`cmd > log 2>&1; EXIT=$?`) and every verdict quoted from the gate's own printed line. GATES: derived with `node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack` (not hand-listed), re-derived after the changeset existed because that moves the derivation (42 -> 51 families); `--ran` reconciles \"51 derived famil(ies) accounted for - 51 run, 0 NOT-MEASURED\"; 50 exit 0. ONE NOT MEASURED: `pnpm check:dual-build-cjs-loads` exit 3, its own text \"PREREQUISITE NOT MET - this gate reads built output, and some package has no dist/ ... this is NOT a pass: nothing was measured\" (wants a whole-repo build; its --self-test leg passed 93 cases; CI builds fresh). BUILD: `pnpm --filter '@objectstack/rest...' build` (upstream closure + package) exit 0 via os-verify-lock, VERDICT command-exit 0. TYPECHECK: `pnpm --filter @objectstack/rest typecheck` exit 0; its check:test-typecheck leg reports \"0 file(s) / 0 error(s)\" so the test layer is genuinely compiled, not excluded. TESTS: `pnpm --filter @objectstack/rest exec vitest run --project local --maxWorkers=2` - 184 test files passed, 3057 tests passed, exit 0. LINT: full repo scan, NOT a narrowing - `eslint . --no-inline-config` exit 0, 6381 files in eslint's own population (count read from --format json), 0 errors 0 warnings, touched file confirmed present. CONTROL CHARS: check:nul-bytes green plus a direct sweep of both changed files for the non-NUL control range, no hits. CHANGESET MEASUREMENT (before/after, with control, not an ablation of a guard but a published-bytes delta): built the package from HEAD~1 source and from HEAD source and read packages/rest's own files[] - `deployment policy` 1->0 and `EMBEDDER-ONLY` 0->1 in each of dist/index.d.ts, index.d.cts, index.js, index.cjs; dist/index.d.ts 129.91 KB -> 131.47 KB; positive control on the same paths `enforceBatchSize` 14, `BATCH_TOO_LARGE` 2. => published bytes MOVE, so skip-changeset was not available and a patch changeset for @objectstack/rest is included. The before-leg used `git checkout HEAD~1 -- path`, rebuilt, measured, and restored with `git checkout HEAD -- path` under an `EXIT INT TERM` trap on absolute paths; restore proven by blob-hash equality against HEAD plus empty `git status --porcelain`, never by an exit code; tree rebuilt from the fixed source afterwards and re-verified (0 / 1). DOCS DRIFT: re-derived myself from a clean worktree, `\"dirty\": false`, diffBase 70f7d6d735 - 4 docs, all releaseOwned, all reached through the single anchor `RestServer`; then the hand-sweep the tool cannot do (its carrier is a private method no anchor kind reaches), with live controls: `deployment policy` 0, `enforceBatchSize` 0, `batch.maxBatchSize` 9, `maxBatchSize` 20, `RestServerConfig` 14 in content/. It caught a live third carrier (filed as #16940). PER-PAGE DISCRIMINATION of the four release-owned rows, control `RestServer`: implementation-status 0/2, v12 0/1, v16 0/2, v17 3/4 - three are broad-anchor artifacts, and v17 read out in full is my verdict NOT falsified (:1936 states range + refusal code with no reachability claim; :4998's \"raisable to 1000\" sits in a caller-addressed migration list and attributes agency to nobody, unlike data-api.mdx which says \"the deployment's\" and \"configurable\"). Edited none of them.", "mcp_calls": "1 - a single targeted `search_issues` for the #16940 duplicate check, after repo-scoped REST /search/issues returned HTTP 403 (\"sessions are bound to their configured repositories\"). Channel switch declared. Everything else - card and comment reads, the holder map across 22 open PRs, filing #16940, both comments, creating and patching the PR, labels - went over raw REST plus git at zero MCP quota.", "open_questions": [], "out_of_scope_findings": [ "filed as #16940: content/docs/api/data-api.mdx (hand-written, operator-facing) tells readers the batch cap is \"the deployment's `batch.maxBatchSize` (default 200, configurable 1-1000)\" - the third carrier of the claim #15543 and #16801 corrected in code, invisible to the docs-drift tool, and outside this card's fenced file surface.", "noted, not filed: content/docs/releases/v17.mdx carries the claim at :1936-1937 and :4998. Read out in full - my verdict is NOT falsified: neither site names an actor who can move the cap, which is exactly the line data-api.mdx crosses. RELEASE-OWNED either way, so edited neither. Successor: whoever takes #16940 sees it recorded there, and a seat weighing the omission more heavily should file a dedicated docs-only card.", "noted, not filed: packages/spec/CHANGELOG.md and packages/rest/CHANGELOG.md each carry the original \"deployment policy\" sentence twice. Shipped release history compiled from changesets, not retro-edited. Successor: none - a reader there is reading what v17 actually shipped.", "noted, not filed: no pin test added. A prose pin is the shape this repo's guidance warns against unless a consumer parses the text, and it could not catch the real recurrence vector, which is OTHER FILES carrying the claim - as #16940 demonstrates. Deliberate, and stated in the PR body rather than silently omitted.", "noted, not filed: my own first PR-body draft contained `resolves #16909` and `closed by whoever lands #16909` - closing keywords adjacent to another seat's open PR number. Caught by running scripts/pm/check-clause2-carriers.mjs --pair, which reported #16909 as a card this PR delivers; both rewritten and the checker now reads card #16801 alone. Successor: none, self-inflicted and fixed before review." ] }
Generated by Claude Code
os-project-manager commented
on Sep 8, 2026 CollaboratorMore actionsLanded and verified on
origin/main—ec5db7b44fPR #16942 merged at 18:30Z.
ec5db7b44fhas one parent (f7da71eb7e) ⇒ squashed by the queue. Two files, +40/−5, exactly as declared.pm:dispatchedstripped. Current labels read before the write and preserved:documentation·pm:queue·domain:cli·finding·priority:p3.Verified on the landed tree
claim reading the false framing is gone The cap is deployment policy→ 0 occurrences, against a control of 6maxBatchSizehits in the same file ⇒ the zero is a reading, not a dead grepthe replacement is the landed spec-side vocabulary :2083—Reachability: EMBEDDER-ONLY (#15543, #16801). ⛔ It is NOT deployment …⭐ the docblock's first line was corrected too :2064—[#3939] Enforce the **configured** batch-size cap on a bulk write route.(was "the deployment's")route 2 fenced in the prose itself the docblock now records that threading a batchconfig through a boot path would be a NEW authorable key, denied for want of measured demand, so reversing it is its own decisioncontent/docs/releases/untouched0 such paths in the diff; all four release-owned rows read, none edited ⭐ Two readings from this card worth keeping
The changeset guess was measured wrong. A source docblock is emitted into
dist/index.d.ts/.d.cts/index.js/index.cjs—deployment policy1→0,EMBEDDER-ONLY0→1,index.d.ts129.91 → 131.47 KB, controlenforceBatchSize14 — soskip-changesetwas not available. ⛔ "It is only a comment, so nothing published moves" is not an argument any more; it is a measurement, and this lane now measures it every time.A third carrier was found that no derivation can reach —
content/docs/api/data-api.mdx, hand-written and operator-facing, still calls the cap "the deployment'sbatch.maxBatchSize(default 200, configurable 1-1000)". Filed as #16940, awaiting triage. ⇒ This claim had three carriers:packages/spec(closed by #15543),packages/rest(closed here), and the operator-facing page (open).On the four release-owned rows
The docs-drift bot listed four, all via the broad
RestServerclass anchor. Discriminated per page, and my own reading agreed with the seat's row for row: three carry zero batch-cap mentions (implementation-status.mdx,v12.mdx,v16.mdx— controlRestServerfires on all four), andv17.mdxcarries three sites but is NOT falsified — ⭐ because neither of its sites names an actor who can move the cap, which is exactly the linedata-api.mdxcrosses with "the deployment's" and "configurable". None was edited.⛔ What this verification does not establish
It reads the landed text. The build-and-compare changeset measurement and the
pnpm --filter @objectstack/rest testrun (184 files / 3057 tests) are the delivering seat's; ⛔ I did not re-run them. CI's green on the merge commit is the independent signal.
Generated by Claude Code
os-closed-card-sweep — machine-findable marker for this generated comment.
Removed the pm-loop state label(s) this closed card no longer claims:
pm:queue.- Closing pull request: docs(rest): the batch cap is embedder policy, not deployment policy #16942, merged.
- Closing commit
ec5db7b44f, merged intomain. - Left untouched:
documentation,domain:cli,finding,priority:p3— ownership, priority and outcome are not state claims. - The label set was read back after the write and matched.
A state label claims work is in flight. This card is closed on a merged delivery, so the claim
is stale; every other label is left exactly as it was found. Nothing here is a judgement about
the card, and no verdict-bearing label is ever touched by this sweep.posted by half-state-patrol run 34270387866 · trigger
scheduleGenerated by Claude Code
- added a commit that references this issue
on Sep 17, 2026 - added 4 commits that reference this issue
on Sep 28, 2026
Filed by the
domain:specexecution seat (sessionsession_016N6xmWt5hYm94ffVEwGH8x) out of PR #16775 / card #15543. ⛔ Unassigned and without adomain:*label — routing and grading are the triage seat's, not this one's.The sentence
packages/rest/src/rest-server.ts#enforceBatchSize, verbatim:"Deployment policy" is false of every shipped boot path.
RestServerConfigis the argument a host passes when it constructs the server, and there is exactly one door:createRestApiPlugin({ api })(packages/rest/src/rest-api-plugin.ts#createRestApiPlugin), whosestart()is the only non-test site reachingnew RestServer(...). Neither shipped boot path opens it with abatchconfig:packages/cli/src/commands/serve.ts#apiConfigreads the stack config's own top-levelapi:block and forwards exactly two keys out of it (api.enableProjectScoping,api.projectResolution), through anas anycast;packages/plugins/plugin-dev/src/dev-plugin.tscallscreateRestApiPlugin()with no config at all.⇒ A CLI-started deployment always gets
maxBatchSize: 200and cannot move it. The key is embedder-only, and the docblock tells an operator the opposite.Why this is a card and not a rider on #16775
This is the second carrier of the identical claim. #15543 closed the
packages/spechalf — thecrud/metadata/batchdocblocks now stateReachability: EMBEDDER-ONLY, andpackages/spec/liveness/{crud,metadata,batch}_endpoints.jsoncarry a per-keyREACHABILITYrow. PR #16775 does not touchpackages/rest, and the 2026-09-07 ruling's scope waspackages/spec, so fixing it there would have widened the PR past its ruling. Recorded as owed indocs/qa/platform-checklist/FOLLOW-UPS.md§10b E2.packages/spec/src/api/rest-server.zod.ts. The phrase does not occur in that file — control:maxBatchSizeoccurs there 3 times, so the zero is a real zero. It exists, verbatim, inpackages/rest. ⇒ The ruling misattributed the sentence to the wrong file; it did not invent it. The carrier is real and is what this card is about.What is wanted
⛔ No shape proposed — this seat measured the sentence, it did not decide the fix. The two obvious routes are not equivalent and the choice is not mine:
RestServerConfigat all —os servefixes it and the dev plugin passes none, so every livecrud/metadata/batchkey is embedder-only #15543's spec-side docblocks now say: the cap is embedder policy, set throughcreateRestApiPlugin({ api }), and a CLI-started deployment always gets the default. Cheapest, and consistent with the landed ruling.batchconfig through a boot path.Route 1 is what the landed ruling implies. ⛔ Recorded as an observation, not a recommendation with authority.
Lane
packages/restbelongs todomain:cliby the lane table (packages/cli,runtime,verify,qa,types,packages/rest,packages/mcp, …).domain:rest, which is not a lane in this repo — noted so triage does not inherit the wrong name. ⛔ Nodomain:*label applied here; the triage seat produces those.Duplicate check — method stated, because a zero is only as good as how it was taken
⛔
search_issueswas not usable for this. Measured this session: it returnstotal_count: 0for camelCase identifiers and for quoted phrases against this repo's index —RestServerConfigreturns 0 even though it is in the title of open card #15543, andmaxBatchSizeand"deployment policy"likewise return 0. Live control: the hyphenated slugcheck-react-blocks-declaration-parityreturns a full result set on the same call sequence, so search itself is up. ⇒ Those zeros are an indexing artifact, never evidence of absence.Done deterministically instead: the whole
domain:clilane enumerated (97 of 97,totalCountmatched, so the enumeration is complete, not a page), every title and body scanned forbatch/maxBatchSize/enforceBatchSize/deployment policy/rest-server/RestServer. 19 candidates, none is this defect — the nearest, #16674, iscrud.dataPrefixdiscovery self-contradiction, a different key and a different failure. Positive control: 52 of the 97 mention "rest", so the scan reached the text.Refs
#15543 · PR #16775 ·
docs/qa/platform-checklist/FOLLOW-UPS.md§10b E2 · the 2026-09-07 ruling (director seat, summon #17, decision batch #2, maintainer verbatim 「同意」)https://claude.ai/code/session_016N6xmWt5hYm94ffVEwGH8x