From 165adb63279356a6de65e84e6805f54524714cca Mon Sep 17 00:00:00 2001 From: Kyle Sexton <153232337+kyle-sexton@users.noreply.github.com> Date: Wed, 11 Nov 2026 18:25:50 -0500 Subject: [PATCH 1/5] docs: drop stamps from pointer records (docs) Upstream-drift 5.0.0 says a pointer record carries no as-of date and no recheck trigger; only a stored value keeps them. This sweeps docs/ (excluding CHANGELOG.md files, docs/standards/ and docs/native-surfaces.md): - Pointer records lose both stamps; the decision and anchored link stay. - Recorded decisions with a named trigger lose only the as-of date. - Stored values (restated upstream behavior, probes, versions, measured figures), ADRs (history is never rewritten) and docs/upstream/ records keep their stamps. - Pointers that lacked a section anchor in execution-target and workspace-environment now link the section; the execution-target cloud launch pointer follows the renamed section. The standards and plugin-reconfiguration contracts are shared copies, so sync-shared-copies.sh regenerated 34 plugin reference copies, each with a patch fragment. execution-target, workspace-environment and routing-as-data get a patch CHANGELOG entry because their Versioning sections ask for one. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01VcupojQwC9uJAfmSt4EHZm --- .../docs-drop-pointer-stamps-docs-59d1ab35.md | 7 ++ .../docs-drop-pointer-stamps-docs-c1310608.md | 7 ++ .../docs-drop-pointer-stamps-docs-cf8464c6.md | 7 ++ .../docs-drop-pointer-stamps-docs-02d3d415.md | 7 ++ .../docs-drop-pointer-stamps-docs-e20c0f12.md | 7 ++ .../docs-drop-pointer-stamps-docs-93815c39.md | 7 ++ .../docs-drop-pointer-stamps-docs-4ec33207.md | 7 ++ .../docs-drop-pointer-stamps-docs-2795f7d3.md | 7 ++ .../docs-drop-pointer-stamps-docs-f0dd0f3d.md | 7 ++ .../docs-drop-pointer-stamps-docs-e989f5ca.md | 7 ++ .../docs-drop-pointer-stamps-docs-311291f3.md | 7 ++ .../docs-drop-pointer-stamps-docs-790e9362.md | 7 ++ .../docs-drop-pointer-stamps-docs-02204fb4.md | 7 ++ .../docs-drop-pointer-stamps-docs-88dd9c85.md | 7 ++ .../docs-drop-pointer-stamps-docs-7c556591.md | 7 ++ .../docs-drop-pointer-stamps-docs-1d4fb08d.md | 7 ++ .../docs-drop-pointer-stamps-docs-283c25ce.md | 7 ++ .../docs-drop-pointer-stamps-docs-34f4830b.md | 7 ++ .../docs-drop-pointer-stamps-docs-8cdd38f4.md | 7 ++ .../docs-drop-pointer-stamps-docs-95a54540.md | 7 ++ .../docs-drop-pointer-stamps-docs-17e595f4.md | 7 ++ .../docs-drop-pointer-stamps-docs-2c85da29.md | 7 ++ .../docs-drop-pointer-stamps-docs-58a74f42.md | 7 ++ .../docs-drop-pointer-stamps-docs-f3ff0e32.md | 7 ++ .../docs-drop-pointer-stamps-docs-b1f88cc4.md | 7 ++ .../docs-drop-pointer-stamps-docs-779e7ab2.md | 7 ++ .../docs-drop-pointer-stamps-docs-faffce07.md | 7 ++ .../docs-drop-pointer-stamps-docs-c8a62040.md | 7 ++ .../docs-drop-pointer-stamps-docs-f94267d4.md | 7 ++ .../docs-drop-pointer-stamps-docs-5533c9fe.md | 7 ++ .../docs-drop-pointer-stamps-docs-cc5fdd1f.md | 7 ++ .../docs-drop-pointer-stamps-docs-887a2ea0.md | 7 ++ .../docs-drop-pointer-stamps-docs-f7f06966.md | 7 ++ docs/contracts/config-cascade/README.md | 5 -- docs/contracts/ecosystem-commands/README.md | 3 +- docs/contracts/execution-target/CHANGELOG.md | 6 ++ docs/contracts/execution-target/README.md | 10 +-- docs/contracts/hook-budget/README.md | 3 - docs/contracts/hook-input-rewriting/README.md | 8 +- docs/contracts/hook-observability/README.md | 25 +----- docs/contracts/hook-telemetry/README.md | 4 - docs/contracts/loop-lane/README.md | 24 +----- docs/contracts/mod-authoring/README.md | 11 --- .../plugin-reconfiguration/README.md | 7 -- docs/contracts/prerequisites/README.md | 9 --- docs/contracts/rendered-views/README.md | 4 - docs/contracts/routing-as-data/CHANGELOG.md | 6 ++ docs/contracts/routing-as-data/README.md | 4 +- docs/contracts/standards/README.md | 3 - .../workspace-environment/CHANGELOG.md | 5 ++ .../contracts/workspace-environment/README.md | 23 +++--- docs/extensibility-contract-smoke-tests.md | 17 ++-- docs/migration-playbook.md | 2 - .../shared-surface-instruction-governance.md | 2 +- docs/plugin-philosophy.md | 78 +++++-------------- .../reference/plugin-reconfiguration.md | 7 -- .../reference/plugin-reconfiguration.md | 7 -- .../reference/plugin-reconfiguration.md | 7 -- .../reference/plugin-reconfiguration.md | 7 -- .../bugs/reference/plugin-reconfiguration.md | 7 -- .../reference/plugin-reconfiguration.md | 7 -- .../reference/plugin-reconfiguration.md | 7 -- .../reference/plugin-reconfiguration.md | 7 -- .../reference/plugin-reconfiguration.md | 7 -- .../reference/plugin-reconfiguration.md | 7 -- .../reference/plugin-reconfiguration.md | 7 -- .../reference/plugin-reconfiguration.md | 7 -- .../reference/plugin-reconfiguration.md | 7 -- .../reference/plugin-reconfiguration.md | 7 -- .../reference/plugin-reconfiguration.md | 7 -- .../reference/plugin-reconfiguration.md | 7 -- .../reference/standards-contract.md | 3 - .../reference/plugin-reconfiguration.md | 7 -- .../reference/plugin-reconfiguration.md | 7 -- .../reference/plugin-reconfiguration.md | 7 -- .../miro/reference/plugin-reconfiguration.md | 7 -- .../reference/plugin-reconfiguration.md | 7 -- .../reference/plugin-reconfiguration.md | 7 -- .../planning/reference/standards-contract.md | 3 - .../reference/plugin-reconfiguration.md | 7 -- .../reference/plugin-reconfiguration.md | 7 -- .../reference/plugin-reconfiguration.md | 7 -- .../review/reference/standards-contract.md | 3 - .../reference/plugin-reconfiguration.md | 7 -- .../reference/plugin-reconfiguration.md | 7 -- .../reference/plugin-reconfiguration.md | 7 -- .../reference/plugin-reconfiguration.md | 7 -- .../reference/plugin-reconfiguration.md | 7 -- .../reference/plugin-reconfiguration.md | 7 -- 89 files changed, 302 insertions(+), 414 deletions(-) create mode 100644 .changes/actionlint/docs-drop-pointer-stamps-docs-59d1ab35.md create mode 100644 .changes/ai-briefing/docs-drop-pointer-stamps-docs-c1310608.md create mode 100644 .changes/bash-format/docs-drop-pointer-stamps-docs-cf8464c6.md create mode 100644 .changes/biome-format/docs-drop-pointer-stamps-docs-02d3d415.md create mode 100644 .changes/bugs/docs-drop-pointer-stamps-docs-e20c0f12.md create mode 100644 .changes/code-tidying/docs-drop-pointer-stamps-docs-93815c39.md create mode 100644 .changes/context-budget/docs-drop-pointer-stamps-docs-4ec33207.md create mode 100644 .changes/desktop-notification/docs-drop-pointer-stamps-docs-2795f7d3.md create mode 100644 .changes/discipline/docs-drop-pointer-stamps-docs-f0dd0f3d.md create mode 100644 .changes/disk-hygiene/docs-drop-pointer-stamps-docs-e989f5ca.md create mode 100644 .changes/docs-hygiene/docs-drop-pointer-stamps-docs-311291f3.md create mode 100644 .changes/education/docs-drop-pointer-stamps-docs-790e9362.md create mode 100644 .changes/eol-normalizer/docs-drop-pointer-stamps-docs-02204fb4.md create mode 100644 .changes/go-format/docs-drop-pointer-stamps-docs-88dd9c85.md create mode 100644 .changes/guardrails/docs-drop-pointer-stamps-docs-7c556591.md create mode 100644 .changes/harness-ops/docs-drop-pointer-stamps-docs-1d4fb08d.md create mode 100644 .changes/improvement/docs-drop-pointer-stamps-docs-283c25ce.md create mode 100644 .changes/knowledge/docs-drop-pointer-stamps-docs-34f4830b.md create mode 100644 .changes/machine-health/docs-drop-pointer-stamps-docs-8cdd38f4.md create mode 100644 .changes/markdown-format/docs-drop-pointer-stamps-docs-95a54540.md create mode 100644 .changes/miro/docs-drop-pointer-stamps-docs-17e595f4.md create mode 100644 .changes/mutation-testing/docs-drop-pointer-stamps-docs-2c85da29.md create mode 100644 .changes/planning/docs-drop-pointer-stamps-docs-58a74f42.md create mode 100644 .changes/powershell-format/docs-drop-pointer-stamps-docs-f3ff0e32.md create mode 100644 .changes/rate-limit-guard/docs-drop-pointer-stamps-docs-b1f88cc4.md create mode 100644 .changes/repo-hygiene/docs-drop-pointer-stamps-docs-779e7ab2.md create mode 100644 .changes/review/docs-drop-pointer-stamps-docs-faffce07.md create mode 100644 .changes/ruff-format/docs-drop-pointer-stamps-docs-c8a62040.md create mode 100644 .changes/session-flow/docs-drop-pointer-stamps-docs-f94267d4.md create mode 100644 .changes/skill-quality/docs-drop-pointer-stamps-docs-5533c9fe.md create mode 100644 .changes/source-control/docs-drop-pointer-stamps-docs-cc5fdd1f.md create mode 100644 .changes/typos-format/docs-drop-pointer-stamps-docs-887a2ea0.md create mode 100644 .changes/user-interface/docs-drop-pointer-stamps-docs-f7f06966.md diff --git a/.changes/actionlint/docs-drop-pointer-stamps-docs-59d1ab35.md b/.changes/actionlint/docs-drop-pointer-stamps-docs-59d1ab35.md new file mode 100644 index 00000000000..b6bdc3f861e --- /dev/null +++ b/.changes/actionlint/docs-drop-pointer-stamps-docs-59d1ab35.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- Pointer records no longer carry an as-of date or recheck trigger; stored values keep theirs. diff --git a/.changes/ai-briefing/docs-drop-pointer-stamps-docs-c1310608.md b/.changes/ai-briefing/docs-drop-pointer-stamps-docs-c1310608.md new file mode 100644 index 00000000000..b6bdc3f861e --- /dev/null +++ b/.changes/ai-briefing/docs-drop-pointer-stamps-docs-c1310608.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- Pointer records no longer carry an as-of date or recheck trigger; stored values keep theirs. diff --git a/.changes/bash-format/docs-drop-pointer-stamps-docs-cf8464c6.md b/.changes/bash-format/docs-drop-pointer-stamps-docs-cf8464c6.md new file mode 100644 index 00000000000..b6bdc3f861e --- /dev/null +++ b/.changes/bash-format/docs-drop-pointer-stamps-docs-cf8464c6.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- Pointer records no longer carry an as-of date or recheck trigger; stored values keep theirs. diff --git a/.changes/biome-format/docs-drop-pointer-stamps-docs-02d3d415.md b/.changes/biome-format/docs-drop-pointer-stamps-docs-02d3d415.md new file mode 100644 index 00000000000..b6bdc3f861e --- /dev/null +++ b/.changes/biome-format/docs-drop-pointer-stamps-docs-02d3d415.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- Pointer records no longer carry an as-of date or recheck trigger; stored values keep theirs. diff --git a/.changes/bugs/docs-drop-pointer-stamps-docs-e20c0f12.md b/.changes/bugs/docs-drop-pointer-stamps-docs-e20c0f12.md new file mode 100644 index 00000000000..b6bdc3f861e --- /dev/null +++ b/.changes/bugs/docs-drop-pointer-stamps-docs-e20c0f12.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- Pointer records no longer carry an as-of date or recheck trigger; stored values keep theirs. diff --git a/.changes/code-tidying/docs-drop-pointer-stamps-docs-93815c39.md b/.changes/code-tidying/docs-drop-pointer-stamps-docs-93815c39.md new file mode 100644 index 00000000000..b6bdc3f861e --- /dev/null +++ b/.changes/code-tidying/docs-drop-pointer-stamps-docs-93815c39.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- Pointer records no longer carry an as-of date or recheck trigger; stored values keep theirs. diff --git a/.changes/context-budget/docs-drop-pointer-stamps-docs-4ec33207.md b/.changes/context-budget/docs-drop-pointer-stamps-docs-4ec33207.md new file mode 100644 index 00000000000..b6bdc3f861e --- /dev/null +++ b/.changes/context-budget/docs-drop-pointer-stamps-docs-4ec33207.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- Pointer records no longer carry an as-of date or recheck trigger; stored values keep theirs. diff --git a/.changes/desktop-notification/docs-drop-pointer-stamps-docs-2795f7d3.md b/.changes/desktop-notification/docs-drop-pointer-stamps-docs-2795f7d3.md new file mode 100644 index 00000000000..b6bdc3f861e --- /dev/null +++ b/.changes/desktop-notification/docs-drop-pointer-stamps-docs-2795f7d3.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- Pointer records no longer carry an as-of date or recheck trigger; stored values keep theirs. diff --git a/.changes/discipline/docs-drop-pointer-stamps-docs-f0dd0f3d.md b/.changes/discipline/docs-drop-pointer-stamps-docs-f0dd0f3d.md new file mode 100644 index 00000000000..b6bdc3f861e --- /dev/null +++ b/.changes/discipline/docs-drop-pointer-stamps-docs-f0dd0f3d.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- Pointer records no longer carry an as-of date or recheck trigger; stored values keep theirs. diff --git a/.changes/disk-hygiene/docs-drop-pointer-stamps-docs-e989f5ca.md b/.changes/disk-hygiene/docs-drop-pointer-stamps-docs-e989f5ca.md new file mode 100644 index 00000000000..b6bdc3f861e --- /dev/null +++ b/.changes/disk-hygiene/docs-drop-pointer-stamps-docs-e989f5ca.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- Pointer records no longer carry an as-of date or recheck trigger; stored values keep theirs. diff --git a/.changes/docs-hygiene/docs-drop-pointer-stamps-docs-311291f3.md b/.changes/docs-hygiene/docs-drop-pointer-stamps-docs-311291f3.md new file mode 100644 index 00000000000..b6bdc3f861e --- /dev/null +++ b/.changes/docs-hygiene/docs-drop-pointer-stamps-docs-311291f3.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- Pointer records no longer carry an as-of date or recheck trigger; stored values keep theirs. diff --git a/.changes/education/docs-drop-pointer-stamps-docs-790e9362.md b/.changes/education/docs-drop-pointer-stamps-docs-790e9362.md new file mode 100644 index 00000000000..b6bdc3f861e --- /dev/null +++ b/.changes/education/docs-drop-pointer-stamps-docs-790e9362.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- Pointer records no longer carry an as-of date or recheck trigger; stored values keep theirs. diff --git a/.changes/eol-normalizer/docs-drop-pointer-stamps-docs-02204fb4.md b/.changes/eol-normalizer/docs-drop-pointer-stamps-docs-02204fb4.md new file mode 100644 index 00000000000..b6bdc3f861e --- /dev/null +++ b/.changes/eol-normalizer/docs-drop-pointer-stamps-docs-02204fb4.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- Pointer records no longer carry an as-of date or recheck trigger; stored values keep theirs. diff --git a/.changes/go-format/docs-drop-pointer-stamps-docs-88dd9c85.md b/.changes/go-format/docs-drop-pointer-stamps-docs-88dd9c85.md new file mode 100644 index 00000000000..b6bdc3f861e --- /dev/null +++ b/.changes/go-format/docs-drop-pointer-stamps-docs-88dd9c85.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- Pointer records no longer carry an as-of date or recheck trigger; stored values keep theirs. diff --git a/.changes/guardrails/docs-drop-pointer-stamps-docs-7c556591.md b/.changes/guardrails/docs-drop-pointer-stamps-docs-7c556591.md new file mode 100644 index 00000000000..b6bdc3f861e --- /dev/null +++ b/.changes/guardrails/docs-drop-pointer-stamps-docs-7c556591.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- Pointer records no longer carry an as-of date or recheck trigger; stored values keep theirs. diff --git a/.changes/harness-ops/docs-drop-pointer-stamps-docs-1d4fb08d.md b/.changes/harness-ops/docs-drop-pointer-stamps-docs-1d4fb08d.md new file mode 100644 index 00000000000..b6bdc3f861e --- /dev/null +++ b/.changes/harness-ops/docs-drop-pointer-stamps-docs-1d4fb08d.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- Pointer records no longer carry an as-of date or recheck trigger; stored values keep theirs. diff --git a/.changes/improvement/docs-drop-pointer-stamps-docs-283c25ce.md b/.changes/improvement/docs-drop-pointer-stamps-docs-283c25ce.md new file mode 100644 index 00000000000..b6bdc3f861e --- /dev/null +++ b/.changes/improvement/docs-drop-pointer-stamps-docs-283c25ce.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- Pointer records no longer carry an as-of date or recheck trigger; stored values keep theirs. diff --git a/.changes/knowledge/docs-drop-pointer-stamps-docs-34f4830b.md b/.changes/knowledge/docs-drop-pointer-stamps-docs-34f4830b.md new file mode 100644 index 00000000000..b6bdc3f861e --- /dev/null +++ b/.changes/knowledge/docs-drop-pointer-stamps-docs-34f4830b.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- Pointer records no longer carry an as-of date or recheck trigger; stored values keep theirs. diff --git a/.changes/machine-health/docs-drop-pointer-stamps-docs-8cdd38f4.md b/.changes/machine-health/docs-drop-pointer-stamps-docs-8cdd38f4.md new file mode 100644 index 00000000000..b6bdc3f861e --- /dev/null +++ b/.changes/machine-health/docs-drop-pointer-stamps-docs-8cdd38f4.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- Pointer records no longer carry an as-of date or recheck trigger; stored values keep theirs. diff --git a/.changes/markdown-format/docs-drop-pointer-stamps-docs-95a54540.md b/.changes/markdown-format/docs-drop-pointer-stamps-docs-95a54540.md new file mode 100644 index 00000000000..b6bdc3f861e --- /dev/null +++ b/.changes/markdown-format/docs-drop-pointer-stamps-docs-95a54540.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- Pointer records no longer carry an as-of date or recheck trigger; stored values keep theirs. diff --git a/.changes/miro/docs-drop-pointer-stamps-docs-17e595f4.md b/.changes/miro/docs-drop-pointer-stamps-docs-17e595f4.md new file mode 100644 index 00000000000..b6bdc3f861e --- /dev/null +++ b/.changes/miro/docs-drop-pointer-stamps-docs-17e595f4.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- Pointer records no longer carry an as-of date or recheck trigger; stored values keep theirs. diff --git a/.changes/mutation-testing/docs-drop-pointer-stamps-docs-2c85da29.md b/.changes/mutation-testing/docs-drop-pointer-stamps-docs-2c85da29.md new file mode 100644 index 00000000000..b6bdc3f861e --- /dev/null +++ b/.changes/mutation-testing/docs-drop-pointer-stamps-docs-2c85da29.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- Pointer records no longer carry an as-of date or recheck trigger; stored values keep theirs. diff --git a/.changes/planning/docs-drop-pointer-stamps-docs-58a74f42.md b/.changes/planning/docs-drop-pointer-stamps-docs-58a74f42.md new file mode 100644 index 00000000000..b6bdc3f861e --- /dev/null +++ b/.changes/planning/docs-drop-pointer-stamps-docs-58a74f42.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- Pointer records no longer carry an as-of date or recheck trigger; stored values keep theirs. diff --git a/.changes/powershell-format/docs-drop-pointer-stamps-docs-f3ff0e32.md b/.changes/powershell-format/docs-drop-pointer-stamps-docs-f3ff0e32.md new file mode 100644 index 00000000000..b6bdc3f861e --- /dev/null +++ b/.changes/powershell-format/docs-drop-pointer-stamps-docs-f3ff0e32.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- Pointer records no longer carry an as-of date or recheck trigger; stored values keep theirs. diff --git a/.changes/rate-limit-guard/docs-drop-pointer-stamps-docs-b1f88cc4.md b/.changes/rate-limit-guard/docs-drop-pointer-stamps-docs-b1f88cc4.md new file mode 100644 index 00000000000..b6bdc3f861e --- /dev/null +++ b/.changes/rate-limit-guard/docs-drop-pointer-stamps-docs-b1f88cc4.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- Pointer records no longer carry an as-of date or recheck trigger; stored values keep theirs. diff --git a/.changes/repo-hygiene/docs-drop-pointer-stamps-docs-779e7ab2.md b/.changes/repo-hygiene/docs-drop-pointer-stamps-docs-779e7ab2.md new file mode 100644 index 00000000000..b6bdc3f861e --- /dev/null +++ b/.changes/repo-hygiene/docs-drop-pointer-stamps-docs-779e7ab2.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- Pointer records no longer carry an as-of date or recheck trigger; stored values keep theirs. diff --git a/.changes/review/docs-drop-pointer-stamps-docs-faffce07.md b/.changes/review/docs-drop-pointer-stamps-docs-faffce07.md new file mode 100644 index 00000000000..b6bdc3f861e --- /dev/null +++ b/.changes/review/docs-drop-pointer-stamps-docs-faffce07.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- Pointer records no longer carry an as-of date or recheck trigger; stored values keep theirs. diff --git a/.changes/ruff-format/docs-drop-pointer-stamps-docs-c8a62040.md b/.changes/ruff-format/docs-drop-pointer-stamps-docs-c8a62040.md new file mode 100644 index 00000000000..b6bdc3f861e --- /dev/null +++ b/.changes/ruff-format/docs-drop-pointer-stamps-docs-c8a62040.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- Pointer records no longer carry an as-of date or recheck trigger; stored values keep theirs. diff --git a/.changes/session-flow/docs-drop-pointer-stamps-docs-f94267d4.md b/.changes/session-flow/docs-drop-pointer-stamps-docs-f94267d4.md new file mode 100644 index 00000000000..b6bdc3f861e --- /dev/null +++ b/.changes/session-flow/docs-drop-pointer-stamps-docs-f94267d4.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- Pointer records no longer carry an as-of date or recheck trigger; stored values keep theirs. diff --git a/.changes/skill-quality/docs-drop-pointer-stamps-docs-5533c9fe.md b/.changes/skill-quality/docs-drop-pointer-stamps-docs-5533c9fe.md new file mode 100644 index 00000000000..b6bdc3f861e --- /dev/null +++ b/.changes/skill-quality/docs-drop-pointer-stamps-docs-5533c9fe.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- Pointer records no longer carry an as-of date or recheck trigger; stored values keep theirs. diff --git a/.changes/source-control/docs-drop-pointer-stamps-docs-cc5fdd1f.md b/.changes/source-control/docs-drop-pointer-stamps-docs-cc5fdd1f.md new file mode 100644 index 00000000000..b6bdc3f861e --- /dev/null +++ b/.changes/source-control/docs-drop-pointer-stamps-docs-cc5fdd1f.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- Pointer records no longer carry an as-of date or recheck trigger; stored values keep theirs. diff --git a/.changes/typos-format/docs-drop-pointer-stamps-docs-887a2ea0.md b/.changes/typos-format/docs-drop-pointer-stamps-docs-887a2ea0.md new file mode 100644 index 00000000000..b6bdc3f861e --- /dev/null +++ b/.changes/typos-format/docs-drop-pointer-stamps-docs-887a2ea0.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- Pointer records no longer carry an as-of date or recheck trigger; stored values keep theirs. diff --git a/.changes/user-interface/docs-drop-pointer-stamps-docs-f7f06966.md b/.changes/user-interface/docs-drop-pointer-stamps-docs-f7f06966.md new file mode 100644 index 00000000000..b6bdc3f861e --- /dev/null +++ b/.changes/user-interface/docs-drop-pointer-stamps-docs-f7f06966.md @@ -0,0 +1,7 @@ +--- +bump: patch +--- + +### Changed + +- Pointer records no longer carry an as-of date or recheck trigger; stored values keep theirs. diff --git a/docs/contracts/config-cascade/README.md b/docs/contracts/config-cascade/README.md index bc493257601..1e9a56d58a2 100644 --- a/docs/contracts/config-cascade/README.md +++ b/docs/contracts/config-cascade/README.md @@ -454,7 +454,6 @@ decision. is a declared exception, not drift. - **Basis:** [ADR 0042](../../adr/0042-ratify-consumer-config-location-outliers-in-place.md) on the owner decision on #3577; the existing `.claude/standards.yaml` pointer already roots the directory, so no new mechanism is needed. - - **As of:** 2026-09-29. - **Recheck:** a web-session measurement shows plugin-owned `.claude/` writes are fine everywhere and a consumer reports confusion, or Claude Code changes protected-path handling. - **`songwriting` reads template overrides from `songwriting/templates/`.** The consumer's prompt @@ -469,7 +468,6 @@ decision. - **Basis:** [ADR 0042](../../adr/0042-ratify-consumer-config-location-outliers-in-place.md); `plugins/songwriting/skills/setup/SKILL.md` "The two surfaces"; the path the `rhyme`, `song-form`, `meter-prosody`, `co-write`, `metaphor`, `diagnose`, `object-writing`, `practice` and `workflow` skills check. - - **As of:** 2026-09-29. - **Recheck:** a template override becomes a settings-shaped file (keyed values rather than prose), or the setup skill starts writing under `.claude/`. - **`work-items` reads its recurring schedule from `.github/recurring-schedule.json`.** The file @@ -483,7 +481,6 @@ decision. exception. - **Basis:** [ADR 0042](../../adr/0042-ratify-consumer-config-location-outliers-in-place.md); `plugins/work-items/reference/tracker-seam.md` "Recurring schedule"; `plugins/work-items/skills/setup/SKILL.md`. - - **As of:** 2026-09-29. - **Recheck:** the schedule gains a personal override or user-global layer, or the reconciling automation moves out of `.github/`. - **`autonomy` exempts its security axes.** Layers refine additively as the contract requires, except @@ -516,7 +513,6 @@ decision. - **Claim:** the three gitignore postures stay; recommend is default; two consumer-root appends are declared exceptions; own-ignore-file is a different file. - **Basis:** the owner decision on #3573 (keep the three postures), ADR 0040, and ADR 0015. - - **As of:** 2026-09-29. - **Recheck:** a setup skill grows a third consumer-root append, or a maintainer converges the fleet onto one posture. - **`source-control` stops `branch_issue_pattern` resolution on an unusable layer (#4673).** @@ -646,7 +642,6 @@ conformance. - **Claim:** the glance table is generated from the Implementers rows; engines are not unified. - **Basis:** #3575 and `scripts/sync-config-cascade-semantics.py`. -- **As of:** 2026-09-29. - **Recheck:** operators still miss the row, then add the per-setup check line. ## Implementers diff --git a/docs/contracts/ecosystem-commands/README.md b/docs/contracts/ecosystem-commands/README.md index 1f4462302b8..f4a9fe23dec 100644 --- a/docs/contracts/ecosystem-commands/README.md +++ b/docs/contracts/ecosystem-commands/README.md @@ -163,8 +163,7 @@ no other ecosystem-commands key. It diverges from the tolerant-reader paragraph file outside the supported YAML subset stops the run with exit 2 (`plugins/code-metrics/scripts/resolve-config.py:450-455`) instead of failing soft. Parseable but schema-invalid content is not validated. **Basis:** `plugins/code-metrics/reference/config.md` "Layers and -merge form", the paragraph on consumer ecosystems files. **As of:** 2026-09-29. **Recheck:** when -that paragraph names another key, or an audit skill starts running a verb from the ecosystem file. +merge form", the paragraph on consumer ecosystems files. **Recheck:** when that paragraph names another key, or an audit skill starts running a verb from the ecosystem file. ## Task-runner deferral (recorded decision) diff --git a/docs/contracts/execution-target/CHANGELOG.md b/docs/contracts/execution-target/CHANGELOG.md index e4a73bc273e..38776a7c458 100644 --- a/docs/contracts/execution-target/CHANGELOG.md +++ b/docs/contracts/execution-target/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog for the execution-target convention +## 2.0.1 - 2026-11-11 + +The vendor-fact pointers no longer carry an as-of date or recheck trigger, per the upstream-drift +convention 5.0.0. The cloud launch pointer links the renamed "Start a cloud session from your +terminal" section, and the cloud environments pointer links its two sections by anchor. + ## 2.0.0 - 2026-10-21 Removed the `` item marker comment and the "Item fallback" diff --git a/docs/contracts/execution-target/README.md b/docs/contracts/execution-target/README.md index 1b52b90903e..6ac21a13ef7 100644 --- a/docs/contracts/execution-target/README.md +++ b/docs/contracts/execution-target/README.md @@ -237,13 +237,11 @@ The lanes launcher carries a copy of the plugin column (`stage_required_plugins` the connector default changes. The open conflict is anthropics/claude-code#72290 (an issue-opened routine trigger that did not fire, closed as stale); nothing here relies on an issue trigger. - **Cloud launch and upload.** Pointer: - [From terminal to cloud](https://code.claude.com/docs/en/claude-code-on-the-web#from-terminal-to-cloud) + [Start a cloud session from your terminal](https://code.claude.com/docs/en/claude-code-on-the-web#start-a-cloud-session-from-your-terminal) and [Send local repositories without GitHub](https://code.claude.com/docs/en/claude-code-on-the-web#send-local-repositories-without-github). - As of: 2026-10-04. Recheck trigger: `--cloud` stops uploading a bundle when the App is missing, or - gains a branch or worktree option. -- **Cloud environments.** Pointer: "What carries over from your setup" and "Network access" on - [Cloud environments](https://code.claude.com/docs/en/cloud-environments). As of: 2026-10-04. - Recheck trigger: either table changes. +- **Cloud environments.** Pointer: + [What carries over from your setup](https://code.claude.com/docs/en/cloud-environments#what-carries-over-from-your-setup) + and [Network access](https://code.claude.com/docs/en/cloud-environments#network-access). ## Versioning diff --git a/docs/contracts/hook-budget/README.md b/docs/contracts/hook-budget/README.md index 1f22d1b3b4b..dfc98d0431f 100644 --- a/docs/contracts/hook-budget/README.md +++ b/docs/contracts/hook-budget/README.md @@ -76,9 +76,6 @@ process on events that write nothing, one per write"). A new always-on mod hook live; when stubbing `$` calls in a test, fetch [test: Stub what Claude Code would answer](https://code.claude.com/docs/en/plugins/mods/test#stub-what-claude-code-would-answer) live. -- **As of**: 2026-11-03; test anchor 2026-10-11 -- **Recheck trigger**: the limits section changes a hook's time limit or what happens past it, or - `claude plugin test` stops letting a test stub `$.process.run`. ## Wall-clock measurement (Windows) diff --git a/docs/contracts/hook-input-rewriting/README.md b/docs/contracts/hook-input-rewriting/README.md index aebaee83bb9..33bcb09e6e5 100644 --- a/docs/contracts/hook-input-rewriting/README.md +++ b/docs/contracts/hook-input-rewriting/README.md @@ -13,9 +13,8 @@ It is not. The rule is one line, and the rest of this doc is why. **A `PreToolUse` hook denies or asks. It never pairs `allow` with `updatedInput`.** A `PreToolUse` hook's decision-control fields, and the outcomes `permissionDecision` takes, are -listed in [hooks § PreToolUse decision control](https://code.claude.com/docs/en/hooks#pretooluse-decision-control) -(as of 2026-10-11; recheck when that section adds or drops a field or an outcome). The others are -uncontroversial. `updatedInput` is the one that lets a hook rewrite the call, and its only +listed in [hooks § PreToolUse decision control](https://code.claude.com/docs/en/hooks#pretooluse-decision-control). +The others are uncontroversial. `updatedInput` is the one that lets a hook rewrite the call, and its only sanctioned pairing here is with `"ask"`. The concrete case this rule was written against: a commit guard that can tell a non-canonical @@ -55,9 +54,6 @@ a dead end, and it is why no hook here needs to rewrite a call to get the right - **Pointer**: when checking what Claude sees of a denial, by the JSON `deny` or by `exit 2`, fetch [hooks § PreToolUse decision control](https://code.claude.com/docs/en/hooks#pretooluse-decision-control) live. -- **As of**: 2026-11-03 -- **Recheck trigger**: that section changes who sees a `deny` reason, or how `exit 2` compares with - a JSON `deny`. Auto mode can make the escape hatch a refusal: Claude Code can refuse a tool call whose input a hook changed after the server-side classifier reviewed it. Which sessions, tools and hooks that covers is diff --git a/docs/contracts/hook-observability/README.md b/docs/contracts/hook-observability/README.md index 22e9b2940f9..a5520fe2116 100644 --- a/docs/contracts/hook-observability/README.md +++ b/docs/contracts/hook-observability/README.md @@ -29,8 +29,7 @@ A static field on a `hooks.json` **handler object**, sibling of `type`/`command` It labels the spinner while the hook runs. **A hook script never emits this, because it is configuration, not a runtime output field.** Pointer: for the field, see -. As of: 2026-10-01. Recheck trigger: that -table moves the field or a runtime output field takes the name. **Rollout status: near-complete.** As of +. **Rollout status: near-complete.** As of 2026-07-23, 30 of the 31 wired `type: "command"` handlers across the fleet's 15 hook-bearing plugins declare `statusMessage`; the sole remaining holdout is `plugins/disk-hygiene/hooks/hooks.json`. Tracked against @@ -46,13 +45,11 @@ telemetry..."`), not a generic `"Running hook..."`. A JSON output field (`hookSpecificOutput` sibling) addressed to the user. We compose it on any exit code, exit 2 included, and size it under the cap in [Output caps](#output-caps-stated-by-the-reference). Pointer: for which exit codes still read JSON -output, see . As of: 2026-09-27. Recheck -trigger: that section changes whether JSON output is read on exit 2. Composed via +output, see . Composed via `hook::emit_channels` / `hook::emit_skip_notice` (`lib/hook-utils.sh`) alongside `additionalContext` in one JSON document: a hook with both agent-channel content and a pending notice composes them there and never prints two objects. Pointer: for how stdout is parsed as JSON, see . -As of: 2026-10-01. Recheck trigger: that section changes how a multi-object stdout is read. **Scope, required for exactly one situation:** a missing runtime prerequisite (binary, config file, `jq`) causes the hook to silently no-op instead of performing its check. Doctrine @@ -133,9 +130,6 @@ count, or the disclosure becomes the noise problem it was meant to prevent. - **Pointer**: for the field's delivery, see and the event's section under ; for background hooks, see . - - **As of**: 2026-10-01 - - **Recheck trigger**: either section changes where `systemMessage` is delivered, or an event's - section changes how it treats the field. **Repeat-notice discipline.** A missing-prerequisite notice behind a broad matcher (every `Write|Edit`, every `Bash` call) must not repeat on every invocation. Use `hook::require jq` @@ -192,15 +186,11 @@ Three cap decisions, each with the section that owns the figure. with an opt-in end-of-turn check, and sends neither channel per edit. - **Pointer**: for the output cap and what happens over it, see . - - **As of**: 2026-10-04 - - **Recheck trigger**: that section changes the cap figure or what happens over it. 2. **Each `additionalContext` value is sized on its own.** We size the value against the cap above and never against what other hooks on the same event emit. - **Pointer**: for how several hooks' values are delivered, see . - - **As of**: 2026-09-05 - - **Recheck trigger**: that section states a budget shared across hooks. 3. **`classifierContext` is not a fourth surface, and its cap governs neither channel above.** It is a `PostToolUse` field addressed to the auto-mode classifier, never the user or the model, so @@ -238,8 +228,7 @@ Recheck trigger: that section starts passing `OTEL_*` variables to hook subproce let external tooling correlate a hook's local envelope with the same turn's real OTel stream. Adding it is a `hook-telemetry` schema change (`schema_version` 1.0 → 1.1) touching every producer's `data_json` construction, out of scope for this doc's three-surface convention. -Pointer: for the field, see . As of: -2026-10-01. Recheck trigger: that table drops the field or its OpenTelemetry match. +Pointer: for the field, see . melodic-software/claude-code-plugins#930 is closed: the per-session event log (`harness-ops`, melodic-software/claude-code-plugins#3750) records `prompt_id` per event, and the envelope-spine promotion is tracked at melodic-software/claude-code-plugins#3758. @@ -286,9 +275,6 @@ to the Frequency rule, and `rate-limit-guard`'s threshold line to the Phrasing r ; for the model behavior behind the risk, see . -- **As of**: 2026-10-04 -- **Recheck trigger**: one of those sections changes who reads a channel, how injected context - should be phrased, or how the model treats text that arrives beside tool results. ### See what a hook or mod sent @@ -302,7 +288,6 @@ carrying the exact text sent, so the debug log holds what the model read. - **Pointer**: for the debug log and the call, see the links above and . -- **As of**: 2026-10-04 - **Recheck trigger**: one of those sections moves, or the mods API gains its own record of what a mod sent Claude. @@ -453,7 +438,3 @@ per cycle. ; for the countdown and the occasional reminder, see . -- **As of**: 2026-10-03 -- **Recheck trigger**: the context-awareness section changes which models receive the injected - tags, or the prompting guide changes how often harness text after tool results may arrive before - the model treats it as an injection. diff --git a/docs/contracts/hook-telemetry/README.md b/docs/contracts/hook-telemetry/README.md index 6aed7e81f8e..6b95f0c1b31 100644 --- a/docs/contracts/hook-telemetry/README.md +++ b/docs/contracts/hook-telemetry/README.md @@ -103,8 +103,6 @@ They sit between `duration_ms` and `data`. A hierarchy, coarsest first: - **Pointer**: when joining `prompt_id` to OTel events, fetch [monitoring § Event correlation attributes](https://code.claude.com/docs/en/monitoring-usage#event-correlation-attributes) and [hooks § Common input fields](https://code.claude.com/docs/en/hooks#common-input-fields) live. -- **As of**: 2026-11-03 -- **Recheck trigger**: either section renames or drops the prompt id. The library reads the payload the producer buffered: `HOOK_TELEMETRY_PAYLOAD` when set, else the `INPUT` variable every fleet hook assigns from `hook::buffer_stdin`. A producer that buffers under @@ -125,8 +123,6 @@ Tightening this without paying the cost is [#3784](https://github.com/melodic-so - **Pointer**: when checking which fields a hook payload carries, fetch [hooks § Common input fields](https://code.claude.com/docs/en/hooks#common-input-fields) live. -- **As of**: 2026-11-03 -- **Recheck trigger**: that section adds, drops or moves a correlation key. Naming is snake_case throughout and aligns with Claude Code's own field names where the concept matches (`hook_event`), and deliberately diverges where it does not (`hook` ≠ `hook_name`, `duration_ms` ≠ diff --git a/docs/contracts/loop-lane/README.md b/docs/contracts/loop-lane/README.md index cf2c5558ec9..e5a19fdafc7 100644 --- a/docs/contracts/loop-lane/README.md +++ b/docs/contracts/loop-lane/README.md @@ -653,9 +653,6 @@ is read live at the pointer. [Read and Edit](https://code.claude.com/docs/en/permissions#read-and-edit); for the POST body, see [Common input fields](https://code.claude.com/docs/en/hooks#common-input-fields); for failures, see [HTTP response handling](https://code.claude.com/docs/en/hooks#http-response-handling). -- **As of**: 2026-07-27 -- **Recheck trigger**: a Claude Code release note or docs change touching HTTP hook handlers, the - `if` field, header interpolation, or how edit rules anchor their paths. - The hook is an `http` handler on `PostToolUse` in the consuming repo's project `.claude/settings.json`: per-consuming-repo configuration that no plugin ships. We rely on it as @@ -695,9 +692,6 @@ Only the http hook is the deterministic leg. [Mobile push notifications](https://code.claude.com/docs/en/remote-control#mobile-push-notifications); for the variables that turn fetching off, see [Features that need feature-flag fetching](https://code.claude.com/docs/en/env-vars#features-that-need-feature-flag-fetching). -- **As of**: 2026-08-04 -- **Recheck trigger**: a Claude Code release note changes `PushNotification` or the Remote Control - requirements. **The hook binds to the session's project, never to the repository a lane targets.** The record path is relative to the session's checkout, and the hook that fires is the one in that session's @@ -759,7 +753,6 @@ pairings are valid); a security-surface work class routes to the frontier tier u [advisor tool: model compatibility](https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool#model-compatibility) and the warning about a checker that passes bad work in [re-run failures at higher effort](https://platform.claude.com/docs/en/about-claude/models/optimizing-for-cost-and-intelligence#re-run-failures-at-higher-effort). -- **As of:** 2026-10-10. - **Recheck trigger:** next model release. - **Judgment:** the sources state a model-capability rule only. That a reviewer or verifier also runs at an effort level no lower than the implementer's is our judgment, as is reading the @@ -775,7 +768,6 @@ from the model page whenever it matters, and never restated in this convention. [Model aliases](https://code.claude.com/docs/en/model-config#model-aliases); for each model's position and capabilities, see [models overview: compare models](https://platform.claude.com/docs/en/about-claude/models/overview#latest-models-comparison). -- **As of:** 2026-11-09. - **Recheck trigger:** any new model on Claude Code's model page. The reasons behind each binding: @@ -813,8 +805,7 @@ The reasons behind each binding: overview) pay. The tier has nothing to do with Claude Code's fast mode, a separate speed setting on the models its page lists. Pointer: [Speed up responses with fast mode](https://code.claude.com/docs/en/fast-mode) (the supported - models sit in the page's opening). As of: 2026-11-11. Recheck trigger: the page renames fast mode - or a release ties it to a capability tier name. + models sit in the page's opening). - **`haiku` is admissible nowhere in these lanes today, and no tier binds it.** Four grounds, each our reading of the source it points at; the release figures behind them are in [docs/upstream/haiku-5-5-launch.md](../../upstream/haiku-5-5-launch.md): @@ -864,7 +855,6 @@ here rather than left as an unstated assumption: - **Pointer:** when judging whether a lane can bill usage credits unasked, fetch [Fable and usage credits](https://code.claude.com/docs/en/model-config#fable-and-usage-credits) live. -- **As of:** 2026-11-04. - **Recheck trigger:** that section changes which session shapes hold or skip the consent prompt, or a lane changes its launch shape. @@ -897,9 +887,7 @@ follows the provider's recommendation while a model ID is a pinned snapshot. We the only handle that works under subscription OAuth, so they are the runtime path; the Models API list endpoint is the **build/audit-time** verification path, since it may require an API key a loop session lacks. No lane hard-codes a model ID (Pointer: for alias semantics, see -[Model aliases](https://code.claude.com/docs/en/model-config#model-aliases). As of: 2026-10-01. -Recheck trigger: the model page stops describing aliases as moving with the provider's -recommendation). +[Model aliases](https://code.claude.com/docs/en/model-config#model-aliases)). The binding is built from a live official-docs read at authoring time, never from recall. Any new model on Claude Code's model page re-reads the reasons under "Alias binding"; a binding that @@ -944,9 +932,7 @@ next iteration with `ScheduleWakeup`, and no lane expects an operator to call it delay toward the ceiling. Pointer: for the delay bounds and who calls the tool, see [Let Claude choose the interval](https://code.claude.com/docs/en/scheduled-tasks#let-claude-choose-the-interval) and the `ScheduleWakeup` row of the [Tools reference](https://code.claude.com/docs/en/tools-reference). -As of: 2026-07-27. Recheck trigger: a Claude Code release note changes `ScheduleWakeup` or -self-paced `/loop`. The self-pacing section the -`source-control:babysit-prs` skill owns is the worked precedent. +The self-pacing section the `source-control:babysit-prs` skill owns is the worked precedent. **The prompt runs fresh; the session does not.** Each cycle re-sends the lane's prompt verbatim into the **same** session, so "runs fresh every time" describes the prompt and never the context: a lane @@ -1295,9 +1281,7 @@ version at or above the floor the scheduled-tasks page names for those providers it runs without it. Pointer: for the provider and version conditions on a dynamic `/loop`, see [Let Claude choose the interval](https://code.claude.com/docs/en/scheduled-tasks#let-claude-choose-the-interval) and the `ScheduleWakeup` row of the [Tools reference](https://code.claude.com/docs/en/tools-reference). -As of: 2026-10-01. Recheck trigger: a Claude Code release note changes `/loop` on a non-first-party -provider or the version floor. A lane launched below the floor keeps -the loop but loses both properties the bullet above depends on: idle backoff cannot lengthen the +A lane launched below the floor keeps the loop but loses both properties the bullet above depends on: idle backoff cannot lengthen the wake, and the lane cannot end itself, so a **drain** lane there deadlocks on the first unanswered escalation exactly as §4's terminal state exists to prevent, and runs until stopped by hand or until the seven-day expiry. No lane detects the provider or the version today, so this is recorded as a diff --git a/docs/contracts/mod-authoring/README.md b/docs/contracts/mod-authoring/README.md index 6784378e09c..7883d258f8b 100644 --- a/docs/contracts/mod-authoring/README.md +++ b/docs/contracts/mod-authoring/README.md @@ -53,9 +53,6 @@ mod, one mod per plugin, the 2.1.287 floor, and what is committed. [create: get the types for your build](https://code.claude.com/docs/en/plugins/mods/create#get-the-types-for-your-build); for the `hooks:` and `calls:` lines, see [create: check what Claude Code reads from your mod](https://code.claude.com/docs/en/plugins/mods/create#check-what-claude-code-reads-from-your-mod). -- **As of**: 2026-10-04, Claude Code 2.1.289 -- **Recheck trigger**: a linked create section moves, hot reload changes, or - `claude plugin validate` stops listing hooks and calls. Read Anthropic's maintained mods for working examples before writing your own; licensing and reuse terms are recorded in [docs/upstream/claude-code-mods/sources.md](../../upstream/claude-code-mods/sources.md). @@ -88,9 +85,6 @@ step upstream gives for that case. [admin: review what a mod can do](https://code.claude.com/docs/en/plugins/mods/admin#review-what-a-mod-can-do); for the reload after a shell-side install or update, see [overview: install or update a mod](https://code.claude.com/docs/en/plugins/mods/overview#install-or-update-a-mod). -- **As of**: 2026-10-25, Claude Code 2.1.310 -- **Recheck trigger**: a linked section moves, or `/harness-ops:audit-mod-posture` stops reading - the `hooks:` and `calls:` lines. ## Mod, settings hook, or skill @@ -98,8 +92,6 @@ Apply ADR 0052's rule for choosing a mod, which starts from upstream's compariso - **Pointer**: see [overview: compare mods, settings hooks, skills, and MCP servers](https://code.claude.com/docs/en/plugins/mods/overview#compare-mods-settings-hooks-skills-and-mcp-servers). -- **As of**: 2026-10-03, Claude Code 2.1.288 -- **Recheck trigger**: the comparison table changes a "Pick it when" cell. ## Where a mod runs and how it is switched off @@ -154,9 +146,6 @@ mod. [reference: files](https://code.claude.com/docs/en/plugins/mods/reference#files); for names `validate` refuses and the tested-version note, see [create: share your mod](https://code.claude.com/docs/en/plugins/mods/create#share-your-mod). -- **As of**: 2026-10-03, Claude Code 2.1.288 -- **Recheck trigger**: the files table changes a row, or `validate` accepts or rejects a different - name shape. ## Before relying on `$.process` or `session.start` diff --git a/docs/contracts/plugin-reconfiguration/README.md b/docs/contracts/plugin-reconfiguration/README.md index 61df139df53..b88acfb3199 100644 --- a/docs/contracts/plugin-reconfiguration/README.md +++ b/docs/contracts/plugin-reconfiguration/README.md @@ -50,9 +50,6 @@ consumer-run. key forms a release takes, fetch [plugin CLI reference § plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install) live. - - **As of**: 2026-11-03 - - **Recheck trigger**: that section changes what an install of an already-installed plugin does, - or the `--config` key forms. ## Verified-version record @@ -131,10 +128,6 @@ newer release is verified. how each route reports a rejected value, at [§ plugin configure](https://code.claude.com/docs/en/plugins/cli-reference#plugin-configure) and [§ plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install). -- **As of**: 2026-11-03 -- **Recheck trigger**: one of those sections changes what an uninstall deletes, where a saved value - is stored, what `-s` places, when a saved value takes effect, or how a route reports a - rejection. ## The short form setups print diff --git a/docs/contracts/prerequisites/README.md b/docs/contracts/prerequisites/README.md index 7f397ddc468..6b51296a4d4 100644 --- a/docs/contracts/prerequisites/README.md +++ b/docs/contracts/prerequisites/README.md @@ -27,9 +27,6 @@ Three needs use a native surface instead, so the file never declares them: [plugins manifest reference § dependencies](https://code.claude.com/docs/en/plugins/manifest-reference#dependencies) and [§ User configuration](https://code.claude.com/docs/en/plugins/manifest-reference#user-configuration) live. -- **As of**: 2026-11-03 -- **Recheck trigger**: either section changes how a declared dependency or a sensitive option is - handled. The `env` kind is for a variable a command run through the Bash tool reads, such as a CLI's API key. `userConfig` values do not reach that environment. @@ -188,9 +185,6 @@ because `setup` is manual-only (the live; when checking which shells set `PPID`, fetch [POSIX Shell Command Language § 2.5.3 Shell Variables](https://pubs.opengroup.org/onlinepubs/9799919799/utilities/V3_chap02.html#tag_19_05_03) live. -- **As of**: 2026-11-03 -- **Recheck trigger**: the hooks section changes the default shell on Windows, or a POSIX revision - changes what it says about `PPID`. Both session-start notices need harness-ops enabled. Without it, no notice says `node` is missing, and a missing hook dependency is reported only at the point of use, by `hook::require`. The @@ -226,9 +220,6 @@ dash and PowerShell. - **Pointer**: when checking the SessionStart sources, or what a compaction does to the session id, fetch [hooks § SessionStart](https://code.claude.com/docs/en/hooks#sessionstart) live. -- **As of**: 2026-11-03 -- **Recheck trigger**: the matcher table gains or drops a source, or the hooks page states whether - a compaction keeps the session id. `hook::require` reads an entry with bash alone, from its `id` to the next one, so write `id` first in every entry. diff --git a/docs/contracts/rendered-views/README.md b/docs/contracts/rendered-views/README.md index 3071114bb1f..7a372e84d81 100644 --- a/docs/contracts/rendered-views/README.md +++ b/docs/contracts/rendered-views/README.md @@ -425,9 +425,6 @@ does not assume it works: it checks the live Share dialog first. - **Pointer**: for artifact sharing and its permissions, see . -- **As of**: 2026-10-02 (Claude Code v2.1.287) -- **Recheck trigger**: a Claude Code version bump, or a plan about to rely on cross-account or - cross-subscription sharing or editing (present or absent). ## Artifact types @@ -939,7 +936,6 @@ which is another cost of copying. gallery uses fictional Acme data; wave-1 already carries derived tokens). Public gallery: . Official templates: . -- **As of:** 2026-09-28. - **Recheck:** a lane that cannot cite a public page-shape and must ship a checked-in HTML page of its own, or a license change on either source. diff --git a/docs/contracts/routing-as-data/CHANGELOG.md b/docs/contracts/routing-as-data/CHANGELOG.md index 7f56f5eb8ea..7e928e26a3d 100644 --- a/docs/contracts/routing-as-data/CHANGELOG.md +++ b/docs/contracts/routing-as-data/CHANGELOG.md @@ -4,6 +4,12 @@ Notable changes to the routing-as-data contract (SemVer). Changing a required ro rule, the team-file operations or the degradation rule is a major bump; additive guidance is a minor bump; docs-only clarification is a patch. +## [2.0.1] - 2026-11-11 + +- The metadata-precedence pointer no longer carries an as-of date or recheck trigger, per the + upstream-drift convention 5.0.0. The team-layer decision keeps its named trigger and drops its + as-of date. + ## [2.0.0] - 2026-10-22 - Team layer, breaking: `routing.rows` may re-rank or override an existing row, and may add a row diff --git a/docs/contracts/routing-as-data/README.md b/docs/contracts/routing-as-data/README.md index 772730b20f5..5b68dd46db9 100644 --- a/docs/contracts/routing-as-data/README.md +++ b/docs/contracts/routing-as-data/README.md @@ -84,8 +84,7 @@ marketplace id. plugin id and the skill namespace name the same plugin. When checking which name each one uses, fetch [plugins manifest reference § Metadata precedence](https://code.claude.com/docs/en/plugins/manifest-reference#metadata-precedence) - live (as of 2026-11-03; recheck trigger: that section changes which name the install id or the - component namespace takes). + live. - A plugin disabled for the project counts as absent. `kind: tool` resolves from the session's tool listing. Tests run on fixtures, never on the live install. @@ -145,7 +144,6 @@ supersedes ADR 0044 for structured configuration is not on `main` yet. live; the decision thread is [#5906](https://github.com/melodic-software/claude-code-plugins/issues/5906). -- **As of**: 2026-10-07 - **Recheck trigger**: an ADR on "home plugin customization in `docs/conventions/.yaml`" merges on `main`; the pointer then moves to it. diff --git a/docs/contracts/standards/README.md b/docs/contracts/standards/README.md index 830191d0a30..0cc3b1d6d1a 100644 --- a/docs/contracts/standards/README.md +++ b/docs/contracts/standards/README.md @@ -239,9 +239,6 @@ auto-rewrite in either direction. - **Pointer**: when a rule's load timing matters, fetch [memory: path-specific rules](https://code.claude.com/docs/en/memory#path-specific-rules) live. - - **As of**: 2026-10-10 - - **Recheck trigger**: that section changes which tool use loads a - path-scoped rule. - **Standards = pull** (index-routed at plan/review stages): substantial criteria and prose. - **Pointer pattern:** a path-scoped rule may carry an imperative pointer diff --git a/docs/contracts/workspace-environment/CHANGELOG.md b/docs/contracts/workspace-environment/CHANGELOG.md index f07502882ce..922a30c9058 100644 --- a/docs/contracts/workspace-environment/CHANGELOG.md +++ b/docs/contracts/workspace-environment/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog for the workspace-environment convention +## 1.0.1 - 2026-11-11 + +The vendor-fact pointers no longer carry an as-of date or recheck trigger, per the upstream-drift +convention 5.0.0, and each links its section by anchor. + ## 1.0.0 - 2026-10-04 Initial contract: the "Workspace environment" entry in `docs/conventions/workspace-environment.md`, diff --git a/docs/contracts/workspace-environment/README.md b/docs/contracts/workspace-environment/README.md index 9d4eaf95121..1d13654fdbd 100644 --- a/docs/contracts/workspace-environment/README.md +++ b/docs/contracts/workspace-environment/README.md @@ -216,20 +216,17 @@ why the [untrusted-input rule](#untrusted-input-worktrees) applies to cloud host ## Vendor facts this contract depends on -- **SessionStart hooks and `CLAUDE_CODE_REMOTE` in cloud.** Pointer: "Setup scripts vs. SessionStart - hooks", "Install dependencies with a SessionStart hook" and "Environment caching" on - [Cloud environments](https://code.claude.com/docs/en/cloud-environments). As of: 2026-10-04. - Recheck trigger: the variable's name or value changes, SessionStart stops running on resume, or - the cache starts keeping running processes. -- **Hook permissions and `WorktreeCreate` failure.** Pointer: "Security considerations" and the - `WorktreeCreate` event on [Hooks](https://code.claude.com/docs/en/hooks). As of: 2026-10-03. - Recheck trigger: hooks gain a permission check for repository-declared commands. +- **SessionStart hooks and `CLAUDE_CODE_REMOTE` in cloud.** Pointer: + [Setup scripts vs. SessionStart hooks](https://code.claude.com/docs/en/cloud-environments#setup-scripts-vs-sessionstart-hooks), + [Install dependencies with a SessionStart hook](https://code.claude.com/docs/en/cloud-environments#install-dependencies-with-a-sessionstart-hook) + and [Environment caching](https://code.claude.com/docs/en/cloud-environments#environment-caching). +- **Hook permissions and `WorktreeCreate` failure.** Pointer: + [Security considerations](https://code.claude.com/docs/en/hooks#security-considerations) and + [WorktreeCreate](https://code.claude.com/docs/en/hooks#worktreecreate). - **Compose project names and ports.** Pointer: - [Specify a project name](https://docs.docker.com/compose/how-tos/project-name/), `ports` on - [Services](https://docs.docker.com/reference/compose-file/services/), and - [`docker compose port`](https://docs.docker.com/reference/cli/docker/compose/port/). As of: - 2026-10-04. Recheck trigger: the project-name character rule or `COMPOSE_PROJECT_NAME`'s - precedence changes, or a container-only `ports` entry stops getting an engine-assigned host port. + [Specify a project name](https://docs.docker.com/compose/how-tos/project-name/), + [`ports`](https://docs.docker.com/reference/compose-file/services/#ports), and + [`docker compose port`](https://docs.docker.com/reference/cli/docker/compose/port/). ## Versioning diff --git a/docs/extensibility-contract-smoke-tests.md b/docs/extensibility-contract-smoke-tests.md index a531f3a4788..ec6ccf184b2 100644 --- a/docs/extensibility-contract-smoke-tests.md +++ b/docs/extensibility-contract-smoke-tests.md @@ -86,9 +86,8 @@ the subprocess environment is identical). runs. Which of the plugin's own declared components receive option values, through the environment or through `${user_config.KEY}` substitution, is the manifest reference's to state: [§ Reference a saved value](https://code.claude.com/docs/en/plugins/manifest-reference#reference-a-saved-value) - and [§ Fields that run through a shell](https://code.claude.com/docs/en/plugins/manifest-reference#fields-that-run-through-a-shell) - (as of 2026-10-11; recheck when either section changes which components receive a value). This - run's reading on 2.1.207 counted monitors among them; those sections decide whether that holds. + and [§ Fields that run through a shell](https://code.claude.com/docs/en/plugins/manifest-reference#fields-that-run-through-a-shell). + This run's reading on 2.1.207 counted monitors among them; those sections decide whether that holds. - **Authoring constraint.** A skill reads a **non-sensitive** userConfig value only through `${user_config.KEY}` text-substitution into its own Markdown, never from the environment of a script it spawns. A **sensitive** value is unreachable from a skill entirely: it is not substitutable into @@ -122,11 +121,10 @@ claude plugin install smoketest@ --scope local /smokemulti \ `claude plugin --help`); `/plugin configure` was an interactive slash command only, there was no headless probe of bare-vs-qualified resolution, and the docs named neither spelling. The CLI reference now documents `claude plugin configure` and which id form it accepts: - [plugin CLI reference § plugin configure](https://code.claude.com/docs/en/plugins/cli-reference#plugin-configure) - (as of 2026-10-11; recheck when that section changes the id forms it accepts). It agrees with the - fleet decision below. + [plugin CLI reference § plugin configure](https://code.claude.com/docs/en/plugins/cli-reference#plugin-configure). + It agrees with the fleet decision below. **Fleet decision.** Actionable guidance, anywhere a reader is told to *run* the command with a specific plugin target, uses the marketplace-qualified form `/plugin configure diff --git a/docs/migration-playbook.md b/docs/migration-playbook.md index 09dbbbbcf1b..e2b3fb15f38 100644 --- a/docs/migration-playbook.md +++ b/docs/migration-playbook.md @@ -930,8 +930,6 @@ claude --plugin-dir ./plugins/ - **Pointer**: when choosing between the folder and per-plugin forms, fetch [plugin commands: flags that load a plugin for one session](https://code.claude.com/docs/en/plugins/cli-reference#flags-that-load-a-plugin-for-one-session) live. - - **As of**: 2026-10-10 - - **Recheck trigger**: that section changes what a folder of plugins loads. - **Session-scoped and non-destructive.** The override lasts only for that session and never edits a consumer's `extraKnownMarketplaces`; the published registration stays on its GitHub remote. The lone exception: `--plugin-dir` cannot override a plugin that *managed* settings force-enable or diff --git a/docs/out-of-scope/shared-surface-instruction-governance.md b/docs/out-of-scope/shared-surface-instruction-governance.md index 5e5a505a608..20d890e2acc 100644 --- a/docs/out-of-scope/shared-surface-instruction-governance.md +++ b/docs/out-of-scope/shared-surface-instruction-governance.md @@ -9,7 +9,7 @@ authors' standing instructions meet on one shared surface. **Claim:** shared-surface instruction governance is not a convention in this repository. **Basis:** the repo is single-operator; I15 detects conflicting pairs and names a winner only where official docs settle one; `instruction-exception-register` governs deletions, not -ownership. **As of:** 2026-09-28. **Recheck:** when a second regular contributor writes to a +ownership. **Recheck:** when a second regular contributor writes to a shared instruction surface (CLAUDE.md, `.claude/rules/`, or a skill body in this checkout), or a consuming team reports an adjudication I15 surfaces but cannot resolve. diff --git a/docs/plugin-philosophy.md b/docs/plugin-philosophy.md index d86bba9f43a..a49d36d57dd 100644 --- a/docs/plugin-philosophy.md +++ b/docs/plugin-philosophy.md @@ -59,12 +59,10 @@ A git config **vendor section that is not a publisher name** is the git-native p convention any `git config --get` consumer must be able to read. We name such a section so it collides with neither Git's own variables nor other popular tools', and document it. Pointer: for third-party tool variables, see -[git-config(1) Variables](https://git-scm.com/docs/git-config#_variables). As of: 2026-09-08. -Recheck trigger: that paragraph being rewritten. Git already owns `worktree.*` -(`worktree.guessRemote`, `worktree.useRelativePaths`; Pointer: -[git-worktree(1) Configuration](https://git-scm.com/docs/git-worktree#_configuration). As of: -2026-09-08. Recheck trigger: git-config(1) adding a new `worktree.*` key), so a placement key -cannot live there. Popular tools typically name the section after the *tool* (`ghq.root`, +[git-config(1) Variables](https://git-scm.com/docs/git-config#_variables). Git already owns +`worktree.*` (`worktree.guessRemote`, `worktree.useRelativePaths`; Pointer: +[git-worktree(1) Configuration](https://git-scm.com/docs/git-worktree#_configuration)), so a +placement key cannot live there. Popular tools typically name the section after the *tool* (`ghq.root`, `git-town.*`, `lfs.*`, `wt.basedir`, `delta.*`, `hub.protocol`); a publisher-named key (`melodic.*`) is still an org-agnosticism defect, and a plugin-named key (`source-control.*`) still couples consumers to this marketplace's plugin identity. The worktree-placement key is therefore a @@ -111,9 +109,6 @@ Keep plugins horizontally decoupled: for who tags which repository, and [create a release tag](https://code.claude.com/docs/en/plugins/dependencies#create-a-release-tag) for the tag name and the command that makes it, live. - - **As of**: 2026-11-01 - - **Recheck trigger**: either section changes who must create the tag, the tag format, or the - command that creates it. - Every plugin remains useful alone. If an optional collaborator is absent, use a documented fallback or report the missing optional capability clearly. - Every cross-plugin reference is therefore either declared (the `dependencies` array above, which @@ -123,9 +118,8 @@ Keep plugins horizontally decoupled: This follows Claude Code's own distinction between standalone configuration and plugins: this marketplace ships plugins because it distributes versioned capability to other people and projects. Pointer: for when to use a plugin rather than standalone configuration, see -. As of: -2026-08-10. Recheck trigger: that section moves or drops the distinction. Namespaced skill -invocations are part of that isolation, not an implementation detail. +. Namespaced +skill invocations are part of that isolation, not an implementation detail. ### Hardcoded consumer specifics @@ -635,8 +629,7 @@ written for it and deliberately dropped rather than kept for symmetry. The uniform contract: the skill is named `setup`, sets `disable-model-invocation: true`, because setup has side effects a person should trigger by hand (Pointer: -. As of: 2026-10-30. Recheck trigger: -that section stops tying the flag to manually triggered side effects), and offers `check` (read-only inspect and verify) and `apply` (idempotent configure) actions. This +), and offers `check` (read-only inspect and verify) and `apply` (idempotent configure) actions. This contract is exception class (ii) of the fleet's invocation-mode rubric ([`docs/contracts/invocation-mode/`](contracts/invocation-mode/README.md)), which owns the default and the other reasons a skill may set the flag. The @@ -705,8 +698,8 @@ cannot express, never `/:setup check`, which the flag hides from Claude. per-action invocation flag. Pointer: for `disable-model-invocation`, see and -. As of: 2026-09-29. Recheck -trigger: a Claude Code release adds a per-action invocation flag, or that field stops applying to +. Recheck trigger: a Claude +Code release adds a per-action invocation flag, or that field stops applying to the whole skill. The verb set is deliberately closed at `check` and `apply`: no standalone `remove`, `reset`, or @@ -796,8 +789,6 @@ and CI preparation, and a `SessionStart` hook comparing a bundled manifest again the flags that fire it, see ; for the data-directory install idiom, see . -As of: 2026-08-10. Recheck trigger: either section moves, or the `Setup` event or the data-directory -idiom is removed. These native idioms complement the `setup` skill; they do not compete with it, and native-first is honored either way. The skill is the interactive, discoverable consumer-configuration face @@ -859,7 +850,6 @@ current refusals. They stay; they are not defects against a missing subaction. refusals: `plugins/go-format/skills/setup/SKILL.md` and `plugins/typos-format/skills/setup/SKILL.md`. Tokens such as `install-hint` and `install-browser` are not setup subactions. -- **As of:** 2026-10-02. - **Recheck trigger:** a setup skill adds an install subaction that fits none of the four shapes, a live subaction changes what or where it installs, or a maintainer converges the fleet onto one spelling. @@ -978,14 +968,13 @@ Optional platform integrations must degrade visibly and preserve the portable co [Feature availability](https://code.claude.com/docs/en/feature-availability) is this contract's canonical input: fetch it when a platform, provider, or plan question decides something, and restate -none of it here (as of 2026-08-10; trigger in [recorded gate runs](#recorded-gate-runs)). A capability the -platform itself does not ship on a supported OS is the platform's gap, never the "narrower, inherent +none of it here. A capability the platform itself does not ship on a supported OS is the platform's gap, never the "narrower, inherent platform boundary" a plugin may declare. The plugin still owes a portable path. That input carries two axes, model provider and subscription plan. The *host surface* a consumer runs in, whether CLI, Desktop, an IDE extension, web, or mobile, is a third, read separately from [Platforms and integrations](https://code.claude.com/docs/en/platforms) and the per-host pages it -indexes, cited and never restated (as of 2026-08-10; trigger in [recorded gate runs](#recorded-gate-runs)). +indexes, cited and never restated. It is a distinct axis because a host can withhold the plugin system itself rather than one capability, and where no plugin loads there is no portable path for one to owe. Host-surface absence is therefore neither a plugin defect nor a boundary a plugin may declare: the OS rule above governs @@ -1035,8 +1024,7 @@ always-loaded listing at all is the invocation-mode choice, owned by the rubric line only if removing it would cause a mistake, and we delete or convert to a hook any instruction the model already follows unaided. Pointer: for pruning standing instructions, see and -. As of: 2026-10-30. -Recheck trigger: either section moves or stops recommending pruning. Anthropic reports applying +. Anthropic reports applying the same doctrine to Claude Code's own system prompt for the Claude 5 generation; no docs page covers that as of 2026-08-08 (correlate with ). @@ -1192,14 +1180,12 @@ this rule instead of restating it. who wants a verifier on every phase sets `verify_mechanical_phases` to `true`, which turns the carve-out off. - **Pointer**: `/implementation:implement-dispatch`, its `verify_mechanical_phases` setting. - - **As of**: 2026-10-04. - **Recheck trigger**: that setting is renamed or removed, or the carve-out stops naming the PR's verify stage as its verdict. 4. **The testing plugin's judge pass is the precedent.** `/testing:audit --judge` hands the tests a change created or changed to a fresh-context subagent on another model class, so the session that wrote a test never grades it. - **Pointer**: the judge pass section of `/testing:audit`. - - **As of**: 2026-10-15. - **Recheck trigger**: the pass is renamed or removed, or the judge stops running in a context separate from the session that wrote the tests. 5. **Deterministic gates stay exempt**, within the narrow scope stated above: a script's pass or fail @@ -1225,8 +1211,7 @@ when one is installed, on the same presence-gate shape with the same generic fal Those rungs are one choice among the platform's parallelism surfaces; [run agents in parallel](https://code.claude.com/docs/en/agents#choose-an-approach) is the -canonical upstream comparison of all of them (as of 2026-08-10; trigger in -[recorded gate runs](#recorded-gate-runs)). Why the fleet takes the subagent rung today rather than agent +canonical upstream comparison of all of them. Why the fleet takes the subagent rung today rather than agent teams or cross-session messaging is recorded once in the [gate runs](#recorded-gate-runs). Re-derive from that table's triggers instead of re-arguing it at a checkpoint site. @@ -1243,8 +1228,7 @@ A dispatch prompt at any rung: - **bounds what counts as a finding**: correctness and the stated requirements, everything else optional. An unbounded adversarial prompt returns many low-value findings at full cost, and chasing every reported gap over-engineers the work. Pointer: - . As of: - 2026-10-30. Recheck trigger: that section stops recommending a bounded review. + . ### Named-agent bar @@ -1254,8 +1238,7 @@ pin, or an enforced tool restriction is required.** Otherwise the generic subage is the simpler, equally independent form. On tool cages: an allowlist that includes Bash bars Edit/Write and recursive spawning but is **not read-only**, because Bash can write. State what the cage actually enforces, never "read-only" (Pointer: for plugin agent frontmatter, see -. As of: -2026-08-10. Recheck trigger: plugin agents stop supporting `tools`). +). **Exception: `planning:plan-reviewer`.** @@ -1278,7 +1261,6 @@ actually enforces, never "read-only" (Pointer: for plugin agent frontmatter, see `opus`; when weighing a per-call level against the pin, fetch [subagents: choose an effort level](https://code.claude.com/docs/en/sub-agents#choose-an-effort-level) live. -- **As of:** 2026-10-10. - **Recheck trigger:** a second dispatch site or direct use appears (the exception then ends), the Step 3 dispatch starts passing `effort`, that section changes how a per-call `effort` ranks against the `effort` field or which spawns honor it, or the agent's `model` or `effort` changes. @@ -1300,7 +1282,6 @@ actually enforces, never "read-only" (Pointer: for plugin agent frontmatter, see tools, fetch [create custom subagents: available tools](https://code.claude.com/docs/en/sub-agents#available-tools) live. -- **As of:** 2026-10-17. - **Recheck trigger:** a second dispatch site or direct use appears (the exception then ends), the shared-lane dispatch starts passing `model` or `effort`, that section changes how a `tools` list withholds tools, or the agent's `tools`, `model` or `effort` changes. @@ -1323,15 +1304,13 @@ Four rules decide a lane's model, applied in this order: [optimizing for cost and intelligence: compare models on cost per task](https://platform.claude.com/docs/en/about-claude/models/optimizing-for-cost-and-intelligence#compare-models-on-cost-per-task) and [tune effort](https://platform.claude.com/docs/en/about-claude/models/optimizing-for-cost-and-intelligence#tune-effort), with the self-check step first from - [which Claude model should you build with: latency against accuracy](https://claude.dev/blog/which-claude-model-should-you-build-with#latency-against-accuracy) - (as of 2026-11-09); + [which Claude model should you build with: latency against accuracy](https://claude.dev/blog/which-claude-model-should-you-build-with#latency-against-accuracy); for rule 2, [orchestrator strategy: delegate bulk work](https://platform.claude.com/docs/en/about-claude/models/optimizing-for-cost-and-intelligence#orchestrator-strategy-delegate-bulk-work); for rule 3, the advisor capability rule in [advisor tool: model compatibility](https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool#model-compatibility); for rule 4, [re-run failures at higher effort](https://platform.claude.com/docs/en/about-claude/models/optimizing-for-cost-and-intelligence#re-run-failures-at-higher-effort). -- **As of:** 2026-11-09. - **Recheck trigger:** next model release, or any cited section changes. - **Judgment:** the advisor rule constrains an API advisor and executor pairing; applying it to a subagent verdict and the work it checks is our reading, not a source statement. What counts as an @@ -1401,15 +1380,13 @@ when a role may route to it and the effort it then runs at. The release evidence and [model config: available models](https://code.claude.com/docs/en/model-config#available-models) (correlate with ; recheck when those docs pages cover what the post adds). -- **As of:** 2026-11-09. - **Recheck trigger:** any new model on Claude Code's model page. Row 1 is relative to the checked work by construction: a verdict on work done at the top tier runs at that tier, since there is no rung above it. The cost ordering behind the rows is upstream-owned and is not restated here (Pointer: -[pricing: model pricing](https://platform.claude.com/docs/en/about-claude/pricing#model-pricing). -As of: 2026-11-09. Recheck -trigger: any new model on Claude Code's model page). No row binds a model that is not generally +[pricing: model pricing](https://platform.claude.com/docs/en/about-claude/pricing#model-pricing)). +No row binds a model that is not generally available to the fleet. **Override points.** The rows are repository defaults; a personal routing preference belongs in the @@ -1437,7 +1414,6 @@ from the live roster, never from this file. [thinking: interleaved thinking](https://platform.claude.com/docs/en/build-with-claude/thinking#interleaved-thinking); for how Claude Code records the capability for a pinned model, see [model config: customize pinned model display and capabilities](https://code.claude.com/docs/en/model-config#customize-pinned-model-display-and-capabilities). -- **As of:** 2026-11-09. - **Recheck trigger:** any new model on Claude Code's model page, or that section's per-model statement changes. @@ -1549,9 +1525,6 @@ same depth on two models): - **Pointer:** for which level fits which kind of work, see [model config: choose an effort level](https://code.claude.com/docs/en/model-config#choose-an-effort-level); the two posts under the source conflict below are correlate notes only. - - **As of:** 2026-10-01. - - **Recheck trigger:** that section stops matching levels to kinds of work, or starts naming one - level for every task. - **Source conflict:** the older effort post, (correlate only), and model config's choose-an-effort-level section, joined by the newer effort post, @@ -1577,9 +1550,8 @@ same depth on two models): - **Effort is the first lever in either direction; steering prose is the second.** We set the level to fit the lane's work and add prose only where that level still falls short (Pointer: for why, see - [steering thinking: effort levels](https://platform.claude.com/docs/en/build-with-claude/thinking-steering-and-cost#effort-levels). - As of: 2026-08-03. Recheck trigger: that section stops ranking effort ahead of prompt - steering). Both directions: shallow output from a pinned-`low` lane raises the lane's + [steering thinking: effort levels](https://platform.claude.com/docs/en/build-with-claude/thinking-steering-and-cost#effort-levels)). + Both directions: shallow output from a pinned-`low` lane raises the lane's effort instead of adding prompt text, and a lane thinking more than the work needs lowers the pin before any prose telling the model to think less. A lane that must hold its level for latency is the one case that reaches for steering prose first, and it keeps that prose only after @@ -1597,9 +1569,6 @@ same depth on two models): default changes nothing, so a pin that only documents the default costs nothing. - **Pointer:** for Claude Code's handling, see the section above; for the API side, see [steering thinking: prompt caching](https://platform.claude.com/docs/en/build-with-claude/thinking-steering-and-cost#prompt-caching). - - **As of:** 2026-10-01. - - **Recheck trigger:** either section changes what an effort change does to the cache, or which - models, providers or versions keep the cache across one. **Pinned agents.** Every named agent in this repository that sets its own `model` pins its effort, so a session tuned down for cost does not silently cheapen a worker. The `model: inherit` agents pin @@ -1627,7 +1596,6 @@ executor stops detecting that it is stuck (the upstream pointers are under the [model config: set the effort level](https://code.claude.com/docs/en/model-config#set-the-effort-level) and the `effort` field in [subagents: supported frontmatter fields](https://code.claude.com/docs/en/sub-agents#supported-frontmatter-fields). -- **As of:** 2026-11-09. - **Recheck trigger:** any new model on Claude Code's model page, or a pinned agent's `model` changes, since a level name means a different depth on each model; the task rows change; a checker pinned `medium` misses a defect a `high` pin caught; or a maintainer changes or drops a @@ -1672,7 +1640,6 @@ and verdict lanes follow the `high` row; well-specified mechanical work follows [model config: model aliases](https://code.claude.com/docs/en/model-config#model-aliases); for each model's default level, see [model config: adjust effort level](https://code.claude.com/docs/en/model-config#adjust-effort-level). -- **As of:** 2026-10-02. - **Recheck trigger:** a row named in the table changes, the default effort of the model an agent's alias resolves to changes, or an agent's `model` or `effort` changes. @@ -1789,9 +1756,7 @@ session effort. A plugin may advise a session level for a phase of work, but it session level or saved level (Pointer: for how a level is set and saved, see [model config: set the effort level](https://code.claude.com/docs/en/model-config#set-the-effort-level); for the ultracode setting, see -[model config: adjust effort level](https://code.claude.com/docs/en/model-config#adjust-effort-level). -As of: 2026-11-09. Recheck trigger: any new model on Claude Code's model page, or a new way to set -or save a level). +[model config: adjust effort level](https://code.claude.com/docs/en/model-config#adjust-effort-level)). One exception, scoped to frontmatter: a skill or agent may pin `effort`, because the pin holds only while that skill or agent is active and never changes the user's session or saved level. @@ -1819,7 +1784,6 @@ and the release. [model config: choose an effort level](https://code.claude.com/docs/en/model-config#choose-an-effort-level); for what each alias resolves to per provider, see [model config: model aliases](https://code.claude.com/docs/en/model-config#model-aliases). -- **As of:** 2026-11-09. - **Recheck trigger:** any new model on Claude Code's model page, or the effort section changes which models support effort. diff --git a/plugins/actionlint/reference/plugin-reconfiguration.md b/plugins/actionlint/reference/plugin-reconfiguration.md index a3d69e8b87c..d002a6a907c 100644 --- a/plugins/actionlint/reference/plugin-reconfiguration.md +++ b/plugins/actionlint/reference/plugin-reconfiguration.md @@ -53,9 +53,6 @@ consumer-run. key forms a release takes, fetch [plugin CLI reference § plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install) live. - - **As of**: 2026-11-03 - - **Recheck trigger**: that section changes what an install of an already-installed plugin does, - or the `--config` key forms. ## Verified-version record @@ -134,10 +131,6 @@ newer release is verified. how each route reports a rejected value, at [§ plugin configure](https://code.claude.com/docs/en/plugins/cli-reference#plugin-configure) and [§ plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install). -- **As of**: 2026-11-03 -- **Recheck trigger**: one of those sections changes what an uninstall deletes, where a saved value - is stored, what `-s` places, when a saved value takes effect, or how a route reports a - rejection. ## The short form setups print diff --git a/plugins/ai-briefing/reference/plugin-reconfiguration.md b/plugins/ai-briefing/reference/plugin-reconfiguration.md index a3d69e8b87c..d002a6a907c 100644 --- a/plugins/ai-briefing/reference/plugin-reconfiguration.md +++ b/plugins/ai-briefing/reference/plugin-reconfiguration.md @@ -53,9 +53,6 @@ consumer-run. key forms a release takes, fetch [plugin CLI reference § plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install) live. - - **As of**: 2026-11-03 - - **Recheck trigger**: that section changes what an install of an already-installed plugin does, - or the `--config` key forms. ## Verified-version record @@ -134,10 +131,6 @@ newer release is verified. how each route reports a rejected value, at [§ plugin configure](https://code.claude.com/docs/en/plugins/cli-reference#plugin-configure) and [§ plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install). -- **As of**: 2026-11-03 -- **Recheck trigger**: one of those sections changes what an uninstall deletes, where a saved value - is stored, what `-s` places, when a saved value takes effect, or how a route reports a - rejection. ## The short form setups print diff --git a/plugins/bash-format/reference/plugin-reconfiguration.md b/plugins/bash-format/reference/plugin-reconfiguration.md index a3d69e8b87c..d002a6a907c 100644 --- a/plugins/bash-format/reference/plugin-reconfiguration.md +++ b/plugins/bash-format/reference/plugin-reconfiguration.md @@ -53,9 +53,6 @@ consumer-run. key forms a release takes, fetch [plugin CLI reference § plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install) live. - - **As of**: 2026-11-03 - - **Recheck trigger**: that section changes what an install of an already-installed plugin does, - or the `--config` key forms. ## Verified-version record @@ -134,10 +131,6 @@ newer release is verified. how each route reports a rejected value, at [§ plugin configure](https://code.claude.com/docs/en/plugins/cli-reference#plugin-configure) and [§ plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install). -- **As of**: 2026-11-03 -- **Recheck trigger**: one of those sections changes what an uninstall deletes, where a saved value - is stored, what `-s` places, when a saved value takes effect, or how a route reports a - rejection. ## The short form setups print diff --git a/plugins/biome-format/reference/plugin-reconfiguration.md b/plugins/biome-format/reference/plugin-reconfiguration.md index a3d69e8b87c..d002a6a907c 100644 --- a/plugins/biome-format/reference/plugin-reconfiguration.md +++ b/plugins/biome-format/reference/plugin-reconfiguration.md @@ -53,9 +53,6 @@ consumer-run. key forms a release takes, fetch [plugin CLI reference § plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install) live. - - **As of**: 2026-11-03 - - **Recheck trigger**: that section changes what an install of an already-installed plugin does, - or the `--config` key forms. ## Verified-version record @@ -134,10 +131,6 @@ newer release is verified. how each route reports a rejected value, at [§ plugin configure](https://code.claude.com/docs/en/plugins/cli-reference#plugin-configure) and [§ plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install). -- **As of**: 2026-11-03 -- **Recheck trigger**: one of those sections changes what an uninstall deletes, where a saved value - is stored, what `-s` places, when a saved value takes effect, or how a route reports a - rejection. ## The short form setups print diff --git a/plugins/bugs/reference/plugin-reconfiguration.md b/plugins/bugs/reference/plugin-reconfiguration.md index a3d69e8b87c..d002a6a907c 100644 --- a/plugins/bugs/reference/plugin-reconfiguration.md +++ b/plugins/bugs/reference/plugin-reconfiguration.md @@ -53,9 +53,6 @@ consumer-run. key forms a release takes, fetch [plugin CLI reference § plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install) live. - - **As of**: 2026-11-03 - - **Recheck trigger**: that section changes what an install of an already-installed plugin does, - or the `--config` key forms. ## Verified-version record @@ -134,10 +131,6 @@ newer release is verified. how each route reports a rejected value, at [§ plugin configure](https://code.claude.com/docs/en/plugins/cli-reference#plugin-configure) and [§ plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install). -- **As of**: 2026-11-03 -- **Recheck trigger**: one of those sections changes what an uninstall deletes, where a saved value - is stored, what `-s` places, when a saved value takes effect, or how a route reports a - rejection. ## The short form setups print diff --git a/plugins/code-tidying/reference/plugin-reconfiguration.md b/plugins/code-tidying/reference/plugin-reconfiguration.md index a3d69e8b87c..d002a6a907c 100644 --- a/plugins/code-tidying/reference/plugin-reconfiguration.md +++ b/plugins/code-tidying/reference/plugin-reconfiguration.md @@ -53,9 +53,6 @@ consumer-run. key forms a release takes, fetch [plugin CLI reference § plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install) live. - - **As of**: 2026-11-03 - - **Recheck trigger**: that section changes what an install of an already-installed plugin does, - or the `--config` key forms. ## Verified-version record @@ -134,10 +131,6 @@ newer release is verified. how each route reports a rejected value, at [§ plugin configure](https://code.claude.com/docs/en/plugins/cli-reference#plugin-configure) and [§ plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install). -- **As of**: 2026-11-03 -- **Recheck trigger**: one of those sections changes what an uninstall deletes, where a saved value - is stored, what `-s` places, when a saved value takes effect, or how a route reports a - rejection. ## The short form setups print diff --git a/plugins/context-budget/reference/plugin-reconfiguration.md b/plugins/context-budget/reference/plugin-reconfiguration.md index a3d69e8b87c..d002a6a907c 100644 --- a/plugins/context-budget/reference/plugin-reconfiguration.md +++ b/plugins/context-budget/reference/plugin-reconfiguration.md @@ -53,9 +53,6 @@ consumer-run. key forms a release takes, fetch [plugin CLI reference § plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install) live. - - **As of**: 2026-11-03 - - **Recheck trigger**: that section changes what an install of an already-installed plugin does, - or the `--config` key forms. ## Verified-version record @@ -134,10 +131,6 @@ newer release is verified. how each route reports a rejected value, at [§ plugin configure](https://code.claude.com/docs/en/plugins/cli-reference#plugin-configure) and [§ plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install). -- **As of**: 2026-11-03 -- **Recheck trigger**: one of those sections changes what an uninstall deletes, where a saved value - is stored, what `-s` places, when a saved value takes effect, or how a route reports a - rejection. ## The short form setups print diff --git a/plugins/desktop-notification/reference/plugin-reconfiguration.md b/plugins/desktop-notification/reference/plugin-reconfiguration.md index a3d69e8b87c..d002a6a907c 100644 --- a/plugins/desktop-notification/reference/plugin-reconfiguration.md +++ b/plugins/desktop-notification/reference/plugin-reconfiguration.md @@ -53,9 +53,6 @@ consumer-run. key forms a release takes, fetch [plugin CLI reference § plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install) live. - - **As of**: 2026-11-03 - - **Recheck trigger**: that section changes what an install of an already-installed plugin does, - or the `--config` key forms. ## Verified-version record @@ -134,10 +131,6 @@ newer release is verified. how each route reports a rejected value, at [§ plugin configure](https://code.claude.com/docs/en/plugins/cli-reference#plugin-configure) and [§ plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install). -- **As of**: 2026-11-03 -- **Recheck trigger**: one of those sections changes what an uninstall deletes, where a saved value - is stored, what `-s` places, when a saved value takes effect, or how a route reports a - rejection. ## The short form setups print diff --git a/plugins/discipline/reference/plugin-reconfiguration.md b/plugins/discipline/reference/plugin-reconfiguration.md index a3d69e8b87c..d002a6a907c 100644 --- a/plugins/discipline/reference/plugin-reconfiguration.md +++ b/plugins/discipline/reference/plugin-reconfiguration.md @@ -53,9 +53,6 @@ consumer-run. key forms a release takes, fetch [plugin CLI reference § plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install) live. - - **As of**: 2026-11-03 - - **Recheck trigger**: that section changes what an install of an already-installed plugin does, - or the `--config` key forms. ## Verified-version record @@ -134,10 +131,6 @@ newer release is verified. how each route reports a rejected value, at [§ plugin configure](https://code.claude.com/docs/en/plugins/cli-reference#plugin-configure) and [§ plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install). -- **As of**: 2026-11-03 -- **Recheck trigger**: one of those sections changes what an uninstall deletes, where a saved value - is stored, what `-s` places, when a saved value takes effect, or how a route reports a - rejection. ## The short form setups print diff --git a/plugins/disk-hygiene/reference/plugin-reconfiguration.md b/plugins/disk-hygiene/reference/plugin-reconfiguration.md index a3d69e8b87c..d002a6a907c 100644 --- a/plugins/disk-hygiene/reference/plugin-reconfiguration.md +++ b/plugins/disk-hygiene/reference/plugin-reconfiguration.md @@ -53,9 +53,6 @@ consumer-run. key forms a release takes, fetch [plugin CLI reference § plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install) live. - - **As of**: 2026-11-03 - - **Recheck trigger**: that section changes what an install of an already-installed plugin does, - or the `--config` key forms. ## Verified-version record @@ -134,10 +131,6 @@ newer release is verified. how each route reports a rejected value, at [§ plugin configure](https://code.claude.com/docs/en/plugins/cli-reference#plugin-configure) and [§ plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install). -- **As of**: 2026-11-03 -- **Recheck trigger**: one of those sections changes what an uninstall deletes, where a saved value - is stored, what `-s` places, when a saved value takes effect, or how a route reports a - rejection. ## The short form setups print diff --git a/plugins/docs-hygiene/reference/plugin-reconfiguration.md b/plugins/docs-hygiene/reference/plugin-reconfiguration.md index a3d69e8b87c..d002a6a907c 100644 --- a/plugins/docs-hygiene/reference/plugin-reconfiguration.md +++ b/plugins/docs-hygiene/reference/plugin-reconfiguration.md @@ -53,9 +53,6 @@ consumer-run. key forms a release takes, fetch [plugin CLI reference § plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install) live. - - **As of**: 2026-11-03 - - **Recheck trigger**: that section changes what an install of an already-installed plugin does, - or the `--config` key forms. ## Verified-version record @@ -134,10 +131,6 @@ newer release is verified. how each route reports a rejected value, at [§ plugin configure](https://code.claude.com/docs/en/plugins/cli-reference#plugin-configure) and [§ plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install). -- **As of**: 2026-11-03 -- **Recheck trigger**: one of those sections changes what an uninstall deletes, where a saved value - is stored, what `-s` places, when a saved value takes effect, or how a route reports a - rejection. ## The short form setups print diff --git a/plugins/education/reference/plugin-reconfiguration.md b/plugins/education/reference/plugin-reconfiguration.md index a3d69e8b87c..d002a6a907c 100644 --- a/plugins/education/reference/plugin-reconfiguration.md +++ b/plugins/education/reference/plugin-reconfiguration.md @@ -53,9 +53,6 @@ consumer-run. key forms a release takes, fetch [plugin CLI reference § plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install) live. - - **As of**: 2026-11-03 - - **Recheck trigger**: that section changes what an install of an already-installed plugin does, - or the `--config` key forms. ## Verified-version record @@ -134,10 +131,6 @@ newer release is verified. how each route reports a rejected value, at [§ plugin configure](https://code.claude.com/docs/en/plugins/cli-reference#plugin-configure) and [§ plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install). -- **As of**: 2026-11-03 -- **Recheck trigger**: one of those sections changes what an uninstall deletes, where a saved value - is stored, what `-s` places, when a saved value takes effect, or how a route reports a - rejection. ## The short form setups print diff --git a/plugins/eol-normalizer/reference/plugin-reconfiguration.md b/plugins/eol-normalizer/reference/plugin-reconfiguration.md index a3d69e8b87c..d002a6a907c 100644 --- a/plugins/eol-normalizer/reference/plugin-reconfiguration.md +++ b/plugins/eol-normalizer/reference/plugin-reconfiguration.md @@ -53,9 +53,6 @@ consumer-run. key forms a release takes, fetch [plugin CLI reference § plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install) live. - - **As of**: 2026-11-03 - - **Recheck trigger**: that section changes what an install of an already-installed plugin does, - or the `--config` key forms. ## Verified-version record @@ -134,10 +131,6 @@ newer release is verified. how each route reports a rejected value, at [§ plugin configure](https://code.claude.com/docs/en/plugins/cli-reference#plugin-configure) and [§ plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install). -- **As of**: 2026-11-03 -- **Recheck trigger**: one of those sections changes what an uninstall deletes, where a saved value - is stored, what `-s` places, when a saved value takes effect, or how a route reports a - rejection. ## The short form setups print diff --git a/plugins/go-format/reference/plugin-reconfiguration.md b/plugins/go-format/reference/plugin-reconfiguration.md index a3d69e8b87c..d002a6a907c 100644 --- a/plugins/go-format/reference/plugin-reconfiguration.md +++ b/plugins/go-format/reference/plugin-reconfiguration.md @@ -53,9 +53,6 @@ consumer-run. key forms a release takes, fetch [plugin CLI reference § plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install) live. - - **As of**: 2026-11-03 - - **Recheck trigger**: that section changes what an install of an already-installed plugin does, - or the `--config` key forms. ## Verified-version record @@ -134,10 +131,6 @@ newer release is verified. how each route reports a rejected value, at [§ plugin configure](https://code.claude.com/docs/en/plugins/cli-reference#plugin-configure) and [§ plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install). -- **As of**: 2026-11-03 -- **Recheck trigger**: one of those sections changes what an uninstall deletes, where a saved value - is stored, what `-s` places, when a saved value takes effect, or how a route reports a - rejection. ## The short form setups print diff --git a/plugins/guardrails/reference/plugin-reconfiguration.md b/plugins/guardrails/reference/plugin-reconfiguration.md index a3d69e8b87c..d002a6a907c 100644 --- a/plugins/guardrails/reference/plugin-reconfiguration.md +++ b/plugins/guardrails/reference/plugin-reconfiguration.md @@ -53,9 +53,6 @@ consumer-run. key forms a release takes, fetch [plugin CLI reference § plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install) live. - - **As of**: 2026-11-03 - - **Recheck trigger**: that section changes what an install of an already-installed plugin does, - or the `--config` key forms. ## Verified-version record @@ -134,10 +131,6 @@ newer release is verified. how each route reports a rejected value, at [§ plugin configure](https://code.claude.com/docs/en/plugins/cli-reference#plugin-configure) and [§ plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install). -- **As of**: 2026-11-03 -- **Recheck trigger**: one of those sections changes what an uninstall deletes, where a saved value - is stored, what `-s` places, when a saved value takes effect, or how a route reports a - rejection. ## The short form setups print diff --git a/plugins/harness-ops/reference/plugin-reconfiguration.md b/plugins/harness-ops/reference/plugin-reconfiguration.md index a3d69e8b87c..d002a6a907c 100644 --- a/plugins/harness-ops/reference/plugin-reconfiguration.md +++ b/plugins/harness-ops/reference/plugin-reconfiguration.md @@ -53,9 +53,6 @@ consumer-run. key forms a release takes, fetch [plugin CLI reference § plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install) live. - - **As of**: 2026-11-03 - - **Recheck trigger**: that section changes what an install of an already-installed plugin does, - or the `--config` key forms. ## Verified-version record @@ -134,10 +131,6 @@ newer release is verified. how each route reports a rejected value, at [§ plugin configure](https://code.claude.com/docs/en/plugins/cli-reference#plugin-configure) and [§ plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install). -- **As of**: 2026-11-03 -- **Recheck trigger**: one of those sections changes what an uninstall deletes, where a saved value - is stored, what `-s` places, when a saved value takes effect, or how a route reports a - rejection. ## The short form setups print diff --git a/plugins/improvement/reference/standards-contract.md b/plugins/improvement/reference/standards-contract.md index d6927ce14de..121e0ac28fc 100644 --- a/plugins/improvement/reference/standards-contract.md +++ b/plugins/improvement/reference/standards-contract.md @@ -242,9 +242,6 @@ auto-rewrite in either direction. - **Pointer**: when a rule's load timing matters, fetch [memory: path-specific rules](https://code.claude.com/docs/en/memory#path-specific-rules) live. - - **As of**: 2026-10-10 - - **Recheck trigger**: that section changes which tool use loads a - path-scoped rule. - **Standards = pull** (index-routed at plan/review stages): substantial criteria and prose. - **Pointer pattern:** a path-scoped rule may carry an imperative pointer diff --git a/plugins/knowledge/reference/plugin-reconfiguration.md b/plugins/knowledge/reference/plugin-reconfiguration.md index a3d69e8b87c..d002a6a907c 100644 --- a/plugins/knowledge/reference/plugin-reconfiguration.md +++ b/plugins/knowledge/reference/plugin-reconfiguration.md @@ -53,9 +53,6 @@ consumer-run. key forms a release takes, fetch [plugin CLI reference § plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install) live. - - **As of**: 2026-11-03 - - **Recheck trigger**: that section changes what an install of an already-installed plugin does, - or the `--config` key forms. ## Verified-version record @@ -134,10 +131,6 @@ newer release is verified. how each route reports a rejected value, at [§ plugin configure](https://code.claude.com/docs/en/plugins/cli-reference#plugin-configure) and [§ plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install). -- **As of**: 2026-11-03 -- **Recheck trigger**: one of those sections changes what an uninstall deletes, where a saved value - is stored, what `-s` places, when a saved value takes effect, or how a route reports a - rejection. ## The short form setups print diff --git a/plugins/machine-health/reference/plugin-reconfiguration.md b/plugins/machine-health/reference/plugin-reconfiguration.md index a3d69e8b87c..d002a6a907c 100644 --- a/plugins/machine-health/reference/plugin-reconfiguration.md +++ b/plugins/machine-health/reference/plugin-reconfiguration.md @@ -53,9 +53,6 @@ consumer-run. key forms a release takes, fetch [plugin CLI reference § plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install) live. - - **As of**: 2026-11-03 - - **Recheck trigger**: that section changes what an install of an already-installed plugin does, - or the `--config` key forms. ## Verified-version record @@ -134,10 +131,6 @@ newer release is verified. how each route reports a rejected value, at [§ plugin configure](https://code.claude.com/docs/en/plugins/cli-reference#plugin-configure) and [§ plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install). -- **As of**: 2026-11-03 -- **Recheck trigger**: one of those sections changes what an uninstall deletes, where a saved value - is stored, what `-s` places, when a saved value takes effect, or how a route reports a - rejection. ## The short form setups print diff --git a/plugins/markdown-format/reference/plugin-reconfiguration.md b/plugins/markdown-format/reference/plugin-reconfiguration.md index a3d69e8b87c..d002a6a907c 100644 --- a/plugins/markdown-format/reference/plugin-reconfiguration.md +++ b/plugins/markdown-format/reference/plugin-reconfiguration.md @@ -53,9 +53,6 @@ consumer-run. key forms a release takes, fetch [plugin CLI reference § plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install) live. - - **As of**: 2026-11-03 - - **Recheck trigger**: that section changes what an install of an already-installed plugin does, - or the `--config` key forms. ## Verified-version record @@ -134,10 +131,6 @@ newer release is verified. how each route reports a rejected value, at [§ plugin configure](https://code.claude.com/docs/en/plugins/cli-reference#plugin-configure) and [§ plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install). -- **As of**: 2026-11-03 -- **Recheck trigger**: one of those sections changes what an uninstall deletes, where a saved value - is stored, what `-s` places, when a saved value takes effect, or how a route reports a - rejection. ## The short form setups print diff --git a/plugins/miro/reference/plugin-reconfiguration.md b/plugins/miro/reference/plugin-reconfiguration.md index a3d69e8b87c..d002a6a907c 100644 --- a/plugins/miro/reference/plugin-reconfiguration.md +++ b/plugins/miro/reference/plugin-reconfiguration.md @@ -53,9 +53,6 @@ consumer-run. key forms a release takes, fetch [plugin CLI reference § plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install) live. - - **As of**: 2026-11-03 - - **Recheck trigger**: that section changes what an install of an already-installed plugin does, - or the `--config` key forms. ## Verified-version record @@ -134,10 +131,6 @@ newer release is verified. how each route reports a rejected value, at [§ plugin configure](https://code.claude.com/docs/en/plugins/cli-reference#plugin-configure) and [§ plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install). -- **As of**: 2026-11-03 -- **Recheck trigger**: one of those sections changes what an uninstall deletes, where a saved value - is stored, what `-s` places, when a saved value takes effect, or how a route reports a - rejection. ## The short form setups print diff --git a/plugins/mutation-testing/reference/plugin-reconfiguration.md b/plugins/mutation-testing/reference/plugin-reconfiguration.md index a3d69e8b87c..d002a6a907c 100644 --- a/plugins/mutation-testing/reference/plugin-reconfiguration.md +++ b/plugins/mutation-testing/reference/plugin-reconfiguration.md @@ -53,9 +53,6 @@ consumer-run. key forms a release takes, fetch [plugin CLI reference § plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install) live. - - **As of**: 2026-11-03 - - **Recheck trigger**: that section changes what an install of an already-installed plugin does, - or the `--config` key forms. ## Verified-version record @@ -134,10 +131,6 @@ newer release is verified. how each route reports a rejected value, at [§ plugin configure](https://code.claude.com/docs/en/plugins/cli-reference#plugin-configure) and [§ plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install). -- **As of**: 2026-11-03 -- **Recheck trigger**: one of those sections changes what an uninstall deletes, where a saved value - is stored, what `-s` places, when a saved value takes effect, or how a route reports a - rejection. ## The short form setups print diff --git a/plugins/planning/reference/plugin-reconfiguration.md b/plugins/planning/reference/plugin-reconfiguration.md index a3d69e8b87c..d002a6a907c 100644 --- a/plugins/planning/reference/plugin-reconfiguration.md +++ b/plugins/planning/reference/plugin-reconfiguration.md @@ -53,9 +53,6 @@ consumer-run. key forms a release takes, fetch [plugin CLI reference § plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install) live. - - **As of**: 2026-11-03 - - **Recheck trigger**: that section changes what an install of an already-installed plugin does, - or the `--config` key forms. ## Verified-version record @@ -134,10 +131,6 @@ newer release is verified. how each route reports a rejected value, at [§ plugin configure](https://code.claude.com/docs/en/plugins/cli-reference#plugin-configure) and [§ plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install). -- **As of**: 2026-11-03 -- **Recheck trigger**: one of those sections changes what an uninstall deletes, where a saved value - is stored, what `-s` places, when a saved value takes effect, or how a route reports a - rejection. ## The short form setups print diff --git a/plugins/planning/reference/standards-contract.md b/plugins/planning/reference/standards-contract.md index d6927ce14de..121e0ac28fc 100644 --- a/plugins/planning/reference/standards-contract.md +++ b/plugins/planning/reference/standards-contract.md @@ -242,9 +242,6 @@ auto-rewrite in either direction. - **Pointer**: when a rule's load timing matters, fetch [memory: path-specific rules](https://code.claude.com/docs/en/memory#path-specific-rules) live. - - **As of**: 2026-10-10 - - **Recheck trigger**: that section changes which tool use loads a - path-scoped rule. - **Standards = pull** (index-routed at plan/review stages): substantial criteria and prose. - **Pointer pattern:** a path-scoped rule may carry an imperative pointer diff --git a/plugins/powershell-format/reference/plugin-reconfiguration.md b/plugins/powershell-format/reference/plugin-reconfiguration.md index a3d69e8b87c..d002a6a907c 100644 --- a/plugins/powershell-format/reference/plugin-reconfiguration.md +++ b/plugins/powershell-format/reference/plugin-reconfiguration.md @@ -53,9 +53,6 @@ consumer-run. key forms a release takes, fetch [plugin CLI reference § plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install) live. - - **As of**: 2026-11-03 - - **Recheck trigger**: that section changes what an install of an already-installed plugin does, - or the `--config` key forms. ## Verified-version record @@ -134,10 +131,6 @@ newer release is verified. how each route reports a rejected value, at [§ plugin configure](https://code.claude.com/docs/en/plugins/cli-reference#plugin-configure) and [§ plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install). -- **As of**: 2026-11-03 -- **Recheck trigger**: one of those sections changes what an uninstall deletes, where a saved value - is stored, what `-s` places, when a saved value takes effect, or how a route reports a - rejection. ## The short form setups print diff --git a/plugins/rate-limit-guard/reference/plugin-reconfiguration.md b/plugins/rate-limit-guard/reference/plugin-reconfiguration.md index a3d69e8b87c..d002a6a907c 100644 --- a/plugins/rate-limit-guard/reference/plugin-reconfiguration.md +++ b/plugins/rate-limit-guard/reference/plugin-reconfiguration.md @@ -53,9 +53,6 @@ consumer-run. key forms a release takes, fetch [plugin CLI reference § plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install) live. - - **As of**: 2026-11-03 - - **Recheck trigger**: that section changes what an install of an already-installed plugin does, - or the `--config` key forms. ## Verified-version record @@ -134,10 +131,6 @@ newer release is verified. how each route reports a rejected value, at [§ plugin configure](https://code.claude.com/docs/en/plugins/cli-reference#plugin-configure) and [§ plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install). -- **As of**: 2026-11-03 -- **Recheck trigger**: one of those sections changes what an uninstall deletes, where a saved value - is stored, what `-s` places, when a saved value takes effect, or how a route reports a - rejection. ## The short form setups print diff --git a/plugins/repo-hygiene/reference/plugin-reconfiguration.md b/plugins/repo-hygiene/reference/plugin-reconfiguration.md index a3d69e8b87c..d002a6a907c 100644 --- a/plugins/repo-hygiene/reference/plugin-reconfiguration.md +++ b/plugins/repo-hygiene/reference/plugin-reconfiguration.md @@ -53,9 +53,6 @@ consumer-run. key forms a release takes, fetch [plugin CLI reference § plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install) live. - - **As of**: 2026-11-03 - - **Recheck trigger**: that section changes what an install of an already-installed plugin does, - or the `--config` key forms. ## Verified-version record @@ -134,10 +131,6 @@ newer release is verified. how each route reports a rejected value, at [§ plugin configure](https://code.claude.com/docs/en/plugins/cli-reference#plugin-configure) and [§ plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install). -- **As of**: 2026-11-03 -- **Recheck trigger**: one of those sections changes what an uninstall deletes, where a saved value - is stored, what `-s` places, when a saved value takes effect, or how a route reports a - rejection. ## The short form setups print diff --git a/plugins/review/reference/standards-contract.md b/plugins/review/reference/standards-contract.md index d6927ce14de..121e0ac28fc 100644 --- a/plugins/review/reference/standards-contract.md +++ b/plugins/review/reference/standards-contract.md @@ -242,9 +242,6 @@ auto-rewrite in either direction. - **Pointer**: when a rule's load timing matters, fetch [memory: path-specific rules](https://code.claude.com/docs/en/memory#path-specific-rules) live. - - **As of**: 2026-10-10 - - **Recheck trigger**: that section changes which tool use loads a - path-scoped rule. - **Standards = pull** (index-routed at plan/review stages): substantial criteria and prose. - **Pointer pattern:** a path-scoped rule may carry an imperative pointer diff --git a/plugins/ruff-format/reference/plugin-reconfiguration.md b/plugins/ruff-format/reference/plugin-reconfiguration.md index a3d69e8b87c..d002a6a907c 100644 --- a/plugins/ruff-format/reference/plugin-reconfiguration.md +++ b/plugins/ruff-format/reference/plugin-reconfiguration.md @@ -53,9 +53,6 @@ consumer-run. key forms a release takes, fetch [plugin CLI reference § plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install) live. - - **As of**: 2026-11-03 - - **Recheck trigger**: that section changes what an install of an already-installed plugin does, - or the `--config` key forms. ## Verified-version record @@ -134,10 +131,6 @@ newer release is verified. how each route reports a rejected value, at [§ plugin configure](https://code.claude.com/docs/en/plugins/cli-reference#plugin-configure) and [§ plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install). -- **As of**: 2026-11-03 -- **Recheck trigger**: one of those sections changes what an uninstall deletes, where a saved value - is stored, what `-s` places, when a saved value takes effect, or how a route reports a - rejection. ## The short form setups print diff --git a/plugins/session-flow/reference/plugin-reconfiguration.md b/plugins/session-flow/reference/plugin-reconfiguration.md index a3d69e8b87c..d002a6a907c 100644 --- a/plugins/session-flow/reference/plugin-reconfiguration.md +++ b/plugins/session-flow/reference/plugin-reconfiguration.md @@ -53,9 +53,6 @@ consumer-run. key forms a release takes, fetch [plugin CLI reference § plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install) live. - - **As of**: 2026-11-03 - - **Recheck trigger**: that section changes what an install of an already-installed plugin does, - or the `--config` key forms. ## Verified-version record @@ -134,10 +131,6 @@ newer release is verified. how each route reports a rejected value, at [§ plugin configure](https://code.claude.com/docs/en/plugins/cli-reference#plugin-configure) and [§ plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install). -- **As of**: 2026-11-03 -- **Recheck trigger**: one of those sections changes what an uninstall deletes, where a saved value - is stored, what `-s` places, when a saved value takes effect, or how a route reports a - rejection. ## The short form setups print diff --git a/plugins/skill-quality/reference/plugin-reconfiguration.md b/plugins/skill-quality/reference/plugin-reconfiguration.md index a3d69e8b87c..d002a6a907c 100644 --- a/plugins/skill-quality/reference/plugin-reconfiguration.md +++ b/plugins/skill-quality/reference/plugin-reconfiguration.md @@ -53,9 +53,6 @@ consumer-run. key forms a release takes, fetch [plugin CLI reference § plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install) live. - - **As of**: 2026-11-03 - - **Recheck trigger**: that section changes what an install of an already-installed plugin does, - or the `--config` key forms. ## Verified-version record @@ -134,10 +131,6 @@ newer release is verified. how each route reports a rejected value, at [§ plugin configure](https://code.claude.com/docs/en/plugins/cli-reference#plugin-configure) and [§ plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install). -- **As of**: 2026-11-03 -- **Recheck trigger**: one of those sections changes what an uninstall deletes, where a saved value - is stored, what `-s` places, when a saved value takes effect, or how a route reports a - rejection. ## The short form setups print diff --git a/plugins/source-control/reference/plugin-reconfiguration.md b/plugins/source-control/reference/plugin-reconfiguration.md index a3d69e8b87c..d002a6a907c 100644 --- a/plugins/source-control/reference/plugin-reconfiguration.md +++ b/plugins/source-control/reference/plugin-reconfiguration.md @@ -53,9 +53,6 @@ consumer-run. key forms a release takes, fetch [plugin CLI reference § plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install) live. - - **As of**: 2026-11-03 - - **Recheck trigger**: that section changes what an install of an already-installed plugin does, - or the `--config` key forms. ## Verified-version record @@ -134,10 +131,6 @@ newer release is verified. how each route reports a rejected value, at [§ plugin configure](https://code.claude.com/docs/en/plugins/cli-reference#plugin-configure) and [§ plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install). -- **As of**: 2026-11-03 -- **Recheck trigger**: one of those sections changes what an uninstall deletes, where a saved value - is stored, what `-s` places, when a saved value takes effect, or how a route reports a - rejection. ## The short form setups print diff --git a/plugins/typos-format/reference/plugin-reconfiguration.md b/plugins/typos-format/reference/plugin-reconfiguration.md index a3d69e8b87c..d002a6a907c 100644 --- a/plugins/typos-format/reference/plugin-reconfiguration.md +++ b/plugins/typos-format/reference/plugin-reconfiguration.md @@ -53,9 +53,6 @@ consumer-run. key forms a release takes, fetch [plugin CLI reference § plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install) live. - - **As of**: 2026-11-03 - - **Recheck trigger**: that section changes what an install of an already-installed plugin does, - or the `--config` key forms. ## Verified-version record @@ -134,10 +131,6 @@ newer release is verified. how each route reports a rejected value, at [§ plugin configure](https://code.claude.com/docs/en/plugins/cli-reference#plugin-configure) and [§ plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install). -- **As of**: 2026-11-03 -- **Recheck trigger**: one of those sections changes what an uninstall deletes, where a saved value - is stored, what `-s` places, when a saved value takes effect, or how a route reports a - rejection. ## The short form setups print diff --git a/plugins/user-interface/reference/plugin-reconfiguration.md b/plugins/user-interface/reference/plugin-reconfiguration.md index a3d69e8b87c..d002a6a907c 100644 --- a/plugins/user-interface/reference/plugin-reconfiguration.md +++ b/plugins/user-interface/reference/plugin-reconfiguration.md @@ -53,9 +53,6 @@ consumer-run. key forms a release takes, fetch [plugin CLI reference § plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install) live. - - **As of**: 2026-11-03 - - **Recheck trigger**: that section changes what an install of an already-installed plugin does, - or the `--config` key forms. ## Verified-version record @@ -134,10 +131,6 @@ newer release is verified. how each route reports a rejected value, at [§ plugin configure](https://code.claude.com/docs/en/plugins/cli-reference#plugin-configure) and [§ plugin install](https://code.claude.com/docs/en/plugins/cli-reference#plugin-install). -- **As of**: 2026-11-03 -- **Recheck trigger**: one of those sections changes what an uninstall deletes, where a saved value - is stored, what `-s` places, when a saved value takes effect, or how a route reports a - rejection. ## The short form setups print From 22a97330084197ad3634fb987092895652f67ba9 Mon Sep 17 00:00:00 2001 From: Kyle Sexton <153232337+kyle-sexton@users.noreply.github.com> Date: Wed, 11 Nov 2026 18:46:04 -0500 Subject: [PATCH 2/5] docs: drop stamps that guard no stored value (docs, D26) Owner decision D26 narrows a stored value to a record that holds a number or string copied or measured from upstream (default, limit, version gate, price, error string, measured figure, hash, pinned SHA). Every other stamp in docs/ outside ADRs goes: described or observed behavior, "no docs page covers X" notes, last-researched dates. Recorded decisions keep their named trigger and drop only the as-of date. docs/upstream records keep stamps only where they store a figure, version, hash or pinned SHA. Restated upstream prose is left in place and listed in the PR body for a later cut. upstream-drift and docs/review/skills-and-agents.md are left to a separate PR. authoring-formats (1.0.7) and native-references (3.6.1) get patch entries, and execution-target's 2.0.1 entry covers the routine-triggers record, as their Versioning sections ask. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01VcupojQwC9uJAfmSt4EHZm --- docs/cloud-sessions.md | 4 +- docs/contracts/authoring-formats/CHANGELOG.md | 7 ++ docs/contracts/authoring-formats/README.md | 5 +- docs/contracts/execution-target/CHANGELOG.md | 3 +- docs/contracts/execution-target/README.md | 3 +- docs/contracts/hook-input-rewriting/README.md | 3 - docs/contracts/hook-observability/README.md | 23 ++--- docs/contracts/hook-precision/README.md | 5 +- docs/contracts/hook-telemetry/README.md | 3 - docs/contracts/loop-lane/README.md | 30 ++---- docs/contracts/loop-lane/posting-lanes.md | 3 +- docs/contracts/mod-authoring/README.md | 12 --- docs/contracts/native-references/CHANGELOG.md | 6 ++ docs/contracts/native-references/README.md | 12 +-- .../permission-rule-hygiene/README.md | 4 +- docs/conventions/gather-block/README.md | 3 +- docs/finding-your-unknowns.md | 10 +- docs/migration-playbook.md | 6 +- .../agent-run-artifact-attestation.md | 1 - docs/plugin-philosophy.md | 97 ++++--------------- .../ayushsoni-design-slop-indicators.md | 5 +- docs/upstream/claude-code-mods/experiments.md | 5 +- docs/upstream/claude-code.md | 4 +- docs/upstream/claude-com-fold-subagents.md | 14 +-- ...ev-building-effective-agent-automations.md | 7 +- ...claude-dev-how-we-made-claude-ai-faster.md | 10 +- docs/upstream/claude-dev-sonnet-5-5-blog.md | 4 +- .../claude-dev-spending-your-effort-blog.md | 8 +- docs/upstream/claudedevs-cost-performance.md | 6 +- docs/upstream/mattpocock-skills.md | 10 +- docs/upstream/opus-5-5-task-cost.md | 3 +- docs/upstream/opus-5-5-usage-guide.md | 3 +- ...m-claude-com-prompting-claude-fable-5-2.md | 17 +--- ...m-addyosmani-status-2117512471930167377.md | 8 +- ...m-addyosmani-status-2119332146485891501.md | 13 +-- 35 files changed, 96 insertions(+), 261 deletions(-) diff --git a/docs/cloud-sessions.md b/docs/cloud-sessions.md index 8480076dad2..3b53dfc2fc6 100644 --- a/docs/cloud-sessions.md +++ b/docs/cloud-sessions.md @@ -285,8 +285,8 @@ from the two together (see Code process starts, before SessionStart hook effects land, and is not re-read afterwards; the hooks reference's only same-session pickup is [`reloadSkills`](https://code.claude.com/docs/en/hooks#reload-skills-that-a-hook-installs), whose - section names skill directories and not a plugin install, and whether it reaches one is unprobed - (as of 2026-11-04; recheck when that section names plugins). Neither `/plugin` + section names skill directories and not a plugin install, and whether it reaches one is unprobed. + Neither `/plugin` ([terminal-only commands](https://code.claude.com/docs/en/claude-code-on-the-web#manage-context)) nor `--plugin-dir` exists in cloud sessions to force one. On an ephemeral VM this is a chicken-and-egg problem, because every fresh session re-installs after its registry is diff --git a/docs/contracts/authoring-formats/CHANGELOG.md b/docs/contracts/authoring-formats/CHANGELOG.md index 1e81f30be8e..e597a346de5 100644 --- a/docs/contracts/authoring-formats/CHANGELOG.md +++ b/docs/contracts/authoring-formats/CHANGELOG.md @@ -6,6 +6,13 @@ value is minor; clarification is a patch. A recheck of the Mermaid-C4 record lan it produces a drift outcome; refreshing the record's as-of date with no verdict change is no entry and no version bump, per the upstream-drift contract's "When a trigger fires". +## [1.0.7] - 2026-11-11 + +Clarification. No key, allowed value, or default changes. + +- The Mermaid-C4 record drops its as-of date and keeps its named trigger, per upstream-drift + owner decision D26: it records no upstream number or string. + ## [1.0.6] - 2026-11-11 Clarification. No key, allowed value, or default changes. diff --git a/docs/contracts/authoring-formats/README.md b/docs/contracts/authoring-formats/README.md index 15355cc5659..a0520d5bfcc 100644 --- a/docs/contracts/authoring-formats/README.md +++ b/docs/contracts/authoring-formats/README.md @@ -78,17 +78,16 @@ output. Mermaid is not one of the system key's values. This convention offers a C4 dialect only once its maintainers document the C4 syntax as stable and a reader of the key can emit it. Mermaid meets -neither condition as of the date below. No reader of the key can emit it: the architecture +neither condition. No reader of the key can emit it: the architecture plugin's resolver fixes the system set to `likec4` and `c4-plantuml`, and neither `/planning:design` nor the four C4 map views' render scripts have a mermaid C4 path. Adding the value would mean a resolver change and five emitters, which no consumer has asked for. The landscape keeps its mermaid default and its `C4Context` output without a focal system, since -mermaid offers no dedicated landscape type as of the same date. The decision depends on mermaid's +mermaid offers no dedicated landscape type. The decision depends on mermaid's C4 docs, so it carries a record per [`upstream-drift`](../upstream-drift/README.md): - **Pointer**: when deciding whether mermaid can be a system-key value or whether the landscape's mermaid output shape should change, fetch live. -- **As of**: 2026-11-04 - **Recheck trigger**: Any of these observable events: the pointer page, or a sibling mermaid C4 syntax page linked from it, documents the C4 syntax as stable; mermaid documents a dedicated landscape diagram type; or an issue in this repository asks for mermaid C4 output from a reader diff --git a/docs/contracts/execution-target/CHANGELOG.md b/docs/contracts/execution-target/CHANGELOG.md index 38776a7c458..1af2ada80ec 100644 --- a/docs/contracts/execution-target/CHANGELOG.md +++ b/docs/contracts/execution-target/CHANGELOG.md @@ -3,7 +3,8 @@ ## 2.0.1 - 2026-11-11 The vendor-fact pointers no longer carry an as-of date or recheck trigger, per the upstream-drift -convention 5.0.0. The cloud launch pointer links the renamed "Start a cloud session from your +convention 5.0.0; the routine-triggers record, which stores no upstream number or string, drops +its stamps too. The cloud launch pointer links the renamed "Start a cloud session from your terminal" section, and the cloud environments pointer links its two sections by anchor. ## 2.0.0 - 2026-10-21 diff --git a/docs/contracts/execution-target/README.md b/docs/contracts/execution-target/README.md index 6ac21a13ef7..cd970bd5573 100644 --- a/docs/contracts/execution-target/README.md +++ b/docs/contracts/execution-target/README.md @@ -233,8 +233,7 @@ The lanes launcher carries a copy of the plugin column (`stage_required_plugins` - **Routine triggers.** Pointer: the "Supported events" table on [Routines](https://code.claude.com/docs/en/routines#supported-events) (pull request and release events), and its "Connectors" section (every connected connector is included by default and its - tools run without approval). As of: 2026-10-04. Recheck trigger: the table gains an issues event, or - the connector default changes. The open conflict is anthropics/claude-code#72290 (an issue-opened + tools run without approval). The open conflict is anthropics/claude-code#72290 (an issue-opened routine trigger that did not fire, closed as stale); nothing here relies on an issue trigger. - **Cloud launch and upload.** Pointer: [Start a cloud session from your terminal](https://code.claude.com/docs/en/claude-code-on-the-web#start-a-cloud-session-from-your-terminal) diff --git a/docs/contracts/hook-input-rewriting/README.md b/docs/contracts/hook-input-rewriting/README.md index 33bcb09e6e5..0ecccb99b71 100644 --- a/docs/contracts/hook-input-rewriting/README.md +++ b/docs/contracts/hook-input-rewriting/README.md @@ -64,9 +64,6 @@ that can fire in a lane denies with instructions and never returns `updatedInput [hooks: PreToolUse `updatedInput` in auto mode](https://code.claude.com/docs/en/hooks#pretooluse-updatedinput-in-auto-mode) and . -- **As of**: 2026-11-04 -- **Recheck trigger**: either section stops naming `PreToolUse` settings hooks, or auto mode starts - sending a hook's changed input back through the classifier. ## Boundary diff --git a/docs/contracts/hook-observability/README.md b/docs/contracts/hook-observability/README.md index a5520fe2116..07983804ab6 100644 --- a/docs/contracts/hook-observability/README.md +++ b/docs/contracts/hook-observability/README.md @@ -71,7 +71,6 @@ notice takes. The rule rests on a negative: we found no file-change or diff surf output channels, so a benign reflow and a wrong dictionary rewrite arrive identically. - **Pointer**: for the hook output fields, see . -- **As of**: 2026-08-10 - **Recheck trigger**: a Claude Code release that adds a file-change or diff surface to the hook output schema, whether a fourth output field or such a payload on one of [the three](#the-three-surfaces), which would make this rule's disclosure requirement redundant. @@ -88,9 +87,7 @@ count, or the disclosure becomes the noise problem it was meant to prevent. - **Exit-2 blocking paths.** A block already delivers its reason, so repeating it on `systemMessage` is redundant, not more observable. Pointer: for where the blocking message goes, - see . As of: 2026-10-04. Recheck trigger: - that section changes what a `PreToolUse` block shows or which text becomes its reason. A - blocking hook may still carry a `systemMessage` (see above), but only for content that meets the + see . A blocking hook may still carry a `systemMessage` (see above), but only for content that meets the carve-out below, never for the reason itself. - **Legitimate advisory findings *the model can act on*.** A hook that surfaces a finding to Claude for it to act on (e.g. a lint result, a suggested fix) belongs on `additionalContext` only. That @@ -139,17 +136,15 @@ unguarded `hook::emit_skip_notice` call on a broad-matcher hook is a conformance notice fires once per session; the model notice fires once per agent, because a non-fork subagent does not share the parent's context and would otherwise never see why the hook skipped. A fork inherits only what fired before it spawned -([subagents: how forks differ from other subagents](https://code.claude.com/docs/en/sub-agents#how-forks-differ-from-other-subagents), -as of 2026-11-01; recheck when that section changes what a fork inherits), so it gets its own -notice too. Neither renews. The +([subagents: how forks differ from other subagents](https://code.claude.com/docs/en/sub-agents#how-forks-differ-from-other-subagents)), +so it gets its own notice too. Neither renews. The text says the notice will not repeat this session, never that the skip lasts the session: the hook probes again on every call. A plugin README states the cadence as "once per session". A missing external binary keeps the same cadence, with the install route in its user notice. **Important exit-code caveat:** a bare `echo "..." >&2; exit 0` skip is **not a notice**; only stdout JSON carries one. Pointer: for where exit-0 stderr goes, see -. As of: 2026-10-04. Recheck trigger: that -section starts showing exit-0 stderr in the transcript or to the model. `scripts/check-silent-skips.sh` **still treats a bare +. `scripts/check-silent-skips.sh` **still treats a bare stderr write as a sanctioned visibility signal as of this doc's introduction.** That is incorrect for the exit-0 skip shapes the gate inspects, and the gate does not yet enforce the rule this doc states. **Gate correction is pending**, scoped into the same fleet-adoption follow-up PR (against @@ -201,9 +196,6 @@ Three cap decisions, each with the section that owns the figure. this is where the next reader should find the answer. - **Pointer**: for the field and its limits, see . - - **As of**: 2026-09-05 - - **Recheck trigger**: that section changes the field's cap, its sharing rule, or the events - that accept it. ### 3. OTel-style telemetry envelope @@ -221,8 +213,7 @@ for the precise rule and why. The guard mods emit on fewer outcomes, under a `OTEL_*` exporter configuration, so it cannot emit real OpenTelemetry. The file-sink envelope is the only telemetry surface we give a hook; this is a constraint, not an oversight. Pointer: for which subprocesses get no `OTEL_*` variables, see -. As of: 2026-10-01. -Recheck trigger: that section starts passing `OTEL_*` variables to hook subprocesses. +. **Deferred: `prompt_id` correlation.** Carrying the hook input's `prompt_id` in the envelope would let external tooling correlate a hook's local envelope with the same turn's real OTel stream. @@ -308,9 +299,7 @@ carrying the exact text sent, so the debug log holds what the model read. agent-actionable content to the user channel). - **Not a UI feature, but "no verbose surface exists" is the wrong reason.** Verbose surfaces do exist, and the hooks reference names one that carries background-hook output. Pointer: for that - surface, see . As of: 2026-08-11. - Recheck trigger: that section stops naming a surface that carries background-hook output. - Alongside it are the `verbose` and `viewMode` settings, the `--verbose` flag, + surface, see . Alongside it are the `verbose` and `viewMode` settings, the `--verbose` flag, `CLAUDE_CODE_DEBUG_LOG_LEVEL=verbose` for hook matcher counts, and `--include-hook-events` for the stream-json event feed. diff --git a/docs/contracts/hook-precision/README.md b/docs/contracts/hook-precision/README.md index 372ef38e255..45aa9825d79 100644 --- a/docs/contracts/hook-precision/README.md +++ b/docs/contracts/hook-precision/README.md @@ -72,8 +72,8 @@ them turns every next over-fire into a committed regression test. A hook is prec Verification record. Claim: as stated. Basis: the `CLAUDE_PROJECT_DIR` prefix check and temp-tree exclusion in `hook::read_file_path` (`lib/hook-utils.sh`, lines 1596-1626), where the git-work-tree test - sits only in the branch for an unset project dir, and rule 6's fail-toward-acting clause. As of: - 2026-09-30. Recheck: a format hook starts rewriting non-project files under a home root. + sits only in the branch for an unset project dir, and rule 6's fail-toward-acting clause. + Recheck: a format hook starts rewriting non-project files under a home root. ## The discipline @@ -107,7 +107,6 @@ on that row would drop every Write silently. - **Basis:** the dated probe in `plugins/context-budget/README.md` (the paragraph starting "The registration carries no `if` filter") and #3680; for permission rules, [permissions § What `Read` and `Edit` rules cover](https://code.claude.com/docs/en/permissions#what-read-and-edit-rules-cover). -- **As of:** 2026-10-29. - **Recheck:** a Claude Code release note saying a hook `if` `Edit(...)` rule matches Write tool calls. Re-probe before adding an `if` gate to the context-budget row. diff --git a/docs/contracts/hook-telemetry/README.md b/docs/contracts/hook-telemetry/README.md index 6b95f0c1b31..f6b1d0a8a03 100644 --- a/docs/contracts/hook-telemetry/README.md +++ b/docs/contracts/hook-telemetry/README.md @@ -67,9 +67,6 @@ single command. - **Pointer**: when checking where Claude Code expands `${VAR}` references in configuration, fetch [MCP § Environment variable expansion in `.mcp.json`](https://code.claude.com/docs/en/mcp#environment-variable-expansion-in-mcp-json) live. -- **As of**: 2026-11-03 -- **Recheck trigger**: the docs start describing `${VAR}` expansion in `settings.json` `env` - values. ## The envelope (common fields) diff --git a/docs/contracts/loop-lane/README.md b/docs/contracts/loop-lane/README.md index e5a19fdafc7..af85283d97a 100644 --- a/docs/contracts/loop-lane/README.md +++ b/docs/contracts/loop-lane/README.md @@ -719,9 +719,7 @@ running but unattended, and lane-down detection stays with the stop gate and tel **A configured hook can also fail silently.** We treat a header variable missing from `allowedEnvVars` as interpolating to an empty string (for the rule, see -[HTTP hook fields](https://code.claude.com/docs/en/hooks#http-hook-fields), as of 2026-07-27; -recheck when that section changes how an unlisted header variable is interpolated), and -a listed variable unset in the operator's environment as doing the same, an applied inference. +[HTTP hook fields](https://code.claude.com/docs/en/hooks#http-hook-fields)), and a listed variable unset in the operator's environment as doing the same, an applied inference. Either way a failed POST is non-blocking, so a misconfigured hook can 401 on every escalation while the lane runs on with nothing surfaced outside debug logs. Verify the leg when wiring it, by writing a throwaway record file with the Write tool and confirming the endpoint @@ -844,9 +842,6 @@ here rather than left as an unstated assumption: [Automatic model fallback](https://code.claude.com/docs/en/model-config#automatic-model-fallback) and [Security research and biology workloads](https://code.claude.com/docs/en/model-config#security-research-and-biology-workloads). -- **As of:** 2026-10-10. -- **Recheck trigger:** a model gains or loses a fallback target, or a new model on Claude Code's - model page runs safety classifiers. - **Usage-credit consent, by launch shape.** We treat only a CI lane (`claude-code-action` or `claude -p`) as able to spend usage credits on Fable unasked. A local lane launches with `claude --bg` (`lane-launcher.sh`), so we treat a usage-credit stop there as a turn that ended @@ -1120,8 +1115,6 @@ found no session-total token field readable at a cycle boundary. The status line *cost* field would attribute to a lane, but the guard's snapshot does not carry it; widening the snapshot is a guard-side change this invariant deliberately does not make. Pointer: for the fields a session exposes, see [Available data](https://code.claude.com/docs/en/statusline#available-data). -As of: 2026-07-28. Recheck trigger: a Claude Code release adds or changes a token or cost field in -the status line input. **Headless-config floor.** A headless lane launch never blocks on an interview and never reads run config back from its own telemetry state block, which the lane can edit. The work-loop lane takes run @@ -1165,8 +1158,7 @@ none of them depends on the sandbox: Pointer: when judging whether a deny rule stops a lane writing a file, fetch [Configure sandboxing](https://code.claude.com/docs/en/sandboxing#configure-sandboxing) and [How permissions interact with sandboxing](https://code.claude.com/docs/en/permissions#how-permissions-interact-with-sandboxing) -live. As of: 2026-10-26. Recheck trigger: either page changes which tools or processes the sandbox or -a deny rule covers, or a lane launch surface starts setting sandbox settings. +live. **Provider backoff (seam exit 8).** A tracker-seam exit 8, meaning the provider is unavailable or secondary forge limits are hit under one credential, is handled as backoff-and-retry and counted as a **dirty** signal for @@ -1203,9 +1195,8 @@ redundant with a lane that has the gate armed. preamble, because a dispatched non-fork subagent runs in a fresh, non-inherited context: it inherits no posture from the cycle root's own sweep and has to set its own. A fork inherits the root's context instead -([subagents: how forks differ from other subagents](https://code.claude.com/docs/en/sub-agents#how-forks-differ-from-other-subagents), -as of 2026-11-01; recheck when that section changes what a fork inherits). When the `discipline` plugin is -installed, the dispatch prompt invokes its sweep skill, which resolves its own membership. The +([subagents: how forks differ from other subagents](https://code.claude.com/docs/en/sub-agents#how-forks-differ-from-other-subagents)). +When the `discipline` plugin is installed, the dispatch prompt invokes its sweep skill, which resolves its own membership. The preamble never enumerates the individual disciplines, per this doc's own **Pointer-not-copy** rule: a hand-copied list drifts from the plugin that owns it. Invoked at the subagent's conversation start, that skill reports its cheap posture digest rather than running its audit fan-out, so the @@ -1229,9 +1220,8 @@ All three adopters have shipped. This owner doc landed ahead of them, per the co rule; the table above is a live consumer list, not a forward reference. **Launch surfaces.** A lane launches interactively via `/loop`, the primary surface and a bundled -skill needing no install (Pointer: [Bundled skills](https://code.claude.com/docs/en/skills#bundled-skills). -As of: 2026-08-02. Recheck trigger: `/loop` leaves the bundled set), or headless via the `harness-ops` `lanes` launcher, which stores the one-line lane -prompt through its `prompt_dir` interface (#480). `lanes` is a **supporting, strictly one-directional** +skill needing no install (Pointer: [Bundled skills](https://code.claude.com/docs/en/skills#bundled-skills)), +or headless via the `harness-ops` `lanes` launcher, which stores the one-line lane prompt through its `prompt_dir` interface (#480). `lanes` is a **supporting, strictly one-directional** launcher: it launches the lane; no lane body ever requires, imports, or degrades without `harness-ops`. Every mention of `lanes` in a lane body is presence-gated with the `/loop` fallback documented at the site, per the [seam-phrasing convention](../seam-phrasing/README.md). @@ -1245,8 +1235,7 @@ reconciles which applies where and changes neither. Pointer: for both shapes, se and [Let Claude choose the interval](https://code.claude.com/docs/en/scheduled-tasks#let-claude-choose-the-interval); for the size of the offset a cron task gets, see -[Jitter](https://code.claude.com/docs/en/scheduled-tasks#jitter). As of: 2026-07-27. Recheck -trigger: a Claude Code release note changes either `/loop` shape or the jitter rule. +[Jitter](https://code.claude.com/docs/en/scheduled-tasks#jitter). - **A lane always omits the interval.** Two §4 invariants need the self-paced shape and neither survives a cron schedule. *Idle backoff*, the standing shape's "idle backs off toward longer @@ -1255,8 +1244,7 @@ trigger: a Claude Code release note changes either `/loop` shape or the jitter r `stop: true`), which is how the drain shape's terminal state stops a lane cleanly; we treat a fixed-interval loop as running until stopped by hand or until the seven-day expiry, so a drain lane launched that way cannot honor its own stop condition (Pointer: - [Stop a loop](https://code.claude.com/docs/en/scheduled-tasks#stop-a-loop). As of: 2026-07-27. - Recheck trigger: that section changes how a fixed-interval or self-paced loop ends). + [Stop a loop](https://code.claude.com/docs/en/scheduled-tasks#stop-a-loop)). The lane shape is therefore self-paced because those two invariants require it. Two of the lane's other per-cycle signals, the adaptive-cap streak and seam exit 8 counted as dirty, govern *how much work a cycle takes @@ -1310,8 +1298,6 @@ hook `ask` in a lane. This subsection holds which mode each lane runs in. flag is UNVERIFIED. - **Pointer:** for the flag, fetch [CLI flags](https://code.claude.com/docs/en/cli-reference#cli-flags) live. -- **As of:** 2026-11-01. -- **Recheck trigger:** that page's `--permission-prompts` row changes. **Launch options.** An unattended Claude Code launch passes this set, drawn from what the lanes launcher builds. Other headless launchers adopt it when next touched. A flag whose effect no probe diff --git a/docs/contracts/loop-lane/posting-lanes.md b/docs/contracts/loop-lane/posting-lanes.md index afc8bda40ef..90321d70f0f 100644 --- a/docs/contracts/loop-lane/posting-lanes.md +++ b/docs/contracts/loop-lane/posting-lanes.md @@ -3,8 +3,7 @@ Record for the loop-lane convention's [confirm-then-record pattern](README.md#confirm-then-record). It lists each lane with an external side effect (a comment, label, issue, check, merge or release) and says what stops two overlapping runs of it from both passing a check-then-act dedupe. Research -only: it changes no lane. As of 2026-10-19, read from `.github/workflows/*.yml` on the default -branch. +only: it changes no lane. It is read from `.github/workflows/*.yml` on the default branch. **Recheck trigger**: a workflow is added, or one gains or loses a `concurrency:` block or a write permission. Re-read the rows for the workflows that changed. diff --git a/docs/contracts/mod-authoring/README.md b/docs/contracts/mod-authoring/README.md index 7883d258f8b..fdc3b3a3b34 100644 --- a/docs/contracts/mod-authoring/README.md +++ b/docs/contracts/mod-authoring/README.md @@ -110,9 +110,6 @@ app is a user-scope change and needs the user's approval. [events: approve or refuse a tool call before the user is asked](https://code.claude.com/docs/en/plugins/mods/events#approve-or-refuse-a-tool-call-before-the-user-is-asked); for `CLAUDE_CODE_PLUGIN_DIRS`, see [reference: settings and environment variables](https://code.claude.com/docs/en/plugins/mods/reference#settings-and-environment-variables). -- **As of**: 2026-10-03, Claude Code 2.1.288. `--bg` sessions and the Desktop app were not probed. -- **Recheck trigger**: the where-mods-run table changes a row, the minimum version changes, or the - settings-hooks section changes where plugin `PreToolUse` hooks run. The switches that stop installed mods differ from those that stop built-in mods. When a mod passes `claude plugin test` and does nothing on a machine with managed settings or a Team or Enterprise @@ -127,9 +124,6 @@ mod. [admin: allow only your organization's mods](https://code.claude.com/docs/en/plugins/mods/admin#allow-only-your-organization%E2%80%99s-mods); for the guard's messages, see [troubleshoot: messages from the built-in guard](https://code.claude.com/docs/en/plugins/mods/troubleshoot#messages-from-the-built-in-guard). -- **As of**: 2026-10-25, Claude Code 2.1.310 -- **Recheck trigger**: a linked section moves, or `claude plugin test` starts reporting the - organization's mod policy. ## Packaging in this repository @@ -159,9 +153,6 @@ first: `$.process` is declared CLI only, and `session.start` does not fire again `session.start`, see [reference: session](https://code.claude.com/docs/en/plugins/mods/reference#session) and [interface: load a saved value again after `/clear`](https://code.claude.com/docs/en/plugins/mods/interface#load-a-saved-value-again-after-clear). -- **As of**: 2026-10-03, Claude Code 2.1.288 (the public types file's first line names 2.1.277) -- **Recheck trigger**: a pin bump whose types change the `process` doc comment, or the Session table - changes its `session.start` row. ## The `tool.call` context rule @@ -201,6 +192,3 @@ plugin troubleshooting page. [events: handle a hook that fails](https://code.claude.com/docs/en/plugins/mods/events#handle-a-hook-that-fails); for plugin load problems, see [troubleshoot plugins](https://code.claude.com/docs/en/plugins/troubleshooting). -- **As of**: 2026-10-25, Claude Code 2.1.310 -- **Recheck trigger**: a linked section moves, or the troubleshoot page stops titling its sections - with the line texts. diff --git a/docs/contracts/native-references/CHANGELOG.md b/docs/contracts/native-references/CHANGELOG.md index 97b0c15aa08..c4f0a58d107 100644 --- a/docs/contracts/native-references/CHANGELOG.md +++ b/docs/contracts/native-references/CHANGELOG.md @@ -6,6 +6,12 @@ major change; additive guidance is minor; clarification is a patch. The doc ship unnumbered, which this file reads as **1.0**; the entry below is the first recorded change and lands the changelog the README said would arrive with it. +## [3.6.1] - 2026-11-11 + +Clarification. The gating-axis and listing-limit pointers no longer carry an as-of date or recheck +trigger, and the absence note on deferral conventions drops its date: none records an upstream +number or string. + ## [3.6.0] - 2026-11-11 Minor: guidance change. No required part of the description phrase, no canonical gate token and no diff --git a/docs/contracts/native-references/README.md b/docs/contracts/native-references/README.md index 15b3420d924..b9468ccd781 100644 --- a/docs/contracts/native-references/README.md +++ b/docs/contracts/native-references/README.md @@ -51,9 +51,6 @@ availability. gating, see [Commands](https://code.claude.com/docs/en/commands); for what a cloud session carries, see [What's available in cloud sessions](https://code.claude.com/docs/en/cloud-environments#what%E2%80%99s-available-in-cloud-sessions). -- **As of**: 2026-10-01 -- **Recheck trigger**: a Claude Code release note or docs change adds, removes, or renames a gating - axis, or a `skillOverrides` state leaves the four-value set. The consequence is the rule: **a component never states that a native surface is present, absent, enabled, or unavailable.** It states what to do *if the surface resolves in the session*, and the @@ -107,9 +104,6 @@ may be cut short, or its whole description dropped from the listing. [`skillListingMaxDescChars`](https://code.claude.com/docs/en/settings-reference#skilllistingmaxdescchars) and [`skillListingBudgetFraction`](https://code.claude.com/docs/en/settings-reference#skilllistingbudgetfraction). -- **As of**: 2026-10-01 -- **Recheck trigger**: a release or docs change moves the per-entry cap default, the budget - default, or the drop-order rule. Two obligations follow. Keep the phrase to one clause, since it spends shared budget every session for every consumer. And where a fleet's listing plausibly overflows, the overlap store records a @@ -348,7 +342,7 @@ change; the doc's README-only original state reads as 1.0. `https://code.claude.com/docs/en/cloud-environments.md`: plan/platform gating and per-host roster differences. -Upstream publishes no convention for deferring to its own surfaces (absence checked 2026-08-23 -against the pages listed above and `https://code.claude.com/docs/llms.txt`), which is why this -repository owns one. Recheck trigger: a Claude Code docs page publishes guidance on how a plugin +Upstream publishes no convention for deferring to its own surfaces (absence checked against the +pages listed above and `https://code.claude.com/docs/llms.txt`), which is why this repository owns +one. Recheck trigger: a Claude Code docs page publishes guidance on how a plugin should refer to native surfaces. diff --git a/docs/contracts/permission-rule-hygiene/README.md b/docs/contracts/permission-rule-hygiene/README.md index 2fa3738f72d..9049afb990e 100644 --- a/docs/contracts/permission-rule-hygiene/README.md +++ b/docs/contracts/permission-rule-hygiene/README.md @@ -35,8 +35,6 @@ particular session starts in is not something the convention tracks. - **Pointer**: when you need to know which mode a given session starts in, fetch [permission modes: which mode a session starts in](https://code.claude.com/docs/en/permission-modes#which-mode-a-session-starts-in) live. -- **As of**: 2026-10-10 -- **Recheck trigger**: that section stops starting interactive sessions in auto mode by default. - **Source conflict**: the first release that starts sessions in auto mode, between the [changelog](https://code.claude.com/docs/en/changelog) (v2.1.284 entry) and that section. Recheck trigger: either is revised on that point. @@ -260,7 +258,7 @@ Two consequences for anyone writing a guarded helper today: empty string ([Where each variable resolves](https://code.claude.com/docs/en/plugins/manifest-reference#where-each-variable-resolves)). - **Do not assume the operator can pre-approve the helper.** `bash` is not one of the [wrappers Claude Code strips](https://code.claude.com/docs/en/permissions#process-wrappers) - before matching (as of 2026-10-07; recheck when that section's wrapper list changes), so a rule for a `bash …` command has to name `bash`, making it + before matching, so a rule for a `bash …` command has to name `bash`, making it interpreter-led, i.e. anti-pattern 1. The documented drop categories clearly reach the wildcarded-target form (`Bash(bash *)`); whether they reach a fixed-path form (`Bash(bash :*)`) is not stated, so that shape is an anti-pattern on convention grounds diff --git a/docs/conventions/gather-block/README.md b/docs/conventions/gather-block/README.md index da48790a5eb..2161de7ae96 100644 --- a/docs/conventions/gather-block/README.md +++ b/docs/conventions/gather-block/README.md @@ -27,8 +27,7 @@ calls, one command per call, where each is screened on its own. command-shape check. [Errors: command blocked by the worktree isolation checks](https://code.claude.com/docs/en/errors#command-blocked-by-the-worktree-isolation-checks) lists the refusal reasons, including which expansions are refused in a command that never names - git. **Pointer:** both sections. **As of:** 2026-10-17. **Recheck trigger:** a re-fetch of - either section that drops the command-shape check or changes the expansions it names. + git. **Pointer:** both sections. - [`scripts/check-skill-precompute-compose.sh`](../../../scripts/check-skill-precompute-compose.sh) in this repository is the gate that encodes the observed behavior. It refuses a skill whose pre-compute block holds a git command together with more than one injection line, which is the diff --git a/docs/finding-your-unknowns.md b/docs/finding-your-unknowns.md index f987536e02e..a40684b2928 100644 --- a/docs/finding-your-unknowns.md +++ b/docs/finding-your-unknowns.md @@ -224,8 +224,7 @@ Two more from Addy Osmani's "Critical thinking when agents do the work" (`https://x.com/addyosmani/status/2117512471930167377`, published 2026-11-03), both BEHAVIORAL under ADR 0025; the dispositions are in [the upstream record](upstream/x-com-addyosmani-status-2117512471930167377.md). The page -returned HTTP 402 to an unattended fetch on 2026-11-03, so no snapshot or hash is recorded. -Recheck trigger: a raw retrieval, which records its date and hash here. +returned HTTP 402 to an unattended fetch, so no snapshot or hash is recorded. - **Prediction-first** (delegation, BEHAVIORAL): before handing a non-trivial task to an agent, write the answer you expect, then compare it with what comes back. Evidence: the @@ -246,14 +245,14 @@ participant chose to consult the AI, about half of the faulty ones. The authors setting, a single task and a single exposure as limits, and suggest feedback, aligned incentives and uncertainty cues as remedies; neither practice above is tested, and Study 3 gave feedback only together with per-question rewards. No journal publication or independent replication was -found as of 2026-11-09. Recheck trigger: a journal version or a replication appears. +found. ## Sources and citation shape Citations in this doc use: URL, ISO retrieval date, and `sha256:` over the raw snapshot bytes captured at retrieval. Content drift produces a new citation, never an in-place hash edit. Recheck trigger: a re-retrieval whose hash differs from the recorded one. -No Claude docs page covers this methodology as of 2026-10-01, so the author's posts stay the +No Claude docs page covers this methodology, so the author's posts stay the sources, each read at its link. - **S1**: "A field guide to Claude Fable 5: Finding your unknowns", Thariq Shihipar, @@ -270,8 +269,7 @@ sources, each read at its link. copy: "Using Claude Code: The unreasonable effectiveness of HTML", Thariq Shihipar, Anthropic blog, published 2026-05-20 (correlate with `https://claude.dev/blog/using-claude-code-the-unreasonable-effectiveness-of-html/`) - (read 2026-10-30 through a summarizing fetch, so no hash is recorded). Recheck trigger: a raw - retrieval, which records its date and hash here. + (read through a summarizing fetch, so no hash is recorded). - **S3**: HTML-effectiveness examples index (20 demos, 9 categories, plus the 11-demo "Know your unknowns" sub-collection). `https://thariqs.github.io/html-effectiveness` (retrieved 2026-08-31, diff --git a/docs/migration-playbook.md b/docs/migration-playbook.md index e2b3fb15f38..085d82d3d9f 100644 --- a/docs/migration-playbook.md +++ b/docs/migration-playbook.md @@ -688,11 +688,9 @@ Catalog these per migration; they are the usual failures when an in-repo skill b the path [resolves against the repository's main checkout](https://code.claude.com/docs/en/plugins/org#require-plugins-per-repository), so every git worktree shares it, with no separate `marketplace add` step. The marketplace registers only in a folder the collaborator trusted: after the trust dialog in an interactive - session and, in a `-p` run, only in a folder already trusted (as of 2026-10-30; recheck when - that section changes where the path resolves or the trust rule). A cloud session + session and, in a `-p` run, only in a folder already trusted. A cloud session [doesn't load the plugins the repository's settings turn on](https://code.claude.com/docs/en/plugins/install#install-a-plugin) - (Cloud session tab, as of 2026-10-30; recheck when that tab says repository-enabled plugins - load). + (Cloud session tab). See [`docs/cloud-sessions.md`](cloud-sessions.md) "Plugins in sessions on this repo". ## Per-plugin migration gate diff --git a/docs/out-of-scope/agent-run-artifact-attestation.md b/docs/out-of-scope/agent-run-artifact-attestation.md index e9e1f04e148..181c3e7abbb 100644 --- a/docs/out-of-scope/agent-run-artifact-attestation.md +++ b/docs/out-of-scope/agent-run-artifact-attestation.md @@ -22,7 +22,6 @@ names no AI-agent-run predicate; `predicate`, so a prompt or instruction digest is expressible only as a custom predicate with no vetted type. `plugins/autonomy/reference/return-accounting.md` "Agent-run artifact attestation is out of scope". -**As of:** 2026-09-29. **Recheck:** a maintainer names a predicate URI they will own, or GitHub/in-toto publishes an agent-run predicate this marketplace is asked to emit. diff --git a/docs/plugin-philosophy.md b/docs/plugin-philosophy.md index a49d36d57dd..9b8ed689a18 100644 --- a/docs/plugin-philosophy.md +++ b/docs/plugin-philosophy.md @@ -249,9 +249,9 @@ take that alias deliberately, and only with the value the directory already carr - **Pointer**: for the `name` field, see ; for the bare alias, see . -- **As of**: 2026-08-10 -- **Recheck trigger**: `name` stops being optional, or a declared `name` stops adding a bare alias. A `name` that *differs* from its directory is out of bounds here even though the harness -honors it: it would relocate the last command segment away from the directory that + +A `name` that *differs* from its directory is out of bounds here even though the harness honors +it: it would relocate the last command segment away from the directory that `scripts/check-skill-leaf-names.sh` derives every leaf from, desynchronizing the cross-plugin collision registry from the commands that actually resolve. That is why `skill-quality`'s check 1 fails a divergent `name` and only warns on a redundant one. @@ -265,9 +265,6 @@ is fine. - **Pointer**: for why a plugin skill never collides, see . -- **As of**: 2026-11-08 -- **Recheck trigger**: that table's plugin-skill row stops resolving a shared name by the plugin - namespace. Resolution settled, **display** follows from it. We rely on a plugin skill keeping its plugin prefix in autocomplete whether or not it declares `name`. A version-dependent display quirk for a @@ -458,10 +455,9 @@ Choose one authoritative owner for each value: `userConfig` is not repository configuration. Claude Code reads its stored `pluginConfigs` values only from user settings, `--settings`, and managed settings ([`--settings`](https://code.claude.com/docs/en/settings#change-a-setting-for-one-session), -[`pluginConfigs`](https://code.claude.com/docs/en/settings-reference#pluginconfigs), as of -2026-10-07; recheck when the settings guide stops letting `--settings` set user-scope keys, or the -`pluginConfigs` scope changes). It ignores project and local settings for this key. Claude Code owns the configuration prompt and storage; plugin skills must not hand-edit -`pluginConfigs` or invent a marketplace-qualified plugin ID. +[`pluginConfigs`](https://code.claude.com/docs/en/settings-reference#pluginconfigs)). It ignores +project and local settings for this key. Claude Code owns the configuration prompt and storage; +plugin skills must not hand-edit `pluginConfigs` or invent a marketplace-qualified plugin ID. Non-sensitive values sit readable in the user `settings.json` under `pluginConfigs[].options`, so no secret goes there; a `sensitive` value goes to the platform's secure credential store instead @@ -477,9 +473,6 @@ hooks use no `${user_config.*}` token in any form (the Hooks row under [Reference a saved value](https://code.claude.com/docs/en/plugins/manifest-reference#reference-a-saved-value), and [Fields that run through a shell](https://code.claude.com/docs/en/plugins/manifest-reference#fields-that-run-through-a-shell). -- **As of**: 2026-11-08 -- **Recheck trigger**: a Claude Code release note or a fetch of those sections changes where values - are stored or which fields substitute or reject `${user_config.*}`. Use `userConfig` to its full native extent. Every personal or administrator scalar that flows through a custom channel, whether an environment-variable toggle, a gitignored personal file, or a @@ -1010,9 +1003,6 @@ worktree. Outside a git repository the file stays in the folder you ran from. [`--scope` names the settings file written](https://code.claude.com/docs/en/plugins/cli-reference#claude-plugin-commands). Observed for `plugin install --scope local` on Claude Code 2.1.289, WSL2, during the install-and-test run in melodic-software/claude-code-plugins#6318, reported in #6375. -- **As of:** 2026-10-04. -- **Recheck trigger:** that settings section stops placing a worktree's local file at the main - checkout, or a release note changes where `--scope local` writes. ## Instruction economy @@ -1026,8 +1016,7 @@ the model already follows unaided. Pointer: for pruning standing instructions, s and . Anthropic reports applying the same doctrine to Claude Code's own system prompt for the Claude 5 generation; no docs page -covers that as of 2026-08-08 -(correlate with ). +covers that (correlate with ). Context load is not the only budget. The human maintainer's cognitive load is its sibling constraint, and the write-time doctrine budgeting both lives in `docs-hygiene:write-for-agents`. Four rules follow: @@ -1116,9 +1105,6 @@ invoker cannot be relied on to remember it. , , and . -- **As of**: 2026-10-30 -- **Recheck trigger**: a fork stops inheriting the parent conversation, or those sections stop - recommending a fresh-context reviewer. The rule: **a skill step whose output judges work produced in the same context delegates that judgment to a fresh-context (non-fork) subagent**, generic or named; what the rule requires is the fresh @@ -1170,9 +1156,6 @@ this rule instead of restating it. choice a consumer can make, not a default this marketplace imposes; upstream describes it as one option among several multi-session patterns. - **Pointer**: . - - **As of**: 2026-10-30. - - **Recheck trigger**: that section drops the separate test-writer option or recommends it as - the default. 3. **Mechanical phases keep their carve-out.** In `/implementation:implement-dispatch`, a mechanical, behavior-preserving phase is verified by the orchestrator from the diff and the build and test signal by default. Those phases still get a non-author verdict: the PR's verify stage, the @@ -1201,9 +1184,8 @@ judgment and its target, never re-derives these rules. The default worker is a **generic fresh-context subagent carrying rich inline instructions**: the task, the artifact, the criteria, and the output shape all travel in the dispatch prompt. A non-fork subagent starts without the parent conversation (Pointer: -. As of: -2026-08-10. Recheck trigger: a non-fork subagent starts receiving the parent conversation), which -is exactly the independence the checkpoint buys. A skill may prefer an installed **named agent** on the next rung, +), which is +exactly the independence the checkpoint buys. A skill may prefer an installed **named agent** on the next rung, but only when the named-agent bar below is met, and the site always states the generic fallback (presence-gate-plus-fallback, [seam phrasing](contracts/seam-phrasing/README.md)). The top rung, for high-stakes verdicts where correlated model blind spots are the risk, is a **cross-vendor advisor** @@ -1332,9 +1314,6 @@ an override. - **Pointer:** for the resolution order and the values frontmatter `model` accepts, see [subagents: choose a model](https://code.claude.com/docs/en/sub-agents#choose-a-model); for the `env` key, see [settings reference: `env`](https://code.claude.com/docs/en/settings-reference#env). -- **As of:** 2026-10-01. -- **Recheck trigger:** a release note touches subagent model selection, or the variable stops - ranking below frontmatter. **Decline `CLAUDE_CODE_SUBAGENT_MODEL_FORCE`.** We do not set it, and a consumer who sets it gives up the tier ladder above, because it puts one model on every subagent regardless of its pin or a @@ -1343,18 +1322,13 @@ per-spawn `model`. - **Pointer:** for the force switch, see [subagents: run every subagent on one model](https://code.claude.com/docs/en/sub-agents#run-every-subagent-on-one-model) and its row on [environment variables](https://code.claude.com/docs/en/env-vars#variables). -- **As of:** 2026-10-01. -- **Recheck trigger:** the switch stops overriding definition and per-spawn `model` values, or the - subagents page stops describing it. Plugin `userConfig` is no per-plugin model surface. We read its options as typed options with no model semantics, so doctrine travels by authoring-time conformance in each skill, not runtime configuration. A mod's `agent.spawn` hook can replace a subagent's model at spawn time; no plugin in this repository ships one for routing (Pointer: [plugin manifest reference: user configuration](https://code.claude.com/docs/en/plugins/manifest-reference#user-configuration) -and [subagents: choose a model](https://code.claude.com/docs/en/sub-agents#choose-a-model). -As of: 2026-11-01. Recheck trigger: a `userConfig` option can select the model a plugin's subagent -runs on, or that section adds or drops a spawn-time model override). +and [subagents: choose a model](https://code.claude.com/docs/en/sub-agents#choose-a-model)). The tier table names Claude Code aliases, never model versions, so a release that moves an alias needs no edit here. Which model each alias resolves to is read live from the model page, and it @@ -1451,9 +1425,6 @@ mechanism that is not a frontmatter pin. - **Pointer:** for how a blocked override is handled on each surface, see [model config: restrict model selection](https://code.claude.com/docs/en/model-config#restrict-model-selection) and [subagents: choose a model](https://code.claude.com/docs/en/sub-agents#choose-a-model). -- **As of:** 2026-11-04. -- **Recheck trigger:** either page's blocked-override behavior for a subagent, skill, or command - changes. ### Effort tiers @@ -1469,17 +1440,13 @@ upstream-owned: resolve it from the model page at decision time, never from this [model config: set the effort level](https://code.claude.com/docs/en/model-config#set-the-effort-level); for the field itself, see [skills: frontmatter reference](https://code.claude.com/docs/en/skills#frontmatter-reference). -- **As of:** 2026-11-09. -- **Recheck trigger:** any new model on Claude Code's model page, or the effort section changes how - a frontmatter pin ranks. We treat a lane pin as a posture, never a switch. Thinking is adaptive, so a lane pinned `low` still thinks where the model judges it worth the cost, and a turn with no thinking is not a pin misfiring. Authoring conformance follows: pin the lane, then let allocation vary per request instead of writing prose that tries to force it uniform (Pointer: for how the model decides when to think, see -[steering thinking: how Claude decides when to think](https://platform.claude.com/docs/en/build-with-claude/thinking-steering-and-cost#how-claude-decides-when-to-think). -As of: 2026-08-03. Recheck trigger: that page stops describing thinking as decided per request). +[steering thinking: how Claude decides when to think](https://platform.claude.com/docs/en/build-with-claude/thinking-steering-and-cost#how-claude-decides-when-to-think)). Lane rules (recheck trigger: any new model on Claude Code's model page, or a model change on any pinned lane, because each model maps level names to its own depth, so one name does not mean the @@ -1494,9 +1461,8 @@ same depth on two models): Agent-tool dispatch carries a level only when its call passes one, which a call site can forget, and the docs scope the parameter to non-fork spawns, so we treat a fork as running at the session level with the session baseline as its floor (Pointer: when a dispatch needs its own level, fetch - [subagents: choose an effort level](https://code.claude.com/docs/en/sub-agents#choose-an-effort-level) live. - As of: 2026-10-10. Recheck trigger: that section changes what the per-call `effort` overrides or - which spawns honor it), and promoting such a lane to a named agent is how it gains the pin (a + [subagents: choose an effort level](https://code.claude.com/docs/en/sub-agents#choose-an-effort-level) + live), and promoting such a lane to a named agent is how it gains the pin (a required effort pin satisfies the named-agent bar's pin clause). The named agents that pin `medium` instead, and why, are listed under [pinned agents](#effort-tiers). An orchestrator skill whose consequential work executes in generic dispatches reaches them through its own pin: a @@ -1529,8 +1495,7 @@ same depth on two models): (correlate only), and model config's choose-an-effort-level section, joined by the newer effort post, (correlate only), disagree on whether effort is - a general preference or a per-task choice. As of: 2026-10-01. Recheck trigger: either post or - that section is revised on that point. + a general preference or a per-task choice. - **No lane pins `max` without eval evidence.** We treat it as the costliest level, whose gain a lane must measure before using it. A pin above `high` (e.g. `xhigh`) is a deliberate per-lane choice grounded in the target model's own recommended levels, never a reflex. We watch for @@ -1539,9 +1504,7 @@ same depth on two models): information (Pointer: for each level's trade-off, see [effort: effort levels](https://platform.claude.com/docs/en/build-with-claude/effort#effort-levels); for miscalibration, see - [cut spend without losing quality](https://platform.claude.com/docs/en/about-claude/models/optimizing-for-cost-and-intelligence#cut-spend-without-losing-quality). - As of: 2026-09-09. Recheck trigger: either section changes what it says a level above `high` - buys). + [cut spend without losing quality](https://platform.claude.com/docs/en/about-claude/models/optimizing-for-cost-and-intelligence#cut-spend-without-losing-quality)). - **Sweep model and effort together before raising either.** A lane outgrowing its level tests the newer model at lower effort before pinning the old one higher, on its own evals. Cross-model economics and the flat-curve reading live in the fable-5 pack's prompt-caching reference @@ -1606,8 +1569,7 @@ executor stops detecting that it is stuck (the upstream pointers are under the level, which the [effort floor](#effort-floor) rules out for a code-changing lane. We pin the implementer `medium` and its verifier `high`, the rows we read model config as giving each. Model config is the source we follow, because a docs section outranks a blog post under the - [upstream-drift convention](contracts/upstream-drift/README.md#required-parts). As of: - 2026-11-09. Recheck trigger: next model release, or either page is revised on that point. + [upstream-drift convention](contracts/upstream-drift/README.md#required-parts). **Per-pin rows.** Each pinned agent outside `plugins/implementation` follows one row of model config's effort-level table, read for the model its `model` alias resolves to. Review, verification @@ -1691,11 +1653,8 @@ Agent-tool spawn of an unpinned agent where the skill has resolved one. [subagents: supported frontmatter fields](https://code.claude.com/docs/en/sub-agents#supported-frontmatter-fields); when an Agent-tool call needs its own level, fetch [subagents: choose an effort level](https://code.claude.com/docs/en/sub-agents#choose-an-effort-level) live. - No docs page covers per-call effort for a Workflow `agent()` call as of 2026-10-10; our Workflow - probe above is the record. -- **As of:** 2026-10-10. -- **Recheck trigger:** a docs page starts covering it, or any section above changes how the flag, - the field, or the per-call `effort` ranks, or which spawns honor the per-call `effort`. + No docs page covers per-call effort for a Workflow `agent()` call; our Workflow probe above is + the record. **A skill's pin holds for the current turn and a forked subagent.** We treat a skill's frontmatter `effort` pin as applying to the rest of the current turn and, with `context: fork`, to the forked @@ -1725,9 +1684,6 @@ reach an agent's `effort` field. We record this as a gap against [plugins reference: user configuration](https://code.claude.com/docs/en/plugins/manifest-reference#user-configuration); for the agent field, see [subagents: supported frontmatter fields](https://code.claude.com/docs/en/sub-agents#supported-frontmatter-fields). -- **As of:** 2026-10-01. -- **Recheck trigger:** Claude Code adds a per-agent effort setting, or a docs page or a probe shows - a `userConfig` value reaching a subagent's `effort`. **Thinking mode and effort level are separate settings.** We keep the `thinking` mode and the `effort` level apart: `adaptive` is a thinking mode, never an `effort` value, and a frontmatter @@ -1744,9 +1700,6 @@ request. for the frontmatter fields, see [subagent frontmatter](https://code.claude.com/docs/en/sub-agents#supported-frontmatter-fields) and [skill frontmatter](https://code.claude.com/docs/en/skills#frontmatter-reference). -- **As of:** 2026-08-03. -- **Recheck trigger:** the accepted `effort` value set changes on the model-config or effort page, - or either frontmatter field list gains a token cap. Checking the value set mechanically stays deferred, because a lint rule's source of truth is the harness's own accepted-value list, which this section deliberately does not restate. @@ -1765,9 +1718,6 @@ while that skill or agent is active and never changes the user's session or save [skills: frontmatter reference](https://code.claude.com/docs/en/skills#frontmatter-reference); for the agent field, see [subagents: supported frontmatter fields](https://code.claude.com/docs/en/sub-agents#supported-frontmatter-fields). -- **As of:** 2026-10-02. -- **Recheck trigger:** either field starts persisting a level past the active skill or agent, or - stops overriding the session level. ### Effort floor @@ -1819,9 +1769,6 @@ A Workflow script this repository ships follows these rules; [workflows: behavior and limits](https://code.claude.com/docs/en/workflows#behavior-and-limits); for how a script's model ranks, see [workflows: cost](https://code.claude.com/docs/en/workflows#cost). -- **As of:** 2026-10-02. -- **Recheck trigger:** the usage-limit pause covers headless or background runs, or the workflows - page changes how a script-named model ranks. ### Declared patterns @@ -1839,10 +1786,8 @@ cannot assume a plugin layout. `https://code.claude.com/docs/llms.txt` is the authoritative self-updating list of official pages, and [`docs/official-docs.md`](official-docs.md) holds this repository's rules for citing -them. Each list below names the pages this document rests on -and the topics we read each one for. Recheck trigger for both lists: a page moves, or stops -covering a topic named beside it. The first list is as of 2026-08-10 (the -`melodic-software/standards` entries are not Claude Code pages and carry no date): +them. Each list below names the pages this document rests on and the topics we read each one +for: - [Create plugins](https://code.claude.com/docs/en/plugins/create): plugin structure incl. `bin/` and plugin `settings.json`, namespaces, testing, and migration. @@ -1863,8 +1808,6 @@ covering a topic named beside it. The first list is as of 2026-08-10 (the - `melodic-software/standards` engineering philosophy and cross-platform review criteria: repository design and verification policy. -As of 2026-07-17: - - [Plugin dependencies](https://code.claude.com/docs/en/plugins/dependencies): the `dependencies` array, automatic installation, and version constraints. - [Skills](https://code.claude.com/docs/en/skills): command-name derivation and the plugin skill diff --git a/docs/upstream/ayushsoni-design-slop-indicators.md b/docs/upstream/ayushsoni-design-slop-indicators.md index 67ff34e6aea..e82c2c17b7d 100644 --- a/docs/upstream/ayushsoni-design-slop-indicators.md +++ b/docs/upstream/ayushsoni-design-slop-indicators.md @@ -4,9 +4,8 @@ An X post by Ayush Soni listing ten visual tells of generated design: correlate `https://x.com/ayushsoni_io/status/2115322579187867898`, 2026-10-28. One person's opinion with no stated evidence, so each row is judged here on its own. -- **As of**: 2026-11-02 -- **Recheck trigger**: none; the post is a fixed list, and new tells enter through - `plugins/user-interface/reference/types/web/generic-defaults.md` on their own evidence. +The post is a fixed list; new tells enter through +`plugins/user-interface/reference/types/web/generic-defaults.md` on their own evidence. All taken rows land in `generic-defaults.md` at Suggestion severity, on marketing and brand surfaces only, and judge whether anyone chose the element rather than ban it. diff --git a/docs/upstream/claude-code-mods/experiments.md b/docs/upstream/claude-code-mods/experiments.md index b83d2d7cb5d..eb5c4458763 100644 --- a/docs/upstream/claude-code-mods/experiments.md +++ b/docs/upstream/claude-code-mods/experiments.md @@ -536,9 +536,8 @@ Steps and output, `$MOD` being the spike folder's absolute path: Not covered: `--bg` sessions; Claude Desktop, which needs a native Windows session and `CLAUDE_CODE_PLUGIN_DIRS`, a user-scope change; and `/clear`, after which the state value resets and the band stays empty until the next `session.measure`, per -[troubleshoot: an edit or a value is lost](https://code.claude.com/docs/en/plugins/mods/troubleshoot#an-edit-or-a-value-is-lost) -(as of 2026-10-02; recheck when the pilot handles `/clear`). The module was not type-checked: no -`tsc` was on `PATH`. +[troubleshoot: an edit or a value is lost](https://code.claude.com/docs/en/plugins/mods/troubleshoot#an-edit-or-a-value-is-lost). +The module was not type-checked: no `tsc` was on `PATH`. ## E8: #92533 three-arm probe, 2026-10-02 diff --git a/docs/upstream/claude-code.md b/docs/upstream/claude-code.md index 65bcee72a53..c694d8dae6b 100644 --- a/docs/upstream/claude-code.md +++ b/docs/upstream/claude-code.md @@ -153,8 +153,8 @@ The store verdict is human-written. No row was written to `docs/native-surfaces/ | Capability | Items | Reason | Record | |---|---|---|---| -| `CLAUDE_CODE_SUBAGENT_MODEL_FORCE` in lanes | 257-004 | Lanes keep every agent definition's own `model:` pin. The reopen condition was met on 2026-09-29, when the env-vars and sub-agents pages began documenting FORCE and its `inherit` interaction. The owner kept it declined on 2026-10-01 ([opus-5-5-task-cost.md](opus-5-5-task-cost.md)). When checking what FORCE overrides and what the single-model variable leaves alone, fetch [sub-agents: Run every subagent on one model](https://code.claude.com/docs/en/sub-agents#run-every-subagent-on-one-model) live (as of 2026-11-03; recheck trigger: that section changes what FORCE overrides or which subagents the single-model variable moves) | [#5156](https://github.com/melodic-software/claude-code-plugins/pull/5156) | -| `/advisor` text form as a headless lane default | 260-004 | Declined while no doc page stated it. The reopen condition is met: the advisor page now documents `/advisor ` in non-interactive `-p` mode ([advisor: Use the `/advisor` command](https://code.claude.com/docs/en/advisor#use-the-/advisor-command), as of 2026-10-11; recheck when that section stops listing `-p`). The owner has not re-decided | [#5156](https://github.com/melodic-software/claude-code-plugins/pull/5156) | +| `CLAUDE_CODE_SUBAGENT_MODEL_FORCE` in lanes | 257-004 | Lanes keep every agent definition's own `model:` pin. The reopen condition was met on 2026-09-29, when the env-vars and sub-agents pages began documenting FORCE and its `inherit` interaction. The owner kept it declined on 2026-10-01 ([opus-5-5-task-cost.md](opus-5-5-task-cost.md)). When checking what FORCE overrides and what the single-model variable leaves alone, fetch [sub-agents: Run every subagent on one model](https://code.claude.com/docs/en/sub-agents#run-every-subagent-on-one-model) live | [#5156](https://github.com/melodic-software/claude-code-plugins/pull/5156) | +| `/advisor` text form as a headless lane default | 260-004 | Declined while no doc page stated it. The reopen condition is met: the advisor page now documents `/advisor ` in non-interactive `-p` mode ([advisor: Use the `/advisor` command](https://code.claude.com/docs/en/advisor#use-the-/advisor-command)). The owner has not re-decided | [#5156](https://github.com/melodic-software/claude-code-plugins/pull/5156) | | `claude --resume --bg` for `lanes restart` | 257-087 | Absent from cli-reference. Reopen when cli-reference documents it, or a probe settles prompt and name handling | [#5156](https://github.com/melodic-software/claude-code-plugins/pull/5156) | | `omitClaudeMd` on testing `green-runner` | 271-006 | The agent holds an ungated Bash shell, and the field also drops the user CLAUDE.md where operators keep shell safety rules; the context saving does not outweigh that. Reopen if the workflow gates its Bash the way the docs-fetchers are gated | this file | | OSC 7501 or `$.ui.notify` in place of desktop-notification | 295-003, 295-013 | Neither is a routable native replacement for a permission or idle alert today; the plugin stays. Reopen when the mods reference lists `$.ui.notify` or terminal-config names a Windows notification path | [#6228](https://github.com/melodic-software/claude-code-plugins/issues/6228) | diff --git a/docs/upstream/claude-com-fold-subagents.md b/docs/upstream/claude-com-fold-subagents.md index f4f51c8e79b..00212e9386d 100644 --- a/docs/upstream/claude-com-fold-subagents.md +++ b/docs/upstream/claude-com-fold-subagents.md @@ -37,28 +37,22 @@ Dropped or held: - Correlate with `https://claude.com/resources/articles/building-agents-when-to-fold-subagents-into-your-main-agent-loop` (published 2026-10-22, digested and dual-verified 2026-10-24 after three correction rounds). It - is never the pointer where a docs section covers the topic. Recheck trigger: the article is - revised, or a later claude.com or claude.dev post on folding subagents supersedes it. + is never the pointer where a docs section covers the topic. - Pointers: the Claude Code and Claude Platform docs sections named per row, read 2026-10-24. -- Where no docs page covers a topic, the row says so and links the post as the correlate note, and - its recheck trigger includes a docs page starting to cover it. +- Where no docs page covers a topic, the row says so and links the post as the correlate note. ## Row schema **Topic** names the item with an ID other files cite; **Ours** is what this repository does or decided and where; **Verdict** is our reading of the article's claim (`documented`, `vendor-claimed`, `contradicted`, `watch`, `not ours`); **Pointer** is the docs section a reader -checks live, followed by any correlate note. Shared for every row: - -- **As of**: 2026-10-24 -- **Recheck trigger**: the pointed-to section is renamed or removed or stops covering its topic; - for a row whose topic no docs page covers, a docs page starting to cover it. +checks live, followed by any correlate note. ## Decisions | Topic | Ours | Verdict | Pointer | |---|---|---|---| -| F1 single-agent-loop-kit | Not referenced anywhere here and no native-surfaces row: it is a Claude Platform migration kit, not a Claude Code surface. Revisit if Claude Code ships or documents it. | not ours | When a task migrates a Platform agent, read [anthropics/single-agent-loop-kit](https://github.com/anthropics/single-agent-loop-kit) live; no docs page covers the kit as of 2026-10-24 | +| F1 single-agent-loop-kit | Not referenced anywhere here and no native-surfaces row: it is a Claude Platform migration kit, not a Claude Code surface. Revisit if Claude Code ships or documents it. | not ours | When a task migrates a Platform agent, read [anthropics/single-agent-loop-kit](https://github.com/anthropics/single-agent-loop-kit) live; no docs page covers the kit | | F2 skill-creator as a trimming tool | `/skill-quality:check` and `/playbooks:skill-authoring` keep their own scope; we do not treat skill-creator as a tool that trims or deduplicates skills. | vendor-claimed, contradicted | When deciding what skill-creator does, fetch [Run evals with skill-creator](https://code.claude.com/docs/en/skills#run-evals-with-skill-creator) live | | F3 `/skill-doctor` as a deletion tool | We read `/skill-doctor` as a report a person acts on, not a tool that removes skills; [native-surfaces.md](../native-surfaces.md) already carries its row. | vendor-claimed, contradicted | When deciding what `/skill-doctor` covers, fetch [Find unused skills](https://code.claude.com/docs/en/skills#find-unused-skills) live | | F4 Task budget as a loop stop | Our turn-limit and stop guidance is unchanged; a task budget is not treated as a stop condition, and not as a Claude Code feature. | vendor-claimed, contradicted | When a loop design leans on task budgets, fetch [Task budgets are advisory, not enforced](https://platform.claude.com/docs/en/build-with-claude/task-budgets#task-budgets-are-advisory-not-enforced) and [Feature support](https://platform.claude.com/docs/en/build-with-claude/task-budgets#feature-support) live | diff --git a/docs/upstream/claude-dev-building-effective-agent-automations.md b/docs/upstream/claude-dev-building-effective-agent-automations.md index 01cb6b5f24c..8c8253a7d1e 100644 --- a/docs/upstream/claude-dev-building-effective-agent-automations.md +++ b/docs/upstream/claude-dev-building-effective-agent-automations.md @@ -41,11 +41,8 @@ decided, and where; **Pointer** is the docs section to fetch live when re-derivi issue that carries the work, or a note that no docs page covers the topic, with the post as a correlate. `none` marks an in-repo decision with no upstream section. Shared for every row: -- **As of**: 2026-10-16 -- **Recheck trigger**: a re-read of the post finds a row no longer matching it; a pointed-to - section is renamed or removed, or a docs page starts covering a topic whose pointer is the post - (move the pointer there); or a cited issue closes, then replace its row's pointer with the - shipped mechanism. +- **Recheck trigger**: a cited issue closes; then replace its row's pointer with the shipped + mechanism. ## Decisions diff --git a/docs/upstream/claude-dev-how-we-made-claude-ai-faster.md b/docs/upstream/claude-dev-how-we-made-claude-ai-faster.md index 2d63de87610..5f46e538021 100644 --- a/docs/upstream/claude-dev-how-we-made-claude-ai-faster.md +++ b/docs/upstream/claude-dev-how-we-made-claude-ai-faster.md @@ -39,12 +39,7 @@ plugin. Each row below names the file a decision landed in. **Topic** names the item with an ID other files cite; **Ours** is what this repository now does and where, or why it changed nothing; **Pointer** is the section to fetch live when re-deriving the row. A post section appears only where no docs page covers the topic, as a correlate; `none` -marks an in-repo decision with no upstream section. Shared for every row: - -- **As of**: 2026-10-02 -- **Recheck trigger**: the pointed-to section is renamed or removed, or stops covering its topic; - a docs page starts covering a topic whose pointer is the post (move the pointer there); or a - later claude.dev post on claude.ai performance. +marks an in-repo decision with no upstream section. ## Decisions @@ -91,9 +86,6 @@ marks an in-repo decision with no upstream section. Shared for every row: Prompting Claude Opus 5's [Task scope and over-verification](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-opus-5#task-scope-and-over-verification) section disagree on Claude's default task scope. The guide wins: rows F22 and F28 follow it. - - **As of**: 2026-10-02 - - **Recheck trigger**: either section changes its scope statement, or the Opus 5.5 prompting - guide starts covering task scope. The delta pass found no other conflict between the post and an official page. diff --git a/docs/upstream/claude-dev-sonnet-5-5-blog.md b/docs/upstream/claude-dev-sonnet-5-5-blog.md index 5249888dc3a..c4635cda74f 100644 --- a/docs/upstream/claude-dev-sonnet-5-5-blog.md +++ b/docs/upstream/claude-dev-sonnet-5-5-blog.md @@ -36,9 +36,7 @@ slice missed. **Topic** names the item with an ID other files cite; **Ours** is what this repository now does and where; **Pointer** is the docs section a reader checks live. Shared for every row: -- **As of**: 2026-10-01 -- **Recheck trigger**: the pointed-to section is renamed or removed, stops covering its topic, or - the next Sonnet release. +- **Recheck trigger**: the next Sonnet release. ## Decisions diff --git a/docs/upstream/claude-dev-spending-your-effort-blog.md b/docs/upstream/claude-dev-spending-your-effort-blog.md index 4650e5f4aee..fd88dcb8826 100644 --- a/docs/upstream/claude-dev-spending-your-effort-blog.md +++ b/docs/upstream/claude-dev-spending-your-effort-blog.md @@ -45,7 +45,6 @@ Dropped or held, each needing the user's go-ahead before it runs: - Correlate with `https://claude.dev/blog/spending-your-effort` (published 2026-09-25, digested and dual-verified 2026-09-29). It is never the pointer where a docs section covers the topic. - Recheck trigger: the post is revised, or a later claude.dev post on effort supersedes it. - Pointer for effort levels in Claude Code: [Model configuration](https://code.claude.com/docs/en/model-config), sections named per row, read 2026-10-02. - Pointers for hook input fields, prompt caching, skill substitutions and telemetry: the Claude @@ -57,12 +56,7 @@ Dropped or held, each needing the user's go-ahead before it runs: **Topic** names the item with an ID other files cite; **Ours** is what this repository now does and where; **Pointer** is the docs section a reader checks live, followed by the post section as -correlate note. Shared for every row: - -- **As of**: 2026-10-02 -- **Recheck trigger**: the pointed-to section is renamed or removed, stops covering its topic, or - its effort table's rows or columns change; for a row whose topic no docs page covers, a docs page - starting to cover it. +correlate note. ## Decisions diff --git a/docs/upstream/claudedevs-cost-performance.md b/docs/upstream/claudedevs-cost-performance.md index dfee18ef798..52350628c28 100644 --- a/docs/upstream/claudedevs-cost-performance.md +++ b/docs/upstream/claudedevs-cost-performance.md @@ -69,8 +69,7 @@ cache-diagnostics UI; a second real need for API-cost tooling in this marketplac [Cache miss reason types](https://platform.claude.com/docs/en/build-with-claude/cache-diagnostics#cache-miss-reason-types); no fetched doc covers the Console request-comparison UI the article shows. Checked: cache-diagnostics doc, usage-cost-api doc, two web searches. Unchecked: the Console - product itself (needs a login). As of: 2026-09-09. Recheck trigger: a docs page starts - covering the Console request-comparison UI, or someone checks the Console itself. + product itself (needs a login). 3. **Benchmark numbers are vendor-internal.** The article's benchmark figures are single-pool Anthropic measurements with no published artifact to reproduce from, so no figure is recorded here. Posture recommended by the research run: adopt mechanisms, cite numbers @@ -88,9 +87,6 @@ cache-diagnostics UI; a second real need for API-cost tooling in this marketplac [Mid-conversation system messages](https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages) (on both pages the status and availability notes sit under the page title, in no section of their own). - - **As of**: 2026-10-01 - - **Recheck trigger**: any of the three pages changes the feature's release status, its - supported platforms, or its supported models. 5. **Corroboration verdict (fresh-context verifier, 2026-09-09).** Every accepted row is HIGH confidence and five live spot checks matched current sources; four rows rest on a single evidence pool because no independent second pool exists publicly: diff --git a/docs/upstream/mattpocock-skills.md b/docs/upstream/mattpocock-skills.md index 7fe1e341da9..3b23cc60eaa 100644 --- a/docs/upstream/mattpocock-skills.md +++ b/docs/upstream/mattpocock-skills.md @@ -150,9 +150,8 @@ Two `writing-for-agents` strands from lane 5, tracked on events, never on dates. invariant", owns the rule, so it no longer depends on upstream and the upstream-release trigger is retired. - **Pointer**: when a skill must reach another skill, fetch - [the skills page](https://code.claude.com/docs/en/skills) live and read what - `disable-model-invocation` removes. - - **As of**: 2026-08-17 + [skills: control who invokes a skill](https://code.claude.com/docs/en/skills#control-who-invokes-a-skill) + live and read what `disable-model-invocation` removes. - **Recheck trigger**: a repository review or audit finds a new Skill-tool or operative slash-command invocation of a `disable-model-invocation: true` target. @@ -181,9 +180,6 @@ Two `writing-for-agents` strands from lane 5, tracked on events, never on dates. upstream's in the Claude desktop and web apps. - **Pointer**: when a user-invoked skill is missing from the listing on desktop or web, read upstream issue [#693](https://github.com/mattpocock/skills/issues/693) live. - - **As of**: 2026-10-04 (issue open) - - **Recheck trigger**: the issue changes state. The drift script reads trees, not issues, so this - trigger is watched by hand. - **Codex sidecar policy** (the `allow_implicit_invocation: false` line). Corrected 2026-10-04: this matters without a Codex target from us, because Codex discovers `.claude-plugin/plugin.json` and its skill parser ignores `disable-model-invocation`, so our user-invoked skills (75 in 62 @@ -303,7 +299,7 @@ Our decisions, owned by `/session-flow:workflow` and the skills it routes to: - **Pointer**: for the main flow and on-ramps, read upstream `skills/engineering/ask-matt/SKILL.md` at HEAD live; for where wayfinder sits, `docs/engineering/wayfinder.md` at HEAD; for the session-start rule, . No upstream docs - page covers the quick-change rule as of 2026-10-10. + page covers the quick-change rule. - **As of**: 2026-11-03 (`4ae2317`; since `49dd158` these paths changed only by the fresh-context line in `wayfinder`) - **Recheck trigger**: this page's recheck trigger fires for `ask-matt`, `grill-with-docs` or diff --git a/docs/upstream/opus-5-5-task-cost.md b/docs/upstream/opus-5-5-task-cost.md index 1c9a22dee78..f2327e40b67 100644 --- a/docs/upstream/opus-5-5-task-cost.md +++ b/docs/upstream/opus-5-5-task-cost.md @@ -225,8 +225,7 @@ Stated deviations from the docs and precedent (Q38): set and `ANTHROPIC_DEFAULT_SONNET_MODEL` is not, because this repository does not trust the `sonnet` alias to name the current Sonnet there. When checking what the alias resolves to on a provider, fetch [Model configuration: Model aliases](https://code.claude.com/docs/en/model-config#model-aliases) - live (as of 2026-11-03; recheck trigger: that section changes a provider's `sonnet` target or - how to pin it). + live. Q42 outcome, from the plan approval gate: **keep**. These 12 rows of `plugins/harness-config/skills/audit-instructions/reference/criteria.md` overlap `/doctor diff --git a/docs/upstream/opus-5-5-usage-guide.md b/docs/upstream/opus-5-5-usage-guide.md index 5298cd82056..c81de0a1b77 100644 --- a/docs/upstream/opus-5-5-usage-guide.md +++ b/docs/upstream/opus-5-5-usage-guide.md @@ -45,8 +45,7 @@ Each row is an [upstream-drift](../contracts/upstream-drift/README.md#required-p **Verdict** are our decision. No row restates the guide. Shared for every row: - **Pointer**: the pages in [Source and verification](#source-and-verification). -- **As of**: 2026-09-23 -- **Recheck trigger**: a revised Opus 5.5 prompting page or usage guide, or the next Opus release. +- **Recheck trigger**: the next Opus release. The guide's opening and closing summary sections map onto the rows below and carry no rows of their own. diff --git a/docs/upstream/platform-claude-com-prompting-claude-fable-5-2.md b/docs/upstream/platform-claude-com-prompting-claude-fable-5-2.md index 79863e46e04..f30fe9a5483 100644 --- a/docs/upstream/platform-claude-com-prompting-claude-fable-5-2.md +++ b/docs/upstream/platform-claude-com-prompting-claude-fable-5-2.md @@ -22,30 +22,19 @@ below. That chapter is not written by this record. - **Pointer**: when a `G` row needs the guide's wording or measurement, fetch the anchored section of [Prompting Claude Fable 5.2](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-fable-5-2) live. -- **As of**: 2026-11-09 (fetched whole as markdown; upstream publishes no per-page content date) -- **Recheck trigger**: the guide changes a section a `take` or `adapt` row links, or a guide for a - later Fable version is published. - **Pointer**: when a `W` row needs the release's API or behavior change, fetch the anchored section of [What's new in Claude Fable 5.2](https://platform.claude.com/docs/en/models/fable-5-2/whats-new-fable-5-2) live. Row W1 cites the text above the first heading, which has no anchor, so it links the page top. -- **As of**: 2026-11-09 (fetched whole as markdown) -- **Recheck trigger**: the page adds or drops a breaking change or a behavior difference. - **Pointer**: when a row needs Claude Code's own handling of Fable 5.2 (alias, default effort, fallback), fetch [Model configuration](https://code.claude.com/docs/en/model-config) at the anchor the row names, live. -- **As of**: 2026-11-09, read against Claude Code 2.1.321 -- **Recheck trigger**: the "Work with Fable", "Adjust effort level" or "Automatic model fallback" - section changes what it says about Fable 5.2. - **Pointer**: when an `A` row needs the post's tip, fetch live (Alex Albert, Anthropic staff, posted 2026-11-09). Each `A` row names the docs section that covers its topic as the main - pointer, with the post as the correlate; for row A1, no docs page covers the topic as of - 2026-11-09. -- **As of**: 2026-11-09 -- **Recheck trigger**: the post is edited or deleted, or a docs page starts covering the A1 topic. + pointer, with the post as the correlate; for row A1, no docs page covers the topic. Not read: the [Fable 5.2 migration guide](https://platform.claude.com/docs/en/models/fable-5-2/migration-guide) and the linked feature pages (preserved thinking, effort, refusals and fallback). No row claims @@ -154,6 +143,4 @@ terms govern it, and carries no license. This record copies no upstream text and it links every section it relies on. - **Pointer**: when the license of any source is in question, fetch each source page above live; - no license statement was found on any of them as of 2026-11-09. -- **As of**: 2026-11-09 -- **Recheck trigger**: a source gains a license statement or is republished under one. + no license statement was found on any of them. diff --git a/docs/upstream/x-com-addyosmani-status-2117512471930167377.md b/docs/upstream/x-com-addyosmani-status-2117512471930167377.md index b5469e9c75b..4aa5a472cfb 100644 --- a/docs/upstream/x-com-addyosmani-status-2117512471930167377.md +++ b/docs/upstream/x-com-addyosmani-status-2117512471930167377.md @@ -9,10 +9,8 @@ an interview on 2026-11-03; this record states them. - **Pointer**: when a row's idea needs its upstream wording, fetch live (an X Article has no section anchors, so each row names the article section it comes from); no docs page covers keeping human judgment - in agent workflows as of 2026-11-03. -- **As of**: 2026-11-03 -- **Recheck trigger**: the post is edited or deleted, a Claude Code docs page starts covering the - topic (the pointer moves there), or issue + in agent workflows. +- **Recheck trigger**: issue [#12938](https://github.com/melodic-software/claude-code-plugins/issues/12938) or [#12939](https://github.com/melodic-software/claude-code-plugins/issues/12939) closes: re-audit the rows that cite it. @@ -61,5 +59,3 @@ and takes ideas only. - **Pointer**: , checked for a license statement; none found. -- **As of**: 2026-11-03 -- **Recheck trigger**: the post gains a license statement or is republished under one. diff --git a/docs/upstream/x-com-addyosmani-status-2119332146485891501.md b/docs/upstream/x-com-addyosmani-status-2119332146485891501.md index 62c428917dc..78fecb62fea 100644 --- a/docs/upstream/x-com-addyosmani-status-2119332146485891501.md +++ b/docs/upstream/x-com-addyosmani-status-2119332146485891501.md @@ -15,13 +15,8 @@ the correlate. - **Pointer**: when a row's idea needs its upstream wording, fetch the docs section its **Stated** link names live; correlate with (an X - Article has no section anchors, so each row names the article section it comes from). For the - rows no docs page covers (management framing, metrics, what not to build), no docs page covers - the topic as of 2026-11-09. -- **As of**: 2026-11-09, read against Claude Code 2.1.319 -- **Recheck trigger**: the post is edited or deleted, the best-practices page's "What you can stop - doing" or "Let Claude run without you" section changes, or a Claude Code docs page starts covering - a row that now points at the post: re-audit the rows that cite it. + Article has no section anchors, so each row names the article section it comes from). No docs + page covers the management-framing, metrics and what-not-to-build rows. ## Attribution table @@ -82,6 +77,4 @@ The post carries no license; X's terms govern the post itself. This record copie and takes ideas only. The docs pages it points at are Anthropic's and are linked, not copied. - **Pointer**: when the post's license is in question, fetch - live; none found as of 2026-11-09. -- **As of**: 2026-11-09 -- **Recheck trigger**: the post gains a license statement or is republished under one. + live; none found. From 159eecca5e87b14498a77a90f561e1729d19f226 Mon Sep 17 00:00:00 2001 From: Kyle Sexton <153232337+kyle-sexton@users.noreply.github.com> Date: Wed, 11 Nov 2026 19:18:42 -0500 Subject: [PATCH 3/5] docs: restore stamps on probe records (docs, D26) Five stamps removed earlier guard records that hold a probe result or a version gate, which D26 counts as stored values: loop-lane's --permission-prompts host run on 2.1.312, mod-authoring's session-type probe on 2.1.288, plugin-philosophy's --scope local observation on 2.1.289, migration-playbook's --plugin-dir bullet with the v2.1.128 zip gate, and permission-rule-hygiene's auto-mode record with its v2.1.284 source conflict. Their as-of dates and triggers come back unchanged. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01VcupojQwC9uJAfmSt4EHZm --- docs/contracts/loop-lane/README.md | 2 ++ docs/contracts/mod-authoring/README.md | 3 +++ docs/contracts/permission-rule-hygiene/README.md | 2 ++ docs/migration-playbook.md | 2 ++ docs/plugin-philosophy.md | 3 +++ 5 files changed, 12 insertions(+) diff --git a/docs/contracts/loop-lane/README.md b/docs/contracts/loop-lane/README.md index af85283d97a..5a649b5169e 100644 --- a/docs/contracts/loop-lane/README.md +++ b/docs/contracts/loop-lane/README.md @@ -1298,6 +1298,8 @@ hook `ask` in a lane. This subsection holds which mode each lane runs in. flag is UNVERIFIED. - **Pointer:** for the flag, fetch [CLI flags](https://code.claude.com/docs/en/cli-reference#cli-flags) live. +- **As of:** 2026-11-01. +- **Recheck trigger:** that page's `--permission-prompts` row changes. **Launch options.** An unattended Claude Code launch passes this set, drawn from what the lanes launcher builds. Other headless launchers adopt it when next touched. A flag whose effect no probe diff --git a/docs/contracts/mod-authoring/README.md b/docs/contracts/mod-authoring/README.md index fdc3b3a3b34..5c5c86cbe0a 100644 --- a/docs/contracts/mod-authoring/README.md +++ b/docs/contracts/mod-authoring/README.md @@ -110,6 +110,9 @@ app is a user-scope change and needs the user's approval. [events: approve or refuse a tool call before the user is asked](https://code.claude.com/docs/en/plugins/mods/events#approve-or-refuse-a-tool-call-before-the-user-is-asked); for `CLAUDE_CODE_PLUGIN_DIRS`, see [reference: settings and environment variables](https://code.claude.com/docs/en/plugins/mods/reference#settings-and-environment-variables). +- **As of**: 2026-10-03, Claude Code 2.1.288. `--bg` sessions and the Desktop app were not probed. +- **Recheck trigger**: the where-mods-run table changes a row, the minimum version changes, or the + settings-hooks section changes where plugin `PreToolUse` hooks run. The switches that stop installed mods differ from those that stop built-in mods. When a mod passes `claude plugin test` and does nothing on a machine with managed settings or a Team or Enterprise diff --git a/docs/contracts/permission-rule-hygiene/README.md b/docs/contracts/permission-rule-hygiene/README.md index 9049afb990e..d5dcad839cb 100644 --- a/docs/contracts/permission-rule-hygiene/README.md +++ b/docs/contracts/permission-rule-hygiene/README.md @@ -35,6 +35,8 @@ particular session starts in is not something the convention tracks. - **Pointer**: when you need to know which mode a given session starts in, fetch [permission modes: which mode a session starts in](https://code.claude.com/docs/en/permission-modes#which-mode-a-session-starts-in) live. +- **As of**: 2026-10-10 +- **Recheck trigger**: that section stops starting interactive sessions in auto mode by default. - **Source conflict**: the first release that starts sessions in auto mode, between the [changelog](https://code.claude.com/docs/en/changelog) (v2.1.284 entry) and that section. Recheck trigger: either is revised on that point. diff --git a/docs/migration-playbook.md b/docs/migration-playbook.md index 085d82d3d9f..11141bbd242 100644 --- a/docs/migration-playbook.md +++ b/docs/migration-playbook.md @@ -928,6 +928,8 @@ claude --plugin-dir ./plugins/ - **Pointer**: when choosing between the folder and per-plugin forms, fetch [plugin commands: flags that load a plugin for one session](https://code.claude.com/docs/en/plugins/cli-reference#flags-that-load-a-plugin-for-one-session) live. + - **As of**: 2026-10-10 + - **Recheck trigger**: that section changes what a folder of plugins loads. - **Session-scoped and non-destructive.** The override lasts only for that session and never edits a consumer's `extraKnownMarketplaces`; the published registration stays on its GitHub remote. The lone exception: `--plugin-dir` cannot override a plugin that *managed* settings force-enable or diff --git a/docs/plugin-philosophy.md b/docs/plugin-philosophy.md index 9b8ed689a18..622bc4ccc52 100644 --- a/docs/plugin-philosophy.md +++ b/docs/plugin-philosophy.md @@ -1003,6 +1003,9 @@ worktree. Outside a git repository the file stays in the folder you ran from. [`--scope` names the settings file written](https://code.claude.com/docs/en/plugins/cli-reference#claude-plugin-commands). Observed for `plugin install --scope local` on Claude Code 2.1.289, WSL2, during the install-and-test run in melodic-software/claude-code-plugins#6318, reported in #6375. +- **As of:** 2026-10-04. +- **Recheck trigger:** that settings section stops placing a worktree's local file at the main + checkout, or a release note changes where `--scope local` writes. ## Instruction economy From 4fc03d7cc23d03bef03eb814dde6b077cc75c949 Mon Sep 17 00:00:00 2001 From: Kyle Sexton <153232337+kyle-sexton@users.noreply.github.com> Date: Wed, 11 Nov 2026 19:21:19 -0500 Subject: [PATCH 4/5] docs: restore stamps on records with upstream numbers (docs, D26) An exit code or other number copied from an upstream page is a stored value under D26. Restore the as-of date and trigger on the records that state one: the four hook-observability exit-code pointers, the hook-input-rewriting deny-versus-exit-2 record, the smoke-test record of the `already installed` string with its `claude plugin configure` pointer, the finding-your-unknowns HTTP 402 and N = 1,372 records, and the automations post's shared stamp, whose page stores the post's figures. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01VcupojQwC9uJAfmSt4EHZm --- docs/contracts/hook-input-rewriting/README.md | 3 +++ docs/contracts/hook-observability/README.md | 11 ++++++++--- docs/extensibility-contract-smoke-tests.md | 4 ++-- docs/finding-your-unknowns.md | 5 +++-- ...claude-dev-building-effective-agent-automations.md | 7 +++++-- 5 files changed, 21 insertions(+), 9 deletions(-) diff --git a/docs/contracts/hook-input-rewriting/README.md b/docs/contracts/hook-input-rewriting/README.md index 0ecccb99b71..d2c8466bbab 100644 --- a/docs/contracts/hook-input-rewriting/README.md +++ b/docs/contracts/hook-input-rewriting/README.md @@ -54,6 +54,9 @@ a dead end, and it is why no hook here needs to rewrite a call to get the right - **Pointer**: when checking what Claude sees of a denial, by the JSON `deny` or by `exit 2`, fetch [hooks § PreToolUse decision control](https://code.claude.com/docs/en/hooks#pretooluse-decision-control) live. +- **As of**: 2026-11-03 +- **Recheck trigger**: that section changes who sees a `deny` reason, or how `exit 2` compares with + a JSON `deny`. Auto mode can make the escape hatch a refusal: Claude Code can refuse a tool call whose input a hook changed after the server-side classifier reviewed it. Which sessions, tools and hooks that covers is diff --git a/docs/contracts/hook-observability/README.md b/docs/contracts/hook-observability/README.md index 07983804ab6..9bd1798f69e 100644 --- a/docs/contracts/hook-observability/README.md +++ b/docs/contracts/hook-observability/README.md @@ -45,11 +45,13 @@ telemetry..."`), not a generic `"Running hook..."`. A JSON output field (`hookSpecificOutput` sibling) addressed to the user. We compose it on any exit code, exit 2 included, and size it under the cap in [Output caps](#output-caps-stated-by-the-reference). Pointer: for which exit codes still read JSON -output, see . Composed via +output, see . As of: 2026-09-27. Recheck +trigger: that section changes whether JSON output is read on exit 2. Composed via `hook::emit_channels` / `hook::emit_skip_notice` (`lib/hook-utils.sh`) alongside `additionalContext` in one JSON document: a hook with both agent-channel content and a pending notice composes them there and never prints two objects. Pointer: for how stdout is parsed as JSON, see . +As of: 2026-10-01. Recheck trigger: that section changes how a multi-object stdout is read. **Scope, required for exactly one situation:** a missing runtime prerequisite (binary, config file, `jq`) causes the hook to silently no-op instead of performing its check. Doctrine @@ -87,7 +89,9 @@ count, or the disclosure becomes the noise problem it was meant to prevent. - **Exit-2 blocking paths.** A block already delivers its reason, so repeating it on `systemMessage` is redundant, not more observable. Pointer: for where the blocking message goes, - see . A blocking hook may still carry a `systemMessage` (see above), but only for content that meets the + see . As of: 2026-10-04. Recheck trigger: + that section changes what a `PreToolUse` block shows or which text becomes its reason. A + blocking hook may still carry a `systemMessage` (see above), but only for content that meets the carve-out below, never for the reason itself. - **Legitimate advisory findings *the model can act on*.** A hook that surfaces a finding to Claude for it to act on (e.g. a lint result, a suggested fix) belongs on `additionalContext` only. That @@ -144,7 +148,8 @@ external binary keeps the same cadence, with the install route in its user notic **Important exit-code caveat:** a bare `echo "..." >&2; exit 0` skip is **not a notice**; only stdout JSON carries one. Pointer: for where exit-0 stderr goes, see -. `scripts/check-silent-skips.sh` **still treats a bare +. As of: 2026-10-04. Recheck trigger: that +section starts showing exit-0 stderr in the transcript or to the model. `scripts/check-silent-skips.sh` **still treats a bare stderr write as a sanctioned visibility signal as of this doc's introduction.** That is incorrect for the exit-0 skip shapes the gate inspects, and the gate does not yet enforce the rule this doc states. **Gate correction is pending**, scoped into the same fleet-adoption follow-up PR (against diff --git a/docs/extensibility-contract-smoke-tests.md b/docs/extensibility-contract-smoke-tests.md index ec6ccf184b2..33f5edb9a1b 100644 --- a/docs/extensibility-contract-smoke-tests.md +++ b/docs/extensibility-contract-smoke-tests.md @@ -121,8 +121,8 @@ claude plugin install smoketest@ --scope local Date: Wed, 11 Nov 2026 19:47:53 -0500 Subject: [PATCH 5/5] docs(standards): bump the contract to 1.1.4 for the pointer stamp removal check-standards-contract-bump.sh requires a frontmatter bump and CHANGELOG entry when the contract text changes; the carrying plugins already have patch fragments. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01VcupojQwC9uJAfmSt4EHZm --- docs/contracts/standards/CHANGELOG.md | 6 ++++++ docs/contracts/standards/README.md | 2 +- plugins/improvement/reference/standards-contract.md | 2 +- plugins/planning/reference/standards-contract.md | 2 +- plugins/review/reference/standards-contract.md | 2 +- 5 files changed, 10 insertions(+), 4 deletions(-) diff --git a/docs/contracts/standards/CHANGELOG.md b/docs/contracts/standards/CHANGELOG.md index b6b5dc30ddf..1318f08c864 100644 --- a/docs/contracts/standards/CHANGELOG.md +++ b/docs/contracts/standards/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog for the standards convention +## 1.1.4 - 2026-11-12 + +Wording only. The memory-rules pointer in the `.claude/rules` seam no longer carries an as-of date +or recheck trigger, per the upstream-drift convention 5.0.0. The layers, the precedence rule, the +schema, the index shape and the migration rules are unchanged. + ## 1.1.3 - 2026-11-04 Wording only. The personal layer, `/*.local.md`, is called the personal override diff --git a/docs/contracts/standards/README.md b/docs/contracts/standards/README.md index 0cc3b1d6d1a..583ef26a097 100644 --- a/docs/contracts/standards/README.md +++ b/docs/contracts/standards/README.md @@ -1,5 +1,5 @@ --- -standards-contract: 1.1.3 +standards-contract: 1.1.4 --- # Standards Convention diff --git a/plugins/improvement/reference/standards-contract.md b/plugins/improvement/reference/standards-contract.md index 121e0ac28fc..c7e77e04811 100644 --- a/plugins/improvement/reference/standards-contract.md +++ b/plugins/improvement/reference/standards-contract.md @@ -1,5 +1,5 @@ --- -standards-contract: 1.1.3 +standards-contract: 1.1.4 ---