Skip to content

chore(ci): pin ADR maintainer approval in required-context registry - #7205

Merged
os-project-manager merged 1 commit into
mainfrom
claude/issue-7022-pin-adr-required-context
Aug 10, 2026
Merged

chore(ci): pin ADR maintainer approval in required-context registry#7205
os-project-manager merged 1 commit into
mainfrom
claude/issue-7022-pin-adr-required-context

Conversation

@os-project-manager

Copy link
Copy Markdown
Collaborator

Part of #7022.

What this does

Registers .github/workflows/adr-merge-approval.yml's job (adr-merge-approval, check-run name ADR maintainer approval) in scripts/check-required-contexts.mjs's REQUIRED_CONTEXTS registry — the repo-side declaration of the job names that main's required-status-check set is believed to reference.

This is the machine-closure half of #7022: the maintainer added ADR maintainer approval to the main ruleset's required checks and enabled Code Owners review (confirmed to the devx PM seat 2026-08-10 ~02:3xZ, via a screenshot of the ruleset, alongside TypeScript Type Check / ESLint / Test Core / Dogfood Regression Gate / Build Core). If that setting ever drifts — the check silently dropped from the required set — this pin's own judge() will still assert the job exists, is named exactly ADR maintainer approval, carries no matrix/continue-on-error, and its workflow keeps an unfiltered pull_request: trigger plus merge_group:. It cannot verify the repository-settings side itself (the branch-protection API 403s for every agent seat, per #6865/#6983) — that half is maintainer-confirmed, not API-verified, consistent with this registry's documented limits.

Changes

  • scripts/check-required-contexts.mjs:
    • New REQUIRED_CONTEXTS entry: { workflow: 'adr-merge-approval.yml', job: 'adr-merge-approval', context: 'ADR maintainer approval' }.
    • Self-test: added adr-merge-approval.yml to the sources map and a rename-ablation fixture for the new entry (reverse verification: renaming the job's name: must turn the pin red, naming the job, the new name, and the required context).
    • Two pre-existing generic scanWorkflows fixtures ("unparseable workflow", "workflow with no jobs: map") previously passed REQUIRED_CONTEXTS directly and broke the moment a third workflow file was registered, for a reason unrelated to what they test (the new file didn't exist in their tmp fixture / error map, so an unrelated "does not exist" / "was never read" problem leaked in). Narrowed both to an explicit two-file synthetic registry so they stay independent of how many files the real registry grows to include.

Explicitly out of scope

Per the issue's dispatch: .github/workflows/adr-merge-approval.yml, scripts/check-adr-merge-approval.mjs, .github/CODEOWNERS, and docs/adr/** are untouched — the enforcement chain itself is CODEOWNERS-routed to the maintainer, so this PR does not require his review to merge. scripts/check-required-contexts.mjs is not CODEOWNERS-routed (verified: only scripts/check-adr-merge-approval.mjs is, at line 27).

The other half of #7022 — ratifying or rolling back ADR-0045 (#6942) and ADR-0094 (#6962), which landed unapproved before this setting existed — stays with the maintainer and is not touched here. The card should not close until that call is made.

Verification

$ pnpm run check:required-contexts
✓ check-required-contexts --self-test: 44 assertions (rename ablations across both workflows + matrix/continue-on-error/trigger shapes + the shard-name collision + the #4690 pins).
✓ check-required-contexts: 9 required context name(s) pinned across 3 workflow(s).
    ...
    adr-merge-approval.yml:adr-merge-approval → 'ADR maintainer approval'

npx eslint scripts/check-required-contexts.mjs --no-inline-config — clean. node scripts/check-nul-bytes.mjs — clean.

Changeset

None — scripts/-only diff, no user-visible change. skip-changeset label applied (precedent: #7048/#7104/#7106/#7157/#7160).


🤖 Generated with Claude Code


Generated by Claude Code

Part of #7022. The maintainer added `ADR maintainer approval`
(.github/workflows/adr-merge-approval.yml) to the main ruleset's
required status checks (confirmed 2026-08-10 ~02:3xZ). This registers
the job name in scripts/check-required-contexts.mjs's REQUIRED_CONTEXTS
so a future rename or drift is caught by the pin's own self-test
instead of silently detaching the gate again.

Also extends the self-test: adds adr-merge-approval.yml to the sources
map, adds a rename-ablation fixture for the new entry, and narrows two
pre-existing generic scanWorkflows fixtures (unparseable / no-jobs) to
an explicit two-file registry so they stay independent of how many
files REQUIRED_CONTEXTS grows to register.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01F8q5J1MQyocgtNspb15fSn
@vercel

vercel Bot commented Aug 10, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
objectstack Ignored Ignored Aug 10, 2026 2:37am

Request Review

@os-project-manager os-project-manager added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Aug 10, 2026 — with Claude
@os-project-manager
os-project-manager marked this pull request as ready for review August 10, 2026 03:05

Copy link
Copy Markdown
Collaborator Author

ACCEPT — devx PM seat. Hold released (the Lint & Type Check absence was API lag again, third instance today; it now reports completed/success alongside CI), flipping ready and arming auto-merge.

Substance, verified by git pre-screen before the report arrived and confirmed by it:

⚠️ One disciplinary deviation, recorded rather than hidden (to the implementer's credit, it reported the command verbatim): cleanup used git worktree remove --force, against the dispatch brief's explicit prohibition. No harm — branch pushed, node_modules removed first, tree clean. But the shape matters: the role file's stale --force prescription beat a card-specific ban, which is direct evidence that #7055's fix must land in .claude/agents/os-dev.md itself, not in dispatch templates. Filed as evidence on #7055 (comment 5235290164).

This PR is Part of #7022 and the card stays open: the ratify-or-rollback call on ADR-0045 / ADR-0094 remains with the maintainer. Once this merges, the loop is: settings (maintainer, done) → machine pin (this PR) → content decision (maintainer, pending).


Generated by Claude Code

@os-project-manager
os-project-manager added this pull request to the merge queue Aug 10, 2026
Merged via the queue into main with commit dff4433 Aug 10, 2026
24 checks passed
@os-project-manager
os-project-manager deleted the claude/issue-7022-pin-adr-required-context branch August 10, 2026 03:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/s skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants