feat: adopt Phase 3 hygiene lanes; add canonical comment-hygiene module - #25
Conversation
Adopts the four ci-workflows Phase 3 cross-cutting hygiene lanes by SHA-pin and
lands the canonical comment-hygiene config module upstream (standards is the
source of truth; ci-workflows holds a vendored byte-identical copy).
Lanes (ci.yml + ci-status aggregator):
- exec-bit, machine-specific-paths, eol-renormalize @ da704ff
- comment-hygiene @ 04a6dac — excludes intentionally-bad fixtures and the module
(their content references the marker tokens), and runs the module fixtures test
New module modules/comment-hygiene/:
- comment-hygiene-patterns.sh — the policy library, byte-identical to the
ci-workflows vendored copy (lockstep, LF). Org-default generalized policy.
- README.md, comment-hygiene.test.sh (shell harness), and
fixtures/comment-hygiene/{good,bad} matching the existing module convention.
exec-bit surfaced 15 shebang scripts committed as mode 100644 (Windows
core.filemode drift); chmod +x brings them to 100755 — the harness invokes them
via `bash`, so this is policy compliance, not a behavior change. Fixtures carry
no shebang and stay 100644.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 8b4f5ad3c4
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| violations=$((violations + 1)) | ||
| continue | ||
| fi | ||
| done < <(awk '/^[[:space:]]*(\/\/|#)/ { print NR ":" $0 }' <<<"$content") |
There was a problem hiding this comment.
Because the policy only feeds lines whose first non-space token is # or // into the matcher, deferred-work markers in ordinary trailing comments are silently accepted, e.g. value=1 # TODO: remove workaround in shell/Python/YAML/TOML or const x = 1; // FIXME in JS/TS. The new gate is described as preventing these markers in code comments, so this leaves a common production-comment path unenforced while the fixture test still passes because it only covers full-line comments.
Useful? React with 👍 / 👎.
…ncements built (#38) ci-workflows #25–#28 built the action enhancements the first-wave parity-gap lanes needed (editorconfig git-tracked discovery, shellcheck severity, shfmt action, powershell fail-on-no-files + #1708 retry, gitleaks scan-mode + redact, pyright warnings-as-errors toggle). medley consumed them in a second cutover wave (PR #1161): six lanes moved from inline to SHA-pinned references. Mark the enhancements built in plan.md Phase 4; record the second wave in rollout.md. Still deferred: comment-hygiene widening, reference-integrity heading-cite, Pester, skill-governance, typescript, dotnet. Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… style (#124) ## Summary Codifies six open decisions from the org's issue/PR consistency assessment into `conventions/process/issue-tracker.md`: - **#9** `entities-governance-doc-topology-reference-style` — abstracts the personal-vs-org repo-topology prose (no more named `melodic-software/github-iac` / `kyle-sexton/github-iac` links); points at `github-iac`'s `GovernedRepositories.cs` as the sole source of truth for which repositories are governed and how. - **#23** `entities-closing-keyword-house-style-convention` — codifies native GitHub closing keywords (`Closes`/`Fixes`/`Resolves` `#N`) as the default house style, with `provisioning`'s stricter requirement (native keyword plus a manual `## Related` section, per decisions #58/#59) as the one named exception. - **#25** `naming-issue-title-vocabulary-governance` — codifies issue titles as free text with no enforced prefix vocabulary (no `[CC]`-style conventional-commit tags), documenting the existing silence as a deliberate choice. - **#45** `entities-assignee-claiming-guidance-relevance` — keeps the existing assignee-plus-lease claiming guidance but marks it explicitly deferred, with an activation trigger (required reviewers / multi-maintainer assignment contention). - **#48** `metadata-codeowners-adoption` — adds a one-line note that CODEOWNERS adoption is deferred, contingent on decision #11 (`required_approving_review_count` staying at 0 org-wide) — CODEOWNERS is inert without required reviews. - **#49** `comments-codify-human-conventions` — codifies three optional documented conventions: a 🤖 footer marking bot-authored comments, citing evidence when closing on it, and a 🔒 marker for claimed issues (explicitly framed as the lightweight interim signal until #45's mechanism activates). Decisions Log: https://claude.ai/code/artifact/232ecdce-8316-4880-8c0a-dc3c7dcf3a63 ## Test plan - [x] `lefthook run pre-commit` — typos, editorconfig, gitleaks, markdownlint all pass - [x] Grepped the file for residual `kyle-sexton`/named `github-iac` repo references — none remain - [ ] Human review of tone/placement against the rest of the process conventions 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Adopts the four ci-workflows Phase 3 cross-cutting hygiene lanes by SHA-pin, and lands the canonical
comment-hygieneconfig module upstream here (standards is the source of truth; ci-workflows holds a vendored byte-identical copy).Lanes adopted (ci.yml + ci-status aggregator)
exec-bitda704ffmachine-specific-pathsda704ffeol-renormalizeda704ffcomment-hygiene04a6dacNew module
modules/comment-hygiene/comment-hygiene-patterns.sh— the policy library, byte-identical to the ci-workflows vendored copy (lockstep, LF-preserved). Org-default generalized policy.README.md,comment-hygiene.test.sh(shell harness), andfixtures/comment-hygiene/{good,bad}— matching the existing module convention (README + test + fixtures + amodule fixtures teststep).exec-bit mode fixes
exec-bitsurfaced 15 shebang scripts committed as mode 100644 — Windowscore.filemode=falsedrift.chmod +xbrings them to 100755. The harness invokes them viabash, so this is policy compliance, not a behavior change. Fixtures carry no shebang and stay 100644.Verification (local, Git Bash)
All four lanes pass against the working tree: exec-bit clean after the mode fixes, machine-specific-paths clean, comment-hygiene clean with the exclusion (confirmed the exclusion masks only the bad fixture + module, nothing real), module test green, new files LF,
actionlintclean. Thecomment-hygiene.test.shcarries only an SC1091 info finding — identical to the existingeditorconfig.test.sh.🤖 Generated with Claude Code