Skip to content

feat(sensitive): bind break-glass approvals to approver identities - #122

Draft
seonghobae wants to merge 28 commits into
feat/sensitive-break-glass-policyfrom
feat/sensitive-break-glass-approver-binding
Draft

seonghobae wants to merge 28 commits into
feat/sensitive-break-glass-policyfrom
feat/sensitive-break-glass-approver-binding

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 12, 2026 •

Copy link
Copy Markdown
Contributor

Partial implementation of #10, stacked on current PR #119.

Buyer/security gap

PR #119 binds one break-glass decision to the currently authenticated beneficiary actor and requires one or two distinct approval references, but reference distinctness alone does not prove approver independence. A trusted runtime could otherwise present beneficiary self-approval, one approver behind two references, or approver identities detached from the exact references evaluated by policy.

Current stack / live alignment

This head merges the current prerequisite without rewriting history. The only textual conflict was the changelog: it retains the child approver-binding entry and the parent's current request/freshness-bound necessity entry. No prerequisite or predecessor check, review, coverage, status, mergeability, or synthetic-merge evidence transfers.

TDD / RCA lineage

  1. Exact test-only head 3fc4edde4185d16d5ae4d0295b5d07a3e6b852a0 required explicit approver binding before production support existed. CI run 31594761604, Rust contracts job 94107529223, passed repository contracts/formatting and then failed E0432/E0599/E0061 because the approver-binding contract and evaluator input did not exist. This is the valid RED.
  2. Subsequent heads added hostile identity/cardinality/duplicate/beneficiary-conflict/reference-shape tests, then the typed approver-binding production contract and exports.
  3. Current exact head preserves the intended approver-binding delta on the current feat(sensitive): bound break-glass disclosure authority #119 prerequisite.

Implemented contract

The branch requires one coherent BreakGlassIdentityBindings snapshot, binds each human or dual-control approver identity to its exact approval reference, rejects malformed/oversized identifiers, duplicate approvers, duplicate or mismatched references, beneficiary self-approval, and human/dual-control shape mismatch, accepts dual-control pair order without detaching identities from references, and composes these checks with ordinary sensitive-data authority, beneficiary binding, reason, validity, heightened monitoring, and mandatory review. Public contracts have rustdoc and focused regressions cover the fail-closed boundaries.

Current-head verification

For exact head 59478c3e33fa483af8203de8258eaf8664edf923 against exact prerequisite ba16263f58e8c21df909e881b390cc094baa6642:

  • cargo fmt --all -- --check: success;
  • cargo test --locked --workspace --all-features: success;
  • cargo clippy --locked --workspace --all-targets --all-features -- -D warnings: success;
  • RUSTDOCFLAGS='-D warnings' cargo doc --locked --workspace --all-features --no-deps: success;
  • exact-head CI: pending;
  • formal reviews currently returned before this push: none.

The prior successful run 32634567204 belongs to the previous head and is historical only. Security/SAST/central review workflows absent for this stacked Draft are absent, not passing. No predecessor-head, prerequisite-head, queued, pending, skipped, cancelled, stale, synthetic, status-only, or model-only evidence is promoted as current proof.

Truth boundary

This deterministic metadata slice does not authenticate approvers, prove organizational-role separation beyond exact identity inequality, verify approval signatures, prove the caller derived an identity/reference pair from one authoritative approval event, disclose protected bytes, persist or hash-chain audit evidence, execute monitoring or review, implement a trusted broker, or close issue #10. A trusted approval service/runtime must derive approval references and approver identities together from authenticated signed or otherwise authoritative approval state immediately before evaluation.

Passing automation is not independent approval. This scheduled actor does not merge, self-approve, alter workflows, add secrets, weaken checks, tag, or publish.

@coderabbitai

coderabbitai Bot commented Aug 12, 2026 •

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Preserve PR #122's beneficiary/approver identity-binding tree while adopting the current PR #119 break-glass policy head after dependency-root ownership repair.
Merge the current break-glass prerequisite while retaining the bounded approver-binding contribution.

Signed-off-by: Seongho Bae <me@seonghobae.me>
…y' into codex/restack-pr122

Signed-off-by: Seongho Bae <me@seonghobae.me>
@seonghobae seonghobae added the enhancement New feature or request label Sep 7, 2026 — with ChatGPT Codex Connector
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant