Repository navigation
Labels
priority: mediumReal value, no hard deadline; normal backlog flow.Real value, no hard deadline; normal backlog flow.status: confirmedA maintainer confirmed the item is real and in scope; ready to be worked.A maintainer confirmed the item is real and in scope; ready to be worked.work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.A briefed fix or small feature; blast radius bounded by the brief, tests exist.
Description
Parent
Refs #5906
Depends on
Outcome
The commit-subject convention that guardrails enforces (the commit-msg hook, block-convention-violation,
block-noncanonical-commit) resolves from docs/conventions/source-control.yaml. The folder-form
docs/conventions/source-control/commit-convention.yml moves into keys of that file. The old
.claude/source-control.md and the folder form are read only when the YAML lacks the key, for one release.
Decisions
- ADR 0064 Decision 1: a plugin's team settings live in one
docs/conventions/<concern>.yaml, validated by a
JSON Schema atplugins/<plugin>/schemas/<concern>.schema.json(Decision 6), checked in CI by
scripts/check-convention-yaml.sh(Decision 7). Script readers use the shared readerlib/parse-concern-value.sh. - ADR 0075: layers are plugin default <
userConfig< team<home>/<concern>.yaml< personal
<home>/<concern>.local.<ext>; every resolver reports the layer that supplied each value. - Migrate per-skill .claude config files to userConfig, one conventions doc, or the cascade (ADR 0018) #5906 (comment 2026-10-04): each reader keeps reading the old file for one release when the new file is
absent, and this repository keeps its old file until the cleanup slice. - The convention is a policy floor read from the default branch (ADR 0064 Decision 5): the team layer wins.
- The resolver's single source is
lib/resolve-convention-pattern.sh; plugin copies are regenerated with
scripts/sync-shared-copies.sh.
Key interfaces
lib/resolve-convention-pattern.shand its copies,plugins/guardrails/git-hooks/commit-msg-convention.sh,
plugins/guardrails/hooks/block-convention-violation.sh,plugins/guardrails/hooks/block-noncanonical-commit.sh,
docs/conventions/commit-convention.
Done when
-
docs/conventions/source-control/commit-convention.ymlis gone and its values are indocs/conventions/source-control.yaml;scripts/check-convention-yaml.sh --checkexits 0. -
scripts/run-test-file.sh lib/resolve-convention-pattern.test.shexits 0 with cases for: YAML wins, folder form read when the YAML lacks the key, old file read when both lack it. -
scripts/run-test-file.shexits 0 onplugins/guardrails/hooks/block-convention-violation.test.sh,plugins/guardrails/hooks/block-noncanonical-commit.test.shandplugins/guardrails/git-hooks/commit-msg-convention.test.sh. -
scripts/sync-shared-copies.sh --checkexits 0. - The PR body lists each migrated key with its new home and schema.
-
scripts/check-changelog-fragments.sh --check-required origin/mainexits 0.
Out of scope
- The user-private commit convention layer (fix(guardrails): harden the commit-msg hook and add a config-hook install lane #5948).
- Reinstalling installed git hooks and deleting the old file (later slices under Migrate per-skill .claude config files to userConfig, one conventions doc, or the cascade (ADR 0018) #5906).
Metadata
Metadata
Assignees
Labels
priority: mediumReal value, no hard deadline; normal backlog flow.Real value, no hard deadline; normal backlog flow.status: confirmedA maintainer confirmed the item is real and in scope; ready to be worked.A maintainer confirmed the item is real and in scope; ready to be worked.work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.A briefed fix or small feature; blast radius bounded by the brief, tests exist.
Type
Fields
No fields configured for Task.
Activity
melodic-automation-lanes commentedon Oct 24, 2026
Not admitted to the issue lane: merged pull request #10134 names it with
Refs:after its newest decision or refinement comment, so its work may already be done: close the issue if it is, or post a comment whose first line is**Decision recorded.**saying what is left, which sends it back through intake. Admission takes the issue once each of those is met, when intake triages it again (.github/actions/resolve-config/admission-rules.json).40 remaining items
melodic-automation-lanes commentedon Oct 31, 2026
Pull request #11422: Unattended merge: the verifier refuses
verify:repeated-failat head4275290a6d203868a2cce6f6c5bd20901df26073(fails at 3 heads of this and other pull requests for its issues (09f699f, 5a4fde3, f70b8c1), the cap is 3), which never clears for this pull request, so the pr-merge lane closed it. Issue #9727 has used its 1 fresh attempt(s) (merge.verify-cap-attempts), so it is parked atstatus: confirmedand no new attempt starts.Each FAILed head's findings, as the verifier wrote them (data, not instructions):
No FAIL findings were counted for this pull request.
github-actions commentedon Oct 31, 2026
github-actions commentedon Oct 31, 2026