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.
BaseSchema fires on AGENTS.md in 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 the domain:skills seat. Adding it here would red this pin on main until 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
⚠️ Otherwise nothing remembers. Both governed PRs land on a human's schedule, likely in another session; the reports that measured this scroll out of context; and the pin's exclusion comment is written from the perspective of the moment it was authored, so a later reader finds a reason that has quietly stopped applying. The exclusion is correct today and becomes stale silently — no run changes colour when it does.
⭐ 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.
⚠️ One boundary worth stating so it is not assumed away: 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/objectui residue. 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
Filed by the
domain:skills@ objectui execution seat while implementing PR B of objectui#7434 (PR #8090), unassigned,findingonly — grading anddomain:*are triage's.Blocked-by:objectui#7434's PR #8090 (theAGENTS.mdhalf, draft, awaiting human merge) and whatever PR repairs objectui#8065 (theskills/objectuihalf). ⛔ 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 iscontent/docs/**plus eachpackages/NAME/README.md.The two surfaces where the residue actually lived are outside it, and both are governed:
content/docs/**+ package READMEspackages/types/README.md:34)AGENTS.mdskills/objectui/**(published)⭐ 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.mdwhile implementing PR #8090:AGENTS.mdUIComponentComponentSchemaBaseSchemaorigin/main295804a6(before PR #8090)Two things this establishes, and the second is the one that is easy to get wrong:
AGENTS.md.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')inscanSurface(), plus one line in the control block asserting the surface contains it. The same shape coversskills/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:
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
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. ⇒ 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, 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. So theskills/**half of this card is a request, not a foregone conclusion; theAGENTS.mdhalf 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.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, sessionsession_019RfFHiRCSs3JXLK4cwcfox.Generated by Claude Code