Skip to content

feat(config): adopt platform's .config/<concern>/ bucket layout - #14

Merged
justinmerrell merged 1 commit into
mainfrom
feat/config-concern-buckets
Aug 19, 2026
Merged

feat(config): adopt platform's .config/<concern>/ bucket layout#14
justinmerrell merged 1 commit into
mainfrom
feat/config-concern-buckets

Conversation

@justinmerrell

Copy link
Copy Markdown
Contributor

Summary

musher-dev/platform has converged on a dotted .config/ directory with concern buckets (.config/<concern>/<tool>.<ext>). This PR brings the template in line so both Musher repos share one convention.

File moves (git mv, history preserved):

From To
.config/markdownlint.jsonc .config/markdown/markdownlint.jsonc
.config/yamllint.yaml .config/yaml/yamllint.yaml
.config/actionlint.yaml .config/actions/actionlint.yaml
.config/codespell.cfg .config/spelling/codespell.cfg

lefthook.yml stays at the .config/ top level: lefthook's config search (lefthook.*.lefthook.*.config/lefthook.*) does not descend into subdirectories, so bucketing it would silently disable every hook.

Callers updated: taskfiles/lint.Taskfile.yml and .config/lefthook.yml. CI needs no change — the Lint job runs task lint:all.

Governance (repo config check), now CFG-01..CFG-08 to match platform:

  • Walks .config/ recursively; index (CFG-03) and orphan (CFG-04) checks key on bucket-relative paths
  • CFG-07 extended: a file at the .config/ top level outside {README.md, lefthook.yml, lefthook-local.*} must move into a bucket
  • New CFG-08: executable suffixes are rejected — .config/ holds declarations, not programs

Docs: .config/README.md index and rules ("Flat" → "Bucket by concern"), CONFIGURATION.md decision tree / quick reference / directory map, .repo/README.md policy table.

Verification

  • repo check passes on the new layout (all 6 policies)
  • Negative test: a planted top-level foo.yaml, orphaned bucket file, and .sh file raised CFG-07, CFG-03/04, and CFG-08 respectively
  • No stale flat-path references remain (grep -rE '\.config/(actionlint|codespell|markdownlint|yamllint)' is clean)
  • Lint tools are devcontainer-only, so task lint:all and the hook run are covered by this PR's CI

🤖 Generated with Claude Code

Mirror musher-dev/platform's converged convention: tool configs live in
concern buckets (actions/, markdown/, spelling/, yaml/), with lefthook.yml
alone at the top level -- lefthook's config search does not descend past
.config/lefthook.*, so bucketing it would silently disable every hook.

The governance policy now walks .config/ recursively, keys the index and
caller checks on bucket-relative paths, extends CFG-07 to files misplaced
at the .config/ top level, and adds CFG-08 rejecting executables -- parity
with platform's CFG-01..CFG-08.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@justinmerrell
justinmerrell merged commit 5fab231 into main Aug 19, 2026
7 checks passed
@justinmerrell
justinmerrell deleted the feat/config-concern-buckets branch August 19, 2026 00:00
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.

1 participant