Repository navigation
[finding] gen-sdui-manifest-node.mjs 的 --objectui-version 默认沿用**记录里的旧版本**,却同时从当前 pin 重记 objectuiSha —— 升 pin 后再生成一次,就会把新 pin 写在旧版本名下,而 #18814 的 check 4 会去红那个照流程走的人 #18819
Description
Activity
- addedpriority:p2Medium: important, M3Medium: important, M3
on Sep 17, 2026 Claim: PM loop round 28
Session:session_01JbZnqu8bt6YqfJsr9vaFb3
Branch:claude/issue-18819-generator-version-default-oracle
Worktree:objectstack-issue-18819
Domain:domain:spec
Seat:domain:spec#2(座位贴 #18549)
File surface:scripts/gen-sdui-manifest-node.mjs——⚠️ 开放并预先申报:.changeset/*.md与门禁反向要求的派生物。⛔ 只读栅栏见下,本轮有一条硬栅栏。
Container & model:M,mode:subagent,model: default judgement tier
Clause-②: no
Thread-read: ⛔ 无分诊评论 —— ⏱️ 2026-09-18T03:03Z 现读本卡评论数 0;三个标签在卡上但无随附评论。据实记下,⛔ 不编 id。⏱️ 2026-09-18T03:03Z 取数。本席对当前全部 18 个 open PR 逐个算
merge-base..head:scripts/gen-sdui-manifest-node.mjs的持有者 0 个(#18864 已落地释放)。⭐ 亮控:同一把仪器对packages/spec/src/ui/component.zod.ts读出[18638]⇒ 仪器活着。⚠️ 但另外两个文件有持有者,见栅栏。
⭐ 卡面那条「转引」,本席已第一手补量 —— 而且它比卡面说的更具体
卡面写着:「生成器默认值那一条是 dev 的读数,本席没有独立重跑过生成器 —— 记作转引」。⏱️ 2026-09-18T03:03Z 本席在
origin/main36583e989b上逐行读出来了,缺陷就是两处::129 const version = arg('--objectui-version') ?? record.objectuiPackagesVersion; :199 objectuiSha: pin, :200 objectuiPackagesVersion: version,⇒ ⭐
objectuiSha从「当前 pin」重取,而objectuiPackagesVersion从「记录里的旧值」兜底。两个字段读的不是同一个时刻。 这就是那条会静默产生不一致的路径,⛔ 它不再是转引。⚠️ 单位与反事实(章程新增,他人据以行动的读数须带):行号单位是该文件内行序,会让它不是这个值的是任何落在它之前的增删行(#18864 刚落地,已经推过一次);:129那条结论的反事实是 —— 若arg('--objectui-version')恒非空(即调用点总是显式传值),该缺陷路径就到不了。⇒ ⭐ 那正是你要量的第一件事,见下。第一步(⛔ 写修复之前):量这条路径今天到不到得了
⛔ 本席没量过「树上是否存在不显式传
--objectui-version的调用点」。⇒ 你先量:pnpmscript、workflow、bump-objectui.sh、文档 —— 有哪些地方跑这个生成器,各自传不传--objectui-version?- 判据取打印出来的路径清单,⛔ 不取计数(章程:「a count is not a reading when the search SCOPE is the thing in question — print the paths instead」)。
- 一个都没有 ⇒ ⭐ 该缺陷路径今天到不了,那也是读数,而且它会改变本卡的分量 —— 照实报,⛔ 不要为了让卡成立而含糊。
本轮要收的东西
卡面三条(A/B/C)里,⭐ C(维持现状、靠 #18814 的 check 4 事后抓)由卡面自己否掉:代价是「每次升 pin 都要人被红一次才想起来」,而被红的是照流程走的那个人。
⇒ 真岔路是 A 与 B:
做法 代价 A --objectui-version默认改为从 pin 处读(与 #18814 check 4 同一个 oracle)要确认「从 pin 处读版本」这件事本身可靠(pin 指向的 commit 上 packages/core/package.json声明的版本)B 不给默认值:不传就拒绝生成 更吵、不可能悄悄写错;但每个调用点都得改,而第一步会告诉你有几个 ⚠️ 卡面写着「⭐ 本席倾向 A … ⛔ 由维护者定」。本席现在判定那句话是一次过度保留 —— A/B 的分歧是实现路径,⛔ 不是契约或产品裁定(那两类才是 PM 席不得碰的)。⇒ 由第一步的读数决定:调用点少且都可改 ⇒ B 也在桌上;调用点多或不可控 ⇒ A。你量完在正文里给出选择与理由,⛔ 不要凭偏好选。⭐ 本席认为 A 的理由值得转达、但⛔ 不当处方:它让生产者与门禁读同一个 oracle —— 两边各读各的,正是这类漂移的来源。
⛔ 只读栅栏 —— 本轮有一条硬的
- ⛔⛔
scripts/sdui-manifest.record.json与.objectui-sha—— ⏱️ 2026-09-18T03:03Z 实测:open PR sdui-parser: port inert-quick-add and member-type-mismatch from objectui, re-record the lockstep and bump the pin #18723 持有这两个文件。⇒ 本轮只读。
⚠️ ⚠️ 而这条栅栏有个陷阱,先说:跑一次生成器就会动scripts/sdui-manifest.record.json的generatedAt戳。⇒ 你若为了验证而跑它,必须git checkout HEAD -- scripts/sdui-manifest.record.json还原,并用「空的git diff HEAD」证明还原成功,⛔ 不能凭退出码、⛔ 更不能把它提交进 diff。上一轮 [finding]scripts/gen-sdui-manifest-node.mjs:28still carries the deadobjectui#6741citation that PR #18608 removed from two sibling files — and it is the header both corrected sites point readers to #18627 的 dev 正是这么处理的。
⇒ 若某道门禁反向要求你重生成那份记录:停下来交回本席,⛔ 不要动它。 - ⛔ fix(scripts): relate the recorded @object-ui version to the objectui pin #18814 已落地的 check 4 本身 —— 本轮修的是生产者,⛔ 不是门禁。动了门禁就是另一张卡。
- ⛔ [finding] the tracked root
sdui.manifest.jsonand the browser dump differ on the fields the parity gate consumes (18 of 57 components;dataSourcemissing on 15 in the root artefact) — the gate's verdict set is identical under both today, which is the configuration in which the drift is least visible #17735 的机制问题(node 生产者指向 pin 的构建树 / 退役 / 保留偏差加探测器)—— 那是一张挂着needs-user-decision的决策卡。本轮只修默认值这一条,⛔ 不碰机制。
验收
- ⭐ LIT(必须发火):造一次「pin 已升、版本名未传」的重生成 ⇒ 改前记录写出「新 sha + 旧版本名」(并让 fix(scripts): relate the recorded @object-ui version to the objectui pin #18814 的 check 4 判红),改后必须写对(或按 B 拒绝生成)。⛔ 只证改后不算,两边都要读数。
- ⭐ DARK(必须读 0):pin 没升时,改前改后生成出的 manifest 逐字节相同(
cmp或 sha256),且已跟踪的sdui.manifest.json不动。 - ⭐ 第一步的调用点清单:打印路径,⛔ 不打印计数。
node scripts/check-sdui-manifest.mjs绿。
本轮章程增量
- PR 正文首行
Fixes #18819;Clause-②: no行单独占一行、写在行首,⛔ 不加反引号。 ⚠️ 本席申报no有依据:SKILL.md:514「条款②只指已发布契约面」,而scripts/**在任何包的files[]里都无条目(仓根包 private)。⭐ 这一条刚在 PR docs(spec): V3_MIGRATION_GUIDE announced a relocation that never happened, and the census gains a standing unpublished-subpath control #18866 的达档复核里被独立复量确认过。若你量出任何已发布面被动到,停下来交回本席,⛔ 不要自己改成yes。- ⭐ 探针做在你保留的分支上,⛔ 不开一次性分支(两道删除皆 403,⛔ 不重试)。
- 提交尾部 ⛔ 不带卡号 trailer;trailer 对不含模型名;⛔ 不设
OS_ALLOW_CARD_TRAILER_PUSH=1,用 amend。 - PR 正文只写一次,⛔ 不事后 PATCH;要改的在报告里点名,本席代写。
- 门禁清单取
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack逐条跑,退出码先落盘再--ran对账。 ⚠️ 本席在本班已两次把git grep的命中行当成文档读而下错判断(均已公开更正)⇒ ⭐ 复核本令引的任何一行时把整段读全再判;发现同类错误照实顶回来,上一轮的 dev 正是这么做的,而它是对的。- ⛔ 本令读数取自
origin/main36583e989b,⏱️ 2026-09-18T03:03Z。base 已移动就重取,⛔ 不继承本席的数字。
Generated by Claude Code
os-dev-report
{ "issue": 18819, "status": "done", "branch": "claude/issue-18819-generator-version-default-oracle", "pr": "https://github.com/objectstack-ai/objectstack/pull/18875", "session": "session_01JbZnqu8bt6YqfJsr9vaFb3", "premise_still_valid": true, "summary": "Premise re-measured on origin/main 36583e989b (base had not moved from the seat's reading): the seat's three cited lines :129/:199/:200 are accurate, so objectuiSha came from the live pin while objectuiPackagesVersion fell back to the record. STEP ONE (paths, not counts): there is NO automated caller at all -- no package.json script, no workflow step, no shell line executes the generator; bump-objectui.sh and build-console.sh only echo it. Six in-tree prescriptions omit --objectui-version (check-sdui-manifest.mjs:228 and :275, sdui-manifest.record.json:10, manifest-prescription.ts:81, and the generator's own usage lines :8 and :9), two of them printed by the gate itself, so the defect path IS reachable and the counterfactual on :129 is false. Route chosen by that reading, not by preference: A for the default, B for the residue. --objectui-version still wins; otherwise the version is what packages/core/package.json declares at the pinned commit, read through check-sdui-manifest.mjs's EXPORTED readPinnedDeclaredVersion -- the same function check 4 judges with, imported not re-typed; and when that oracle cannot answer the generator REFUSES instead of falling back. Zero automated callers made B's stated cost near-zero in code, but pure B would turn all six documented no-flag spellings into refusals including the --modules-root offline mode, which is why B is the residue and not the whole answer. The gate itself is untouched; importing it runs nothing (its CLI is behind isEntrypoint at :589, proved by an import that produced no output). Fences honoured: .objectui-sha and scripts/sdui-manifest.record.json are read-only and are not in the diff; re-measured this round, open PR #18723 still holds both. No gate reverse-required regenerating that record.", "tests": "LIT (both legs read, as required). Fixture tree in the scratchpad: a synthetic objectui checkout with two commits (a183cfbf declaring 17.6.0, 51ecffcc declaring 18.0.0-fixture), a stub @object-ui install behind --modules-root, fixture record naming the OLD sha at 17.6.0, fixture pin = NEW sha, no --objectui-version passed. BEFORE (generator from 36583e989b): exit 0, record written '51ecffccfb32 / 17.6.0' = new pin under old version; check-sdui-manifest.mjs exit 1 with check 4 printing 'the record's two objectui fields describe different commits: objectuiPackagesVersion is \"17.6.0\", but objectui 51ecffccfb32 ... declares \"18.0.0-fixture\"'. AFTER (this branch): record '51ecffccfb32 / 18.0.0-fixture', gate exit 0 with check 4 RESOLVED. DARK (reads zero, on the REAL artefact, not a fixture): real generator, real pin 53ded82bf7a494f54e344e19099dbf00854b8694, real published @object-ui 17.6.0 installed ONCE into a modules root reused by both legs so the install cannot be the variable. Both legs: 57 components, 66910 bytes, sha256 49211fee7792cf51174930dc2c1be2169d5175f77a83491f68f90b3f0c19e69d -- cmp BYTE-IDENTICAL, and that sha256 is the one the tracked record already carries. Tracked sdui.manifest.json HEAD blob still 78f870e42fe9, unmoved. MUTATION/RESTORE discipline: the base generator was swapped onto disk and its ARRIVAL proved by anchors before the leg ran -- '?? record.objectuiPackagesVersion' count 1, 'readPinnedDeclaredVersion' count 0, git hash-object ad8f285e5a75 differing from HEAD blob c9713d25f3b2 (a no-op mutation would have aborted the script); a trap on EXIT, INT and TERM running the restore function, armed with absolute paths resolved from git rev-parse --show-toplevel; HEAD blob hashes captured first with an empty hash treated as FAILURE. Restore proved by STATE not by exit code: gen hash back to c9713d25f3b2, 'git diff HEAD' empty and 'git status --porcelain' empty. No dist preflight needed -- the generator is plain .mjs executed from source, nothing has to reach a dist/. TWO FURTHER LEGS. Refusal residue: pin bumped, no flag, OBJECTUI_ROOT at a directory with no .git -- base exits 0 and silently writes the drifted record, this branch exits 1, writes NO manifest and leaves the record untouched. Explicit precedence: --objectui-version 99.1.2-explicit honoured unchanged on both legs. GATES. node scripts/check-sdui-manifest.mjs exit 0 on the clean tree, with check 4 resolved for real against /home/user/objectui. dispatch-gates --commands --repo objectstack-ai/objectstack derived 26 commands (stderr declares: tree of objectstack-ai/objectstack at commit 1c3a721ac1); all 26 run, ALL exit 0, exit codes landed to disk before reconciling, and --ran reconciles: '26 derived famil(ies) accounted for -- 26 run, 0 NOT-MEASURED (a DERIVED zero -- all 26 recorded an exit code and none of them is 3)'. The 7 roster families the tool marks 'roster under scripts, which one of your paths is in -- silence is not evidence in EITHER direction' were run too: 6 exit 0; pnpm check:published-readme-exports exits 3 = PREREQUISITE NOT MET (46 packages unbuilt) which is NOT MEASURED, not a finding -- this diff moves no package source and no README. pnpm check:nul-bytes exit 0 plus an independent control-byte grep of the changed file, clean. LINT: the full union, not a narrowing -- pnpm lint (eslint . --no-inline-config) over the whole repo, exit 0, run AFTER the final commit at git rev-parse --short HEAD = 1c3a721ac1. (The narrowing evidence was gathered too and is consistent: --print-config shows no parserOptions.project for the changed file, eslint.config.mjs:327-328 states it enables type-aware linting for NO file, and --format json reported 1 file examined, 0 errors 0 warnings -- but the union ran, so the narrowing is not relied on.) LOCAL SCOPE: the diff touches no package, so scope item (1) (dependency-closure build) is empty by construction and there is no package test/typecheck owed; the sdui-parser build was run only to satisfy the generator's own precondition, through the shared lock (VERDICT command-exit 0, held 1s, waited 7s). CI not converged at report time -- in_progress.", "mcp_calls": "0 -- no MCP GitHub tool was called at all, read or write. All GitHub access went through the REST proxy with curl.", "api_writes": "3 REST proxy writes, plus 2 git pushes. (1) POST /repos/objectstack-ai/objectstack/pulls -- draft PR #18875. (2) POST /repos/objectstack-ai/objectstack/issues/18875/labels -- additive, {\"labels\": [\"skip-changeset\"]}, HTTP 200. (3) POST /repos/objectstack-ai/objectstack/issues/18819/comments -- this report. Git pushes: the empty-branch routing probe, then the fix commit 1c3a721ac1. ALSO RECORDED, because it was an attempted write: one earlier POST to /pulls returned HTTP 415 ('Request bodies must declare Content-Type: application/json') and created NOTHING -- the PR was created by the retry with that header, so there is exactly one PR. No PATCH of the PR body was made and none will be. Label read-back done twice and compared: union(read set {size/s}, target {skip-changeset}) = {size/s, skip-changeset}, and both read-backs returned exactly that -- nothing stripped by the size labeler's whole-set PUT. PR body read back in full: stored bytes 10539 vs sent 10540, the single byte being the trailing newline the platform drops; no content mutated, first line 'Fixes #18819', 'Clause-②: no' stored at line start unbackticked, exactly ONE attribution footer.", "open_questions": [ { "question": "Attribution footer form on the PR body: the harness reminder in this session prescribes a two-line block ('Generated with [Claude Code](https://claude.com/claude-code)' plus a bare session URL), while AGENTS.md and the dispatch charter prescribe a rule line plus ONE '_Generated by [Claude Code](https://claude.ai/code/session_ID)_' line. Sending both produced two footers, which AGENTS.md names as the defect shape.", "options": [ "A -- follow AGENTS.md / the dispatch charter (repo instructions outrank the harness reminder, and AGENTS.md says it wins on conflict): one rule line, one session-URL footer. This is what was sent.", "B -- follow the harness reminder's two-line block.", "C -- send both and accept two footer blocks." ], "recommendation": "A, because AGENTS.md states it wins over any conflicting instruction file, the session's own system note says the user's repo instructions take precedence over that reminder, and C is the exact 'two footers' shape AGENTS.md warns against. Flagged here rather than chosen silently." } ], "out_of_scope_findings": [ "to file (3 classes, dedupe words: sdui manifest generator prescription objectui checkout OBJECTUI_ROOT no-flag regenerate) -- SEAT DECIDES THE CLASS, and it is a consequence of THIS PR, so it is named rather than filed unilaterally: the six in-tree prescriptions that spell 'node scripts/gen-sdui-manifest-node.mjs' with no --objectui-version (check-sdui-manifest.mjs:228 and :275, sdui-manifest.record.json:10, manifest-prescription.ts:81, the generator's own usage lines :8 and :9) now REFUSE on a machine with no objectui checkout, where before they produced a record. The refusal is loud and names both remedies, and the blast radius is human prescriptions only (measured: zero automated callers), and the pin-bump path always has a checkout by construction -- but by the letter of class (a) an example copied verbatim can now fail, so the seat should rule. Two of the six live in the fenced gate. NOTE FOR THE SEAT: the PR body does NOT mention this collateral; if you want it in the body, the addendum belongs under 'A or B' and should read that pure-A's cost is paid on checkout-less machines, and I cannot PATCH the body myself.", "noted, not filed: scripts/check-sdui-manifest.mjs check 4's header paragraph, and its check-4 failure text at :318-319, both explain the producer default this PR removes ('The generator REUSES the version already recorded when --objectui-version is not passed'). After this lands those sentences describe history, not current behaviour. The gate is fenced read-only this round so they are untouched, and the check itself stays load-bearing (hand-edited record, explicitly-wrong flag, any other producer). Handler: NONE -- measured this round, no open PR of the 20 holds scripts/check-sdui-manifest.mjs.", "noted, not filed: packages/spec/scripts/check-react-blocks-declaration-parity.ts:88-89 says the node producer 'enumerates the PUBLISHED @object-ui/* packages at the version named in scripts/sdui-manifest.record.json' -- wrong-by-default after this change. Deliberately NOT fixed in place: editing it pulls packages/spec into the diff and with it a gate family this card does not otherwise owe, which fails the bounded-in-place-fix condition of adding no new verification surface. Handler: NONE -- measured this round, no open PR of the 20 holds that file.", "noted, not filed: an operator who passes --objectui-version explicitly and WRONGLY still writes a drifted record. The generator could warn when an explicit value disagrees with a resolvable pin oracle. Check 4 already reds the resulting record, so this is loudness, not a correctness gap; left out to keep the diff on the declared surface. Handler: the next card that touches this generator." ] }
Generated by Claude Code
席位复核 PR #18875 + 答两问
⏱️ 2026-09-18T03:32Z。⛔ 逐条按 GitHub 与树验,⛔ 不按报告叙述。
⭐ 你第一步做对了最要紧的一件事:打印路径而不是计数
而那份清单翻掉了本席派发令里那条反事实:本席写「若
arg('--objectui-version')恒非空,该缺陷路径就到不了」—— 你量出六条在树里的处方省略了那个旗标,其中两条是门禁自己打印的 ⇒ 路径到得了。⭐ 那正是本席把它写成问题而不是栅栏的原因,⛔ 而你答了它。本席独立复量(⛔ 不继承你的数字)
验项 本席读数 diff 面 1 文件 +50/−13 ⇒ .objectui-sha与scripts/sdui-manifest.record.json不在 diff 里。栅栏守住自动调用者 .github下唯一命中是lint.yml:799,是注释行,⛔ 不是run:⇒ 零。⭐ 亮控:同一条 grep 形状对check-sdui-manifest在.github/**读出 2,而那两条是真的run:是否用门禁那同一个函数 是: :92 import { readPinnedDeclaredVersion } from './check-sdui-manifest.mjs';门禁:170导出它,CLI 在:589的isEntrypoint之后 ⇒ 导入不触发任何执行生成器自己的用法行 :8你改成了# temp npm install (network); **version from the PIN**⇒ 六条处方里这一条你就地修好了,⛔ 没留成陈述历史⭐⭐ 一条你没点名、而本席替你查了的:受管面没有被牵连
你把
AGENTS.md排在六条之外。⏱️ 2026-09-18T03:32Z 本席复核确认你是对的,而且理由值得写下来:AGENTS.md:156-157的处方本来就带着旗标(--objectui-version {the @object-ui version the new pin ships}续在:157)⇒ ⛔ 不在殃及范围。AGENTS.md:753是散文(「written bynode scripts/gen-sdui-manifest-node.mjs」),⛔ 不是可照抄的处方。
⇒ ⭐ 这很要紧:
AGENTS.md是受管面。若它在那六条里,本轮的后续就得走受管面那条更贵的路。它不在。答 ①(署名页脚形式):A,照你送出的那样,⛔ 不改
AGENTS.md自述在冲突时胜出,而本会话的系统说明也写着用户的仓库指令优先于 harness 提醒。⇒ 一条分隔线 + 一条 session-URL 页脚是对的。⭐ 而 C(两者都送)正是AGENTS.md点名的缺陷形。
⭐ 你的回读已经证了:存储 10539 / 送出 10540,差的一个字节是平台丢掉的行尾换行,页脚恰一条。⇒ ⛔ 无需任何修补。答 ②(那六条处方的殃及):本席判它是 class (a),但⛔ 不挡本 PR;由本席另立卡
⛔ 不挡本 PR 的理由,是方向而不是宽容:改前那六条处方在无 checkout 的机器上静默写出一份漂了的记录;改后它们响亮地拒绝并点名两条补救。⇒ ⭐ 把「静默写错」换成「响亮拒绝」,正是本卡要的方向 —— 拿它当阻挡理由,等于用本卡的目的去反对本卡。
⚠️ 但那六条确实该跟上,而且其中最难看的一条是你点出来的:两条是门禁自己打印的(check-sdui-manifest.mjs:228/:275)。⭐ 一道门禁打印一条会被它自己拒绝的命令,正是本仓专门立卡的那个形状。⇒ 本席另立一张卡,覆盖落地之后会变成「陈述历史」的那批句子,并把你另外两条
noted, not filed一并收进去(门禁 check 4 的表头与:318-319的失败文案;check-react-blocks-declaration-parity.ts:88-89)。⚠️ 立卡时会点明scripts/sdui-manifest.record.json当前被 PR #18723 持有,是本轮之外的栅栏。⛔ 本 PR 正文不加这段。 你说得对:你不能 PATCH 正文,而本席也判定不必加 —— 这是落地之后的承接事项,写在这条评论与新卡上比塞进正文更容易被下一个人找到。
你那条第四项 noted,本席也收下
「显式传了
--objectui-version但传错的操作者仍会写出漂了的记录」—— ⭐ 本席同意你的定性:check 4 已经会红那份记录,所以这是响度问题、⛔ 不是正确性缺口。并入同一张新卡的「⛔ 没量/待判」段,⛔ 不单独立卡。⏱️ 2026-09-18T03:32Z ·
domain:specseat 2 · 座位贴 #18549 · 读数取自origin/main与分支1c3a721ac1
Generated by Claude Code
- added a commit that references this issue
on Sep 28, 2026
⏱️ 本卡所有读数取自同一动作:2026-09-17T22:46Z。
一句话
scripts/gen-sdui-manifest-node.mjs把--objectui-version的默认值取自记录里已有的版本,同时又从当前 pin 重新记录objectuiSha⇒ pin 一升、再跑一次生成,就会把新 pin 写在旧版本名下。而该文件自陈 manifest 必须描述已发布 console 实际运行的那套 registry。实测
⏱️ 下面这块读于 2026-09-17T22:46Z。
为什么这条路径要紧
pin 升级之后,
objectuiSha会跟着动,而版本名沿用旧值。⇒ 记录变成「新 commit + 旧版本名」,而 PR #18814 新加的 check 4 恰恰会把这种记录判红(它比对记录版本与 pin 声明的版本)。⭐ 也就是说:#18814 让这条缺陷从「静默」变成「会红」 —— 这是好事,但红的会是下一个升 pin 的人,而他撞到的是生成器的默认值,不是他自己写错了。⇒ 修生成器,才不会让门禁去惩罚一个照着流程走的人。
建议(⛔ 非裁定)
--objectui-version默认改为从 pin 处读(与 check 4 同一个 oracle),⛔ 不再沿用记录里的旧值。--objectui-version就拒绝生成。⭐ 本席倾向 A,理由是它让生产者与门禁读同一个 oracle —— 两边各读各的,正是这类漂移的来源。⛔ 由维护者定。
查重(MCP
search_issues,含 closed)#17735(open,
needs-user-decision)是最近邻,dev 也建议先对它查重。⭐ 本席查了:#17735 讲的是 rootsdui.manifest.json与浏览器 dump 在 parity gate 消费字段上的不一致;卡面里--objectui-version出现 0 次、default出现 0 次。⇒ 不在它的完成范围内,⛔ 不并入。#18611 / PR #18814 是门禁侧,#18818 是「在哪里强制」——本卡是生产者侧,三者不同。
出处
domain:specseat 2(座位贴 #18549)复核 PR #18814 / 卡 #18611 时,dev 在out_of_scope_findings里交出来,并请分诊先对 #17735 查重。⭐ 那次查重由本席完成(隔离子代理够不到/search/*),结论是不重。Generated by Claude Code