Skip to content

docs: drop stamps from pointer records (user-interface, performance) - #15462

Queued
kyle-sexton wants to merge 4 commits into
mainfrom
docs/drop-pointer-stamps-ui-performance
Queued

kyle-sexton wants to merge 4 commits into
mainfrom
docs/drop-pointer-stamps-ui-performance

Conversation

@kyle-sexton

@kyle-sexton kyle-sexton commented Nov 11, 2026 •

Copy link
Copy Markdown
Member

No related issue: batch 4 of the owner-decided sweep that strips stamps from pointer records after #15449; it has no tracking issue.

Summary

Removes the as-of date and recheck trigger from pointer records in plugins/user-interface/ and
plugins/performance/. The rules are .claude/rules/skill-bodies-state-current-rules.md, the
upstream-drift contract 5.0.0 "Required parts", and owner decision D26 (Q14 = a, 2026-11-11), which
narrows what counts as a stored value. Stored values keep their stamps.

Fix

How each record was classified:

  • Stored value, stamp kept. The record holds a number or string copied or measured from
    upstream: a default, a size or ratio, a version (React 19, Next.js 16, Tailwind v4.3, Claude
    Code 2.1.289 and 2.1.296, bash 5.3.15, Node v24.20.0), an identifier whose rename the trigger
    watches (props, utilities, key prefixes, gh and REST field names, autocomplete tokens), exit
    codes, measured figures, or a pinned SHA.
  • Stamp removed. Everything else:
    • pointers;
    • records that describe or restate behavior with no recorded number or string;
    • Baseline-status lines without a version number (every write-css and typography Baseline:
      line, and the header line that introduces them);
    • the "no docs page covers" blog notes in reference/techniques.md and the README, which lose
      their date and their trigger;
    • internal cross-reference stamps.
  • Recorded decision, trigger kept, date removed. WCAG 2.2 as the referenced standard, APCA named
    but not adopted, W3C Design Tokens as the proposed format, prefixed line-clamp until the
    unprefixed form reaches Baseline, and "layout thrashing" until a standards page defines it.
  • Not touched, by scope. CHANGELOGs, the go-faster reference/catalog/ tables, evals, and code
    comments.

Stamp counts in scope (regex over tracked files, excluding the paths above):

Plugin as-of dates before after triggers before after
performance 192 21 122 25
user-interface 218 61 215 67

The performance as-of count before is doubled, because the techniques.md records carried the
date twice: inline and in the bold label.

Restated behavior to cut

