docs(issue-tracker): codify closing-keyword, title, and comment house style - #124
Merged
Merged
Conversation
… style Closes six open decisions from the org's issue/PR consistency assessment: abstracts the personal-vs-org repo topology to point at github-iac's GovernedRepositories.cs instead of naming specific repos, codifies native GitHub closing keywords as the default with provisioning's stricter exception, documents issue titles as free text with no enforced prefix vocabulary, marks assignee-plus-lease claiming as explicitly deferred with an activation trigger, notes CODEOWNERS adoption as deferred while required_approving_review_count stays 0, and codifies the 🤖/citation/🔒 conventions as optional documented patterns. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
Claude finished @kyle-sexton's task in 0s —— View job I'll analyze this and get back to you. |
kyle-sexton
marked this pull request as ready for review
July 15, 2026 18:08
|
Claude finished @kyle-sexton's task in 0s —— View job I'll analyze this and get back to you. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: cede416034
ℹ️ 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".
The deferral rationale claimed a CODEOWNERS file is inert without required reviews. GitHub auto-requests review from matching owners independently of branch-protection enforcement; requiring code-owner approval before merge is a separate, optional setting. Adoption stays deferred because a single-maintainer org has no second owner for the auto-request to route to, not because the file would have no effect.
|
Claude finished @kyle-sexton's task in 0s —— View job I'll analyze this and get back to you. |
4 tasks
kyle-sexton
added a commit
that referenced
this pull request
Jul 16, 2026
…racts Register runner-input contracts for the link-check and Pulumi version-drift reusables so strict private consumers can route these privileged scheduled maintenance lanes through the governed selector instead of a fixed hosted image. Each names an exact allowedCallerPermissions of contents:read plus issues:write -- the narrow write-capable caller token its rolling tracking-issue lane needs -- honored only while genuinely selector-routed; the reusables' own permissions are unchanged. Wave 2 of the private-repo hosted-floor elimination (melodic-software/github-iac#78), consuming the reusable-source runner inputs added in ci-workflows PR #124. The contract SHAs are a `feedface...` placeholder pending that PR's squash-merge. Finalize by replacing that value in policy.json, the runner-policy test constant, and the README review note with the merged main commit SHA (all three reusables share it). standards-sync is intentionally deferred: its App-token caller is read-only, so runner-input's write-requiring allowedCallerPermissions waiver does not fit cleanly, and its registration awaits a contract-model decision. hostedExceptionReasons is unchanged; enum-tightening remains the separate last wave. Update the runner-policy golden fixture to assert both new contracts and adjust the README review note and fixed-hosted list. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01K3QehVwmWzkBLpKokNCkkt
kyle-sexton
added a commit
that referenced
this pull request
Jul 16, 2026
Replace the `feedface...` placeholder with ci-workflows PR #124's squash-merge commit 3dfb18452a8c6059a22e62456390d84feb10b42f, which carries the governed runner input for all three reusables, in policy.json (both contract keys), the runner-policy golden-fixture constant, and the README review note. The registered link-check and pulumi-version-drift-check runner-input contracts now pin the reviewed reusable source. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01K3QehVwmWzkBLpKokNCkkt
kyle-sexton
added a commit
that referenced
this pull request
Jul 16, 2026
…racts (#156) ## Summary Register `runner-input` contracts in `components/runner-policy/policy.json` for two floor-conversion reusables, both pinning ci-workflows PR #124's squash-merge commit `3dfb18452a8c6059a22e62456390d84feb10b42f` (the reviewed source that carries the governed `runner` input): - `link-check.yml` — `allowedInputs: ["runner", "args"]`, `allowedCallerPermissions: {contents: read, issues: write}`. - `pulumi-version-drift-check.yml` — `allowedInputs: ["runner"]`, `allowedCallerPermissions: {contents: read, issues: write}`. Each carries `allowedCallerPermissions` because its rolling tracking-issue lane writes issues through the caller `GITHUB_TOKEN`; the waiver is honored only while the call is genuinely selector-routed, and the reusables' own permissions are unchanged. This also corrects the now-false README claim that the Pulumi version-drift monitor "remains fixed to explicit GitHub-hosted images," adds a review note for both contracts, and extends the runner-policy golden fixture (`runner-policy.test.mjs`) to assert them. `hostedExceptionReasons` is **unchanged** — enum-tightening is the separate last wave and must not land before every consumer has dropped its floor exceptions. ## Why Wave 2 of the private-repo hosted-floor elimination (melodic-software/github-iac#78, decision of record 2026-07-16). ci-workflows PR #124 (Wave 1) added the governed `runner` input to these reusables' source; this PR registers the reviewed contracts so each private consumer (Wave 3) can add a `select-runner` job, route the reusable to the fleet, and drop its `hosted-control-plane` / `privileged-control-plane` exception. `policy.json` is the upstream source of truth synced to five consumers, so the contract belongs here. ## Deferred — standards-sync The third floor-conversion reusable, `standards-sync.yml`, is **intentionally not registered here.** Its caller `GITHUB_TOKEN` is read-only (`sync.yml` declares `permissions: contents: read`; all writes go through a minted App token), but a `runner-input` contract that passes secrets must carry `allowedCallerPermissions`, which the validator requires to include at least one `write` (`runner-policy.mjs:186-198`). There is no honest caller write to declare, so registering it would bake a least-privilege inaccuracy into the managed contract. This is a contract-model gap (the secrets waiver is coupled to a write requirement) routed to the runner-policy component owner for a "reviewed secrets + read-only caller" contract shape; `standards-sync` keeps its hosted-only contract until that lands. ## Test plan - [x] `npm run test:runner-policy` — passing with two new golden assertions on the registered contracts: 143/143 on this branch base, and 146/146 verified against a local rebase onto current `main` (post #155 review-tier admission, #153 dependabot-policy component). - [x] `npm run lint:runner-policy` (`GITHUB_REPOSITORY=melodic-software/standards`) — `Runner policy passed` on both the branch base and the current-`main` rebase (the #155 validator). - [x] biome, markdownlint — clean (pre-commit). - [x] Merge SHA finalized to `3dfb184…` (PR #124 squash-merge) across `policy.json` (both contract keys), the golden-fixture constant, and the README review note. ## Related No linked standards issue. Cross-repo references: - Wave 2 of melodic-software/github-iac#78 (private-repo hosted-floor elimination epic). - Depends on melodic-software/ci-workflows#124 (merged) — source of the pinned reusable SHA. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01K3QehVwmWzkBLpKokNCkkt --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Codifies six open decisions from the org's issue/PR consistency assessment into
conventions/process/issue-tracker.md:entities-governance-doc-topology-reference-style— abstracts the personal-vs-org repo-topology prose (no more namedmelodic-software/github-iac/kyle-sexton/github-iaclinks); points atgithub-iac'sGovernedRepositories.csas the sole source of truth for which repositories are governed and how.entities-closing-keyword-house-style-convention— codifies native GitHub closing keywords (Closes/Fixes/Resolves#N) as the default house style, withprovisioning's stricter requirement (native keyword plus a manual## Relatedsection, per decisions fix(lychee): exclude private constellation repos from the online lane #58/feat(dotnet): enable NuGet lock files in the overlay #59) as the one named exception.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.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).metadata-codeowners-adoption— adds a one-line note that CODEOWNERS adoption is deferred, contingent on decision feat: add lychee offline module and CI lane #11 (required_approving_review_countstaying at 0 org-wide) — CODEOWNERS is inert without required reviews.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 Enable NuGet lock files (RestorePackagesWithLockFile) in the .NET overlay #45's mechanism activates).Decisions Log: https://claude.ai/code/artifact/232ecdce-8316-4880-8c0a-dc3c7dcf3a63
Test plan
lefthook run pre-commit— typos, editorconfig, gitleaks, markdownlint all passkyle-sexton/namedgithub-iacrepo references — none remain🤖 Generated with Claude Code