Repository navigation
feat(pr-pipeline): add a per-repo red-main remedy key - #8948
Conversation
red-main.remedy is rollback (default, the current revert rule) or fail-forward, under which the report plans no revert: the decision is human, the reason names the remedy, and a person or a fix pull request repairs main. Owner decision W-51 (2026-10-21). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
claude-security-review reviewed Security review of PR #8948 at c540480No security findings. The PR adds an optional
|
|
claude-review reviewed No findings. I read the full diff,
Manifest checks: the diff touches no |
No related issue: owner decision W-51 (2026-10-21)
Summary
Adds
red-main.remedy, a per-repository setting for what happens after a post-merge failure:rollback(the default, which keeps the current revert rule) orfail-forward. The report is still report-only.Fix
red-main.mjs:remedyjoinsRED_MAIN_DEFAULTS(rollback) andVALID(rollbackorfail-forward; any other value falls back to the default). Underfail-forward,decide()returnshumanwith one reason, "the remedy is fail-forward: a person or a fix pull request repairs main".report.mjs:plannedRevertruns only underrollback, so a fail-forward report has no planned revert.renderReport: the culprit line and the "A person decides because:" reasons used to render only when there was a revert, which would have dropped the remedy reason. They now render whenever a culprit was decided, and only the revert block requires a revert.decision=humanalready matchesMARKER_PATTERN, and since fail-forward never producesdecision=auto-revert, those decisions count toward neither the daily cap nor "already decided".pr-pipeline.schema.json): addsremedywith an enum and a default.pr-pipeline.yamlsetsremedy: rollbackwith a comment.remedyrow to the Red main key table. The deferred "post-merge failure remedy" bullet now says it is the per-repositoryred-main.remedykey. No ADRs were edited.Note:
docs/conventions/pr-pipeline.yamlis a lane-power file, so a human merges this PR.Verification
decide, and the fail-forward report). After the implementation:node --test red-main.test.mjs report.test.mjs workflow.test.mjspasses 49/49.node --test .github/actions/resolve-config/live-config.test.mjs resolve-config.test.mjs: 102/102.scripts/check-convention-yaml.sh --check: 5 files validate against their schemas.scripts/check-affected.sh: 9 passed, 4 skipped; the lefthook pre-push check-affected passed.scripts/check-line-citations.py: clean.Related
docs/conventions/pr-pipeline/README.md#red-main.🤖 Generated with Claude Code