test(docs): hold the roster name column to the view labels the app ships - #1347
Merged
Merged
Conversation
`docs-view-rosters` checks COVERAGE only — every shipped label must appear somewhere in the page's roster section — so a first column written entirely from imagination passes as long as a later column carries the real name. That is not a corner case: restoring `sales/activities.mdx` to its pre-#1322 bytes, false prose claim and all eight fictional tab names included, left this file 4/4 green. Its docstring even listed that shape among the ones to tolerate. The narrow rule the wider one could not afford: every bolded cell in the NAME COLUMN of an English roster table must resolve to a published view `label`. Measured across the ten English pages before it was written — 55 name cells, ZERO false positives. The thirteen the docstring records were raised by the rule at its widest and none of them live in the name column: column and filter names are one column over, the sentence bolds are bullets under the table, and `service/cases`'s six retired non-views are a bullet list below it. Reverse-verified in both directions: red on the pre-#1322 bytes with eight unresolvable names, green on `main`. Coverage, the equal-entry-count structural rule and the two existing vacuity guards are untouched — this only adds. Part of #1326
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
os-trump
marked this pull request as ready for review
August 27, 2026 04:27
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #1326
The measurement first, because it is what the card asked for
55 name cells across the ten English roster pages. ZERO false positives.
sales/accounts.mdxsales/contacts.mdxsales/leads.mdxsales/opportunities.mdxsales/activities.mdxsales/quotes.mdxservice/cases.mdxmarketing/campaigns.mdxrevenue/contracts.mdxrevenue/products.mdxThe guard docstring records 13 false positives, and the card was right that
the number does not transfer: those 13 were raised by the rule at its widest
— every bolded run anywhere in the section. Narrowed to the name column of
the roster table, every one of the 13 falls outside the rule reach, and it is
not luck:
**Health Score**,**Annual Revenue of $10M or more**) live in the What it shows column, one column over;**Status is the filter you already have.**) arebullets beneath the table, not rows in it;
service/casesnames its six retired non-views in a bullet list below thetable — the page that was RIGHT is the page this rule never reads;
fourth category, and it is not a legitimate exception at all. It was the #760 published to customers: six docs pages print a "Tab" column of strings the console never renders, and one asserts the false model in prose before tabulating it eight times #1318
defect, in the exact page cited as carrying it.
Emoji-carrying labels (
⚠️ At-Risk Accounts,🔥 Hot Leads,⏰ SLA at Risk,📅 My Priority Tasks,⚠️ Stale Opportunities · Longest in Stage First) allresolve verbatim — the switcher prints the label as authored, and the pages
already spell it that way. Em-dash labels (
Unassigned — triage) likewise.⇒ Small, and none of it exceptional: an exemption map is not needed at all.
premise_still_valid: true, and the narrow route is viable.The interaction the PM flagged: measured, and there is none
test/docs-quick-tour-navigation.test.tsreserves bold ongetting-started/quick-tourfor names the app really carries, and a name-columnrule requiring bold reads like a head-on collision. It is not one:
quick-tourcarries no## Standard list viewsheading at all — itssections are the seven numbered tour steps — so
rosterOfreturnsnullforit, vacuity guard #1 never demands it be mapped, and it is not in
PAGE_OBJECT.The two rules never see the other page. No exemption is needed, and adding
one would document a conflict that does not exist.
What the rule is
Every markdown table body row inside a roster section must open its first
column with a bolded name, and that name must be a
labelthe registeredviews of the object actually ship. Three assertions and one vacuity floor:
a bulleted roster, or a table this parser stopped recognising, would
otherwise pass by checking nothing);
hatch;
LABELS, derived from the registeredstack, not written down here.
The header row is found by the delimiter row below it rather than by its
wording, so
revenue/contractsheading its first column Tab and the othernine heading theirs View both work without either spelling being hard-coded.
Reverse verification — both directions, which is the point of the card
Green-on-
mainalone is what coverage already achieved while the whole defectwas on disk, so it proves nothing by itself.
With
content/docs/sales/activities.mdxrestored to its pre-PR-#1322 bytes(
794d6fe~1) — hashed on disk before any verdict was read:8 red, and the other four tests — coverage included — stayed green,
which is the claim of the card reproduced under the new rule. The rule is
section-scoped: an unrelated form-section table in the same file that also opens
a row with
**Schedule**was correctly not read.Restored with
git checkout HEAD -- PATH(never the bare form, which restoresfrom the index) and proved:
git diff HEADempty,git status --shortempty,git hash-objectback to0f7117e.No build sits between the mutation and the verdict here — the suite reads the
.mdxoff disk at test time and importsobjectstack.config.tsthrough thevitest transform, so there is no
dist/for a stale artifact to hide in.What this does not touch
Purely additive: 154 insertions, 0 deletions. The coverage rule, the
structural equal-entry-count rule across faces, and both existing vacuity guards
are untouched. English faces only — the split label column on the translated
faces is open decision card #1329 and is not decided here. No file under
content/docs/was changed by this PR.Gates
pnpm verifyat4e02e04, exit 0:Changeset: empty frontmatter — the sanctioned releases-nothing declaration that
.github/workflows/changeset-check.ymldocuments. Test guard only; nosrc/metadata moved.
Generated by Claude Code