Repository navigation
Closed
Feature
Copy link
Labels
priority: mediumReal value, no hard deadline; normal backlog flow.Real value, no hard deadline; normal backlog flow.
Description
Parent
Refs #5948
Depends on
- fix(git-hooks): run hook entries and the commit-msg hook without calling bash by name #9774
- refactor(guardrails): resolve the commit convention from docs/conventions/source-control.yaml #9727
Outcome
An operator can gate their own commits in a repository whose team tracks no commit convention, without changing
the repository's tracked files: a subject_pattern (one POSIX ERE) in the personal layer
<home>/source-control.local.yaml (gitignored, or excluded through .git/info/exclude) applies only when the
team layer sets none, and is never merged with a team pattern.
Decisions
- Owner, 2026-10-13: fallback-only; a user pattern applies only when the team tracks none and never weakens or
merges with a team pattern. Amend the resolver's policy-floor header anddocs/conventions/commit-convention
together, and test all three consumers:block-noncanonical-commit, the Claude Code content gate
(block-convention-violation) and the commit-msg hook. - ADR 0075: the personal layer is
<home>/<concern>.local.<ext>, and a personal value may only tighten a policy
floor. Adding enforcement where the team sets none is tightening. A git hook cannot readuserConfig, so the
personal file is the source. - Owner standing direction §10, 2026-10-31: person-approval holds against our own actors come off during the
throughput phase. This change only adds a fallback gate and touches no secret, billing or destructive host
action, so the done-when item asking the PR body forHold: a human merges thisis dropped.
Key interfaces
lib/resolve-convention-pattern.sh(canonical) and copies,docs/conventions/commit-convention, the three
consumers above.
Done when
-
scripts/run-test-file.sh lib/resolve-convention-pattern.test.shexits 0 with cases: personal pattern used when the team sets none; team pattern used and personal ignored when both exist; neither gives no enforcement. -
scripts/run-test-file.shexits 0 onplugins/guardrails/hooks/block-noncanonical-commit.test.sh,plugins/guardrails/hooks/block-convention-violation.test.shandplugins/guardrails/git-hooks/commit-msg-convention.test.sh, each with a personal-layer case. -
grep -n "local" docs/conventions/commit-convention/README.mdprints the amended layer rule, and the resolver header states the fallback-only personal layer. -
scripts/sync-shared-copies.sh --checkexits 0. -
scripts/check-changelog-fragments.sh --check-required origin/mainexits 0.
Metadata
Metadata
Assignees
Labels
priority: mediumReal value, no hard deadline; normal backlog flow.Real value, no hard deadline; normal backlog flow.
Type
Fields
No fields configured for Feature.
Activity
melodic-automation-lanes commentedon Oct 24, 2026
Not admitted to the issue lane yet: blocker #9774 is not closed as completed by a listed human or a merge; blocker #9727 is not closed as completed by a listed human or a merge.
melodic-automation-lanes commentedon Oct 31, 2026
This records a re-fire of an earlier refusal, not a new refusal. The lanes kill switch stopped run 41221402842, the work-resolve-issue run that
agent-readystarted, before it did any work; that run ended at 2026-10-31T17:04:41Z. work-unblock has now removed and addedagent-readyback to start a fresh run. A kill-switch refusal is no fault in this issue or the lanes, so it never counts against later re-fires; after limits.limit-stops-per-issue of them since a person last addedagent-readyor a run last reported, work-unblock waits longer before each one, up to 24 hours.github-actions commentedon Oct 31, 2026
github-actions commentedon Oct 31, 2026
melodic-automation-lanes commentedon Nov 1, 2026
The lanes App's pull request #11697 for this issue was closed without merging. work-unblock removed
status: readyandagent-ready, so the hourly triage sweep sends it back to intake triage, which decides what work is left and admits it again.