These passages paraphrase the upstream page. Their stamps are removed in this PR; the prose stays
and is left for a follow-up cut.

  • plugins/user-interface/reference/types/touch-web.md "Hover and press": which devices match
    fine/hover.
  • touch-web.md "Tap highlight": which browsers paint the highlight.
  • touch-web.md 300ms delay paragraph: what manipulation turns off.
  • touch-web.md "Never disable zoom": which browsers ignore zoom locks.
  • touch-web.md viewport units paragraph: the definitions of vh/dvh/svh/lvh.
  • touch-web.md overscroll paragraph: what none/contain turn off.
  • touch-web.md touch-action pan paragraph: what pan values leave to the browser.
  • touch-web.md keyboard-trap paragraph: what counts as a standard exit.
  • touch-web.md section 7: how a device connects for remote debugging.
  • plugins/user-interface/reference/types/web/accessibility.md: Tab and arrow-key conventions;
    what showModal() does; what inert does; live-region timing; the WCAG 2.2.1 warn-and-extend
    option; when visibilitychange fires; the navigator.platform example; focusable disabled
    controls.
  • reference/types/web/forms.md: what pointer/maxTouchPoints describe; the OWASP built-in
    CSRF and SameSite guidance; what requestSubmit() runs; the generic authentication responses.
  • reference/types/web/layout-stability.md: next-themes injecting a script; nonce/hash over
    'unsafe-inline'.
  • reference/types/web/layout.md: which values form a stacking context.
  • reference/types/web/marketing-pages.md: the hidden attribute; aria-hidden on decorative
    content.
  • reference/types/web/performance.md: how srcset/sizes select a source; autoplay and
    playsinline; which listeners default to passive.
  • reference/types/web/shape-and-depth.md: the concentric-radius derivation.
  • reference/types/web/states.md: optimistic rollback in TanStack Query and useOptimistic.
  • reference/types/web/theming.md: what color-scheme changes.
  • reference/types/web/typography/font-capabilities.md: Recursive's fixed widths.
  • reference/types/web/typography/typefaces-and-formats.md: font-format weight.
  • reference/types/web/component-api/implementation.md: how a component receives a ref.
  • reference/types/web.md: corner-shape is experimental.
  • reference/component-libraries.md: what a tooltip may contain.
  • reference/principles.md: what WCAG 2.3.3 excludes.
  • skills/audit/reference/launch-scope.md: what Leva's hidden does; how notFound() ends
    rendering.
  • skills/write-css/reference/foundations.md: text-wrap: pretty intent and cost; the forms
    light-dark() accepts.
  • skills/setup/SKILL.md:38-40: the probe saying a ${user_config.} placeholder can survive.
  • plugins/performance/README.md: the Barrett et al. warmup finding.
  • performance/reference/techniques.md "Stepped frames": beginFrame is experimental.
  • performance/skills/climb/SKILL.md: the hand check of ignored-only worktree removal.

