Skip to main content
[AVAILABLE], 93 run unattended in CI via npm run examples (scripts/run-examples.ts), confirmed passing this pass; one (09, noted below) needs a live server and runs individually. Numbering has a few intentional gaps (61, 63-68, 85), retired when the Razorpay connector was deliberately removed from the codebase, never reused, see the note below. See Detect tampering and Choose a signature provider for guides built directly on several of these.
Run any of them directly: node_modules/.bin/tsx examples/tutorials/<NN-name>/run.ts.
The same pattern each time: generate something valid, mutate exactly one thing, re-verify, confirm rejection. See Detect tampering for three of these run live with real output.
None of these four reach packages/api or packages/runtime. They exercise @parmana/execution-control’s ExecutionPermit and @parmana/receipt’s ExecutionReceipt, real and tested, disconnected from the default server. See @parmana/receipt for the precise scope note.
Tutorials 61, 63-68, and 85 don’t exist. All were retired when the Razorpay connector was deliberately removed from the codebase (docs/CLAIMS.md’s “Key Compromise Notice” section and the connector-removal history), never reused. examples/README.md in the source repository is the authoritative, current tutorial list.
See HubSpot for the connector these exercise and its exact proven scope.
Tutorials 96 through 104 exist and pass in CI but aren’t yet in the tables above.
105: Tenant Key Isolation. Demonstrates the per-tenant signing-key fix: a transaction with a provisioned tenant.<tenantId> key signs and verifies only under that key, an unprovisioned tenantId falls back silently to the shared default key, and a transaction with no tenantId is unaffected. Newly added to scripts/run-examples.ts’s list: it existed and worked standalone since its own commit, but npm run examples never exercised it until now.106: API Key Issuance (Writing a New Policy). A brand-new policies/api-key-issuance/1.0.0 policy and worked example showing how to author a policy correctly under the fail-closed boundSignals discipline and zero-conflict shape from the start, rather than retrofitting it afterward the way all 10 pre-existing policies needed. Also in scripts/run-examples.ts’s list from its first commit.107: Offline Verification. verifyExecutionTrustRecordOffline verifying a genuine record, a tampered one, and a wrong-key attempt, with zero disk/network/env-var access. One level stronger than Verify a trust record independently’s “server process stopped” proof.108: Public-Key Discovery. GET /keys/:keyId and GET /.well-known/jwks.json, unauthenticated, plus the full chain: a key fetched over real HTTP verifies a real record fully offline via Tutorial 107’s function, with zero further server calls.109: Durable-Evidence Key Rotation. PARMANA_VERIFICATION_KEY_ID rotating the Trust Record/Refusal Record/Audit Event signing key to a freshly generated keyId without invalidating any already-issued signature. That property was previously false (the only prior “rotation” was overwriting the key file in place).110: Hybrid-Signature Downgrade Protection. The opt-in HYBRID_SIGNATURE_REQUIRED flag closing the gap where a hybrid-signed record’s ML-DSA-65 signature could be silently stripped with no cryptographic trace, while leaving every already-issued record (default policy, unaffected) exactly as verifiable as before.

Scenarios

Two production-shaped scenarios also live in examples/scenarios/, run manually via npm run examples (scripts/run-examples.ts), not currently part of CI: expense-approval, purchase-order. (A third, vendor-payment, existed here until payments:execute was removed from the repository entirely.)

Next

Detect tampering

Three of the tutorials above, run live with real output.

Limitations

What’s tested, what’s an honest gap, and how to verify any claim yourself.