Skip to content

chore(plugins): call the cascade's personal layer the personal override in the remaining plugins - #13368

Merged
kyle-sexton merged 4 commits into
mainfrom
chore/13192-personal-override-replacement
Nov 4, 2026
Merged

kyle-sexton merged 4 commits into
mainfrom
chore/13192-personal-override-replacement

Conversation

@kyle-sexton

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

Copy link
Copy Markdown
Member

Closes #13192

Summary

The remaining plugins in #13192's slice now call the config cascade's personal layer the personal override, outside their synced lib/ copies. This is the content of lanes App PR #13337, merged onto current main, which already carries #13338's rename in eight other plugins.

Fix

Verification

  • python3 scripts/check-vocabulary.py --sense overlay over the 30 plugins named in chore(plugins): call the cascade's personal layer the personal override in the remaining plugins #13192: exit 0, no output.
  • The same command over all of plugins/ reports 6 lines, all outside this slice: bugs (chore(attribution, review, multi-agent and five more): call the cascade's personal layer the personal override #13191's slice) and disk-hygiene, machine-health and songwriting (D8 allowlist senses or other slices).
  • scripts/check-changelog-fragments.sh --check: all 26 fragments valid. --check-required origin/main: 23 fragment-mode plugins changed, each with a fragment.
  • No reference remains to the renamed autonomy eval directory su-check-reports-overlay-layer.
  • Tests for the touched scripts, all passing: ai-slop detect.test.sh (271 cases), code-tidying settings.test.sh, corrections codify-settings.test.sh (37), buffer.test.sh (53) and conformance.test.sh (39), docs-hygiene audit-noise detect.test.sh (228), domain-driven-design glossary-settings.test.mjs.
  • validate-cases.py on each touched plugin's evals/: no FAIL, WARNs only. Every changed JSON file (22) parses. scripts/validate-plugins.sh: passed.
  • No model evals were run, per the issue.
  • The push merged main again at 2272e7d9d5, which auto-merged plugins/docs-hygiene/skills/setup/SKILL.md. The vocabulary checker and --check-required were re-run on the pushed head with the same results.

Related

🤖 Generated with Claude Code

melodic-automation-lanes Bot and others added 4 commits November 4, 2026 19:15
Lane-Activity: work-resolve-issue/resolve-issue
Merge the lanes App branch for #13192 onto main, which already carries
#13338's rename in eight other plugins. The only conflict was the
autonomy #13304 fragment: main's release #13334 consumed it and the
branch only reworded it, so the deletion stands.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…abel

The digest policy now labels the personal layer `personal-override <path>`
(renamed in #13338); the convention doc still said `overlay <path>`.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@chatgpt-codex-connector

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

Copy link
Copy Markdown

Codex Review Summary

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

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-04T21:02:15.015669Z 6a70ef6 PR opened
ℹ️ About Codex in GitHub

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

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

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

@github-actions

github-actions Bot commented Nov 4, 2026

Copy link
Copy Markdown
Contributor

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

Chunk 1 of 3 (40 files)

Security review: chunk 1 of 3 (40 files)

No security issues found in this chunk.

What I read

I read every hunk of all 40 files in chunk-1.patch:

  • 19 changelog fragments: added .changes/*/…-13192-…md files, each with bump: patch frontmatter and prose only.
  • docs/conventions/review-digest.md: the layer label overlay <path> is now personal-override <path>. Nothing else changes. The next paragraph still reads the team layer from the base commit (baseRefOid) and never from the working tree.
  • Plugin docs and skill bodies: ai-briefing, ai-slop setup, the architecture map-* skills, the autonomy README, and eval JSON and YAML. In each, only the word "overlay" becomes "personal override".
  • plugins/ai-slop/skills/audit/scripts/detect.sh and detect.test.sh: only comments and test-label strings change. Variables, the source of config-root.sh, git invocations and the cascade logic are untouched.
  • The autonomy eval case renamed to su-check-reports-personal-override: the regex grader's alternative overlay is now personal override. It is an eval grader and gates no merge or lane.

Lenses applied

  • Instruction-surface deletions: no standing instruction is deleted, narrowed or softened. The one prohibition in this chunk keeps its meaning: ai-slop setup's "Never write the personal override on the user's behalf" (plugins/ai-slop/skills/setup/SKILL.md:73). The matching eval expectation also still forbids writing the user-global layer or the personal override. docs/contracts/instruction-exception-register/README.md was not consulted. I checked by consequence instead: no rule was removed.
  • Trust controls: this chunk changes no file that matches a TRUSTED PATHS: glob. Nothing here touches the trusted-trigger check, the lane token, the kill switch, the broker or a merge hold.
  • Plugin manifests: this chunk changes no plugin.json or marketplace.json.
  • Identical copies (.claude-lane/identical.txt): the education fragment is copied to session-flow and verification, and the implementation fragment to knowledge and playbooks. The copies are changelog fragments under .changes/<plugin>/, and at those paths their content does nothing different.
  • PR context: it holds no embedded directives aimed at the review lane.

Prior findings: none (0 earlier heads reviewed; blocking only: no).

critical-findings: 0

Chunk 2 of 3 (40 files)

Security review: chunk 2 of 3 (PR #13368)

I found no security issues in this chunk.

critical-findings: 0

Scope. I read every hunk of all 40 files in chunk-2.patch, manifest lines 41 to 80. They span the autonomy, code-tidying, corrections, discovery, docs-hygiene, domain-driven-design, education and github plugins.

What changed. Every hunk is a wording change: "overlay" / "local overlay" becomes "personal override" in the config-cascade docs. The words change in these places:

  • skill and reference prose
  • JSON-schema description strings
  • leading comments in scripts (settings.sh, codify-settings.mjs, findings-buffer.mjs, buffer.sh, glossary-settings.mjs, the autonomy eval scaffold.sh)
  • test names and assertion labels (settings.test.sh, codify-settings.test.sh, glossary-settings.test.mjs)
  • eval expectations and fixtures

What I checked.

  • Code behaviour: no executable line changes. Every hunk in the shell and .mjs files touches only comments or test descriptions. The grep patterns, jq expressions and expected values in the assertions are byte-identical.
  • Instruction surfaces: the SKILL.md edits delete, narrow or soften no rule. These include code-tidying tidy/setup's "declared deviation: no user-global layer or *.local.* personal override", github change-routing.md's policy floor ("Personal layers (user-global and the personal override) may only tighten…"), and the gitignore recommendation. Each keeps the same rule with a renamed noun. The protected-class register did not need checking, because no rule's meaning changed.
  • Rename: plugins/autonomy/evals/su-check-reports-overlay-layer/scaffold.sh → …/su-check-reports-personal-override/scaffold.sh. The file is an eval fixture: its mode (100755) is unchanged and only a comment line changes. The new path is not a hook, workflow, settings or manifest location.
  • Schemas: only description text changes in code-tidying, corrections, findings-buffer and domain-driven-design. additionalProperties, properties and the validation constraints are untouched.
  • Manifests / trust controls: this chunk changes no .claude-plugin/plugin.json or marketplace.json, and no file on a trusted path.
  • Identical copies: none of the files in identical.txt are in this chunk.

PR context: it contains no embedded directives aimed at the review. Prior findings: none, and this is not a blocking-only review.

Spend: none.

Chunk 3 of 3 (34 files)

Security review: chunk 3 of 3 (34 files)

No security issues found in this chunk.

I read every hunk of all 34 files in chunk-3.patch. This is the first review of the PR (blocking only: no, no prior findings).

What the chunk changes

Every hunk renames the config cascade's gitignored personal layer from "overlay" / "local overlay" to "personal override", plus some reflowed lines. The files are skill bodies, reference docs, eval prompts and expectations, one schema description string and one retirements.yaml note, across these plugins: github, harness-config, implementation, instruction-placement, knowledge, mutation-testing, overengineering, playbooks, plugin-quality, session-flow, skill-quality, toolchain and verification.

Instruction-surface check

Skill bodies are standing instructions, so I read each one to see whether any rule was removed or loosened by the rename. None was. Every guardrail keeps the same meaning:

  • Gitignore and commit rules stay the same. These are in github setup, harness-config setup, mutation-testing setup and toolchain setup:
    • check the personal-override file is ignored before writing it;
    • never stage it;
    • never edit the consumer's .gitignore;
    • for a tracked file, run git rm --cached and rotate any credential that was committed.
  • Policy-floor rules stay the same. These are in instruction-placement realign, overengineering consumer-config.md and findings-artifact.md, harness-config suppression, and the mutation-testing README:
    • the team layer wins on protected_categories and suppressions;
    • personal layers may only extend or tighten, never weaken;
    • an entry only in a personal layer is reported personal-only, not applied;
    • suppressions are written only to the team layer.
  • Retired-layer handling stays the same (plugin-quality): .claude/plugin-quality.local.md is still never read, and setup check still warns on it.
  • One wording change. plugins/toolchain/reference/resolution-ladder.md changes "A consumer overlay can also flip enabled back to true" to "A later layer can also flip…". This describes the per-key override order already set out a few lines above. It gives no layer any new power, and it is consumer-side opt-out behaviour with no security effect.

Manifests, trust controls and spending

  • No plugin.json or marketplace.json file is in this chunk.
  • No file in this chunk matches a trusted-path glob, and the chunk changes no trust control, token scope, kill switch or merge hold.
  • plugins/skill-quality/schemas/skill-quality.schema.json changes only its description string. additionalProperties, properties and validation are untouched.
  • Nothing in this chunk spends credits or can bill the owner.

PR context

.claude-lane/pr-context.md has no embedded text that tries to direct the review. The closing issues' bodies were left out by the wrapper.

Protected classes

The instruction exception register was not consulted. I matched removed rules by their consequence, and no rule was removed in this chunk.

critical-findings: 0

@github-actions

github-actions Bot commented Nov 4, 2026

Copy link
Copy Markdown
Contributor

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

Chunk 1 of 3 (40 files)

Code review: chunk 1 of 3 (40 files)

No findings in this chunk. This chunk only renames the config cascade's personal layer from "overlay" to "personal override", in docs, skill text, evals, script comments and test labels. The scripts' code and the test assertions' expected values are unchanged. Every hunk of all 40 files was read.

What was checked

  • docs/conventions/review-digest.md: the layer label personal-override <path> matches what digest-policy.mjs prints, at plugins/review/skills/explain-change/scripts/digest-policy.mjs:266-267 (label: "personal-override").
  • ai-slop detect.sh / detect.test.sh: only comments and assertion labels changed. The assert_contains expected strings ([layer: …ai-slop.local.yaml], etc.) are unchanged, so the tests check the same behaviour as before.
  • Autonomy eval rename (su-check-reports-overlay-layer → su-check-reports-personal-override):
    • The name: field matches the new directory.
    • No reference to the old directory name is left in the repo.
    • The names-overlay-value grader regex now accepts personal override instead of overlay, and still accepts \blocal\b and binding\.local\.json.
    • The renamed pass samples still match the new pattern.
    • The second fail sample ("…paid-opt-in.\n\nThe binding also has an untracked personal override file.") still fails, because [^\n]{0,160} cannot cross the newline.
  • Changelog fragments: every plugin this PR changes has one patch fragment (23 plugins, 23 fragments: 19 in this chunk plus 4 identical copies). A patch bump fits a wording-only change. Each fragment's list of touched files matches the files that plugin changes, checked against the manifest.
  • Identical copies: .changes/session-flow/…0b852cef.md and .changes/verification/…81e65bb9.md share the education fragment's text ("The config reference and the setup skill…"). Both plugins change exactly reference/config.md and skills/setup/SKILL.md, so that text is accurate for them. .changes/knowledge/…f1992ae2.md and .changes/playbooks/…dc996c27.md share the implementation fragment's text ("The config reference…"). Both plugins change only reference/config.md, so that is accurate too. Each copy sits at its own plugin's fragment path, and the path does not change what the content does there.
  • Path-scoped rules:
    • .claude/rules/skill-bodies-state-current-rules.md: the edits restate no volatile upstream detail.
    • .claude/rules/eval-case-transcripts.md: the eval edits are synthetic samples, not transcripts.
    • .claude/rules/cost-claims.md: no cost claims are touched.
  • Plugin manifests: no plugin.json or marketplace.json is in this chunk, so no manifest lines apply.

Closing issues

Spend

None. The eval case is renamed and its grader changed, but no model evals run in this PR.

No prior findings; this is the first review of this PR, not blocking only.

Chunk 2 of 3 (40 files)

Code review, chunk 2 of 3 (40 files): no findings.

I read every hunk of all 40 files in this chunk. They cover the autonomy, code-tidying, corrections, discovery, docs-hygiene, domain-driven-design, education and github plugins. Each change renames "overlay" or "local overlay" to "personal override" in prose, code comments, schema description strings, test names, eval expectations and fixtures. None of them changes behaviour:

  • Machine-facing values are unchanged. The local layer and provenance names in codify-settings.mjs and glossary-settings.mjs, and the local (.*corrections.local.yaml) stderr pattern that codify-settings.test.sh greps for, stay as they were. Only the strings that label the assertions changed.
  • Fixture edits still match their tests. In docs-hygiene/.../recall-paraphrases.md and the matching detect.test.sh heredoc, only the text after the em dash changed. The test asserts on Agent config and the - **Name** — role shape, and the audit-noise eval (evals.json:165-172) keys on - **Agent config** —. Both are still present.
  • The code-tidying grader sample still passes. The edited sample no-local-variant-recommended.json says ".local. personal override". It still does not match the \.local\.(md|ya?ml|json) regex in su-apply-private-lane/case.yaml, so it remains a valid pass sample.
  • The autonomy eval rename carries over its scaffold. scaffold.sh moved to su-check-reports-personal-override/, beside its case.yaml, which chunk 1 renames. I found no remaining reference to su-check-reports-overlay-layer in plugins/autonomy.
  • Path-scoped rules. eval-case-transcripts.md and cost-claims.md match some of these files. Neither applies to a terminology rename.

Closing issues. #13192's criteria are that the checker exits 0 over this slice, that tests pass with no eval FAIL, and that each touched plugin has a release record. The PR description claims all three, but I could not confirm them because this lane has no shell. Tests that would catch a regression in this chunk exist and were updated (settings.test.sh, codify-settings.test.sh, glossary-settings.test.mjs, detect.test.sh). The release fragments are in chunk 1.

I found no embedded instructions in the PR context. This chunk has no manifest changes and no files on a trusted path, and nothing here spends credits or incurs billing.

Chunk 3 of 3 (34 files)

Code review: chunk 3 of 3 (34 files)

I read every hunk in this chunk. It covers github, harness-config, implementation, instruction-placement, knowledge, mutation-testing, overengineering, playbooks, plugin-quality, session-flow, skill-quality, toolchain and verification.

No findings.

What the chunk changes:

  • Wording only. Every change renames the config cascade's personal layer from "overlay", "local overlay" or "personal overlay" to "personal override". The edits are in setup and check skill text, config references, READMEs, eval prompts and expectations, one schema description (plugins/skill-quality/schemas/skill-quality.schema.json), and the note field of plugins/plugin-quality/retirements.yaml.
  • Logic is unchanged. No path, key, glob, exit code or gitignore line changes. .claude/**/*.local.* and docs/conventions/**/*.local.* are untouched, and so is the retirement record's path and action in retirements.yaml.
  • Renamed eval case. plugins/plugin-quality/skills/setup/evals/evals.json renames case retirement-r002-overlay-warns-never-silent to retirement-r002-personal-override-warns-never-silent. A search of plugins/ finds nothing else that names the old case, or the renamed autonomy eval directory su-check-reports-overlay-layer. Nothing is left dangling.
  • One reworded sentence. plugins/toolchain/reference/resolution-ladder.md changes "A consumer overlay can also flip enabled back to true" to "A later layer can also flip…". That is accurate under the per-key additive ladder the same section describes, and slightly broader than the old text.
  • Release records. Each plugin this chunk touches has a matching .changes/<plugin>/…-13192-… fragment in the diff (chunk 1). The knowledge, playbooks, session-flow and verification fragments are listed in identical.txt as copies of the implementation and education fragments.
  • Closing issue chore(plugins): call the cascade's personal layer the personal override in the remaining plugins #13192. The rename meets its outcome for these plugins. I did not run the acceptance commands (check-vocabulary --sense overlay, tests, eval validation) because this lane has no shell. The passing results quoted in the PR description are the author's claims and unverified.
  • Prior findings. There are none, and this is the lane's first review of the PR (not blocking-only).
  • Other checks. No plugin manifest (plugin.json or marketplace.json) changes in this chunk, so no manifest lines apply. No file in this chunk matches a trusted-path glob. I found no embedded instructions in the PR context.

@github-actions

github-actions Bot commented Nov 4, 2026

Copy link
Copy Markdown
Contributor

The pr-verify verifier failed head 6a70ef681c250be5c12bfae5024573af9f4d730b. What it wrote, as data:

What it wrote (23 lines)
Summary: For #13192, the diff does what the issue asks. In the 23 slice plugins it touches, it
  renames the cascade's personal layer from "overlay" to "personal override", outside the synced
  lib/ copies, and adds one patch fragment per touched plugin. The changes are prose, comments, test
  labels, schema descriptions and eval text, plus one eval directory rename
  (su-check-reports-overlay-layer → su-check-reports-personal-override); the PR body says nothing
  else still names the old directory. The autonomy grader regex still passes and fails the right
  samples. The fail sample keeps its newline gap, so it does not match. No logic changes. test-bash
  (0/1), test-node, test-python (0), check-plugins and lint-shell all concluded success on the
  judged head (https://github.com/melodic-software/claude-code-plugins/actions/runs/41911972095).
  The domain-driven-design glossary-settings suite runs through its wrapper in test-bash, which
  passed. Nothing touches the takeover set, secrets or settings. The verdict is still fail. The PR
  body's Related line says "Composes with #13338 (Closes #13191)", so spec.json lists #13191 as an
  issue this PR closes, and no credited_siblings entry excuses its items. This diff touches none of
  #13191's eight plugins. The body itself says the checker still reports lines in bugs, one of
  #13191's plugins, so #13191's done-when "the Demo command exits 0" is not shown met. In the diff
  reviewed, I found no defect in the #13192 work.
- PR body (Related section): reword "Composes with #13338 (Closes #13191)" so it has no closing
  keyword, e.g. "Composes with #13338, which delivered #13191". The keyword makes this PR close
  #13191 even though it delivers none of that issue's plugins. By the body's own account,
  check-vocabulary still reports lines in plugins/bugs, so #13191's Demo item is not met.
- docs/conventions/review-digest.md:60: this layer-label fix (`overlay <path>` → `personal-override
  <path>`) is outside #13192's plugin scope; it carries #13333's docs fix. It is harmless and
  matches digest-policy.mjs, so it needs no change; flagged for a human.

This pull request leaves the merge queue, and ci-status holds it out while it carries pr-verify-failed. A pr-verify pass removes the label, at a new commit or at this same head: once a trusted person edits the body, and only trusted people have edited it since the fail, this head is judged again, so a fail on the body or the issues it links needs only the body fixed, no new commit.

@github-actions github-actions Bot added pr-verify-failed pr-verify failed this head; a pass at a new commit removes it. and removed pr-verify-failed pr-verify failed this head; a pass at a new commit removes it. labels Nov 4, 2026
@kyle-sexton
kyle-sexton added this pull request to the merge queue Nov 4, 2026
Merged via the queue into main with commit 2bed49f Nov 4, 2026
55 checks passed
@kyle-sexton
kyle-sexton deleted the chore/13192-personal-override-replacement branch November 4, 2026 21:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

chore(plugins): call the cascade's personal layer the personal override in the remaining plugins

1 participant