Skip to content
Marcus Richards edited this page Oct 6, 2026 · 2 revisions

FAQ

Does the demo call PayPal? No. Every demo uses the mock rail. Only server.py --sandbox, scripts/sandbox_smoke.py and launch_sandbox.py touch PayPal's sandbox.

What can I run with no keys and no LLM? python demo.py, python demo_sla_escrow.py --fast, python trace.py, python server.py, and python -m pytest -q.

Why does demo_six_beat.py fail for me? It drives a real LLM through the CLI in PERMIT_GROK_CLI. The default path exists only on the author's machine. Set the variable, or pass --replay <transcript.jsonl>.

Can a blocked spend reach PayPal? No. check() returns before authorize(). trace.py proves this with a spy whose authorize() raises if it is called.

Can a retry double-charge? The capture uses a stable PayPal-Request-Id ({permit_id}:{auth_id}:capture). The mock returns the same capture for the same key. The sandbox relies on PayPal honouring the header.

What happens if the capture response is lost? The escrow goes UNKNOWN. Nothing else happens until reconcile. See UNKNOWN and Reconcile.

Does e-stop stop a whole delegation tree? Not in code. /estop revokes one permit, while /revoke-cascade revokes the subtree. See E-Stop and Revocation.

Is the ledger proof of payment? No. It is an internally consistent, in-memory hash chain. It is not signed, not durable, and not a PayPal record.

What currency? CAD on the sandbox rail. Amounts are integer cents everywhere.

Why does test_trace_exits_clean sometimes fail? Something else holds port 8741. Stop any stray server.py.

Where do I report a security issue? GitHub private vulnerability reporting. See Contributing.

Clone this wiki locally