PlanGate

ADR-007: Independent Runtime Verifier Boundary Decision Packet

Status: Proposed
Date: 2026-10-06
PBI: #1473(Parent: #1468)
Decision Makers: Human / external-boundary administrator — UNASSIGNED


This ADR is a decision packet, not a completed decision. AI/automation may prepare options and evidence, but MUST NOT change this ADR to Accepted, populate Human-owned identities, provision the external boundary, or promote strong authority fields without an explicit Human decision.

Context

PlanGate has completed the repository-side candidate chain needed to consume a future independently administered runtime-verifier boundary:

The repository can now fail closed on self-reference, wrong Evidence subjects, malformed Evidence URIs, ambiguous bootstrap packages, package tampering, stale/mismatched provenance, and candidate self-promotion.

What it still cannot prove is administrator independence. A repository-authored file, workflow, boolean, or issue comment cannot make the repository independent from itself.

The next step in #1473 is therefore a Human-owned P0 decision about the actual external trust boundary. This ADR makes that decision explicit and auditable without making it on behalf of the Human owner.

Problem Statement

Four facts are required before external implementation can safely begin:

external_verifier_location = UNDECIDED
external_verifier_admin = UNDECIDED
nonce_ledger_owner = UNDECIDED
trusted_issuer = UNDECIDED

If implementation starts while any of these remain undecided, PlanGate risks creating a nominally “external” component whose administration is still under the same authority, or creating Evidence that the repository can self-author.

The decision therefore needs to precede provisioning.

Decision Drivers

Considered Options

Option A: Dedicated verifier repository with separately controlled administration

Create or select a repository whose administration is separated from normal PlanGate repository authority. The verifier workflow, signer identity, source-digest policy, and nonce integration are pinned there.

Pros:

Cons:

Decision status: CANDIDATE — not selected.

Option B: External verification service / separate trust root

Use a service or trust root that is operationally and administratively independent from PlanGate.

Pros:

Cons:

Decision status: CANDIDATE — not selected.

Option C: Another PlanGate-local workflow or repository-authored verifier

Add another workflow/file inside PlanGate and label it “external” or “independent”.

Pros:

Cons:

Decision status: REJECTED.

Option D: Separate repository without separate administration

Create a second repository, but leave unrestricted administration under the same effective authority as PlanGate.

Pros:

Cons:

Decision status: REJECTED unless an independently reviewable admin-separation model is established.

Evaluation Matrix

Criterion Option A: separate repository Option B: external service
Admin separation Must be proven by effective admin/control separation, not repo name Must be proven by service/account ownership and access policy
Issuer identity GitHub Actions OIDC is a concrete candidate Service-specific issuer / trust root
Immutable execution identity Workflow path + commit SHA / pinned binary Versioned verifier identity / pinned binary
Nonce ownership Separate external ledger/service required May be native to the service if independently controlled
Auditability GitHub org/repo audit evidence + policy evidence Service audit/access logs + policy evidence
Integration cost Lower with current #1470/#1471 model Higher; may require an adapter
Independence failure mode Same effective admin controls both repositories Same effective account/admin controls PlanGate and service

This matrix is decision support only. It does not select an option.

Minimum independence Evidence expected at P1/P2

Regardless of the selected option, later promotion needs independently reviewable Evidence for:

  1. effective administrator separation — who can change verifier policy, signer identity, and trust configuration;
  2. immutable execution identity — exact workflow/binary/version that produced the receipt;
  3. issuer / trust-root ownership — why the claimed issuer is trusted for this boundary;
  4. nonce authority separation — who can issue, consume, and reject reuse;
  5. least privilege — verifier credentials cannot write PlanGate code, approvals, merges, or deployments;
  6. policy enforcement — signer/source/runner restrictions were actually enforced, not only documented.

A separate repository name, organization membership, workflow file, or repository-authored statement is not sufficient by itself.

Decision

Decision state: NOT_MADE.

The following values are Human-owned and MUST remain UNDECIDED until explicitly recorded by the Human decision maker:

external_verifier_location = UNDECIDED
external_verifier_admin = UNDECIDED
nonce_ledger_owner = UNDECIDED
trusted_issuer = UNDECIDED

Acceptance rule

This ADR may move from Proposed to Accepted only when all of the following are true:

  1. a Human explicitly selects Option A or Option B, or documents another reviewed equivalent;
  2. external_verifier_location names the selected external boundary;
  3. external_verifier_admin names the person/team/account boundary responsible for it;
  4. nonce_ledger_owner names the external owner/service for issue/consume/reuse state;
  5. trusted_issuer names the intended issuer/trust root;
  6. the Human decision is recorded in an auditable location;
  7. the decision does not assert that independence has already been proven merely because this ADR exists.

AI/automation MUST NOT satisfy items 1–6 on behalf of the Human owner.

Human Decision Record

When the Human owner makes P0, update this block explicitly. Until then every value remains a placeholder.

selected_option = UNDECIDED
external_verifier_location = UNDECIDED
external_verifier_admin = UNDECIDED
nonce_ledger_owner = UNDECIDED
trusted_issuer = UNDECIDED
decision_recorded_by = UNDECIDED
decision_recorded_at = UNDECIDED
decision_evidence_ref = UNDECIDED

Rules:

Decision-state transition contract

TA-113 validates structural consistency, not Human identity or independence proof.

Proposed state requires:

Accepted state requires:

An Accepted structure is still not Evidence that the resulting external boundary is independent. That proof belongs to P1/P2 external Evidence.

P1 activation gate

External provisioning may start only after this ADR is Accepted by a Human and the Human Decision Record has no UNDECIDED values.

Until then:

external_boundary = NOT_PROVISIONED
authenticated_external_evidence = NOT_AVAILABLE
admin_evidence_independently_verified = false
nonce_one_time_consumption_verified = false
independent_admin_boundary_verified = false
independent_verifier_execution_attested = false
runtime_probe_attestation_verified = false
human_rollout_decision_verified = false
dispatch_ready = false
dispatch_allowed = false

The Proposed ADR itself is planning material. It is not external Evidence.

P1 Handoff Checklist

After Human acceptance:

Consequences

Positive

Negative / Risks