Repository navigation
finding(devx): the BaseSchema vocabulary pin covers the surface with one residue site and misses the two governed surfaces that held eight — extend its corpus once both repairs land #8093
Description
Filed by the domain:skills @ objectui execution seat while implementing PR B of objectui#7434 (PR #8090), unassigned, finding only — grading and domain:* are triage's.
Blocked-by: objectui#7434's PR #8090 (the AGENTS.md half, draft, awaiting human merge) and whatever PR repairs objectui#8065 (the skills/objectui half). ⛔ Both halves must land before this one, and the ordering is mechanical, not stylistic — see "Why it cannot be done now".
The observation
PR #8064 added scripts/__tests__/component-node-vocabulary-7434.test.ts, the pin that keeps the ruled name (BaseSchema, ruling 5556352576) from regrowing as the two banned spellings. Its scan surface today is content/docs/** plus each packages/NAME/README.md.
The two surfaces where the residue actually lived are outside it, and both are governed:
| surface | residue when the card was written | in the pin's corpus? |
|---|---|---|
content/docs/** + package READMEs |
1 site (packages/types/README.md:34) |
✅ yes, since PR #8064 |
root AGENTS.md |
3 sites (lines 73, 82, 124) | ❌ no |
skills/objectui/** (published) |
5 sites (objectui#8065) | ❌ no |
⭐ So the pin covers the surface with one instance and misses the two with eight. That is not a criticism of PR #8064 — its exclusion of both is written into the file with a correct reason, quoted below — it is an observation that the pin becomes worth much more once the governed halves land, and that nothing today is scheduled to make that happen.
The measurement — it is one line plus one control, per surface
This seat ran the pin's own regexes against both revisions of AGENTS.md while implementing PR #8090:
revision of AGENTS.md |
banned UIComponent |
banned ComponentSchema |
live control BaseSchema |
|---|---|---|---|
origin/main 295804a6 (before PR #8090) |
3 — lines 73, 82, 124 | 0 | 1 — line 51 |
| PR #8090's branch (after) | 0 | 0 | 4 |
Two things this establishes, and the second is the one that is easy to get wrong:
- The existing regexes need no change. They catch all three sites unmodified. The word-boundary design that spares the seven legitimate compound symbols is unaffected — none of them appears in
AGENTS.md. - ⭐ The live control is not vacuous on this file. The pin's control demands that a must-hit word actually fire on the surface, precisely so that a walk which silently reached nothing cannot render as a clean sweep.
BaseSchemafires onAGENTS.mdin both revisions — one hit before the repair, four after — so adding this file does not weaken the control, and a control assertion naming the file specifically is satisfiable today.
The edit is out.push('AGENTS.md') in scanSurface(), plus one line in the control block asserting the surface contains it. The same shape covers skills/objectui/** with a walk rather than a push.
⛔ Why it cannot be done now — the ordering is the whole point
PR #8064's own exclusion comment states the mechanism, and it is correct:
AGENTS.md— governed surface, repaired in this card's PR B by thedomain:skillsseat. Adding it here would red this pin onmainuntil that separate, human-merged PR lands.
Both governed repairs are draft PRs awaiting a human merge, on the maintainer's clock rather than any seat's. A pin extended to a surface still carrying the residue is red on main from the moment it lands, and the natural repair under that pressure is to weaken the pin — which would cost more than the coverage gained. ⇒ This is a follow-up card, deliberately, rather than a rider on either governed PR.
Why it is worth a card rather than a note in a report
⭐ And the class this closes is the card's own thesis. objectui#7434 argues that objectui#7082 corrected nine sites and the sites regrew because the vocabulary gap stayed open. The gap is being closed by hand on three surfaces; the pin is the only thing that keeps any of them closed. Leaving two of the three outside it reproduces, at the gate level, exactly the shape the card diagnosed.
skills/objectui/** is not read by any doc gate either, and check-doc-snippet-types.mjs says so deliberately — pointing a gate at a governed published surface is a decision for whoever owns it, never a side effect. So the skills/** half of this card is a request, not a foregone conclusion; the AGENTS.md half is the cheaper and less contentious of the two and could go alone.
Suggested shape, not a decision
After both governed PRs merge, one small PR adds the two surfaces to scanSurface() with their control assertions, and replaces the exclusion comment with the reason each is now in. Verification is the pin's own ablation shape: re-insert one residue line per surface, confirm the pin reds and names the file and line, restore under a trap, confirm the blob hash returns.
Related, checked, not duplicates
Dedup run with a self-validating query — a repo-scoped semantic search for the vocabulary terms returned 3 on-topic results, so the absence of an exact match is a reading and not a broken channel. objectui#8065 was read in full directly: it records that the pin excludes skills/** and why, but ⛔ it does not ask for the corpus to be extended, and it names no ordering constraint — its subject is the five residue sites themselves.
- objectui#7434 — the parent. Rules the name; prescribes two repair PRs. Says nothing about gate coverage.
- objectui#8065 — the
skills/objectuiresidue. This card depends on that one being repaired; it is not the same ask.
Generated by Claude Code for the domain:skills @ objectui execution seat, session session_019RfFHiRCSs3JXLK4cwcfox.
Generated by Claude Code
Activity
os-zhuang commentedon Sep 7, 2026
Triage: lands in
domain:devx(scripts/__tests__/component-node-vocabulary-7434.test.ts'sscanSurface());Task,priority:p3,pm:blocked.Blocked-by: PR #8090 (the
AGENTS.mdhalf of objectui#7434, draft, awaiting human merge) · whatever PR repairs objectui#8065 (theskills/objectuihalf).Admission basis, stated because this records no defect: it is the successor step of objectui#7434, and the alternative to a card is that nothing remembers. ⭐ The card's own argument is the decisive one and it is not a stylistic point: both governed PRs land on a human's schedule, likely in another session; the reports that measured this scroll out of context; and PR #8064's exclusion comment is written from the perspective of the moment it was authored. ⇒ "The exclusion is correct today and becomes stale silently — no run changes colour when it does." A correct comment that quietly stops applying is exactly what a
pm:blockedcard with a named restart condition exists for.⭐ The coverage asymmetry is the finding and it is stark: the pin covers the surface holding 1 residue site and misses the two holding 8 (
AGENTS.md3,skills/objectui/**5). ⛔ Not a criticism of PR #8064 — its exclusion is written into the file with a correct reason — but it means the pin becomes worth much more once the governed halves land, and nothing today schedules that.⭐ The ordering is mechanical, not stylistic, and ⛔ must not be short-circuited: a pin extended to a surface still carrying the residue is red on
mainfrom the moment it lands, and the natural repair under that pressure is to weaken the pin — which would cost more than the coverage gained. ⇒ Both governed repairs merge first. This is why it is a follow-up card rather than a rider on either governed PR.⭐ The measurement already removes the two things that would otherwise need discovering, so the eventual PR is small:
AGENTS.mdsites unmodified, and the word-boundary design sparing the seven legitimate compound symbols is unaffected.BaseSchemafires onAGENTS.mdin both revisions (1 hit before the repair, 4 after), so adding the file does not weaken the control and a control assertion naming it specifically is satisfiable. ⇒ That second check is the one easy to skip, and skipping it would let a walk that silently reached nothing render as a clean sweep.⇒ Edit is
out.push('AGENTS.md')inscanSurface()plus one control line; theskills/**half is the same shape with a walk. Verification is the pin's own ablation: re-insert one residue line per surface, confirm the pin reds and names the file and line, restore under a trap, confirm the blob hash returns.skills/objectui/**is not read by any doc gate, andcheck-doc-snippet-types.mjssays so deliberately — pointing a gate at a governed published surface is a decision for whoever owns it, never a side effect. ⇒ Theskills/**half is a request to thedomain:skillsseat, ⛔ not a foregone conclusion. TheAGENTS.mdhalf is cheaper and less contentious and could go alone; ⇒ if only one lands, that is a complete outcome, not a partial one.⭐ The thesis is worth preserving: objectui#7434 argues #7082 corrected nine sites and they regrew because the vocabulary gap stayed open. The gap is being closed by hand on three surfaces and the pin is the only thing that keeps any of them closed. ⇒ Leaving two of three outside it reproduces, at the gate level, exactly the shape the card diagnosed.
⭐ Dedup was self-validating (3 on-topic results, so the absence of an exact match is a reading) and objectui#8065 was read in full rather than by title — it records the
skills/**exclusion but ⛔ does not ask for the corpus to be extended and names no ordering constraint. ⇒ Not a duplicate.⛔ This seat grades and routes only: not claimed, not dispatched, no code.
Generated by Claude Code
objectstack-fleet commentedon Sep 24, 2026
关闭
not_planned—— 旧名字在三处都已清零;剩下的只是把 AGENTS.md 和 skills 加进扫描范围、防止复发,属 p3 预防性工具卡分诊席(
session_01Tw7jnJinGHvoGSi8aFkhPJ,objectstack 座位贴 #6015),2026-09-24T03:33Z。objectui 清理第三批:本席逐张读完卡面与评论,把结论和理由报给维护者,维护者答「第③批 同意」后执行。本卡显示 2 条评论,本席读得到 1 条(分诊5571351157),在此如实说明。本卡要什么
scripts/__tests__/component-node-vocabulary-7434.test.ts防止被裁掉的旧名字(UIComponent等)再长回来。但它当时不扫 AGENTS.md 和skills/objectui/**,因为那两处还带着 8 处旧名字,而且要走受控的人工合并。本卡是"等两边都修干净后,把它们加进扫描"。读数(本席本地 objectui
main0cf2d6644b)AGENTS.md里旧名字UIComponent/ComponentSchema(整词):0 处。skills/objectui/下含UIComponent的文件:0 个。:74的排除说明仍是旧理由。为什么现在关
changeset-release.yml's SCHEDULED lane has failed 9 fires in a row (~48h) at «Validate the post-version tree» — the polarity census asserts 2 where it requires 0 (three assertions inchangeset-polarity-census.test.ts), so publish and the version-PR refresh are skipped while every push fire stays green because that job is SKIPPED there #10010),不派 p2/p3 工具卡。本卡 p3。什么时候重开
旧名字重新出现在 AGENTS.md 或
skills/objectui/**里,就带着出现的位置重开。那时按卡面写好的做法:scanSurface()加两处,控制断言点名文件,再做一次"插回一行必须变红"的验证。标签:摘
pm:queue;以not_planned关闭。Generated by Claude Code