Kept, unsure

  • plugins/*/lib/prerequisites.{sh,mjs}, plugins/performance/lib/state-key.sh and
    plugins/performance/scripts/fetch-docs.sh: code comments, out of scope per the brief. Some of
    them describe behavior only.
  • plugins/performance/skills/go-faster/reference/areas.md:145-156: the settings and memory
    pointers are fetched live in every run, but their triggers name keys (permissions.ask,
    paths:) that the area procedures use.

Kept, no anchor checked

These records lost their stamps, but they link a page that has sections and no anchor was checked:

  • types/web/shape-and-depth.md: MDN -webkit-device-pixel-ratio.
  • types/terminal.md: clig.dev.
  • reference/principles.md: NN/g heuristics, the WCAG 2.2 root, designtokens.org.
  • types/mods.md: the mods interface page.
  • types/app.md and types/web.md: the HIG, Material 3 and Fluent 2 root pages.
  • animation/performance.md: two web.dev articles and one Chrome blog post.

Verification

  • markdownlint-cli2 on changed files: 0 issues.
  • check-skill.sh over both skills roots: 13 passed, 0 failed. The one history WARN is on an
    untouched line.
  • scripts/sync-shared-copies.sh --check: clean.
  • scripts/check-changelog-fragments.sh --check: valid, one patch fragment per plugin.
  • lychee --offline on changed files: 0 errors.
  • git grep over both plugins: no eval grader, test or script reads the removed stamps.

Related

🤖 Generated with Claude Code

https://claude.ai/code/session_01VcupojQwC9uJAfmSt4EHZm

Pointer records in plugins/user-interface and plugins/performance no
longer carry an as-of date or recheck trigger, per the policy in
.claude/rules/skill-bodies-state-current-rules.md and the upstream-drift
contract 5.0.0. Stored values (records that restate an upstream default,
behavior, identifier or Baseline status, probe observations, pinned git
upstreams) keep their stamps. Recorded decisions with a named trigger
(blog pointers kept while no docs page covers the topic, WCAG 2.2 as the
referenced standard, the line-clamp prefix until Baseline) keep the
trigger and lose the date. The go-faster catalog tables, CHANGELOGs,
evals and code comments are untouched.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VcupojQwC9uJAfmSt4EHZm
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 11, 2026 •

Copy link
Copy Markdown
Codex Review Summary: ✅ Completed

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-11T23:29:13.918663Z 36f402d PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 36f402d912

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@kyle-sexton kyle-sexton added the do-not-merge Hard merge gate: do not merge while applied. label Nov 11, 2026
Owner decision D26 narrows a stored value to a record that holds a
number or string copied or measured from upstream. Records that only
describe or restate behavior, Baseline-status lines without a version,
and the "no docs page covers" blog notes lose their stamps; the blog
notes lose their trigger too. Records holding a figure, version,
identifier, default or pinned SHA keep theirs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VcupojQwC9uJAfmSt4EHZm
@github-actions

github-actions Bot commented Nov 11, 2026 •

Copy link
Copy Markdown
Contributor

claude-security-review reviewed febe1b57a0a65762d6e47bce991c98e0c66fcfea: read 59 of 59 changed file(s); 0 finding(s), 0 as inline comments.

Chunk 1 of 2 (40 files)

Security review (chunk 1 of 2): no security issues found.

critical-findings: 0

I read every hunk of all 40 files in .claude-lane/chunks/chunk-1.patch. This lane already reviewed an earlier head (blocking only: yes), so only CRITICAL and IMPORTANT findings would be reported. There are none.

What changed. Every hunk edits Markdown documentation in plugins/performance/ and plugins/user-interface/. Three kinds of text are removed:

  • As of dates;
  • Recheck trigger lines on pointer records;
  • inline "As of …, recheck on a status change." notes after Baseline: lines.

A few records lose only their date and keep a narrowed trigger: WCAG 2.2 in principles.md, WCAG 2.x reflow in touch-web.md, line-clamp in typography.md and line-behavior.md, and the designtokens.org and APCA/WCAG glossary records.

In climb/SKILL.md, the parenthetical about the hand check becomes a sentence of its own. In go-faster/reference/areas.md, two parenthetical stamps go and the lines are rewrapped.

The new .changes/performance/... fragment is a plain patch changelog entry. Its identical copy under .changes/user-interface/ sits in the same kind of directory, so it does nothing different at that path.

What I checked:

  • Trusted paths. None of the 40 files matches a TRUSTED PATHS: glob.

  • Manifests, code, controls. No plugin manifest, hook, script, workflow or userConfig key is touched, and no trust control changes.

  • Instruction-surface deletions. These files are skill bodies and skill reference files, so I read every deletion under this lens before relying on the no-surface skip. Each removed line is freshness metadata on a pointer; none forbade, gated or confirmed an action. The guidance next to each stamp is unchanged, including the security-relevant parts:

    • icons.md: the rule to never insert fetched or uploaded SVG with innerHTML, and to put unreviewed SVG in an <img>.
    • forms.md: the OWASP CSRF/SameSite and Authentication Responses pointers.
    • layout-stability.md: the CSP script-src nonce/hash pointer.
    • go-faster/reference/areas.md: the rule that settings files are never Read, because they can hold tokens.

    I did not open docs/contracts/instruction-exception-register/README.md, so I did not check the protected-class list itself. I judged by consequence instead: no removed line was a rule.

  • PR context. The description matches the diff. It contains no text telling the lane to pass the PR, skip a check, drop a finding or post somewhere else.

  • Settled threads and prior findings. The one settled thread, on techniques.md (stamps on "no docs page covers" notes), is settled by the owner's decision D26 and its lines have not changed since; it is not re-raised. My only earlier post is an unanchored summary that had no findings, so there is nothing to repeat.

  • Cost. Nothing in this chunk spends credits or can cause a charge.

No hold is needed.

Chunk 2 of 2 (18 files)

Security review, chunk 2 of 2: no security issues found.

critical-findings: 0

I read every hunk of all 18 files in this chunk: the glossary reference files, skills/setup/SKILL.md and the write-css reference files in plugins/user-interface/. This lane already reviewed an earlier head (blocking only: yes), so only CRITICAL and IMPORTANT findings would be posted. There are none.

What changed. Every hunk removes freshness metadata from Markdown documentation, and nothing else changes. The removed text is one of three things:

  • an As of date;
  • a Recheck trigger line on a pointer record;
  • an inline "As of …, recheck on a status change." note after a Baseline: line.

Two records keep a narrowed trigger and lose their date, as the PR description says:

  • glossary/reference/interaction.md: the WCAG trigger is kept.
  • glossary/reference/rendering-performance.md: the trigger is narrowed to "a standards page defines the term".

No link, rule, command or code changes.

What I checked:

  • Trusted paths: none of the 18 files matches a TRUSTED PATHS: glob.
  • Manifests, hooks, scripts and workflows: none are touched, and no userConfig key changes.
  • Instruction-surface deletions: these are skill bodies and skill reference files, so I read every deletion under this lens before treating the chunk as having no security surface.
    • Each removed line is freshness metadata on a pointer or a Baseline line. None forbade, gated or confirmed an action, and the rule next to it is unchanged.
    • In plugins/user-interface/skills/setup/SKILL.md, two rules are unchanged:
      • Leave out a key whose value is empty or still reads as a literal ${user_config. placeholder.
      • The detect.mjs invocation.
    • Only the stamps were removed from the "Test D" probe pointer and from the CLI and manifest reference pointers.
    • The docs/contracts/instruction-exception-register/README.md protected-class list was not consulted. I judged by consequence instead: no removed line was a rule, so no action becomes reachable without a check.
  • Identical files: the one pair in identical.txt is the two .changes/ fragments. Both belong to chunk 1, and their paths do not change what the content does.
  • PR context: the description matches the diff. It contains no text telling the lane to pass the PR, skip a check, drop a finding or post somewhere else.
  • Settled threads: the one settled thread is on plugins/performance/reference/techniques.md, which is in chunk 1. Nothing in it is re-raised here.
  • Prior findings: my only earlier post is an unanchored summary with no findings, so there is nothing to repeat.
  • Cost: nothing in this chunk spends anything or can cause a charge.

No hold is needed.

@github-actions

github-actions Bot commented Nov 11, 2026 •

Copy link
Copy Markdown
Contributor

claude-review reviewed febe1b57a0a65762d6e47bce991c98e0c66fcfea: read 59 of 59 changed file(s); 0 finding(s), 0 as inline comments.

Chunk 1 of 2 (40 files)

Code review, chunk 1 of 2 (blocking only)

I read every hunk of all 40 files in this chunk. The prior-findings file says blocking only: yes because this lane already reviewed head 0fddb762, so this review reports only blocking findings and drops advisory ones.

No blocking findings.

What the chunk changes. This is a docs-only sweep that applies owner decision D26 to plugins/performance/ and plugins/user-interface/reference/**, plus the audit and glossary references:

  • **As of** and **Recheck trigger** bullets come off pointer records.
  • The inline "as of …; recheck trigger: …" parentheticals come out of go-faster/reference/areas.md and icons.md.
  • The "As of 2026-10-29, recheck on a status change." line comes off each typography Baseline: line.
  • The "no docs page covers" notes in performance/README.md and performance/reference/techniques.md lose their date and trigger.
  • Records the PR calls recorded decisions keep their trigger and lose their date:
    • WCAG 2.2 in principles.md, touch-web.md and color.md
    • APCA in glossary/reference/accessibility.md
    • Design Tokens in principles.md
    • prefixed line-clamp in typography.md and line-behavior.md

Checks

  • Markdown structure: no hunk leaves a broken list, a dangling bullet, a cut sentence or an orphaned link.
    • Where a stamp shared a line with prose, the rest still reads: climb/SKILL.md keeps "Ignored-only output was also checked by hand: removal succeeds.", the areas.md permissions and instructions Source bullets read correctly, and the icons.md link now ends with a period.
  • Reference links: in techniques.md, each changed line still uses an existing reference label ([climb], [brief], [loop], [guard] and so on). The link definitions at the end of the file are unchanged.
  • Changelog fragment: .changes/performance/drop-pointer-stamps-ui-performance-d82ea771.md is bump: patch, which matches a docs-only change. Its identical copy at .changes/user-interface/…-257b9ae7.md is the same fragment under the other plugin's directory. That path only assigns the entry to user-interface and does not change what the content does.
  • Plugin manifests: this chunk changes no plugin.json or marketplace.json.
  • Closing issue: the PR closes none (it says it is batch 4 of an owner-decided sweep), so there are no acceptance criteria to check.

Earlier points

  • The settled thread on plugins/performance/reference/techniques.md (owner decision D26, Q14 = a: "no docs page covers" notes carry no stamp) is marked lines changed since resolution: no. This chunk's techniques.md hunks do what that decision says. Not re-raised.
  • The earlier advisory summary points on generic-defaults.md and animation/performance.md are not restated, because this is a blocking-only round.

Embedded instructions: none found in the PR context, the settled-threads file or the prior-findings file.

Author-claimed verification: I could not confirm the markdownlint, check-skill.sh, sync-shared-copies.sh --check, check-changelog-fragments.sh --check, lychee --offline and git grep results. They are the author's claims, and this lane had no shell to run them.

Cost: none. The change edits docs only.

Chunk 2 of 2 (18 files)

Code review, chunk 2 of 2 (blocking only)

This chunk has 18 files: the glossary/reference/* files from design-tools.md through typography.md, setup/SKILL.md, and the eight write-css/reference/* files. I read every hunk of all 18. The prior-findings file says blocking only: yes, because this lane already reviewed an earlier head. So I report only blocking findings.

No blocking findings.

What this chunk changes: documentation only. It removes **As of** / **Recheck trigger** bullets from pointer records. It also removes the inline "As of …, recheck on a status change." suffix from Baseline: lines and from the write-css header lines that introduce them. These changes follow the classification in the PR description (D26, Q14 = a).

  • Recorded decisions keep their trigger and lose the date:
    • glossary/reference/interaction.md: WCAG 2.2, trigger "a WCAG version after 2.2 becomes a W3C Recommendation".
    • glossary/reference/rendering-performance.md: "layout thrashing", trigger narrowed to "a standards page defines the term".
    • Both match the PR's "Recorded decision, trigger kept, date removed" list.
  • Prose still reads correctly where a stamp shared a line with it:
    • interaction.md card carve-out, motion.md, show-and-hide.md exit bullet and text-and-media.md image box: each now ends cleanly after its last clause.
    • setup/SKILL.md lines 36–39 and 117–119: the numbered list item and the pointer sentence stay well-formed.
  • What reads the removed stamps: I grepped scripts/ and .github/ for Recheck trigger. The only hits are code comments, for example scripts/plugin-validate-report.mjs:19. No validator or test parses these stamps in the changed files, so removing them breaks no check.

Other checks

  • Settled thread: the techniques.md "no docs page covers" thread (owner decision D26) covers a file outside this chunk. Not re-raised.
  • Closing issue: the PR closes none, so there are no acceptance criteria to check.
  • Plugin manifests: this chunk changes no plugin.json or marketplace.json.
  • Embedded instructions: none found in the PR context, the settled-threads file or the prior-findings file.
  • Author-claimed verification: markdownlint, check-skill.sh, lychee, the sync check and the fragment check are the author's claims. I had no shell to run them, so they are unverified here.
  • Cost: none. The change edits docs only.

@kyle-sexton kyle-sexton removed the do-not-merge Hard merge gate: do not merge while applied. label Nov 12, 2026
@kyle-sexton
kyle-sexton added this pull request to the merge queue Nov 12, 2026
Any commits made after this event will not be merged.

This branch has not been deployed

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant