Scope: repo governance · Requires: a maintainer judgment call — not autonomously resolvable
Decision needed
docs/MIGRATION-PLAYBOOK.md:234-237 requires additive-preferred layering: "a later layer adds to or refines earlier layers rather than silently replacing them… a plugin that genuinely must override does so per key, never by dropping the base layer wholesale."
Three fleet surfaces deviate. Each needs a ruling: ratify as a declared exception, or correct to conform.
1. standards — precedence inversion (declared, reasoned)
docs/conventions/standards/README.md:35-39:
Precedence inversion: layers are additive. Personal layers (user-global and overlay) may ADD new standards or TIGHTEN team ones; on a direct conflict, the team-tracked layer wins. When a personal-layer rule materially shapes a skill's output, the skill names the contributing layer (provenance), so reviewers can tell a team standard from a personal one.
Every other multi-layer surface lets the later (more personal) layer win. This one deliberately inverts so a personal file cannot loosen a team standard.
Reads as defensible — a standards floor should not be personally weakenable, and it is documented with provenance reporting. The question is whether it becomes a named exception class in the convention ("policy-floor surfaces invert") or stays a one-off.
2. code-tidying — wholesale replacement (undeclared)
plugins/code-tidying/skills/tidy/lanes/docs-prose.md:14:
a project lane at .claude/tidy-lanes/docs-prose.md overrides this file entirely
Also refuses a .local.* overlay outright (skills/setup/SKILL.md:110-112). A lane file is a prose ruleset rather than a keyed config, so "override entirely" may be the right semantics — but it is the exact thing the seam forbids, recorded nowhere.
3. songwriting — wholesale replacement (undeclared)
plugins/songwriting/skills/setup/SKILL.md:26-28,39-43 — first-match-wins with no merge; a consumer override freezes that template out of future plugin updates. The freeze behaviour is the sharper concern: it is a silent staleness trap, independent of the merge question.
What a resolution looks like
For each: ratify (record as a declared exception in the layering owner doc, with its rationale) or correct (file a conformance issue against the plugin). A ratified exception should say what class of surface it applies to, so the next plugin facing the same shape has a rule rather than a precedent to argue from.
Why this is human-gated
These are doctrine calls with no codebase-resolvable answer. Ruling on them changes what the convention means for every future surface, and #2 and #3 may be legitimate semantics the seam simply did not anticipate — correcting them could be the wrong move.
Related
Blocked on nothing.
Scope: repo governance · Requires: a maintainer judgment call — not autonomously resolvable
Decision needed
docs/MIGRATION-PLAYBOOK.md:234-237requires additive-preferred layering: "a later layer adds to or refines earlier layers rather than silently replacing them… a plugin that genuinely must override does so per key, never by dropping the base layer wholesale."Three fleet surfaces deviate. Each needs a ruling: ratify as a declared exception, or correct to conform.
1.
standards— precedence inversion (declared, reasoned)docs/conventions/standards/README.md:35-39:Every other multi-layer surface lets the later (more personal) layer win. This one deliberately inverts so a personal file cannot loosen a team standard.
Reads as defensible — a standards floor should not be personally weakenable, and it is documented with provenance reporting. The question is whether it becomes a named exception class in the convention ("policy-floor surfaces invert") or stays a one-off.
2.
code-tidying— wholesale replacement (undeclared)plugins/code-tidying/skills/tidy/lanes/docs-prose.md:14:Also refuses a
.local.*overlay outright (skills/setup/SKILL.md:110-112). A lane file is a prose ruleset rather than a keyed config, so "override entirely" may be the right semantics — but it is the exact thing the seam forbids, recorded nowhere.3.
songwriting— wholesale replacement (undeclared)plugins/songwriting/skills/setup/SKILL.md:26-28,39-43— first-match-wins with no merge; a consumer override freezes that template out of future plugin updates. The freeze behaviour is the sharper concern: it is a silent staleness trap, independent of the merge question.What a resolution looks like
For each: ratify (record as a declared exception in the layering owner doc, with its rationale) or correct (file a conformance issue against the plugin). A ratified exception should say what class of surface it applies to, so the next plugin facing the same shape has a rule rather than a precedent to argue from.
Why this is human-gated
These are doctrine calls with no codebase-resolvable answer. Ruling on them changes what the convention means for every future surface, and #2 and #3 may be legitimate semantics the seam simply did not anticipate — correcting them could be the wrong move.
Related
source-controlconformance; unaffected by these rulingsBlocked on nothing.