diff --git a/.changes/actionlint/fix-pointer-records-without-stamps-tooling-c9d53472.md b/.changes/actionlint/fix-pointer-records-without-stamps-tooling-c9d53472.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/actionlint/fix-pointer-records-without-stamps-tooling-c9d53472.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/adhd/fix-pointer-records-without-stamps-tooling-2d9d89d3.md b/.changes/adhd/fix-pointer-records-without-stamps-tooling-2d9d89d3.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/adhd/fix-pointer-records-without-stamps-tooling-2d9d89d3.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/ai-briefing/fix-pointer-records-without-stamps-tooling-88b9454f.md b/.changes/ai-briefing/fix-pointer-records-without-stamps-tooling-88b9454f.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/ai-briefing/fix-pointer-records-without-stamps-tooling-88b9454f.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/animation/fix-pointer-records-without-stamps-tooling-f131f5a7.md b/.changes/animation/fix-pointer-records-without-stamps-tooling-f131f5a7.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/animation/fix-pointer-records-without-stamps-tooling-f131f5a7.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/architecture/fix-pointer-records-without-stamps-tooling-779810f0.md b/.changes/architecture/fix-pointer-records-without-stamps-tooling-779810f0.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/architecture/fix-pointer-records-without-stamps-tooling-779810f0.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/attribution/fix-pointer-records-without-stamps-tooling-39b83c33.md b/.changes/attribution/fix-pointer-records-without-stamps-tooling-39b83c33.md new file mode 100644 index 00000000000..14b280aa89a --- /dev/null +++ b/.changes/attribution/fix-pointer-records-without-stamps-tooling-39b83c33.md @@ -0,0 +1,7 @@ +--- +bump: minor +--- + +### Changed + +- `/attribution:audit` asks for an as-of date and recheck trigger only on a record that stores an upstream value; a condensed record whose decision holds no upstream value is a pointer record (decision and pointer), and a missing stamp on one is not a finding. Expiry and trigger-less stamp checks are unchanged. A link is never a carve-out: text beside a pointer that matches or paraphrases the source is still judged, and golden case `c57` pins that. diff --git a/.changes/autonomy/fix-pointer-records-without-stamps-tooling-0a59411b.md b/.changes/autonomy/fix-pointer-records-without-stamps-tooling-0a59411b.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/autonomy/fix-pointer-records-without-stamps-tooling-0a59411b.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/bash-format/fix-pointer-records-without-stamps-tooling-8a65769b.md b/.changes/bash-format/fix-pointer-records-without-stamps-tooling-8a65769b.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/bash-format/fix-pointer-records-without-stamps-tooling-8a65769b.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/biome-format/fix-pointer-records-without-stamps-tooling-2181447b.md b/.changes/biome-format/fix-pointer-records-without-stamps-tooling-2181447b.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/biome-format/fix-pointer-records-without-stamps-tooling-2181447b.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/bugs/fix-pointer-records-without-stamps-tooling-0a48c863.md b/.changes/bugs/fix-pointer-records-without-stamps-tooling-0a48c863.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/bugs/fix-pointer-records-without-stamps-tooling-0a48c863.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/code-tidying/fix-pointer-records-without-stamps-tooling-12c20731.md b/.changes/code-tidying/fix-pointer-records-without-stamps-tooling-12c20731.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/code-tidying/fix-pointer-records-without-stamps-tooling-12c20731.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/codebase-health/fix-pointer-records-without-stamps-tooling-a910a962.md b/.changes/codebase-health/fix-pointer-records-without-stamps-tooling-a910a962.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/codebase-health/fix-pointer-records-without-stamps-tooling-a910a962.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/context-budget/fix-pointer-records-without-stamps-tooling-95f70a9f.md b/.changes/context-budget/fix-pointer-records-without-stamps-tooling-95f70a9f.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/context-budget/fix-pointer-records-without-stamps-tooling-95f70a9f.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/context-guard/fix-pointer-records-without-stamps-tooling-c24f8051.md b/.changes/context-guard/fix-pointer-records-without-stamps-tooling-c24f8051.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/context-guard/fix-pointer-records-without-stamps-tooling-c24f8051.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/corrections/fix-pointer-records-without-stamps-tooling-834d5587.md b/.changes/corrections/fix-pointer-records-without-stamps-tooling-834d5587.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/corrections/fix-pointer-records-without-stamps-tooling-834d5587.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/debugging/fix-pointer-records-without-stamps-tooling-0f63d284.md b/.changes/debugging/fix-pointer-records-without-stamps-tooling-0f63d284.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/debugging/fix-pointer-records-without-stamps-tooling-0f63d284.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/desktop-notification/fix-pointer-records-without-stamps-tooling-f7e3d2b1.md b/.changes/desktop-notification/fix-pointer-records-without-stamps-tooling-f7e3d2b1.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/desktop-notification/fix-pointer-records-without-stamps-tooling-f7e3d2b1.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/discipline/fix-pointer-records-without-stamps-tooling-267957a2.md b/.changes/discipline/fix-pointer-records-without-stamps-tooling-267957a2.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/discipline/fix-pointer-records-without-stamps-tooling-267957a2.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/discovery/fix-pointer-records-without-stamps-tooling-1c6b54e6.md b/.changes/discovery/fix-pointer-records-without-stamps-tooling-1c6b54e6.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/discovery/fix-pointer-records-without-stamps-tooling-1c6b54e6.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/disk-hygiene/fix-pointer-records-without-stamps-tooling-0a71978c.md b/.changes/disk-hygiene/fix-pointer-records-without-stamps-tooling-0a71978c.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/disk-hygiene/fix-pointer-records-without-stamps-tooling-0a71978c.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/display-redaction/fix-pointer-records-without-stamps-tooling-c7c334e2.md b/.changes/display-redaction/fix-pointer-records-without-stamps-tooling-c7c334e2.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/display-redaction/fix-pointer-records-without-stamps-tooling-c7c334e2.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/docs-hygiene/fix-pointer-records-without-stamps-tooling-62a42007.md b/.changes/docs-hygiene/fix-pointer-records-without-stamps-tooling-62a42007.md new file mode 100644 index 00000000000..cbbdda2d7ab --- /dev/null +++ b/.changes/docs-hygiene/fix-pointer-records-without-stamps-tooling-62a42007.md @@ -0,0 +1,8 @@ +--- +bump: patch +--- + +### Changed + +- `/docs-hygiene:audit-derivability` treats a pointer as its own drift control and never asks for an as-of date or recheck trigger on one, a `convert-to-pointer` result included; a recorded recheck trigger stays drift control for a cache. +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/domain-driven-design/fix-pointer-records-without-stamps-tooling-6759e80c.md b/.changes/domain-driven-design/fix-pointer-records-without-stamps-tooling-6759e80c.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/domain-driven-design/fix-pointer-records-without-stamps-tooling-6759e80c.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/education/fix-pointer-records-without-stamps-tooling-21b05b90.md b/.changes/education/fix-pointer-records-without-stamps-tooling-21b05b90.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/education/fix-pointer-records-without-stamps-tooling-21b05b90.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/eol-normalizer/fix-pointer-records-without-stamps-tooling-406f8f30.md b/.changes/eol-normalizer/fix-pointer-records-without-stamps-tooling-406f8f30.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/eol-normalizer/fix-pointer-records-without-stamps-tooling-406f8f30.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/evals/fix-pointer-records-without-stamps-tooling-550c66d1.md b/.changes/evals/fix-pointer-records-without-stamps-tooling-550c66d1.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/evals/fix-pointer-records-without-stamps-tooling-550c66d1.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/gaming/fix-pointer-records-without-stamps-tooling-5d88d801.md b/.changes/gaming/fix-pointer-records-without-stamps-tooling-5d88d801.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/gaming/fix-pointer-records-without-stamps-tooling-5d88d801.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/github/fix-pointer-records-without-stamps-tooling-0e91c91b.md b/.changes/github/fix-pointer-records-without-stamps-tooling-0e91c91b.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/github/fix-pointer-records-without-stamps-tooling-0e91c91b.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/go-format/fix-pointer-records-without-stamps-tooling-6f288687.md b/.changes/go-format/fix-pointer-records-without-stamps-tooling-6f288687.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/go-format/fix-pointer-records-without-stamps-tooling-6f288687.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/guardrails/fix-pointer-records-without-stamps-tooling-36f2b868.md b/.changes/guardrails/fix-pointer-records-without-stamps-tooling-36f2b868.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/guardrails/fix-pointer-records-without-stamps-tooling-36f2b868.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/harness-config/fix-pointer-records-without-stamps-tooling-d56b7d3e.md b/.changes/harness-config/fix-pointer-records-without-stamps-tooling-d56b7d3e.md new file mode 100644 index 00000000000..bd72c191a1c --- /dev/null +++ b/.changes/harness-config/fix-pointer-records-without-stamps-tooling-d56b7d3e.md @@ -0,0 +1,11 @@ +--- +bump: patch +--- + +### Fixed + +- `/harness-config:audit-instructions` I40 no longer marks a bare `#N` in an agent definition whose block also cites N upstream (as `owner/repo#N` or an `/issues/N` or `/pull/N` URL), so a pointer record without an as-of date or recheck trigger can name its upstream bug by number. A block with an as-of date and recheck trigger stays exempt. + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/harness-ops/fix-pointer-records-without-stamps-tooling-f23a1a9a.md b/.changes/harness-ops/fix-pointer-records-without-stamps-tooling-f23a1a9a.md new file mode 100644 index 00000000000..ce842e78d55 --- /dev/null +++ b/.changes/harness-ops/fix-pointer-records-without-stamps-tooling-f23a1a9a.md @@ -0,0 +1,8 @@ +--- +bump: patch +--- + +### Changed + +- `/harness-ops:changelog` reads a fired recheck trigger as a `correct` signal only for a stored value (a recorded default, limit, version gate or measured observation); for a pointer, which carries no trigger, the feature grep is the signal. +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/implementation/fix-pointer-records-without-stamps-tooling-89e23491.md b/.changes/implementation/fix-pointer-records-without-stamps-tooling-89e23491.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/implementation/fix-pointer-records-without-stamps-tooling-89e23491.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/instruction-placement/fix-pointer-records-without-stamps-tooling-811656a8.md b/.changes/instruction-placement/fix-pointer-records-without-stamps-tooling-811656a8.md new file mode 100644 index 00000000000..acb44273277 --- /dev/null +++ b/.changes/instruction-placement/fix-pointer-records-without-stamps-tooling-811656a8.md @@ -0,0 +1,11 @@ +--- +bump: patch +--- + +### Fixed + +- `/instruction-placement:migrate` `remove-shims` ends the printed price where the record's pointer bullet ends, instead of at an As of line, so a pointer record without an as-of date no longer runs the price into the rest of the section. + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/knowledge/fix-pointer-records-without-stamps-tooling-22b763a6.md b/.changes/knowledge/fix-pointer-records-without-stamps-tooling-22b763a6.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/knowledge/fix-pointer-records-without-stamps-tooling-22b763a6.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/machine-health/fix-pointer-records-without-stamps-tooling-09d7a882.md b/.changes/machine-health/fix-pointer-records-without-stamps-tooling-09d7a882.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/machine-health/fix-pointer-records-without-stamps-tooling-09d7a882.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/markdown-format/fix-pointer-records-without-stamps-tooling-f9c31b1c.md b/.changes/markdown-format/fix-pointer-records-without-stamps-tooling-f9c31b1c.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/markdown-format/fix-pointer-records-without-stamps-tooling-f9c31b1c.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/miro/fix-pointer-records-without-stamps-tooling-d4683e03.md b/.changes/miro/fix-pointer-records-without-stamps-tooling-d4683e03.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/miro/fix-pointer-records-without-stamps-tooling-d4683e03.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/multi-agent/fix-pointer-records-without-stamps-tooling-1e445c2e.md b/.changes/multi-agent/fix-pointer-records-without-stamps-tooling-1e445c2e.md new file mode 100644 index 00000000000..353d31dc617 --- /dev/null +++ b/.changes/multi-agent/fix-pointer-records-without-stamps-tooling-1e445c2e.md @@ -0,0 +1,7 @@ +--- +bump: minor +--- + +### Changed + +- `/multi-agent:audit-defaults repo` takes a pointer to the live source as conforming without an as-of date or recheck trigger; `copied-current` now means a restated upstream fact with no pointer, or a stored value (a recorded default, limit, version gate or price) with no as-of date and recheck trigger. diff --git a/.changes/mutation-testing/fix-pointer-records-without-stamps-tooling-4b26d986.md b/.changes/mutation-testing/fix-pointer-records-without-stamps-tooling-4b26d986.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/mutation-testing/fix-pointer-records-without-stamps-tooling-4b26d986.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/pixel-art/fix-pointer-records-without-stamps-tooling-152a381f.md b/.changes/pixel-art/fix-pointer-records-without-stamps-tooling-152a381f.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/pixel-art/fix-pointer-records-without-stamps-tooling-152a381f.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/planning/fix-pointer-records-without-stamps-tooling-d6056761.md b/.changes/planning/fix-pointer-records-without-stamps-tooling-d6056761.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/planning/fix-pointer-records-without-stamps-tooling-d6056761.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/playbooks/fix-pointer-records-without-stamps-tooling-6e092b7a.md b/.changes/playbooks/fix-pointer-records-without-stamps-tooling-6e092b7a.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/playbooks/fix-pointer-records-without-stamps-tooling-6e092b7a.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/playwright/fix-pointer-records-without-stamps-tooling-b010511d.md b/.changes/playwright/fix-pointer-records-without-stamps-tooling-b010511d.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/playwright/fix-pointer-records-without-stamps-tooling-b010511d.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/powershell-format/fix-pointer-records-without-stamps-tooling-8d3d96d1.md b/.changes/powershell-format/fix-pointer-records-without-stamps-tooling-8d3d96d1.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/powershell-format/fix-pointer-records-without-stamps-tooling-8d3d96d1.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/rate-limit-guard/fix-pointer-records-without-stamps-tooling-598b9087.md b/.changes/rate-limit-guard/fix-pointer-records-without-stamps-tooling-598b9087.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/rate-limit-guard/fix-pointer-records-without-stamps-tooling-598b9087.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/repo-hygiene/fix-pointer-records-without-stamps-tooling-231046b1.md b/.changes/repo-hygiene/fix-pointer-records-without-stamps-tooling-231046b1.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/repo-hygiene/fix-pointer-records-without-stamps-tooling-231046b1.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/review/fix-pointer-records-without-stamps-tooling-0f25923f.md b/.changes/review/fix-pointer-records-without-stamps-tooling-0f25923f.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/review/fix-pointer-records-without-stamps-tooling-0f25923f.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/ruff-format/fix-pointer-records-without-stamps-tooling-34e24f14.md b/.changes/ruff-format/fix-pointer-records-without-stamps-tooling-34e24f14.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/ruff-format/fix-pointer-records-without-stamps-tooling-34e24f14.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/session-flow/fix-pointer-records-without-stamps-tooling-d9224283.md b/.changes/session-flow/fix-pointer-records-without-stamps-tooling-d9224283.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/session-flow/fix-pointer-records-without-stamps-tooling-d9224283.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/skill-quality/fix-pointer-records-without-stamps-tooling-090664b4.md b/.changes/skill-quality/fix-pointer-records-without-stamps-tooling-090664b4.md new file mode 100644 index 00000000000..e62a10650b4 --- /dev/null +++ b/.changes/skill-quality/fix-pointer-records-without-stamps-tooling-090664b4.md @@ -0,0 +1,11 @@ +--- +bump: patch +--- + +### Fixed + +- Check 29 no longer warns on a bare `#N` whose block also cites N upstream (as `owner/repo#N` or an `/issues/N` or `/pull/N` URL), so a pointer record without an as-of date or recheck trigger can name its upstream bug by number. A block with an as-of date and recheck trigger stays exempt. + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/source-control/fix-pointer-records-without-stamps-tooling-b59c85b8.md b/.changes/source-control/fix-pointer-records-without-stamps-tooling-b59c85b8.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/source-control/fix-pointer-records-without-stamps-tooling-b59c85b8.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/speech/fix-pointer-records-without-stamps-tooling-619957b2.md b/.changes/speech/fix-pointer-records-without-stamps-tooling-619957b2.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/speech/fix-pointer-records-without-stamps-tooling-619957b2.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/testing/fix-pointer-records-without-stamps-tooling-6408f323.md b/.changes/testing/fix-pointer-records-without-stamps-tooling-6408f323.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/testing/fix-pointer-records-without-stamps-tooling-6408f323.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/toolchain/fix-pointer-records-without-stamps-tooling-0306194e.md b/.changes/toolchain/fix-pointer-records-without-stamps-tooling-0306194e.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/toolchain/fix-pointer-records-without-stamps-tooling-0306194e.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/typos-format/fix-pointer-records-without-stamps-tooling-2f098196.md b/.changes/typos-format/fix-pointer-records-without-stamps-tooling-2f098196.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/typos-format/fix-pointer-records-without-stamps-tooling-2f098196.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/user-interface/fix-pointer-records-without-stamps-tooling-62d50d46.md b/.changes/user-interface/fix-pointer-records-without-stamps-tooling-62d50d46.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/user-interface/fix-pointer-records-without-stamps-tooling-62d50d46.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/verification/fix-pointer-records-without-stamps-tooling-f579a056.md b/.changes/verification/fix-pointer-records-without-stamps-tooling-f579a056.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/verification/fix-pointer-records-without-stamps-tooling-f579a056.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/visualization/fix-pointer-records-without-stamps-tooling-a08b1002.md b/.changes/visualization/fix-pointer-records-without-stamps-tooling-a08b1002.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/visualization/fix-pointer-records-without-stamps-tooling-a08b1002.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/.changes/work-items/fix-pointer-records-without-stamps-tooling-515a3777.md b/.changes/work-items/fix-pointer-records-without-stamps-tooling-515a3777.md new file mode 100644 index 00000000000..27c2eeec26c --- /dev/null +++ b/.changes/work-items/fix-pointer-records-without-stamps-tooling-515a3777.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- The README options reference lists its upstream documentation as pointers only, with no as-of date or recheck trigger. diff --git a/plugins/actionlint/README.md b/plugins/actionlint/README.md index a0fd1c115e7..d38e8692a48 100644 --- a/plugins/actionlint/README.md +++ b/plugins/actionlint/README.md @@ -142,9 +142,6 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - ## License diff --git a/plugins/adhd/README.md b/plugins/adhd/README.md index a234572d059..70be3cafcb9 100644 --- a/plugins/adhd/README.md +++ b/plugins/adhd/README.md @@ -176,9 +176,6 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - ## Attribution diff --git a/plugins/ai-briefing/README.md b/plugins/ai-briefing/README.md index 51502d76edc..e927087ae65 100644 --- a/plugins/ai-briefing/README.md +++ b/plugins/ai-briefing/README.md @@ -122,7 +122,4 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - diff --git a/plugins/animation/README.md b/plugins/animation/README.md index 0f4d0eb0c5a..86bb998f4c3 100644 --- a/plugins/animation/README.md +++ b/plugins/animation/README.md @@ -108,7 +108,4 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - diff --git a/plugins/architecture/README.md b/plugins/architecture/README.md index 4da0639545a..8590247cabb 100644 --- a/plugins/architecture/README.md +++ b/plugins/architecture/README.md @@ -285,9 +285,6 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - ## License diff --git a/plugins/attribution/skills/audit/evals/fixtures/golden/c57-paraphrase-beside-link-not-carved-out/case.md b/plugins/attribution/skills/audit/evals/fixtures/golden/c57-paraphrase-beside-link-not-carved-out/case.md new file mode 100644 index 00000000000..a40a73e8b31 --- /dev/null +++ b/plugins/attribution/skills/audit/evals/fixtures/golden/c57-paraphrase-beside-link-not-carved-out/case.md @@ -0,0 +1,11 @@ +# How work gets picked up, and what happens when it runs out of memory + +Ordering is decided twice. First by what depends on what, and then, among the tasks that are all +equally ready, by where they appear in the manifest. How many run at once tracks the machine's +core count until `--jobs` says otherwise. + +Memory is treated differently from every other failure. Blowing the declared budget ends the +task with an over-budget report and no second attempt, on the reasoning that a second attempt +would consume the same memory the first one did. + +- **Pointer**: [Widget Runner scheduling](https://example.invalid/widget-runner/docs/scheduling). diff --git a/plugins/attribution/skills/audit/evals/fixtures/golden/c57-paraphrase-beside-link-not-carved-out/expected.json b/plugins/attribution/skills/audit/evals/fixtures/golden/c57-paraphrase-beside-link-not-carved-out/expected.json new file mode 100644 index 00000000000..f87a85f9639 --- /dev/null +++ b/plugins/attribution/skills/audit/evals/fixtures/golden/c57-paraphrase-beside-link-not-carved-out/expected.json @@ -0,0 +1,18 @@ +{ + "negatives": false, + "findings": [ + { + "class": "paraphrase", + "tier": "llm-suspected", + "span": { "start_line": 3, "end_line": 9 } + } + ], + "notes": { + "shape": "c05's paraphrase with a pointer bullet to the source page added after it. The pointer stores no upstream value and carries no as-of date or trigger.", + "carve_outs": "Copy carve-out 2 does NOT apply. A link is never a carve-out: a pointer record needs no stamp only because it restates nothing from its source, and these paragraphs restate the whole page. The pointer's missing stamp is not a finding; the paraphrase beside it is judged by the criteria as if the link were absent. Owned content does not apply, for c05's reason.", + "rubric": "C1 and C2 hold as in c05. C3 holds: a bare link names where the facts came from but is not attribution of restated text, and the carve-out it might have reached is closed by the rubric's 'A link is never a carve-out'. C4 holds: replace the paragraphs with the pointer and a reader loses nothing that is not on the other side of it.", + "measured": "Same local paragraphs and source as c05, so fingerprint.mjs at k=5 gives containment 0.0, jaccard 0.0, no matched spans.", + "tier_reason": "llm-suspected, permanently, as for c05: no lexical evidence is possible for a paraphrase.", + "carries": "Pins that removing the stamp requirement from pointer records did not widen copy carve-out 2. A run that declines this case as a conforming record has laundered a paraphrase through a link." + } +} diff --git a/plugins/attribution/skills/audit/evals/fixtures/golden/c57-paraphrase-beside-link-not-carved-out/source.md b/plugins/attribution/skills/audit/evals/fixtures/golden/c57-paraphrase-beside-link-not-carved-out/source.md new file mode 100644 index 00000000000..07848ad6c13 --- /dev/null +++ b/plugins/attribution/skills/audit/evals/fixtures/golden/c57-paraphrase-beside-link-not-carved-out/source.md @@ -0,0 +1,18 @@ +# Widget Runner: scheduling and concurrency + +Synthetic source page for the attribution golden set. Widget Runner is a fictional build tool +invented for these fixtures. Nothing on this page describes a real product or reproduces text +from a real page. + +Canonical location for the purposes of this case: `https://example.invalid/widget-runner/docs/scheduling`. + +## Admission order + +The scheduler admits tasks in dependency order and, within a ready set, in declaration order. +Concurrency defaults to the core count and is capped by the `--jobs` flag. + +## Memory budgets + +A task that exceeds its declared memory budget is killed and reported as over-budget rather than +retried, because retrying a task that ran out of memory once usually spends the same memory +again. diff --git a/plugins/attribution/skills/audit/reference/dispositions.md b/plugins/attribution/skills/audit/reference/dispositions.md index 936eb151580..fcef26adf7b 100644 --- a/plugins/attribution/skills/audit/reference/dispositions.md +++ b/plugins/attribution/skills/audit/reference/dispositions.md @@ -31,7 +31,7 @@ Three edit. Two do not. |---|---|---| | `convert-to-pointer` | Replaces the restatement with a link to the source | The reader can follow the link at the moment they need the fact | | `trim-to-citation` | Keeps a short quoted excerpt, attributed, and drops the rest | A specific span is worth quoting verbatim and the surrounding restatement is not | -| `condense-to-stamped-record` | Condenses to a stamped record: the surface's own decision in its own words, a pointer, an as-of date, a recheck trigger | The surface must act on the fact even when the source is unreachable | +| `condense-to-stamped-record` | Condenses to a record: the surface's own decision in its own words and a pointer, plus an as-of date and a recheck trigger when the decision stores an upstream value | The surface must act on the fact even when the source is unreachable | | `leave-with-reason` | Records why the passage stays | A carve-out applies, or a review veto fired, or the human decided | | `neutral-not-found` | Records that no source was identified | Budgets were exhausted; every searched surface is named | @@ -61,8 +61,8 @@ read often" does not make a copy acceptable, it makes a stamped record the right ## The stamped record, when condensing -A stamped record stores no source text, quoted or paraphrased. It carries all of these parts or -it is not one: +A condensed record stores no source text, quoted or paraphrased. It carries these parts or it is +not one: 1. **The decision**: what the surface does, in its own words, narrow enough to check. Where the surface must act on a value offline, the value appears as the surface's own setting or firing @@ -72,6 +72,12 @@ it is not one: 3. **The as-of date**: when the decision was last derived from the source. 4. **The recheck trigger**: the observable event that obliges re-deriving it. +Parts 3 and 4 belong to a stored value: a decision that holds an upstream default, limit, version +gate, price, error string or measured observation, which is what an offline surface acting on the +fact usually holds. A condensed record whose decision holds no upstream value is a pointer record: +the decision and the pointer alone, with no as-of date or trigger, since a link check catches a +dead pointer and whoever fetches it sees what changed. + The labels the marketplace's upstream-drift convention uses are `**Pointer**`, `**As of**` and `**Recheck trigger**`, each on its own bullet under the decision. @@ -98,10 +104,10 @@ The dispositions below are what the report recommends, not what a run performs. | `condense-to-stamped-record` | The surface must act on the fact without the source. The offline-load-bearing rule above still applies: it selects the stamped record over a bare pointer whatever the finding's tier. | | `leave-with-reason` | A carve-out applies (a conforming pointer or record, owned content, a distilling-file surface whose own attribution enumerates the fact, quoted and cited text), or the human decided. | -A recommended stamped record carries the parts above: the surface's decision in its own words, the -pointer, an ISO 8601 as-of date `check-stamps.sh` can parse, and a trigger naming an event someone -could notice. When -no such trigger exists, recommend `convert-to-pointer`. +A recommended record carries the parts above: the surface's decision in its own words and the +pointer, and, for a stored value, an ISO 8601 as-of date `check-stamps.sh` can parse and a trigger +naming an event someone could notice. When a stored value has no such trigger, recommend +`convert-to-pointer`. ## Guards, all of which must pass before an edit is kept diff --git a/plugins/attribution/skills/audit/reference/rubric.md b/plugins/attribution/skills/audit/reference/rubric.md index 370f265233e..8844e821d0e 100644 --- a/plugins/attribution/skills/audit/reference/rubric.md +++ b/plugins/attribution/skills/audit/reference/rubric.md @@ -61,8 +61,15 @@ drift is handled by its sync path, not by this audit. A passage carrying a whole stamped record, a pointer to the source, an as-of date, and a recheck trigger beside the decision it records, is already the sanctioned end state a copy is converted -into. It is not a copy to be found. Text inside the record that matches the source is still judged -like any other passage. +into when it stores an upstream value (a default, limit, version gate, price, error string or +measured observation). It is not a copy to be found. Text inside the record that matches the source +is still judged like any other passage. + +A link is never a carve-out. A pointer record (the decision and a pointer, storing no upstream +value) restates nothing from its source, so this carve-out has nothing to decline in it; the only +thing waived for it is the stamp, and its missing as-of date or trigger is not a finding. Text +beside a link that matches or paraphrases the source is judged by the criteria whether or not the +link is there. **Conforming is the whole test.** A dated sentence with no trigger is not carved out; it is a `rule-trigger-less-stamp` candidate where the repository has enabled that check, and a plain @@ -400,10 +407,12 @@ content to carry a recheck trigger. *Pointer:* `melodic-software/standards`, 2026-10-01. *Recheck trigger:* any revision of that org standard, or of the upstream-drift convention's Boundary section that cites it. -**A conforming record's parts.** This rubric treats a record as conforming when it carries a -pointer to the source (a specific URL or probe), an as-of date, and a recheck trigger, the -observable event that obliges re-derivation, beside the decision it records. A date alone does not -qualify as a trigger. *Pointer:* `docs/contracts/upstream-drift/README.md` "Required parts" and +**A conforming record's parts.** This rubric treats a record that stores an upstream value as +conforming when it carries a pointer to the source (a specific URL or probe), an as-of date, and a +recheck trigger, the observable event that obliges re-derivation, beside the decision it records. +A date alone does not qualify as a trigger. A pointer that stores no value needs no stamp, but +it conforms only when the passage restates nothing from the source: text that matches or +paraphrases the source is judged by the criteria whether or not a link sits beside it. *Pointer:* `docs/contracts/upstream-drift/README.md` "Required parts" and "The observability bar" in the marketplace repository. *As of:* 2026-10-01. *Recheck trigger:* any change to that convention's required parts, or the org standard broadening the accepted trigger forms in a way this repository adopts. diff --git a/plugins/autonomy/README.md b/plugins/autonomy/README.md index 734333ab44f..5e082054f84 100644 --- a/plugins/autonomy/README.md +++ b/plugins/autonomy/README.md @@ -68,7 +68,7 @@ whether `node` and `jq` resolve. detect-diff-reconciles existing org schedulers and bots instead of duplicating them. - **Routine prerequisite resolution** (`reference/prerequisite-resolution.md`): fail-closed, per-identity-per-surface verdicts (`supported` / `conditional` / `unsupported` / `unknown`) for - which catalog identities can run against a repository, composing owning seams rather than a new + which catalog identities can run against a repository, composing the interfaces that own those facts rather than a new prober, with `deferred()` (the row's own join trigger) marking `join:` rows that have no identities yet. Per-identity facts live in each `v1` leaf; `generated/identity-prerequisites.json` is the drift-gated @@ -76,7 +76,7 @@ whether `node` and `jq` resolve. `skills/setup/scripts/resolve-prerequisites.mjs` is the deterministic per-surface resolver; the setup skill's prerequisite-resolution slice (`check` / `apply`) consumes it. - **Runner design pack** (`reference/runner.md`): the architect-ready design contract for the - autonomous-drain runner, the composition spine and its eight seams, the lifecycle state + autonomous-drain runner, the composition spine and its eight interfaces, the lifecycle state model, the two-family stop-criteria taxonomy with terminal-handoff escalation and severity-routed notification fan-out, the matrix-derived launch backend set, and the topology ownership seam map, as a progressive-disclosure hub with `reference/runner/` leaves. Design @@ -331,7 +331,4 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - diff --git a/plugins/bash-format/README.md b/plugins/bash-format/README.md index 847931abf95..d38391adb83 100644 --- a/plugins/bash-format/README.md +++ b/plugins/bash-format/README.md @@ -208,9 +208,6 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - ## License diff --git a/plugins/biome-format/README.md b/plugins/biome-format/README.md index 8e13e5e3f47..00fbfa5b7a7 100644 --- a/plugins/biome-format/README.md +++ b/plugins/biome-format/README.md @@ -179,9 +179,6 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - ## License diff --git a/plugins/bugs/README.md b/plugins/bugs/README.md index 7fdd3753209..f1264b7a3e7 100644 --- a/plugins/bugs/README.md +++ b/plugins/bugs/README.md @@ -171,9 +171,6 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - ## Filing a report diff --git a/plugins/code-tidying/README.md b/plugins/code-tidying/README.md index 8ca82a25031..aaa5596083d 100644 --- a/plugins/code-tidying/README.md +++ b/plugins/code-tidying/README.md @@ -235,9 +235,6 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - ## License diff --git a/plugins/codebase-health/README.md b/plugins/codebase-health/README.md index 637e73bbe1d..381d45ea319 100644 --- a/plugins/codebase-health/README.md +++ b/plugins/codebase-health/README.md @@ -145,9 +145,6 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - ## License diff --git a/plugins/context-budget/README.md b/plugins/context-budget/README.md index 9dd04a09748..4be218720d1 100644 --- a/plugins/context-budget/README.md +++ b/plugins/context-budget/README.md @@ -282,7 +282,4 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - diff --git a/plugins/context-guard/README.md b/plugins/context-guard/README.md index 80ee5c1fa67..4795f36b5f9 100644 --- a/plugins/context-guard/README.md +++ b/plugins/context-guard/README.md @@ -496,9 +496,6 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - ## Consumers diff --git a/plugins/corrections/README.md b/plugins/corrections/README.md index 7838f414c75..217d3550f1e 100644 --- a/plugins/corrections/README.md +++ b/plugins/corrections/README.md @@ -113,7 +113,4 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - diff --git a/plugins/debugging/README.md b/plugins/debugging/README.md index cfcf50c0d50..2624bc9a7f1 100644 --- a/plugins/debugging/README.md +++ b/plugins/debugging/README.md @@ -105,9 +105,6 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - ## License diff --git a/plugins/desktop-notification/README.md b/plugins/desktop-notification/README.md index 68b27c20012..df0b6b5bbf8 100644 --- a/plugins/desktop-notification/README.md +++ b/plugins/desktop-notification/README.md @@ -174,9 +174,6 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - ## Telemetry (opt-in) diff --git a/plugins/discipline/README.md b/plugins/discipline/README.md index c40780b925d..f7e9d1a041d 100644 --- a/plugins/discipline/README.md +++ b/plugins/discipline/README.md @@ -163,7 +163,7 @@ simplify capability (code). ### recheck-against-upstream -Re-anchors the discipline that existing state, config, code, docs, infra, is evidence of what is, never proof it still matches the upstream it depends +Re-anchors the discipline that existing state (config, code, docs, infrastructure) is evidence of what is, never proof that it still matches the upstream it depends on. Fetches the CURRENT official upstream docs for the surface in play, diffs the repo's state against them, and classifies each divergence: a **gap** (docs say X, we do Y, no recorded rationale, including deprecation @@ -309,7 +309,7 @@ win). ### scrutinize-dont-coast -Re-anchors a *meta* discipline rather than a single content axis: don't coast +Re-anchors a *meta* discipline rather than a single content axis. Don't coast on your own recent output. Confidence that work is sound is not evidence that it is. The adversarial re-examination runs in a fresh-context (non-fork) subagent blind to the reasoning that produced the output. It makes @@ -524,7 +524,4 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - diff --git a/plugins/discovery/README.md b/plugins/discovery/README.md index 8a7b77f5671..b62e0aca8b1 100644 --- a/plugins/discovery/README.md +++ b/plugins/discovery/README.md @@ -191,9 +191,6 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - ## License diff --git a/plugins/disk-hygiene/README.md b/plugins/disk-hygiene/README.md index 0720fff7fad..0e11dc79a7a 100644 --- a/plugins/disk-hygiene/README.md +++ b/plugins/disk-hygiene/README.md @@ -710,9 +710,6 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - ## License diff --git a/plugins/display-redaction/README.md b/plugins/display-redaction/README.md index 8ee84d572e5..bf8605c82d6 100644 --- a/plugins/display-redaction/README.md +++ b/plugins/display-redaction/README.md @@ -152,7 +152,4 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - diff --git a/plugins/docs-hygiene/README.md b/plugins/docs-hygiene/README.md index b70efcbcc54..3d5f44bdd7d 100644 --- a/plugins/docs-hygiene/README.md +++ b/plugins/docs-hygiene/README.md @@ -108,9 +108,6 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - ## License diff --git a/plugins/docs-hygiene/skills/audit-derivability/SKILL.md b/plugins/docs-hygiene/skills/audit-derivability/SKILL.md index 4623eae267e..57f1a5d5503 100644 --- a/plugins/docs-hygiene/skills/audit-derivability/SKILL.md +++ b/plugins/docs-hygiene/skills/audit-derivability/SKILL.md @@ -148,7 +148,7 @@ After the ledger, OFFER to route actionable verdicts (delete / convert-to-pointe - **Read-only with respect to the repository.** No `Edit` or `Write` inside the repo, no `Bash` that mutates it; session-scratchpad ledgers and artifacts are the one sanctioned write surface. The author applies every deletion and rewrite. Deletion is the highest-stakes doc edit; the classifier only recommends. - **Never derivability alone.** A `delete` verdict requires all of: derivable, low re-derivation cost, no owned facts. Any owned non-derivable fact forces `keep-owns-facts`. -- **Cache verdicts carry a drift-control condition or they demote.** No regeneration path and no recheck trigger → not a cache, demote to pointer/delete. +- **Cache verdicts carry a drift-control condition or they demote.** No regeneration path and no recheck trigger → not a cache, demote to pointer/delete. A pointer is its own drift control and needs no as-of date or recheck trigger (`context/rubric.md`, Factor 3). - **Load-bearing or contested deletions are spot-tested by a fresh, non-fork subagent**, never confirmed from this (contaminated) context, never by the Agent tool's `fork` subagent type, which inherits the parent conversation. A launch-loaded audited file is spot-tested only by `Explore` or `Plan` (this skill's choice; see Sources for which agents load those files). A verdict whose spot-test is deferred (e.g. past a sweep's cap) or skipped by a `light` or `off` verification level stays provisional and is never routed as actionable. - **Audience named in every verdict.** Agent-facing and human-facing docs clear different deletion bars. - **The empty-target escalation is offer-only.** A repo-wide sweep from the no-op path runs only after explicit user confirmation; decline or silence ends as the no-op. diff --git a/plugins/docs-hygiene/skills/audit-derivability/context/rubric.md b/plugins/docs-hygiene/skills/audit-derivability/context/rubric.md index 62a1904cb92..7b4b092ca73 100644 --- a/plugins/docs-hygiene/skills/audit-derivability/context/rubric.md +++ b/plugins/docs-hygiene/skills/audit-derivability/context/rubric.md @@ -98,6 +98,12 @@ is legitimate only when the cache cannot silently rot, i.e. there is: With neither, the "cache" is an unmaintained copy waiting to drift. **Demote it** to `convert-to-pointer` (point at the live source) or `delete`. +A pointer is its own drift control: it holds no copy, a link check catches a +dead one, and whoever fetches it sees what changed. Never require an as-of date +or a recheck trigger on a pointer, a `convert-to-pointer` result included; the +recorded recheck trigger above is drift control for a cache, which stores what +its source says. + ## Factor 4: Fact ownership (the trump card) Some content is not derivable at any cost because the repository does not diff --git a/plugins/domain-driven-design/README.md b/plugins/domain-driven-design/README.md index 0b6afc45c9a..97ccc7b5b2e 100644 --- a/plugins/domain-driven-design/README.md +++ b/plugins/domain-driven-design/README.md @@ -74,9 +74,6 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - ## License diff --git a/plugins/education/README.md b/plugins/education/README.md index f5cbceef047..96870a8b33d 100644 --- a/plugins/education/README.md +++ b/plugins/education/README.md @@ -171,9 +171,6 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - ## License diff --git a/plugins/eol-normalizer/README.md b/plugins/eol-normalizer/README.md index 31afe27ab28..92d27f5615f 100644 --- a/plugins/eol-normalizer/README.md +++ b/plugins/eol-normalizer/README.md @@ -155,9 +155,6 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - ## License diff --git a/plugins/evals/README.md b/plugins/evals/README.md index e1a791510c6..23871326e94 100644 --- a/plugins/evals/README.md +++ b/plugins/evals/README.md @@ -180,7 +180,4 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - diff --git a/plugins/gaming/README.md b/plugins/gaming/README.md index fb8843d145c..4a000790b99 100644 --- a/plugins/gaming/README.md +++ b/plugins/gaming/README.md @@ -138,9 +138,6 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - ## License diff --git a/plugins/github/README.md b/plugins/github/README.md index b482a5029e9..c419dce44f9 100644 --- a/plugins/github/README.md +++ b/plugins/github/README.md @@ -108,7 +108,4 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - diff --git a/plugins/go-format/README.md b/plugins/go-format/README.md index 0c95f61b85f..e2e34164ddc 100644 --- a/plugins/go-format/README.md +++ b/plugins/go-format/README.md @@ -168,9 +168,6 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - ## License diff --git a/plugins/guardrails/README.md b/plugins/guardrails/README.md index b322fc875b8..97b4637b43d 100644 --- a/plugins/guardrails/README.md +++ b/plugins/guardrails/README.md @@ -1792,9 +1792,6 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - ### Unwatched sessions diff --git a/plugins/harness-config/README.md b/plugins/harness-config/README.md index a8ffa03c12e..f53279769cc 100644 --- a/plugins/harness-config/README.md +++ b/plugins/harness-config/README.md @@ -312,9 +312,6 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - ## License diff --git a/plugins/harness-config/skills/audit-instructions/reference/criteria.md b/plugins/harness-config/skills/audit-instructions/reference/criteria.md index f218558f718..a17337ab098 100644 --- a/plugins/harness-config/skills/audit-instructions/reference/criteria.md +++ b/plugins/harness-config/skills/audit-instructions/reference/criteria.md @@ -2691,10 +2691,12 @@ is `/skill-quality:check`'s; this row covers the agents it does not read. "added in #N", "fixed by PR 1234", or an incident narrative ("after the lane stalled in September") that explains why a line exists instead of stating the rule. - **Must NOT flag:** a code span; a cross-repository `owner/repo#N`, which names an upstream - record; a `TODO(#N)` marker; fenced or indented code; any line inside a pointer-record block, - meaning a paragraph or bullet run that carries an as-of date and a recheck trigger anywhere in - it. These are the exemptions `/skill-quality:check` applies to skills, so one line gets one verdict on - either surface. + record; a `TODO(#N)` marker; fenced or indented code; a bare `#N` whose paragraph or bullet run + also cites N upstream, as `owner/repo#N` or an `/issues/N` or `/pull/N` URL (a pointer record + naming its upstream bug); any line inside a stored-value record block, meaning a paragraph or + bullet run that carries an as-of date and a recheck trigger anywhere in it. These are the + exemptions `/skill-quality:check` applies to skills, so one line gets one verdict on either + surface. - **Pre-scan:** `instruction-scan.sh` seeds the number forms as `I40` rows on `agents/*.md` paths only, with the exemptions above; incident narratives are lane-only. - **Remediate:** state the rule in the present tense and move the history to the CHANGELOG, an ADR, diff --git a/plugins/harness-config/skills/audit-instructions/scripts/instruction-scan.sh b/plugins/harness-config/skills/audit-instructions/scripts/instruction-scan.sh index 0b2bb075c59..3a227149ba5 100755 --- a/plugins/harness-config/skills/audit-instructions/scripts/instruction-scan.sh +++ b/plugins/harness-config/skills/audit-instructions/scripts/instruction-scan.sh @@ -69,8 +69,8 @@ # I40 own-repository history reference (a bare hash-number, alone or after a # pull-request word) on agents/*.md paths only. Code spans, owner/repo # references, a tracked-work marker's issue link, fenced and indented code, -# and every line of a block carrying an as-of date and a recheck trigger -# are exempt. +# a reference whose block cites the same number upstream, and every line +# of a block carrying an as-of date and a recheck trigger are exempt. # # Advisory: prints candidate rows, ALWAYS exits 0 (candidates never fail a run). # Requires grep, tr, and awk; exits 2 when one is absent. @@ -247,9 +247,11 @@ I25_ERE="${WB_L}temperature${WB_R}|${WB_L}top_p${WB_R}|${WB_L}top_k${WB_R}" # the lowercased line after code spans and tracked-work marker links are removed, outside fenced # and indented code blocks. The ERE itself rejects owner/repo#N: # a `#` after a word character, `&`, `/`, `.`, `#`, or `-` is an anchor, an -# entity, or a path, not a reference. A block (a run of non-blank lines) that -# carries both an as-of date and a recheck trigger is a pointer record and -# never emits. +# entity, or a path, not a reference. A reference whose block (a run of +# non-blank lines) also cites its number upstream, as owner/repo#N or an +# /issues/N or /pull/N URL, belongs to a pointer record and never emits; nor +# does any line of a stored-value block, one carrying both an as-of date and a +# recheck trigger. I40_REF_ERE="(^|[^[:alnum:]_&/.#-])#[0-9]+([^[:alnum:]_]|\$)|${WB_L}(pr|pull request)s? #?[0-9]+${WB_R}" I40_ASOF_ERE="as[- ]of[^0-9]{0,24}[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]" I40_RECHECK_ERE="${WB_L}re-?check" @@ -408,9 +410,23 @@ run_i40() { [[ ${#agents[@]} -gt 0 ]] || continue LC_ALL=C awk -v ref="$I40_REF_ERE" -v asof="$I40_ASOF_ERE" \ -v recheck="$I40_RECHECK_ERE" ' + function cited(n) { + return blk ~ ("[a-z0-9_.-]+/[a-z0-9_.-]+#" n "([^0-9]|$)") || + blk ~ ("/(issues|pull)/" n "([^0-9]|$)") + } + # 1 when the line holds a reference the block does not cite upstream. + function own_ref(s, m) { + while (match(s, ref)) { + m = substr(s, RSTART, RLENGTH) + gsub(/[^0-9]/, "", m) + if (!cited(m)) return 1 + s = substr(s, RSTART + RLENGTH) + } + return 0 + } function flush( k) { if (nb > 0 && !(blk ~ asof && blk ~ recheck)) - for (k = 1; k <= nb; k++) printf "%s\003%s:\n", cur, hit[k] + for (k = 1; k <= nb; k++) if (own_ref(hl[k])) printf "%s\003%s:\n", cur, hit[k] nb = 0; blk = "" } # Drop each code span: a backtick run up to the next run of the same @@ -455,7 +471,7 @@ run_i40() { blk = blk " " low low = strip_spans(low) gsub(/todo\(#[0-9]+\)/, "", low) - if (low ~ ref) hit[++nb] = FNR + if (low ~ ref) { hit[++nb] = FNR; hl[nb] = low } } END { flush() } ' "${agents[@]}" 2>/dev/null diff --git a/plugins/harness-config/skills/audit-instructions/scripts/instruction-scan.test.sh b/plugins/harness-config/skills/audit-instructions/scripts/instruction-scan.test.sh index f8b2724efd4..5113c051f43 100755 --- a/plugins/harness-config/skills/audit-instructions/scripts/instruction-scan.test.sh +++ b/plugins/harness-config/skills/audit-instructions/scripts/instruction-scan.test.sh @@ -630,8 +630,9 @@ assert_contains "a spaced file name is scanned" "$OUT" "$SPACED:2:I28-a" # reference/criteria.md: a bare hash-number reference, alone, after a pull-request # word, or after "added in", in an agents/*.md file is a candidate; a code span, a # cross-repository owner/repo reference, a tracked-work marker's issue link, -# fenced code, and any line inside a block carrying both an as-of date and a -# recheck trigger are not. The same text outside agents/ is not this row's. +# fenced code, a reference whose block cites the same number upstream, and any +# line inside a block carrying both an as-of date and a recheck trigger are not. +# The same text outside agents/ is not this row's. mkdir -p "$TEST_TMPDIR/agents" I40F="$TEST_TMPDIR/agents/worker.md" cat >"$I40F" <<'EOF' @@ -659,6 +660,12 @@ Verified against #2468, as of 2026-10-02. ```text fixed in #999 ``` + +- **Pointer**: see anthropics/claude-code#8961; when #8961 closes, drop the flag. + +- **Pointer**: [the report](https://github.com/anthropics/claude-code/issues/8962); when #8962 closes, drop the flag. + +- **Pointer**: see anthropics/claude-code#8961; this step came from #4444. EOF I40S="$TEST_TMPDIR/SKILL.md" cat >"$I40S" <<'EOF' @@ -673,8 +680,11 @@ assert_not_contains "I40: TODO(#N) stays quiet" "$OUT" "$I40F:14:I40" assert_not_contains "I40: a pointer-record block stays quiet" "$OUT" "$I40F:16:I40" assert_contains "I40: an as-of date with no recheck trigger is not a pointer record" "$OUT" "$I40F:20:I40" assert_not_contains "I40: fenced code stays quiet" "$OUT" "$I40F:23:I40" +assert_not_contains "I40: an unstamped pointer's #N cited upstream as owner/repo#N stays quiet" "$OUT" "$I40F:26:I40" +assert_not_contains "I40: an unstamped pointer's #N cited upstream by issue URL stays quiet" "$OUT" "$I40F:28:I40" +assert_contains "I40: a #N its unstamped block does not cite upstream is a candidate" "$OUT" "$I40F:30:I40" assert_not_contains "I40: the same text outside agents/ is not this row's" "$OUT" "$I40S:1:I40" -assert_eq "I40: exactly three agent candidates" "3" "$(printf '%s\n' "$OUT" | grep -c ':I40$')" +assert_eq "I40: exactly four agent candidates" "4" "$(printf '%s\n' "$OUT" | grep -c ':I40$')" OUT=$(bash "$SCRIPT" --body-only "$I40F") assert_contains "I40: --body-only keeps body rows" "$OUT" "$I40F:6:I40" diff --git a/plugins/harness-ops/README.md b/plugins/harness-ops/README.md index a5fa883c24c..b40988c6789 100644 --- a/plugins/harness-ops/README.md +++ b/plugins/harness-ops/README.md @@ -575,9 +575,6 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - ## License diff --git a/plugins/harness-ops/skills/changelog/context/classification-rubric.md b/plugins/harness-ops/skills/changelog/context/classification-rubric.md index 84a40051ec9..7600ac74105 100644 --- a/plugins/harness-ops/skills/changelog/context/classification-rubric.md +++ b/plugins/harness-ops/skills/changelog/context/classification-rubric.md @@ -18,7 +18,7 @@ A skip item leaves no row and no line; only the count in the read summary shows - Grep finds the item's feature, field, event or flag in a component, and the item changes what is true about it - A bug the component documents as a quirk is fixed upstream, or a deprecation or removal hits something the component uses -- A recheck trigger on a component fires +- A recheck trigger on a component's stored value (a recorded default, limit, version gate or measured observation) fires. A pointer carries no trigger; the feature grep above is its signal The row names the claim as the component states it (false) and as the item states it (true). A row without both halves is not a correct row. diff --git a/plugins/implementation/README.md b/plugins/implementation/README.md index 5d9cb36c475..73d2777d72c 100644 --- a/plugins/implementation/README.md +++ b/plugins/implementation/README.md @@ -203,9 +203,6 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - ## License diff --git a/plugins/instruction-placement/README.md b/plugins/instruction-placement/README.md index 8a8abcdfd83..759af18bab0 100644 --- a/plugins/instruction-placement/README.md +++ b/plugins/instruction-placement/README.md @@ -265,7 +265,4 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - diff --git a/plugins/instruction-placement/skills/migrate/reference/sources.md b/plugins/instruction-placement/skills/migrate/reference/sources.md index 63f6d520498..e8e4886a034 100644 --- a/plugins/instruction-placement/skills/migrate/reference/sources.md +++ b/plugins/instruction-placement/skills/migrate/reference/sources.md @@ -279,7 +279,7 @@ pointer, never restated here. and . Both pages fetched by the rung-1 route on 2026-09-29, both slugs present in `llms.txt`. `scripts/remove-shims.sh` - prints the paragraph above this line and this pointer, and stops at the As of line. + prints the paragraph above this line and this pointer, and stops where this bullet ends. - **As of**: 2026-09-29 - **Recheck trigger**: either page changes that table, the hook's firing rule for `AGENTS.md`, or the `/memory` listing. diff --git a/plugins/instruction-placement/skills/migrate/scripts/remove-shims.sh b/plugins/instruction-placement/skills/migrate/scripts/remove-shims.sh index 1bc6bc6606a..893e77c447f 100755 --- a/plugins/instruction-placement/skills/migrate/scripts/remove-shims.sh +++ b/plugins/instruction-placement/skills/migrate/scripts/remove-shims.sh @@ -165,13 +165,14 @@ echo echo "What removing the shims costs (reference/sources.md, 'What shim removal costs'):" if [[ -f "$SOURCES_MD" ]]; then # The record's decision is the paragraph directly above its Pointer line, so - # the price is that paragraph and the pointer, up to the As of line. + # the price is that paragraph and the pointer bullet with its indented + # continuation lines; the next bullet, blank line or heading ends it. tr -d '\r' <"$SOURCES_MD" | awk '/^## What shim removal costs/ { f = 1; next } !f { next } - /^## / || /^- \*\*As of\*\*/ { exit } - /^- \*\*Pointer\*\*/ { for (i = 1; i <= n; i++) print " " para[i]; print ""; p = 1 } - p { print " " $0; next } + /^## / { exit } + p { if (/^[[:space:]]*$/ || /^[^[:space:]]/) exit; print " " $0; next } + /^- \*\*Pointer\*\*/ { for (i = 1; i <= n; i++) print " " para[i]; print ""; p = 1; print " " $0; next } /^[[:space:]]*$/ { gap = 1; next } { if (gap) { n = 0; gap = 0 } para[++n] = $0 }' else diff --git a/plugins/instruction-placement/skills/migrate/scripts/remove-shims.test.sh b/plugins/instruction-placement/skills/migrate/scripts/remove-shims.test.sh index 77d729a6dd7..d61bbe020e5 100755 --- a/plugins/instruction-placement/skills/migrate/scripts/remove-shims.test.sh +++ b/plugins/instruction-placement/skills/migrate/scripts/remove-shims.test.sh @@ -254,7 +254,7 @@ OUT=$(bash "$SCRIPT" --root "$READY" --installed-plugins "$TMP/installed-current assert_eq "no --confirm exits 1" 1 "$rc" assert_contains "and prints what removal costs" "$OUT" "InstructionsLoaded" assert_contains "and prints the record's pointer" "$OUT" " - **Pointer**: " -assert_not_contains "and stops before the as-of date" "$OUT" "**As of**" +assert_not_contains "and stops at the end of the pointer bullet" "$OUT" "**As of**" assert_contains "and says it is not confirmed" "$OUT" "Not confirmed" assert_eq "and the repository is untouched" "" "$(cd "$READY" && git status --porcelain)" @@ -296,6 +296,27 @@ GOT_PRICE="$(printf '%s\n' "$OUT" | awk '/^What removing the shims costs/ { f = 1 } /^ Nested AGENTS.md files/ || /^Not confirmed/ { exit } f')" assert_eq "the price is exactly the decision and its pointer" "$EXPECTED_PRICE" "$GOT_PRICE" +# A pointer record carries no as-of date or trigger: the pointer bullet's own +# end (a blank line here) ends the price, so the paragraph after it is left out. +cat >"$PRICE_STUB/reference/sources.md" <<'EOF' +# Sources + +## What shim removal costs + +The decision, first line, +and its second line. + +- **Pointer**: for the topic, see ; + a continuation line. + +A note after the record the price never reaches. +EOF +OUT=$(bash "$PRICE_STUB/scripts/remove-shims.sh" --root "$READY" --installed-plugins \ + "$TMP/installed-current.json" --claude-bin "$TMP/bin/claude-met") +GOT_PRICE="$(printf '%s\n' "$OUT" | + awk '/^What removing the shims costs/ { f = 1 } /^ Nested AGENTS.md files/ || /^Not confirmed/ { exit } f')" +assert_eq "an unstamped pointer record's price ends at the pointer bullet" "$EXPECTED_PRICE" "$GOT_PRICE" + # A nested AGENTS.md adds the write-trigger loss to the price, before any # confirmation and before the probe that measures it has run. assert_contains "a nested AGENTS.md prices the write-trigger loss" "$OUT" \ diff --git a/plugins/knowledge/README.md b/plugins/knowledge/README.md index da243e0b083..95845e73804 100644 --- a/plugins/knowledge/README.md +++ b/plugins/knowledge/README.md @@ -175,9 +175,6 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - ## License diff --git a/plugins/machine-health/README.md b/plugins/machine-health/README.md index 1e8e2b0972c..36e7d71047e 100644 --- a/plugins/machine-health/README.md +++ b/plugins/machine-health/README.md @@ -131,9 +131,6 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - ## Tests diff --git a/plugins/markdown-format/README.md b/plugins/markdown-format/README.md index f1fd4cca58b..78fb1385d4d 100644 --- a/plugins/markdown-format/README.md +++ b/plugins/markdown-format/README.md @@ -246,9 +246,6 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - ## License diff --git a/plugins/miro/README.md b/plugins/miro/README.md index b01ef23934c..f1899c6c9a5 100644 --- a/plugins/miro/README.md +++ b/plugins/miro/README.md @@ -232,7 +232,4 @@ Every option here is `sensitive`, so the install fallback for a release without - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - diff --git a/plugins/multi-agent/tests/drift-audit.test.mjs b/plugins/multi-agent/tests/drift-audit.test.mjs index 4716a13b624..1a7ffe462d0 100644 --- a/plugins/multi-agent/tests/drift-audit.test.mjs +++ b/plugins/multi-agent/tests/drift-audit.test.mjs @@ -338,6 +338,14 @@ test('skeptics see the reader pointer beside each repo claim', async () => { assert.match(data(by(calls, 'skeptic:')[0].prompt, 'findings')[0].pointer, /as of 2026-10-01/) }) +test('repo finders take a pointer without a stamp as conforming and keep the stamp for stored values', async () => { + const { calls } = await run({ mode: 'repo', targets: [{ area: 'a', files: ['docs/a.md'] }] }) + const prompt = by(calls, 'find:')[0].prompt + assert.match(prompt, /section-anchored link that needs no as-of date or recheck trigger/) + assert.match(prompt, /no pointer to its source, or is a stored value with no as-of date and recheck trigger/) + assert.doesNotMatch(prompt, /records the pointer, an as-of date and a recheck trigger/) +}) + test('sources off the fetch-gate hosts, or with a query string, are dropped before any stage runs', async () => { const { result, logs } = await run({ mode: 'repo', targets: TARGETS, upstream: ['https://example.org/x', 'https://code.claude.com/docs?x=1', 'https://code.claude.com/docs/en/hooks'] }) assert.deepEqual(result.sources, ['https://code.claude.com/docs/en/hooks']) diff --git a/plugins/multi-agent/workflows/drift-audit.js b/plugins/multi-agent/workflows/drift-audit.js index a6a6acfbd93..4621ee61140 100644 --- a/plugins/multi-agent/workflows/drift-audit.js +++ b/plugins/multi-agent/workflows/drift-audit.js @@ -275,7 +275,9 @@ const FETCH_RULE = ' Fetch pages only on the hosts of the sources listed, and never put repository content into an address.' const POINTER_RULE = ' The rule being audited: a body that depends on a volatile upstream specific points at the live source ' + - 'instead of restating it, and records the pointer, an as-of date and a recheck trigger. Files under ' + + 'instead of restating it, with a section-anchored link that needs no as-of date or recheck trigger. A ' + + 'stored upstream value (a recorded default, limit, version gate or price) keeps an as-of date and a ' + + 'recheck trigger beside its pointer. Files under ' + 'docs/upstream/, changelogs and eval fixtures are deliberate snapshots and out of scope.' // ---- Fetch stage ---- @@ -427,7 +429,7 @@ const CLAIMS_SCHEMA = { file: { type: 'string' }, line: { type: 'integer', minimum: 1 }, quote: { type: 'string', description: 'the exact repository text, at most about 300 characters' }, - pointer: { type: 'string', description: 'the pointer, as-of date and recheck trigger recorded beside it, verbatim, or empty' }, + pointer: { type: 'string', description: 'the pointer recorded beside it, with any as-of date and recheck trigger, verbatim, or empty' }, }, required: ['file', 'line', 'quote'], }, @@ -517,7 +519,7 @@ function readPrompt(u) { 'model resolution, depth or concurrency caps, dynamic workflows (availability, size guidance, concurrency, ' + 'usage-limit behavior, per-agent model and effort), and the environment variables or settings for any of ' + 'these, plus agent frontmatter that pins a model. Quote each exactly with its file and line number, and ' + - 'copy any pointer, as-of date and recheck trigger recorded beside it. Skip a mere mention that makes no ' + + 'copy any pointer recorded beside it, with any as-of date and recheck trigger. Skip a mere mention that makes no ' + 'claim. Return at most ' + CLAIM_CAP + ', most specific first. Do not judge whether they are true.' + READ_ONLY + fence('area', u.area) + fence('files', u.files) } @@ -525,8 +527,8 @@ function checkPrompt(u, claims, extra) { return 'Stage: find. Read-only drift audit of claims a separate reader lifted from one area of a repository; ' + 'you cannot read the files and do not need to. Check each claim against ' + 'what they say now; do not rely on memory. Report a claim only when it is one of: stale (contradicts the ' + - 'source now), copied-current (restates a volatile upstream fact correctly but with no pointer, as-of date ' + - 'and recheck trigger), unpointed-judgment (states a model or effort recommendation as fact with no basis), ' + + 'source now), copied-current (restates a volatile upstream fact correctly but with no pointer to its ' + + 'source, or is a stored value with no as-of date and recheck trigger), unpointed-judgment (states a model or effort recommendation as fact with no basis), ' + 'hardcoded-model-pin (pins a model in a way that defeats aliases or current guidance). Skip a claim whose ' + 'pointer record still matches its source. Key each finding by its claim id.' + POINTER_RULE + READ_ONLY + FETCH_RULE + diff --git a/plugins/mutation-testing/README.md b/plugins/mutation-testing/README.md index 01bdc62fcbe..475016b3ed9 100644 --- a/plugins/mutation-testing/README.md +++ b/plugins/mutation-testing/README.md @@ -114,9 +114,6 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - ## Sources diff --git a/plugins/pixel-art/README.md b/plugins/pixel-art/README.md index 09467f0d4ee..c59231d2f00 100644 --- a/plugins/pixel-art/README.md +++ b/plugins/pixel-art/README.md @@ -146,7 +146,4 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - diff --git a/plugins/planning/README.md b/plugins/planning/README.md index 57fd984ceb7..2b45f679870 100644 --- a/plugins/planning/README.md +++ b/plugins/planning/README.md @@ -179,9 +179,6 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - ## License diff --git a/plugins/playbooks/README.md b/plugins/playbooks/README.md index dca4eac980c..49822aa8171 100644 --- a/plugins/playbooks/README.md +++ b/plugins/playbooks/README.md @@ -96,9 +96,6 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - ## License diff --git a/plugins/playwright/README.md b/plugins/playwright/README.md index 2eba1cfba25..cd3fed7cf7a 100644 --- a/plugins/playwright/README.md +++ b/plugins/playwright/README.md @@ -168,9 +168,6 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - ## License diff --git a/plugins/powershell-format/README.md b/plugins/powershell-format/README.md index f8f243c1d3d..6daaa96d8db 100644 --- a/plugins/powershell-format/README.md +++ b/plugins/powershell-format/README.md @@ -188,9 +188,6 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - ## License diff --git a/plugins/rate-limit-guard/README.md b/plugins/rate-limit-guard/README.md index f79937f4bb7..8cbfa4f7e55 100644 --- a/plugins/rate-limit-guard/README.md +++ b/plugins/rate-limit-guard/README.md @@ -392,9 +392,6 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - ## Consumers diff --git a/plugins/repo-hygiene/README.md b/plugins/repo-hygiene/README.md index d2ebf87bd5d..16b99987c92 100644 --- a/plugins/repo-hygiene/README.md +++ b/plugins/repo-hygiene/README.md @@ -172,9 +172,6 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - ## License diff --git a/plugins/review/README.md b/plugins/review/README.md index 24b87900c40..18ca9c0a352 100644 --- a/plugins/review/README.md +++ b/plugins/review/README.md @@ -306,9 +306,6 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - ## License diff --git a/plugins/ruff-format/README.md b/plugins/ruff-format/README.md index e0737f8d4d5..c461a89a314 100644 --- a/plugins/ruff-format/README.md +++ b/plugins/ruff-format/README.md @@ -182,9 +182,6 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - ## License diff --git a/plugins/session-flow/README.md b/plugins/session-flow/README.md index 767904668c9..dfee87e67c4 100644 --- a/plugins/session-flow/README.md +++ b/plugins/session-flow/README.md @@ -294,7 +294,7 @@ tracker filing is offered not automatic, the session is never scored, and it is /session-flow:running-retro arm # arm the detached observer for this session (see below) ``` -**Detached observer substrate.** running-retro also owns an out-of-band observer that turns the +**Detached observer process.** running-retro also owns an out-of-band observer that turns the checkpoint from PULL (invoked in-session) into a path that can also fire *after* the session ends, something a `/loop` structurally cannot do. The `arm` action launches a stdlib-Python tailer, detached from every session's process tree so it outlives the session. The tailer reads the transcript at zero context @@ -476,7 +476,7 @@ The skills adapt to the consuming repo rather than imposing structure: ## Requirements - Node.js on PATH: every hook launches through `node hooks/exec-bash.mjs`, so without it the hooks do not run. -- The observer substrate only: Python 3.10+, `jq`, and `claude` on PATH. `/session-flow:setup` checks each. +- The observer process only: Python 3.10+, `jq`, and `claude` on PATH. `/session-flow:setup` checks each. - `/session-flow:find-handoff` uses Python 3.10+ when present to tell which transcript directories belong to this repository; without it, it lists only directories whose name matches a worktree exactly and says so. @@ -634,7 +634,4 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - diff --git a/plugins/skill-quality/README.md b/plugins/skill-quality/README.md index b4bd66209df..35a348ed541 100644 --- a/plugins/skill-quality/README.md +++ b/plugins/skill-quality/README.md @@ -140,8 +140,10 @@ the reviewer to confirm the description still names that intent, or to restore t missing from the registry warns. `/playbooks:skill-authoring` (`## Metadata`) owns the rule. - No history references in the `SKILL.md` body (advisory). A bare `#N` such as `See PR #1234` or `TODO(#9)` warns with its line numbers. Code spans, fenced blocks, a cross-repo - `owner/repo#N`, link anchors, and any block of lines that carries an as-of date and a recheck - trigger (a pointer record) are exempt. Reference files are not checked. + `owner/repo#N`, link anchors, a bare `#N` whose block of lines also cites N upstream (as + `owner/repo#N` or an `/issues/N` or `/pull/N` URL, the way a pointer record names its upstream + bug), and any block that carries an as-of date and a recheck trigger (a stored-value record) are + exempt. Reference files are not checked. `/playbooks:skill-authoring` (`## History and provenance`) owns the rule. - Skill size (advisory). A `description` over the `description_warn` setting (default 419 characters) or a `SKILL.md` body (the lines after the frontmatter) over 160 lines warns: 419 and @@ -333,7 +335,4 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - diff --git a/plugins/skill-quality/scripts/check-skill.sh b/plugins/skill-quality/scripts/check-skill.sh index 4f552d5d2dc..4d3d1081312 100755 --- a/plugins/skill-quality/scripts/check-skill.sh +++ b/plugins/skill-quality/scripts/check-skill.sh @@ -163,8 +163,9 @@ # 28. Every metadata key is listed in scripts/metadata-registry.txt with the # consumer that reads it (WARN on a key missing from it) # 29. No bare `#N` history reference in the SKILL.md body (WARN; code spans, -# fenced blocks, cross-repo owner/repo#N, link anchors, and pointer-record -# blocks carrying an as-of date and a recheck trigger are exempt) +# fenced blocks, cross-repo owner/repo#N, link anchors, a #N its block +# cites upstream, and stored-value blocks carrying an as-of date and a +# recheck trigger are exempt) # 30. Skill size: description above the description_warn setting (default # 419; description_target, default 250, prints as INFO) or body above 160 # lines (Pocock's measured max; his medians print as INFO), SKILL.md above the @@ -2535,11 +2536,26 @@ fi # inside a tracked-work marker; the test file holds the concrete shapes. # The frontmatter is not read, and reference files are not checked. # Exempt: code spans and fenced code blocks; a cross-repo `owner/repo#N` -# (anything glued to the `#` on the left); link anchors and URLs; and every -# line of a pointer-record block, meaning a run of non-blank lines that carries -# an as-of date and a recheck trigger somewhere in it, so an upstream bug cited -# as a recheck condition stays. +# (anything glued to the `#` on the left); link anchors and URLs; a bare `#N` +# whose block (a run of non-blank lines) also cites N upstream, as `owner/repo#N` +# or an `/issues/N` or `/pull/N` URL, so a pointer record can name its upstream +# bug once in full and then by number; and every line of a stored-value record +# block, one that carries an as-of date and a recheck trigger somewhere in it. HIST_HITS="$(awk ' + function cited(num, lower) { + return lower ~ ("[a-z0-9_.-]+/[a-z0-9_.-]+#" num "([^0-9]|$)") || + lower ~ ("/(issues|pull)/" num "([^0-9]|$)") + } + # 1 when the line holds a bare #N the block does not cite upstream. + function own_ref(s, lower, m) { + while (match(s, /(^|[^A-Za-z0-9_\/.&#-])#[0-9]+([^A-Za-z0-9_-]|$)/)) { + m = substr(s, RSTART, RLENGTH) + gsub(/[^0-9]/, "", m) + if (!cited(m, lower)) return 1 + s = substr(s, RSTART + RLENGTH) + } + return 0 + } function flush( i, s, lower) { if (n == 0) return lower = tolower(blk) @@ -2550,7 +2566,7 @@ HIST_HITS="$(awk ' gsub(/\]\([^)]*\)/, "]", s) gsub(/<[^>]*>/, "", s) gsub(/https?:\/\/[^[:space:]]*/, "", s) - if (s ~ /(^|[^A-Za-z0-9_\/.&#-])#[0-9]+([^A-Za-z0-9_-]|$)/) print num[i] + if (own_ref(s, lower)) print num[i] } } n = 0 diff --git a/plugins/skill-quality/scripts/check-skill.test.sh b/plugins/skill-quality/scripts/check-skill.test.sh index 4205be15504..2db6b9fb1ea 100755 --- a/plugins/skill-quality/scripts/check-skill.test.sh +++ b/plugins/skill-quality/scripts/check-skill.test.sh @@ -5546,6 +5546,15 @@ hist_case hist-pointer-block quiet "check 29 stays quiet inside a multi-line poi - **As of**: 2026-10-01; #98193 open. - **Recheck trigger**: #98193 closes or changes state, the monitoring page documents which requests skip `api_request`, or `compare` reports `events short` on a store recorded after a fix shipped. EOF +hist_case hist-pointer-unstamped quiet "check 29 stays quiet on a bare #N its unstamped pointer record cites upstream" <<'EOF' +- **Pointer**: for missing `api_request` events, see anthropics/claude-code#98193; when #98193 closes, read . +EOF +hist_case hist-pointer-url quiet "check 29 stays quiet on a bare #N its block cites by issue URL" <<'EOF' +- **Pointer**: [the missing-events report](https://github.com/anthropics/claude-code/issues/98193); when #98193 closes, recheck `compare`. +EOF +hist_case hist-pointer-own warn "check 29 WARNs on a bare #N its unstamped block does not cite upstream" <<'EOF' +- **Pointer**: see anthropics/claude-code#98193; this rule came from #1234. +EOF hist_case hist-code-span quiet "check 29 stays quiet on #N inside a code span" <<'EOF' The add-side is `/code-tidying:tidy #14`. EOF diff --git a/plugins/source-control/README.md b/plugins/source-control/README.md index 25a6cd1e803..48e161935bd 100644 --- a/plugins/source-control/README.md +++ b/plugins/source-control/README.md @@ -632,9 +632,6 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - ## Security diff --git a/plugins/speech/README.md b/plugins/speech/README.md index 3b81034649f..5248f2a104c 100644 --- a/plugins/speech/README.md +++ b/plugins/speech/README.md @@ -155,7 +155,4 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - diff --git a/plugins/testing/README.md b/plugins/testing/README.md index cc7e3ba29ab..4215e0edf6d 100644 --- a/plugins/testing/README.md +++ b/plugins/testing/README.md @@ -222,9 +222,6 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - ## License diff --git a/plugins/toolchain/README.md b/plugins/toolchain/README.md index b98e8261de9..fcc4e869506 100644 --- a/plugins/toolchain/README.md +++ b/plugins/toolchain/README.md @@ -91,9 +91,6 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - ## License diff --git a/plugins/typos-format/README.md b/plugins/typos-format/README.md index 8499f24fe25..9bba1a58beb 100644 --- a/plugins/typos-format/README.md +++ b/plugins/typos-format/README.md @@ -115,9 +115,6 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - ## License diff --git a/plugins/user-interface/README.md b/plugins/user-interface/README.md index 749427d011b..1693f1b9861 100644 --- a/plugins/user-interface/README.md +++ b/plugins/user-interface/README.md @@ -250,7 +250,4 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - diff --git a/plugins/verification/README.md b/plugins/verification/README.md index 99487a57eee..79e0bae382d 100644 --- a/plugins/verification/README.md +++ b/plugins/verification/README.md @@ -1,7 +1,7 @@ # verification A Claude Code plugin for the **verification stage** of a disciplined dev workflow. It proves a change achieved its intended outcome, and proves measurable-improvement claims -against a baseline captured before the change. Three skills, one concern: turning a +against a baseline captured before the change. Its three skills share one concern, turning a green build into confirmed outcomes. | Skill | What it does | @@ -91,9 +91,6 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - ## License diff --git a/plugins/visualization/README.md b/plugins/visualization/README.md index 05a874120e8..ec4fb526d8d 100644 --- a/plugins/visualization/README.md +++ b/plugins/visualization/README.md @@ -170,9 +170,6 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - ## Install diff --git a/plugins/work-items/README.md b/plugins/work-items/README.md index ebadb771c7f..46e9a535840 100644 --- a/plugins/work-items/README.md +++ b/plugins/work-items/README.md @@ -54,8 +54,8 @@ plugin: `track`, `work`, `work-loop`, `triage`, `decompose`, `attend-queue` and infrastructure skills (`setup`, `onboard-adapter`) speak in provider and tracker terms, and `ship` speaks in container and journey terms. Nobody says "add a ticket" to an adapter generator. Stuffing the tokens into their triggers to -satisfy a fleet-wide claim would buy a tidier sentence at the cost of worse -routing, so the claim is scoped instead. +satisfy a fleet-wide claim would make the sentence tidier and the +routing worse, so the claim is scoped instead. ## `/work-items:track` actions @@ -405,9 +405,6 @@ For a Claude Code release without `plugin configure`, see [Plugin install](https - [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect) - [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins) -As of 2026-11-04. Recheck trigger: one of these sections moves, or a Claude Code -release note changes how plugin options are set or stored. - ## License diff --git a/scripts/check-data-root.test.sh b/scripts/check-data-root.test.sh index 3f312a9e01b..0250d946bca 100755 --- a/scripts/check-data-root.test.sh +++ b/scripts/check-data-root.test.sh @@ -76,8 +76,8 @@ run_in "$opts_gen" python3 "$SELF_DIR/sync-plugin-options-docs.py" block="$(cat "$opts_gen/plugins/p/README.md")" check "plugin-options-docs block restates no upstream fact" \ '[[ $block != *CLAUDE_PLUGIN_OPTION_* && $block != *--config* && $block != *--values-stdin* && $block != *"settings scopes"* && $block != *"will prompt for"* && $block != *"options dialog"* ]]' -check "plugin-options-docs block carries its as-of date and recheck trigger" \ - '[[ $block == *"As of 20"* && $block == *"Recheck trigger:"* ]]' +check "plugin-options-docs block, pointers only, carries no as-of date or recheck trigger" \ + '[[ $block == *"### Upstream documentation"* && $block != *"As of"* && $block != *"Recheck trigger"* ]]' check "plugin-options-docs block keeps a sensitive option off the command line" \ '[[ $block == *"Never put this plugin'"'"'s \`sensitive\` option(s) (\`tok\`) on a command line"* ]]' check "plugin-options-docs points a mixed plugin at the install fallback" \ @@ -98,21 +98,6 @@ check "plugin-options-docs withholds the install fallback when every option is s check "plugin-options-docs offers no by-hand route when every option is sensitive" \ '[[ $block != *"**By hand:**"* ]]' -# The generator's inputs and outputs pass the stamp check's trigger-less rule: READMEs with the block, -# the plugin manifests it reads, the generator and this test, plus this change's own fragments. Only -# that rule is read: an expiry finding depends on today's date, so it would fail as dates age. -stamped=("$SELF_DIR/sync-plugin-options-docs.py" "$SELF_DIR/check-data-root.test.sh") -for readme in "$SELF_DIR"/../plugins/*/README.md; do - grep -qF 'END GENERATED: plugin options' "$readme" && stamped+=("$readme") -done -for other in "$SELF_DIR"/../plugins/*/.claude-plugin/plugin.json "$SELF_DIR"/../.changes/*/docs-12700-plugin-options-pointers-*.md; do - [[ -f $other ]] && stamped+=("$other") -done -RC=0 -OUT="$(bash "$SELF_DIR/../plugins/attribution/skills/audit/scripts/check-stamps.sh" --trigger-less "${stamped[@]}" 2>&1)" || RC=$? -check "plugin-options-docs files pass check-stamps --trigger-less" \ - '[[ ${#stamped[@]} -gt 2 && $RC == 0 && $OUT == *"\"trigger_less_check\": true"* && $OUT != *rule-trigger-less-stamp* ]]' - # check-changelog-parity.sh parity_bad="$tmp/parity-bad" parity_ok="$tmp/parity-ok" diff --git a/scripts/sync-plugin-options-docs.py b/scripts/sync-plugin-options-docs.py index 8ca22365dfa..a993f466cf2 100755 --- a/scripts/sync-plugin-options-docs.py +++ b/scripts/sync-plugin-options-docs.py @@ -75,7 +75,6 @@ def convention_cite(plugin: str) -> str: SESSION_DOCS = "https://code.claude.com/docs/en/plugins/cli-reference#plugin-in-a-session" USER_CONFIG_DOCS = "https://code.claude.com/docs/en/plugins/manifest-reference#user-configuration" PLUGIN_CONFIGS_DOCS = "https://code.claude.com/docs/en/settings-reference#pluginconfigs" -POINTERS_AS_OF = "2026-11-04" def render(plugin: str, marketplace: str, options: dict) -> str: @@ -169,9 +168,6 @@ def render(plugin: str, marketplace: str, options: dict) -> str: "- [Settings files and who they affect](https://code.claude.com/docs/en/settings#settings-files-and-who-they-affect)", "- [Manage installed plugins](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins)", "", - f"As of {POINTERS_AS_OF}. Recheck trigger: one of these sections moves, or a Claude Code", - "release note changes how plugin options are set or stored.", - "", END, ] return "\n".join(lines)