Requester
Proposal only
No workspace path, authority private key, policy object, or direct effect API. It receives a receipt and read-only status.
Boundary-indexed assurance for agentic systems
DARM is PerceptraAI Lab's research line for claims that survive translation: model to implementation, representation to representation, theorem to running gate.
Runtime Trust Boundary
The closure experiment moves authority and the governed workspace behind a protected publication service. A hostile Python requester may send arbitrary messages, but it cannot issue authority, alter signed content, replay an intent, or choose a stale predecessor version.
Requester
No workspace path, authority private key, policy object, or direct effect API. It receives a receipt and read-only status.
Protected service
Verifies a principal-signed intent, exact content digest, expected version, and one-time consumption before an atomic publication step.
Current experiment
Exact content, forged intent, replay, stale version, malformed request, receipt rollback, reopen survival, authority mismatch, and concurrent replay.
Bounded target
hostile_requester_behavior
-> committed publication
-> signed object + exact bytes + expected predecessor version
Current status: executable reference model. The service implementation, Python runtime, cryptography library, filesystem, crash recovery on every platform, OS isolation, and principal policy decision remain explicit trust or deployment obligations.
Read the closure experimentWhat DARM Is
DARM studies when an assurance claim may be transported across a boundary. The answer is not "because the systems are similar." The answer is a transfer warrant: what changed, what is preserved, and which obligation makes the target claim legitimate.
01
Claims are indexed to the boundary they rely on, so a local guarantee is not silently reused as a broader system claim.
02
Adequacy is property-specific. DARM asks whether the representation preserves what this claim actually needs.
03
Every public assurance claim should name whether support is proved, constructed, tested, assumed, or not yet established.
DARM Guard
DARM Guard places an execution boundary between an agent and its tools. The agent can propose. The broker holds the tools, asks the compiled DARM kernel, executes only the admitted invocation, and leaves signed evidence.
Pinned repository counts
31
Claims
53
Effect sites
19
Mutations
64
Gate steps
Snapshot: DARM Guard commit 4bcab18. Package/kernel row in repository README: 0.28.0 / kernel-v0.4.0.
Runtime boundary
01 / Canonicalization
The broker assigns provenance from a principal-controlled registry and freezes the invocation before asking the kernel. The admitted invocation is the one sent to execution.
Boundary: Python-to-model correspondence is tested, not proved. Complete mediation depends on deployment.
broker.py / Broker.decideEvidence Ledger
The page below separates formal corpus evidence, runtime evidence, repository workflow evidence, and limitations. It is built from the current local clones and the claim graph pinned to DARM Monitor commit caebc7c.
250
Lean modules
158 GRBS modules and 92 DarmMonitor modules.
1,629
Theorems and lemmas
Corpus count from Monitor stats.
47,524
Lines of Lean
All corpus modules counted.
0 / 0
Sorry / axioms
Zero files with sorry, zero declared axioms.
| Public claim | Evidence handle | Status |
|---|---|---|
| Every Guard claim cites its supporting theorem or marks itself unmodelled. | assurance/claims.json, checked by check_assurance.py | 31/31 fully cited |
| Formal claims also carry gated runtime evidence. | Claim graph pinned to darm-monitor caebc7c | 27/27 formal claims |
| The runtime effect surface is closed under the repository inventory. | effect_sites.json, checked by check_effect_sites.py | 53/53 classified, 0 open |
| The Monitor paper does not cite missing theorem names. | paper/check_citations.py | 83/83 citations exist |
| Bridge type is explicit for model-to-code movement. | check_bridges.py | 1 construction, 1 proved, 29 tested, 0 assumed |
| The reference deployment can require exact, single-use intent consumption in addition to the kernel verdict. | DARM Guard 8e4a045, tests/deployment_intents.py, and deployment-intents.md | 14 deployment checks + 3 real-kernel intent tests |
| The confined agent cannot create files beside the broker socket in the Compose deployment. | Mediation workflow #160 on hardening/agent-socket-readonly | HTTP path absent, network absent, root filesystem read-only, socket directory read-only |
Workflow Evidence
Selected GitHub Actions runs, separate from the pinned repository-count snapshot above. A passing run reports that workflow's outcome, not an end-to-end proof.
Guard gate
Runs the demo fixture, evidence attacks, broker attacks, runtime correspondence samples, assurance graph, effect inventory, mutation gate, and workflow validation.
Mediation
Tests the containerized deployment where the agent has no workspace, no network, only a read-only broker socket directory, and exact single-use intents for governed effects.
Formal CI
Checks placeholder absence, audits axiom traces, elaborates the complete corpus, builds native code, and runs runtime differential tests.
Theory Map
The formal work is not a single mega-claim. It is a set of bounded results about transfer, authority, representation, evidence, and implementation change.
Inspect the Lean 4 signatures
Research-branch excerpts at 8ff950f (research/e37-heterogeneous-warrant). These are not part of the main-branch corpus snapshot or its live CI badge above. Proof bodies and definitions are linked in source.
An adequate observation preserves the chosen property from a reviewed value to an observationally equal candidate.
theorem observed_preserved {V O : Type} {observe : V → O} {P : V → Prop}
(hA : AdequateFor observe P) {r v : V} (hR : P r)
(hG : ObservedGate observe r v) : P v
Namespace: DARM.E35. Requires property-specific adequacy, a reviewed property, and observation equality. It does not formalize Python or prove the implementation bridge.
Declaration, definitions, and proofInitial adequacy survives a finite chain when every transition discharges its local preservation obligation.
theorem chain_preserves {V O : Type} (P : V → Prop)
(observe : V → O) :
∀ steps, DARM.E35.AdequateFor observe P →
ChainObligations P observe steps →
DARM.E35.AdequateFor (chainObservation observe steps) P
Namespace: DARM.E36. One common observation type and one chosen property. This is not an executable search for arbitrary semantic equivalence.
Declaration, obligations, and proofInside a valid boundary, a target claim holds exactly when it has inherited or local warrant.
theorem target_claim_iff_entitled
{S T : Type}
{b : Boundary S T}
(hValid : Valid b)
{t : T}
(hTarget : b.target t) :
b.targetClaim t ↔ Entitled b t
Namespace: DARM.E37. Valid requires transfer soundness, local-warrant soundness, and no unsupported introduction. Internal validity alone does not establish an external-world claim.
Declaration, boundary conditions, and proofTry The Runtime
The runtime path is intentionally concrete. Install, install the pinned kernel, run the demo, then inspect the audit trail and evidence report.
Package
pip install darm-guard
darm-guard-install-kernel
darm-guard demo
Container
docker run --rm ghcr.io/goblohan/darm-guard darm-guard demo
Repository gates / from a Guard clone
./tests/setup_demo.sh
python3 scripts/ci_local.py
Prior Art
The site should not pretend reference monitors, assurance cases, taint tracking, runtime enforcement, verified kernels, or agent security benchmarks do not exist. The claim is narrower: DARM makes assurance scope, authority, enforcement locus, and evidentiary basis explicit and machine-checkable.
| Area | Representative works | DARM position |
|---|---|---|
| Reference monitors and complete mediation | Anderson, Saltzer and Schroeder | DARM Guard is a reference monitor for agent tool use, with complete mediation stated as an assumption rather than magically proved. |
| Tamper-evident logs | Kelsey and Schneier, Crosby and Wallach | DARM uses audit evidence to bind freshness and effect identity, not only to detect log tampering. |
| Verified systems | seL4, translation validation, HACL* | DARM does not verify the whole Python runtime. It names which bridge is construction, proved, tested, or assumed. |
| Agent defenses | CaMeL, FIDES, Progent, AgentSpec, prompt-injection design patterns, AgentDojo | DARM acts at execution and effect, then checks the state and evidence that remain after the tool call. |
| Runtime enforcement and information flow | Schneider enforceable policies, information-flow control for agents | DARM asks what the boundary observes and what claims can be complete relative to that observation. |
Source map: paper/related.md and references.bib.
Limits
This is the difference between a serious research page and a sales page wearing theorem makeup.
DARM Guard assumes complete mediation. The agent must reach governed files and governed network effects only through the broker.
The requester cannot widen one publication in the reference model. The protected service, deployment isolation, storage behavior, and Python implementation still need separate evidence.
DARM does not claim physical-world safety, content truth, harm detection, confidentiality, or universal semantic adequacy.
Full source: DARM Guard limitations and DARM Monitor limitations.
Repositories And Handles
The public page should send serious readers to the exact places where claims can be checked.
Runtime repository
Broker, tests, claims graph, effect inventory, package metadata, deployment workflows.
Formal repository
Lean theorem corpus, GRBS modules, paper draft, references, kernel release workflow.
Research page
Formal-methods narrative for assurance transfer, with Zenodo record, paper fingerprint, and core limits.
Archived paper
DARM Core v1.0: machine-checked calculus for boundary-indexed assurance transfer.
Package page
Public Python package entry and release metadata.
Theorem map
Module-level guide for the theorem corpus and how each file is checked.
Boundary experiment
Executable reference model, adversarial tests, exact bounded claim, and the remaining trusted base.