docs/CLAIMS.md;
every known gap is in docs/VERIFICATION-GAPS.md, by number.
What Parmana guarantees
For a system whose actions go through Parmana:What it assumes
- Actions go through Parmana. The gateway is a property of systems that route through it. An agent that also holds a system’s credentials can act around it; give agents no credentials.
- Keys stay with their owners. Parmana proves which key signed, never whose hand held it. Two keys held by one person make the record claim a second person who does not exist.
- The signing key is safe. A stolen signing key signs records that verify. AWS KMS keeps the key from being released; rotation is a manual procedure.
- Policies are written well. An over broad rule approves what it should not; no signature can detect that. The validator catches some mistakes, and two people review every version.
- The operator is trusted with the database. An operator with direct database access can change rows outside maker checker (and, for emergencies, revoke an approver that way); those change rows record it.
What Parmana does not claim
- That execution cannot be bypassed under any circumstances.
- Mathematical proof of correct execution.
- Regulatory compliance (SOC 2, GDPR, ISO 27001) by itself.
- That an external system did what its endpoint says: the answer is recorded as its claim.
Known gaps
The open items that matter most when you build with Parmana:
Also scoped, not absent:
- There is no automatic path. No action is authorized without a person, by design (G-80 closed the last policies that approved without one). Plan for the first request on every resource to wait for a person.
- An approval covers the action and the resource, and the amount where the policy names one, not every parameter.
- Single use is per nonce store. Instances that share the database share it; separate in memory stores do not.
- Route access is not scoped per key. What is scoped is the action, the principal, and which records a caller can read.
- Approval notifications are best effort. One attempt, no retry; the Refusal Records are the complete list.
- Python verifies Ed25519 only. A record’s ML-DSA-65 signatures are checked by the TypeScript verifier.
- Releasing to an external endpoint is not yet checked against a live endpoint in production (ADR-0013 step 6).
Reporting a vulnerability
Email founder@parmanasystems.com with the issue, its impact, steps to reproduce and the version affected, asSECURITY.md in the repository describes. Do not open a public issue for a vulnerability.