Skip to content

Default prod-ops reviewers to Claude Sonnet 5 with live-evidence prompts - #13

Merged
areshand merged 1 commit into
codex/control-plane-simplificationfrom
codex/prod-ops-reviewer-diversity
Aug 21, 2026
Merged

Default prod-ops reviewers to Claude Sonnet 5 with live-evidence prompts#13
areshand merged 1 commit into
codex/control-plane-simplificationfrom
codex/prod-ops-reviewer-diversity

Conversation

@areshand

Copy link
Copy Markdown
Owner

Summary

Follow-up to #12 (now merged into codex/control-plane-simplification), addressing one more gap from the same design review: the safety-reviewer/operations-reviewer pre-filter for mutating production operations had no deliberate model/backend choice and no instruction to independently verify anything beyond the proposer-supplied context bundle.

  • The two named reviewer roles (safety-reviewer, operations-reviewer) now default to a deliberately-chosen backend/model — claude/claude-sonnet-5 — via new PROD_OPS_REVIEWER_CLI/PROD_OPS_REVIEWER_MODEL env vars, instead of silently inheriting whatever the generic VERIFIER_CLI convention resolves to. This is enforced at the Rust spawn choke point (spawn_backend_for_name), not left to the orchestrator prompt's SUBAGENT_CLI convention, so it can't be defeated by a missed env var.
  • Dedicated prompts/roles/safety-reviewer.md and prompts/roles/operations-reviewer.md (previously these fell through to the generic prompts/verifier.md) instruct each reviewer to independently gather live evidence via their own already-available read-only tool access, rather than trusting only the runbookContextSha256/historySha256 bundle the proposing agent supplied — that bundle's content is chosen by the same agent proposing the mutation and could be stale, incomplete, or adversarially curated. Both prompts require the exact same sealed prod-ops-review: marker prod_ops.rs already checks; the enforcement contract is unchanged, only the review process feeding it is strengthened.

Why this doesn't fully solve reviewer independence

Agent-role review remains a pre-filter, not the authority boundary, for k8s.restart-deployment/service.deploy-release: the human-committed-decision requirement added in #12 (decision commit --owner-type user --bound-action-sha256 ...) is what actually gates signing. This change only makes the pre-filter itself less prone to a single correlated model failure.

Validation

  • cargo fmt --check
  • cargo build --locked --all-features
  • cargo test --locked — 58 tests
  • bash tests/run.sh

Two changes to reduce correlated-failure risk in the safety-reviewer/
operations-reviewer pre-filter for mutating production operations
(k8s.restart-deployment, service.deploy-release):

- The two named reviewer roles now default to a deliberately-chosen
  backend/model (claude/claude-sonnet-5) via new PROD_OPS_REVIEWER_CLI/
  PROD_OPS_REVIEWER_MODEL env vars, instead of silently inheriting
  whatever the generic VERIFIER_CLI convention resolves to. This is
  enforced at the Rust spawn choke point (spawn_backend_for_name), not
  left to the orchestrator prompt's SUBAGENT_CLI convention, so it
  can't be defeated by a missed env var. Required threading an optional
  model override through AgentRequest/ClaudeBackend (--model flag),
  LaunchAuthorization, and the register-launch/renew-launch/restore
  path so it survives UID-sandboxed production launches and restores.

- Dedicated prompts/roles/safety-reviewer.md and operations-reviewer.md
  (previously these fell through to the generic prompts/verifier.md)
  instruct each reviewer to independently gather live evidence via
  their own already-available read-only tool access, rather than
  trusting only the runbookContextSha256/historySha256 bundle the
  proposing agent supplied — that bundle's content is chosen by the
  same agent proposing the mutation and could be stale, incomplete, or
  adversarially curated. Both prompts require the exact same sealed
  prod-ops-review marker prod_ops.rs already checks; the contract is
  unchanged, only the review process feeding it is strengthened.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@areshand
areshand changed the base branch from codex/control-plane-simplification to main August 20, 2026 20:16
@areshand
areshand changed the base branch from main to codex/control-plane-simplification August 20, 2026 22:43
@areshand
areshand marked this pull request as ready for review August 21, 2026 07:15
@areshand
areshand merged commit 9c4fd44 into codex/control-plane-simplification Aug 21, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant