Skip to content

docs: apply config review fixes and declare versioning - #16

Merged
harleypig merged 4 commits into
masterfrom
feature/maple-walnut-willow
Jul 31, 2026
Merged

harleypig merged 4 commits into
masterfrom
feature/maple-walnut-willow

Conversation

@harleypig

Copy link
Copy Markdown
Owner

Summary

Applies the config-engineer's review findings on the .claude/ scaffold landed in #9.

  • Versioning moved to .claude/CONVENTIONS.mdrelease-tag reads that file literally (SKILL.md:31); it was in WORKFLOW.md, where the skill would never have found it. Its fallback is inferring from git tag -l, and this repo's only tag is a lightweight non-semver end_refactor, so inference yields nothing. Now complete against git.md's four requirements: method, tag pattern, bump policy, and what pushing a tag triggers (nothing — no release workflow).
  • The deferred-work table now cites Complete branch protection once CI exists (required checks + layers 2/3) #10, Declare deferred sentinels once their preconditions are met #11, Add a tag protection ruleset when v2.0.0 is cut #12 rather than recording decisions nowhere the repo's own tracker would surface them. The repo declares tracker: github; a .claude/ table is a decision record, not a work item.
  • Deduped prose that restated the ruleset JSON and the team-managed hook mechanics — three places to update otherwise. Keeps the repo-specific half (why required_status_checks is absent; the file→role mapping) and adds the re-apply command with ruleset id 20078758.
  • Fixed the working-tree read semantics, which described default-branch behaviour — the very thing the sentence contrasts itself against. It takes effect as soon as the sentinel is on disk, including on the branch that adds it.
  • Added .markdownlint.jsonmarkdownlint.md has no global fallback, and the feat: protect master and scaffold repo agent config #9 files already failed (MD060 ×4, MD013 ×2).
  • Moved to .claude/CLAUDE.md + sibling imports, matching the other eight repos in the fleet.

The v0 question is deliberately left open

Tagging v2.0.0 as the first tag skips the v0 alpha line entirely, so strict semver would bind from tag one. git.md says the 0→1 crossing is "a major decision in its own right… crossed on purpose, never by accident" — and jumping to v2.0.0 crosses it implicitly.

CONVENTIONS.md records both readings and picks neither, with an explicit instruction not to tag on the agent's own judgment. v2 is in limbo until it is ready; this is answered when the tag is actually cut.

Caught during the work

dotagents is private; this repo is public. Reference-style links to github.com/harleypig/dotagents/blob/master/rules/… would be dead links for every outside reader and would advertise a private path. Global rules are now referenced bare (`git.md`), matching the existing convention. Standing constraint: do not link dotagents from this repo.

Test plan

  • .claude/CLAUDE.md imports @WORKFLOW.md and @CONVENTIONS.md; both resolve against the containing file's directory
  • Root CLAUDE.md removed; git recorded it as a rename
  • markdownlint exits 0 across all tracked .md, and each commit's tree lints clean independently
  • All prose within 78 columns (MD013 allows 200, so this was checked directly)
  • No fixup!/squash! commits survived the autosquash
  • No dotagents reference anywhere in the public tree
  • Reviewer confirms the open v0 decision reads as genuinely undecided

Not done, deliberately

— agent-authored by Claude

harleypig and others added 4 commits July 30, 2026 20:50
Every repo owns its own markdown config -- the global
dot-general/.markdownlintrc fallback was retired (rules/markdownlint.md),
so without a repo-local file the .claude/ docs lint against stock
defaults and fail on cosmetic table pipes and long table rows.

Matches the house settings used by dotfiles and dotagents: MD060 off
(pipe alignment is cosmetic churn), MD013 with tables/code_blocks
exempt, MD004/MD033/MD041 off, MD024 siblings_only.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The release-tag skill reads .claude/CONVENTIONS.md literally for the
declared method; the section was in WORKFLOW.md, where it is never
found. Its fallback -- infer from `git tag -l` and confirm -- yields
nothing here, since the only tag is a lightweight non-semver
`end_refactor`.

Move the section to its expected home and complete it. git.md
*Versioning & tags* requires four things; only method and tag pattern
were present. Adds the bump policy (the compatibility surface is the
git-notes format, the handle_metadata CLI, and the hook contract), what
pushing a tag triggers (nothing in this repo -- no release workflow --
which is exactly the fact that makes the required confirmation cheap),
and the unsigned signing posture.

v2.0.0 is recorded as the *intended* version, not a committed one; the
tag does not land until the modernization is ready to ship.

Records as OPEN, for the operator to answer at cut time, whether the
line should start at v2.0.0 or at v0.y.z. Tagging v2.0.0 first skips the
v0 alpha line, binding strict semver from tag one and crossing the 0 -> 1
stability jump implicitly -- which git.md says must be crossed on
purpose, never by accident. Both readings are stated; neither is chosen.

Also records that no QA doc and no TESTS.md exist yet, and that no issue
tracks them, so the absence reads as a known gap.

Relates to #10, #12

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Three things.

Dedupe prose that restated canonical facts. The branch-protection
section listed the rules already in .github/rulesets/protect-master.json
and live on GitHub -- three places to update when CI adds required
checks. Link the JSON as the record of *what* is enforced and keep only
the repo-specific *why* (that required_status_checks is deliberately
absent, which the JSON cannot say). Likewise the orchestration section
restated the hook mechanics and exemption set from
team-managed-delegation.md; keep the half that is genuinely local -- the
file-to-role mapping -- and link the rest.

Add the ruleset re-apply command and id (20078758), following the
precedent in dotfiles' own WORKFLOW.md, so the JSON is actually
actionable rather than just a copy on disk.

Fix the working-tree read semantics. The text said the team-managed
sentinel takes effect "as soon as it lands on master and the checkout is
updated" -- which describes default-branch semantics, the very thing the
sentence contrasts itself against. It takes effect as soon as the
sentinel is on disk, including on the branch that adds it.

Fold the deferred sentinels, the deferred protection layers, and the
deferred tag ruleset into one table whose cells cite #10, #11, and #12,
so the table is a decision record pointing at tracked work rather than a
parallel backlog. resolve-task: autonomous now records its real
precondition -- a test suite, not merely CI reporting -- and that it too
is read from the default branch.

Relates to #10, #11, #12

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Every other repo in the fleet uses .claude/CLAUDE.md with sibling
imports (dotfiles, private_dotfiles, ansible-stuff, bw-serve-client,
harleydev, linode-foundation-fabric, mxroute-foundation-fabric,
terraform-provider-mxroute); gitperms was the lone root CLAUDE.md with
an @.claude/ prefixed import. Adding CONVENTIONS.md meant a second
prefixed import, so converge now rather than entrench the odd shape.

Claude Code accepts a project CLAUDE.md at either ./CLAUDE.md or
./.claude/CLAUDE.md, and relative @path imports resolve against the
directory of the file containing them -- so @WORKFLOW.md and
@CONVENTIONS.md resolve inside .claude/.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@harleypig
harleypig force-pushed the feature/maple-walnut-willow branch from 88a8c49 to 0c152ea Compare July 31, 2026 02:51
@harleypig
harleypig merged commit 79c1e6a into master Jul 31, 2026
2 checks passed
@harleypig
harleypig deleted the feature/maple-walnut-willow branch July 31, 2026 02:52
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