Skip to content

Codex: a recovered error event no longer fails the session #1343

Codex: a recovered error event no longer fails the session

Codex: a recovered error event no longer fails the session #1343

Workflow file for this run

name: advisory-review

Check warning on line 1 in .github/workflows/review.yml

View workflow run for this annotation

GitHub Actions / advisory-review

Workflow execution policy warning (evaluate mode)

On November 2, 2026, GitHub will restrict `pull_request_target` on public repositories by default. To continue allowing the event trigger, configure an Actions policy. Learn more: https://gh.io/securely-using-pull_request_target#default-policy-for-pull_request_target
# Advisory review runs on OPEN and on demand (label), not on every push — a
# session per push is the minutes burner.
#
# Wide first round, narrow convergence (docs/design/reviewer-infra.md): a
# single reviewer satisfices, so the FIRST round (opened/reopened) fans out
# three distinct-lens terra opinions and a summarizer posts the ONE merged
# round. Label-triggered rounds (the convergence loop) stay a single full-
# rubric session — the fix-review-fix tail is serial by nature.
on:
pull_request_target:
types: [opened, reopened, labeled]
permissions:
contents: read
pull-requests: write
jobs:
# --- wide first round: a general session + distinct lenses, emit-only ---
lens:
if: github.event.action != 'labeled'
strategy:
fail-fast: false
matrix:
# `general` (the full rubric, no lens) ALWAYS keeps its seat — the
# plain-bugs / unknown-unknowns catcher. The rest is THE era knob:
# pick lenses (from review.REVIEW_LENSES) to match what the current
# push is about — infra era: credentials/deployment/lifecycle; science
# era: swap toward measurement. coverage earns its seat by being the
# one class serial review never catches.
lens: [general, credentials, deployment, lifecycle, coverage, prose]
uses: outerloop-science/outerloop/.github/workflows/advisory-review-agent.yml@main
with:
bot_login: 'outerloop-science[bot]'
bot_aliases: 'outerloop-autoresearch[bot], agentic-learning-bot'
backend: hermes
# openai-direct: same token rate, no OpenRouter platform fee (the org's
# OpenAI account is tax-exempt); model id is provider-native
hermes_provider: openai
model: gpt-5.6-terra
# `general` is a real lens name meaning the full rubric (no empty-string
# ternary — its GitHub Actions form silently falls through to the else)
lens: ${{ matrix.lens }}
opinion_id: lens-${{ matrix.lens }}
post: false
secrets:
openai_reviewer_key: ${{ secrets.OPENAI_REVIEWER_KEY }}
summarize:
needs: lens
if: ${{ !cancelled() && github.event.action != 'labeled' }}
uses: outerloop-science/outerloop/.github/workflows/advisory-review-summarize.yml@main
with:
bot_login: 'outerloop-science[bot]'
bot_aliases: 'outerloop-autoresearch[bot], agentic-learning-bot'
backend: hermes
hermes_provider: openai
model: gpt-5.6-terra
opinion_label: terra
# keep in lockstep with the lens matrix above
expected_lenses: general credentials deployment lifecycle coverage prose
secrets:
openai_reviewer_key: ${{ secrets.OPENAI_REVIEWER_KEY }}
# --- convergence rounds: one full-rubric session, label-triggered ---
review:
if: github.event.action == 'labeled' && (github.event.label.name == 'outerloop:review' || github.event.label.name == 'autoresearch:review')
uses: outerloop-science/outerloop/.github/workflows/advisory-review-agent.yml@main
with:
bot_login: 'outerloop-science[bot]'
bot_aliases: 'outerloop-autoresearch[bot], agentic-learning-bot'
backend: hermes
hermes_provider: openai
model: gpt-5.6-terra
opinion_label: terra
secrets:
openai_reviewer_key: ${{ secrets.OPENAI_REVIEWER_KEY }}