Skip to content

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

@os-steve

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:

  1. 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.
  2. 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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions