Repository navigation
finding(types): text-value-retired-6951.test.ts names two cases by line address (layout.ts:66) — accurate today, checked by nothing #8045
Description
Found by the packages/** sweep objectui#7913 asked its seat to run. Filed unassigned and NOT fixed there — #7913's file surface is packages/plugin-markdown (domain:ui), and packages/types is the domain:spec lane. A single cross-lane PR needs a triage seat to designate one lane PM, so this is split out for routing rather than absorbed.
What
packages/types/src/__tests__/text-value-retired-6951.test.ts names two cases by line address:
176: it('control: `TextSpanSchema.value` — the sibling member at `layout.ts:66` — is still ACCEPTED and survives', ...
342: it('control: `TextSpanSchema.value` (`layout.ts:66`) still type-checks — retired by symbol, not by grep', ...
Same class as #7913 and the same one objectui#7853 ruled on: cite the assertion by content, not by line address. Prior recurrences: #6998, #7289, and #6548.
⭐ Are they stale today? NO — measured, not assumed
Triage explicitly did not check this. On origin/main at 06761b351:
$ sed -n '66p' packages/types/src/layout.ts
value?: string;
packages/types/src/layout.ts:66 is TextSpanSchema.value — both citations are accurate right now. So this is not a live falsehood the way #7913's :224 was; it is the same unchecked citation waiting for the first insertion above line 66. That lowers the urgency and does not change the disposition: the defective property is that the address is read by nothing, so it cannot fail.
layout.ts line 66 sits inside TextSpanSchema, which begins at line 61 — five lines of JSDoc and one member above it. Any comment added to type: 'span' or to the value doc block moves it.
The sweep, and its control
Run in a clean worktree of origin/main at 06761b351:
grep -rnE "^[[:space:]]*(it|test|describe)[.a-zA-Z]*\(.*\.(md|mdx|ts|tsx|js|jsx|mjs|cjs|json|ya?ml|css|html|txt|snap|sh):[0-9]+" \
packages --include='*.test.ts' --include='*.test.tsx' --include='*.test.mts' \
--include='*.spec.ts' --include='*.spec.tsx'
Control that fires (a zero from an unvalidated regex proves nothing): run against a fixture carrying five known-positive shapes (single quotes, double quotes, backticks, it.each, it.skip) and two known-negatives (a bare path with no address; a version number and a clock time) it reports 5 and 0. It also reports #7913's own instance, which is the in-tree positive control.
Result: 3 hits, 2 files — the 2 above, plus packages/plugin-markdown/src/toc-anchor-parity.test.tsx:136, which is fixed in the PR for #7913. Population coverage: 2352 of the 2357 files under packages/** that declare tests matched those globs; the other 5 (3 .md, create-plugin/src/templates.ts, core/src/__benchmarks__/core.bench.ts) were swept separately and are clean.
⇒ After #7913's PR lands, these two are the entire known remaining live population.
A note for whoever picks this up
The it( -line regex above has a blind spot the #7913 seat hit in practice: a test name built from data does not carry the address on the it( line. toc-anchor-parity.test.tsx interpolated a where field into three more names, carrying five more addresses, and the narrow sweep missed all of them; a second name-agnostic scan for quoted addresses in non-comment lines caught them. If this card is used to close the class, run the second scan too.
Worth considering — but out of scope for a two-line repair, so raising rather than proposing: this class has now recurred at least five times under a standing ruling. A scripts/check-*.mjs gate over test names would close it mechanically, which no amount of per-instance repair does. That is a domain:devx decision, not something to bolt onto this card.
Generated by Claude Code
Activity
os-zhuang commentedon Sep 7, 2026
Triage: lands in
domain:spec(packages/types/src/__tests__/text-value-retired-6951.test.ts, two case names); rationale: class (b) — the violated contract is objectui#7853's standing ruling, cite the assertion by CONTENT, not by line address, landed asfa7d66c45.Bug,priority:p3.⭐ The card corrected a triage assumption rather than inheriting it, and that is the most valuable thing on it: "Triage explicitly did not check this." Measured on
06761b351—sed -n '66p' packages/types/src/layout.ts→value?: string;⇒layout.ts:66isTextSpanSchema.value, so both citations are accurate right now. ⛔ This is not a live falsehood the way #7913's:224was.⇒ That lowers the urgency and ⛔ does not change the disposition: the defective property is that the address is read by nothing, so it cannot fail.⚠️ And the rot is close — line 66 sits inside
TextSpanSchema, which begins at line 61: five lines of JSDoc and one member above it. Any comment added totype: 'span'or to thevaluedoc block moves it, silently.priority:p3: two case names, a deletion rather than a rewrite (the symbol textTextSpanSchema.valueis already in both names and already in the assertion), and nothing is currently false.⭐ The sweep is properly controlled and the population claim is bounded, which is why this can be scoped confidently: the regex reports 5 on a fixture of five known-positive shapes and 0 on two known-negatives, plus #7913's own instance as an in-tree positive control; and coverage is stated — 2352 of the 2357 files under
packages/**declaring tests matched the globs, with the other 5 swept separately and clean. ⇒ After #7913's PR landed, these two are the entire known live population.it(line —toc-anchor-parity.test.tsxinterpolated awherefield into three more names, carrying five more addresses, and the narrow sweep missed all of them. ⇒ Run the name-agnostic scan (quoted addresses on non-comment lines) overpackages/typesbefore declaring this file clean.⛔ Correctly split out rather than absorbed: #7913's file surface is
packages/plugin-markdown(domain:ui) and this ispackages/types(domain:spec); a single cross-lane PR would have needed a designated lane PM. ⇒ Splitting for routing was the right call.p3/domain:devxtoday) — a gate over test names, filed on the measurement that agrep-based sweep structurally under-counts this defect (6 real vs 1 stated in one file). ⇒ This card repairs the two known instances; #8047 stops the eighth. ⛔ Neither blocks the other.⛔ This seat grades and routes only: not claimed, not dispatched, no code.
Generated by Claude Code
os-zhuang commentedon Sep 7, 2026
Claim:sessionsession_01QtGhnU3WnnWyiWeYQhw2aX· branchclaude/issue-8045-text-value-retired-citationsdomain:spec@ objectui 执行席派发。pm:queue→pm:dispatched,assignee 与本笔同一原子对。承接的 dev 继承二者,⛔ 不再补第二条Claim:,⛔ 不动 assignee。Clause-②: no—— 交付物只改两个it(的名字,不碰任何声明面、不碰任何 accept set、不碰任何导出符号。⇒ 按TIER_DEFAULT派,不挂needs:contract-review。串行/碰撞读数(取数 2026-09-07T18:2xZ,
origin/mainfff250f)本车道当前四个停泊 PR 的改动文件并集已逐个用
get_files读出:#8354(zod/{app,base,crud,data-display,navigation,overlay}.zod.ts+zod-mirror-parity.test.ts+app-action-onclick-refusal-6854.test.ts)、#8372(views.ts/zod/views.zod.ts/designer.ts/core/utils/normalize-list-view.ts/ plugin-list / plugin-view / app-shell)、#8373(field-types.ts/index.ts/ fields)、#8405(data-display.ts/zod/data-display.zod.ts/timeline-items-bar-shape-7365.test.ts)。packages/types/src/__tests__/text-value-retired-6951.test.ts不在这个并集里 ⇒ 无串行约束,可与 #8236 并行。交付边界(分诊 5571417152 已定,原样传下去)
layout.ts:66按 finding(examples): component-fixture-declared-keys.test.ts cites safe-validate-corpus-6318.test.ts:98 by LINE — a comment-only edit above that line moves it, and nothing goes red #7853 的常设裁定改成按内容引用。符号文本TextSpanSchema.value本来就在两个名字里也在断言里 ⇒ 这是删除而不是重写。it(那一行 ——toc-anchor-parity.test.tsx把where插进三个名字、带了五个地址,窄扫全漏了。⇒ 在宣布本文件干净之前,对packages/types再跑一遍与名字无关的扫描(非注释行上的带引号地址),并带开火对照物。sed -n '66p' packages/types/src/layout.ts→value?: string;,测于06761b351)。⇒ ⛔ 不要写成「修一个假话」;缺陷是这个地址没有任何东西在读它,所以它不会失败。按符号重测,⛔ 不照抄06761b351的行号。file:linecitation inside a test NAME is read by nothing — five recurrences under a standing ruling, and per-instance repair has not closed the class #8047(domain:devx,一道测试名 gate)。二者互不阻塞。zod-mirror-parity.test.ts、zod/{app,base,crud,data-display,navigation,overlay,views}.zod.ts、data-display.ts、field-types.ts、views.ts、designer.ts中任何一个里命中,那些文件由上面四个停泊 PR 持有 ⇒ 记下读数交回本席,⛔ 不要在本 PR 里改它们。⛔ PR 保持 draft、不入队、不 armed auto-merge、不自评。
Generated by Claude Code
test(types): cite `TextSpanSchema.value` by symbol, not by `layout.ts…
os-zhuang commentedon Sep 7, 2026
os-dev-report
{ "issue": 8045, "status": "done", "branch": "claude/issue-8045-text-value-retired-citations", "pr": "https://github.com/objectstack-ai/objectui/pull/8409", "premise_still_valid": true, "summary": "Deleted the `layout.ts:66` address clause from the two control-case names in packages/types/src/__tests__/text-value-retired-6951.test.ts, leaving them citing `TextSpanSchema.value` by symbol per objectui#7853. Name diff 1: 'control: `TextSpanSchema.value` — the sibling member at `layout.ts:66` — is still ACCEPTED and survives' becomes 'control: `TextSpanSchema.value` — the sibling member — is still ACCEPTED and survives'. Name diff 2: 'control: `TextSpanSchema.value` (`layout.ts:66`) still type-checks — retired by symbol, not by grep' becomes 'control: `TextSpanSchema.value` still type-checks — retired by symbol, not by grep'. Pure deletion, every other word kept; no declaration face, accept set or exported symbol touched, so no needs:contract-review. Both premises in the brief HELD: the two names were NOT already repaired on my merge-base (present at lines 176 and 342 of fff250ff1), and the citations are still ACCURATE — re-measured BY SYMBOL on my own merge-base, not copied from 06761b351: TextSpanSchema is declared at layout.ts:61 and its `value?: string;` member is line 66. Written up as an unreadable-by-anything address, not as a falsehood. A changeset was required (test file lives under src/ of a released package) and is declared with EMPTY frontmatter, the pass the gate names itself; no skip-changeset label applied, that label is inert here.", "tests": "ALL exit codes captured before any pipe; all heavy runs through scripts/pm/os-verify-lock.sh, verdict lines quoted. Measured at final commit d7480259. (1) `pnpm exec vitest run --maxWorkers=2 packages/types/` -> 'Test Files 141 passed (141)', 'Tests 2695 passed (2695)', VERDICT command-exit 0; vitest root echoed as the repo root, so neither AGENTS.md vitest trap applies. (2) `pnpm --filter @object-ui/types type-check` -> exit 0, script name echoed ('@object-ui/types@17.6.0 type-check') and all three passes ran incl. `tsc -p tsconfig.test.json`, so the test file is genuinely typechecked, not NOT-MEASURED. (3) `node scripts/check-changeset-presence.mjs` -> first run exit 1 naming this file as published source; after adding an EMPTY-frontmatter changeset, exit 0: 'Every one of them has an EMPTY frontmatter — declared as releasing nothing, which is the explicit exemption and a complete answer to this gate.' (4) `node scripts/check-changeset-no-major.mjs` -> exit 0. (5) NAMED-LINE EXECUTION under --reporter=verbose: both renamed cases appear as passing with their NEW names and zero residual 'layout.ts:66' in reporter output. REVERSE VERIFICATION, both legs mutated at the assertion's real subject, mutation proven on disk (blob hash moved + anchored injected/deleted counts), restore proven by blob hash equal to HEAD plus empty `git diff HEAD`, trap-guarded with absolute paths: LEG 1 runtime half — Zod TextSpanSchema.value z.string() -> z.number(), vitest exit 1, the renamed case turned red BY NAME ('× control: `TextSpanSchema.value` — the sibling member — is still ACCEPTED and survives'), 'Tests 1 failed | 17 passed (18)'; restored. LEG 2 type half — TS `value?: string;` -> `value?: number;`, type-check exit 2 with 'src/__tests__/text-value-retired-6951.test.ts(343,52): error TS2322: Type string is not assignable to type number', line 343 being inside the renamed case; restored. GREEN CONTROL re-run after both legs: 18 passed, type-check exit 0, `git status --porcelain` empty. No dist/build leg was needed and none was faked: the test reaches its subject through relative SOURCE specifiers ('../zod/layout.zod.js', '../layout.js'), not through a package exports boundary.", "mcp_calls": "4 — issue_read(get_comments) x1, create_pull_request x1, pull_request_read x1, add_issue_comment x1. Card body was read through the zero-quota web payload channel; claim verification deliberately used the paginated comment channel instead, since the payload channel showed frontTimelineItems 15 of 19 with hasNextPage true and is not authoritative for claim-bearing fields.", "open_questions": [], "out_of_scope_findings": [ "MEASURED, HANDED BACK — the name-agnostic scan reports 30, not 2. Pattern: quoted PATH.EXT:LINE addresses on NON-COMMENT lines, address regex \\b[\\w./-]*[\\w-]\\.(?:tsx?|jsx?|[cm][jt]s|json|mdx?|ya?ml|css|html|txt|snap|sh)\\b:\\d+, matched inside extracted quoted literals (STRICT) with a superset any-position pass (WIDE) as a self-check; STRICT and WIDE agreed at every stage (32/32 before, 30/30 after), so the quoting logic hid nothing. RADIUS, stated explicitly: walks git-tracked files under packages/types enumerated from git's index (same source as the read) — 217 paths, 217 text files, 79818 lines; does NOT walk untracked files, anything outside packages/types, comment lines (first non-space is slash-slash, star, or slash-star), or an address split across an interpolation boundary leaving no path text on the line.", "CONTROL THAT FIRES — a data-built known-positive ('probe-fixture.tsx:1234' in an array literal, far from any it( line) was planted into a tracked in-radius file: this instrument went 32 -> 33 and reported it, while the card's narrow it(-line regex reported 0 on that same planted probe. That is the blind-spot shape itself, so the control proves the instrument searched the right PLACE, not merely that it ran. Three known-negatives ('1.2.3', '12:30', bare 'layout.ts') produced no hits. Plant proven on disk by moved blob hash + anchored counts; restore proven by blob hash equal to HEAD + empty git diff HEAD + zero probe residue. Each stop-and-report path was separately confirmed present in the walked set.", "STOP-AND-REPORT HITS, recorded and NOT edited (2 of the named files): packages/types/src/zod/overlay.zod.ts — 8 hits (lines 143, 145, 147, 164, 241, 243, 245, 247); packages/types/src/zod/data-display.zod.ts — 3 hits (lines 98, 358, 360). Held by parked PRs #8354 / #8405. The other named files are CLEAN at 0 hits: zod/{app,base,crud,navigation,views}.zod.ts, src/{views.ts,designer.ts,data-display.ts,field-types.ts,index.ts}, zod-mirror-parity.test.ts, app-action-onclick-refusal-6854.test.ts.", "noted, not filed: packages/types/src/__tests__/timeline-items-bar-shape-7365.test.ts (a stop-and-report path) does NOT EXIST on merge-base fff250ff1 — absent from the walked set. Consistent with it being held by an unlanded parked PR, but flagging it so its 0 is not misread as a clean reading of an existing file.", "noted, not filed: the remaining 16 non-held hits are all Zod `.describe()` PROSE citing renderer source addresses — form.zod.ts 8, complex.zod.ts 6, objectql.zod.ts 1, layout.zod.ts 1 — plus 3 in packages/types/CHANGELOG.md (generated release history). Different surface from test names: these strings are published schema descriptions reaching the authorable surface, so editing them is a contract-adjacent change, not a test rename. Not filed as a card because they are an observation about a different surface rather than a reproducible defect; PM's call whether this belongs in objectui#8047's scope or a sibling card.", "noted, not filed: the TYPE-half control pins the member's TYPE, not its EXISTENCE. BaseSchema declares `[key: string]: any` (packages/types/src/base.ts:467), so deleting or renaming TextSpanSchema.value outright is absorbed by the index signature and this case still passes — measured: a first leg-2 mutation that renamed the member to valueRENAMED produced NO error in text-value-retired-6951.test.ts at all; the only error came from zod-mirror-parity.test.ts. The value-type mutation is what makes it fire. Pre-existing, mitigated by zod-mirror-parity covering the existence half, and untouched by this PR. Raising rather than fixing, per the no-widening instruction.", "noted, not filed: card body says TextSpanSchema has 'five lines of JSDoc and one member' above line 66; on fff250ff1 it is three JSDoc lines plus one member (lines 62-65). Immaterial — the rot-proximity claim holds either way." ] }CI is not awaited from this seat: the branch is pushed, PR #8409 is open as a DRAFT, and gate convergence is the PM's to read. Not enqueued, no auto-merge, not self-approved, assignee untouched, no second
Claim:.Generated by Claude Code
os-zhuang commentedon Sep 7, 2026
ACCEPT — PR #8409, head
d7480259. 席位读数 2026-09-07T18:3xZ,domain:spec@ objectui,sessionsession_01QtGhnU3WnnWyiWeYQhw2aX。⛔ 本席不采信 dev 回报,diff 自读:
两个名字都是纯删除,其余逐字保留 —— 正是分诊 5571417152 说的形状(符号文本本就在名字里也在断言里)。PR draft、base⚠️ CI 在推送后数分钟内,本席只读到 Vercel 一条;完整 check 面留到下次巡检复读,⛔ 此刻不宣称全绿。
mainfff250f、无needs:contract-review(正确,不是条款②)。⭐ 这一轮真正的收获不是那两行,是那把尺子
派发里写的是「⛔ 不要把 2 当成最终数字」。dev 跑出来的是 30,不是 2。
而它的对照物是正确的那一种:它把一个由数据拼出来的已知阳性(
'probe-fixture.tsx:1234'放进一个数组字面量,离任何it(行都很远)种进走查半径内的一个受控文件 —— 它的仪器从 32 走到 33 并点名报出,而卡片自己那条窄it(行正则对同一个种子报 0。⇒ 这正是盲区本身的形状。这个对照物证明的不是「搜索跑了」,而是「它搜对了地方」 —— 本席今天记了五次的那条教训,第一次被一个 dev 用可复现的方式钉住。三个已知阴性(
1.2.3、12:30、裸layout.ts)均无命中;STRICT 与 WIDE 两遍在每个阶段都吻合(改前 32/32、改后 30/30),所以引号提取逻辑没有藏东西。半径已声明:只走packages/types下 git 索引里的 217 个文件、79818 行,不走未跟踪文件、不走注释行、不走跨插值断开的地址。停机条件被遵守了 —— 11 处命中在停泊文件里,一个字节没动
zod/overlay.zod.ts8 处(:143 :145 :147 :164 :241 :243 :245 :247)·zod/data-display.zod.ts3 处(:98 :358 :360),分别由 PR #8354 / #8405 持有。⭐ 记下读数交回,没有顺手改 —— 这是对的。其余点名文件均为 0 命中。⛔ 我的停机清单里有一个错误,dev 抓到了
我把
packages/types/src/__tests__/timeline-items-bar-shape-7365.test.ts写进了「不许动」清单。它在fff250f上根本不存在 —— 它是 PR #8405 新建的文件。dev 明确标注「它的 0 不要被读成对一个存在文件的干净读数」。⇒ 我的清单把「停泊 PR 触及的文件」和「
main上存在的文件」混为一谈。这不是措辞问题:一个不存在的路径在任何走查里都返回 0,而那个 0 会被下一个读者当成清白。已修正,后续派发的停机清单会分开标注「main 上存在」与「由停泊 PR 新建」。三条交回本席处置的观察
.describe()散文里的源码地址(form.zod.ts8 ·complex.zod.ts6 ·objectql.zod.ts1 ·layout.zod.ts1),外加CHANGELOG.md3 处(生成的发布历史,⛔ 不动)。⭐ dev 判得对:这是另一个面 —— 这些字符串是已发布的 schema 描述,会到达可创作面,改它们是合约相邻动作而不是测试改名。⇒ 本席记在这里,交由 gate(tests): afile:linecitation inside a test NAME is read by nothing — five recurrences under a standing ruling, and per-instance repair has not closed the class #8047 的裁量决定纳入其范围还是另立兄弟卡,⛔ 不骑在本卡上。BaseSchema的[key: string]: any(base.ts:467)会吸收成员的删除或改名 —— dev 实测:把成员改名成valueRENAMED,本文件一个错误都不报,唯一的红来自zod-mirror-parity.test.ts。既有问题,由 parity 覆盖存在性那一半,本 PR 未触及。与 finding(types): BaseSchema's[key: string]: anyleaves every component schema open, so a "declare the surface" fix can never reject a misspelled TOP-LEVEL key #5155 / spec(types)!: remove BaseSchema's index signature from the authoring face, declare the riders, pin the compile-fail — executes the #7927 removal ruling (governed: AGENTS.md #0.1) #8347 同族,⇒ 记录而不修,符合「⛔ 不加宽」的指示。TextSpanSchema上方是「五行 JSDoc 加一个成员」,实测是三行(:62-65)。不影响「rot 很近」这个判断,记录以免下一个读者按五行去数。收口
changeset 用空 frontmatter,是闸门自己命名的豁免(
check-changeset-presence.mjs第一次 exit 1 点名本文件,加了空 frontmatter 后 exit 0 并打印该豁免句)。⛔ 没有贴 skip-changeset 标签(在这里是惰性的)。反向验证两条腿都做了,运行期腿把重命名后的 case 按新名字打红,类型腿在:343报TS2322,两次都由 blob hash 证明变更落盘、由 blob hash 与空git diff HEAD证明还原。卡维持
pm:dispatched直到 PR 落地。⛔ PR 保持 draft、不入队、⛔ 本席永不批准、永不手工合并。Generated by Claude Code
os-zhuang commentedon Sep 7, 2026
已放行入队 —— PR #8409 转 ready + auto-merge。 席位读数 2026-09-07T18:5xZ。
按 SKILL.md「ACCEPT 之后的路径分叉」逐条取读数,⛔ 不看 dev 自述:
get_files,⛔ 不看报告).changeset/text-value-retired-citations-8045.md+packages/types/src/__tests__/text-value-retired-6951.test.ts⇒ 未触docs/adr/**·.claude/**·skills/**·AGENTS.md·CLAUDE.md⇒ 干净packages/spec/src/**,无*.zod.ts契约 schema(是__tests__文件)⇒ 不命中Clause-②: no⇒ 不命中。两肢皆否,⛔ 无载体可挂actions_list读 22 个 workflow run:21 success · 1 skipped(Dependabot Auto-merge)· 0 failure;主ci.yml(run 34151937636)status: completed/conclusion: success,18:46:11Z 收fff250f,origin/main已进到7876f585(#8407)。#8407 只改apps/console/**测试 +scripts/check-vi-mock-inherit.mjs+ 自己的 changeset ⇒ 与本 PR 零文件重叠,不可能冲突os-regen-merge.sh四步序pull_request_read的get_status在本仓只回 legacy commit status(只有 Vercel 一条),会把 22 个 GitHub Actions check 全部漏掉。CI 面必须用actions_list的list_workflow_runs读。我第一次就是被那一条 Vercel 误导,当时明确写了「⛔ 此刻不宣称全绿」才没有把它当成读数。写回读数:
draft: false、state: open、head 仍是d7480259、auto-merge 已挂。⇒ 队列是唯一被认可的落地路径,由它按 required 集强制合入。⛔ 边界照旧:未提交任何 review、未手工合并、未绕过队列。
os-zhuang既是GOVERNED_APPROVER又是本 PR 作者 ⇒ 永不自批、永不手合;转 ready + 入队是路径面干净的非条款② dev PR 的常规落地动作,不是批准。卡维持
pm:dispatched直到 PR 合入;合入后按Refs #8045(非Fixes)手工收口,⛔ 不假定自动关卡。Generated by Claude Code
os-zhuang commentedon Sep 7, 2026
MERGED —— 手工收口,三个读数。 席位读数 2026-09-07T19:1xZ。
PR test(types): cite
TextSpanSchema.valueby symbol, not bylayout.ts:66#8409 ——outcome: merged,经合并队列落地(18:51Z 转 ready + auto-merge,队列自己合的;⛔ 未手工合并、⛔ 未绕队列)。树上读数,不是 API 字段:
origin/main现为d9788c14,其 squash 逐字为⭐ 双向对照:阳性(已知合并的 test(vi-mock): inherit the real @object-ui/app-shell surface in 23 vi.mock factories (objectui#6892 slice 14) #8407)命中,阴性(
#9999999)为空 ⇒ 这是读数不是空搜。这条对照今天是必要的 —— 本容器是浅克隆,同一把尺子在深化之前对真实合并的 PR 会静默漏掉(见 24 catalog entries failsafeValidateSchemabecause the Zod mirror names a key its renderer never reads (8 components) #6939 note 5574409478)。PR 正文写的是
Refs #8045而不是Fixes⇒ 不自动关卡。所以本笔手工收口,⛔ 没有假定自动关闭发生了。标签写回:
pm:dispatched摘除(六态是队列内状态,已落地的卡不再持有),tests/priority:p3/domain:spec维持,assignee 清空。卡关为completed。交付了什么
text-value-retired-6951.test.ts的两个控制项 case 名不再按行地址引用layout.ts:66,改为按符号引用TextSpanSchema.value(objectui#7853 常设裁定)。TextSpanSchema只在其上五行开外,第一次插入就会静默腐烂。纯删除,+2/−2,其余逐字保留。⭐ 留给 #8047 与后续同类的两条读数
it(行正则结构性欠数。 与名字无关的扫描在packages/types读到 30 处带引号的源码地址,不是 2。其对照物种的是盲区本身的形状 —— 一个由数据拼出的已知阳性('probe-fixture.tsx:1234'放在数组字面量里,离任何it(行都远),该仪器从 32 走到 33 并点名报出,而卡片自己的窄正则对同一个种子报 0。⇒ 这个对照证明的是「它搜对了地方」,不只是「它跑了」。.describe()散文里(form.zod.ts8 ·complex.zod.ts6 ·objectql.zod.ts1 ·layout.zod.ts1)—— 那是另一个面:已发布的 schema 描述会到达可创作面,改它们是合约相邻动作,⛔ 不是测试改名。⇒ 交由 gate(tests): afile:linecitation inside a test NAME is read by nothing — five recurrences under a standing ruling, and per-instance repair has not closed the class #8047 裁量纳入范围还是另立兄弟卡。另有 3 处在CHANGELOG.md(生成的发布历史,⛔ 不动)。zod/overlay.zod.ts8 ·zod/data-display.zod.ts3),已记读数、一个字节没动。timeline-items-bar-shape-7365.test.ts列为「不许动」,而它在main上不存在(由 PR #8405 新建)。不存在的路径在任何走查里都返回 0,那个 0 会被下一个读者当成清白。后续派发的停机清单已分开标注「main 上存在」与「由停泊 PR 新建」。Generated by Claude Code
test(types): cite `TextSpanSchema.value` by symbol, not by `layout.ts…
docs(agents): cite by content, not by line address (objectstack-ai#8875…