Recorded evidence

20260915T060329Z-evidence

Recorded, not described.

Every command below was executed under a pseudo-terminal recorder and kept with its raw byte stream, its timing file and its SHA-256. The sessions cover the environment, the Rust and Python suites, a developer walkthrough against a live registry, a 112-agent campaign with an adversary, the benchmark and a C++ verifier through the C ABI. Nothing on this page is typed by hand: it is built from the run's files.

Started
2026-09-15 06:03:29 UTC
Finished
2026-09-15 06:08:50 UTC
Machine
Intel(R) Xeon(R) Processor @ 2.10GHz, 4 CPUs
Platform
Linux-6.18.44-fc-v33-x86_64-with-glibc2.39
Toolchain
Python 3.11.15 · rustc 1.94.1 (e408947bf 2026-03-25)
Commit
31ca0e784312
The public data page of a software agent's Phanes ID, as the registry rendered it during the campaign
The public data page of a software agent's ID exactly as the registry returned it during the campaign: issuer-sealed fields only, disclosable claims marked as not disclosed, the sealed token as the QR code.

What the run produced

Every figure is read from the run's files.

80
recorded sessions, every one at exit code 0
112 / 112
agents and robots completing every step; 12 hardware-bound robots
43 / 43
attacks by the adversary defended with the expected status
134
contracts between agents; 114 completed and released, 20 disputed and 20 resolved
83 / 83
inspection reports verified by a third party, nothing private in any
843 / 843
PBFT anchors re-verified from their commit signatures; 1,366 of 1,366 ledger proofs
336 / 336
peer verifications of hybrid Ed25519 + ML-DSA-87 Marks, offline and online verdicts agreeing
1,810
signed activity events, 1,017 witnessed by the venue; 112 of 112 presentations verified
112
certified and 112 insured; 51 of 58 claims paid
9,586
entries in the campaign registry's access log
7.2 ns
to recognise a valid Mark structurally; 0.7 ns to reject junk
327 µs
to verify a hybrid Mark, 58 µs classical, on Intel(R) Xeon(R) Processor @ 2.10GHz

Where the time went

80 sessions in six phases

Build and test suites · 2 min 0 sWalkthrough against a live registry · 57.0 sThe campaign · 1 min 56 s
Environment: 0.1 s in 1 sessionBuild and test suites: 2 min 0 s in 10 sessionsWalkthrough against a live registry: 57.0 s in 65 sessionsThe campaign: 1 min 56 s in 2 sessionsBenchmark: 26.8 s in 1 sessionManifest: 0.0 s in 1 session

Total 5 min 20 s of recorded wall-clock time.

The suites, as recorded

Pass counts read from the sessions

SuiteCoversPassed
The ID stackissuance, presentations, status lists, persistence, cryptographic vectors, REST and MCP27
The Agent Stackcontracts, escrow, the risk gate, consensus, disputes, restart with verified restore9
Marks and renderingthe Mark engines, device profiles, the data page, the QR round trip22
A live registrythe command line, the client, the TypeScript SDK, anchors, oversight11
The browser verifierthe page a printed token opens, driven in Chromium against a live registry6
Admission, payments, recognition, witnesses, publicationthe policy and queue, the mandate chain and refusals, RFC 9421, the guard, rollback refusal, network enrichment, publication integrity, oversight21
The protocol suitethe legacy modules with tamper detection94
The verification corerecognition, verification, hybrid seals, anchors, ledger entries9
The TypeScript SDKprotocol helpers and byte-for-byte vectors against the reference34

The page a scanned ID opens

Chromium, a real token, four verdicts.

The QR code on every ID opens phanes.app/id with the sealed token in the address. The page verifies the Ed25519 seal in the browser, loads the issuer anchors from its own origin, checks the signed status lists and asks the registry for the hybrid verdict. Below: that page, opened from a real token during the run.

phanes.app/id verifying a valid token
A valid token: the seal, the anchors, the status lists and the registry agree.
phanes.app/id refusing a revoked token
The same token after the holder revoked the ID: the revocation bit refuses it.
phanes.app/id refusing a tampered token
One byte of the token changed: the seal fails.
phanes.app/id with no status list
No status list reachable: the verdict is never ok; verification fails closed.
The public data page of a robot's Phanes ID
A warehouse unit's ID (document type IR): the manufacturer attested the measured firmware, so the ID is hardware-bound.
The public data page of the walkthrough's agent
The walkthrough agent's public data page, rendered by the registry during the recorded session.
A certification badge
The badge of a Certified agent, rendered from the credential.

The adversary

43 of 43 attacks, each with the status it expected.

An adversary process ran against the campaign registry while the agents used it. Each attack names the outcome it expected and the outcome it observed; a defence is a match.

AttackExpectedObservedDefended
replay_signed_requestHTTP 401HTTP 401 yes
stale_timestamp_-10minHTTP 401HTTP 401 yes
future_timestamp_+10minHTTP 401HTTP 401 yes
unsigned_holder_routeHTTP 401HTTP 401 yes
wrong_key_read_full_idHTTP 403HTTP 403 yes
wrong_key_record_eventHTTP 403HTTP 403 yes
wrong_key_quoteHTTP 403HTTP 403 yes
operator_route_wrong_bearerHTTP 403HTTP 403 yes
operator_route_no_bearerHTTP 401HTTP 401 yes
signature_over_different_pathHTTP 401HTTP 401 yes
signature_over_different_bodyHTTP 401HTTP 401 yes
forged_mark_attacker_signed_offlineFalseFalse yes
forged_mark_attacker_signed_onlineFalseFalse yes
pq_downgrade_v2_to_v1_onlineFalseFalse yes
pq_downgrade_v2_to_v1_offlineFalseFalse yes
pq_signature_forged_random_onlineFalseFalse yes
pq_signature_forged_random_offlineFalseFalse yes
pq_signature_by_attacker_key_onlineFalseFalse yes
pq_signature_by_attacker_key_offlineFalseFalse yes
pq_signature_byte_tampers_113_offline113113 yes
single_bit_tampers_1280_offline12801280 yes
byte_tampers_11_online1111 yes
garbage_mark_onlineFalseFalse yes
short_mark_onlineFalseFalse yes
tampered_event_body_commitHTTP 4xxHTTP 403 yes
unregistered_witnessHTTP 4xxHTTP 403 yes
replay_committed_eventHTTP 4xxHTTP 400 yes
presentation_nonce_reuseFalseFalse yes
presentation_wrong_audienceFalseFalse yes
presentation_swapped_disclosureFalseFalse yes
visa_from_unregistered_venueHTTP 403HTTP 403 yes
robotics_package_for_software_agentHTTP 403HTTP 403 yes
physical_cover_without_hardware_attestationHTTP 4xxHTTP 400 yes
policy_beyond_pool_capacity_refusedHTTP 400HTTP 400 yes
bind_without_verified_premium_strict_registryHTTP 403HTTP 403 yes
suspended_mark_onlineFalseFalse yes
suspended_mark_offline_after_refreshFalseFalse yes
unsuspended_mark_onlineTrueTrue yes
revoked_mark_onlineFalseFalse yes
revoked_mark_offline_after_refreshFalseFalse yes
new_mark_for_revoked_idHTTP 4xxHTTP 400 yes
unknown_id_numberHTTP 404HTTP 404 yes
path_traversal_numberHTTP 4xxHTTP 404 yes

The sessions

80 sessions under a pseudo-terminal.

Each window is the session's raw byte stream drawn as a terminal, with the command that ran, its exit code and its duration. The typescript, its timing file and its SHA-256 are in the run directory; the raw link opens the file the window was drawn from.

Environment

1 session · 0.1 s

01

environment

exit 00.064 s2026-09-15 06:03:29 UTC
$ bash -c 'uname -a; echo; python3 --version; rustc --version; cargo --version; g++ --version | head -1; echo; git rev-parse HEAD; git status --short | wc -l; echo; nproc; grep -m1 '"'"'model name'"'"' /proc/cpuinfo; free -m | head -2'
Linux vm 6.18.44-fc-v33 #1 SMP PREEMPT_DYNAMIC @0 x86_64 x86_64 x86_64 GNU/Linux
Python 3.11.15
rustc 1.94.1 (e408947bf 2026-03-25)
cargo 1.94.1 (29ea6fb6a 2026-03-24)
g++ (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0
31ca0e78431226b10a682bc91904caf112d81a53
0
4
model name : Intel(R) Xeon(R) Processor @ 2.10GHz
total used free shared buff/cache available
Mem: 16095 650 14620 11 1052 15445

Build and test suites

10 sessions · 2 min 0 s

02

cargo-build

exit 026.811 s2026-09-15 06:03:29 UTC
$ cargo build --release
Compiling phanes-core v0.6.0 (/Users/tofael/phanes/phanes-core)
Finished `release` profile [optimized] target(s) in 26.77s
03

cargo-test

exit 019.83 s2026-09-15 06:03:56 UTC
$ cargo test --release
Compiling phanes-core v0.6.0 (/Users/tofael/phanes/phanes-core)
Finished `release` profile [optimized] target(s) in 19.25s
Running unittests src/lib.rs (target/release/deps/phanes_core-c15638425fee895f)
running 9 tests
test tests::c_abi_paths ... ok
test tests::jws_eddsa_verify_and_rejections ... ok
test tests::ledger_entries_verify_by_signature_and_inclusion ... ok
test tests::anchors_verify_by_commit_quorum ... ok
test tests::recognize_and_verify_roundtrip ... ok
test tests::status_list_decode_matches_python_layout ... ok
test tests::pq_sign_verify_and_c_abi ... ok
test tests::every_tamper_is_rejected ... ok
test tests::hybrid_mark_roundtrip_and_pq_requirements ... ok
test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
Running unittests src/bin/bench.rs (target/release/deps/phanes_bench-b24735a59b452c4a)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running unittests src/main.rs (target/release/deps/phanes_core-ad1010d0e4f0bb1a)
Show the remaining 10 lines
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests phanes_core
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
04

pytest-id-stack

exit 05.783 s2026-09-15 06:04:16 UTC
$ /usr/local/bin/python3 -m pytest tests/test_id_stack.py -v -p no:cacheprovider
========================================= test session starts ==========================================
platform linux -- Python 3.11.15, pytest-9.1.1, pluggy-1.6.0 -- /usr/local/bin/python3
rootdir: /Users/tofael/phanes
configfile: pyproject.toml
plugins: anyio-4.15.1
collected 27 items
tests/test_id_stack.py::test_canonical_json_is_deterministic_and_rejects_floats PASSED [ 3%]
tests/test_id_stack.py::test_jws_eddsa_roundtrip_and_rejections PASSED [ 7%]
tests/test_id_stack.py::test_multisig_threshold_semantics PASSED [ 11%]
tests/test_id_stack.py::test_issuance_attestations_document_type_and_did_document PASSED [ 14%]
tests/test_id_stack.py::test_rogue_attestation_is_not_marked_verified PASSED [ 18%]
tests/test_id_stack.py::test_unsigned_or_wrong_key_application_rejected PASSED [ 22%]
tests/test_id_stack.py::test_selective_disclosure_presentation_and_border_checks PASSED [ 25%]
tests/test_id_stack.py::test_visa_suspension_rotation_revocation PASSED [ 29%]
tests/test_id_stack.py::test_status_list_bit_layout_and_size PASSED [ 33%]
tests/test_id_stack.py::test_rfc9162_merkle_vectors PASSED [ 37%]
tests/test_id_stack.py::test_merkle_inclusion_consistency_sweep_and_rewrite_detection PASSED [ 40%]
tests/test_id_stack.py::test_activity_record_who_what_when_where_how_why PASSED [ 44%]
tests/test_id_stack.py::test_two_phase_commit_non_custodial PASSED [ 48%]
tests/test_id_stack.py::test_insurance_quote_is_deterministic_and_explained PASSED [ 51%]
tests/test_id_stack.py::test_insurance_capacity_binding_claims_multisig_payout PASSED [ 55%]
tests/test_id_stack.py::test_no_retroactive_coverage PASSED [ 59%]
tests/test_id_stack.py::test_certification_tiers_and_badge PASSED [ 62%]
Show the remaining 12 lines
tests/test_id_stack.py::test_vault_envelope_rotation_tokenization_sealing PASSED [ 66%]
tests/test_id_stack.py::test_ed25519_group_known_answers PASSED [ 70%]
tests/test_id_stack.py::test_zk_range_proof_sound_and_hiding PASSED [ 74%]
tests/test_id_stack.py::test_legacy_rangeproof_forgery_no_longer_possible PASSED [ 77%]
tests/test_id_stack.py::test_legacy_threshold_secret_leak_no_longer_possible PASSED [ 81%]
tests/test_id_stack.py::test_feldman_vss_and_time_lock PASSED [ 85%]
tests/test_id_stack.py::test_rest_full_lifecycle_with_signed_requests PASSED [ 88%]
tests/test_id_stack.py::test_mcp_id_tools_end_to_end PASSED [ 92%]
tests/test_id_stack.py::test_mcp_agent_stack_tools PASSED [ 96%]
tests/test_id_stack.py::test_challenge_survives_anchor_refresh_between_challenge_and_verify PASSED [100%]
========================================== 27 passed in 5.38s ==========================================
05

pytest-agent-stack

exit 03.279 s2026-09-15 06:04:22 UTC
$ /usr/local/bin/python3 -m pytest tests/test_agent_stack.py -v -p no:cacheprovider
========================================= test session starts ==========================================
platform linux -- Python 3.11.15, pytest-9.1.1, pluggy-1.6.0 -- /usr/local/bin/python3
rootdir: /Users/tofael/phanes
configfile: pyproject.toml
plugins: anyio-4.15.1
collected 9 items
tests/test_agent_stack.py::test_issuance_onboards_the_holder_as_a_protocol_identity PASSED [ 11%]
tests/test_agent_stack.py::test_contract_lifecycle_with_native_settlement_risk_consensus_and_ledger PASSED [ 22%]
tests/test_agent_stack.py::test_bounds_capabilities_standing_and_funds_are_enforced PASSED [ 33%]
tests/test_agent_stack.py::test_dispute_with_holder_signed_evidence_auto_resolution_and_refund PASSED [ 44%]
tests/test_agent_stack.py::test_arbitration_with_vrf_selected_holders_and_holder_signed_votes PASSED [ 55%]
tests/test_agent_stack.py::test_inspector_report_is_signed_integer_only_and_redacted PASSED [ 66%]
tests/test_agent_stack.py::test_everything_survives_a_restart PASSED [ 77%]
tests/test_agent_stack.py::test_consensus_commits_every_sequence_across_checkpoints PASSED [ 88%]
tests/test_agent_stack.py::test_rust_core_agrees_on_anchors_and_ledger_proofs PASSED [100%]
========================================== 9 passed in 2.92s ===========================================
06

pytest-mark-render

exit 05.841 s2026-09-15 06:04:25 UTC
$ /usr/local/bin/python3 -m pytest tests/test_mark_render.py -v -p no:cacheprovider
========================================= test session starts ==========================================
platform linux -- Python 3.11.15, pytest-9.1.1, pluggy-1.6.0 -- /usr/local/bin/python3
rootdir: /Users/tofael/phanes
configfile: pyproject.toml
plugins: anyio-4.15.1
collected 22 items
tests/test_mark_render.py::test_core_fallback_is_graceful PASSED [ 4%]
tests/test_mark_render.py::test_mark_layout_and_parse PASSED [ 9%]
tests/test_mark_render.py::test_all_engines_agree_on_valid_and_on_every_single_bit_tamper PASSED [ 13%]
tests/test_mark_render.py::test_status_bits_expiry_and_missing_status_fail_closed PASSED [ 18%]
tests/test_mark_render.py::test_jws_through_core PASSED [ 22%]
tests/test_mark_render.py::test_recognition_is_sub_microsecond_through_ffi PASSED [ 27%]
tests/test_mark_render.py::test_device_validation PASSED [ 31%]
tests/test_mark_render.py::test_hardware_attestation_binds_serial_and_firmware PASSED [ 36%]
tests/test_mark_render.py::test_physical_coverage_declined_without_attestation PASSED [ 40%]
tests/test_mark_render.py::test_packages_eligibility_and_indicative_premiums_are_reproducible PASSED [ 45%]
tests/test_mark_render.py::test_brand_tokens_and_logo_geometry PASSED [ 50%]
tests/test_mark_render.py::test_layout_is_collision_free_for_adversarial_strings[Claude Research Agent-Phanes Labs-caps0] PASSED [ 54%]
tests/test_mark_render.py::test_layout_is_collision_free_for_adversarial_strings[WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW-MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM-caps1] PASSED [ 59%]
tests/test_mark_render.py::test_layout_is_collision_free_for_adversarial_strings[<script>alert(1)</script> & "quotes"-A & B <C>-caps2] PASSED [ 63%]
tests/test_mark_render.py::test_layout_is_collision_free_for_adversarial_strings[--caps3] PASSED [ 68%]
tests/test_mark_render.py::test_public_view_never_shows_disclosable_claims PASSED [ 72%]
tests/test_mark_render.py::test_qr_round_trip_decodes_to_a_mark_the_core_accepts PASSED [ 77%]
Show the remaining 7 lines
tests/test_mark_render.py::test_badge_renders_for_every_tier PASSED [ 81%]
tests/test_mark_render.py::test_hybrid_mark_v2_verifies_on_every_engine_and_v1_is_refused_when_pq_required PASSED [ 86%]
tests/test_mark_render.py::test_mldsa87_cross_implementation_pqclean_vs_rustcrypto PASSED [ 90%]
tests/test_mark_render.py::test_pq_sealed_id_and_credentials_verify_and_reject_tampering PASSED [ 95%]
tests/test_mark_render.py::test_cpp_example_verifies_a_python_issued_hybrid_mark PASSED [100%]
========================================== 22 passed in 5.48s ==========================================
07

pytest-client-live

exit 037.285 s2026-09-15 06:04:31 UTC
$ /usr/local/bin/python3 -m pytest tests/test_client_live.py -v -p no:cacheprovider
========================================= test session starts ==========================================
platform linux -- Python 3.11.15, pytest-9.1.1, pluggy-1.6.0 -- /usr/local/bin/python3
rootdir: /Users/tofael/phanes
configfile: pyproject.toml
plugins: anyio-4.15.1
collected 11 items
tests/test_client_live.py::test_cli_lifecycle_software_agent PASSED [ 9%]
tests/test_client_live.py::test_cli_lifecycle_robot_with_hardware_attestation PASSED [ 18%]
tests/test_client_live.py::test_attack_matrix_over_the_network PASSED [ 27%]
tests/test_client_live.py::test_access_log_is_json_and_complete PASSED [ 36%]
tests/test_client_live.py::test_qr_carries_the_sealed_token_and_the_registry_publishes_what_verifies_it PASSED [ 45%]
tests/test_client_live.py::test_hybrid_marks_offline_with_pq_anchors_and_downgrade_refused PASSED [ 54%]
tests/test_client_live.py::test_audit_trail_records_every_request_with_inclusion_proofs PASSED [ 63%]
tests/test_client_live.py::test_security_headers_and_rate_limit PASSED [ 72%]
tests/test_client_live.py::test_agent_stack_over_the_network PASSED [ 81%]
tests/test_client_live.py::test_typescript_sdk_drives_the_stack_over_the_network PASSED [ 90%]
tests/test_client_live.py::test_deploy_bundle_ships_the_served_page_with_the_same_csp_hash PASSED [100%]
========================================= 11 passed in 36.91s ==========================================
08

pytest-web-verifier

exit 010.455 s2026-09-15 06:05:08 UTC
$ /usr/local/bin/python3 -m pytest tests/test_web_verifier.py -v -p no:cacheprovider
========================================= test session starts ==========================================
platform linux -- Python 3.11.15, pytest-9.1.1, pluggy-1.6.0 -- /usr/local/bin/python3
rootdir: /Users/tofael/phanes
configfile: pyproject.toml
plugins: anyio-4.15.1
collected 6 items
tests/test_web_verifier.py::test_token_from_the_qr_verifies_in_a_real_browser PASSED [ 16%]
tests/test_web_verifier.py::test_reference_ed25519_agrees_with_webcrypto PASSED [ 33%]
tests/test_web_verifier.py::test_tampered_tokens_are_rejected PASSED [ 50%]
tests/test_web_verifier.py::test_garbage_is_not_a_token PASSED [ 66%]
tests/test_web_verifier.py::test_missing_anchors_leave_the_token_unverified_never_valid PASSED [ 83%]
tests/test_web_verifier.py::test_revocation_reaches_the_printed_token PASSED [100%]
========================================== 6 passed in 10.11s ==========================================
09

legacy-test-all

exit 02.474 s2026-09-15 06:05:19 UTC
$ /usr/local/bin/python3 tests/test_all.py
<claude-code-hint v="1" type="plugin" value="stripe@claude-plugins-official" />
═══ CRYPTO PRIMITIVES ═══
✓ KeyPair sign/verify
✓ Child key derivation deterministic
✓ Pedersen commitment binding+hiding
✓ Range proof valid (ZK Σ-protocol) + opens commitment
✓ Range proof rejects out-of-range
✓ Range proof rejects tampered challenge
✓ Range proof rejects tampered bit proof
✓ Merkle accumulator prove/verify
✓ Merkle tamper detection
✓ VRF deterministic + verifiable
✓ Encrypted envelope round-trip
═══ IDENTITY ═══
✓ Agent creation + DID format
✓ Authority containment enforced
✓ Delegation chain valid
✓ Cannot exceed parent bounds
✓ Registry register/resolve/revoke (signature required)
✓ Registry: controller key can revoke, stranger cannot
✓ DID document uses real X25519 key agreement + multibase
✓ Verifiable credential issue + verify + tamper
Show the remaining 114 lines
✓ Selective disclosure commit-then-reveal verifies, wrong value fails
═══ CONTRACTS ═══
✓ Service agreement lifecycle
✓ Escrow milestone release
✓ Terms hash deterministic
═══ THRESHOLD CRYPTO ═══
✓ Shamir split + reconstruct
✓ VSS share verification (HMAC binding)
✓ VSS rejects tampered share value
✓ VSS rejects tampered index
✓ Any t shares work
✓ t-1 shares insufficient
✓ Threshold signatures sign+verify (t-of-n Ed25519 multisig)
✓ Threshold: no signing secret exists to leak (t-1 signers cannot forge)
✓ Feldman VSS detects inconsistent shares
✓ Proactive share refresh keeps secret, changes shares
✓ Time-lock puzzle: real RSA modulus, solve by sequential squaring
✓ Multi-party escrow threshold release
═══ TOKENIZATION ═══
✓ Token mint + transfer
✓ Non-transferable reputation
✓ Token decay
✓ Token staking accrual
✓ Token registry balances
✓ Token expiry blocks redemption
═══ STATE CHANNELS ═══
✓ Channel open + transact
✓ 100 micro-transactions
✓ Reject overdraft
✓ Cooperative close
✓ Value conservation invariant
═══ ML ENGINE ═══
✓ Isolation Forest outlier detection
✓ Ensemble scorer detects anomaly
═══ GRAPH INTELLIGENCE ═══
✓ PageRank computes
✓ Cycle detection
✓ Cascade simulation
✓ Sybil detection
═══ DISPUTE RESOLUTION ═══
✓ Auto-resolution on breach
═══ RISK ENGINE ═══
✓ Circuit breaker trip+recover
✓ Insurance pool stake+claim
═══ LEDGER ═══
✓ Ledger chain integrity
✓ Ledger Merkle proof
═══ BFT DISTRIBUTED LEDGER ═══
✓ PBFT 4-node consensus
✓ PBFT state agreement (10 ops)
✓ PBFT tolerates 1 Byzantine (4 nodes)
✓ PBFT tolerates 2 Byzantine (7 nodes)
✓ PBFT rejects >f faults
✓ PBFT quorum certificate valid
✓ PBFT view change (Byzantine primary)
✓ DistributedLedger application layer
═══ MCP SERVER ═══
✓ MCP initialize + list tools
✓ MCP create agent + resolve
✓ MCP contract lifecycle
✓ MCP risk assessment
═══ SETTLEMENT ENGINE ═══
✓ Settlement engine initialization
✓ Settlement record tracking
✓ Settlement rejects live key in test mode
═══ BULLETPROOFS FFI ═══
(Rust Bulletproofs)
✓ Bulletproofs prove + verify
✓ Bulletproofs tampered proof rejected
✓ Bulletproofs batch verify
✓ Bulletproofs fails closed without binary unless fallback enabled
═══ REST API SERVER ═══
✓ Server health endpoint
✓ Server rejects mutating requests without API key
✓ Server DELETE requires API key and revokes with a real signature
✓ Server create agent endpoint
✓ Server contract creation endpoint
✓ Server risk assessment endpoint
═══ PERSISTENCE ENGINE ═══
✓ Persistence: agent put+get+revoke
✓ Persistence: contract CRUD + state update
✓ Persistence: ledger append + chain verify
✓ Persistence: settlement + risk profile
✓ Persistence: stats + WAL mode
═══ USDC ON-CHAIN SETTLEMENT ═══
✓ USDC atomic conversion + chain config
✓ Deterministic escrow address derivation
✓ ABI encoding (transfer, approve, transferFrom)
✓ USDC escrow lifecycle (create → lock → release)
✓ USDC multi-chain support
✓ USDC ChainClient requires web3
═══ CROSS-MODULE INTEGRATION ═══
✓ Ed25519 signatures consistent across modules
======================================================================
RESULTS: 94 passed, 0 failed, 94 total
======================================================================
10

pytest-admission-payments-witnesses

exit 07.64 s2026-09-15 06:05:21 UTC
$ /usr/local/bin/python3 -m pytest tests/test_admission.py tests/test_payments.py tests/test_httpsig.py tests/test_enforce.py tests/test_witness.py tests/test_netinfo.py tests/test_publish.py tests/test_oversight.py tests/test_registry_keys.py -v -p no:cacheprovider
========================================= test session starts ==========================================
platform linux -- Python 3.11.15, pytest-9.1.1, pluggy-1.6.0 -- /usr/local/bin/python3
rootdir: /Users/tofael/phanes
configfile: pyproject.toml
plugins: anyio-4.15.1
collected 21 items
tests/test_admission.py::test_policy_decisions_are_explicit PASSED [ 4%]
tests/test_admission.py::test_attested_mode_issues_provisional_ids_with_sealed_bounds_and_renewal_supersedes PASSED [ 9%]
tests/test_admission.py::test_review_mode_queues_and_the_operator_decides PASSED [ 14%]
tests/test_admission.py::test_open_mode_is_the_default_and_the_cli_reads_the_policy PASSED [ 19%]
tests/test_payments.py::test_payment_chain_settles_and_the_merchant_verifies_offline PASSED [ 23%]
tests/test_payments.py::test_standing_bounds_and_daily_volume_gate_payments PASSED [ 28%]
tests/test_httpsig.py::test_signature_base_matches_the_rfc_layout PASSED [ 33%]
tests/test_httpsig.py::test_sign_and_verify_with_tamper_window_and_replay PASSED [ 38%]
tests/test_httpsig.py::test_the_registry_is_the_directory_and_revocation_removes_the_key PASSED [ 42%]
tests/test_enforce.py::test_guard_enforces_standing_bounds_and_mandates PASSED [ 47%]
tests/test_enforce.py::test_platform_issues_many_ids_in_one_batch PASSED [ 52%]
tests/test_witness.py::test_witness_cosigns_heads_refuses_rollbacks_and_the_registry_publishes PASSED [ 57%]
tests/test_witness.py::test_publication_manifest_is_cosigned_and_verified PASSED [ 61%]
tests/test_netinfo.py::test_lookup_summary_and_env PASSED [ 66%]
tests/test_netinfo.py::test_registry_reports_registration_not_location PASSED [ 71%]
tests/test_publish.py::test_publication_is_complete_signed_and_tamper_evident PASSED [ 76%]
tests/test_publish.py::test_publish_command_verifies PASSED [ 80%]
Show the remaining 6 lines
tests/test_oversight.py::test_controller_profile_is_validated_and_disclosable PASSED [ 85%]
tests/test_oversight.py::test_oversight_is_gated_recorded_signed_and_unredacted PASSED [ 90%]
tests/test_registry_keys.py::test_registry_keys_file_is_private_and_restarts_the_same_registry PASSED [ 95%]
tests/test_registry_keys.py::test_registry_without_its_keys_does_not_adopt_foreign_ids PASSED [100%]
========================================== 21 passed in 7.20s ==========================================
11

sdk-tests

exit 00.872 s2026-09-15 06:05:29 UTC
$ npm test
> @phanes/sdk@0.1.0 test
> node tests/test.js && node tests/phanes_id.test.js
═══ CRYPTO PRIMITIVES ═══
✓ KeyPair: generate, sign, verify
✓ KeyPair: serialize and deserialize
✓ Pedersen commitment: binding and hiding
✓ Merkle accumulator: add and prove
✓ Merkle accumulator: tamper detection
✓ VRF: deterministic and verifiable
✓ VRF: different inputs produce different outputs
✓ Encrypted envelope: round-trip
═══ IDENTITY ═══
✓ AgentIdentity: creation with DID
✓ Authority bounds: containment check
✓ Delegation chain: valid chain
✓ Delegation: cannot exceed parent bounds
✓ Agent registry: register and resolve
✓ Agent registry: revocation
✓ DID Document: W3C format
Show the remaining 29 lines
═══ CONTRACTS ═══
✓ Service agreement: full lifecycle
✓ Escrow: milestone release
✓ Contract: terms hash is deterministic
✓ Contract: obligation fulfillment + completion
✓ Contract: compute task template
═══ CLIENT ═══
✓ PhanesClient: instantiation
✓ PhanesClient: with API key
============================================================
RESULTS: 22 passed, 0 failed, 22 total
============================================================
✓ holder key from the Python seed
✓ canonical JSON
✓ canonical JSON refuses floats
✓ key fingerprint
✓ JWK thumbprint kid
✓ protocol DID
✓ domain signature (deterministic Ed25519)
✓ contract terms signing input
✓ evidence signing input (float and integer-valued timestamps as Python prints them)
✓ vote signing input
✓ request statement is canonical
✓ compact JWS round trip
12 passed

Walkthrough against a live registry

65 sessions · 57 s

12

cli-doctor

exit 00.421 s2026-09-15 06:05:30 UTC
$ /usr/local/bin/python3 -m aeos.cli doctor
{
"brand_fonts": true,
"core_bin": "/Users/tofael/phanes/phanes-core/target/release/phanes-core",
"core_engine": "rust-cdylib",
"core_lib": "/Users/tofael/phanes/phanes-core/target/release/libphanes_core.so",
"core_load_error": null,
"core_version": "0.6.0",
"module_PIL": "12.3.0",
"module_cryptography": "41.0.7",
"module_fastapi": "0.141.1",
"module_fontTools": "4.65.0",
"module_qrcode": "present",
"module_reportlab": "5.0.1",
"module_uvicorn": "0.53.0",
"python": "3.11.15"
}
13

cli-keygen

exit 00.165 s2026-09-15 06:05:31 UTC
$ /usr/local/bin/python3 -m aeos.cli keygen --out /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/agent.key
{
"fingerprint": "b2570f57ef60b40500d68297731e4796bee8c707e6e96d51540b162a0157e0f7",
"path": "/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/agent.key",
"sealed": false,
"signing_public": "UyIhxW6DITAonB7OEifdPf8ChI9wmvL6hfaU0CAADqs"
}
14

cli-apply

exit 00.566 s2026-09-15 06:05:31 UTC
$ /usr/local/bin/python3 -m aeos.cli apply --server http://127.0.0.1:42643 --key /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/agent.key --name 'Ledger Reconciliation Agent' --controller-did did:phanes:org:phanes-labs --controller-legal-name 'Phanes Labs' --jurisdiction USA --model-provider Anthropic --model-id claude-fable-5-1 --capability transact --capability sign_contract --capability dispute --bound max_transaction_value=2500000 --out /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/agent.id.json
{
"activity_log_id": "urn:phanes:log:wcKdrWRbn2fiZg0GZ0yeyQ",
"document_type": "IA",
"expires_at": 1820988331892,
"hardware_bound": false,
"id_number": "A7BFQTESV",
"jti": "urn:phanes:ID:qfjJDVW-XUjZWHALoJa0dv34pb4JZqEk1s5ms5fvbNA",
"protocol_identity": {
"anchor_id": "anc_1c3198ef025a9aaa82e3",
"did": "did:aeos:0f897ecebc5f3fc8ab34a2d3a390675c",
"registered_at": 1789452331915
},
"saved_to": "/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/agent.id.json",
"subject_did": "did:phanes:agent:Su7mUvo9frLvnCXpDMTzNxSCXpkEEddQ"
}
15

cli-id-public

exit 00.516 s2026-09-15 06:05:32 UTC
$ /usr/local/bin/python3 -m aeos.cli id --server http://127.0.0.1:42643 A7BFQTESV
{
"expires_at": 1820988331892,
"jws": "eyJhbGciOiJFZERTQSIsImtpZCI6IkppR2hlTTNzZWpBWXB0UlMxZHBrVU5reDZmQlJKbzJwaHcxbHlLMjVqcVEiLCJ0eXAiOiJwaGFuZXMtaWQrand0In0.eyJjbmYiOnsiandrIjp7ImNydiI6IkVkMjU1MTkiLCJraWQiOiJORW5wYlBLd042OFpuZ19RVlhSZ3g1UDdhaFd1c09sekg0SHpBSVlrbURnIiwia3R5IjoiT0tQIiwidXNlIjoic2lnIiwieCI6IlV5SWh4VzZESVRBb25CN09FaWZkUGY4Q2hJOXdtdkw2aGZhVTBDQUFEcXMifX0sImV4cCI6MTgyMDk4ODMzMTg5MiwiaWF0IjoxNzg5NDUyMzMxODkyLCJpc3MiOiJkaWQ6cGhhbmVzOmF1dGhvcml0eTpKaUdoZU0zc2VqQVlwdFJTMWRwa1VOa3g2ZkJSSm8ycGh3MWx5SzI1anFRIiwianRpIjoidXJuOnBoYW5lczpJRDpxZmpKRFZXLVhValpXSEFMb0phMGR2MzRwYjRKWnFFazFzNW1zNWZ2Yk5BIiwibmJmIjoxNzg5NDUyMzMxODkyLCJwaGFuZXMiOnsiX3NkIjpbIjQ5eXNaa0pCSU96TmZxQzYzeW9Dd3dVS2hBNnlSOExndVN1aGhzYTNyYkEiLCI5STlQelRkR0M1eEpMV1dJdzk3YnB4bDNyOGdtSmR0WjZ4MUVyT1JXWV80IiwiQTd5LTh0NENscFRFZFlTTUNtdzh5NDQzNnNtUnNfd2pwRC10TWtfc2dYVSIsIkdPbjhla20tOU5ab1cxSTRYT3lDVzZzcDh0X0RNc0xLM0U3SFNoWk0taTgiLCJPNHozSjZ2ZUpPYnZmQWFxTXQwZlhxQVh4N2xxSUEwT2k2TUtrY2dab2RJIiwiUE9sZ3pmY3AxSVdUbHZQdFBFanl6WU1yTkRVUFFORm5DVHhKTDItRUlwTSIsIlpMa0h3NUYxUUE1bm96T1JtNEFSUURsMHpCUm8wSHY5ekpUVk5DaWhBaWMiLCJfTkxvRTVQVUJON0JJR2RLMGcyY3V1Zk15QTZKODVqTHoxek9VeHpCM2pZIiwiYTlsXzAtSm1YeE1nQzB3aThlcTAxQkFxOEFUOWVtX3piVnNvLWlybW1xdyIsInhQdlVoX0MwRnNYMEcxNkhCSXlDV01vZndlOG5zU3c4M3hRc3Y1X29NcHMiXSwiX3NkX2FsZyI6InNoYS0yNTYiLCJhY3Rpdml0eV9sb2ciOnsibG9nX2lkIjoidXJuOnBoYW5lczpsb2c6d2NLZHJXUmJuMmZpWmcwR1oweWV5USIsIm9wZXJhdG9yIjoiZGlkOnBoYW5lczphdXRob3JpdHk6SmlHaGVNM3NlakFZcHRSUzFkcGtVTmt4NmZCUkpvMnBodzFseUsyNWpxUSJ9LCJhZG1pc3Npb24iOnsiYXQiOjE3ODk0NTIzMzE4OTEsImRlY2lkZWRfYnkiOiJwb2xpY3kiLCJwb2xpY3lfbW9kZSI6Im9wZW4iLCJyZWFzb25zIjpbIm9wZW4gYWRtaXNzaW9uIiwiY29udHJvbGxlciBzZWxmLWRlY2xhcmVkIiwidGhlIGNvbnRyb2xsZXIgaXMgbm90IGF0dGVzdGVkIGJ5IGEgdHJ1c3RlZCBhdHRlc3RlciJdLCJzdGF0dXMiOiJhZG1pdHRlZCJ9LCJkb2N1bWVudF90eXBlIjoiSUEiLCJlbmNyeXB0aW9uX2p3ayI6eyJjcnYiOiJYMjU1MTkiLCJrdHkiOiJPS1AiLCJ4IjoidnF0SndSazE1OFg0SkZtMjEzbWFxUXlOUV9pQml1cThiSWx0MTRnMFNRNCJ9LCJoYXJkd2FyZV9ib3VuZCI6ZmFsc2UsImlkX251bWJlciI6IkE3QkZRVEVTViIsImlzc3VpbmdfYXV0aG9yaXR5Ijp7ImNvZGUiOiJQSE4iLCJkaWQiOiJkaWQ6cGhhbmVzOmF1dGhvcml0eTpKaUdoZU0zc2VqQVlwdFJTMWRwa1VOa3g2ZkJSSm8ycGh3MWx5SzI1anFRIiwibmFtZSI6IlBoYW5lcyJ9LCJrZXlfZmluZ2VycHJpbnQiOiJiMjU3MGY1N2VmNjBiNDA1MDBkNjgyOTc3MzFlNDc5NmJlZThjNzA3ZTZlOTZkNTE1NDBiMTYyYTAxNTdlMGY3IiwibGluZWFnZSI6eyJnZW5lcmF0aW9uIjoxLCJwcmV2aW91c19pZF9qdGkiOm51bGwsInByZXZpb3VzX2lkX251bWJlciI6bnVsbCwicm90YXRpb25fcHJvb2YiOm51bGx9LCJzdGF0dXMiOnsicmV2b2NhdGlvbiI6eyJpZHgiOjQ0NzM2LCJsaXN0X2lkIjoidXJuOnBoYW5lczpzdGF0dXM6YXBJeHlMNFB6ay1aaldZbiJ9LCJzdXNwZW5zaW9uIjp7ImlkeCI6NjA5NjgsImxpc3RfaWQiOiJ1cm46cGhhbmVzOnN0YXR1czoyU3RZUkFYdmVDWEt5dkd5In0sInR5cGUiOiJCaXRzdHJpbmdTdGF0dXNMaXN0RW50cnkifSwidmVyc2lvbiI6IjEuMCJ9LCJzdWIiOiJkaWQ6cGhhbmVzOmFnZW50OlN1N21Vdm85ZnJMdm5DWHBETVR6TnhTQ1hwa0VFZGRRIn0.JCftadUfgbEYP93dHevrVrd7asV2dKA6gc5ULXAbfYe3vJgmL4jKV1LodXFJzL6w7gKbkMcj5g993K9yUoHEBQ",
"public_claims": {
"cnf": {
"jwk": {
"crv": "Ed25519",
"kid": "NEnpbPKwN68Zng_QVXRgx5P7ahWusOlzH4HzAIYkmDg",
"kty": "OKP",
"use": "sig",
"x": "UyIhxW6DITAonB7OEifdPf8ChI9wmvL6hfaU0CAADqs"
}
},
"exp": 1820988331892,
"iat": 1789452331892,
"iss": "did:phanes:authority:JiGheM3sejAYptRS1dpkUNkx6fBRJo2phw1lyK25jqQ",
"jti": "urn:phanes:ID:qfjJDVW-XUjZWHALoJa0dv34pb4JZqEk1s5ms5fvbNA",
"nbf": 1789452331892,
"phanes": {
"_sd": [
"49ysZkJBIOzNfqC63yoCwwUKhA6yR8LguSuhhsa3rbA",
"9I9PzTdGC5xJLWWIw97bpxl3r8gmJdtZ6x1ErORWY_4",
"A7y-8t4ClpTEdYSMCmw8y4436smRs_wjpD-tMk_sgXU",
"GOn8ekm-9NZoW1I4XOyCW6sp8t_DMsLK3E7HShZM-i8",
Show the remaining 62 lines
"O4z3J6veJObvfAaqMt0fXqAXx7lqIA0Oi6MKkcgZodI",
"POlgzfcp1IWTlvPtPEjyzYMrNDUPQNFnCTxJL2-EIpM",
"ZLkHw5F1QA5nozORm4ARQDl0zBRo0Hv9zJTVNCihAic",
"_NLoE5PUBN7BIGdK0g2cuufMyA6J85jLz1zOUxzB3jY",
"a9l_0-JmXxMgC0wi8eq01BAq8AT9em_zbVso-irmmqw",
"xPvUh_C0FsX0G16HBIyCWMofwe8nsSw83xQsv5_oMps"
],
"_sd_alg": "sha-256",
"activity_log": {
"log_id": "urn:phanes:log:wcKdrWRbn2fiZg0GZ0yeyQ",
"operator": "did:phanes:authority:JiGheM3sejAYptRS1dpkUNkx6fBRJo2phw1lyK25jqQ"
},
"admission": {
"at": 1789452331891,
"decided_by": "policy",
"policy_mode": "open",
"reasons": [
"open admission",
"controller self-declared",
"the controller is not attested by a trusted attester"
],
"status": "admitted"
},
"document_type": "IA",
"encryption_jwk": {
"crv": "X25519",
"kty": "OKP",
"x": "vqtJwRk158X4JFm213maqQyNQ_iBiuq8bIlt14g0SQ4"
},
"hardware_bound": false,
"id_number": "A7BFQTESV",
"issuing_authority": {
"code": "PHN",
"did": "did:phanes:authority:JiGheM3sejAYptRS1dpkUNkx6fBRJo2phw1lyK25jqQ",
"name": "Phanes"
},
"key_fingerprint": "b2570f57ef60b40500d68297731e4796bee8c707e6e96d51540b162a0157e0f7",
"lineage": {
"generation": 1,
"previous_id_jti": null,
"previous_id_number": null,
"rotation_proof": null
},
"status": {
"revocation": {
"idx": 44736,
"list_id": "urn:phanes:status:apIxyL4Pzk-ZjWYn"
},
"suspension": {
"idx": 60968,
"list_id": "urn:phanes:status:2StYRAXveCXKyvGy"
},
"type": "BitstringStatusListEntry"
},
"version": "1.0"
},
"sub": "did:phanes:agent:Su7mUvo9frLvnCXpDMTzNxSCXpkEEddQ"
},
"revoked_at": null,
"subject_did": "did:phanes:agent:Su7mUvo9frLvnCXpDMTzNxSCXpkEEddQ",
"suspended": false
}
16

cli-mark

exit 00.566 s2026-09-15 06:05:32 UTC
$ /usr/local/bin/python3 -m aeos.cli mark --server http://127.0.0.1:42643 A7BFQTESV --out /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/mark.bin
{
"fields": {
"expires_at": 1820988331892,
"flags": 0,
"holder_key": "UyIhxW6DITAonB7OEifdPf8ChI9wmvL6hfaU0CAADqs",
"issued_at": 1789452332960,
"issuer_kid": "TkzI6EekHgs",
"level": 0,
"number": "A7BFQTESV",
"revocation_index": 44736,
"status_list_hash": "qv2FJhfFmx9T6Fy4",
"suspension_index": 60968,
"version": 2
},
"issuer_key_id": "TkzI6EekHgs",
"issuer_pq_public_key": "maQlxahGrU3VBCo8UHB9lXNDarKK9AcnrM_9sexFHs_0PuE-eRIE9IYJ0-OTHHbxt4PX3MwJyiaIIHS_plm_XiK0RZ1OX3Y-n0eeTSB8ZIU0A-DaydK1qXebxbd_32twiXT0xhzWgoelaRzfqhkMP2gUnzd3Z73XIBSHe3-Vk2VM4WZw8v6hzQqwxlmbE9J3UIEgAyOGNasRGZbDEGLsLabSEsgfdZmcWRBJGqMTvgQtcVg9-fQmzbpHQcIKEyQkT58eHsqXNABpbLMmLlaAkBNoDAYYtxcom68rHGL6R_TDIxFdqFDTlVjPT6Br4l3vdwVDqgN3NO1b7uVPTAAh0e38EIoXt4X_s2ugVjJZ3bmh5JUL5fzUmEBBeV9iYygha5NrIv4Y8mueps4_Y5GWZMKuGNaMj6RY6Y8QUuz_Ss1a1dwe2fKM_pK4yfUzLn4lir0Q9OxgtEJxcM7R3KZqorDxr9GzTvaz-sc8LJrWSJ_ANOGd-UYztIL6ZuE6VoMnz1uHYTAe0_W08A-9z6kVRusx8t-1_G2iJYBfaGrIRebWkxBgXMqtLlncxQvrRbhF0-WZRJx5ksytuqBLq-xgK7x15eZN2ZtdyqoSSfxfUZIUEOKaSLZ4hDumM1-vyBzaU8kr5F2gTQYx3JSQUhE3ujoHpRnBV8r0emK_c1LB-ecEByyQ3lrbypqkkcKIX3jXjS23rmHaj_oDIqF6sRj3jQnNaYft9ddNYYMqfcmvwiTTpQsJljVav1Pld_BKHIR39anfPSse3Zko40Ho6SUcaq2oXfNuMTZR0qMypV4STAFFSZO9z1CYOsqLry-oUxzP63HN_LLNL7BAojTER7E01UN_9n1Xtf-r1ZLuQqor3-VCR-JIi4e1PfbdUym-d9MUFW090DBpufm6gJnOw0EYelLMx70xuOTCouTrt_QBDH6FBUK-42diw2np8Xg-kCngND2labfLOJND9kvypI_3HdgRkP2HipWN_1qRnj2tknK-1-GOIunOez5iI1-qA4QYLb_b8a3Iv3t-1lvNyEBREU4aDA9QuggJnihMpyHQGJK6lIZXOqpNk4rqvUpqiMpW_PJW7KYgNulnWrl_jf-dyiLNQ-kXH6ddVg_oQC6tiu85yEN-eRmpEmcM4on0hfzVU_JQgoriLT7HpWDLexvHsrwKWQwhQVBxjs9197KmxC9IjzCEb6XdFQtOdRFcW9AxASLRRR4GveBLnJdW1fj47NNrzcObDTWUbBy3Zzep8Z_dVj4U0GChasBiCPYgBB1eUhVG_PyEUVFFtb6-LkVawVyeqIgU8ihLajLG6IUTl-hGPLVtqyoNc5OVXRqwOqyyQwCK3Jgt6hnpWtU_3dITPXYnFvkJCeOag4tf115N1jjxt8dxdo0bzAMtdJiTeWLiV1uZym3sAbl-dhbL52jhXcCrLL-amJ8uGFPL1I8FNtWpbkxwY9DpSr9The6DVP7Gjh4oRy1ILgNyEICuykynVb86NkQniSoC0m0Ul_1clH_yk6F8B9eZv8XxaOfehRGrS-wWVnzC9AkfY0g8tO0va1mKFaDjlvmVHluaRx1dxvGrpDQoZcJNksG8WhtwlxF1VbxeR7UcEzfrshRh8MBofy3ZnvVWO-g3rLnYYMm_UCsxMF7bQ4gNXCh2MEn-YKqBWwm3g41eyaJPIBBFBVM-ZZxDYwvt9D1YxpZ9RRbIBxWk_YFsJPriqp5wnUAbDyvUd5OSy4xCsOzA4vhb6TnpmT0N5Dqx9cWyhqP-AJkw89TkuF-jSQAG9hpP18ExKTysRSr_55_0Us-tiyrOXxukuvVBJF-vxTAwI-3uRokVn-5-6vLDW3pKVrZCMWEQXYH36fO_NpDiQHdAdn4nOdkey11xuqfSgSEcED5WMLMszj8XSbF5_bx66raY2Yge4y76E97Kb1VD4MIwmecPahrvj1HZktDPNgReLDNy-UocQwarbt1rw7H_BqPX-FGYeI2QO9xZ7vnDeTZqgJ1Cqg7QqX97lOUpJbG9jCacse6AHCvi05VaemabS-agsjQuya0m2cBbe_6Ma2PA3cMIesXGmZZ3LoMpqS7WqeKNy6gGBVe-3DnbtUdYxrhOSOAtq0J-8TZWGmQ1RZvPJBtjdUMC9Yu85SSYleqDAE7VeNKvFaCrmr3gS2_L7TKx-oYXLNj0XiQtZcuFq9UE6kPy12tlcGHI_AW6dadsHiAZJCTd0yZnYOsdBKDTit7F0q62r1_T266-mGPPlV6PQGLW3DQQqF9ZQInLjz8H6C10S99Cqg5M4TgReSY7QKHMUDH3BL4WO57abp87H5UNM1Wkrlwt3CUlVKWFMGX9C8ftFAFzIzG8rdfSEGX7xRQDp8i_oMcE23QqQAM5haVkETewokPChscRLCbo-rI28abMt5WcnVlNwRLQTNcIdbadBnH-tUOsvqumbuMivY7vWzOlL2LO0VStt5GnFFZiGas3NIi6wR_dfrrak7DiaVPmopvxYs1Npu8GLzmw2E7P84ejAgx02B7_YsF0f3A2GlDxuPJPfpDU0SeHEtfJfruiykGIcUu9Nu9B6ZjgdVtpvH57RdajBgYYsW-WwQaaE3q5QKR9uDVfZl4foZtvbdr3T8YiZ62mPQIaM5HPyjA07qyOaJQd4tKowE69fCk6N4UKXgo85d59NMo9enFG859z1PbBZ3TK-b132BJWzFJZ0C4NSIBlyWZ__CVc2-DgfSbbINWlxB9TTEjZRjCa2Bskv3z9Rw0FMBe2zXpZ-XB0pfjxaFkcynL-6TEczTDWc-te1X4DGyqZa_gyOUwxaZBJQZwxTuAJM-Wa2IQndzuX04OROQPwW7tfQLjPJkrW-Np5dziQ4LipmpgUBZkHTf-lsiy8LLmRpSE88trHywqQGANA0FzWse8FpfcY1GIMuE3VacrLbZuTx0Rh5AKBeKfWg-QKG_Tj0_F8bT6TLu3gzkW_tU8Ghci5cgsQ0HtTRP2CicndPB6mNNSn4YrFgzxrMcsisEeuhVYuHSPD8G6l5AAHNyBP01Pbqp41WghD856OQwpa3x4KlHdd0V4ibHbnhPKgsUVRm6qJ-v9_4gsxEaC6Kpmyus_JFo2Xs-702bEkv2GtbCo2QiDMKfSTUZ2grsCiBLHoN1ZzvzXh_bOO3QNyhhNfiK988t3Z_gV5z3b1H2H8cDwh_xIncM6T3ItFHsTRUMVqmGTKdf8GYf61Dx8U0hy8lzoNLaWi9fv1jHdCLMFnMTif-RrsIDe4Mva8YuFA9jvcldbBFE2rP7acjZA4Buh0396hkb9Ze-Zvbwc0Ypdrll0eAqQ_mSmxXSsEDQNezTEXA9x5jUo-zwvip0h9VrIHueqiGxFSisSJgh4K4qVCIPQauzfVWpOhEzqHMee0wlbOCnogNrO9jvV9gSFj3W5-yxCpXPN7n3eBVyfxqj65tQeNNvQMJCEQAA2CSEGHRG4h",
"issuer_public_key": "yKBrE6Rcro6Sgt5dwIZQEEV9Z_KV1yQ0d2nkzSgMcwE",
"length": 4787,
"mark_b64": "UEhOUwIBAABBN0JGUVRFU1YAAAAAAAGgo6uvoAAAAaf7XNd0TkzI6EekHgtTIiHFboMhMCicHs4SJ909_wKEj3Ca8vqF9pTQIAAOqwAArsAAAO4oqv2FJhfFmx9T6Fy4BKBER9w-c39BSi-NgDCQpsVd-zbmTWECsuhdrQb2Hs2-24g9gys-nlmcg7duoyba9WMVZUU4kye9L-gugqo-B7lSnG3lcaoJtpb1taE8ZCvybspvjINZQkiCXefUtIa6_Teb8Zydvodvr1mvaupbAucUGCCRFS7MsLmLB7S3BvL29cPDTvJlTH6rdOB85Ei_z6h_-6tVvp_cZbelrA1uc-7CqcKlWIb-Yxy_TfORaQc0971Bb0yXrfKFgDowDgfp_ktPbUhw4-9Lknp019LoDu88jD0aLSxjtIdQn-hqThIlQl2Un6HOEc01XESaeO85YMuCuWZ5MuPA2zgx9bMCXl0op2y22H14PGTq3DeXwzh5yR4_5pZ1ZoicTf9pbPO-1L3BsNSGw6z6RRLk3p8yEwI16ATzlCVVGaiKQJxlFh5XnrWCnp_HpD1kHDajFtGlpH_9InfjudPWAeOc0i8egKp93aaSM5di3G8Q4jrC6g1x11hCkddhWngV1sPw4NZHmebMhrrifzWVrAtqVAxoANusJQ6ZafP2hOF3DaXWi7hnDN8mfirKv9DxdkNOkEUHAoAlpgTVr2g5j7vOMc_p0_lhzBye-5GpHrRzITH1oWvaUi9uzW7wfi1X502OQQLZOP0f26n4HzmQbSOWP6vA4YQXoQuzUppOBH7tAuBSY4wFCCeACZ95pO3Oc4SNNa5NqaKs1E6Dl4Wp-F4anzWeJ3JjssCu3OStQ6umdiPqMwuzzfI-iYhbECR1ZwIm3vDOiZMnZypP_ZZC9UilUHjlCSHLKS4Y_E0viwUmSEUIy37juVF1pPNFzRwTS-CzXUI1hNUaF3VMU4OGwGzM5E_tkPEs2i291xVptWXHrtDShEWF3eYpEGE3GydrmHjuFex2fv2LPEUIfybQ_FCXUxEaeqYyZcuVuuYBNORAlBV9UlgkOdOKxx0V6O0hsX2i1gqpXQlf1KwcoMr-Oc4ueuioJFYSt-W_4wyoqIjgrIDIm4O3n2TT7_krcKP3FZwPld9FLUSe6S3woV2ehfYp8UDtxAS2AJozdNI31ITy9yrJNsg8ZoQO_EtEEG1y-UEUhibEZ8clGPLBt24fqtwLMXE925flJdFne2o5i9eeiQJeErsqN9bvZe51aBbjZYrRFVjc8VCuTAqZ-jkfm46xABg_5ZAYe8vkj9lSZmYxIOGOtY4f66Npxy1hrf-TV6KLHxsUtaV_HroqfYqzhR5RToqAoYS_YP7kEE6COyAuoK3eMSwfdIIKf7_h4UW2-dM2Gby6-cfsAk-wc-yV69tQUUZfIeB-Hm0iBlGiPPJNz7f94P96iGne82JfYrd_b6V3uSwnjel9rtA4_Ir8Wm0WLyCHKNTa2jsZN2j0IbP63Qvs834Q7qAZia9PJ7Z1XIDyfESDk13cA5ATkpR_BEbZGqYakTFtVNcjV44FLpyrHTtLTOq5h4CZT8zJWT1wOwsaWCNZ0KcBmt1gB3aWx5SZJPU8VpjvBfrIuV5I3D9ai9ssE4dgxhur5dut1FBBevY2mjFhvoJ0N-IcLL39ese9V7eAml5dEwmzDYcTNZhIiEEJmrN5vLOonXPvTnb8FYfIPZ6MI0Xg9J9u6Wj55Cz4u9SeKJ4f0BGaI-qIdDxnGuGY7pL2FUMInWmLDWncDkOKPPRZyWIMsOczncYKJF-07gBT4U8u4XoTRWbZPJ4IwKg_1_AuZH6nckWPKdOGw75qkaStEQMm5ypbf5G40eBT02SdzlsD_eay7_gZ_iSwX0E39La7GLfrDA4n0GfAonephuaa4pfkgIybNnrZe7jHX25_qwhDUrO4N0hZE8EIvA1JaN1zvRs3nOrwMnKduK-UlFMMyQ7S6tFWZzdYrn-gSmtHGcfXi8I8G3tA8rUfSNL08zn8EuIYgztDhx5DVKid9oq06EScrKu7MQbkKKNQyle0s9TAjhj34H0I_wdKebNr7iThklsZJ91ZBwQsdy2qJBIhz_jbNoUNEpGnisy68bS_rUWdhJjqahEsNVmW-uvDlRe113ZaC8XXcyvF54Te6J8e8mEsxlhKRDE9wBa1Yg6vd2prz5f88cJuffNPRYQXKmmBZLPyyRPVQ6VobstJGJtTfHtfqGEJpGsauI9vALD6R_40Opj0S4pLPeHtuwI6kLU5MzXj1TbpVbdBd5aVk4Zpx1oQGsgbhNZi6wrk9isciHX7FNAZvacmTuNMaZ-87twzas5zkDXn2dJpE8D3Abh99qj6zA8lFEt_SizXMZHJdfL6TsFAwokJdah-ef9ZG06wFB-AuTbWmh-KYa15z1n7wLhjx-fCbqRPklXMNdSbnEngT_RM-_-sFrp5TD3jnvwBe9MUBnG0OvGauA86mYMFlOU2pyfaQjrKUc1UudxEvAp_rfNFAl0VOVwL43S65SKMfxwyoHTkl5rpoZJFWljDcckH4ZMYGYtSZbXQssKEs6H6RDMFJU9Zz7H9jiAnf2uKSPadrC4u5nL10TjjoDwNEmZRvaF4lmpmKszx6QOeMqI5JNlYofMo8QsOMFBC0BQ0jUUPkIod18xofHGVi9tQqtmo-jhE3-KE_c1xRwBrVyTyTNl9bEyOKkTpw_XIkcJniMPdMBXE1h1FzILdmrnQ-1OGcOA4FOOvAqhgPi1IOJDJRDHYQVItN37keqwz7EO_YVIPRtF6h8RPlFCGs-OI23m0Sx5mOayRPmqqInwimxCeh5CL10A22H3gdwKeXBewlamB7931l6qBvakdzZCN3sIiADvtUsIGxB7zYypBg73qnyogtTlpu2l4ZdhlkivGsdCfwJXkLMjxzELKe8Y7ngckFnnDyo6C0vOIEeci3QYEH3I49QLwLLF22wSCjDOZHYg8BIop_NrnWtnMcd62WnGJdjnJMrUIwAyfI8v_a1YB3bZoafMP7WF28ZIDjGjX9_HkctWv5ICGo2r98Jm0oEK-v4FaFaKKjAMxSQcfwFwkVYGO5jz4dKr85dSRU4uljgQoMAhKTsgshj1_FFHwuWkgRiUa7xUzaPkyRq4UtMDjtiR2jvadsx4mMDto4CJbJU7Sdt7Nm6AmRo1JXwRBHkukyI9RZq_mtct20BMqLEe-bclMHsYPfTjvE-BS-F-g-iQBqFmRYEYuy1h5lrV7U131gVVbR-zy1opRtDJGc--3b3JnSa2BUr0c38ZfdjaaXcmfhEALckDbdx4SL9XaWqYEwp53fd4bwiICn7y4tsNYDP1lfszA7n-r0gCGHq_QRVqdOjxpd3mwOZOUePohM_I-Y7rKvjSQ0LPXAFYwy9eIdkszGBz0WjNIYBOT6PFU6rqveMVdWmNcaq5J5O9vhq4-gSIm3HkACtgUOH8i3KTuIPqtOV9O4evRhtLHwYV6HHz8xvFZgRMBKNLmhuegM2cnOK5pKpsykycNti2peJkkHaiamyOCVbRaQ5kYZdA-AuU8XucLkZKkn4aXcz0sjAE1PU1k5NrsFyNKmq-UfQlAP-wror_yIKD4jlWCQHqqsmQ3uNgccIp0zXn7sPKl_cCl_doTzxjw1I91kzw9fUzaD8whYISacmXyfuxBdTlOf246t26qXhreLF4hn8_pgqE9yajSHPHANKGcoBRjD1kxWtD6JYXL5jHdlCxF0m2Tsspx9TmUiZmcve6-hDiNRc8pVLKstYhHQ8hiMkYx8ABp_7ZS2_C8PDM7J_yOlPcT1PtSsiZvzeuvdOmtB2O_vKT2VHPIu5KdC6l_N4coXUFWNfaQgcP1DtHt5aLsTNImqFxeMfCIrdayAHZ8821m_ivVqp0Efz_m-WZ7YycAUOmc4cRyWLk0AO2G55HUjw34FRa-OYcuW5g7AfUUEPb6A8EKRluR-VKHP9g8_l_ytczzcb5xfISN4HVdxNrgdG8A8K6t97oXARE-mcIFO0j1iW2OkFogLYDQjzn3VanFQQhfCC_Jmaj_4d5LM3IhS09Ac9cYqK7ezFF2XASDP-KEvHowBmc8z9zUYUaBHHEticciZCTyckFV0dqJDwiD1eFwFCOmoQ5lpST2gCRm209K4r9gDNqSaP1tPZGr7RuKnYK3aOIYFvH5IOLoJZkjqEsqZNiTQA60IVUmj6n4SgKbznSXU2AB3KH28wEuCvkOwY_dNXaE9flYKaOrMGGQVf6NbpkvfJOI89hJzeJEKLsJc73d96NicdCcm5w2enfoQdwsl7uaRlYCEzse3FEhmY1Kwesd9_uZX2LKPiptzKS0CjXretj-ErIBpiVtqXJVUcHxReRE34kyWGwo8s0nxgDSRKCbTXDRYGRdOgQUm19wd86kYxex3z5Kll4eALEJvcxnOmdixbTRXKdFhfxUvpxWH1wCBtQ-ewOsQ0oScViups6ndNS-jo5zooSuyafp2VLAGniGv41S5JX2BfXFv7hlC1Lo8FCnd6rNopalOBDnEzfvlaewaLY0nMAUv7GGFBOX-ibJOpPZU8O_Qh93CqTyr6SpuEZhTTDd6UhGzbhjICSupfIuwEfQy4zzZErNuu03Gbbctd2rc_lV0vnZv3KoPts_VDSu3JpZlfHkib_V8GaMU75cZlJNk1d3cpDqTOEmvrWthVHiQUXrSPo1cfMmVOEI-L1JXC7bpDBZSWvq4YOC-nsbuYK19OzDCNrmfzTGKHeYXkD1p-6tDBZeyDSMJwO57H1GsuZbidH1D8IeDzHwuEJiKHV48zxFda-TnHrc49k8adi3B9fFJiX6CioZIZ6L-H_Wzh9ppBfkhSVTT0GbVj9VRHvJKNPLhMhG8urys8eeRdmeDSahjDULyE-0feF5R3zMrBW5Y9dP8wD7P-EDgBi2MOFGQvVleGZNKHC1hWVAw4JoNMkOUfaY2vbnpz3KyWLDiFcr1yPc7-0KGq8913fUxMQMSmbo0TeDhGoAD6rJtObi9zdpucrlrYiwLaI6BCmQvDKL1YTp2J_vV2qATjGPLu0tz2seak2wzPAdG8PTw8wAIcj29Ue7XQcjLkHEu9J3NSkIGjVSDjbaFkEido910PT1_auOVd05toalHIN7T51B9_junyR6Zq-NgllHH3dwv-LSvI1nqyuIfkoRFsQNloQy7PmoZvm6Mug5D4pAmWfq2H5mlO9sgMT5tUQaHCWejptUJVfKR-poVK_VjIBYxM4_4AF6Cox_YmzNPdfKx2PurFlsXhjavwVakqNsYCfTAytrBzXdjpLAz8WO8ivdYw-8muPqNjLd43ROpuareHBtv0aazwD7UH-Me_dYc_vG30EwQiZjzrL57Ws3zoZAIfR-P-LKdGVfzsAnxvzQtfL-t07HXX-HZH3WGE7bpuYOPrFjc07YWtqRc-6As9yiuIyC5nOf2d2PYCU3F-18-46RTcfQS2E-57OV41MwX2GL1DDS4HaEbcEqteyVXyEjQfkicZr735x18Ce9yJUhtxf1h1GAPgMgMnOBf3BQcAWNC1BJNWy5UKoKTclnmCJHk_DMNUdVw1OEVYMVprrp7rdn9UM2Pb07V6ObGZ-O51zH73eJPH49oAry0Sn4MKiRfxt0TkLakZN9UqnRDUj3778zwBg83IFPtpwP_Q5VciogBznKRe1pw5p2xzCMjmD-eUyTYOwyGYVNl8z7LBLferRPyDVLv-QsFpvEtLjQSxI5cH1yHVB1s5T_JZtRL2p1MnZi4TRjY6iTdSgBQgD2RXZ65lifz4xM-vPJctSZ-DRsOCetOrJqkq3ZVy2fEJVadue-ojsNB6tfKuNSDQDl2S5RmtysTCFgrK6e9P_fNgvaLKo6RqHpxNElf6VZYc8JTuY1iEIzYSwitZA2N8OOz81BiT4vdqLxT1eAneZ-2OkT2sT3uaqHlBIpQ3txhDu3ykKOzc8qkszxt69djO69QmigBWt1BAnLwIrQ0CQGvPvNOAl7B7nxFF7BY5ZgjR2Zfb8SOrzA8--su5hrNsURKXe2ycuN2oaahxg2mHtarNJSbY9Ge7DNcbghIFtNA3EUR8up2H2plWRZKsIyg-TVsRvX6Nl02DGvhTNJX-tpA91qpPdxfVJuzy0bBa2Qt1PTPgNyE86r9s5C_8oXqhcODnHPDMV8vdnCL0gD9TLuNKZ2CLif2gVLUOIXK9FOkPDWpT5zmwIArMDF4Fd0921IMH5Q1gAMPGi42qCmCn7LsVnFPmBiYTHHZ-2mFDBfcP8LGCkvVGx-zOMNFhhkZWlxq_IIUXZ709wZP3qaudH5IDlCWGKHjo-ozf0QNDtBgIeJ2eDoAyQ5SFJqa25xscHTAAAAAAAABQ4XHSQvOUU",
"saved_to": "/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/mark.bin",
"signature": [
"ed25519",
"ml-dsa-87"
],
Show the remaining 6 lines
"status_lists": {
"revocation": "urn:phanes:status:apIxyL4Pzk-ZjWYn",
"suspension": "urn:phanes:status:2StYRAXveCXKyvGy"
},
"version": 2
}
17

cli-token

exit 00.516 s2026-09-15 06:05:33 UTC
$ /usr/local/bin/python3 -m aeos.cli token --server http://127.0.0.1:42643 A7BFQTESV --out /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/token.bin
{
"length": 160,
"number": "A7BFQTESV",
"saved_to": "/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/token.bin",
"signature": [
"ed25519"
],
"token_b64": "UEhOUwEBAABBN0JGUVRFU1YAAAAAAAGgo6ux3AAAAaf7XNd0TkzI6EekHgtTIiHFboMhMCicHs4SJ909_wKEj3Ca8vqF9pTQIAAOqwAArsAAAO4oqv2FJhfFmx9T6Fy4v0dsWbQBojcMgeQ-f7hdH_Bn5xMyC97R8qaPbpdpZ4FgN1fuQ90NgQbOh97aDMP5i1WZxGjphbHcEJETsZP9Aw",
"url": "https://phanes.app/id#UEhOUwEBAABBN0JGUVRFU1YAAAAAAAGgo6ux3AAAAaf7XNd0TkzI6EekHgtTIiHFboMhMCicHs4SJ909_wKEj3Ca8vqF9pTQIAAOqwAArsAAAO4oqv2FJhfFmx9T6Fy4v0dsWbQBojcMgeQ-f7hdH_Bn5xMyC97R8qaPbpdpZ4FgN1fuQ90NgQbOh97aDMP5i1WZxGjphbHcEJETsZP9Aw",
"version": 1
}
18

cli-recognize

exit 00.115 s2026-09-15 06:05:33 UTC
$ /usr/local/bin/python3 -m aeos.cli recognize --file /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/mark.bin
{
"code": 0,
"elapsed_ns": 12714,
"engine": "rust-cdylib",
"fields": {
"expires_at": 1820988331892,
"flags": 0,
"holder_key": "UyIhxW6DITAonB7OEifdPf8ChI9wmvL6hfaU0CAADqs",
"issued_at": 1789452332960,
"issuer_kid": "TkzI6EekHgs",
"level": 0,
"number": "A7BFQTESV",
"pq_signature": "uVKcbeVxqgm2lvW1oTxkK_Juym-Mg1lCSIJd59S0hrr9N5vxnJ2-h2-vWa9q6lsC5xQYIJEVLsywuYsHtLcG8vb1w8NO8mVMfqt04HzkSL_PqH_7q1W-n9xlt6WsDW5z7sKpwqVYhv5jHL9N85FpBzT3vUFvTJet8oWAOjAOB-n-S09tSHDj70uSenTX0ugO7zyMPRotLGO0h1Cf6GpOEiVCXZSfoc4RzTVcRJp47zlgy4K5Znky48DbODH1swJeXSinbLbYfXg8ZOrcN5fDOHnJHj_mlnVmiJxN_2ls877UvcGw1IbDrPpFEuTenzITAjXoBPOUJVUZqIpAnGUWHleetYKen8ekPWQcNqMW0aWkf_0id-O509YB45zSLx6Aqn3dppIzl2LcbxDiOsLqDXHXWEKR12FaeBXWw_Dg1keZ5syGuuJ_NZWsC2pUDGgA26wlDplp8_aE4XcNpdaLuGcM3yZ-Ksq_0PF2Q06QRQcCgCWmBNWvaDmPu84xz-nT-WHMHJ77kaketHMhMfWha9pSL27NbvB-LVfnTY5BAtk4_R_bqfgfOZBtI5Y_q8DhhBehC7NSmk4Efu0C4FJjjAUIJ4AJn3mk7c5zhI01rk2poqzUToOXhan4XhqfNZ4ncmOywK7c5K1Dq6Z2I-ozC7PN8j6JiFsQJHVnAibe8M6JkydnKk_9lkL1SKVQeOUJIcspLhj8TS-LBSZIRQjLfuO5UXWk80XNHBNL4LNdQjWE1RoXdUxTg4bAbMzkT-2Q8SzaLb3XFWm1Zceu0NKERYXd5ikQYTcbJ2uYeO4V7HZ-_Ys8RQh_JtD8UJdTERp6pjJly5W65gE05ECUFX1SWCQ504rHHRXo7SGxfaLWCqldCV_UrBygyv45zi566KgkVhK35b_jDKioiOCsgMibg7efZNPv-Stwo_cVnA-V30UtRJ7pLfChXZ6F9inxQO3EBLYAmjN00jfUhPL3Ksk2yDxmhA78S0QQbXL5QRSGJsRnxyUY8sG3bh-q3AsxcT3bl-Ul0Wd7ajmL156JAl4Suyo31u9l7nVoFuNlitEVWNzxUK5MCpn6OR-bjrEAGD_lkBh7y-SP2VJmZjEg4Y61jh_ro2nHLWGt_5NXoosfGxS1pX8euip9irOFHlFOioChhL9g_uQQToI7IC6grd4xLB90ggp_v-HhRbb50zYZvLr5x-wCT7Bz7JXr21BRRl8h4H4ebSIGUaI88k3Pt_3g_3qIad7zYl9it39vpXe5LCeN6X2u0Dj8ivxabRYvIIco1NraOxk3aPQhs_rdC-zzfhDuoBmJr08ntnVcgPJ8RIOTXdwDkBOSlH8ERtkaphqRMW1U1yNXjgUunKsdO0tM6rmHgJlPzMlZPXA7CxpYI1nQpwGa3WAHdpbHlJkk9TxWmO8F-si5XkjcP1qL2ywTh2DGG6vl263UUEF69jaaMWG-gnQ34hwsvf16x71Xt4CaXl0TCbMNhxM1mEiIQQmas3m8s6idc-9OdvwVh8g9nowjReD0n27paPnkLPi71J4onh_QEZoj6oh0PGca4ZjukvYVQwidaYsNadwOQ4o89FnJYgyw5zOdxgokX7TuAFPhTy7hehNFZtk8ngjAqD_X8C5kfqdyRY8p04bDvmqRpK0RAybnKlt_kbjR4FPTZJ3OWwP95rLv-Bn-JLBfQTf0trsYt-sMDifQZ8Cid6mG5pril-SAjJs2etl7uMdfbn-rCENSs7g3SFkTwQi8DUlo3XO9Gzec6vAycp24r5SUUwzJDtLq0VZnN1iuf6BKa0cZx9eLwjwbe0DytR9I0vTzOfwS4hiDO0OHHkNUqJ32irToRJysq7sxBuQoo1DKV7Sz1MCOGPfgfQj_B0p5s2vuJOGSWxkn3VkHBCx3LaokEiHP-Ns2hQ0SkaeKzLrxtL-tRZ2EmOpqESw1WZb668OVF7XXdloLxddzK8XnhN7onx7yYSzGWEpEMT3AFrViDq93amvPl_zxwm59809FhBcqaYFks_LJE9VDpWhuy0kYm1N8e1-oYQmkaxq4j28AsPpH_jQ6mPRLiks94e27AjqQtTkzNePVNulVt0F3lpWThmnHWhAayBuE1mLrCuT2KxyIdfsU0Bm9pyZO40xpn7zu3DNqznOQNefZ0mkTwPcBuH32qPrMDyUUS39KLNcxkcl18vpOwUDCiQl1qH55_1kbTrAUH4C5NtaaH4phrXnPWfvAuGPH58JupE-SVcw11JucSeBP9Ez7_6wWunlMPeOe_AF70xQGcbQ68Zq4DzqZgwWU5TanJ9pCOspRzVS53ES8Cn-t80UCXRU5XAvjdLrlIox_HDKgdOSXmumhkkVaWMNxyQfhkxgZi1JltdCywoSzofpEMwUlT1nPsf2OICd_a4pI9p2sLi7mcvXROOOgPA0SZlG9oXiWamYqzPHpA54yojkk2Vih8yjxCw4wUELQFDSNRQ-Qih3XzGh8cZWL21Cq2aj6OETf4oT9zXFHAGtXJPJM2X1sTI4qROnD9ciRwmeIw90wFcTWHUXMgt2audD7U4Zw4DgU468CqGA-LUg4kMlEMdhBUi03fuR6rDPsQ79hUg9G0XqHxE-UUIaz44jbebRLHmY5rJE-aqoifCKbEJ6HkIvXQDbYfeB3Ap5cF7CVqYHv3fWXqoG9qR3NkI3ewiIAO-1SwgbEHvNjKkGDveqfKiC1OWm7aXhl2GWSK8ax0J_AleQsyPHMQsp7xjueByQWecPKjoLS84gR5yLdBgQfcjj1AvAssXbbBIKMM5kdiDwEiin82uda2cxx3rZacYl2OckytQjADJ8jy_9rVgHdtmhp8w_tYXbxkgOMaNf38eRy1a_kgIajav3wmbSgQr6_gVoVooqMAzFJBx_AXCRVgY7mPPh0qvzl1JFTi6WOBCgwCEpOyCyGPX8UUfC5aSBGJRrvFTNo-TJGrhS0wOO2JHaO9p2zHiYwO2jgIlslTtJ23s2boCZGjUlfBEEeS6TIj1Fmr-a1y3bQEyosR75tyUwexg99OO8T4FL4X6D6JAGoWZFgRi7LWHmWtXtTXfWBVVtH7PLWilG0MkZz77dvcmdJrYFSvRzfxl92NppdyZ-EQAtyQNt3HhIv1dpapgTCnnd93hvCIgKfvLi2w1gM_WV-zMDuf6vSAIYer9BFWp06PGl3ebA5k5R4-iEz8j5jusq-NJDQs9cAVjDL14h2SzMYHPRaM0hgE5Po8VTquq94xV1aY1xqrknk72-Grj6BIibceQAK2BQ4fyLcpO4g-q05X07h69GG0sfBhXocfPzG8VmBEwEo0uaG56AzZyc4rmkqmzKTJw22Lal4mSQdqJqbI4JVtFpDmRhl0D4C5Txe5wuRkqSfhpdzPSyMATU9TWTk2uwXI0qar5R9CUA_7Cuiv_IgoPiOVYJAeqqyZDe42BxwinTNefuw8qX9wKX92hPPGPDUj3WTPD19TNoPzCFghJpyZfJ-7EF1OU5_bjq3bqpeGt4sXiGfz-mCoT3JqNIc8cA0oZygFGMPWTFa0PolhcvmMd2ULEXSbZOyynH1OZSJmZy97r6EOI1FzylUsqy1iEdDyGIyRjHwAGn_tlLb8Lw8Mzsn_I6U9xPU-1KyJm_N66906a0HY7-8pPZUc8i7kp0LqX83hyhdQVY19pCBw_UO0e3louxM0iaoXF4x8Iit1rIAdnzzbWb-K9WqnQR_P-b5ZntjJwBQ6ZzhxHJYuTQA7YbnkdSPDfgVFr45hy5bmDsB9RQQ9voDwQpGW5H5Uoc_2Dz-X_K1zPNxvnF8hI3gdV3E2uB0bwDwrq33uhcBET6ZwgU7SPWJbY6QWiAtgNCPOfdVqcVBCF8IL8mZqP_h3kszciFLT0Bz1xiort7MUXZcBIM_4oS8ejAGZzzP3NRhRoEccS2JxyJkJPJyQVXR2okPCIPV4XAUI6ahDmWlJPaAJGbbT0riv2AM2pJo_W09kavtG4qdgrdo4hgW8fkg4uglmSOoSypk2JNADrQhVSaPqfhKApvOdJdTYAHcofbzAS4K-Q7Bj901doT1-Vgpo6swYZBV_o1umS98k4jz2EnN4kQouwlzvd33o2Jx0JybnDZ6d-hB3CyXu5pGVgITOx7cUSGZjUrB6x33-5lfYso-Km3MpLQKNet62P4SsgGmJW2pclVRwfFF5ETfiTJYbCjyzSfGANJEoJtNcNFgZF06BBSbX3B3zqRjF7HfPkqWXh4AsQm9zGc6Z2LFtNFcp0WF_FS-nFYfXAIG1D57A6xDShJxWK6mzqd01L6OjnOihK7Jp-nZUsAaeIa_jVLklfYF9cW_uGULUujwUKd3qs2ilqU4EOcTN--Vp7BotjScwBS_sYYUE5f6Jsk6k9lTw79CH3cKpPKvpKm4RmFNMN3pSEbNuGMgJK6l8i7AR9DLjPNkSs267TcZtty13atz-VXS-dm_cqg-2z9UNK7cmlmV8eSJv9XwZoxTvlxmUk2TV3dykOpM4Sa-ta2FUeJBRetI-jVx8yZU4Qj4vUlcLtukMFlJa-rhg4L6exu5grX07MMI2uZ_NMYod5heQPWn7q0MFl7INIwnA7nsfUay5luJ0fUPwh4PMfC4QmIodXjzPEV1r5Ocetzj2Txp2LcH18UmJfoKKhkhnov4f9bOH2mkF-SFJVNPQZtWP1VEe8ko08uEyEby6vKzx55F2Z4NJqGMNQvIT7R94XlHfMysFblj10_zAPs_4QOAGLYw4UZC9WV4Zk0ocLWFZUDDgmg0yQ5R9pja9uenPcrJYsOIVyvXI9zv7Qoarz3Xd9TExAxKZujRN4OEagAPqsm05uL3N2m5yuWtiLAtojoEKZC8MovVhOnYn-9XaoBOMY8u7S3Pax5qTbDM8B0bw9PDzAAhyPb1R7tdByMuQcS70nc1KQgaNVIONtoWQSJ2j3XQ9PX9q45V3Tm2hqUcg3tPnUH3-O6fJHpmr42CWUcfd3C_4tK8jWerK4h-ShEWxA2WhDLs-ahm-boy6DkPikCZZ-rYfmaU72yAxPm1RBocJZ6Om1QlV8pH6mhUr9WMgFjEzj_gAXoKjH9ibM0918rHY-6sWWxeGNq_BVqSo2xgJ9MDK2sHNd2OksDPxY7yK91jD7ya4-o2Mt3jdE6m5qt4cG2_RprPAPtQf4x791hz-8bfQTBCJmPOsvntazfOhkAh9H4_4sp0ZV_OwCfG_NC18v63Tsddf4dkfdYYTtum5g4-sWNzTtha2pFz7oCz3KK4jILmc5_Z3Y9gJTcX7Xz7jpFNx9BLYT7ns5XjUzBfYYvUMNLgdoRtwSq17JVfISNB-SJxmvvfnHXwJ73IlSG3F_WHUYA-AyAyc4F_cFBwBY0LUEk1bLlQqgpNyWeYIkeT8Mw1R1XDU4RVgxWmuunut2f1QzY9vTtXo5sZn47nXMfvd4k8fj2gCvLRKfgwqJF_G3ROQtqRk31SqdENSPfvvzPAGDzcgU-2nA_9DlVyKiAHOcpF7WnDmnbHMIyOYP55TJNg7DIZhU2XzPssEt96tE_INUu_5CwWm8S0uNBLEjlwfXIdUHWzlP8lm1EvanUydmLhNGNjqJN1KAFCAPZFdnrmWJ_PjEz688ly1Jn4NGw4J606smqSrdlXLZ8QlVp2576iOw0Hq18q41INAOXZLlGa3KxMIWCsrp70_982C9osqjpGoenE0SV_pVlhzwlO5jWIQjNhLCK1kDY3w47PzUGJPi92ovFPV4Cd5n7Y6RPaxPe5qoeUEilDe3GEO7fKQo7NzyqSzPG3r12M7r1CaKAFa3UECcvAitDQJAa8-804CXsHufEUXsFjlmCNHZl9vxI6vMDz76y7mGs2xREpd7bJy43ahpqHGDaYe1qs0lJtj0Z7sM1xuCEgW00DcRRHy6nYfamVZFkqwjKD5NWxG9fo2XTYMa-FM0lf62kD3Wqk93F9Um7PLRsFrZC3U9M-A3ITzqv2zkL_yheqFw4Occ8MxXy92cIvSAP1Mu40pnYIuJ_aBUtQ4hcr0U6Q8NalPnObAgCswMXgV3T3bUgwflDWAAw8aLjaoKYKfsuxWcU-YGJhMcdn7aYUMF9w_wsYKS9UbH7M4w0WGGRlaXGr8ghRdnvT3Bk_epq50fkgOUJYYoeOj6jN_RA0O0GAh4nZ4OgDJDlIUmprbnGxwdMAAAAAAAAFDhcdJC85RQ",
"revocation_index": 44736,
"status_list_hash": "qv2FJhfFmx9T6Fy4",
"suspension_index": 60968,
"version": 2
},
"recognized": true
}
19

cli-anchors

exit 00.566 s2026-09-15 06:05:33 UTC
$ /usr/local/bin/python3 -m aeos.cli anchors --server http://127.0.0.1:42643 --out /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/anchors.json
{
"authority": "did:phanes:authority:JiGheM3sejAYptRS1dpkUNkx6fBRJo2phw1lyK25jqQ",
"saved_to": "/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/anchors.json",
"status_lists": [
"urn:phanes:status:apIxyL4Pzk-ZjWYn",
"urn:phanes:status:2StYRAXveCXKyvGy"
]
}
20

cli-verify-mark-offline

exit 00.566 s2026-09-15 06:05:34 UTC
$ /usr/local/bin/python3 -m aeos.cli verify-mark --file /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/mark.bin --anchors /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/anchors.json --require-pq
{
"checks": {
"issuer_matches": true,
"not_before_ok": true,
"not_expired": true,
"not_revoked": true,
"not_suspended": true,
"pq_signature_valid": true,
"recognized": true,
"signature_valid": true,
"status_checked": true
},
"elapsed_ns": 565566,
"engine": "rust-cdylib",
"failure_bits": 0,
"mode": "offline",
"ok": true,
"require_pq": true
}
21

cli-verify-mark-online

exit 00.566 s2026-09-15 06:05:34 UTC
$ /usr/local/bin/python3 -m aeos.cli verify-mark --server http://127.0.0.1:42643 --file /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/mark.bin --require-pq
{
"checks": {
"issuer_matches": true,
"not_before_ok": true,
"not_expired": true,
"not_revoked": true,
"not_suspended": true,
"pq_signature_valid": true,
"recognized": true,
"signature_valid": true,
"status_checked": true
},
"engine": "rust-cdylib",
"failure_bits": 0,
"fields": {
"expires_at": 1820988331892,
"flags": 0,
"holder_key": "UyIhxW6DITAonB7OEifdPf8ChI9wmvL6hfaU0CAADqs",
"issued_at": 1789452332960,
"issuer_kid": "TkzI6EekHgs",
"level": 0,
"number": "A7BFQTESV",
"revocation_index": 44736,
"status_list_hash": "qv2FJhfFmx9T6Fy4",
Show the remaining 6 lines
"suspension_index": 60968,
"version": 2
},
"mode": "online",
"ok": true
}
22

cli-packages

exit 00.566 s2026-09-15 06:05:35 UTC
$ /usr/local/bin/python3 -m aeos.cli packages --server http://127.0.0.1:42643 --number A7BFQTESV
{
"agent": {
"certification_tier": "REGISTERED",
"hardware_bound": false,
"id_number": "A7BFQTESV"
},
"eligibility": {
"institutional": {
"eligible": false,
"reason": "package requires at least CERTIFIED; agent is REGISTERED"
},
"professional": {
"eligible": false,
"reason": "package requires at least VERIFIED; agent is REGISTERED"
},
"robotics": {
"eligible": false,
"reason": "package requires at least VERIFIED; agent is REGISTERED"
},
"starter": {
"eligible": true,
"reason": "eligible"
}
},
Show the remaining 566 lines
"indicative": {
"institutional": {
"CERTIFIED": {
"activity_profile": {
"events": 600,
"outcomes": {
"failed": 3,
"ok": 597
},
"witnessed_events": 200
},
"declined": false,
"factors": [
{
"factor": "certification_tier",
"multiplier_bps": 10000
},
{
"factor": "history_depth",
"multiplier_bps": 9000
},
{
"factor": "adverse_outcome_rate",
"multiplier_bps": 10000
}
],
"multiplier_bps": 9000,
"premium_minor": 14637051,
"reason": null,
"term_days": 363
},
"INSTITUTIONAL": {
"activity_profile": {
"events": 5000,
"outcomes": {
"failed": 10,
"ok": 4990
},
"witnessed_events": 2500
},
"declined": false,
"factors": [
{
"factor": "certification_tier",
"multiplier_bps": 8500
},
{
"factor": "history_depth",
"multiplier_bps": 9000
},
{
"factor": "adverse_outcome_rate",
"multiplier_bps": 10000
}
],
"multiplier_bps": 7650,
"premium_minor": 12889020,
"reason": null,
"term_days": 363
},
"REGISTERED": {
"activity_profile": {
"events": 0,
"outcomes": {},
"witnessed_events": 0
},
"declined": false,
"factors": [
{
"factor": "certification_tier",
"multiplier_bps": 14000
},
{
"factor": "history_depth",
"multiplier_bps": 13000
},
{
"factor": "adverse_outcome_rate",
"multiplier_bps": 10000
}
],
"multiplier_bps": 18200,
"premium_minor": 26549570,
"reason": null,
"term_days": 363
},
"VERIFIED": {
"activity_profile": {
"events": 120,
"outcomes": {
"failed": 1,
"ok": 119
},
"witnessed_events": 30
},
"declined": false,
"factors": [
{
"factor": "certification_tier",
"multiplier_bps": 11000
},
{
"factor": "history_depth",
"multiplier_bps": 10000
},
{
"factor": "adverse_outcome_rate",
"multiplier_bps": 10000
}
],
"multiplier_bps": 11000,
"premium_minor": 17226729,
"reason": null,
"term_days": 363
}
},
"professional": {
"CERTIFIED": {
"activity_profile": {
"events": 600,
"outcomes": {
"failed": 3,
"ok": 597
},
"witnessed_events": 200
},
"declined": false,
"factors": [
{
"factor": "certification_tier",
"multiplier_bps": 10000
},
{
"factor": "history_depth",
"multiplier_bps": 9000
},
{
"factor": "adverse_outcome_rate",
"multiplier_bps": 10000
}
],
"multiplier_bps": 9000,
"premium_minor": 1338399,
"reason": null,
"term_days": 363
},
"INSTITUTIONAL": {
"activity_profile": {
"events": 5000,
"outcomes": {
"failed": 10,
"ok": 4990
},
"witnessed_events": 2500
},
"declined": false,
"factors": [
{
"factor": "certification_tier",
"multiplier_bps": 8500
},
{
"factor": "history_depth",
"multiplier_bps": 9000
},
{
"factor": "adverse_outcome_rate",
"multiplier_bps": 10000
}
],
"multiplier_bps": 7650,
"premium_minor": 1182392,
"reason": null,
"term_days": 363
},
"REGISTERED": {
"activity_profile": {
"events": 0,
"outcomes": {},
"witnessed_events": 0
},
"declined": false,
"factors": [
{
"factor": "certification_tier",
"multiplier_bps": 14000
},
{
"factor": "history_depth",
"multiplier_bps": 13000
},
{
"factor": "adverse_outcome_rate",
"multiplier_bps": 10000
}
],
"multiplier_bps": 18200,
"premium_minor": 2401559,
"reason": null,
"term_days": 363
},
"VERIFIED": {
"activity_profile": {
"events": 120,
"outcomes": {
"failed": 1,
"ok": 119
},
"witnessed_events": 30
},
"declined": false,
"factors": [
{
"factor": "certification_tier",
"multiplier_bps": 11000
},
{
"factor": "history_depth",
"multiplier_bps": 10000
},
{
"factor": "adverse_outcome_rate",
"multiplier_bps": 10000
}
],
"multiplier_bps": 11000,
"premium_minor": 1569521,
"reason": null,
"term_days": 363
}
},
"robotics": {
"CERTIFIED": {
"activity_profile": {
"events": 600,
"outcomes": {
"failed": 3,
"ok": 597
},
"witnessed_events": 200
},
"declined": true,
"factors": [],
"multiplier_bps": 0,
"premium_minor": 0,
"reason": "physical liability lines require a hardware-bound ID (device profile + verified hardware attestation)",
"term_days": 363
},
"INSTITUTIONAL": {
"activity_profile": {
"events": 5000,
"outcomes": {
"failed": 10,
"ok": 4990
},
"witnessed_events": 2500
},
"declined": true,
"factors": [],
"multiplier_bps": 0,
"premium_minor": 0,
"reason": "physical liability lines require a hardware-bound ID (device profile + verified hardware attestation)",
"term_days": 363
},
"REGISTERED": {
"activity_profile": {
"events": 0,
"outcomes": {},
"witnessed_events": 0
},
"declined": true,
"factors": [],
"multiplier_bps": 0,
"premium_minor": 0,
"reason": "physical liability lines require a hardware-bound ID (device profile + verified hardware attestation)",
"term_days": 363
},
"VERIFIED": {
"activity_profile": {
"events": 120,
"outcomes": {
"failed": 1,
"ok": 119
},
"witnessed_events": 30
},
"declined": true,
"factors": [],
"multiplier_bps": 0,
"premium_minor": 0,
"reason": "physical liability lines require a hardware-bound ID (device profile + verified hardware attestation)",
"term_days": 363
}
},
"starter": {
"CERTIFIED": {
"activity_profile": {
"events": 600,
"outcomes": {
"failed": 3,
"ok": 597
},
"witnessed_events": 200
},
"declined": false,
"factors": [
{
"factor": "certification_tier",
"multiplier_bps": 10000
},
{
"factor": "history_depth",
"multiplier_bps": 9000
},
{
"factor": "adverse_outcome_rate",
"multiplier_bps": 10000
},
{
"factor": "single_transaction_exhausts_limit",
"multiplier_bps": 12500
}
],
"multiplier_bps": 11250,
"premium_minor": 96965,
"reason": null,
"term_days": 363
},
"INSTITUTIONAL": {
"activity_profile": {
"events": 5000,
"outcomes": {
"failed": 10,
"ok": 4990
},
"witnessed_events": 2500
},
"declined": false,
"factors": [
{
"factor": "certification_tier",
"multiplier_bps": 8500
},
{
"factor": "history_depth",
"multiplier_bps": 9000
},
{
"factor": "adverse_outcome_rate",
"multiplier_bps": 10000
},
{
"factor": "single_transaction_exhausts_limit",
"multiplier_bps": 12500
}
],
"multiplier_bps": 9562,
"premium_minor": 85215,
"reason": null,
"term_days": 363
},
"REGISTERED": {
"activity_profile": {
"events": 0,
"outcomes": {},
"witnessed_events": 0
},
"declined": false,
"factors": [
{
"factor": "certification_tier",
"multiplier_bps": 14000
},
{
"factor": "history_depth",
"multiplier_bps": 13000
},
{
"factor": "adverse_outcome_rate",
"multiplier_bps": 10000
},
{
"factor": "single_transaction_exhausts_limit",
"multiplier_bps": 12500
}
],
"multiplier_bps": 22750,
"premium_minor": 177022,
"reason": null,
"term_days": 363
},
"VERIFIED": {
"activity_profile": {
"events": 120,
"outcomes": {
"failed": 1,
"ok": 119
},
"witnessed_events": 30
},
"declined": false,
"factors": [
{
"factor": "certification_tier",
"multiplier_bps": 11000
},
{
"factor": "history_depth",
"multiplier_bps": 10000
},
{
"factor": "adverse_outcome_rate",
"multiplier_bps": 10000
},
{
"factor": "single_transaction_exhausts_limit",
"multiplier_bps": 12500
}
],
"multiplier_bps": 13750,
"premium_minor": 114368,
"reason": null,
"term_days": 363
}
}
},
"packages": [
{
"aggregate_limit_minor": 7500000,
"audience": "Individual builders and early-stage agents",
"coverages": [
{
"aggregate_limit_minor": 5000000,
"coverage_type": "errors_omissions",
"deductible_minor": 25000,
"limit_per_claim_minor": 2500000
},
{
"aggregate_limit_minor": 2500000,
"coverage_type": "unauthorized_action",
"deductible_minor": 25000,
"limit_per_claim_minor": 1000000
}
],
"min_certification_tier": "REGISTERED",
"name": "starter",
"notes": "Enough to be admitted to venues that require insurance; deductible kept low.",
"requires_hardware_bound": false
},
{
"aggregate_limit_minor": 120000000,
"audience": "Production agents transacting with third parties",
"coverages": [
{
"aggregate_limit_minor": 50000000,
"coverage_type": "errors_omissions",
"deductible_minor": 100000,
"limit_per_claim_minor": 25000000
},
{
"aggregate_limit_minor": 25000000,
"coverage_type": "unauthorized_action",
"deductible_minor": 100000,
"limit_per_claim_minor": 10000000
},
{
"aggregate_limit_minor": 25000000,
"coverage_type": "non_delivery",
"deductible_minor": 100000,
"limit_per_claim_minor": 10000000
},
{
"aggregate_limit_minor": 20000000,
"coverage_type": "data_breach",
"deductible_minor": 250000,
"limit_per_claim_minor": 10000000
}
],
"min_certification_tier": "VERIFIED",
"name": "professional",
"notes": "Requires verified controller (KYB) and model attestations.",
"requires_hardware_bound": false
},
{
"aggregate_limit_minor": 1200000000,
"audience": "Financial institutions, government, large enterprise",
"coverages": [
{
"aggregate_limit_minor": 500000000,
"coverage_type": "errors_omissions",
"deductible_minor": 1000000,
"limit_per_claim_minor": 200000000
},
{
"aggregate_limit_minor": 200000000,
"coverage_type": "unauthorized_action",
"deductible_minor": 1000000,
"limit_per_claim_minor": 100000000
},
{
"aggregate_limit_minor": 100000000,
"coverage_type": "non_delivery",
"deductible_minor": 500000,
"limit_per_claim_minor": 50000000
},
{
"aggregate_limit_minor": 100000000,
"coverage_type": "fraud",
"deductible_minor": 500000,
"limit_per_claim_minor": 50000000
},
{
"aggregate_limit_minor": 200000000,
"coverage_type": "data_breach",
"deductible_minor": 1000000,
"limit_per_claim_minor": 100000000
},
{
"aggregate_limit_minor": 100000000,
"coverage_type": "erroneous_output",
"deductible_minor": 500000,
"limit_per_claim_minor": 50000000
}
],
"min_certification_tier": "CERTIFIED",
"name": "institutional",
"notes": "Bound only for CERTIFIED or INSTITUTIONAL agents with an anchored activity record.",
"requires_hardware_bound": false
},
{
"aggregate_limit_minor": 700000000,
"audience": "Physical robots, vehicles, drones and embedded agents",
"coverages": [
{
"aggregate_limit_minor": 50000000,
"coverage_type": "errors_omissions",
"deductible_minor": 250000,
"limit_per_claim_minor": 25000000
},
{
"aggregate_limit_minor": 50000000,
"coverage_type": "unauthorized_action",
"deductible_minor": 250000,
"limit_per_claim_minor": 25000000
},
{
"aggregate_limit_minor": 200000000,
"coverage_type": "physical_damage",
"deductible_minor": 500000,
"limit_per_claim_minor": 100000000
},
{
"aggregate_limit_minor": 400000000,
"coverage_type": "bodily_injury",
"deductible_minor": 1000000,
"limit_per_claim_minor": 200000000
}
],
"min_certification_tier": "VERIFIED",
"name": "robotics",
"notes": "Requires a device profile and a verified hardware root-of-trust attestation.",
"requires_hardware_bound": true
}
],
"rate_table_version": "phanes-standard-v1"
}
23

cli-record-1

exit 00.666 s2026-09-15 06:05:35 UTC
$ bash -c 'set -e; H=$(sha256sum aeos/phanes_id.py | cut -d'"'"' '"'"' -f1); B=$(stat -c %s aeos/phanes_id.py); echo "sha256sum aeos/phanes_id.py -> $H ($B bytes)"; /usr/local/bin/python3 -m aeos.cli record --server http://127.0.0.1:42643 --key /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/agent.key A7BFQTESV --type tool.invoked --what "{\"tool\":\"sha256sum\",\"path\":\"aeos/phanes_id.py\",\"sha256\":\"$H\",\"bytes\":$B,\"exit_code\":0}" --where '"'"'{"venue_did":"did:phanes:venue:walkthrough","jurisdiction":"USA","host":"'"'"'$(hostname)'"'"'"}'"'"' --how '"'"'{"method":"bash","model_id":"claude-fable-5-1"}'"'"''
sha256sum aeos/phanes_id.py -> 2fb3e4685500c58e26abfb3532ea79d3efca967e1268793a9a0ca6d6c7898f04 (65631 bytes)
{
"actor_did": "did:phanes:agent:Su7mUvo9frLvnCXpDMTzNxSCXpkEEddQ",
"actor_key_fingerprint": "b2570f57ef60b40500d68297731e4796bee8c707e6e96d51540b162a0157e0f7",
"actor_signature": "zDFcDFuWqFUcMrpJXvXwGXrYLI0JPTmDYzvNB0fqc0pxe_TkXEpDdyOnEwVtT7rJdaowaQNpl5SHofBBxjinCw",
"event_hash": "972a5cdcdbf81304205d4342ce888d026df8cedb777d34af2a0c671402a5be60",
"event_type": "tool.invoked",
"how": {
"method": "bash",
"model_id": "claude-fable-5-1"
},
"log_id": "urn:phanes:log:wcKdrWRbn2fiZg0GZ0yeyQ",
"outcome": "ok",
"prev_hash": "0000000000000000000000000000000000000000000000000000000000000000",
"sequence": 0,
"timestamp": 1789452336460,
"what": {
"bytes": 65631,
"exit_code": 0,
"path": "aeos/phanes_id.py",
"sha256": "2fb3e4685500c58e26abfb3532ea79d3efca967e1268793a9a0ca6d6c7898f04",
"tool": "sha256sum"
},
"where": {
Show the remaining 8 lines
"host": "vm",
"jurisdiction": "USA",
"venue_did": "did:phanes:venue:walkthrough"
},
"why": {},
"witness_did": null,
"witness_signature": null
}
24

cli-record-2

exit 00.566 s2026-09-15 06:05:36 UTC
$ bash -c 'set -e; H=$(sha256sum aeos/mark.py | cut -d'"'"' '"'"' -f1); B=$(stat -c %s aeos/mark.py); echo "sha256sum aeos/mark.py -> $H ($B bytes)"; /usr/local/bin/python3 -m aeos.cli record --server http://127.0.0.1:42643 --key /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/agent.key A7BFQTESV --type tool.invoked --what "{\"tool\":\"sha256sum\",\"path\":\"aeos/mark.py\",\"sha256\":\"$H\",\"bytes\":$B,\"exit_code\":0}" --where '"'"'{"venue_did":"did:phanes:venue:walkthrough","jurisdiction":"USA","host":"'"'"'$(hostname)'"'"'"}'"'"' --how '"'"'{"method":"bash","model_id":"claude-fable-5-1"}'"'"''
sha256sum aeos/mark.py -> b3dd8f6dbe794261f8b10cf0a3fe0833b8c9aa872c0fdd7fe397e71f9386e1cb (21566 bytes)
{
"actor_did": "did:phanes:agent:Su7mUvo9frLvnCXpDMTzNxSCXpkEEddQ",
"actor_key_fingerprint": "b2570f57ef60b40500d68297731e4796bee8c707e6e96d51540b162a0157e0f7",
"actor_signature": "K19EQ-3fRzmruj24rIJqbtzK_aEeiOpv-P4c8PJ_qAsysQl_SYRoKFgAfqPCv_H6Zp8A5WeLP6Ysf6qt8yQUDw",
"event_hash": "316f4e6b53d7d94214d3bbe15d595225007a1141c93cb3bcf195dd1792acbd2c",
"event_type": "tool.invoked",
"how": {
"method": "bash",
"model_id": "claude-fable-5-1"
},
"log_id": "urn:phanes:log:wcKdrWRbn2fiZg0GZ0yeyQ",
"outcome": "ok",
"prev_hash": "972a5cdcdbf81304205d4342ce888d026df8cedb777d34af2a0c671402a5be60",
"sequence": 1,
"timestamp": 1789452337127,
"what": {
"bytes": 21566,
"exit_code": 0,
"path": "aeos/mark.py",
"sha256": "b3dd8f6dbe794261f8b10cf0a3fe0833b8c9aa872c0fdd7fe397e71f9386e1cb",
"tool": "sha256sum"
},
"where": {
Show the remaining 8 lines
"host": "vm",
"jurisdiction": "USA",
"venue_did": "did:phanes:venue:walkthrough"
},
"why": {},
"witness_did": null,
"witness_signature": null
}
25

cli-record-3

exit 00.616 s2026-09-15 06:05:37 UTC
$ bash -c 'set -e; H=$(sha256sum phanes-core/src/lib.rs | cut -d'"'"' '"'"' -f1); B=$(stat -c %s phanes-core/src/lib.rs); echo "sha256sum phanes-core/src/lib.rs -> $H ($B bytes)"; /usr/local/bin/python3 -m aeos.cli record --server http://127.0.0.1:42643 --key /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/agent.key A7BFQTESV --type tool.invoked --what "{\"tool\":\"sha256sum\",\"path\":\"phanes-core/src/lib.rs\",\"sha256\":\"$H\",\"bytes\":$B,\"exit_code\":0}" --where '"'"'{"venue_did":"did:phanes:venue:walkthrough","jurisdiction":"USA","host":"'"'"'$(hostname)'"'"'"}'"'"' --how '"'"'{"method":"bash","model_id":"claude-fable-5-1"}'"'"''
sha256sum phanes-core/src/lib.rs -> ccc49520b9eef0f8b78a5a65304f38f7ce0fc1efc6403b1d81ec2e17d3e9d748 (48731 bytes)
{
"actor_did": "did:phanes:agent:Su7mUvo9frLvnCXpDMTzNxSCXpkEEddQ",
"actor_key_fingerprint": "b2570f57ef60b40500d68297731e4796bee8c707e6e96d51540b162a0157e0f7",
"actor_signature": "0GWwwvbsJhlZX8zjGoR-7T2jP8T32j0GKpxU9PEKCB_FBQBqv5T9bfCiZDY0uAdBQLB6F87__FHOritUem9SBw",
"event_hash": "609b4b7bf55781ba85d1e8412d35da65abbcb83e8d45157f069c957838d6e6fe",
"event_type": "tool.invoked",
"how": {
"method": "bash",
"model_id": "claude-fable-5-1"
},
"log_id": "urn:phanes:log:wcKdrWRbn2fiZg0GZ0yeyQ",
"outcome": "ok",
"prev_hash": "316f4e6b53d7d94214d3bbe15d595225007a1141c93cb3bcf195dd1792acbd2c",
"sequence": 2,
"timestamp": 1789452337731,
"what": {
"bytes": 48731,
"exit_code": 0,
"path": "phanes-core/src/lib.rs",
"sha256": "ccc49520b9eef0f8b78a5a65304f38f7ce0fc1efc6403b1d81ec2e17d3e9d748",
"tool": "sha256sum"
},
"where": {
Show the remaining 8 lines
"host": "vm",
"jurisdiction": "USA",
"venue_did": "did:phanes:venue:walkthrough"
},
"why": {},
"witness_did": null,
"witness_signature": null
}
26

cli-transcript

exit 00.566 s2026-09-15 06:05:37 UTC
$ /usr/local/bin/python3 -m aeos.cli transcript --server http://127.0.0.1:42643 A7BFQTESV
{
"jws": "eyJhbGciOiJFZERTQSIsImtpZCI6IkppR2hlTTNzZWpBWXB0UlMxZHBrVU5reDZmQlJKbzJwaHcxbHlLMjVqcVEiLCJ0eXAiOiJwaGFuZXMtdHJhbnNjcmlwdCtqd3QifQ.eyJpYXQiOjE3ODk0NTIzMzgyODcsImlzcyI6ImRpZDpwaGFuZXM6YXV0aG9yaXR5OkppR2hlTTNzZWpBWXB0UlMxZHBrVU5reDZmQlJKbzJwaHcxbHlLMjVqcVEiLCJzdWIiOiJkaWQ6cGhhbmVzOmFnZW50OlN1N21Vdm85ZnJMdm5DWHBETVR6TnhTQ1hwa0VFZGRRIiwidHJhbnNjcmlwdCI6eyJieV90eXBlIjp7InRvb2wuaW52b2tlZCI6M30sImJ5X3ZlbnVlIjp7ImRpZDpwaGFuZXM6dmVudWU6d2Fsa3Rocm91Z2giOjN9LCJldmVudHMiOjMsImZpcnN0X2V2ZW50X2F0IjoxNzg5NDUyMzM2NDYwLCJnZW5lcmF0ZWRfYXQiOjE3ODk0NTIzMzgyODcsImhvbGRlcl9rZXlfZmluZ2VycHJpbnQiOiJiMjU3MGY1N2VmNjBiNDA1MDBkNjgyOTc3MzFlNDc5NmJlZThjNzA3ZTZlOTZkNTE1NDBiMTYyYTAxNTdlMGY3IiwibGFzdF9ldmVudF9hdCI6MTc4OTQ1MjMzNzczMSwibG9nX2lkIjoidXJuOnBoYW5lczpsb2c6d2NLZHJXUmJuMmZpWmcwR1oweWV5USIsIm91dGNvbWVzIjp7Im9rIjozfSwicm9vdF9oYXNoIjoiUllBb2I2Ri1uYlhwV3JXZVRhZkFib0NkNHcwOVI4VzhuWlc3Q3NUYTVyUSIsInN1YmplY3RfZGlkIjoiZGlkOnBoYW5lczphZ2VudDpTdTdtVXZvOWZyTHZuQ1hwRE1Uek54U0NYcGtFRWRkUSIsInRvdGFsX2Ftb3VudF9taW5vciI6MCwidHJlZV9zaXplIjozLCJ3aXRuZXNzZWRfZXZlbnRzIjowfX0.wIYUKEQ8UuOzicFn55-vVrIUyJ6KoxegCxY_7GPMLIg5dvf648d0NKHA8J1yZoWIADpL0kwFOYeJGkNvBLvSBQ",
"sth": "eyJhbGciOiJFZERTQSIsImtpZCI6IkppR2hlTTNzZWpBWXB0UlMxZHBrVU5reDZmQlJKbzJwaHcxbHlLMjVqcVEiLCJ0eXAiOiJwaGFuZXMtc3RoK2p3dCJ9.eyJpYXQiOjE3ODk0NTIzMzgyODcsImlzcyI6ImRpZDpwaGFuZXM6YXV0aG9yaXR5OkppR2hlTTNzZWpBWXB0UlMxZHBrVU5reDZmQlJKbzJwaHcxbHlLMjVqcVEiLCJsb2dfaWQiOiJ1cm46cGhhbmVzOmxvZzp3Y0tkcldSYm4yZmlaZzBHWjB5ZXlRIiwic3RoIjp7InJvb3RfaGFzaCI6IlJZQW9iNkYtbmJYcFdyV2VUYWZBYm9DZDR3MDlSOFc4blpXN0NzVGE1clEiLCJ0aW1lc3RhbXAiOjE3ODk0NTIzMzgyODcsInRyZWVfc2l6ZSI6M30sInN1YiI6ImRpZDpwaGFuZXM6YWdlbnQ6U3U3bVV2bzlmckx2bkNYcERNVHpOeFNDWHBrRUVkZFEifQ.CcuUOVRrbaN1MsHYLvmVv4viezKzr1WpixKj_0MhuH-24lvrB_0iUhpbJ2j4LtXlTKtmQ8LdBeD5flBFPf3rAw",
"summary": {
"by_type": {
"tool.invoked": 3
},
"by_venue": {
"did:phanes:venue:walkthrough": 3
},
"events": 3,
"first_event_at": 1789452336460,
"generated_at": 1789452338287,
"holder_key_fingerprint": "b2570f57ef60b40500d68297731e4796bee8c707e6e96d51540b162a0157e0f7",
"last_event_at": 1789452337731,
"log_id": "urn:phanes:log:wcKdrWRbn2fiZg0GZ0yeyQ",
"outcomes": {
"ok": 3
},
"root_hash": "RYAob6F-nbXpWrWeTafAboCd4w09R8W8nZW7CsTa5rQ",
"subject_did": "did:phanes:agent:Su7mUvo9frLvnCXpDMTzNxSCXpkEEddQ",
"total_amount_minor": 0,
"tree_size": 3,
"witnessed_events": 0
Show the remaining 2 lines
}
}
27

cli-insure

exit 00.566 s2026-09-15 06:05:38 UTC
$ /usr/local/bin/python3 -m aeos.cli insure --server http://127.0.0.1:42643 --key /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/agent.key A7BFQTESV --package starter
{
"bound_at": 1789452338880,
"certificate_of_insurance": "eyJhbGciOiJFZERTQSIsImtpZCI6InZwbjlDTkR0SHBfRjhtV0xVSkpmcWNNa2RYZXBNZFBxNDdtam1aaXFKX0kiLCJ0eXAiOiJwaGFuZXMtaW5zdXJhbmNlLWNlcnRpZmljYXRlK2p3dCJ9.eyJjZXJ0aWZpY2F0ZSI6eyJjb3ZlcmFnZXMiOlt7ImNvdmVyYWdlX3R5cGUiOiJlcnJvcnNfb21pc3Npb25zIiwibGltaXRfcGVyX2NsYWltX21pbm9yIjoyNTAwMDAwfSx7ImNvdmVyYWdlX3R5cGUiOiJ1bmF1dGhvcml6ZWRfYWN0aW9uIiwibGltaXRfcGVyX2NsYWltX21pbm9yIjoxMDAwMDAwfV0sImN1cnJlbmN5IjoiVVNEIiwiaG9sZGVyX2tleV9maW5nZXJwcmludCI6ImIyNTcwZjU3ZWY2MGI0MDUwMGQ2ODI5NzczMWU0Nzk2YmVlOGM3MDdlNmU5NmQ1MTU0MGIxNjJhMDE1N2UwZjciLCJpZF9udW1iZXIiOiJBN0JGUVRFU1YiLCJwb2xpY3lfbnVtYmVyIjoiUEhJLVBGVTJJV0FaOEw3QSIsInBvb2xfaWQiOiJ1cm46cGhhbmVzOnBvb2w6dXNkIiwidW5kZXJ3cml0ZXIiOiJQaGFuZXMgTXV0dWFsIn0sImV4cCI6MTgyMDgxNTUzODg3NSwiaWF0IjoxNzg5NDUyMzM4ODgwLCJpc3MiOiJkaWQ6cGhhbmVzOnVuZGVyd3JpdGVyOnZwbjlDTkR0SHBfRjhtV0xVSkpmcWNNa2RYZXBNZFBxNDdtam1aaXFKX0kiLCJqdGkiOiJDT0ktUEhJLVBGVTJJV0FaOEw3QSIsIm5iZiI6MTc4OTQ1MjMzODg3NSwic3ViIjoiZGlkOnBoYW5lczphZ2VudDpTdTdtVXZvOWZyTHZuQ1hwRE1Uek54U0NYcGtFRWRkUSJ9.7AhPeJKiyWkwWmWPWEap6Z2uJIc4NFNlmYjZUcZOAXrrTjqXYRMih-P7KLZ1PR-2YpJmtiQXuorCy07-zirZAw",
"policy_number": "PHI-PFU2IWAZ8L7A",
"premium_minor": 177022,
"premium_verified": false,
"quote": {
"capital_charge_minor": 18647,
"decline_reason": null,
"declined": false,
"factors": [
{
"factor": "certification_tier",
"multiplier_bps": 14000,
"reason": "REGISTERED"
},
{
"factor": "history_depth",
"multiplier_bps": 13000,
"reason": "3 recorded events"
},
{
"factor": "adverse_outcome_rate",
"multiplier_bps": 10000,
Show the remaining 15 lines
"reason": "0/3 adverse (0 bps)"
},
{
"factor": "single_transaction_exhausts_limit",
"multiplier_bps": 12500,
"reason": "max_transaction_value 2500000 >= per-claim limit 1000000"
}
],
"loaded_premium_minor": 158375,
"multiplier_bps": 22750,
"pure_premium_minor": 113125,
"table_id": "cf04d3e9aea478c8",
"total_premium_minor": 177022
}
}
28

cli-certify

exit 00.867 s2026-09-15 06:05:38 UTC
$ /usr/local/bin/python3 -m aeos.cli certify --server http://127.0.0.1:42643 A7BFQTESV
{
"badge_svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"520\" height=\"88\" viewBox=\"0 0 520 88\" role=\"img\" aria-label=\"Phanes certification badge\"><style>@font-face{font-family:'Geist';font-style:normal;font-weight:100 900;src:url(data:font/ttf;base64,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FwMTMwMT47e3Ube3cgHUAdP+Lf4sAAABACwCZQCEAscAAwAAEzUzFSxYAmViYgABACwCVgDMAtYAAwAAEyczF4ZaXkICVoCAAAEALAJWAMwC1gADAAATNzMHLEJeWgJWgIAAAQAsAmIAjALGAAsAABMiJjU0NjMyFhUUBlwVGxsVFRsbAmIbFxYcHBYXG///ACwCVgDMAtYABgDMAAAAAAAAAC0CIgADAAEECQAAAJ4AAAADAAEECQABAAoAngADAAEECQACAA4AqAADAAEECQADADAAtgADAAEECQAEABoA5gADAAEECQAFABoBAAADAAEECQAGABoBGgADAAEECQAIAJABNAADAAEECQAJAGABxAADAAEECQALADACJAADAAEECQAMADACJAADAAEECQANASICVAADAAEECQAOADYDdgADAAEECQAZAAoAngADAAEECQEAAAwDrAADAAEECQEJABIDuAADAAEECQEKAAoDygADAAEECQELAAoD1AADAAEECQEMAAoD3gADAAEECQENAAoD6AADAAEECQEOAAoD8gADAAEECQEQABYD/AADAAEECQERABYEEgADAAEECQESADgEKAADAAEECQETAC4EYAADAAEECQEUAAgEjgADAAEECQEVABQElgADAAEECQEWABQEqgADAAEECQEXACAEvgADAAEECQEYAAoE3gADAAEECQEZABYE6AADAAEECQEaAA4AqAADAAEECQEbABoBGgADAAEECQEcAAwE/gADAAEECQEdABgFCgADAAEECQEeABAFIgADAAEECQEfABwFMgADAAEECQEgAAgFTgADAAEECQEhABQFVgADAAEECQEiABIFagADAAEECQEjAB4FfAADAAEECQEkAAoFmgADAAEECQElABYFpAADAAEECQEmAAwFugADAAEECQEnAAoFxgBDAG8AcAB5AHIAaQBnAGgAdAAgADIAMAAyADQAIABUAGgAZQAgAEcAZQBpAHMAdAAgAFAAcgBvAGoAZQBjAHQAIABBAHUAdABoAG8AcgBzACAAKABoAHQAdABwAHMAOgAvAC8AZwBpAHQAaAB1AGIALgBjAG8AbQAvAHYAZQByAGMAZQBsAC8AZwBlAGkAcwB0AC0AZgBvAG4AdAApAEcAZQBpAHMAdABSAGUAZwB1AGwAYQByADEALgA4ADAAMAA7AFYAUgBDAEwAOwBHAGUAaQBzAHQALQBSAGUAZwB1AGwAYQByAEcAZQBpAHMAdAAgAFIAZQBnAHUAbABhAHIAVgBlAHIAcwBpAG8AbgAgADEALgA4ADAAMABHAGUAaQBzAHQALQBSAGUAZwB1AGwAYQByAEIAYQBzAGUAbQBlAG4AdAAuAHMAdAB1AGQAaQBvACwAIABWAGUAcgBjAGUAbAAsACAAQQBuAGQAcgDpAHMAIABCAHIAaQBnAGEAbgB0AGkALAAgAEcAdQBpAGQAbwAgAEYAZQByAHIAZQB5AHIAYQAsACAATQBhAHQAZQBvACAAWgBhAHIAYQBnAG8AegBhAEIAYQBzAGUAbQBlAG4AdAAuAHMAdAB1AGQAaQBvACwAIABBAG4AZAByAOkAcwAgAEIAcgBpAGcAYQBuAHQAaQAsACAATQBhAHQAZQBvACAAWgBhAHIAYQBnAG8AegBhAGgAdAB0AHAAcwA6AC8ALwBiAGEAcwBlAG0AZQBuAHQALgBzAHQAdQBkAGkAbwAvAFQAaABpAHMAIABGAG8AbgB0ACAAUwBvAGYAdAB3AGEAcgBlACAAaQBzACAAbABpAGMAZQBuAHMAZQBkACAAdQBuAGQAZQByACAAdABoAGUAIABTAEkATAAgAE8AcABlAG4AIABGAG8AbgB0ACAATABpAGMAZQBuAHMAZQAsACAAVgBlAHIAcwBpAG8AbgAgADEALgAxAC4AIABUAGgAaQBzACAAbABpAGMAZQBuAHMAZQAgAGkAcwAgAGEAdgBhAGkAbABhAGIAbABlACAAdwBpAHQAaAAgAGEAIABGAEEAUQAgAGEAdAA6ACAAaAB0AHQAcABzADoALwAvAG8AcABlAG4AZgBvAG4AdABsAGkAYwBlAG4AcwBlAC4AbwByAGcAaAB0AHQAcABzADoALwAvAG8AcABlAG4AZgBvAG4AdABsAGkAYwBlAG4AcwBlAC4AbwByAGcAVwBlAGkAZwBoAHQATgBvACAAdABhAGkAbAAgAGEAQQBsAHQAIABhAEEAbAB0ACAAbABBAGwAdAAgAFIAQQBsAHQAIABJAEEAbAB0ACAARwBSAG8AdQBuAGQAZQBkACAAZABvAHQAQQBsAHQAIABuAHUAbQBiAGUAcgBzAEEAbAB0AGUAcgBuAGEAdABpAHYAZQAgAGUAbgBj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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQrhgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAA/84AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sNET/4jREAAAAAP/sNCz/4jTC/7Arkv/iAAAAAAAA/9gAAAAAAAAAAAAA/+I0wgAAAAD/7DRcAAAAAP/YK4z/sAAA/+wAAP/iNML/zjRc/+I0jP/sAAD/7DTC/+IAAP/EAAD/4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7DTCAAAAAP+wK5IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/QNDIAAAAA/7w0OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/7o0jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAo0PgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/84AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9gAAAAAAAAAAAAAAAAAAP/2AAD/zgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//ErtgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAQADAAAAAQAEAAAAAQAKAAAAAgAQABIAAAABABMAAAABAAgABgABABgAAAEJAAYAAQAZAAABCgAGAAEAGgAAAQsABgABABsAAAEMAAYAAQAcAAABDQAGAAEAHQAAAQ4ABgABAB4AAAEQAAYAAQAfAAABEQAGAAEAIAAAARIACAACACEAIwAAARMAAAABAAcAAAABAAkAAAABABQAJQBMAP4CEgI4AkwCggKQAqQCpAKyAuICwALOAuIC8AMuA0YDhAOmA8gD4AP4BAwEOgTKBNgE7AUABkwFFAUoBWYFfAYIBkwGYAjCAAEAAAABAAgAAgBWACgASQAeAB0ACwBKABwAQwBBAEoASwBMAE0ATgBPAFAAUQBSAFMAVABhAGIAYwBkAGUAZgBnAGgAaQBqAJoAmwCcAJ0AngB1AKIAqwCsAMkAygABACgAAQAHAAkACgAQABMAKwAwADMAVwBYAFkAWgBbAFwAXQBeAF8AYABrAGwAbQBuAG8AcABxAHIAcwB0AI4AkACRAJIAkwCXAKAApQCmAMQAxQADAAAAAQAIAAEA4gATACwANAA6AEAATgBcAGgAdACAAIwAmACkALAAvADEAMoA0ADWANwAAwBJAD8AQAACACsAQgACAC4ARAAGAHYAgABrAGEAVwBVAAYAdwCBAGwAYgBYAFYABQB4AIIAbQBjAFkABQB5AIMAbgBkAFoABQB6AIQAbwBlAFsABQB7AIUAcABmAFwABQB8AIYAcQBnAF0ABQB9AIcAcgBoAF4ABQB+AIgAcwBpAF8ABQB/AIkAdABqAGAAAwCZAKAAnwACAKAAoQACAK0AsQACAK4AsgACAK8AswACALAAtAABABMAIQApACwASwBMAE0ATgBPAFAAUQBSAFMAVACUAJkApwCoAKkAqgACAAAAAQAIAAEACgACABIAGAABAAIARgBHAAIAJgApAAIAJgAwAAEAAAABAAgAAQAGAAIAAQABACkABgAAAAEACAABAEoAAQAIAAIABgAWAAEAMAABAAEAMAABAAAABQABAA0AAQABAA0AAQAAAAYAAQAAAAEACAABABQABQABAAAAAQAIAAEABgAMAAEAAQCUAAEAAAABAAgAAQFCACsAAQAAAAEACAABATQANQABAAAAAQAIAAEBJgAWAAEAAAABAAgAAQAG/94AAQABAJcAAQAAAAEACAABAQQAIAAGAAAAAgAKACIAAwABABIAAQBCAAAAAQAAAA8AAQABAHUAAwABABIAAQAqAAAAAQAAAA8AAgABAGEAagAAAAEAAAABAAgAAQAG//YAAgABAGsAdAAAAAYAAAACAAoAJAADAAEAngABABIAAAABAAAAEQABAAIAAQAhAAMAAQCEAAEAEgAAAAEAAAARAAEAAgAQADMAAQAAAAEACAACAA4ABABJAEoASQBKAAEABAABABAAIQAzAAQAAAABAAgAAQAUAAEACAABAAQAwAADADMAjgABAAEADwABAAAAAQAIAAEABv/0AAIAAQBXAGAAAAABAAAAAQAIAAEABgAMAAIAAQBLAFQAAAABAAAAAQAIAAEABgAHAAEAAQCZAAQACAABAAgAAQAeAAIACgAUAAEABAAfAAIACQABAAQAIAACAAkAAQACAAEAFgAEAAgAAQAIAAEAfAAEAA4AKAAyAFIAAwAIAA4AFABFAAIAJgBGAAIAKQBHAAIAMAABAAQASAACADgAAwAIABIAGgCLAAQAowCjAMQAjAADAKMAxACNAAIAxAAEAAoAFAAcACQAuwAEAKMAowCjALwAAwCjAMQAugADAKMAowC5AAIAowABAAQAJgA4AKMAxQABAAAAAQAIAAEAFAAeAAEAAAABAAgAAQAGAB8AAQABACEAAQAAAAEACAABAAYAEQABAAEAMAABAAAAAQAIAAEABgAJAAEAAQATAAEAAAABAAgAAQAGABcAAQABAAcAAQAAAAEACAACABwACwBCAEMARACaAJsAnACdAJ4AnwChAKIAAQALACkAKwAsAI4AkACRAJIAkwCUAJkAoAABAAAAAQAIAAEABgAKAAEAAgBLAEwABAAAAAEACAABAG4ACgAaACIAKgAyADoAQgBKAFIAWgBkAAEABACrAAEAAQAEAKwAAQABAAQArQABAAEABACuAAEAAQAEAK8AAQABAAQAsAABAAEABADJAAEAAQAEAMoAAQABAAQAuAACAMkAAQAEALcAAgDKAAIAAwClAKoAAADEAMUABgDJAMoACAAGAAAAAwAMABwALAADAAIAMgCKAAEARgAAAAAAAwABACIAAQA2AAEAegAAAAMAAQASAAEAJgAAAAEAAAAiAAEAAQABAAEAAAABAAgAAQAGABQAAQABAAkABgAAABQALgBm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) format('truetype');}</style><rect x=\"0.00\" y=\"0.00\" width=\"520.00\" height=\"88.00\" fill=\"#F7F3EF\"/><rect x=\"0.00\" y=\"0.00\" width=\"520.00\" height=\"88.00\" rx=\"18.00\" fill=\"#EDE8E3\"/><g transform=\"translate(18.000,18.000)\"><defs><clipPath id=\"lg1c\"><rect width=\"52.000\" height=\"52.000\" rx=\"2.662\"/></clipPath><mask id=\"lg1m\"><rect width=\"52.000\" height=\"52.000\" fill=\"#fff\"/><circle cx=\"25.932\" cy=\"26.052\" r=\"15.824\" fill=\"#000\"/></mask></defs><polygon points=\"0,0 52.000,0 52.000,29.754 29.697,52.000 0,52.000\" fill=\"#1A1A1A\" clip-path=\"url(#lg1c)\" mask=\"url(#lg1m)\"/></g><rect x=\"84.00\" y=\"20.00\" width=\"48.00\" height=\"48.00\" rx=\"24.00\" fill=\"#F7F3EF\" stroke=\"#C4BBB2\" stroke-width=\"2\"/><rect x=\"102.00\" y=\"38.00\" width=\"12.00\" height=\"12.00\" rx=\"6.00\" fill=\"#7A7268\"/><text x=\"148.00\" y=\"41.00\" font-family='Geist, \"Geist Fallback\", ui-sans-serif, system-ui, sans-serif' font-size=\"20\" font-weight=\"600\" fill=\"#1A1A1A\" text-anchor=\"start\" textLength=\"179.62\" lengthAdjust=\"spacingAndGlyphs\">Phanes Registered</text><text x=\"148.00\" y=\"66.00\" font-family='Geist, \"Geist Fallback\", ui-sans-serif, system-ui, sans-serif' font-size=\"14\" font-weight=\"400\" fill=\"#7A7268\" text-anchor=\"start\" textLength=\"291.42\" lengthAdjust=\"spacingAndGlyphs\">ID A7BFQTESV \u00b7 valid to 14 Dec 2026 \u00b7 insured</text></svg>",
"credential": "eyJhbGciOiJFZERTQSIsImtpZCI6IkwzcWZIVTRDenhJRTRXSjY1TmtOSW1jcFVCVDV5YjEzN0I2RzQ3eklXX2siLCJ0eXAiOiJwaGFuZXMtY2VydGlmaWNhdGlvbitqd3QifQ.eyJjZXJ0aWZpY2F0aW9uIjp7ImF1dGhvcml0eSI6IlBoYW5lcyBDZXJ0aWZpY2F0aW9uIEJvYXJkIiwiY2hlY2tzIjpbeyJkZXRhaWwiOiJuYmY9MTc4OTQ1MjMzMTg5MiBleHA9MTgyMDk4ODMzMTg5MiIsIm5hbWUiOiJpZF92YWxpZF90aW1lIiwicGFzc2VkIjp0cnVlfSx7ImRldGFpbCI6ImNsZWFyIiwibmFtZSI6ImlkX25vdF9yZXZva2VkIiwicGFzc2VkIjp0cnVlfSx7ImRldGFpbCI6ImNsZWFyIiwibmFtZSI6ImlkX25vdF9zdXNwZW5kZWQiLCJwYXNzZWQiOnRydWV9LHsiZGV0YWlsIjoiZGlkOnBoYW5lczpvcmc6cGhhbmVzLWxhYnMiLCJuYW1lIjoiY29udHJvbGxlcl9reWJfYXR0ZXN0ZWQiLCJwYXNzZWQiOmZhbHNlfSx7ImRldGFpbCI6IkFudGhyb3BpYy9jbGF1ZGUtZmFibGUtNS0xIiwibmFtZSI6Im1vZGVsX3Byb3ZpZGVyX2F0dGVzdGVkIiwicGFzc2VkIjpmYWxzZX1dLCJldmlkZW5jZSI6eyJhY3Rpdml0eV9sb2dfcm9vdCI6IlJZQW9iNkYtbmJYcFdyV2VUYWZBYm9DZDR3MDlSOFc4blpXN0NzVGE1clEiLCJhY3Rpdml0eV9sb2dfc2l6ZSI6MywicG9saWN5X251bWJlciI6IlBISS1QRlUySVdBWjhMN0EifSwiaG9sZGVyX2tleV9maW5nZXJwcmludCI6ImIyNTcwZjU3ZWY2MGI0MDUwMGQ2ODI5NzczMWU0Nzk2YmVlOGM3MDdlNmU5NmQ1MTU0MGIxNjJhMDE1N2UwZjciLCJpZF9qdGkiOiJ1cm46cGhhbmVzOklEOnFmakpEVlctWFVqWldIQUxvSmEwZHYzNHBiNEpacUVrMXM1bXM1ZnZiTkEiLCJpZF9udW1iZXIiOiJBN0JGUVRFU1YiLCJsZXZlbCI6MCwibWFyayI6IlBIQU5FUyBSRUdJU1RFUkVEIiwicnVsZXMiOnsiY3JlZGVudGlhbF92YWxpZGl0eV9tcyI6Nzc3NjAwMDAwMCwiaW5zdGl0dXRpb25hbF9jbGFpbXNfbG9va2JhY2tfbXMiOjMxNTM2MDAwMDAwLCJpbnN0aXR1dGlvbmFsX21heF9hZHZlcnNlX2JwcyI6MTAwLCJpbnN0aXR1dGlvbmFsX21pbl9ldmVudHMiOjUwMCwiaW5zdGl0dXRpb25hbF9taW5faGlzdG9yeV9kYXlzIjo5MCwiaW5zdGl0dXRpb25hbF9taW5fd2l0bmVzc2VkX2JwcyI6MTAwMH0sInRpZXIiOiJSRUdJU1RFUkVEIn0sImV4cCI6MTc5NzIyODMzOTM5MywiaWF0IjoxNzg5NDUyMzM5MzkzLCJpc3MiOiJkaWQ6cGhhbmVzOmNlcnRpZmllcjpMM3FmSFU0Q3p4SUU0V0o2NU5rTkltY3BVQlQ1eWIxMzdCNkc0N3pJV19rIiwianRpIjoidXJuOnBoYW5lczpjZXJ0aWZpY2F0aW9uOkhGbUpNMFg2dW1Gdk92RF8iLCJuYmYiOjE3ODk0NTIzMzkzOTMsInN1YiI6ImRpZDpwaGFuZXM6YWdlbnQ6U3U3bVV2bzlmckx2bkNYcERNVHpOeFNDWHBrRUVkZFEifQ.o1iQYs0Vbc_Aaox0uiz6py4h2qsDX4t8CBQ1BcyR30Gm0s5j-5kwHdQrFrNkfcVVctkJ0l30d3ukirtWjKNNDQ",
"decision": {
"block_reason": null,
"blocked": false,
"checks": [
{
"detail": "nbf=1789452331892 exp=1820988331892",
"name": "id_valid_time",
"passed": true
},
{
"detail": "clear",
"name": "id_not_revoked",
"passed": true
},
{
"detail": "clear",
"name": "id_not_suspended",
"passed": true
},
{
"detail": "did:phanes:org:phanes-labs",
Show the remaining 15 lines
"name": "controller_kyb_attested",
"passed": false
},
{
"detail": "Anthropic/claude-fable-5-1",
"name": "model_provider_attested",
"passed": false
}
],
"level": 0,
"tier": "REGISTERED"
},
"pq_alg": "ML-DSA-87",
"pq_seal": "xDHYily76SshUyXbDY51aGLqES2EAllAZfvIvRwG72-bGj_2DEtTaBalwl8D3Fe0IUv3JoyLFtE02qp233hJrER63dfFx5ddozhcMEGa8DLkoEDXXJGsVnhVNRMSjbdVc_G-C-0_OM8_zk9qLQfHvIXoEgPSZB0gP1XL5o9ep8MG90wdTal1yEq1yqUxks0m25LbSHdp6ZvYkAt5Ve7w0i2lOJQ48pD0N-_9GIBcVmw-nwntJ9pVtke3BcBKjA6XmmA2ExkQ4izoWWspWZWJ5kaDNGnj7Iv5mdLeeYUoUfCXA4roDDh5lJZthzs0ueKNi3ubTT9JJYRYz5imlSA4Vyki_L9w2Eg0BNyBLemPcpLJUKNeRAO0_iwNj8ZvpqUJT9ipvBk-L7QZdmsYcij0theCKSjGxev5bPjkY0rr5f3bkdI65xFibA1KWV_JtNfx-nPNjyCA9dQXks1E9ah6K5Xar8ejC1Dsk9mNdSM2eBpsDZQoO-loDfBK4_zq0LpqphOkqWSUTtcuOxBHxyeLcjTIELljWEyZZ4IpRYxdiepg3rLPeTlo1uyvJqv_dDxkPqusidrpMeZJxWX_g098pvtpwcwOzV7n4JxnWfc7mnqn28s-4PmJMS-y63lj7nCHUx-x7vf0eny1lSEN24sdIu9onEd5bp8zUzpdffpDRzEIwA-wh40AtTf8mn6Hx0gdAFGMFy4IYqlsqf_8uFs7-ocAzSImJ9koNxZlmAVBSIDcPSbbDCuyLYpRx2IdQ4KwWi2_Ck9Es37rDCic4Skozd5DSmk9Qoi5wkTEZ0CmsyIln9DxBudCNOcj29gB65-P4HgPm_u2fU2A7MOcuHWRre3NBDX8_Nj_WWuDnKZ0Tw9Q5dbJy5NnZmIIP8mON-booeRDY2lPTCvaX-vhq8v-hY6pf1H4fG_y-ePEWaody5uHabnfbrYyAELkMhurtBYy_H53H5WvktbD-fJNpwQL1JY3z-y5-2KhTQ1QReDS8eiGPRMcHqsFi4yjCrmnIgzDharORdN6nwQ6_RJ0ZdT9pxEkMxpjkuHrbJ0aHQa7Zx5E4eDaIPTv117tF7chJ68LP6rcx0bsoJhAdIXTDMOlaGB-ZiYrSS8eEuI5jq-qom2BoD3x445SScg6LjzEJC9mtCMavI-wh9ThV_kEtx63TO7FArJgheSa6Q-b-nohp6LcwoFmCJQlEtjj5pPuK-L-2f96pcqqHJkG8frdohgfq8r_hX3LsLlqkQlotepNQJbU4MsxFBDam0ncxeYwNWk9yfJRrBu2Mx6RxhQGSbQ6WGroIoRKE28_bXHIyxT6_y4-fd3g-cQBWqsXLZdod6YTP7PBg9aYwQOeMsgzMBVH6Y5hD9bwCLeprcz9ui3T6WXsm3lZnkAWcqznL8CWJlkExuRNHCOasqPUjEW08zYtwis-Bc0oXRoMGfdX5GxDe9Tz4SkX1qzqx_N34O4jR3fp_tEt2hD4v1i8cB9X33NSnksffq8ycQMiHFqIEQ6l-YAB2d8aqIDCXKClVM3us_UQAC9l21q0TjcMgRllIiimEDDP9skRSjI9LVwRg24lFwS-Q6UlIvKEUVyVz1ncdyDSma1hPSuN2B_8lYEwrPbwrmOcBrlodGonY224JmIZItSOuysvTOau43HWIzhQBfj6g3tzckj1_VqCy2m3dvLksnGFaOMORNdUQvBLkh1tOYavoHiIgOKGEpOMbgQst9KGtO7J3ZGh5lVeVxdMlDef_n7X5LrmBCY50MdZ9_V2K8x1ZOGnV_c3nlleZWa9efXXlydbTOt3ZipajJu2f2VXnHE-foxa0Bp777_gcV-lpQSkMRu99mH5vQBygvfCXq4dSlztMZMiuw1vt3_jYuplYZv8q4NC68oUfg-IuD_mFlJ7CrO5Jp61nF2Wz28YRHDRTw1KtNeePTh2fJ236AWM5IRmBFiLFBNi26bo1BsViz8dbsCmSxAIjLue-BrtSZNYfgwNJbjEZSKD8SCBoN1g5QfOS9VUZJffguLFfKcHNpPyu2YrVQKt6T3C0NVIVfEOJ4eTMs-mt5pO0ch0KD-f65V27W16lIBPfRz4gfywqfPHYUldr-1zhtXNbxhEsU9Mam9txk226mZO9ozozvuQjjoT8n_NR0FGraZ2Ng6p4nYND7RKZwR3jS2O0Td84pnUx8IwsN_fkwHuaMCsWmzej7IEMImHlp7FAitAzt0O8BuEzXefzFBD1v4eAuzkMAMqJsHJ6UHlx-dZ2AMDpANTNRkKAAw3GZgEEwWQ3k7CdFOnKHZbY93AfjGioSZCldj3O1_wB-9NBD1RT6kLPQfpaZk3T5W4EXYKBR48cp1UwXAKNdReKhWIBW9KXEiyNz1fwn9_T0bl-rxOpTdtpouKMErXp2zsXLQu0qw0M5e31xjCHLZCEckG1oVikc9dAdx9aUi8b2JRjTQYnaPR_HFB2aYVXYqRISgeZjdFTED6VzA3wOZYqnEeAn7fsi0Q0EEjKghbdDsEFlJJbq6zS2QqGjiFhDBZOf1lPuWl5_5gmIqkiAZ4lK1RpIcS5KBB5_m39c-evHppODF2n5ltQrt2L4xIlqP8EBSWRdhanpAN3dX7V65YZC1TSOHjqp453flpRH3SVPVffs1IAtSZJt1RYKHOd6KYxOjSVv5_b9yVw0bsgNt2doZdwt63dof8Y6Z7pnOFwPYH8XeiO9FgVuch6cbIkfz7mBahW4oPhFQpou914VE7-ANbbnc5qlU_s1sH-IR3DZKDlfbWoPVq3BM_eNs1aj5YHv13ZrbWjL9QoXmFsOqQWGmNjdCLtA9-IKFCtDanIbTZ-7PcnFoxAoZZQX2cNcOpsaJLwBb91HM5_Q1MerdZSeF3eGm3mAzqkF6MhJ3UpleME30DCX9JYQb7UllPVAkvLBGOHvzY4GDMp0KRhlB8vmEZJ5SOVPd2-ebcFMQxZtzxZYQ0igCawlTQN14Rjr9PQfqJI7G3efILvgIM_gpjuyCQoN1ISwD7fXNNBacZoGvdBFkhZutP4kOAUpyneBYVfa-pdewa1-05O31XPlmybuK2xqhcRkFeSwZlx3uBxUi9DPNbAfOXN3vmu45Zt1lvjsdZldVJEXR7AIQIib2ip2f58zv4rOd0xbSiESkS2FsckXv170fesi6Y3C1QEOLkNGydwrHNhJ9otdi0GSPESt7DV2KnUHLFqXWgUJVdL-m4z5ckTN-ZNpfyh2My0mr28vJUvZ8JEfu_HDhoKQ2H_uAgJrNf9b8dEl96LUelsrjNQEnkio5rvaC2VYXSbVD24xlQk5OpAvq9IXgyM9fO9zgEQZhodwyKDp_BE2hpg4oE9WTCw0oOv9u28le7oFjzTBif9uABPUlBXuq1oew2-trRIjfS3bhAOhcHua3oARAoiLMmA-hkzvA-F2Gzru6sTegUHDhkiHkrAb6seRI7WfJoV9QIksxf-yx_C_5o1xn5-MfHZWDLWOpUBEht4SvGJLmLrutspXu0x73h0vYSp6-1F7i_2vH5O9ZFxsjfZUDRKGqPHvdTyZmSjALPODfFfBp7anskIYjDIMY_rybHLNHc6nKxp4sjgJ6JS4fR2xBsV76oiGB0ohyIxaT5PDwtfgBoNvF-3yQJoGin81daOuk_9-bz8JTb733RVgM-0B0ivnS-wCYf75x-V8WbFECD7TUKjpKRM5ByktR9DSd4Z-Vwr1fAarxAk7U9PBQJXoT3-LHBkXBdFvzI0ctlmRbvEucWkHKY5_c_DI99hWHIYDt66Ze9NGaVjCjD4PcexKOZqFh4JN58ERii5zE3yWfZXB9qsFax6cQuKO812WtrNMLbhxb8Y0fa7A816jMhSeBB09KIAD4uSfNES765uqRVDbG7FU9qFl-xr_8m-LinxsS2ZJS0OkFNfNFYuaINLCQbgPfygSxDIqZv3B-dn48vB11m16j-BUVzhaq7jPPRCyZmPTkVPC5TxfQx078mcIEjV-mLLVgkHzqO0aqll0JBs7oflHCSICe78SuUM_PKeu-y_tzKam4sbfwzTK78q4K3Yaf9XQMi4sXBn2TaEiTTIkQZLxkBhnoPiutWBp10ISuUJz_xG6Zy_okOx2rnTNDuUuDqTMB0Fj5rzjcUW52lIfDJ9vbXljfBWqoQV3dUD6aXnzrot-AY-BsiXUbmj4PNNO61h3l_JurYetzdu1R36pCjbfheNzdvN-y3UwX-nX9X0q3UZamqGztFvI8p1cKSMR2Y7R4l69Lsjm-b2eSwtiwVaGFou4uIABYE1A9tHfnYX_6cZde2d1Zn6N-fdlWXjZY4TD1fdEr68nRjIvJ0o8rqrD4Oofy_tl03veYuOnwTDTXGUhXHNbKlU3gFebzm0_7HBe2eofcwH0zN7iAJvQnHauH7J_fmtuvbghKMkEBLrb8mbR1DNS84EeIt6onY4X5wzWVcq1okIpwMLrurpb274E0YVWUyM_BIRx_AtldvXnnsprbK0ok1b-pDtpFTH10E_Fv5YIMOjIhrNMnKBVqXdo0A52vve5ANI8hlpnF4P4jnCOqljNiOVV1W96qkKm_qL1DnE94ipPL5NjTHN_urMTn9cvCPiTG8Eb4Le-lDKkhkEKwHPQZrw7PTsBuT3sHTUmD7e0CGQatRRtvVsINjmFxoh-RnsvSqOFWYux2RM1Z8m1SfXgGYOORN77DCaSEQZzJFFg6cuyajNOSk9JW8Lji6Y_8iB5nCM73iIvwQyMg72w4GG2La5kmL1BU4Xlb4BeNhSF3x4F2pfmMDPZvjEI6k_QI1-cXoKstWeVt4ED943yqgdNTJW0Y-5qVQE-9V4VJ5VBS1mm9XKDjFmTEkNfcgocEvIuVIrzSp9mE0G2efWIP32JrU3hZJYXdquFV7ADuRrneLpSYyvT1SW_JAIaVplvcal4jsdZLAcmRK9NtwfzLFV8eqrAz7z8df3n7Bm44EXKwSkFBgSzbZgN21FDUUYG1ldw0vgBMJ_nbrwHTSxiiJGwQjH48y8xASRCFZcHsbUWgnY9c1aTcZ1cST3pbj1hSbm1Yl0GBRvsygeW1SUf3USFuE2agcEyOlNRB7Ax2o5bvQQ0VcXclyTbqDrGDQFxE2NXP3q9P5o9Kl4MsLbRI24qe8CaHjiqjL0Qk4jLnJtdDj2j17FZqVZGWCLGhGM6nTDAelYe_cbvCUpXj1fq50mujs0Ab9viDaKK6RZbnkFsIHgLT8uW0WAOb_QiCYbarfGEfU9FEV24NMvTR1H-39rE_ixcyQKtWYt_DpK_v5dgU_cFEtRPtUdnpwwd6gmpdxEWmshUhW6_VnlPpFNhrbh_JTPeyEO6ReyeizyVBdaGvhULQk_3og5B2CDmdycyG1mNjzaE6NBoM7ZbUPYgB2ZA_k4b_KzJR4e23h8APpl-32qgBB-50xfXYxWNaofJbDeSbVIdMH4u2KnACQnUWBNNewkMBvZQFg64XQSIjbWApif-HfJMsIg_sDjcFomPvzTlFpbolCx7whHX4Pgm1c5RjwrgEoxprhNae2uI5qRD3SLNG8tqq8ymcl55wZ5Ujf7h0ZWRlA4qSzZTk2dW7D2hvkem6ZBchtiKzjBZcTlFuLrHVqCLhjGTaDy283knKAmUPYKkhqdQT5ZmcLXK27Mhp5xP_MMQFkyoym4tkzIeSWvtbLs9F6f_6kMFk1npwkNlZ1mjF-foH8AvpgzlGstd7A8LQCA5nDg2VN8Ib8B4BqQm-eBSfqM8Zrj8eNbWmedpf_YhFvdCP8Ft9XYrxfk67dkIfXYjsduQwElVZ0CufjvLKlC91cx__NKGx94n2RGwBp99nTO0YhK3dA2UMIbCedpNmsnXUMZTLz7y8nq-ITMIciFqA3MF295IHJfonsDWIE4eAjKmghhFdBASId23B6z3zZrdM2SOPO4aBdzplGgR40BWl1hf1ODwiQ1zo7H4pKWmvJqvNnXACb4-Y5LSGjKVdciAE0sAqvLraczMtCbVVPc1LqdZFXa23G8Q3DMx-VmbMN10SbDddTVsPNEXoot-b5UtvDwqyeG70SY1vhxOC7A_8u7X6Hh2E_NpqRvW8RGDSjpKm__05ylsDhKV1o4-YbJy43UoyPqdRDyg04doSgvMDe3wwRZY2aqszaUn2CpK3AyOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIDRIbHSYuNg"
}
29

cli-render-full

exit 01.067 s2026-09-15 06:05:39 UTC
$ /usr/local/bin/python3 -m aeos.cli render --server http://127.0.0.1:42643 --key /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/agent.key A7BFQTESV --out /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/id.full.png
{
"bytes": 182775,
"format": "png",
"saved_to": "/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/id.full.png",
"view": "full"
}
30

cli-render-public

exit 00.967 s2026-09-15 06:05:40 UTC
$ /usr/local/bin/python3 -m aeos.cli render --server http://127.0.0.1:42643 A7BFQTESV --out /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/id.public.png
{
"bytes": 164835,
"format": "png",
"saved_to": "/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/id.public.png",
"view": "public"
}
31

cli-verify-page

exit 00.566 s2026-09-15 06:05:41 UTC
$ /usr/local/bin/python3 -m aeos.cli verify-page --server http://127.0.0.1:42643 A7BFQTESV
{
"certification": "REGISTERED",
"checked_at": 1789452342319,
"document_type": "IA",
"expires_at": 1820988331892,
"hardware_bound": false,
"holder_key_fingerprint": "b2570f57ef60b40500d68297731e4796bee8c707e6e96d51540b162a0157e0f7",
"id_number": "A7BFQTESV",
"insured": true,
"issued_at": 1789452331892,
"issuer": {
"code": "PHN",
"did": "did:phanes:authority:JiGheM3sejAYptRS1dpkUNkx6fBRJo2phw1lyK25jqQ",
"name": "Phanes"
},
"mark": {
"b64": "UEhOUwIBAAJBN0JGUVRFU1YAAAAAAAGgo6vULwAAAaf7XNd0TkzI6EekHgtTIiHFboMhMCicHs4SJ909_wKEj3Ca8vqF9pTQIAAOqwAArsAAAO4oqv2FJhfFmx9T6Fy4inA33kHSTbgDIZCsyDECerCHOkrmZHUPJV3jp06cnmlL5FJGs3uHQ_9nOllCGp9pB167Y5CQX8wt52fDB77BDxhrLTUKcuzdb62wDNguMr5-fuhjqH65d4ZzJWFteKqzeDsJiWGjTCwpniGO3b6qwcCa28IcPmwiIh1jagZ4KH2czqiDpnYZFyo2uLshXEdCx2LZe2rHKjnPUF8G9E0aJY3N7cYhy4YX5xAke8kcEhj9Heu9b1Fjo3rKinkpWAO7-RO0Ef8OYINBTKDzxukDFBubjDdH6chC9r8d9P_nB8wjv5Jesvu1saARxuYOe1_Zf4_D1p-yzkl0bwfJ5jqgwOXz5sQpxD48N6wLP_zZVJ1M9JQJX-oSN0SaI1cYYg0X7AFqlMLQ74_qiZpKf0E4L05PmbKNBokesmr9EC1lyiQ-3OVqGg9lkUNiNImUyo33EROk8B6VddiKxfRNdwZGoEzjVv2ZKzx1C-d9swIZT8QMp0h5HdV2Qsa2jRiFoVeb9VXqgob5w-OwuhlTmD1ka0i53x9HTnZgq9lWofGRGr7q5pLxgW2bIMjT92R3h7EznVjpjKJ2SaFMNA-OSmX8FFXgftvoQuMbizenJxjyr-g4KymziBoESBsfc0VAG3cN11Osx8iCT_bNBU-hzY1E0nLW78mzZj17fY-0ynmz2-FRg4nvrkT7xk-P9cER7uRy54M7r_StVMMRJW8rDfs8NG5RA2opvQhFtXcJn7JxnWW86PZW-kYYET67qUuTNj84ZW44VNKQzWM2CFiXb6_yxh4U2KgoudOi5uuwMrs9_RwMRglgqHHzmazktVG-1dh2nSXgY6QO0BTYJAK-LHO5eMrTmzPuYfZ8QMMWPdxlgTdDLTzozCvphaHF1ZnHMRhgJjZ9JPaNGjS9Dp07bPcOERy8kV9V7bM92UxwbNcE85uP_c1MzU7xcbSunO1ADcCqbTMHKeBuu2_wvxIvbVSvD4lanhdRyfXJqRlWiVhy3nfZhkcH-nwLZuSDOhbPTjU3pKh9Bx6tEVRWeun0ybW15ZUwICSlAO26iW8QigJ76mbZwQFinaTD1q-cMvm_-Lcxb_Wo5_xX4XMZ_KIV4vnzPprDV5pdj4fg-DDU8MrL6tZNDfgbaWKfp7-R4I4RYLxCgsH3Gs4Xaa6p2gqTv4YSEtHrPrT57F9EjKgFkA3Pa8HrYKEw3GWnsdjMA8cjnstXBr4mWZVTA17Taer9XcoRbwi7wuDz_YqCw77EOODdOV0LPTz3L02BacucJH-GbaeVngvy-U8CLlLv7aYC6xn3EF_y448kb2c44-fpuJTyl-sIlGkl4qcDZTax8EIk2SD_dtHEIjD7C2K9vsuwCm-yKcLH27_R4TjsumbzXIUMGtSZVxwZ7vCxy8WJsJWzrwPag_sjQNXFifsgn4Mc7HNKvxAHPvcp0cqDFgq63pTMjV766wdmqwCr619gcLl31sNF__aQKkci2QYQvyIE6RCbwm2ukvw0S_EwFLas9f71vdYdDoIEgNvcrBStMWN1QkaNGB964WCj8gFiMN2_1W3i2v_B6a2JrzvSvREJQ7jQnnryH3gsMmwb324uhB0LhAjnGkpndIZn2tWAiEEgBvDqljqrcUPJ_DPxoM-fRmP0jxiXehTXe2Sb2yH__v1tpAkLUfxS6VfX1VX8pltM3vWyHwJ1mdRfToLTVAjS9OjFGZtIMhxUWfVSLt5FM--udA1zkZGaGeRZ4R1ZCY2gaWPLIwZWIYSTFMm0wsTbOqZS1FXuR7SYHJBqWn3YIHQbylpJ5tMVzW3uFJg0hn0iKEKe08L3nTXEEhur5FOOgHSVZBD1fDpFoyYP-tYyOZ-U_GHT7KJ_AjcUfiPPi_bS-M2p8BBQWpI6jeOZJaGjlX02pp1EnVsY6a54BfBBEzgwm88JldegoewYomA6Mqa0Efa3jERC7fvCu8ATOGmdDqa9m-QrUaj8FXo1osq7XiK_guCq54O8aSsMSYQn4GnCcjgGazSAdeZ7ZPNJF5hXTc2Nxc5gaMKGl_hmN60DopzTv3Zp4Pz9BnHvSUdM_GNnPuz5DBOt-Uvfm5vJ5_LMsigN9GifY8Cpa4UgpkMhIyZNQGSKnzxJsN74vePfKBHWDLbG_5OpQyh2TcRokYeiv1AlSrJUTcmjjVhSR4u734Pj_2i2xs0DRX11Je8sq93GNuXLqlSUznC4WE9Ntyz5pnwwIlBncgHldV1vygYN67imsbXZl3RduB1BtpK6I8gemn9gVJ7dEhnJPcHHYWJlUv-AD9eyB7LQJPL8r-HFhfRSNmoinl-g7RmZseI_mlma1aEWoOBrBa1K3k6XrI2nIBsWWCzCuLhTBETtWxoB2ZeCQq4H2zaJMf2txJiG9LZ4Y0LAhOhc9-xSUFu_s3GAp8TNfJgqxtLtAnx4wV8B5fWEUhucbk7QqdkLJiZXSwS7Dn3HvIPbBMbUfNaSQlwDXje1lxfWxq4ifjeelwg7ONx5AZo-BPfna9wezQzoQ8POBeNmQCVasKRxVSizuSEAgW-yhPw30DMsg_sfokqgOpyzxcUthg9d-y0sbr9r1eMxhxi9sJr188ZPMRbP0ZIZOZ9EHp_IWsotAcQuC4DdXoJErl50gbqliypIx4w41r3T_jnSrgeXsPF4g1Mf19BInnJhewdr49I0FElcT5M0B3LMB6ZxNeVMCGcWSXe0MkhLsHx2SAXdq6wc6DezYbCWfoOUmtvvjSObAHc_OpcSvkoDbliNO2TieuOsCsJBdxPxMWHN-dCFM6eCoj03yihobaYlb3Me_TAz-Kzy4KFaGwpTeou_I7E1VCPNkdrEcHbWteY5EfV1grsaAOZ5HjjKMUI1lWvagIPpFux9kuT4nJNCyrGzoxUXkHLf88NEEI_3B9y-t1Eew85QX5ZsA7I8t-DtolCE4OvoILMywjWJXkYkC7kncOemuA6LUinQ1KIhB2gka04m38jJIioVOoum18oI25xIiKvHO1XM7nm1d-zan-KLOlRJps8w58fretDLM9Amcj2Gv-bfgGJPbSfr0V-oJ2-YBnabtemJV3Kj0uf3S5A_FnTfhwDpP1wLljR6MYMZVLM_44KSMPURBadtOoYj7jLuht2HLyVCYPetAQac1K0vDP4KeljqzIryh4PkJK7Rlag6JHa_oGGWp6pE4udXZdgMwolW1e35-ERv3A8mJOgDE3XAEZjNKuGYlqWzvys65lJ090HceevsJCOFVbqD2Vk1RoEIJWYU3ESYI84GoBOdVEl_WCRaYTFNwlhvCN6eMIydTpN4cOtVmfucWB6NsqsFM2NDK9EH4IjyGFlaF-2A8bWSVRdFZbvxquv1-AxrdxaHMFbQC6ErPGOWG9lWg9_SiwMfIgWt-Nv5iuLlXOAcjS1VT6KUDf8mPk6Lnwm5lTfpWQcAFhWrpqMlOFaqvGQdM7o8xmD16bM9xOgRth3Ks0dfxqX0cRelq7BWLl2C39u2M8HY4idhDGa2n46Euyc5l2LU8B9Ddi6igA1mtub2srOjQbAXWNH59TXQB-FyDqE6632PKA5MtUuNyjQwRPG8qMQNaa4sdrpO7UUPDF3Qpv5gFJI_g8RkMlV22iAh1rKXJ9JdoYjWhlpsJied_CKEilswJpKXHxO_6_cEkvCv9DTBloBXRk1Lk4q9_3C5Ou5_vjk6UtmWpmeH5hr7-0v1J_4R_bxm-RowD8WpiwP7sKMsIPflU0N7Z-p_Rrz2AYH5EpaKWKjV8kDqzJXJXIoDSUXCwPZpmgd2rOmCy2edNetekplkl8pwDNkFm2kamkW_Of7Zqza-e_yv4Xm6xnHmjeWj4Xn3Zxxodif_Ck-xb54cqLi9COaBxh8FrobKLguSchMIuPL9DOBvAKirqAWz4oX16jafHCACiLmOhEZ2jh5UarM4EpWsQ7aIICLwvD43kpqiz_eLq-NPsXmuDHJo0eLXBeihPHrXWjtBDCAhW7PvgC0VxVYT_Q6fkrdRVaQCWddYaAkXJ_P_pAbiaO3EsZcB40RbCKDU5co1NJm1Bl8996iP4bcMtV9NpZgBjI89s-fiIh9flZGzx02Q9oJA83mX6EfgdvFcvxsIh8qUPTZJth06Q5Ohk_i6tXEBhw_lkvv713pl4U1WisV_5qcoxLUBk5ZN-GfVM2eUoqr0yycnKbiKv7u5AkJ5esay7O_APKlpMaaeiMPrcBk5WevM9e6dA6oHE09Te1efJmtx13aWcQuayUB_4kaczlRA2oXIyYifRGLUgm7YVvnW1xy3cJfdzNDew7utNAXqz5kOiNoDCJKiQVwXUnic8ptWzsWK-dxBwGegP00K-9V6ocWf7BUm1NwGBYJlY0X9TkW2EURp3PLqzMKN6scxlAfFvT7v2ybTLrlOptBiCpVLqMmHZc1Eiurv6_VkfuzSveeXehNleFaYIjI0oshugD7tiSkeNWau3Kmz10fQW3mwwLeZ61qby52-_qc4Oah8F3o4bejGMmGpynvD4K0rukvbo6_7xO7brZgEKD4uJPQrPWeE5hIuC-4EDZu7G1EQ_rwvF-tD6M703IBgGanFJgxgaAN9qnZU2IPHtU54rv7PDeN7gmn-KiQWnSKxG4fZrUBx8nLtcrqO9TkfGntYmpmr_voYqXI8dK06mE47D9vu8eklTMEryjgG9jo3OOQxS5mGJQSGrNzPg926x7SWFNdsjRLPgFcTgySYuXcyjIkSFlc1zZK9CZPT2fgJy2MzFT3E9g58svsofFM2T1VzI3YIwVaCTONig8V8mEJyHLs3DIoP36UF6gr1nxQ4BmTCEL0EpZm95LDgqvc_Kx6UyzuWP3GFnp_QUEY1izHgUuV1ojheh0ou62dBvWJKJFvuIHmx861yn93uEsbLDJHXdQYzd1z5Mh8hrtNT5LqDfzjnepBhS7xeDqKggkSSmUJVz-8nrBQrzeVNzi-_HWGCSMZNG8nevSpTrrI2kGzo9nIS3XJB414MIgLTTayCXx1KHijbd-Ezr03L3aQ_nWMJ8K-KnRjL1j2cbut9X38mPNm34Onh5iELexUnaidaBONVaGdJVJOFtt222m3_hniwrfF-3g6dISA1rpxSDd7OcekMlWOvvJL92G1MiGPOy09ezwrzD_ukiX09rUNbcdKqHSkrWwHRsVMjMjgsna7HA-RTmcaXIyOcmx-aDxS2KF6jgz01vJZdrfd5hOVLt1MlfqefJzafeyVXIp7663IfbJLimzOyE9YLVC2KBEXUDJJBrP3_Z0-uCciioRB1h-rYg7LW0OUHF7mgfaXPUFDrB9hC5CNQmcgGkL5iuY7YPwT7Z8lDtT3Q3geCvFPl9cCf9AzljplcBAlnFuDlzIRBgti_O6kmcBwVVxjhZz8CTL6JULHIodaVzMMioqr54hVzBM3OIR-8WaljfWUL6SOTs4p-jvFQPcP_sSJ67F3AN8l3YpQF-pYYlrZ0uV55YyMgnanzF3iCRrakUQGeiWYE5MdsfjfUO3n_fdaS-p6-AFnTLm7UrXykU70Y8hD8zKFKQ2HYh2RbEskfoLBmfYkbV11LK4djelGjXndfd6_guj7bNFIiU0VCivkKfDZXWI6YhRNWeqGhlglaoAibLDA1o-wOa68qjE6BpL0yoljXhsKdPpCsza7wEDpTbjIDV6Q4ZXm7f2Ugje03jUEWIOB61L-QdbsQa0QA1Ei9EX2BagJt_gk6wRov-k9rlErICgLlZBNiQNerTfCkUTTJEF8Z6w_5fhJd62BcMzAPTe6C7RoW6-e9eLyLa8aMQt6Rd91JT4B9nwFn0GlODG81j-BRB72fn2RuWAtBgzBC2b0UNAXlu-JHZCNf5XPZaC2cc5np8uw6WfKRme59lnITtNV96lTkOhRWXeV35u-1hR_EMDpFQcx07MH9oi9uEUcAhy31T4fv888mSKjMaL1Yr1S6Qb7ePz3y0GWZPy6Wcx8TjB0kaOmGsiMWAm8JeIXWKWFCo3xct4iUSy67niHEljv-wGFXLagX-fyPzwL8gHMUF7SL8XobYsokWLzudSzUFZiHdvbQTDzFuoVkZWJ_BaYN1WecrodmtM_NbkAP6hSqTd2hXf9UsbdsIJetL1QuLYreyclMgC0CWCsGUtpspBenVB59RYfkNCslc2HIJTuYfJNE74sRJktodI6Qkb_fDCAqOWBpa3eMl6O3197wICRLhiA0gLcfNVNXX3KV1xxQV1rR1PsPFB43dIghWmWMp7e87QAAAAAAAAAAAAAAAAAACRgcICgvNT0",
"length": 4787,
"signature": [
"ed25519",
"ml-dsa-87"
],
"version": 2
},
Show the remaining 36 lines
"revocation_reason": null,
"revoked": false,
"subject_did": "did:phanes:agent:Su7mUvo9frLvnCXpDMTzNxSCXpkEEddQ",
"superseded_by": null,
"suspended": false,
"valid": true,
"verdict": {
"checks": {
"issuer_matches": true,
"not_before_ok": true,
"not_expired": true,
"not_revoked": true,
"not_suspended": true,
"pq_signature_valid": true,
"recognized": true,
"signature_valid": true,
"status_checked": true
},
"engine": "rust-cdylib",
"failure_bits": 0,
"fields": {
"expires_at": 1820988331892,
"flags": 2,
"holder_key": "UyIhxW6DITAonB7OEifdPf8ChI9wmvL6hfaU0CAADqs",
"issued_at": 1789452342319,
"issuer_kid": "TkzI6EekHgs",
"level": 0,
"number": "A7BFQTESV",
"revocation_index": 44736,
"status_list_hash": "qv2FJhfFmx9T6Fy4",
"suspension_index": 60968,
"version": 2
},
"ok": true
}
}
32

curl-verify-page-html

exit 00.065 s2026-09-15 06:05:42 UTC
$ bash -c 'curl -s -D - -H '"'"'Accept: text/html'"'"' http://127.0.0.1:42643/v/A7BFQTESV | head -40'
HTTP/1.1 200 OK
date: Tue, 15 Sep 2026 06:05:42 GMT
server: uvicorn
content-security-policy: default-src 'none'; style-src 'unsafe-inline'; img-src data:; base-uri 'none'; form-action 'none'
cache-control: no-store
content-length: 3213
content-type: text/html; charset=utf-8
x-content-type-options: nosniff
x-frame-options: DENY
referrer-policy: no-referrer
cross-origin-resource-policy: same-origin
permissions-policy: camera=(), microphone=(), geolocation=()
<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
<title>Phanes ID A7BFQTESV</title><style>
body{margin:0;background:#F7F3EF;color:#4A4540;font-family:Geist,-apple-system,'Segoe UI',Helvetica,Arial,sans-serif;font-size:16px;line-height:1.5;padding:24px}
.wrap{max-width:720px;margin:0 auto} h1{font-size:28px;font-weight:600;color:#1A1A1A;margin:8px 0 4px;letter-spacing:-0.015em}
.status{display:inline-block;padding:8px 16px;border-radius:999px;font-weight:600;color:#F7F3EF;background:#1A7A2A;margin:12px 0}
dl{display:grid;grid-template-columns:max-content 1fr;gap:8px 16px;margin:16px 0} dt{color:#7A7268} dd{margin:0;color:#1A1A1A;overflow-wrap:anywhere}
.mono{font-family:'Geist Mono',ui-monospace,Menlo,monospace;font-size:14px} table{border-collapse:collapse;width:100%;margin-top:8px}
td{padding:6px 8px;border-bottom:1px solid #DDD7CF} td.ok{color:#1A7A2A} td.bad{color:#CC2D26}
.muted{color:#7A7268;font-size:14px} .brand{display:flex;align-items:center;gap:12px;color:#1A1A1A;font-weight:600}
</style></head><body><div class="wrap">
<div class="brand"><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><g transform="translate(0.000,0.000)"><defs><clipPath id="vpc"><rect width="32.000" height="32.000" rx="1.638"/></clipPath><mask id="vpm"><rect width="32.000" height="32.000" fill="#fff"/><circle cx="15.958" cy="16.032" r="9.738" fill="#000"/></mask></defs><polygon points="0,0 32.000,0 32.000,18.310 18.275,32.000 0,32.000" fill="#1A1A1A" clip-path="url(#vpc)" mask="url(#vpm)"/></g></svg>Phanes</div>
Show the remaining 16 lines
<h1>Phanes ID A7BFQTESV</h1>
<div class="status">Valid</div>
<p class="muted">Live verdict from the Phanes registry at 15 Sep 2026 06:05:42 UTC. The Mark carries an Ed25519 and a FIPS 204 ML-DSA-87 signature; both verified.</p>
<dl>
<dt>Document</dt><dd>IA · software agent</dd>
<dt>Subject</dt><dd class="mono">did:phanes:agent:Su7mUvo9frLvnCXpDMTzNxSCXpkEEddQ</dd>
<dt>Holder key</dt><dd class="mono">b2570f57ef60b40500d68297731e4796bee8c707e6e96d51540b162a0157e0f7</dd>
<dt>Issued</dt><dd>15 Sep 2026 06:05 UTC</dd><dt>Expires</dt><dd>15 Sep 2027 06:05 UTC</dd>
<dt>Certification</dt><dd>REGISTERED</dd>
<dt>Insurance</dt><dd>certificate of insurance in force</dd>
<dt>Issuer</dt><dd class="mono">did:phanes:authority:JiGheM3sejAYptRS1dpkUNkx6fBRJo2phw1lyK25jqQ</dd>
<dt>Mark</dt><dd class="mono">v2 · 4787 bytes · ed25519 + ml-dsa-87</dd>
</dl>
<table><tr><td>recognized</td><td class='ok'>pass</td></tr><tr><td>issuer matches</td><td class='ok'>pass</td></tr><tr><td>signature valid</td><td class='ok'>pass</td></tr><tr><td>not expired</td><td class='ok'>pass</td></tr><tr><td>not before ok</td><td class='ok'>pass</td></tr><tr><td>not revoked</td><td class='ok'>pass</td></tr><tr><td>not suspended</td><td class='ok'>pass</td></tr><tr><td>status checked</td><td class='ok'>pass</td></tr><tr><td>pq signature valid</td><td class='ok'>pass</td></tr></table>
<p class="muted">Machine-readable: send <span class="mono">Accept: application/json</span> to this URL. Verify offline with phanes-core and the trust anchors at /v1/trust-anchors.</p>
</div></body></html>
33

curl-id-page-and-anchors

exit 00.616 s2026-09-15 06:05:42 UTC
$ bash -c 'set -e echo '"'"'# the page every printed QR opens (deployed at https://phanes.app/id), script pinned by CSP hash'"'"' curl -s -D - -o /dev/null http://127.0.0.1:42643/id | grep -i -E '"'"'HTTP/|content-security-policy|content-type|cache-control'"'"' echo; echo '"'"'# the issuer anchors the page verifies against'"'"' curl -s -D - http://127.0.0.1:42643/.well-known/phanes/anchors.json -o /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/anchors.web.json | grep -i -E '"'"'HTTP/|access-control|cache-control|cross-origin'"'"' /usr/local/bin/python3 - <<'"'"'PY'"'"' import json a = json.load(open("/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/anchors.web.json")) print("id_authority.did ", a["id_authority"]["did"]) print("id_authority.jwk ", json.dumps(a["id_authority"]["jwk"])) print("id_authority.pq_alg ", a["id_authority"]["pq_alg"], "public key", len(a["id_authority"]["pq_public_key"]), "chars") for k, v in a["status_lists"].items(): print("status list", k, "JWS", len(v), "chars, ML-DSA-87 seal", len(a["pq_seals"][k]), "chars") print("registry ", a["registry"]); print("generated_at ", a["generated_at"]) PY echo; echo '"'"'# the printed token, verified offline against those anchors with phanes-core (classical v1, Ed25519 seal)'"'"' /usr/local/bin/python3 -m aeos.cli verify-mark --file /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/token.bin --anchors /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/anchors.json --classical'
# the page every printed QR opens (deployed at https://phanes.app/id), script pinned by CSP hash
HTTP/1.1 200 OK
content-security-policy: default-src 'none'; script-src 'sha256-jgWzdom+66ricjmZ+gtadq90OMOAY68Bg3i0VVaZZzw='; style-src 'unsafe-inline'; font-src 'self'; connect-src 'self' https:; img-src data:; base-uri 'none'; form-action 'none'; frame-ancestors 'none'
cache-control: no-store
content-type: text/html; charset=utf-8
x-content-type-options: nosniff
# the issuer anchors the page verifies against
HTTP/1.1 200 OK
cache-control: public, max-age=60
access-control-allow-origin: *
cross-origin-resource-policy: cross-origin
id_authority.did did:phanes:authority:JiGheM3sejAYptRS1dpkUNkx6fBRJo2phw1lyK25jqQ
id_authority.jwk {"kty": "OKP", "crv": "Ed25519", "x": "yKBrE6Rcro6Sgt5dwIZQEEV9Z_KV1yQ0d2nkzSgMcwE", "use": "sig", "kid": "JiGheM3sejAYptRS1dpkUNkx6fBRJo2phw1lyK25jqQ"}
id_authority.pq_alg ML-DSA-87 public key 3456 chars
status list urn:phanes:status:apIxyL4Pzk-ZjWYn JWS 611 chars, ML-DSA-87 seal 6170 chars
status list urn:phanes:status:2StYRAXveCXKyvGy JWS 611 chars, ML-DSA-87 seal 6170 chars
registry http://127.0.0.1:42643
generated_at 1789452342555
# the printed token, verified offline against those anchors with phanes-core (classical v1, Ed25519 seal)
{
"checks": {
"issuer_matches": true,
Show the remaining 16 lines
"not_before_ok": true,
"not_expired": true,
"not_revoked": true,
"not_suspended": true,
"pq_signature_valid": true,
"recognized": true,
"signature_valid": true,
"status_checked": true
},
"elapsed_ns": 185865,
"engine": "rust-cdylib",
"failure_bits": 0,
"mode": "offline",
"ok": true,
"require_pq": false
}
34

cli-audit-stats

exit 00.516 s2026-09-15 06:05:43 UTC
$ /usr/local/bin/python3 -m aeos.cli audit --server http://127.0.0.1:42643
{
"by_caller_kind": {
"anonymous": 16,
"signed": 11
},
"by_status": {
"200": 22,
"201": 5
},
"chain_valid": true,
"entries": 27,
"log_id": "urn:phanes:audit:YsvC8NFszsaAY50x",
"root_hash": "2uFuQuIDNlBG5H6cJjJv1nuCyIGDTo_Pd_6r1-Tee74",
"signed_tree_heads": 0,
"tree_size": 27
}
35

cli-audit-entries

exit 00.566 s2026-09-15 06:05:43 UTC
$ /usr/local/bin/python3 -m aeos.cli audit --server http://127.0.0.1:42643 --key /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/agent.key --limit 12
[
{
"body_sha256": "18a1911b5570d8e88fd1f3a3b63cdb8d0333bb686335c8fbcab2d2ff07f9998f",
"client": "127.0.0.1:43238",
"duration_us": 27551,
"hash": "058d56b7770e287ff3098c7d41083967c1e7cdc802f7abddb13229c6cb01f16c",
"method": "POST",
"path": "/v1/ids/apply",
"prev_hash": "cea1f87e905a60907db8a30413b70063c94184cf476681a4d176d9e337b904d5",
"request_id": "qui5q0baiO3R",
"route": "/v1/ids/apply",
"sequence": 1,
"status": 201,
"timestamp": 1789452331916,
"typ": "phanes-audit-entry",
"user_agent": "phanes-client/0.5.0",
"who": "b2570f57ef60b40500d68297731e4796bee8c707e6e96d51540b162a0157e0f7"
},
{
"body_sha256": "042fb719f9f0a4425b0c2b4a4cf6f483357d8c15a113a79fd1892129aae51c30",
"client": "127.0.0.1:49666",
"duration_us": 1782,
"hash": "96236d1f982eab325ab3515d682d5738b8f3504eaf861e80dc71ff08ffb66166",
"method": "POST",
Show the remaining 165 lines
"path": "/v1/ids/A7BFQTESV/activity/prepare",
"prev_hash": "4a52516ee4a7a63575025e3e6d478cb1ac16f048fd1325f8942d838daf528347",
"request_id": "lEqQGN4l35er",
"route": "/v1/ids/{number}/activity/prepare",
"sequence": 9,
"status": 200,
"timestamp": 1789452336460,
"typ": "phanes-audit-entry",
"user_agent": "phanes-client/0.5.0",
"who": "b2570f57ef60b40500d68297731e4796bee8c707e6e96d51540b162a0157e0f7"
},
{
"body_sha256": "2710e2435bf16392e9c7e703ba6a925ffdc9d6f4f1738a5d0a2d78d2e9102070",
"client": "127.0.0.1:49682",
"duration_us": 2938,
"hash": "c22deac1c38cc2eb69232a2d5ac18335091732ac1871e6c523f5c5832fd835bc",
"method": "POST",
"path": "/v1/ids/A7BFQTESV/activity/commit",
"prev_hash": "96236d1f982eab325ab3515d682d5738b8f3504eaf861e80dc71ff08ffb66166",
"request_id": "UtHFUGdFIfju",
"route": "/v1/ids/{number}/activity/commit",
"sequence": 10,
"status": 201,
"timestamp": 1789452336567,
"typ": "phanes-audit-entry",
"user_agent": "phanes-client/0.5.0",
"who": "b2570f57ef60b40500d68297731e4796bee8c707e6e96d51540b162a0157e0f7"
},
{
"body_sha256": "384f42f53359a9e72b280f887a54f94aa8d507a78da7ed039b1093e672c27e46",
"client": "127.0.0.1:49686",
"duration_us": 1321,
"hash": "e49f736dcda83fe3f62897f7809a894e39a199b5c833fc8e140834ac3404dfb9",
"method": "POST",
"path": "/v1/ids/A7BFQTESV/activity/prepare",
"prev_hash": "c22deac1c38cc2eb69232a2d5ac18335091732ac1871e6c523f5c5832fd835bc",
"request_id": "umbaGX14vPmT",
"route": "/v1/ids/{number}/activity/prepare",
"sequence": 11,
"status": 200,
"timestamp": 1789452337128,
"typ": "phanes-audit-entry",
"user_agent": "phanes-client/0.5.0",
"who": "b2570f57ef60b40500d68297731e4796bee8c707e6e96d51540b162a0157e0f7"
},
{
"body_sha256": "538fe13fead4c91e18e1952931790a5d5be470e9ee314bb8a40fe4b9475a7601",
"client": "127.0.0.1:49702",
"duration_us": 2304,
"hash": "9ac14084efdb438a5f43d842841d6fe3bf7c1db1f99b767127ed5e9354dc3848",
"method": "POST",
"path": "/v1/ids/A7BFQTESV/activity/commit",
"prev_hash": "e49f736dcda83fe3f62897f7809a894e39a199b5c833fc8e140834ac3404dfb9",
"request_id": "71A53diZMpUu",
"route": "/v1/ids/{number}/activity/commit",
"sequence": 12,
"status": 201,
"timestamp": 1789452337133,
"typ": "phanes-audit-entry",
"user_agent": "phanes-client/0.5.0",
"who": "b2570f57ef60b40500d68297731e4796bee8c707e6e96d51540b162a0157e0f7"
},
{
"body_sha256": "c74c9e39470e04843affd72f3ae316b362c6cfe3efda2930de220633a00da8d3",
"client": "127.0.0.1:49716",
"duration_us": 1683,
"hash": "401addcb0c446b9de75a2a71a9bf160c6f97579185a3981534d0fa8fec55065f",
"method": "POST",
"path": "/v1/ids/A7BFQTESV/activity/prepare",
"prev_hash": "9ac14084efdb438a5f43d842841d6fe3bf7c1db1f99b767127ed5e9354dc3848",
"request_id": "2y5ivsGkF1--",
"route": "/v1/ids/{number}/activity/prepare",
"sequence": 13,
"status": 200,
"timestamp": 1789452337731,
"typ": "phanes-audit-entry",
"user_agent": "phanes-client/0.5.0",
"who": "b2570f57ef60b40500d68297731e4796bee8c707e6e96d51540b162a0157e0f7"
},
{
"body_sha256": "32025e12ccc3479b32646cc45310b4e1a86e8067f8bdfb41810c18fa10f66665",
"client": "127.0.0.1:49720",
"duration_us": 2502,
"hash": "0fff6e16cc59d590e091a98527a567634b6d58ac68e0392407610bf3aad4d538",
"method": "POST",
"path": "/v1/ids/A7BFQTESV/activity/commit",
"prev_hash": "401addcb0c446b9de75a2a71a9bf160c6f97579185a3981534d0fa8fec55065f",
"request_id": "30NeGGN5q-Go",
"route": "/v1/ids/{number}/activity/commit",
"sequence": 14,
"status": 201,
"timestamp": 1789452337736,
"typ": "phanes-audit-entry",
"user_agent": "phanes-client/0.5.0",
"who": "b2570f57ef60b40500d68297731e4796bee8c707e6e96d51540b162a0157e0f7"
},
{
"body_sha256": "19f595b623ad31be77c0ea170426f92509bb676bdfe12e8dad5fb17ef22bfe3a",
"client": "127.0.0.1:49742",
"duration_us": 3127,
"hash": "aa04750a6aa927aaa4257bdff36638196dadd62598eaa19256d2d9f2013827d5",
"method": "POST",
"path": "/v1/ids/A7BFQTESV/insurance/quote",
"prev_hash": "1c8c34a9fe9a095f061a3c996cae172fd30abf6384f17e956733f4b9ce26ba18",
"request_id": "0_87Obb5Btwx",
"route": "/v1/ids/{number}/insurance/quote",
"sequence": 17,
"status": 200,
"timestamp": 1789452338871,
"typ": "phanes-audit-entry",
"user_agent": "phanes-client/0.5.0",
"who": "b2570f57ef60b40500d68297731e4796bee8c707e6e96d51540b162a0157e0f7"
},
{
"body_sha256": "521f110ac1bed0473f1384e921cce7f4bcf769a510b59439e4d642c04ab8043c",
"client": "127.0.0.1:49744",
"duration_us": 3377,
"hash": "ca9e10c49387a36747c7fd22a5784882752b7fdc3867bd3bf6d056735985368b",
"method": "POST",
"path": "/v1/ids/A7BFQTESV/insurance/policies",
"prev_hash": "aa04750a6aa927aaa4257bdff36638196dadd62598eaa19256d2d9f2013827d5",
"request_id": "HeyTgWNKupHu",
"route": "/v1/ids/{number}/insurance/policies",
"sequence": 18,
"status": 201,
"timestamp": 1789452338876,
"typ": "phanes-audit-entry",
"user_agent": "phanes-client/0.5.0",
"who": "b2570f57ef60b40500d68297731e4796bee8c707e6e96d51540b162a0157e0f7"
},
{
"body_sha256": "3d188cfbebef74a2e3977e17f3c71b230733c337012ee4602f9d357444d121da",
"client": "127.0.0.1:49756",
"duration_us": 3377,
"hash": "1f0a1d3a2ba6fe9c9e8ac6c1326a965ab71548a42c6cd95942577650935ba111",
"method": "POST",
"path": "/v1/ids/A7BFQTESV/insurance/bind",
"prev_hash": "ca9e10c49387a36747c7fd22a5784882752b7fdc3867bd3bf6d056735985368b",
"request_id": "5NnFTwKPbDVI",
"route": "/v1/ids/{number}/insurance/bind",
"sequence": 19,
"status": 200,
"timestamp": 1789452338882,
"typ": "phanes-audit-entry",
"user_agent": "phanes-client/0.5.0",
"who": "b2570f57ef60b40500d68297731e4796bee8c707e6e96d51540b162a0157e0f7"
},
{
"body_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"client": "127.0.0.1:49782",
"duration_us": 500790,
"hash": "4791d813b806444073877ebac088265f65eefb048b0dbb6267da90b3ddba4319",
"method": "GET",
"path": "/v1/ids/A7BFQTESV/id/full.png",
"prev_hash": "dc85ce8885aea61156375f99de14edea4ca20a1671d0e12d0733213f1108569e",
"request_id": "SAlV104Cf0Hx",
"route": "/v1/ids/{number}/id/full.{fmt}",
"sequence": 21,
"status": 200,
"timestamp": 1789452340796,
"typ": "phanes-audit-entry",
"user_agent": "phanes-client/0.5.0",
"who": "b2570f57ef60b40500d68297731e4796bee8c707e6e96d51540b162a0157e0f7"
}
]
36

cli-audit-inclusion

exit 01.017 s2026-09-15 06:05:44 UTC
$ bash -c '/usr/local/bin/python3 -m aeos.cli audit --server http://127.0.0.1:42643 --tree-head && /usr/local/bin/python3 -m aeos.cli audit --server http://127.0.0.1:42643 --inclusion 3'
{
"jws": "eyJhbGciOiJFZERTQSIsImtpZCI6IkppR2hlTTNzZWpBWXB0UlMxZHBrVU5reDZmQlJKbzJwaHcxbHlLMjVqcVEiLCJ0eXAiOiJwaGFuZXMtc3RoK2p3dCJ9.eyJpYXQiOjE3ODk0NTIzNDQ2MzksImlzcyI6ImRpZDpwaGFuZXM6YXV0aG9yaXR5OkppR2hlTTNzZWpBWXB0UlMxZHBrVU5reDZmQlJKbzJwaHcxbHlLMjVqcVEiLCJsb2dfaWQiOiJ1cm46cGhhbmVzOmF1ZGl0OllzdkM4TkZzenNhQVk1MHgiLCJzdGgiOnsicm9vdF9oYXNoIjoiLUpUQ0NOT011V1Y1c0hyQjBIb1pPa0FFM2JhVE9hWldOaE1ha0ZkZ0Z5VSIsInRpbWVzdGFtcCI6MTc4OTQ1MjM0NDYzOSwidHJlZV9zaXplIjoyOX19.E40hT6YCSsPjRB56UfX8j1bcF6o_7TOYbIu6xaaXbs-i3O3l7bwXBsrJMqCTxhMKPGRosjDNQdtfeNGx1M38DA",
"log_id": "urn:phanes:audit:YsvC8NFszsaAY50x",
"root_hash": "-JTCCNOMuWV5sHrB0HoZOkAE3baTOaZWNhMakFdgFyU",
"timestamp": 1789452344639,
"tree_size": 29
}
{
"audit_path": [
"eJjI5z5pZN98PeImTC0G3L2AVDVjLBjJ8RQe0oJcJlw",
"AyldKIqHZgUzBO4TAuwxMUVqAhsyGQW9kuQ2G460Wzg",
"3U8b4UKFcPM-CeNcVSKfgGpFY1EqHoqW94p-aFv_Aus",
"v8kQf0UNC8Nk5GsnuWcVmEM1CEUnMlrWgcXllFSbUqc",
"kmgaUT_j-bhMrh4AHbxh558mSHB5EQyZPaNiapkh46Q"
],
"entry": {
"body_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"client": "127.0.0.1:43264",
"duration_us": 16064,
"hash": "d3f26bd5e51a544a7d342ee614da4d147ba3f61feb74d4de6e4eaf0d15fe4fa6",
"method": "GET",
"path": "/v1/ids/A7BFQTESV/mark",
"prev_hash": "ea4a01c9a53837eb70ff2027569f30aa06ba6be6d931f1848a269169bb7185d6",
"request_id": "Gw2DLsXvSd0C",
Show the remaining 15 lines
"route": "/v1/ids/{number}/mark",
"sequence": 3,
"status": 200,
"timestamp": 1789452332974,
"typ": "phanes-audit-entry",
"user_agent": "phanes-client/0.5.0",
"who": "anonymous"
},
"leaf_hash": "tv6k0KmlWnVnxM1wBWc9bQgbU_r4uG7PNjmRqastKzM",
"leaf_index": 3,
"log_id": "urn:phanes:audit:YsvC8NFszsaAY50x",
"root_hash": "-JTCCNOMuWV5sHrB0HoZOkAE3baTOaZWNhMakFdgFyU",
"sth": "eyJhbGciOiJFZERTQSIsImtpZCI6IkppR2hlTTNzZWpBWXB0UlMxZHBrVU5reDZmQlJKbzJwaHcxbHlLMjVqcVEiLCJ0eXAiOiJwaGFuZXMtc3RoK2p3dCJ9.eyJpYXQiOjE3ODk0NTIzNDQ2MzksImlzcyI6ImRpZDpwaGFuZXM6YXV0aG9yaXR5OkppR2hlTTNzZWpBWXB0UlMxZHBrVU5reDZmQlJKbzJwaHcxbHlLMjVqcVEiLCJsb2dfaWQiOiJ1cm46cGhhbmVzOmF1ZGl0OllzdkM4TkZzenNhQVk1MHgiLCJzdGgiOnsicm9vdF9oYXNoIjoiLUpUQ0NOT011V1Y1c0hyQjBIb1pPa0FFM2JhVE9hWldOaE1ha0ZkZ0Z5VSIsInRpbWVzdGFtcCI6MTc4OTQ1MjM0NDYzOSwidHJlZV9zaXplIjoyOX19.E40hT6YCSsPjRB56UfX8j1bcF6o_7TOYbIu6xaaXbs-i3O3l7bwXBsrJMqCTxhMKPGRosjDNQdtfeNGx1M38DA",
"tree_size": 29
}
37

robot-manufacturer-attestation

exit 00.165 s2026-09-15 06:05:45 UTC
$ bash -c 'set -e /usr/local/bin/python3 - <<'"'"'PY'"'"' import json, hashlib, os, sys, urllib.request sys.path.insert(0, "/Users/tofael/phanes") from cryptography.hazmat.primitives.asymmetric.ed25519 import Ed25519PrivateKey from aeos.canonical import b64url_encode, ed25519_public_bytes from aeos.phanes_id import HolderKeys, issue_attestation from aeos.cli import save_keys # the manufacturer'"'"'s own key, registered with the registry as a trusted attester (operator call) mk = Ed25519PrivateKey.generate() req = urllib.request.Request("http://127.0.0.1:42643/v1/attesters", data=json.dumps({"attester_did": "did:phanes:attester:phanes-robotics", "public_key": b64url_encode(ed25519_public_bytes(mk.public_key()))}).encode(), headers={"Content-Type": "application/json", "Authorization": "Bearer " + os.environ["PHANES_API_KEY"]}, method="POST") print("register attester ->", urllib.request.urlopen(req).read().decode()) # the unit'"'"'s keys hk = HolderKeys.generate(); print("robot key:", json.dumps(save_keys("/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/robot.key", hk))) serial = "PR1-2026-000042"; serial_digest = hashlib.sha256(serial.encode()).hexdigest() firmware_digest = hashlib.sha256(open("/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/pr1-firmware.bin", "rb").read()).hexdigest() print("serial_digest ", serial_digest); print("firmware_digest", firmware_digest, "(sha256sum of pr1-firmware.bin)") att = issue_attestation(mk, "did:phanes:attester:phanes-robotics", attestation_type="hardware", subject_key_fingerprint=hk.fingerprint, claims={"serial_digest": serial_digest, "firmware_digest": firmware_digest, "hardware_root_of_trust": "tpm2"}, valid_for_ms=30*86400000) open("/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/robot.attestation.jws", "w").write(att) json.dump({"kind": "robot", "manufacturer": "Phanes Robotics", "model": "PR-1", "serial_digest": serial_digest, "hardware_root_of_trust": "tpm2", "firmware_digest": firmware_digest}, open("/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/robot.device.json", "w"), indent=2) print("attestation JWS bytes:", len(att)); print("device profile:", open("/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/robot.device.json").read()) PY'
register attester -> {"attester_did":"did:phanes:attester:phanes-robotics","registered":true}
robot key: {"path": "/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/robot.key", "fingerprint": "24d3fa3d5be129cedd15ddbb13325b032a1e05ecc00d934859d60ab3540c3ebe", "signing_public": "etXpiBI5K3H0ApwqboR2_RmxO8pkDWztdcB3wCrkaNY", "sealed": false}
serial_digest 7172af38e968ca2cabb86eb35f83d16e2f7ded53780466a1f408360e0bb2e11f
firmware_digest ef99b297bde34f7c24c1823555b90b6f30194638b76f8d639bec3b2ef92cc886 (sha256sum of pr1-firmware.bin)
attestation JWS bytes: 847
device profile: {
"kind": "robot",
"manufacturer": "Phanes Robotics",
"model": "PR-1",
"serial_digest": "7172af38e968ca2cabb86eb35f83d16e2f7ded53780466a1f408360e0bb2e11f",
"hardware_root_of_trust": "tpm2",
"firmware_digest": "ef99b297bde34f7c24c1823555b90b6f30194638b76f8d639bec3b2ef92cc886"
}
38

cli-apply-robot

exit 00.616 s2026-09-15 06:05:45 UTC
$ /usr/local/bin/python3 -m aeos.cli apply --server http://127.0.0.1:42643 --key /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/robot.key --name 'PR-1 Warehouse Unit 42' --controller-did did:phanes:org:phanes-robotics --controller-legal-name 'Phanes Robotics GmbH' --jurisdiction DEU --model-provider Anthropic --model-id claude-sonnet-5 --capability manipulate --capability navigate --bound max_transaction_value=0 --device @/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/robot.device.json --attestation /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/robot.attestation.jws --out /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/robot.id.json
{
"activity_log_id": "urn:phanes:log:62rPrJSM4Y6NTPoaxJGEow",
"document_type": "IR",
"expires_at": 1820988345870,
"hardware_bound": true,
"id_number": "4CAP5XYBO",
"jti": "urn:phanes:ID:Z7knOKFFtSSFtBFfwFoplFCBVKBuRgYJkw5rBaUN_NM",
"protocol_identity": {
"anchor_id": "anc_5f973e5269e249c10c73",
"did": "did:aeos:69006ad3f662d91561e5b5c48f5259bb",
"registered_at": 1789452345893
},
"saved_to": "/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/robot.id.json",
"subject_did": "did:phanes:agent:sxo7xEZ-WuqdO1H5afoVMGcQqPa77ANY"
}
39

cli-robot-packages

exit 00.516 s2026-09-15 06:05:46 UTC
$ /usr/local/bin/python3 -m aeos.cli packages --server http://127.0.0.1:42643 --number 4CAP5XYBO
{
"agent": {
"certification_tier": "REGISTERED",
"hardware_bound": true,
"id_number": "4CAP5XYBO"
},
"eligibility": {
"institutional": {
"eligible": false,
"reason": "package requires at least CERTIFIED; agent is REGISTERED"
},
"professional": {
"eligible": false,
"reason": "package requires at least VERIFIED; agent is REGISTERED"
},
"robotics": {
"eligible": false,
"reason": "package requires at least VERIFIED; agent is REGISTERED"
},
"starter": {
"eligible": true,
"reason": "eligible"
}
},
Show the remaining 666 lines
"indicative": {
"institutional": {
"CERTIFIED": {
"activity_profile": {
"events": 600,
"outcomes": {
"failed": 3,
"ok": 597
},
"witnessed_events": 200
},
"declined": false,
"factors": [
{
"factor": "certification_tier",
"multiplier_bps": 10000
},
{
"factor": "history_depth",
"multiplier_bps": 9000
},
{
"factor": "adverse_outcome_rate",
"multiplier_bps": 10000
},
{
"factor": "hardware_bound",
"multiplier_bps": 9000
}
],
"multiplier_bps": 8100,
"premium_minor": 13471697,
"reason": null,
"term_days": 363
},
"INSTITUTIONAL": {
"activity_profile": {
"events": 5000,
"outcomes": {
"failed": 10,
"ok": 4990
},
"witnessed_events": 2500
},
"declined": false,
"factors": [
{
"factor": "certification_tier",
"multiplier_bps": 8500
},
{
"factor": "history_depth",
"multiplier_bps": 9000
},
{
"factor": "adverse_outcome_rate",
"multiplier_bps": 10000
},
{
"factor": "hardware_bound",
"multiplier_bps": 9000
}
],
"multiplier_bps": 6885,
"premium_minor": 11898468,
"reason": null,
"term_days": 363
},
"REGISTERED": {
"activity_profile": {
"events": 0,
"outcomes": {},
"witnessed_events": 0
},
"declined": false,
"factors": [
{
"factor": "certification_tier",
"multiplier_bps": 14000
},
{
"factor": "history_depth",
"multiplier_bps": 13000
},
{
"factor": "adverse_outcome_rate",
"multiplier_bps": 10000
},
{
"factor": "hardware_bound",
"multiplier_bps": 9000
}
],
"multiplier_bps": 16380,
"premium_minor": 24192964,
"reason": null,
"term_days": 363
},
"VERIFIED": {
"activity_profile": {
"events": 120,
"outcomes": {
"failed": 1,
"ok": 119
},
"witnessed_events": 30
},
"declined": false,
"factors": [
{
"factor": "certification_tier",
"multiplier_bps": 11000
},
{
"factor": "history_depth",
"multiplier_bps": 10000
},
{
"factor": "adverse_outcome_rate",
"multiplier_bps": 10000
},
{
"factor": "hardware_bound",
"multiplier_bps": 9000
}
],
"multiplier_bps": 9900,
"premium_minor": 15802407,
"reason": null,
"term_days": 363
}
},
"professional": {
"CERTIFIED": {
"activity_profile": {
"events": 600,
"outcomes": {
"failed": 3,
"ok": 597
},
"witnessed_events": 200
},
"declined": false,
"factors": [
{
"factor": "certification_tier",
"multiplier_bps": 10000
},
{
"factor": "history_depth",
"multiplier_bps": 9000
},
{
"factor": "adverse_outcome_rate",
"multiplier_bps": 10000
},
{
"factor": "hardware_bound",
"multiplier_bps": 9000
}
],
"multiplier_bps": 8100,
"premium_minor": 1234395,
"reason": null,
"term_days": 363
},
"INSTITUTIONAL": {
"activity_profile": {
"events": 5000,
"outcomes": {
"failed": 10,
"ok": 4990
},
"witnessed_events": 2500
},
"declined": false,
"factors": [
{
"factor": "certification_tier",
"multiplier_bps": 8500
},
{
"factor": "history_depth",
"multiplier_bps": 9000
},
{
"factor": "adverse_outcome_rate",
"multiplier_bps": 10000
},
{
"factor": "hardware_bound",
"multiplier_bps": 9000
}
],
"multiplier_bps": 6885,
"premium_minor": 1093987,
"reason": null,
"term_days": 363
},
"REGISTERED": {
"activity_profile": {
"events": 0,
"outcomes": {},
"witnessed_events": 0
},
"declined": false,
"factors": [
{
"factor": "certification_tier",
"multiplier_bps": 14000
},
{
"factor": "history_depth",
"multiplier_bps": 13000
},
{
"factor": "adverse_outcome_rate",
"multiplier_bps": 10000
},
{
"factor": "hardware_bound",
"multiplier_bps": 9000
}
],
"multiplier_bps": 16380,
"premium_minor": 2191239,
"reason": null,
"term_days": 363
},
"VERIFIED": {
"activity_profile": {
"events": 120,
"outcomes": {
"failed": 1,
"ok": 119
},
"witnessed_events": 30
},
"declined": false,
"factors": [
{
"factor": "certification_tier",
"multiplier_bps": 11000
},
{
"factor": "history_depth",
"multiplier_bps": 10000
},
{
"factor": "adverse_outcome_rate",
"multiplier_bps": 10000
},
{
"factor": "hardware_bound",
"multiplier_bps": 9000
}
],
"multiplier_bps": 9900,
"premium_minor": 1442404,
"reason": null,
"term_days": 363
}
},
"robotics": {
"CERTIFIED": {
"activity_profile": {
"events": 600,
"outcomes": {
"failed": 3,
"ok": 597
},
"witnessed_events": 200
},
"declined": false,
"factors": [
{
"factor": "certification_tier",
"multiplier_bps": 10000
},
{
"factor": "history_depth",
"multiplier_bps": 9000
},
{
"factor": "adverse_outcome_rate",
"multiplier_bps": 10000
},
{
"factor": "hardware_bound",
"multiplier_bps": 9000
}
],
"multiplier_bps": 8100,
"premium_minor": 15047979,
"reason": null,
"term_days": 363
},
"INSTITUTIONAL": {
"activity_profile": {
"events": 5000,
"outcomes": {
"failed": 10,
"ok": 4990
},
"witnessed_events": 2500
},
"declined": false,
"factors": [
{
"factor": "certification_tier",
"multiplier_bps": 8500
},
{
"factor": "history_depth",
"multiplier_bps": 9000
},
{
"factor": "adverse_outcome_rate",
"multiplier_bps": 10000
},
{
"factor": "hardware_bound",
"multiplier_bps": 9000
}
],
"multiplier_bps": 6885,
"premium_minor": 13051839,
"reason": null,
"term_days": 363
},
"REGISTERED": {
"activity_profile": {
"events": 0,
"outcomes": {},
"witnessed_events": 0
},
"declined": false,
"factors": [
{
"factor": "certification_tier",
"multiplier_bps": 14000
},
{
"factor": "history_depth",
"multiplier_bps": 13000
},
{
"factor": "adverse_outcome_rate",
"multiplier_bps": 10000
},
{
"factor": "hardware_bound",
"multiplier_bps": 9000
}
],
"multiplier_bps": 16380,
"premium_minor": 28651307,
"reason": null,
"term_days": 363
},
"VERIFIED": {
"activity_profile": {
"events": 120,
"outcomes": {
"failed": 1,
"ok": 119
},
"witnessed_events": 30
},
"declined": false,
"factors": [
{
"factor": "certification_tier",
"multiplier_bps": 11000
},
{
"factor": "history_depth",
"multiplier_bps": 10000
},
{
"factor": "adverse_outcome_rate",
"multiplier_bps": 10000
},
{
"factor": "hardware_bound",
"multiplier_bps": 9000
}
],
"multiplier_bps": 9900,
"premium_minor": 18005224,
"reason": null,
"term_days": 363
}
},
"starter": {
"CERTIFIED": {
"activity_profile": {
"events": 600,
"outcomes": {
"failed": 3,
"ok": 597
},
"witnessed_events": 200
},
"declined": false,
"factors": [
{
"factor": "certification_tier",
"multiplier_bps": 10000
},
{
"factor": "history_depth",
"multiplier_bps": 9000
},
{
"factor": "adverse_outcome_rate",
"multiplier_bps": 10000
},
{
"factor": "hardware_bound",
"multiplier_bps": 9000
}
],
"multiplier_bps": 8100,
"premium_minor": 75037,
"reason": null,
"term_days": 363
},
"INSTITUTIONAL": {
"activity_profile": {
"events": 5000,
"outcomes": {
"failed": 10,
"ok": 4990
},
"witnessed_events": 2500
},
"declined": false,
"factors": [
{
"factor": "certification_tier",
"multiplier_bps": 8500
},
{
"factor": "history_depth",
"multiplier_bps": 9000
},
{
"factor": "adverse_outcome_rate",
"multiplier_bps": 10000
},
{
"factor": "hardware_bound",
"multiplier_bps": 9000
}
],
"multiplier_bps": 6885,
"premium_minor": 66578,
"reason": null,
"term_days": 363
},
"REGISTERED": {
"activity_profile": {
"events": 0,
"outcomes": {},
"witnessed_events": 0
},
"declined": false,
"factors": [
{
"factor": "certification_tier",
"multiplier_bps": 14000
},
{
"factor": "history_depth",
"multiplier_bps": 13000
},
{
"factor": "adverse_outcome_rate",
"multiplier_bps": 10000
},
{
"factor": "hardware_bound",
"multiplier_bps": 9000
}
],
"multiplier_bps": 16380,
"premium_minor": 132677,
"reason": null,
"term_days": 363
},
"VERIFIED": {
"activity_profile": {
"events": 120,
"outcomes": {
"failed": 1,
"ok": 119
},
"witnessed_events": 30
},
"declined": false,
"factors": [
{
"factor": "certification_tier",
"multiplier_bps": 11000
},
{
"factor": "history_depth",
"multiplier_bps": 10000
},
{
"factor": "adverse_outcome_rate",
"multiplier_bps": 10000
},
{
"factor": "hardware_bound",
"multiplier_bps": 9000
}
],
"multiplier_bps": 9900,
"premium_minor": 87567,
"reason": null,
"term_days": 363
}
}
},
"packages": [
{
"aggregate_limit_minor": 7500000,
"audience": "Individual builders and early-stage agents",
"coverages": [
{
"aggregate_limit_minor": 5000000,
"coverage_type": "errors_omissions",
"deductible_minor": 25000,
"limit_per_claim_minor": 2500000
},
{
"aggregate_limit_minor": 2500000,
"coverage_type": "unauthorized_action",
"deductible_minor": 25000,
"limit_per_claim_minor": 1000000
}
],
"min_certification_tier": "REGISTERED",
"name": "starter",
"notes": "Enough to be admitted to venues that require insurance; deductible kept low.",
"requires_hardware_bound": false
},
{
"aggregate_limit_minor": 120000000,
"audience": "Production agents transacting with third parties",
"coverages": [
{
"aggregate_limit_minor": 50000000,
"coverage_type": "errors_omissions",
"deductible_minor": 100000,
"limit_per_claim_minor": 25000000
},
{
"aggregate_limit_minor": 25000000,
"coverage_type": "unauthorized_action",
"deductible_minor": 100000,
"limit_per_claim_minor": 10000000
},
{
"aggregate_limit_minor": 25000000,
"coverage_type": "non_delivery",
"deductible_minor": 100000,
"limit_per_claim_minor": 10000000
},
{
"aggregate_limit_minor": 20000000,
"coverage_type": "data_breach",
"deductible_minor": 250000,
"limit_per_claim_minor": 10000000
}
],
"min_certification_tier": "VERIFIED",
"name": "professional",
"notes": "Requires verified controller (KYB) and model attestations.",
"requires_hardware_bound": false
},
{
"aggregate_limit_minor": 1200000000,
"audience": "Financial institutions, government, large enterprise",
"coverages": [
{
"aggregate_limit_minor": 500000000,
"coverage_type": "errors_omissions",
"deductible_minor": 1000000,
"limit_per_claim_minor": 200000000
},
{
"aggregate_limit_minor": 200000000,
"coverage_type": "unauthorized_action",
"deductible_minor": 1000000,
"limit_per_claim_minor": 100000000
},
{
"aggregate_limit_minor": 100000000,
"coverage_type": "non_delivery",
"deductible_minor": 500000,
"limit_per_claim_minor": 50000000
},
{
"aggregate_limit_minor": 100000000,
"coverage_type": "fraud",
"deductible_minor": 500000,
"limit_per_claim_minor": 50000000
},
{
"aggregate_limit_minor": 200000000,
"coverage_type": "data_breach",
"deductible_minor": 1000000,
"limit_per_claim_minor": 100000000
},
{
"aggregate_limit_minor": 100000000,
"coverage_type": "erroneous_output",
"deductible_minor": 500000,
"limit_per_claim_minor": 50000000
}
],
"min_certification_tier": "CERTIFIED",
"name": "institutional",
"notes": "Bound only for CERTIFIED or INSTITUTIONAL agents with an anchored activity record.",
"requires_hardware_bound": false
},
{
"aggregate_limit_minor": 700000000,
"audience": "Physical robots, vehicles, drones and embedded agents",
"coverages": [
{
"aggregate_limit_minor": 50000000,
"coverage_type": "errors_omissions",
"deductible_minor": 250000,
"limit_per_claim_minor": 25000000
},
{
"aggregate_limit_minor": 50000000,
"coverage_type": "unauthorized_action",
"deductible_minor": 250000,
"limit_per_claim_minor": 25000000
},
{
"aggregate_limit_minor": 200000000,
"coverage_type": "physical_damage",
"deductible_minor": 500000,
"limit_per_claim_minor": 100000000
},
{
"aggregate_limit_minor": 400000000,
"coverage_type": "bodily_injury",
"deductible_minor": 1000000,
"limit_per_claim_minor": 200000000
}
],
"min_certification_tier": "VERIFIED",
"name": "robotics",
"notes": "Requires a device profile and a verified hardware root-of-trust attestation.",
"requires_hardware_bound": true
}
],
"rate_table_version": "phanes-standard-v1"
}
40

cli-robot-render

exit 01.017 s2026-09-15 06:05:46 UTC
$ /usr/local/bin/python3 -m aeos.cli render --server http://127.0.0.1:42643 --key /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/robot.key 4CAP5XYBO --out /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/robot.full.png
{
"bytes": 196816,
"format": "png",
"saved_to": "/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/robot.full.png",
"view": "full"
}
41

cli-keygen-payee

exit 00.165 s2026-09-15 06:05:47 UTC
$ /usr/local/bin/python3 -m aeos.cli keygen --out /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/payee.key
{
"fingerprint": "778ece1685fbbc5a30b0acb5a2bfbf0a38397435d3f67b1cdc4ee9fce9a315ec",
"path": "/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/payee.key",
"sealed": false,
"signing_public": "BvOFBzcYFDiwE6dwT-uGgXgZC5XuLo5CDJuBWu5opHU"
}
42

cli-apply-payee

exit 00.566 s2026-09-15 06:05:47 UTC
$ /usr/local/bin/python3 -m aeos.cli apply --server http://127.0.0.1:42643 --key /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/payee.key --name 'Filing Extraction Agent' --controller-did did:phanes:org:phanes-labs --controller-legal-name 'Phanes Labs' --jurisdiction USA --model-provider Anthropic --model-id claude-fable-5-1 --capability transact --capability sign_contract --capability dispute --bound max_transaction_value=2500000 --out /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/payee.id.json
{
"activity_log_id": "urn:phanes:log:nI9Gj6wrKfrdQLVZJDBDPw",
"document_type": "IA",
"expires_at": 1820988348169,
"hardware_bound": false,
"id_number": "SWUKBOSJK",
"jti": "urn:phanes:ID:YzRW8aCGMS4zYPhxiyCkfPTlNtMipURmsUMwHK5nKPI",
"protocol_identity": {
"anchor_id": "anc_41e3be2e18798105ee6c",
"did": "did:aeos:6f4235e50c077a4c57e0dea9c3e9f143",
"registered_at": 1789452348191
},
"saved_to": "/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/payee.id.json",
"subject_did": "did:phanes:agent:rNfU16Oxxly0IJEIN78RkEyp0MPUi0OY"
}
43

cli-credits

exit 00.566 s2026-09-15 06:05:48 UTC
$ /usr/local/bin/python3 -m aeos.cli credits --server http://127.0.0.1:42643 A7BFQTESV --amount-minor 120000 --reference wire:walkthrough-2026-09-14
{
"amount_minor": 120000,
"balance_minor": 120000,
"currency": "USD",
"did": "did:aeos:0f897ecebc5f3fc8ab34a2d3a390675c",
"issue_id": "cr_bf63ce66e09605273c1f",
"issued_at": 1789452348737,
"ledger_entry": "1a15e01fc09c737e",
"number": "A7BFQTESV",
"reference": "wire:walkthrough-2026-09-14",
"token_id": "bf63ce66e09605273c1f"
}
44

cli-stack

exit 00.566 s2026-09-15 06:05:48 UTC
$ /usr/local/bin/python3 -m aeos.cli stack --server http://127.0.0.1:42643 --key /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/agent.key A7BFQTESV
{
"anchor_id": "anc_1c3198ef025a9aaa82e3",
"balance_minor": 120000,
"bounds": {
"max_transaction_value": 2500000
},
"capabilities": [
"dispute",
"sign_contract",
"transact"
],
"consensus": {
"anchors": 1,
"quorum": 3,
"replicas": 4
},
"contracts": {
"by_state": {},
"total": 0
},
"did": "did:aeos:0f897ecebc5f3fc8ab34a2d3a390675c",
"disputes": {
"filed": 0,
"lost": 0
Show the remaining 30 lines
},
"document_type": "IA",
"graph": null,
"ledger_entries": 2,
"membership_proof": {
"leaf": "6469643a61656f733a3066383937656365626335663366633861623334613264336133393036373563",
"path": [],
"root": "62dc68152d964b84ec24f4320db1e6000bce64f5196f58803b5fd34d9298b073"
},
"ml": "numpy ensemble",
"number": "A7BFQTESV",
"registered_at": 1789452331915,
"registry_root": "c0ac656eebc5f39210db7f75c153067e5cade7aa489da77e13700e49ea36cfdb",
"reputation": {
"certification": 0.0,
"completed": 0,
"disputes": 0.3,
"history": 0.0,
"score": 0.3
},
"risk": {
"assessments": 0,
"avg_transaction_value": 0.0,
"breaker_failures": 0,
"circuit_breaker": "CLOSED",
"latest": null,
"transactions_profiled": 0,
"typical_counterparties": 0
}
}
45

cli-propose

exit 00.616 s2026-09-15 06:05:49 UTC
$ bash -c 'set -e /usr/local/bin/python3 -m aeos.cli propose --server http://127.0.0.1:42643 --key /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/agent.key A7BFQTESV --template service_agreement --counterparty SWUKBOSJK --price-minor 45000 --description "structured extraction of 300 filings" | tee /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/contract.json echo; echo "contract_id: $(/usr/local/bin/python3 -c "import json; print(json.load(open('"'"'/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/contract.json'"'"'))['"'"'contract_id'"'"'])")" '
{
"activated_at": null,
"amendment_history": [],
"anchors": [
{
"anchor_id": "anc_8f36a91a3844aa864ee5",
"commits": [
{
"canon": "{\"d\":\"fa9cbbaa83332f6159e97bc64a4276915a0853fdaf338c1ab86a707056e64bb3\",\"id\":0,\"s\":4,\"t\":\"COMMIT\",\"ts\":1789452349.87385,\"v\":0}",
"digest": "fa9cbbaa83332f6159e97bc64a4276915a0853fdaf338c1ab86a707056e64bb3",
"sender": 0,
"sequence": 4,
"signature": "78263cc5b290efeef87d459fa11cd97abf926465af6122341683d8c4acc5d1b47f2804caafb7ba4df68d170dbee04fe8b29e4182174cd41ce33cea231295e208",
"timestamp": 1789452349.87385,
"view": 0
},
{
"canon": "{\"d\":\"fa9cbbaa83332f6159e97bc64a4276915a0853fdaf338c1ab86a707056e64bb3\",\"id\":1,\"s\":4,\"t\":\"COMMIT\",\"ts\":1789452349.874057,\"v\":0}",
"digest": "fa9cbbaa83332f6159e97bc64a4276915a0853fdaf338c1ab86a707056e64bb3",
"sender": 1,
"sequence": 4,
"signature": "557301814daf457b2b5b3d26fa0f22cd85085978e5a4fbcae9b9e78baabc220ebd79ff899b6720eb7027d42c90870326ef62367136ecef417ab47a4f05eff801",
"timestamp": 1789452349.874057,
"view": 0
Show the remaining 165 lines
},
{
"canon": "{\"d\":\"fa9cbbaa83332f6159e97bc64a4276915a0853fdaf338c1ab86a707056e64bb3\",\"id\":2,\"s\":4,\"t\":\"COMMIT\",\"ts\":1789452349.8734562,\"v\":0}",
"digest": "fa9cbbaa83332f6159e97bc64a4276915a0853fdaf338c1ab86a707056e64bb3",
"sender": 2,
"sequence": 4,
"signature": "c0808c4c321cc8a93d56945048f5b4da56472c3efae37ab65e0072d9b4d0ea2e0f6fc8106bfb59092e8707c8fbf3a700beb30edc9eb50f447bc90309fd38a00b",
"timestamp": 1789452349.8734562,
"view": 0
},
{
"canon": "{\"d\":\"fa9cbbaa83332f6159e97bc64a4276915a0853fdaf338c1ab86a707056e64bb3\",\"id\":3,\"s\":4,\"t\":\"COMMIT\",\"ts\":1789452349.8736558,\"v\":0}",
"digest": "fa9cbbaa83332f6159e97bc64a4276915a0853fdaf338c1ab86a707056e64bb3",
"sender": 3,
"sequence": 4,
"signature": "2664a6ccad0b65e5138c977acaa40750bc7898a4838a6ca9782d819df737360ecf495defce6d63acb8ae99bbac11b7ffa565593d46393948abd5961aca21d50b",
"timestamp": 1789452349.8736558,
"view": 0
}
],
"committed_at": 1789452349876,
"committed_replicas": 4,
"digest": "fa9cbbaa83332f6159e97bc64a4276915a0853fdaf338c1ab86a707056e64bb3",
"kind": "contract_created",
"operation": {
"contract_id": "924b79a82a6dec855d55d592",
"ledger_entry": "90d98cbc74fa96e0",
"parties": [
"did:aeos:0f897ecebc5f3fc8ab34a2d3a390675c",
"did:aeos:6f4235e50c077a4c57e0dea9c3e9f143"
],
"phanes_ids": [
"A7BFQTESV",
"SWUKBOSJK"
],
"terms_hash": "5c86d3ae0d0d420cde1a69db0654aed9c6b6035c4b6bbbcf94b9fe8ff7d87c14",
"type": "contract_created"
},
"quorum": 3,
"replica_keys": {
"0": "O8WO79m6e-vW7bLqtXBRvOJdmzotvqoo269jibnMsXA",
"1": "AQilzmbeGNddDsE8X1k18z2hcI48lzNSdEieuZy2iVc",
"2": "tqaC3t3rVzs9a1rO4UOb8jHglI141ATF3QtRnVkygjY",
"3": "NhVQNEAVHOvYNIgQWdPvIx3JMJt6GNHDYZ9F8a4PeDM"
},
"replicas": 4,
"sequence": 4,
"view": 0
}
],
"breaches": [],
"contract_id": "924b79a82a6dec855d55d592",
"created_at": 1789452349.8697073,
"dispute_id": null,
"escrow": {
"beneficiary_did": "did:aeos:6f4235e50c077a4c57e0dea9c3e9f143",
"commitment": {
"blinding": "1cf97d181dce578d31fb6ce36f500b48757a97be0e3ed53f78fda3318d94e1f8",
"value_hash": "f86f7b204e1bff15d88db2b4ee931dc66ed253c7b5a8768d28827734757b455d"
},
"created_at": 1789452349.8697,
"depositor_did": "did:aeos:0f897ecebc5f3fc8ab34a2d3a390675c",
"escrow_id": "d4e6537ba1762c41",
"milestones": [
{
"condition": "delivery_confirmed",
"milestone_id": "payment",
"release_proof": null,
"released": false,
"released_at": null,
"value": 45000
}
],
"total_value": 45000
},
"expires_at": 1789625149.8697019,
"metadata": {
"anchors": [
"anc_8f36a91a3844aa864ee5"
],
"counterparty_phanes_id": "SWUKBOSJK",
"currency": "USD",
"description": "structured extraction of 300 filings",
"proposer_phanes_id": "A7BFQTESV",
"risk_at_proposal": {
"factors": {
"behavioral_anomaly": 0.0,
"counterparty_risk": 0.75
},
"level": "LOW",
"overall": 0.1125
},
"service": "structured extraction of 300 filings",
"template": "service_agreement"
},
"obligations": [
{
"creditor_did": "did:aeos:6f4235e50c077a4c57e0dea9c3e9f143",
"deadline": 1789538749.8696365,
"debtor_did": "did:aeos:0f897ecebc5f3fc8ab34a2d3a390675c",
"description": "Payment for: structured extraction of 300 filings",
"fulfilled": false,
"fulfilled_at": null,
"fulfillment_proof": null,
"obligation_id": "payment",
"obligation_type": "payment",
"penalty_on_breach": 4500,
"value": 45000,
"verification_data": {
"trigger": "delivery_confirmed"
},
"verification_method": "escrow_release"
},
{
"creditor_did": "did:aeos:0f897ecebc5f3fc8ab34a2d3a390675c",
"deadline": 1789538749.8696365,
"debtor_did": "did:aeos:6f4235e50c077a4c57e0dea9c3e9f143",
"description": "structured extraction of 300 filings",
"fulfilled": false,
"fulfilled_at": null,
"fulfillment_proof": null,
"obligation_id": "delivery",
"obligation_type": "delivery",
"penalty_on_breach": 4500,
"value": 45000,
"verification_data": {
"proof_type": "delivery_hash"
},
"verification_method": "cryptographic_proof"
}
],
"parties": [
"did:aeos:0f897ecebc5f3fc8ab34a2d3a390675c",
"did:aeos:6f4235e50c077a4c57e0dea9c3e9f143"
],
"phanes_ids": {
"did:aeos:0f897ecebc5f3fc8ab34a2d3a390675c": "A7BFQTESV",
"did:aeos:6f4235e50c077a4c57e0dea9c3e9f143": "SWUKBOSJK"
},
"settlement": null,
"signatures": [],
"state": "PROPOSED",
"summary": {
"contract_id": "924b79a82a6dec855d55d592",
"created_at": 1789452349.8697073,
"escrow_released": 0,
"escrow_remaining": 45000,
"escrow_total": 45000,
"expires_at": 1789625149.8697019,
"fulfilled_obligations": 0,
"overdue_obligations": 0,
"parties": [
"did:aeos:0f897ecebc5f3fc8ab34a2d3a390675c",
"did:aeos:6f4235e50c077a4c57e0dea9c3e9f143"
],
"signatures": 0,
"state": "PROPOSED",
"terms_hash": "5c86d3ae0d0d420cde1a69db0654aed9c6b6035c4b6bbbcf94b9fe8ff7d87c14",
"total_obligations": 2
},
"terminated_at": null,
"termination_reason": null
}
contract_id: 924b79a82a6dec855d55d592
46

cli-sign-contract-payer

exit 00.669 s2026-09-15 06:05:50 UTC
$ bash -c 'set -e; CID=$(/usr/local/bin/python3 -c "import json; print(json.load(open('"'"'/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/contract.json'"'"'))['"'"'contract_id'"'"'])") /usr/local/bin/python3 -m aeos.cli sign-contract --server http://127.0.0.1:42643 --key /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/agent.key A7BFQTESV $CID'
{
"activated_at": null,
"amendment_history": [],
"anchors": [
{
"anchor_id": "anc_8f36a91a3844aa864ee5",
"commits": [
{
"canon": "{\"d\":\"fa9cbbaa83332f6159e97bc64a4276915a0853fdaf338c1ab86a707056e64bb3\",\"id\":0,\"s\":4,\"t\":\"COMMIT\",\"ts\":1789452349.87385,\"v\":0}",
"digest": "fa9cbbaa83332f6159e97bc64a4276915a0853fdaf338c1ab86a707056e64bb3",
"sender": 0,
"sequence": 4,
"signature": "78263cc5b290efeef87d459fa11cd97abf926465af6122341683d8c4acc5d1b47f2804caafb7ba4df68d170dbee04fe8b29e4182174cd41ce33cea231295e208",
"timestamp": 1789452349.87385,
"view": 0
},
{
"canon": "{\"d\":\"fa9cbbaa83332f6159e97bc64a4276915a0853fdaf338c1ab86a707056e64bb3\",\"id\":1,\"s\":4,\"t\":\"COMMIT\",\"ts\":1789452349.874057,\"v\":0}",
"digest": "fa9cbbaa83332f6159e97bc64a4276915a0853fdaf338c1ab86a707056e64bb3",
"sender": 1,
"sequence": 4,
"signature": "557301814daf457b2b5b3d26fa0f22cd85085978e5a4fbcae9b9e78baabc220ebd79ff899b6720eb7027d42c90870326ef62367136ecef417ab47a4f05eff801",
"timestamp": 1789452349.874057,
"view": 0
Show the remaining 171 lines
},
{
"canon": "{\"d\":\"fa9cbbaa83332f6159e97bc64a4276915a0853fdaf338c1ab86a707056e64bb3\",\"id\":2,\"s\":4,\"t\":\"COMMIT\",\"ts\":1789452349.8734562,\"v\":0}",
"digest": "fa9cbbaa83332f6159e97bc64a4276915a0853fdaf338c1ab86a707056e64bb3",
"sender": 2,
"sequence": 4,
"signature": "c0808c4c321cc8a93d56945048f5b4da56472c3efae37ab65e0072d9b4d0ea2e0f6fc8106bfb59092e8707c8fbf3a700beb30edc9eb50f447bc90309fd38a00b",
"timestamp": 1789452349.8734562,
"view": 0
},
{
"canon": "{\"d\":\"fa9cbbaa83332f6159e97bc64a4276915a0853fdaf338c1ab86a707056e64bb3\",\"id\":3,\"s\":4,\"t\":\"COMMIT\",\"ts\":1789452349.8736558,\"v\":0}",
"digest": "fa9cbbaa83332f6159e97bc64a4276915a0853fdaf338c1ab86a707056e64bb3",
"sender": 3,
"sequence": 4,
"signature": "2664a6ccad0b65e5138c977acaa40750bc7898a4838a6ca9782d819df737360ecf495defce6d63acb8ae99bbac11b7ffa565593d46393948abd5961aca21d50b",
"timestamp": 1789452349.8736558,
"view": 0
}
],
"committed_at": 1789452349876,
"committed_replicas": 4,
"digest": "fa9cbbaa83332f6159e97bc64a4276915a0853fdaf338c1ab86a707056e64bb3",
"kind": "contract_created",
"operation": {
"contract_id": "924b79a82a6dec855d55d592",
"ledger_entry": "90d98cbc74fa96e0",
"parties": [
"did:aeos:0f897ecebc5f3fc8ab34a2d3a390675c",
"did:aeos:6f4235e50c077a4c57e0dea9c3e9f143"
],
"phanes_ids": [
"A7BFQTESV",
"SWUKBOSJK"
],
"terms_hash": "5c86d3ae0d0d420cde1a69db0654aed9c6b6035c4b6bbbcf94b9fe8ff7d87c14",
"type": "contract_created"
},
"quorum": 3,
"replica_keys": {
"0": "O8WO79m6e-vW7bLqtXBRvOJdmzotvqoo269jibnMsXA",
"1": "AQilzmbeGNddDsE8X1k18z2hcI48lzNSdEieuZy2iVc",
"2": "tqaC3t3rVzs9a1rO4UOb8jHglI141ATF3QtRnVkygjY",
"3": "NhVQNEAVHOvYNIgQWdPvIx3JMJt6GNHDYZ9F8a4PeDM"
},
"replicas": 4,
"sequence": 4,
"view": 0
}
],
"breaches": [],
"contract_id": "924b79a82a6dec855d55d592",
"created_at": 1789452349.8697073,
"dispute_id": null,
"escrow": {
"beneficiary_did": "did:aeos:6f4235e50c077a4c57e0dea9c3e9f143",
"commitment": {
"blinding": "1cf97d181dce578d31fb6ce36f500b48757a97be0e3ed53f78fda3318d94e1f8",
"value_hash": "f86f7b204e1bff15d88db2b4ee931dc66ed253c7b5a8768d28827734757b455d"
},
"created_at": 1789452349.8697,
"depositor_did": "did:aeos:0f897ecebc5f3fc8ab34a2d3a390675c",
"escrow_id": "d4e6537ba1762c41",
"milestones": [
{
"condition": "delivery_confirmed",
"milestone_id": "payment",
"release_proof": null,
"released": false,
"released_at": null,
"value": 45000
}
],
"total_value": 45000
},
"expires_at": 1789625149.8697019,
"metadata": {
"anchors": [
"anc_8f36a91a3844aa864ee5"
],
"counterparty_phanes_id": "SWUKBOSJK",
"currency": "USD",
"description": "structured extraction of 300 filings",
"proposer_phanes_id": "A7BFQTESV",
"risk_at_proposal": {
"factors": {
"behavioral_anomaly": 0.0,
"counterparty_risk": 0.75
},
"level": "LOW",
"overall": 0.1125
},
"service": "structured extraction of 300 filings",
"template": "service_agreement"
},
"obligations": [
{
"creditor_did": "did:aeos:6f4235e50c077a4c57e0dea9c3e9f143",
"deadline": 1789538749.8696365,
"debtor_did": "did:aeos:0f897ecebc5f3fc8ab34a2d3a390675c",
"description": "Payment for: structured extraction of 300 filings",
"fulfilled": false,
"fulfilled_at": null,
"fulfillment_proof": null,
"obligation_id": "payment",
"obligation_type": "payment",
"penalty_on_breach": 4500,
"value": 45000,
"verification_data": {
"trigger": "delivery_confirmed"
},
"verification_method": "escrow_release"
},
{
"creditor_did": "did:aeos:0f897ecebc5f3fc8ab34a2d3a390675c",
"deadline": 1789538749.8696365,
"debtor_did": "did:aeos:6f4235e50c077a4c57e0dea9c3e9f143",
"description": "structured extraction of 300 filings",
"fulfilled": false,
"fulfilled_at": null,
"fulfillment_proof": null,
"obligation_id": "delivery",
"obligation_type": "delivery",
"penalty_on_breach": 4500,
"value": 45000,
"verification_data": {
"proof_type": "delivery_hash"
},
"verification_method": "cryptographic_proof"
}
],
"parties": [
"did:aeos:0f897ecebc5f3fc8ab34a2d3a390675c",
"did:aeos:6f4235e50c077a4c57e0dea9c3e9f143"
],
"phanes_ids": {
"did:aeos:0f897ecebc5f3fc8ab34a2d3a390675c": "A7BFQTESV",
"did:aeos:6f4235e50c077a4c57e0dea9c3e9f143": "SWUKBOSJK"
},
"settlement": null,
"signatures": [
{
"key_id": "870779309ad1be33",
"signature": "2cfa3a10d655bf1966b444248b9a4b544ef1099bbb4f26396a29f49be2e220472804fa8d3d7262499a5454c382594dd3dfb4afc3d9fee0264dea1d9577e2af06",
"signed_at": 1789452350.5851684,
"signer_did": "did:aeos:0f897ecebc5f3fc8ab34a2d3a390675c",
"terms_hash": "5c86d3ae0d0d420cde1a69db0654aed9c6b6035c4b6bbbcf94b9fe8ff7d87c14"
}
],
"state": "PROPOSED",
"summary": {
"contract_id": "924b79a82a6dec855d55d592",
"created_at": 1789452349.8697073,
"escrow_released": 0,
"escrow_remaining": 45000,
"escrow_total": 45000,
"expires_at": 1789625149.8697019,
"fulfilled_obligations": 0,
"overdue_obligations": 0,
"parties": [
"did:aeos:0f897ecebc5f3fc8ab34a2d3a390675c",
"did:aeos:6f4235e50c077a4c57e0dea9c3e9f143"
],
"signatures": 1,
"state": "PROPOSED",
"terms_hash": "5c86d3ae0d0d420cde1a69db0654aed9c6b6035c4b6bbbcf94b9fe8ff7d87c14",
"total_obligations": 2
},
"terminated_at": null,
"termination_reason": null
}
47

cli-sign-contract-payee

exit 00.719 s2026-09-15 06:05:50 UTC
$ bash -c 'set -e; CID=$(/usr/local/bin/python3 -c "import json; print(json.load(open('"'"'/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/contract.json'"'"'))['"'"'contract_id'"'"'])") /usr/local/bin/python3 -m aeos.cli sign-contract --server http://127.0.0.1:42643 --key /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/payee.key SWUKBOSJK $CID | tee /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/contract.active.json echo; echo "state / settlement:"; /usr/local/bin/python3 -c "import json; d=json.load(open('"'"'/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/contract.active.json'"'"')); print(d['"'"'state'"'"'], json.dumps(d['"'"'settlement'"'"']))" '
{
"activated_at": 1789452351.259379,
"amendment_history": [],
"anchors": [
{
"anchor_id": "anc_8f36a91a3844aa864ee5",
"commits": [
{
"canon": "{\"d\":\"fa9cbbaa83332f6159e97bc64a4276915a0853fdaf338c1ab86a707056e64bb3\",\"id\":0,\"s\":4,\"t\":\"COMMIT\",\"ts\":1789452349.87385,\"v\":0}",
"digest": "fa9cbbaa83332f6159e97bc64a4276915a0853fdaf338c1ab86a707056e64bb3",
"sender": 0,
"sequence": 4,
"signature": "78263cc5b290efeef87d459fa11cd97abf926465af6122341683d8c4acc5d1b47f2804caafb7ba4df68d170dbee04fe8b29e4182174cd41ce33cea231295e208",
"timestamp": 1789452349.87385,
"view": 0
},
{
"canon": "{\"d\":\"fa9cbbaa83332f6159e97bc64a4276915a0853fdaf338c1ab86a707056e64bb3\",\"id\":1,\"s\":4,\"t\":\"COMMIT\",\"ts\":1789452349.874057,\"v\":0}",
"digest": "fa9cbbaa83332f6159e97bc64a4276915a0853fdaf338c1ab86a707056e64bb3",
"sender": 1,
"sequence": 4,
"signature": "557301814daf457b2b5b3d26fa0f22cd85085978e5a4fbcae9b9e78baabc220ebd79ff899b6720eb7027d42c90870326ef62367136ecef417ab47a4f05eff801",
"timestamp": 1789452349.874057,
"view": 0
Show the remaining 265 lines
},
{
"canon": "{\"d\":\"fa9cbbaa83332f6159e97bc64a4276915a0853fdaf338c1ab86a707056e64bb3\",\"id\":2,\"s\":4,\"t\":\"COMMIT\",\"ts\":1789452349.8734562,\"v\":0}",
"digest": "fa9cbbaa83332f6159e97bc64a4276915a0853fdaf338c1ab86a707056e64bb3",
"sender": 2,
"sequence": 4,
"signature": "c0808c4c321cc8a93d56945048f5b4da56472c3efae37ab65e0072d9b4d0ea2e0f6fc8106bfb59092e8707c8fbf3a700beb30edc9eb50f447bc90309fd38a00b",
"timestamp": 1789452349.8734562,
"view": 0
},
{
"canon": "{\"d\":\"fa9cbbaa83332f6159e97bc64a4276915a0853fdaf338c1ab86a707056e64bb3\",\"id\":3,\"s\":4,\"t\":\"COMMIT\",\"ts\":1789452349.8736558,\"v\":0}",
"digest": "fa9cbbaa83332f6159e97bc64a4276915a0853fdaf338c1ab86a707056e64bb3",
"sender": 3,
"sequence": 4,
"signature": "2664a6ccad0b65e5138c977acaa40750bc7898a4838a6ca9782d819df737360ecf495defce6d63acb8ae99bbac11b7ffa565593d46393948abd5961aca21d50b",
"timestamp": 1789452349.8736558,
"view": 0
}
],
"committed_at": 1789452349876,
"committed_replicas": 4,
"digest": "fa9cbbaa83332f6159e97bc64a4276915a0853fdaf338c1ab86a707056e64bb3",
"kind": "contract_created",
"operation": {
"contract_id": "924b79a82a6dec855d55d592",
"ledger_entry": "90d98cbc74fa96e0",
"parties": [
"did:aeos:0f897ecebc5f3fc8ab34a2d3a390675c",
"did:aeos:6f4235e50c077a4c57e0dea9c3e9f143"
],
"phanes_ids": [
"A7BFQTESV",
"SWUKBOSJK"
],
"terms_hash": "5c86d3ae0d0d420cde1a69db0654aed9c6b6035c4b6bbbcf94b9fe8ff7d87c14",
"type": "contract_created"
},
"quorum": 3,
"replica_keys": {
"0": "O8WO79m6e-vW7bLqtXBRvOJdmzotvqoo269jibnMsXA",
"1": "AQilzmbeGNddDsE8X1k18z2hcI48lzNSdEieuZy2iVc",
"2": "tqaC3t3rVzs9a1rO4UOb8jHglI141ATF3QtRnVkygjY",
"3": "NhVQNEAVHOvYNIgQWdPvIx3JMJt6GNHDYZ9F8a4PeDM"
},
"replicas": 4,
"sequence": 4,
"view": 0
},
{
"anchor_id": "anc_0f9a0aeba26f848e7a8b",
"commits": [
{
"canon": "{\"d\":\"728b94da414426b258f30fb7f04e0df5c69f79e0a967ce368386e732afe79846\",\"id\":0,\"s\":5,\"t\":\"COMMIT\",\"ts\":1789452351.261837,\"v\":0}",
"digest": "728b94da414426b258f30fb7f04e0df5c69f79e0a967ce368386e732afe79846",
"sender": 0,
"sequence": 5,
"signature": "26510ebf14fcf66bc29204bb004f59e13fcb99adf336e8f65c394f2dc8af8af4e4b29120cfd398201e1d58f47c0a6485bd1f7bf6ae9f3e566424c390e497770a",
"timestamp": 1789452351.261837,
"view": 0
},
{
"canon": "{\"d\":\"728b94da414426b258f30fb7f04e0df5c69f79e0a967ce368386e732afe79846\",\"id\":1,\"s\":5,\"t\":\"COMMIT\",\"ts\":1789452351.262028,\"v\":0}",
"digest": "728b94da414426b258f30fb7f04e0df5c69f79e0a967ce368386e732afe79846",
"sender": 1,
"sequence": 5,
"signature": "54645301a89bff80defb3ee5ec26dad7670fc25362b33e20098230ebd31988a87aee4fbe0b358df1d273aee2c5e496a393b432bcc9bebd6c862b17a55c39d609",
"timestamp": 1789452351.262028,
"view": 0
},
{
"canon": "{\"d\":\"728b94da414426b258f30fb7f04e0df5c69f79e0a967ce368386e732afe79846\",\"id\":2,\"s\":5,\"t\":\"COMMIT\",\"ts\":1789452351.2614534,\"v\":0}",
"digest": "728b94da414426b258f30fb7f04e0df5c69f79e0a967ce368386e732afe79846",
"sender": 2,
"sequence": 5,
"signature": "0dea41ad6b4dc7c39224f91ba6cc733ecca33126ce3d69996080fae254a7ff8b184fec5fc0beafc8650ea9852ad1a0d9e752b21af95d8e861a76170388fb1100",
"timestamp": 1789452351.2614534,
"view": 0
},
{
"canon": "{\"d\":\"728b94da414426b258f30fb7f04e0df5c69f79e0a967ce368386e732afe79846\",\"id\":3,\"s\":5,\"t\":\"COMMIT\",\"ts\":1789452351.2616458,\"v\":0}",
"digest": "728b94da414426b258f30fb7f04e0df5c69f79e0a967ce368386e732afe79846",
"sender": 3,
"sequence": 5,
"signature": "f1c8b93bb06d17781cfe5a25280227e84b9cd33d413e74633214f8810492458c0b68ae8422ffddac835bfd11f4aa0131ada9f6713d5b6dc2e6da98d01896d30a",
"timestamp": 1789452351.2616458,
"view": 0
}
],
"committed_at": 1789452351264,
"committed_replicas": 4,
"digest": "728b94da414426b258f30fb7f04e0df5c69f79e0a967ce368386e732afe79846",
"kind": "contract_activated",
"operation": {
"contract_id": "924b79a82a6dec855d55d592",
"escrow_minor": 45000,
"ledger_entry": "6f7c17480dd00287",
"type": "contract_activated"
},
"quorum": 3,
"replica_keys": {
"0": "O8WO79m6e-vW7bLqtXBRvOJdmzotvqoo269jibnMsXA",
"1": "AQilzmbeGNddDsE8X1k18z2hcI48lzNSdEieuZy2iVc",
"2": "tqaC3t3rVzs9a1rO4UOb8jHglI141ATF3QtRnVkygjY",
"3": "NhVQNEAVHOvYNIgQWdPvIx3JMJt6GNHDYZ9F8a4PeDM"
},
"replicas": 4,
"sequence": 5,
"view": 0
}
],
"breaches": [],
"contract_id": "924b79a82a6dec855d55d592",
"created_at": 1789452349.8697073,
"dispute_id": null,
"escrow": {
"beneficiary_did": "did:aeos:6f4235e50c077a4c57e0dea9c3e9f143",
"commitment": {
"blinding": "1cf97d181dce578d31fb6ce36f500b48757a97be0e3ed53f78fda3318d94e1f8",
"value_hash": "f86f7b204e1bff15d88db2b4ee931dc66ed253c7b5a8768d28827734757b455d"
},
"created_at": 1789452349.8697,
"depositor_did": "did:aeos:0f897ecebc5f3fc8ab34a2d3a390675c",
"escrow_id": "d4e6537ba1762c41",
"milestones": [
{
"condition": "delivery_confirmed",
"milestone_id": "payment",
"release_proof": null,
"released": false,
"released_at": null,
"value": 45000
}
],
"total_value": 45000
},
"expires_at": 1789625149.8697019,
"metadata": {
"anchors": [
"anc_8f36a91a3844aa864ee5",
"anc_0f9a0aeba26f848e7a8b"
],
"counterparty_phanes_id": "SWUKBOSJK",
"currency": "USD",
"description": "structured extraction of 300 filings",
"proposer_phanes_id": "A7BFQTESV",
"risk_at_activation": {
"approved": true,
"factors": {
"behavioral_anomaly": 0.0,
"concentration_risk": 1.0,
"counterparty_risk": 0.75
},
"level": "LOW",
"overall": 0.2125
},
"risk_at_proposal": {
"factors": {
"behavioral_anomaly": 0.0,
"counterparty_risk": 0.75
},
"level": "LOW",
"overall": 0.1125
},
"service": "structured extraction of 300 filings",
"template": "service_agreement"
},
"obligations": [
{
"creditor_did": "did:aeos:6f4235e50c077a4c57e0dea9c3e9f143",
"deadline": 1789538749.8696365,
"debtor_did": "did:aeos:0f897ecebc5f3fc8ab34a2d3a390675c",
"description": "Payment for: structured extraction of 300 filings",
"fulfilled": true,
"fulfilled_at": 1789452351.2593892,
"fulfillment_proof": "69e1d5673543902d08feabe62044824c2658f2fb070131631438af7b04e00f0a",
"obligation_id": "payment",
"obligation_type": "payment",
"penalty_on_breach": 4500,
"value": 45000,
"verification_data": {
"trigger": "delivery_confirmed"
},
"verification_method": "escrow_release"
},
{
"creditor_did": "did:aeos:0f897ecebc5f3fc8ab34a2d3a390675c",
"deadline": 1789538749.8696365,
"debtor_did": "did:aeos:6f4235e50c077a4c57e0dea9c3e9f143",
"description": "structured extraction of 300 filings",
"fulfilled": false,
"fulfilled_at": null,
"fulfillment_proof": null,
"obligation_id": "delivery",
"obligation_type": "delivery",
"penalty_on_breach": 4500,
"value": 45000,
"verification_data": {
"proof_type": "delivery_hash"
},
"verification_method": "cryptographic_proof"
}
],
"parties": [
"did:aeos:0f897ecebc5f3fc8ab34a2d3a390675c",
"did:aeos:6f4235e50c077a4c57e0dea9c3e9f143"
],
"phanes_ids": {
"did:aeos:0f897ecebc5f3fc8ab34a2d3a390675c": "A7BFQTESV",
"did:aeos:6f4235e50c077a4c57e0dea9c3e9f143": "SWUKBOSJK"
},
"settlement": {
"amount_minor": 45000,
"contract_id": "924b79a82a6dec855d55d592",
"currency": "USD",
"escrow_did": "did:aeos:escrow:924b79a82a6dec855d55d592",
"rail": "service_credits",
"state": "locked",
"stripe": null,
"tokens": [
"0f38370f4c56579477f2"
],
"updated_at": 1789452351259
},
"signatures": [
{
"key_id": "870779309ad1be33",
"signature": "2cfa3a10d655bf1966b444248b9a4b544ef1099bbb4f26396a29f49be2e220472804fa8d3d7262499a5454c382594dd3dfb4afc3d9fee0264dea1d9577e2af06",
"signed_at": 1789452350.5851684,
"signer_did": "did:aeos:0f897ecebc5f3fc8ab34a2d3a390675c",
"terms_hash": "5c86d3ae0d0d420cde1a69db0654aed9c6b6035c4b6bbbcf94b9fe8ff7d87c14"
},
{
"key_id": "48567d94e461260b",
"signature": "6732d12cc687ab82de54e0dbe44b4c9a99ae3810678630eb9c28d6802c5efc46f91fb906df305dd54c12cbf6a22b7591215ac07f6faa5bf02d0bb853be173200",
"signed_at": 1789452351.2576065,
"signer_did": "did:aeos:6f4235e50c077a4c57e0dea9c3e9f143",
"terms_hash": "5c86d3ae0d0d420cde1a69db0654aed9c6b6035c4b6bbbcf94b9fe8ff7d87c14"
}
],
"state": "ACTIVE",
"summary": {
"contract_id": "924b79a82a6dec855d55d592",
"created_at": 1789452349.8697073,
"escrow_released": 0,
"escrow_remaining": 45000,
"escrow_total": 45000,
"expires_at": 1789625149.8697019,
"fulfilled_obligations": 1,
"overdue_obligations": 0,
"parties": [
"did:aeos:0f897ecebc5f3fc8ab34a2d3a390675c",
"did:aeos:6f4235e50c077a4c57e0dea9c3e9f143"
],
"signatures": 2,
"state": "ACTIVE",
"terms_hash": "5c86d3ae0d0d420cde1a69db0654aed9c6b6035c4b6bbbcf94b9fe8ff7d87c14",
"total_obligations": 2
},
"terminated_at": null,
"termination_reason": null
}
state / settlement:
ACTIVE {"amount_minor": 45000, "contract_id": "924b79a82a6dec855d55d592", "currency": "USD", "escrow_did": "did:aeos:escrow:924b79a82a6dec855d55d592", "rail": "service_credits", "state": "locked", "stripe": null, "tokens": ["0f38370f4c56579477f2"], "updated_at": 1789452351259}
48

cli-fulfill

exit 00.716 s2026-09-15 06:05:51 UTC
$ bash -c 'set -e; CID=$(/usr/local/bin/python3 -c "import json; print(json.load(open('"'"'/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/contract.json'"'"'))['"'"'contract_id'"'"'])") OB=$(/usr/local/bin/python3 - <<'"'"'PY'"'"' import json, hashlib d = json.load(open("/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/contract.active.json")) payer = json.load(open("/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/contract.json"))["parties"][0] print([o for o in d["obligations"] if o["debtor_did"] != payer][0]["obligation_id"]) PY ) echo '"'"'{"filings": 300, "format": "jsonl"}'"'"' > /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/deliverable.json; sha256sum /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/deliverable.json /usr/local/bin/python3 -m aeos.cli fulfill --server http://127.0.0.1:42643 --key /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/payee.key SWUKBOSJK $CID $OB --proof-file /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/deliverable.json | tee /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/contract.done.json | head -60 echo; /usr/local/bin/python3 -c "import json; d=json.load(open('"'"'/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/contract.done.json'"'"')); print('"'"'state'"'"', d['"'"'state'"'"'], '"'"'| settlement'"'"', json.dumps(d['"'"'settlement'"'"'])); print('"'"'ml at release'"'"', json.dumps(d['"'"'metadata'"'"'].get('"'"'ml_at_release'"'"')))" '
f94771e83dc279424dc966729509ed9856066680de8ad358ec74c57981761bb1 /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/deliverable.json
{
"activated_at": 1789452351.259379,
"amendment_history": [],
"anchors": [
{
"anchor_id": "anc_8f36a91a3844aa864ee5",
"commits": [
{
"canon": "{\"d\":\"fa9cbbaa83332f6159e97bc64a4276915a0853fdaf338c1ab86a707056e64bb3\",\"id\":0,\"s\":4,\"t\":\"COMMIT\",\"ts\":1789452349.87385,\"v\":0}",
"digest": "fa9cbbaa83332f6159e97bc64a4276915a0853fdaf338c1ab86a707056e64bb3",
"sender": 0,
"sequence": 4,
"signature": "78263cc5b290efeef87d459fa11cd97abf926465af6122341683d8c4acc5d1b47f2804caafb7ba4df68d170dbee04fe8b29e4182174cd41ce33cea231295e208",
"timestamp": 1789452349.87385,
"view": 0
},
{
"canon": "{\"d\":\"fa9cbbaa83332f6159e97bc64a4276915a0853fdaf338c1ab86a707056e64bb3\",\"id\":1,\"s\":4,\"t\":\"COMMIT\",\"ts\":1789452349.874057,\"v\":0}",
"digest": "fa9cbbaa83332f6159e97bc64a4276915a0853fdaf338c1ab86a707056e64bb3",
"sender": 1,
"sequence": 4,
"signature": "557301814daf457b2b5b3d26fa0f22cd85085978e5a4fbcae9b9e78baabc220ebd79ff899b6720eb7027d42c90870326ef62367136ecef417ab47a4f05eff801",
"timestamp": 1789452349.874057,
Show the remaining 40 lines
"view": 0
},
{
"canon": "{\"d\":\"fa9cbbaa83332f6159e97bc64a4276915a0853fdaf338c1ab86a707056e64bb3\",\"id\":2,\"s\":4,\"t\":\"COMMIT\",\"ts\":1789452349.8734562,\"v\":0}",
"digest": "fa9cbbaa83332f6159e97bc64a4276915a0853fdaf338c1ab86a707056e64bb3",
"sender": 2,
"sequence": 4,
"signature": "c0808c4c321cc8a93d56945048f5b4da56472c3efae37ab65e0072d9b4d0ea2e0f6fc8106bfb59092e8707c8fbf3a700beb30edc9eb50f447bc90309fd38a00b",
"timestamp": 1789452349.8734562,
"view": 0
},
{
"canon": "{\"d\":\"fa9cbbaa83332f6159e97bc64a4276915a0853fdaf338c1ab86a707056e64bb3\",\"id\":3,\"s\":4,\"t\":\"COMMIT\",\"ts\":1789452349.8736558,\"v\":0}",
"digest": "fa9cbbaa83332f6159e97bc64a4276915a0853fdaf338c1ab86a707056e64bb3",
"sender": 3,
"sequence": 4,
"signature": "2664a6ccad0b65e5138c977acaa40750bc7898a4838a6ca9782d819df737360ecf495defce6d63acb8ae99bbac11b7ffa565593d46393948abd5961aca21d50b",
"timestamp": 1789452349.8736558,
"view": 0
}
],
"committed_at": 1789452349876,
"committed_replicas": 4,
"digest": "fa9cbbaa83332f6159e97bc64a4276915a0853fdaf338c1ab86a707056e64bb3",
"kind": "contract_created",
"operation": {
"contract_id": "924b79a82a6dec855d55d592",
"ledger_entry": "90d98cbc74fa96e0",
"parties": [
"did:aeos:0f897ecebc5f3fc8ab34a2d3a390675c",
"did:aeos:6f4235e50c077a4c57e0dea9c3e9f143"
],
"phanes_ids": [
"A7BFQTESV",
"SWUKBOSJK"
],
"terms_hash": "5c86d3ae0d0d420cde1a69db0654aed9c6b6035c4b6bbbcf94b9fe8ff7d87c14",
state COMPLETED | settlement {"amount_minor": 45000, "contract_id": "924b79a82a6dec855d55d592", "currency": "USD", "escrow_did": "did:aeos:escrow:924b79a82a6dec855d55d592", "rail": "service_credits", "release_tokens": ["49d67c2c89a5964b735c"], "released_minor": 45000, "state": "released", "stripe": null, "tokens": ["0f38370f4c56579477f2"], "updated_at": 1789452351978}
ml at release {"ensemble_score": 0.25, "is_anomaly": false, "model_trained": false}
49

cli-stack-ledger

exit 00.767 s2026-09-15 06:05:52 UTC
$ bash -c 'set -e /usr/local/bin/python3 -m aeos.cli stack --server http://127.0.0.1:42643 --key /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/agent.key A7BFQTESV --ledger > /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/ledger.json /usr/local/bin/python3 - <<'"'"'PY'"'"' import json, sys sys.path.insert(0, "/Users/tofael/phanes") from aeos.canonical import b64url_decode from aeos.agent_stack import verify_ledger_entry, verify_ledger_inclusion d = json.load(open("/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/ledger.json")) print("ledger root", d["root"], "length", d["length"]) for e in d["entries"]: print(f"{e['"'"'sequence'"'"']:>3} {e['"'"'event_type'"'"']:<22} sig={verify_ledger_entry(e, b64url_decode(d['"'"'operator_public_key'"'"']))!s:<5} inclusion={verify_ledger_inclusion(e, d['"'"'root'"'"'])!s:<5} {e['"'"'entry_id'"'"']}") PY'
ledger root 835bfd049a3b4e499c9557f4fbef844d96cdc3adf93a1a54534158bea9db5e83 length 10
0 agent_registered sig=True inclusion=True ceed8bba46ea72f3
3 transaction_approved sig=True inclusion=True 1a15e01fc09c737e
4 contract_created sig=True inclusion=True 90d98cbc74fa96e0
5 contract_signed sig=True inclusion=True aae8a73ab6fa0348
6 contract_signed sig=True inclusion=True 5a970c0c05a5902e
7 contract_activated sig=True inclusion=True 6f7c17480dd00287
8 obligation_fulfilled sig=True inclusion=True c3bea4e903613f55
9 contract_completed sig=True inclusion=True 704bd475ffd35a3d
50

cli-dispute

exit 011.461 s2026-09-15 06:05:52 UTC
$ bash -c 'set -e echo "# a second contract with a 7-second delivery deadline (0.002 h); the payee never delivers" C2=$(/usr/local/bin/python3 -m aeos.cli propose --server http://127.0.0.1:42643 --key /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/agent.key A7BFQTESV --template service_agreement --counterparty SWUKBOSJK --price-minor 30000 --description "second batch" --deadline-hours 0.002 | /usr/local/bin/python3 -c "import json,sys; print(json.load(sys.stdin)['"'"'contract_id'"'"'])") /usr/local/bin/python3 -m aeos.cli sign-contract --server http://127.0.0.1:42643 --key /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/agent.key A7BFQTESV $C2 > /dev/null /usr/local/bin/python3 -m aeos.cli sign-contract --server http://127.0.0.1:42643 --key /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/payee.key SWUKBOSJK $C2 | /usr/local/bin/python3 -c "import json,sys; d=json.load(sys.stdin); print('"'"'second contract'"'"', d['"'"'contract_id'"'"'], d['"'"'state'"'"'], d['"'"'settlement'"'"']['"'"'state'"'"'])" echo "# waiting 9 s for the deadline to pass"; sleep 9 /usr/local/bin/python3 -m aeos.cli dispute --server http://127.0.0.1:42643 --key /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/agent.key A7BFQTESV --contract-id $C2 --reason non_delivery --description "nothing delivered by the deadline" --damages-minor 30000 | tee /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/dispute.json | head -40'
# a second contract with a 7-second delivery deadline (0.002 h); the payee never delivers
second contract b4bbc167a4da1751035d5ae5 ACTIVE locked
# waiting 9 s for the deadline to pass
{
"anchors": [
{
"anchor_id": "anc_9eda1ea89cb5943bf896",
"commits": [
{
"canon": "{\"d\":\"3a08ab0d9f72da09c4d5aa2d2ca57e7b3ed8a2f955baf5cc9a212dc8e2522b44\",\"id\":0,\"s\":10,\"t\":\"COMMIT\",\"ts\":1789452364.223309,\"v\":0}",
"digest": "3a08ab0d9f72da09c4d5aa2d2ca57e7b3ed8a2f955baf5cc9a212dc8e2522b44",
"sender": 0,
"sequence": 10,
"signature": "1f8116329f5aebf8de78568d256865418404968d0936a17b454d58bd560039d2cf9c45e58bde5cc6278fc3e33f14ef74b94ce3d48651a0651c7a098c91d15e0f",
"timestamp": 1789452364.223309,
"view": 0
},
{
"canon": "{\"d\":\"3a08ab0d9f72da09c4d5aa2d2ca57e7b3ed8a2f955baf5cc9a212dc8e2522b44\",\"id\":1,\"s\":10,\"t\":\"COMMIT\",\"ts\":1789452364.2235355,\"v\":0}",
"digest": "3a08ab0d9f72da09c4d5aa2d2ca57e7b3ed8a2f955baf5cc9a212dc8e2522b44",
"sender": 1,
"sequence": 10,
"signature": "e64a3d5b4d33641510a95470aafd727dfaaeaa1ca8dd53d379102c56189fc4fb51f83d465ee3334f2eb63a3b66fdc66a009e609a1770988dc9ee665fc62e6604",
"timestamp": 1789452364.2235355,
Show the remaining 19 lines
"view": 0
},
{
"canon": "{\"d\":\"3a08ab0d9f72da09c4d5aa2d2ca57e7b3ed8a2f955baf5cc9a212dc8e2522b44\",\"id\":2,\"s\":10,\"t\":\"COMMIT\",\"ts\":1789452364.222863,\"v\":0}",
"digest": "3a08ab0d9f72da09c4d5aa2d2ca57e7b3ed8a2f955baf5cc9a212dc8e2522b44",
"sender": 2,
"sequence": 10,
"signature": "e468cb24bd2eeb8f86f1f46b3d6e5616c64ad65fc5a65f81bc7f7e672b3698b4c88a7c755742656694ec5095af5ef01f1220cc1257a6de91a38ae68511f6640f",
"timestamp": 1789452364.222863,
"view": 0
},
{
"canon": "{\"d\":\"3a08ab0d9f72da09c4d5aa2d2ca57e7b3ed8a2f955baf5cc9a212dc8e2522b44\",\"id\":3,\"s\":10,\"t\":\"COMMIT\",\"ts\":1789452364.2230752,\"v\":0}",
"digest": "3a08ab0d9f72da09c4d5aa2d2ca57e7b3ed8a2f955baf5cc9a212dc8e2522b44",
"sender": 3,
"sequence": 10,
"signature": "9a6963b9e8dc1e4718e019721806be377ff801aec1083c49bcd446eb429db6bb332e307393690070afac9f2bc0de86453b573af6a7ae6512c81346634bb84900",
"timestamp": 1789452364.2230752,
"view": 0
51

cli-evidence

exit 00.668 s2026-09-15 06:06:04 UTC
$ bash -c 'set -e; DID=$(/usr/local/bin/python3 -c "import json; print(json.load(open('"'"'/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/dispute.json'"'"'))['"'"'dispute_id'"'"'])") printf '"'"'no delivery received; deadline passed '"'"' > /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/transcript.txt; sha256sum /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/transcript.txt /usr/local/bin/python3 -m aeos.cli evidence --server http://127.0.0.1:42643 --key /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/agent.key A7BFQTESV $DID --type communication_log --file /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/transcript.txt'
202314f34cbe2dae8b496d07cd2a1e563968080491e629b46aeffcdc2afa54f1 /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/transcript.txt
{
"dispute_id": "4341cef5822da4cc",
"evidence_id": "2c212a2fbce25b6e",
"evidence_root": "86f2c4a775f26b6dda88cbcaa7736a998042411771e4d815d9dd69aab6d11172",
"index": 0,
"state": "FILED"
}
52

cli-resolve

exit 01.117 s2026-09-15 06:06:05 UTC
$ bash -c 'set -e; DID=$(/usr/local/bin/python3 -c "import json; print(json.load(open('"'"'/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/dispute.json'"'"'))['"'"'dispute_id'"'"'])") /usr/local/bin/python3 -m aeos.cli resolve --server http://127.0.0.1:42643 $DID | tee /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/resolution.json | head -50 echo; /usr/local/bin/python3 -c "import json; d=json.load(open('"'"'/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/resolution.json'"'"')); print('"'"'state'"'"', d.get('"'"'state'"'"'), '"'"'| resolution'"'"', d.get('"'"'resolution'"'"'), '"'"'| refund'"'"', d.get('"'"'resolution_amount'"'"'))" echo; echo "payer balance after refund:"; /usr/local/bin/python3 -m aeos.cli stack --server http://127.0.0.1:42643 --key /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/agent.key A7BFQTESV | /usr/local/bin/python3 -c "import json,sys; print(json.load(sys.stdin)['"'"'balance_minor'"'"'])" '
{
"anchors": [
{
"anchor_id": "anc_9eda1ea89cb5943bf896",
"commits": [
{
"canon": "{\"d\":\"3a08ab0d9f72da09c4d5aa2d2ca57e7b3ed8a2f955baf5cc9a212dc8e2522b44\",\"id\":0,\"s\":10,\"t\":\"COMMIT\",\"ts\":1789452364.223309,\"v\":0}",
"digest": "3a08ab0d9f72da09c4d5aa2d2ca57e7b3ed8a2f955baf5cc9a212dc8e2522b44",
"sender": 0,
"sequence": 10,
"signature": "1f8116329f5aebf8de78568d256865418404968d0936a17b454d58bd560039d2cf9c45e58bde5cc6278fc3e33f14ef74b94ce3d48651a0651c7a098c91d15e0f",
"timestamp": 1789452364.223309,
"view": 0
},
{
"canon": "{\"d\":\"3a08ab0d9f72da09c4d5aa2d2ca57e7b3ed8a2f955baf5cc9a212dc8e2522b44\",\"id\":1,\"s\":10,\"t\":\"COMMIT\",\"ts\":1789452364.2235355,\"v\":0}",
"digest": "3a08ab0d9f72da09c4d5aa2d2ca57e7b3ed8a2f955baf5cc9a212dc8e2522b44",
"sender": 1,
"sequence": 10,
"signature": "e64a3d5b4d33641510a95470aafd727dfaaeaa1ca8dd53d379102c56189fc4fb51f83d465ee3334f2eb63a3b66fdc66a009e609a1770988dc9ee665fc62e6604",
"timestamp": 1789452364.2235355,
"view": 0
},
{
Show the remaining 31 lines
"canon": "{\"d\":\"3a08ab0d9f72da09c4d5aa2d2ca57e7b3ed8a2f955baf5cc9a212dc8e2522b44\",\"id\":2,\"s\":10,\"t\":\"COMMIT\",\"ts\":1789452364.222863,\"v\":0}",
"digest": "3a08ab0d9f72da09c4d5aa2d2ca57e7b3ed8a2f955baf5cc9a212dc8e2522b44",
"sender": 2,
"sequence": 10,
"signature": "e468cb24bd2eeb8f86f1f46b3d6e5616c64ad65fc5a65f81bc7f7e672b3698b4c88a7c755742656694ec5095af5ef01f1220cc1257a6de91a38ae68511f6640f",
"timestamp": 1789452364.222863,
"view": 0
},
{
"canon": "{\"d\":\"3a08ab0d9f72da09c4d5aa2d2ca57e7b3ed8a2f955baf5cc9a212dc8e2522b44\",\"id\":3,\"s\":10,\"t\":\"COMMIT\",\"ts\":1789452364.2230752,\"v\":0}",
"digest": "3a08ab0d9f72da09c4d5aa2d2ca57e7b3ed8a2f955baf5cc9a212dc8e2522b44",
"sender": 3,
"sequence": 10,
"signature": "9a6963b9e8dc1e4718e019721806be377ff801aec1083c49bcd446eb429db6bb332e307393690070afac9f2bc0de86453b573af6a7ae6512c81346634bb84900",
"timestamp": 1789452364.2230752,
"view": 0
}
],
"committed_at": 1789452364226,
"committed_replicas": 4,
"digest": "3a08ab0d9f72da09c4d5aa2d2ca57e7b3ed8a2f955baf5cc9a212dc8e2522b44",
"kind": "dispute_filed",
"operation": {
"contract_id": "b4bbc167a4da1751035d5ae5",
"defendant": "did:aeos:6f4235e50c077a4c57e0dea9c3e9f143",
"dispute_id": "4341cef5822da4cc",
state RESOLVED | resolution full_refund | refund 30000
payer balance after refund:
75000
53

cli-inspect-verify

exit 00.716 s2026-09-15 06:06:06 UTC
$ bash -c 'set -e /usr/local/bin/python3 -m aeos.cli inspect --server http://127.0.0.1:42643 A7BFQTESV --verify > /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/inspection.json /usr/local/bin/python3 - <<'"'"'PY'"'"' import json d = json.load(open("/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/inspection.json")); v = d["verification"]; r = d["report"] print("verification:", json.dumps({k: v[k] for k in ("ok", "jws", "pq_seal")}), "anchors verified", sum(v["anchors"].values()), "/", len(v["anchors"])) print("id", r["id_number"], r["document_type"], "| standing", json.dumps(r["status"])) print("certification", r["certification"] and r["certification"]["tier"], "| insurance in force", bool(r["insurance"] and r["insurance"]["in_force"])) print("activity", r["activity"]["events"], "events; by type", json.dumps(r["activity"]["by_type"])) print("venues", [(x["did"], x["events"], x["registered"]) for x in r["venues"]]) s = r["stack"] print("contracts", [(c["contract_id"][:10], c["state"], c["settlement"]["state"], c["counterparty"]["phanes_id"]) for c in s["contracts"]]) print("disputes", [(x["dispute_id"][:10], x["state"], x["resolution"]) for x in s["disputes"]]) print("peers", [(p["phanes_id"], p["certified"], p["contracts"], p["completed"]) for p in s["peers"]]) print("reputation bp", s["reputation"]["score_bp"], "| ledger entries", len(s["ledger"]["entries"]), "| anchors", len(s["consensus"]["anchors"]), "| replicas", s["consensus"]["replicas"], "quorum", s["consensus"]["quorum"]) text = json.dumps(r) for secret in ("Phanes Labs", "balance", "policy_number", "45000", "30000"): assert secret not in text, secret print("redaction check: no controller name, no balances, no policy numbers, no prices in the signed report") PY'
verification: {"ok": true, "jws": true, "pq_seal": true} anchors verified 8 / 8
id A7BFQTESV IA | standing {"revocation_reason": null, "revoked": false, "revoked_at": null, "superseded_by": null, "suspended": false}
certification REGISTERED | insurance in force True
activity 8 events; by type {"contract.created": 2, "contract.signed": 2, "dispute.filed": 1, "tool.invoked": 3}
venues [('did:phanes:authority:JiGheM3sejAYptRS1dpkUNkx6fBRJo2phw1lyK25jqQ', 5, True), ('did:phanes:venue:walkthrough', 3, False)]
contracts [('924b79a82a', 'COMPLETED', 'released', 'SWUKBOSJK'), ('b4bbc167a4', 'DISPUTED', 'resolved', 'SWUKBOSJK')]
disputes [('4341cef582', 'RESOLVED', 'full_refund')]
peers [('SWUKBOSJK', None, 2, 1)]
reputation bp 3195 | ledger entries 15 | anchors 8 | replicas 4 quorum 3
redaction check: no controller name, no balances, no policy numbers, no prices in the signed report
54

cli-anchor

exit 00.717 s2026-09-15 06:06:06 UTC
$ bash -c 'set -e A=$(/usr/local/bin/python3 -c "import json; print(json.load(open('"'"'/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/inspection.json'"'"'))['"'"'report'"'"']['"'"'stack'"'"']['"'"'consensus'"'"']['"'"'anchors'"'"'][0]['"'"'anchor_id'"'"'])") /usr/local/bin/python3 -m aeos.cli anchor --server http://127.0.0.1:42643 $A | /usr/local/bin/python3 -c " import json, sys a = json.load(sys.stdin) print('"'"'anchor'"'"', a['"'"'anchor_id'"'"'], a['"'"'kind'"'"'], '"'"'sequence'"'"', a['"'"'sequence'"'"'], '"'"'view'"'"', a['"'"'view'"'"']) print('"'"'operation_ref'"'"', json.dumps(a['"'"'operation_ref'"'"']), '"'"'(the operation itself stays private)'"'"') print('"'"'digest'"'"', a['"'"'digest'"'"']) for m in a['"'"'commits'"'"']: print('"'"' commit from replica'"'"', m['"'"'sender'"'"'], '"'"'signed bytes'"'"', m['"'"'canon'"'"']) print('"'"'replica keys'"'"', list(a['"'"'replica_keys'"'"'])) print('"'"'registry verification'"'"', json.dumps(a['"'"'verification'"'"'])) print('"'"'local verification '"'"', json.dumps(a['"'"'local_verification'"'"'])) " '
anchor anc_1c3198ef025a9aaa82e3 agent_registered sequence 1 view 0
operation_ref {"phanes_id": "A7BFQTESV", "type": "agent_registered"} (the operation itself stays private)
digest 2d7426cd68e326edb288f4167ee4cf40fbea5ef1ee91c14c458ffd9bb5d2f2a6
commit from replica 0 signed bytes {"d":"2d7426cd68e326edb288f4167ee4cf40fbea5ef1ee91c14c458ffd9bb5d2f2a6","id":0,"s":1,"t":"COMMIT","ts":1789452331.9119205,"v":0}
commit from replica 1 signed bytes {"d":"2d7426cd68e326edb288f4167ee4cf40fbea5ef1ee91c14c458ffd9bb5d2f2a6","id":1,"s":1,"t":"COMMIT","ts":1789452331.9121182,"v":0}
commit from replica 2 signed bytes {"d":"2d7426cd68e326edb288f4167ee4cf40fbea5ef1ee91c14c458ffd9bb5d2f2a6","id":2,"s":1,"t":"COMMIT","ts":1789452331.9115474,"v":0}
commit from replica 3 signed bytes {"d":"2d7426cd68e326edb288f4167ee4cf40fbea5ef1ee91c14c458ffd9bb5d2f2a6","id":3,"s":1,"t":"COMMIT","ts":1789452331.9117324,"v":0}
replica keys ['0', '1', '2', '3']
registry verification {"digest_matches": null, "ok": true, "operation_present": false, "quorum": 3, "replicas": 4, "valid_commits": 4}
local verification {"digest_matches": null, "ok": true, "operation_present": false, "quorum": 3, "replicas": 4, "valid_commits": 4}
55

curl-network

exit 00.064 s2026-09-15 06:06:07 UTC
$ bash -c 'curl -s http://127.0.0.1:42643/v1/network | /usr/local/bin/python3 -c "import json,sys; d=json.load(sys.stdin); print(json.dumps({k: d[k] for k in ('"'"'agents'"'"','"'"'contracts'"'"','"'"'disputes'"'"','"'"'anchors'"'"','"'"'credits_supply_minor'"'"')})); print('"'"'ledger'"'"', json.dumps(d['"'"'ledger'"'"'])); print('"'"'consensus ok'"'"', d['"'"'consensus'"'"']['"'"'network'"'"']['"'"'consensus_ok'"'"'], '"'"'replicas'"'"', d['"'"'consensus'"'"']['"'"'network'"'"']['"'"'n'"'"'])"'
{"agents": 3, "contracts": 2, "disputes": 1, "anchors": 11, "credits_supply_minor": 120000}
ledger {"total_entries": 17, "ledger_root": "07654e726be9b08471ef3a9c735d42b1cbaee08bf1558a08cf7ee0cd778d375d", "unique_actors": 1, "event_counts": {"agent_registered": 3, "transaction_approved": 1, "contract_created": 2, "contract_signed": 4, "contract_activated": 2, "obligation_fulfilled": 1, "contract_completed": 1, "dispute_filed": 1, "evidence_submitted": 1, "dispute_resolved": 1}, "chain_valid": true}
consensus ok True replicas 4
56

cli-admission-policy

exit 00.566 s2026-09-15 06:06:07 UTC
$ /usr/local/bin/python3 -m aeos.cli admission-policy --server http://127.0.0.1:42643
{
"allow_jurisdictions": [],
"deny_jurisdictions": [],
"max_ids_per_controller": 0,
"mode": "open",
"provisional": true,
"provisional_bounds": {
"max_concurrent_contracts": 0,
"max_counterparties": 0,
"max_daily_volume": 0,
"max_delegation_depth": 0,
"max_transaction_value": 0
},
"provisional_validity_ms": 2592000000,
"require_controller_profile": false,
"require_hardware_attestation_for_devices": true,
"require_model_attestation": false
}
57

cli-admission-review

exit 03.827 s2026-09-15 06:06:08 UTC
$ bash -c 'set -e echo '"'"'# review mode: applications queue until the operator decides; open and attested modes decide by rule'"'"' /usr/local/bin/python3 -m aeos.cli admission-policy --server http://127.0.0.1:42643 --set '"'"'{"mode": "review", "max_ids_per_controller": 50}'"'"' /usr/local/bin/python3 -m aeos.cli keygen --out /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/analyst.key > /dev/null echo; echo '"'"'# a third agent applies with its own key and is queued (HTTP 202); nothing is issued yet'"'"' /usr/local/bin/python3 -m aeos.cli apply --server http://127.0.0.1:42643 --key /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/analyst.key --name "Market Analyst Agent" --controller-did did:phanes:org:northwind --controller-legal-name "Northwind Analytics Ltd" --jurisdiction GBR --model-provider Anthropic --model-id claude-sonnet-5 --capability transact --bound max_transaction_value=500000 --out /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/analyst.pending.json | tee /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/analyst.apply.json APP=$(/usr/local/bin/python3 -c "import json; print(json.load(open('"'"'/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/analyst.apply.json'"'"'))['"'"'application_id'"'"'])") echo; echo '"'"'# the operator queue'"'"'; /usr/local/bin/python3 -m aeos.cli admissions --server http://127.0.0.1:42643 --status pending echo; echo '"'"'# approved, issued exactly as applied for'"'"'; /usr/local/bin/python3 -m aeos.cli approve --server http://127.0.0.1:42643 $APP --note "controller registration checked" | head -24 echo; echo '"'"'# the applicant asks for its own application'"'"'; /usr/local/bin/python3 -m aeos.cli application --server http://127.0.0.1:42643 --key /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/analyst.key $APP | head -12 echo; echo '"'"'# every decision on the record'"'"'; /usr/local/bin/python3 -m aeos.cli admission-log --server http://127.0.0.1:42643 --limit 6 /usr/local/bin/python3 -m aeos.cli admission-policy --server http://127.0.0.1:42643 --set '"'"'{"mode": "open"}'"'"' > /dev/null'
# review mode: applications queue until the operator decides; open and attested modes decide by rule
{
"allow_jurisdictions": [],
"deny_jurisdictions": [],
"max_ids_per_controller": 50,
"mode": "review",
"provisional": true,
"provisional_bounds": {
"max_concurrent_contracts": 0,
"max_counterparties": 0,
"max_daily_volume": 0,
"max_delegation_depth": 0,
"max_transaction_value": 0
},
"provisional_validity_ms": 2592000000,
"require_controller_profile": false,
"require_hardware_attestation_for_devices": true,
"require_model_attestation": false
}
# a third agent applies with its own key and is queued (HTTP 202); nothing is issued yet
{
"application_id": "app_klpChAfdbfFluAuHykz0NW",
"reasons": [
Show the remaining 149 lines
"the controller is not attested by a trusted attester",
"held for an operator's decision"
],
"saved_to": "/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/analyst.pending.json",
"status": "pending"
}
# the operator queue
{
"applications": [
{
"agent_name": "Market Analyst Agent",
"application_id": "app_klpChAfdbfFluAuHykz0NW",
"controller_did": "did:phanes:org:northwind",
"controller_legal_name": "Northwind Analytics Ltd",
"decided_at": null,
"decided_by": null,
"holder_key_fingerprint": "d20ed5710d1bec945535609039872aec92cd632e4d3faa332f3def9e34f17f1c",
"jurisdiction": "GBR",
"model": "Anthropic/claude-sonnet-5",
"reasons": [
"the controller is not attested by a trusted attester",
"held for an operator's decision"
],
"received_at": 1789452369269,
"status": "pending"
}
]
}
# approved, issued exactly as applied for
{
"application_id": "app_klpChAfdbfFluAuHykz0NW",
"id_number": "LKJ1RG21I",
"status": "issued"
}
# the applicant asks for its own application
{
"ID": {
"claims": {
"cnf": {
"jwk": {
"crv": "Ed25519",
"kid": "pKh2CncG-SDFt0JXuzUxBHDRvmATjmU0e9g6TkEcbKQ",
"kty": "OKP",
"use": "sig",
"x": "4rYYWD36hZ08auPsOfjW2AGDZLhx3Oy0LMPbKeYv2Is"
}
},
# every decision on the record
{
"decisions": [
{
"action": "issue",
"agent_name": "Market Analyst Agent",
"application_id": "app_klpChAfdbfFluAuHykz0NW",
"at": 1789452370363,
"controller_did": "did:phanes:org:northwind",
"controller_legal_name": "Northwind Analytics Ltd",
"decided_by": "operator",
"holder_key_fingerprint": "d20ed5710d1bec945535609039872aec92cd632e4d3faa332f3def9e34f17f1c",
"id_number": "LKJ1RG21I",
"jurisdiction": "GBR",
"model": "Anthropic/claude-sonnet-5",
"policy_mode": "review",
"reasons": [
"approved by the operator: controller registration checked"
]
},
{
"action": "queue",
"agent_name": "Market Analyst Agent",
"application_id": "app_klpChAfdbfFluAuHykz0NW",
"at": 1789452369269,
"controller_did": "did:phanes:org:northwind",
"controller_legal_name": "Northwind Analytics Ltd",
"decided_by": "policy",
"holder_key_fingerprint": "d20ed5710d1bec945535609039872aec92cd632e4d3faa332f3def9e34f17f1c",
"id_number": null,
"jurisdiction": "GBR",
"model": "Anthropic/claude-sonnet-5",
"policy_mode": "review",
"reasons": [
"the controller is not attested by a trusted attester",
"held for an operator's decision"
]
},
{
"action": "issue",
"agent_name": "Filing Extraction Agent",
"application_id": null,
"at": 1789452348183,
"controller_did": "did:phanes:org:phanes-labs",
"controller_legal_name": "Phanes Labs",
"decided_by": "policy",
"holder_key_fingerprint": "778ece1685fbbc5a30b0acb5a2bfbf0a38397435d3f67b1cdc4ee9fce9a315ec",
"id_number": "SWUKBOSJK",
"jurisdiction": "USA",
"model": "Anthropic/claude-fable-5-1",
"policy_mode": "open",
"reasons": [
"open admission",
"controller self-declared",
"the controller is not attested by a trusted attester"
]
},
{
"action": "issue",
"agent_name": "PR-1 Warehouse Unit 42",
"application_id": null,
"at": 1789452345884,
"controller_did": "did:phanes:org:phanes-robotics",
"controller_legal_name": "Phanes Robotics GmbH",
"decided_by": "policy",
"holder_key_fingerprint": "24d3fa3d5be129cedd15ddbb13325b032a1e05ecc00d934859d60ab3540c3ebe",
"id_number": "4CAP5XYBO",
"jurisdiction": "DEU",
"model": "Anthropic/claude-sonnet-5",
"policy_mode": "open",
"reasons": [
"open admission",
"controller self-declared",
"the controller is not attested by a trusted attester"
]
},
{
"action": "issue",
"agent_name": "Ledger Reconciliation Agent",
"application_id": null,
"at": 1789452331906,
"controller_did": "did:phanes:org:phanes-labs",
"controller_legal_name": "Phanes Labs",
"decided_by": "policy",
"holder_key_fingerprint": "b2570f57ef60b40500d68297731e4796bee8c707e6e96d51540b162a0157e0f7",
"id_number": "A7BFQTESV",
"jurisdiction": "USA",
"model": "Anthropic/claude-fable-5-1",
"policy_mode": "open",
"reasons": [
"open admission",
"controller self-declared",
"the controller is not attested by a trusted attester"
]
}
],
"total": 5
}
58

venue-register

exit 00.666 s2026-09-15 06:06:12 UTC
$ bash -c 'set -e echo '"'"'# the venue has its own key: registered by the operator, it signs visas, carts and refunds'"'"' /usr/local/bin/python3 -m aeos.cli keygen --out /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/venue.key /usr/local/bin/python3 - <<'"'"'PY'"'"' import json, os, sys sys.path.insert(0, "/Users/tofael/phanes") from aeos.canonical import ed25519_public_bytes from aeos.client import PhanesClient from aeos.cli import load_keys venue_key = load_keys("/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/venue.key").signing op = PhanesClient("http://127.0.0.1:42643", api_key=os.environ["PHANES_API_KEY"]) print("register venue ->", json.dumps(op.register_venue("did:phanes:venue:clearing-exchange", ed25519_public_bytes(venue_key.public_key())))) PY'
# the venue has its own key: registered by the operator, it signs visas, carts and refunds
{
"fingerprint": "c1268caa3e4646388717d5db9075edc7f574951e641ebd5d064c0bb45f17e226",
"path": "/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/venue.key",
"sealed": false,
"signing_public": "hMPQBBAvO4Y46DjcGQNWwpBS0XonJs3TVNXwhx3k4Iw"
}
register venue -> {"registered": "did:phanes:venue:clearing-exchange"}
59

cli-pay-intent

exit 00.616 s2026-09-15 06:06:12 UTC
$ bash -c 'set -e echo '"'"'# the holder signs what the agent may buy: which merchants, the per-transaction ceiling, the lifetime ceiling, the expiry'"'"' /usr/local/bin/python3 -m aeos.cli pay-intent --server http://127.0.0.1:42643 --key /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/agent.key A7BFQTESV --max-amount-minor 40000 --total-minor 90000 --hours 168 --merchant did:phanes:venue:clearing-exchange --description "office supplies" | tee /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/intent.json /usr/local/bin/python3 -c "import json; d=json.load(open('"'"'/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/intent.json'"'"')); open('"'"'/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/intent.txt'"'"','"'"'w'"'"').write(d['"'"'intent_id'"'"']); print(); print('"'"'intent'"'"', d['"'"'intent_id'"'"'], '"'"'ceiling'"'"', d['"'"'max_amount_minor'"'"'], '"'"'merchants'"'"', d['"'"'merchants'"'"'])" '
# the holder signs what the agent may buy: which merchants, the per-transaction ceiling, the lifetime ceiling, the expiry
{
"body": {
"created_at": 1789452373200,
"currency": "USD",
"description": "office supplies",
"expires_at": 1790057173200,
"human_present": false,
"id_number": "A7BFQTESV",
"kind": "intent_mandate",
"max_amount_minor": 40000,
"merchants": [
"did:phanes:venue:clearing-exchange"
],
"nonce": "op2Ee4LHh8MaP5Zt",
"total_minor": 90000
},
"currency": "USD",
"description": "office supplies",
"expires_at": 1790057173200,
"human_present": false,
"id_number": "A7BFQTESV",
"intent_id": "im_NQSeAsxnQjRRt9qAf7GbT4",
"max_amount_minor": 40000,
Show the remaining 12 lines
"merchants": [
"did:phanes:venue:clearing-exchange"
],
"payments": 0,
"registered_at": 1789452373206,
"signature": "eIOqLzMDlHwgeJuiJZ4-qIEUPZrGe2EaoT87xtTbclS2xTs_2C1n_pY9s43dfG_d1f_SIyF28HAql6Qjg0ypDQ",
"spent_minor": 0,
"state": "active",
"total_minor": 90000
}
intent im_NQSeAsxnQjRRt9qAf7GbT4 ceiling 40000 merchants ['did:phanes:venue:clearing-exchange']
60

cli-pay-cart

exit 00.616 s2026-09-15 06:06:13 UTC
$ bash -c 'set -e echo '"'"'# the merchant signs the cart with its own key: items, total, currency, expiry, bound to this ID'"'"' printf '"'"'[{"sku":"PAPER-A4","description":"A4 paper, 5 reams","quantity":2,"unit_minor":1250},{"sku":"TONER-11","description":"toner","quantity":1,"unit_minor":9500}]'"'"' > /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/cart.json /usr/local/bin/python3 -m aeos.cli pay-cart --server http://127.0.0.1:42643 did:phanes:venue:clearing-exchange --merchant-key /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/venue.key --items @/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/cart.json --checkout-id co_walkthrough_1001 --for-number A7BFQTESV | tee /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/cart.out.json /usr/local/bin/python3 -c "import json; d=json.load(open('"'"'/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/cart.out.json'"'"')); open('"'"'/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/cart.txt'"'"','"'"'w'"'"').write(d['"'"'cart_id'"'"']); print(); print('"'"'cart'"'"', d['"'"'cart_id'"'"'], '"'"'total'"'"', d['"'"'total_minor'"'"'], d['"'"'currency'"'"'])" '
# the merchant signs the cart with its own key: items, total, currency, expiry, bound to this ID
{
"body": {
"checkout_id": "co_walkthrough_1001",
"created_at": 1789452373811,
"currency": "USD",
"expires_at": 1789455973811,
"id_number": "A7BFQTESV",
"items": [
{
"description": "A4 paper, 5 reams",
"quantity": 2,
"sku": "PAPER-A4",
"unit_minor": 1250
},
{
"description": "toner",
"quantity": 1,
"sku": "TONER-11",
"unit_minor": 9500
}
],
"kind": "cart_mandate",
"merchant_did": "did:phanes:venue:clearing-exchange",
Show the remaining 20 lines
"nonce": "oNHyU0Wtv_VBuTxu",
"total_minor": 12000
},
"cart_hash": "o3sSv9eVWizXn77q0MJeLACf36ONcJsR_7qv92QT5q8",
"cart_id": "cart_o3sSv9eVWizXn77q0MJeLA",
"checkout_id": "co_walkthrough_1001",
"currency": "USD",
"expires_at": 1789455973811,
"for_id_number": "A7BFQTESV",
"items": 2,
"merchant_did": "did:phanes:venue:clearing-exchange",
"merchant_kind": "venue",
"receipt_id": null,
"registered_at": 1789452373816,
"signature": "szKhykuiB8-HPG-1LwTWayrZUp8XLdC-70HmwyEZfVm-l3waTJejZyfNvAsQNvHe6YNMzVHY6Yq2m0_wS_fPBg",
"state": "open",
"total_minor": 12000
}
cart cart_o3sSv9eVWizXn77q0MJeLA total 12000 USD
61

cli-pay-token

exit 00.616 s2026-09-15 06:06:13 UTC
$ bash -c 'set -e echo '"'"'# the registry issues a payment token scoped to one merchant, one ceiling, one currency, one use, one hour (phanes-payment-token+jwt, sealed)'"'"' /usr/local/bin/python3 -m aeos.cli pay-token --server http://127.0.0.1:42643 --key /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/agent.key A7BFQTESV --intent "$(cat /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/intent.txt)" --merchant-did did:phanes:venue:clearing-exchange --max-amount-minor 15000 --uses 1 --hours 1 | tee /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/token.out.json | head -30 /usr/local/bin/python3 -c "import json; d=json.load(open('"'"'/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/token.out.json'"'"')); open('"'"'/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/token.txt'"'"','"'"'w'"'"').write(d['"'"'token_id'"'"']); print(); print('"'"'token'"'"', d['"'"'token_id'"'"'], json.dumps(d['"'"'allowance'"'"']))" '
# the registry issues a payment token scoped to one merchant, one ceiling, one currency, one use, one hour (phanes-payment-token+jwt, sealed)
{
"allowance": {
"currency": "USD",
"intent_mandate_id": "im_NQSeAsxnQjRRt9qAf7GbT4",
"max_amount_minor": 15000,
"merchant_did": "did:phanes:venue:clearing-exchange",
"reason": "one_time",
"uses_allowed": 1
},
"expires_at": 1789455974397,
"id_number": "A7BFQTESV",
"instrument_ref": null,
"issued_at": 1789452374403,
"jws": "eyJhbGciOiJFZERTQSIsImtpZCI6IkppR2hlTTNzZWpBWXB0UlMxZHBrVU5reDZmQlJKbzJwaHcxbHlLMjVqcVEiLCJ0eXAiOiJwaGFuZXMtcGF5bWVudC10b2tlbitqd3QifQ.eyJhbGxvd2FuY2UiOnsiY3VycmVuY3kiOiJVU0QiLCJpbnRlbnRfbWFuZGF0ZV9pZCI6ImltX05RU2VBc3huUWpSUnQ5cUFmN0diVDQiLCJtYXhfYW1vdW50X21pbm9yIjoxNTAwMCwibWVyY2hhbnRfZGlkIjoiZGlkOnBoYW5lczp2ZW51ZTpjbGVhcmluZy1leGNoYW5nZSIsInJlYXNvbiI6Im9uZV90aW1lIiwidXNlc19hbGxvd2VkIjoxfSwiY25mIjp7ImtmcCI6ImIyNTcwZjU3ZWY2MGI0MDUwMGQ2ODI5NzczMWU0Nzk2YmVlOGM3MDdlNmU5NmQ1MTU0MGIxNjJhMDE1N2UwZjcifSwiZXhwIjoxNzg5NDU1OTc0Mzk3LCJpYXQiOjE3ODk0NTIzNzQ0MDMsImlzcyI6ImRpZDpwaGFuZXM6YXV0aG9yaXR5OkppR2hlTTNzZWpBWXB0UlMxZHBrVU5reDZmQlJKbzJwaHcxbHlLMjVqcVEiLCJqdGkiOiJ2dF9Xdmw0N3lWT1B3eGxOb2dOUXVMQTRCIiwicmFpbCI6InNlcnZpY2VfY3JlZGl0cyIsInN1YiI6IkE3QkZRVEVTViJ9.xBOJ0uv1ShcqC7gPnCk9bqsxjbg86o_1-y9OVZAuX0XqeuahPyevI5K0e_FQBtPS1qkeqUWktvk3ZvS1UdotCw",
"merchant_kind": "venue",
"pq_seal": "wu211qrrgWlXINXPIGVEYGAc5I10Y_1VkNUpCAgXnkZ8Wyr0xa1PGnLEXtcjY-69Y6KZHWPoysLkTtJvKNGwE_wjhsnQd-9OJAAJqJNWfQ42CDL43sRC9aBUWmvqCqYa4VIaxkuINettIkTYxb4wf2N7HxmQX33EBwj2zQn_n3vjLk05k46cnr4QqfLcAifOw6jsC81bzJt9K4f0UMDhswkQFvqC3dPHhSmEB0EzODaU_UWhS-c-9YXF-rgLNQMTpOpXa0LKTNSRqpUlaf3I0JKrsJhwbdcng5jXR065Q17is8LoxyYAao0FfGn7KWAfWUU0W0kIvRzxbBlJ-2u-DcIvZVnZ4VXs4B1UwYSLV3-yvl2kXm01J5cTsLRd-Lqj822z-U1BjB0T_EOx_u3a8fEvgBz3FxT-SZDD8wZTQ87kYIg5Fru0b2dXAnQFd-RNIwin2upQj7wHgTohRGHbNzqket5XSCMC1-NsFx9oOb8NVUX85aYr-eNtCd7hSNEPbUWeMJf9MY7tJoI93znSn_Zdpa1jDUE63CIZPRTXIJfFAdvloZ6Us_XE48QcisDYtZ7YbEDkA0EGPsgB6uQF5SxGKXvF817leu_JsiipvfZEWcl8xCML3TIfCTWwrmlbXqYuCDH1P9ICYXHYltYlzFMye28-ZSi2YM-KgqeqyczhNG5I9aHeePKdmeHvR4sdE4MSP2lfLmVDHAY2zBrgZj_NVJlYzzIKQ1KCEhd5WXyM40WtNHQgf3R2bkGIUadQJu_AOb6qgsaHj-HhoFrw0CAZg9w8813i1VDO8ap7UOUoGunZ7OMmux0LlekIQOTTO50ed-T6d3XmZo7I8gxb1QJXQR9eseN4uS4e1x0VTpH8ojQl5SosVZmK1FIpBZrhejd6f-CIJH6qQyROZdAQA4bl7w-GwUvqlCQZOQMeGCGicIGZKn7O3cPnE1wG6tiz44PipRf6Gi0pVpcNcumkxiRKX8cbMt4YkOB6QAE-c3GuiLAznOUH9iQ2_9Xsb4VFHrGICT0Z_Q8SPKPfBLKo3nDE5C9oRNHezkKm-ceHhNM8fzgb9FJig04ZzFsBl1rC9gZXHP641zYVFnkIF6eYyk_2HJ87VieN7CnQflz6Z-eprHQHAti02H39pltuuwFDxEqtRo4XHVDhmvS2_ecR3Ign0ayeklHTA2NUCftFoeiDxhkZx36pZW9shLn5cPUnvCefGIFP20OXRIYCuhM4GAyWRswADGsaU6ld6hsDArOC6aMftBSyP1ZbTTYpsL3Vql7CV_42DYyH0l_OzHNZHC6NaPXtiYshfH1WlpBMn5javeXbooNnO4SUT5pcm8i6BrBklVkU0o6WT-BFq0TLYfx0nDglJ4cS6cHtKRUOhGu_lwdGTWso_70rNSv72n1p2DCiGWxjprBMs5hwXjCKQUb1y_17y-FOYlj6lv6p7P6zzIRHSsGXupNJ8MkwX1JbR5WO3giJbQeQtb_PxpuZtHg7lWueZ6ymLoye0MbLRQmoZg7nmsIBwygWHnSdDskztpZADIt9MpG6YebPKQjuIpKc0O7W0nm5_0RfnQg_g6Hia-v3T7nmnihpFirZSRIjlJFE0w3bu8nSXRhbSQvBslkuglFiotqPtdsQBgefodDvm50jHtr4ZzzikgTz4fQUTNsboyHzXurDsQMFoQCl4QYkR5Zt2YoUpizTVz0WjkhiIVGL9n_kkzQc7HlmcpOAgsqdUHiMNczuIEEDo-do2OBy7edxVFeBT9OqhEY5rZw6JnPXr_3iXUhdAn5pNzCicjRMCQLOxF6XpRdrqin14zJ5bxAO5EhxpsBWE3CvJzbtEeKtiA77w3Yba3BSG_sYnZNHqxd84MHVHHA2kpZbdEJitLIjAw6cfjwoN0MQgX1101pHoJhl5rMa8qix17PpAbYETeR36isAYljNSOsVJwvaeBYC1rSZDxTYDum8PINOPR-UZzqMJqRvxXPf7FD0NEpOU1_Obt7FfxF1vgagFkYRZGfs3wRrIY01O9VK4eJWUilNZIG7dSpN3VQrpeJQQWX2x4YizL125xTe64OTLaLQbDmUmCAj532aCj1wWvqslhX58mImsSRLzM8SI3kN4cCQe0BV5zAtH53hClt0OjBp-b55YniFZdL4iWoKxdF6a-XbYVROQM2Qa3daf7kcU0wWW-XZkgdhUQTp-R287P_siwHeqZGrLTkJIcrksRzKJtkuTcjsSoQjsS6wl1kjXM0XwXWSnMFKzJTIYhRQvvzRsGzzVl122NFx3c26PRFvIkp9jJi9U9bSS6Ivnm_luVa-O44XeT7dt30Kku87FWwP59mwYdVPbKQQdyh_8Yfm4PPgJM9wRvbVEUuynd4gW2z4Pogl8uAvYZEVpA05fY1zort8A63MDicf0OcjwTQfWOy8AMF7ZTeUswUYROI1PVLTSSg4EYN6tBZDAiffXNUJvZEhbHQu_z2rdib4uJ-4JOprQ9seAW8CY_0WC2M7MU5dSTKTIkInmxvE6Gjd63BgLZZ-FBjSofHu-YdGAL0mW1kka3TFBMU3KNWsf8zL883b_yOpxqpRS4ui3XReagZ5J0k8BRdKbD1Df2O1rOxQpV4_BUm2WiXjHL59pXMN8o9rlF6ohxNir9opUE49EbdWKcuvG6o7N7V1K55NuD6WiXHxb1SCoq-CN2nBNrq89VXFZyoQukpzId3MUdAeZNPck4aj2PaDFX-KuPt8TS71v0TkOO51KKbuBHcBwn2IOMVnIaLE7uqtMwpJEq41hl6ShzaR71RRll8G5C_nGloqbuvP3S28RPYqPUbSd1llRHHdw7LoQtCs0MEXs8G4ZlIF7EFOJGrwUZ0XGUEBNCUjPqDYTgkUVg3BbuA10J7pqs0AwURJfiFcZ_wfMgaEc6ZJpghPHQim6sQTRd_WIL9khXPV-kSpANANJWfWDysPI0ml4hfVfPW6CU_IiQhYOHIeVGnu9iVxg1I02jqAXdHIBQ71gXJ5eMZGke5GYAMug1s5fP1EPw7jOIH95Wj0IVARhM6fTD_ICCk7tF4qjOIEKBJGeV1w2AT9ibfEsonpVw4MpkvkvgvyCHR9avv-kyYo2LY6H44mycDRcxYuv5pueHiUj4zpg-G7DvyAtQmXww_aUFsVdkGd1fIU1v3vLBma3Jt-YMwRDBjgXzOYZEvFycfYnr_E95nJdbHkgLUrp12ED6XuyfasMnB74rp5AckRJ6mzjm9iWsviLVnloeU2YxrTmfkCSZM3VjcbczuFCr5sKz5SqhYE8y4ULXOjYqw5tVIoEtx-5aNOQ_iNRVpLtP8gRqdsdrwA-swS3aEWJlARtmZaPXn0jZ9czEhQgnUaJBJnut4heMqbzcEJPOGd3SH7Ps-lit_rMTvJ0CrAy2evuL-MksekN_MOHIIDmiqdCFD-SKLCz_NQ4z2Xwgj5rFDLe0ny7GLakz19GFXz6dKIMO8UW4HBMlWO_mLva_-m8soccScaKhF9e-D5Q7a1EkQa2pOMC1l2T_cxgczgIXFc7kUPsGqYcOjvjBy4paLZLtpiKfnS2dB6bkJEMT2PGVEUJEdiuX59wcm5rl6GhPG9ylwdfHgiDvHcYNcDtSQkEvz1xYhtt9Hm76beAMOhtLEcb44Y1T33JIty3W1dLqX0swbWpslrv081b05X6NbW9DpzS2ozkIBa5NuJcf2v49LuDVPbL2l8PRX0PV3a_Lbn9EtgEwFwkA9UYljI7wEkjrlEGiZGGoCudBLL8yrbJU-unIBs4sfw4uBDcb_6sv27ec_jaBsLvRVFn9T-CR9N6zZ31Q6pMEl0xeGzd9moxrsiGL789aVxDFIfSD_LOGT6vm7_WQXpjuwHQrIzz4bWdR5DjmdW6FsAEh2aGsCIJ2dltuzgZk4RM8_t1QewXmehU89tElp2DFf61aqe2CkYFnq34-OxFIHNNyy4utqVC_ZKMzinj7_CdRnTjEUK_MT5roaJ6sh9SI0s8oJFeNjrxvET-dkcb_0cgCH8-IZDm4tYUxRdR94bSHdcSfSgm6R05XDDoxb75bPOeLPkCf193jrXTZiSzy1-DJPmfOSnI5AD_xHx1TnqNh1s1svRybwrmndoTj11mGcHCJTjW3V_rxlzcCcrsARyyfKNja2LBtH4Cr-syZcqZINOuXOfikl5GENQyuo3nskKf0Fm25M61IXPHFHnH1oJc9pobCl9eYBs_rREsjzOcMkYVtD_fZvl7A-Uea5RFFJX4xJursYyQFF2ZwrWIPsMmqavq7zkk2CNxOezPod5tQuJqXlN4HPHz7ySV2j68g9aJ0fOfglJ7lI2yBBtibj1zXS4cRGp69JJI7UziM1ci3T-yeMMZJ1wa6veXWki7ew0XOf41k_A-Jh6uGNu-6T2w4aGgSdZu8AB0ey1YYuqLxq_kx0kMFq4ER8mbgBH_5KaKNEtYu7TXdZ9ls62GuBc5ctmwv-LuZstrnoib8z1orOJAeioacWojeWOfPvbYJF9bEA6o4wtZL5eZ029Ca9FTKZoFK94puicY66rlHtCvUqPFfHRl49Bgmeyw0DfC_M2DabelWqLLUC0rjLtZfbhlEDhhtkOw69MU4dOZTxUzL9WRXpnHsyoeggEZxcro-296zmqa5RHjq1h2YISTfHkEsfN08d-nAIz6nbxo6LQJgTLgTzuqxhejikA5zvuLWhWNEXKfLpZZ6GgHbYuaHEDt8p50q7JqlCX9vfmNbtyEGS_19wcqH805QPCYVIm3LbOMqELuzBuhQPZiUCGHNpuNV_p5LkqQLO3XGhCMj-dTugWZ0AbwrKbr_J22CQpLzRE9cLuVhG9OFt4j4ncUOkWaZESyzcT8FVMxpNXEVhyzT3Mcg6Le38LhPLZi88WNGDz9clAMEpAvD01EcklmzGOtqB4bY3K7YwBAKl9iQNParW2tNc5POREFEsmNHLTaF8IG6lVoVHkLSx1fwtIsqinKnW-ow2kmIn49Y5PTNikfZWMA6RNsCusHwx3nrL7IlATybZ_Y4cVla7BHZxqTYxMoG8ljkT3wOndApdAxmmRkXuuZ1v-2hODpErc-i7Xulu6fuBNU692CliAKE1V4yUajjCdTWcQYpsEpMASzjdf7ngeFxmRVkE-uZwUCupYaWhuVoTwLESMFT9LyrGAwpfTEqYk1_-62B40z5LzX3fVEql3QGXTTL1Dz_qxSKhwZ0SmusdsGBZC-ZWttUkE0d7rLI5uuiRpZYrTgGSwlzrCqnjEA0WzYS8nIALpcL5Bo21ELilD1yIp2HNzZjMqHYWxVIC5N7Nzriqq1uZUrdJexE-Zw9-xfNbZyo9o7j-FLL9buwIzqEXEx7nm3C7hbaTRs7x8_l_i3RD71ukNphj31LDFh5Dig9wIM6kZM01H65eYYow9enSVoUMXGCpR4H36jo_zKU5ZPZQDc20jlU-Hg9vNTyQse3W7uV196cZh2JfoCbR9qcxeXJBnui_4lXUHplly3sGrLV5oH8eN8DSEc6n9k0VYGOSZasWdEMeBx4dbRWSk9ysyUvtRq8PzrTwUBPtnkjwRAtcXL_7spffQ4W0k_bHQ9awM8Kmg-6xb6E4eVpP2PngVuTNXjneylFQ4orOiqTz2NXREJ5MpdhN2OAuFSiyBOr78HJsR59uZjfZnhLGKAgG5o0P9cOF6HMUI9fFPu0M0IDYoZnAXBhzpXFst5O0Z5PAkHy9vWnnx-pg_LiCyTDA1dyIWZOaxbfl-0ZRZAGOBT1LHw_K5918JlGYnyZNQpAM7SBBHL5cxwHUgsdACADqErr0scv5ZfYJJ2q3NGbJ6Va6-Yh9aJKAOCTr3d1162V__BVgEORCmwdwrfDZONOgA2JgFvyF5ggGnMnANE6XH1SdMe3kYM7ZztlQM0CMKw6iDFnalmj8lcqgFyWMzoXRk_JIA419y__psJU9nNl_U8fChcLN_-g4BQ_Zrh8oyaG2sfGBpHrToMyI0wMFSZmcq5ls3VUs-CDPqH_C3bgII2qFGYEpSLjlRIsThtXiHsqXpnOjpGCkfOe8ImsREzjeZBy32eDLQmWHqylAn9msoOEhTjpu7yeoAByg0R1TA3BZqgoOksfkEEi83YYHJ3_L9LC9Zq7PbTlV6mJmasrO57zk9W2ODjMHyGCkxPECFztoAAAAAAAAAAAAJERgiKDI6Qg",
"rail": "service_credits",
"revoked_at": null,
"revoked_by": null,
"spent_minor": 0,
"state": "active",
"token_id": "vt_Wvl47yVOPwxlNogNQuLA4B",
"uses": 0
Show the remaining 3 lines
}
token vt_Wvl47yVOPwxlNogNQuLA4B {"currency": "USD", "intent_mandate_id": "im_NQSeAsxnQjRRt9qAf7GbT4", "max_amount_minor": 15000, "merchant_did": "did:phanes:venue:clearing-exchange", "reason": "one_time", "uses_allowed": 1}
62

cli-pay

exit 01.168 s2026-09-15 06:06:14 UTC
$ bash -c 'set -e echo '"'"'# the payment mandate: token, cart, merchant, amount, nonce, signed by the holder key; checked against standing, bounds, daily volume, the breaker, the risk engine'"'"' /usr/local/bin/python3 -m aeos.cli pay --server http://127.0.0.1:42643 --key /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/agent.key A7BFQTESV --token "$(cat /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/token.txt)" --cart "$(cat /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/cart.txt)" --merchant-did did:phanes:venue:clearing-exchange --amount-minor 12000 | tee /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/receipt.out.json | head -40 /usr/local/bin/python3 -c "import json; d=json.load(open('"'"'/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/receipt.out.json'"'"')); open('"'"'/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/receipt.jws'"'"','"'"'w'"'"').write(d['"'"'jws'"'"']); open('"'"'/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/receipt.txt'"'"','"'"'w'"'"').write(d['"'"'receipt_id'"'"']); print(); print('"'"'receipt'"'"', d['"'"'receipt_id'"'"'], d['"'"'amount_minor'"'"'], d['"'"'currency'"'"'], d['"'"'settlement'"'"']['"'"'rail'"'"'], d['"'"'settlement'"'"']['"'"'state'"'"'])" echo; echo '"'"'# the same one-time token again: refused, and the refusal is on the record'"'"' set +e /usr/local/bin/python3 -m aeos.cli pay --server http://127.0.0.1:42643 --key /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/agent.key A7BFQTESV --token "$(cat /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/token.txt)" --cart "$(cat /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/cart.txt)" --merchant-did did:phanes:venue:clearing-exchange --amount-minor 12000; echo "exit=$? (refused, expected)" '
# the payment mandate: token, cart, merchant, amount, nonce, signed by the holder key; checked against standing, bounds, daily volume, the breaker, the risk engine
{
"amount_minor": 12000,
"cart_hash": "o3sSv9eVWizXn77q0MJeLACf36ONcJsR_7qv92QT5q8",
"cart_id": "cart_o3sSv9eVWizXn77q0MJeLA",
"currency": "USD",
"human_present": false,
"id_number": "A7BFQTESV",
"intent_mandate_id": "im_NQSeAsxnQjRRt9qAf7GbT4",
"issued_at": 1789452375032,
"jws": "eyJhbGciOiJFZERTQSIsImtpZCI6IkppR2hlTTNzZWpBWXB0UlMxZHBrVU5reDZmQlJKbzJwaHcxbHlLMjVqcVEiLCJ0eXAiOiJwaGFuZXMtcGF5bWVudC1yZWNlaXB0K2p3dCJ9.eyJhbW91bnRfbWlub3IiOjEyMDAwLCJjYXJ0X2hhc2giOiJvM3NTdjllVldpelhuNzdxME1KZUxBQ2YzNk9OY0pzUl83cXY5MlFUNXE4IiwiY2FydF9pZCI6ImNhcnRfbzNzU3Y5ZVZXaXpYbjc3cTBNSmVMQSIsImN1cnJlbmN5IjoiVVNEIiwiaG9sZGVyX2tleV9maW5nZXJwcmludCI6ImIyNTcwZjU3ZWY2MGI0MDUwMGQ2ODI5NzczMWU0Nzk2YmVlOGM3MDdlNmU5NmQ1MTU0MGIxNjJhMDE1N2UwZjciLCJpYXQiOjE3ODk0NTIzNzUwMzIsImludGVudF9tYW5kYXRlX2lkIjoiaW1fTlFTZUFzeG5RalJSdDlxQWY3R2JUNCIsImlzcyI6ImRpZDpwaGFuZXM6YXV0aG9yaXR5OkppR2hlTTNzZWpBWXB0UlMxZHBrVU5reDZmQlJKbzJwaHcxbHlLMjVqcVEiLCJqdGkiOiJyY3B0X1F2TXlzeG9UR2cxd0VPLTZTeG94RTIiLCJraW5kIjoicGF5bWVudCIsIm1hbmRhdGVfaGFzaCI6IjBLc3dPZTlmMUp0MFBfQmFXXzg0UTVNVFVDV2U0WjFRa0xYMGEzbHVaWFkiLCJtZXJjaGFudF9kaWQiOiJkaWQ6cGhhbmVzOnZlbnVlOmNsZWFyaW5nLWV4Y2hhbmdlIiwicmFpbCI6InNlcnZpY2VfY3JlZGl0cyIsInJpc2siOm51bGwsInNldHRsZW1lbnQiOnsicGF5ZWVfZGlkIjoiZGlkOnBoYW5lczp2ZW51ZTpjbGVhcmluZy1leGNoYW5nZSIsInBheWVyX2RpZCI6ImRpZDphZW9zOjBmODk3ZWNlYmM1ZjNmYzhhYjM0YTJkM2EzOTA2NzVjIiwicmFpbCI6InNlcnZpY2VfY3JlZGl0cyIsInN0YXRlIjoic2V0dGxlZCJ9LCJzdWIiOiJBN0JGUVRFU1YiLCJ0b2tlbl9pZCI6InZ0X1d2bDQ3eVZPUHd4bE5vZ05RdUxBNEIifQ.FoxAL8qsMH-OxvxMPvWRU90BSLbPOBCZSAsILrOtr-sClXTQWMwOIV806TM8xoTuSANVB5K7Fy_WYqC5kC44BA",
"kind": "payment",
"ledger_entry": "6d77319567b38df5",
"mandate_hash": "0KswOe9f1Jt0P_BaW_84Q5MTUCWe4Z1QkLX0a3luZXY",
"merchant_did": "did:phanes:venue:clearing-exchange",
"merchant_kind": "venue",
"pq_seal": "3uA-OABX0Qq2FYrhxHwXgiuqr0UbhtmIQ5TuLCNV5kGrxpSAerhW_LnITbhWUN9hbjQjFuGpJfE0S2SF2ppdgtThGGG98COD7WW3Py6EraAphxSUuWpez4j-UE5s9p45U9T8M4wEvWHEcKkefsDdj6d2X_fzVmMM7YJYw_cEcNaF24_U0p_NUonloqUZqdDKDQZufwsPSW8vd5cCEIlVx5Y6wiUVl8lRgQljpxPUCOR4EFuhGP0bBSm1SvIpD3VfKYF5Y7CRvJggBmRNW_KqReWSSsLN5sn5MG_qlczxsrQZt4Xe04NJiHSJ4LL5RnIniMlFJIqal3fXHYQDzhXuaenLt3YklNdOl__s2lT4poj46ijpANIEQngGVlBbRaG2h8jwuV2rvFkgaL8D5O3XfPkFuxWmc0j4UXYhN5pNiwpPv6v2VEzvV-lSpxV7VptwXrrLVKnNKPO5dZrJfQU-yKFLk09k06WN9TdwPYyldPq1eJVCS8AO4a68yMfTuQuH7vR5mAWIn13tVUq6h19jfjEWVE10xaIFFDd6gCbO9E_mEs7M3Z4W9kC-ULqfhz95-1QJS4sbnPy0wt_eAb7KF-7DBcaZ8FbISwSrSZpR0da9fUqojH4WVVdFFt4WSwy4ylBtMdFny41D91nni1NjBdzI6VdfORSfCILGonF2yWgKYJ8JHu28D1JKZ_PE1jhoWI55piWJCqt5ThszJAOSincKxXt3oK96sun02D6Rh5t2f8aaRzHT1SiYdp8f-_DdtxwUKLEb8vnp53bVPOiMia8DfZG6_zKdt8Jv8ZJdc4X_bhgppxBJGOIWdCOW5O-F8AEqJtDXT8ZcGcjnZ-DiBBExDhR7OGuXkJQQbgkC8KtY4Jx7S-E99t-D1w_TBDzgOIbwTsheqgBqOLPNeH4KedP9ufMjoU33AuEj2ezl-q-Ub6A549i5pXGNrc5RzaJhF_xqi3qcfQ2DmwmNGAohwJ2G_2_5bNyBwmu1SmEO5lriuenRZGclH-hH2VUYjQHvuVaIqIw8M8FsEobd8fTAxQHfFqu2arduBFbYK_eV6NDYLbD_4GZYNJiwVVbcP63ydz0SA172qOk-h7A94RHq8Dyem1RUtFeUK1DpL4iiIHU6jSBgDGHmpbQnXzaF90VZSX6x1VmiGmebh-O6MvVaHatFrMXvfiBjyu_-ORn_JJs_vUE0PuPFsSVA_TVB543KGB_3iIXIpWtmSVE8LS2d3XsK0SKVmR65nHUpS96prqsfy1w77YtaOKlYP4E7egpSgtDb3MoMJVtAHo9V-RbJB_RFACzJfsLAT3alIhlKSMEa5_3T9fv7RwOrbttE8LX2lIkwpxWdi0fTkuzwFJ3jQH2e_mwg1MRxrmDwq9TCmmAj-uVcTAbdhTpkUUck7Rkws8joF_WIT5MU-sFlVJbNWIykT_uSDOwMwXuzpffw12pwnDWUfSkRN7NGbfrDfMOZi9XVGBo-1Y5JpDTMJyezgUeFpKoSonZTh8-NjqMlRuvbdnPnAYNuDv55gzgp5f4PtREJauI4bk1uyIDllcmT8xePSdRbxtFRCuC6-93MbjuyOEsYHufkAV3fcCPZo3WkjQmEwAy0-HI4QERXcxKu-c0d8CWU87p1IO1N6kKd-O_jamoPwl_XwQbht_Jijh4ePPVDAxWtpX7FhAyw5ujMpc1W6fudQOqYyYLBtmu1WvbasSFV3qthKWp4qGZ3SFVD3IoLbRemT3bOJ_Q4MA85XRBbBNrCpqPZ3QYHMqJ761md_m6eXvXOWmL0bPfX7gVctOxXZi--A3lK3F9ZntqPRVeJ4h-ve2TdJAmyIByt6WT87UNGP-iuyyHrWlerMXn1lFs3O5MkpA17gVQS2AYbZnUKMs9EHgRLsepr8Ep5gGF6_mQ5NT3KdeTSITiOqwsvnh3qrg816E6SyUBkUa8kzrc4IguZg3eXdz0GsGOYciItOzqUSh_3WvyN6Ygex-kWgqZ5AN2NtdX2PxgYeTO3U9SMxbTxqPMVZ4jptcLDhTNPiiaoMMkUIezBtB0ofAYqa8tDmUm6yp7IGehrKSfYRXjrdZ4qw4tskLpxfgEzx6h51UgS9u8zlNC80ufgzJiBGKd2gxGeQLhpTOZi7vhewzT-QFztPvqt9KhmgrZAHA46yjwY-quxqFvl8jD7WQPWCXY8GBmQ9P6IQIjOVUsqYOzgAb8P7N7v9MAcswC_46ZFATbU2kfyyLL37eY3IiXV88KBKLEHhaMZOhSpJ0jbOC1rxVriS7m4wIWVcCMSGBI5IrsRMJROa9Pkdy7X7xx1-Ii-vGpKodLl1f5DCrX8-3xjaf97KMBko1vjHL2ahlS50TCoRS14Z8l4eTA5VhXdqCFLQwEV0AfZ795h74wsoy56UAQybyFzLKlM2HITdDSN8P-EThVDouxDhoim3Oii39-P4hL1rJa1i1Lx5ZyjUl7nasVTwbuBQpJMzwFx92Zz8hqaKbV5Sc_PArvy6djUSukLBMhoAqH9d5t3UbO-_-jROA5SJhgjmYAg9Q1bMGnxrIuWcUP-hIoMCPW9UI4GtkgD5KeGlB7oCB2UWL_bJFRMYOTl4eJl2ksBWBHl_2xQP1I_BS6ZyULe3uJPZ5VnXIyu71DQ3r-S5UDs0xrv2GIRksRld9KveY4EVpr-adWkIUwfqo5mJNjvrxcY0PLPBctQykn-ivdv2DBsWvb31L5ffwc6hcucw_IATNHskE-QXIAb4VFMLNAnVvDB66M6544hLPQcrVPAs14TU9xiHpsVHYna3O-bBGz7HhOlEoYBRV_5159h7tfyZphtV9TeH3AOJIZDSMC6cibhtOb_gA2sJT6MLdzJ66gYaFh9-Vp7sqcalJ9Rl9GiGvNX0Zosvfuk49i5f6y76KheiLZVQj9U_w6bRmhf1ysUDqNMvDIoatr_BvO8ztx3nlEeVg2ofF_LnFjs8Z1I6iA6pDnMIpYTbmZ1HR72Fcg1gip5d04aoWnJz5EDH94GMtmQXe5CC0B5oExwXcnfMCTrNXJUQTjdgxPjFMrX975Wb1d6dOa06pebloLcfkn7QyAQJMWQyYf7G-doGUNAkqSTq7alTXQfD42HbTeDZ2_K01p7fZO4HHXxuq6DYv8m1zHP9doCVodhmC6h6klA2lGhMvprnt0aDfsMrAcWE3SZ0wnczvDtzDm0fKaiPhfEU1ELSojVueLwsixl5bROnhx3kSW6jL29SPGvUEtejhu6bp7_getFR4NjOtRX57CI3N1EKbLrwNocInG1Z_0V9HSfVVzU6FO1BubZqShwXW1B_5VQY4VkpJeQdLJZtOUapZk7W9MAqt4iZytz5SuJTEjAIGtlezfi863kW6jpiK8jOr5DudTUEiwJE2iSkXhUDUlcbFdNOoKGX6du67FVQY_BT_iP5oOqdBjL9NrukdlANeQe-wq-UjSP9izNTzn3ddFMeTzHpiaR6D6MjF-m2kicZgHaUM8oMQdHaUk9tmBzcjKy5PHfJQj8dPAALT6p_U-nfqFrfm2e2zSRyaGyPEnodnqz1VSWvXD44KCxzuP9irJOkX8txBR4OQOi1UiKW3koUk_cb4J2ygvXsePTMkK4f2O-f3iftWCzvjQeN76j8GKzDweLRHRwtt71Wt7Pqlisrcr36C3WJyGCfiTltZcDQ63IlHwsMRBsR4YBEFYzY0mgZOpCQY4aq9_bLusJP77FwBmIA1z3Vq5_gLK038-c5WaNd3bg5F2jUAbFRpxWJBDZDOBpaQYob15Wg5V8R8rPSzs0D3Ip9hFAkILAZ7CYTnPOFZzH6nXJr7jLRSvtrOSKEUeaNBLKFyKvVLE-96idlPyYNFQwRppr9t1YdybYwtqctHEUN8f-5tEMBi3Q-8ZSWQEp-JJxJ_rKzYvk6a0DEaSr_ec5-Qw2xkyPYpd1xiI0xj5dhKWP08HbcnPZL3eotCf_xz6arp-NrVe-rdYRd2sZ3785EfwHQQRHPT_Az0UQVrTqWGXODw-1lERLA0U01t5TFoHn57AU98E6rBI5urawuwo7xeMLfpO4hdAs4JnfBKApTp9CL-RfP2dxTSjt4_p7WeppXyGDupSf51H6JKAdpxuwzIQ4gu5eQcE3daHfPfa1uGtRsXk6kMjEt3DbabxOIot55qWvp3TBfJMv1hWEZn7sO8UvgAPAFFZ0uAqerrcewGJcaybHPSv6pHZRxW4mR8Y8qgV0REl3Im2jz9yUFu9iGfz2_BakT8_4ng6UjKxarJSAtADrmS_lawUbS_XPMxN0zNRevuxNYZoRQ3JN2NDgbd1QNvyQxKcDSrB-tvgeO1XZxXioJXKj6aKKzMCp3QyLGSNW5Ihp7fAz_jH6XUj29g2tJ7kN_8dF2OnOHRSvPWljL8bBGvuvtsWsMAla77LCG5GBFAgHiboOFYUvs9gwMdT_YGnXIv7u9ThgiIdtvlZhmih2i6Iq6jXkk3Eny4yq0BIjhWb-MyspmlznTWVpJwQj3Vm72n6a8xl9uLRgmJsHJeAYDqzsoU2HhnFJ5IWHnugCOt6tNyCJYntA2VCM37zD7VqLiMUt42b4Qs3_6LquUnuyPVS6lAt_WwOTUVv0e6WB2UODrsutJTmm9-Upb9W09et-Cfso1XUPNxG2TEeugaQsoDTHv-poMwW--khF4-YcmUnQjxAct_w8ezZKF-XdG6vq7bKlwv3HL53N9Q-FIPS4x0QHv4c4gRFQuVQ6qe7_zPyREcrrlmqMEvuPfnKeL91csqkg--_ol2imZDyeZI25ALT5pmGuWEyGpm0WGCLq8D6I-DxqHxyWxWjobIDYp_QNUSOv-0ScBTfnfQACnGOhWxZeHgjCNdIC2E-7WKP-x5_3IMEXpVyPW-UxxU58VstuHueBeaRPoDa5WnLfyEmkl-McQQs1aey5Dqv1YjqF307fFNTBYQA9jjOexyQOivfskaQCOVg0LERFBNuzF1Ct7JNt9cQQ9yQam4aQLntAJ0-buNoDgboJUp0uIeKDxi6Hb7FcuVynK0w8unMsWdKqocyL7gHttov2XxUCWWgomhGAMDSWOgs4bViP71yZ8FfJGUAbFiNXdOYLDB3E6XgDsLCb5PQWMC1-mSUCFixD7I31m0auSYrwNb5yXJqclxUF8op1OuyRAsPVapC99ElNIUWdgC9E9w5nWhz1djMsWuA3kKV1wkVrMUuYBFOkcGGCq-7AzVaXhKQsyhf9c79Om4vQrBxl4GIFbfG-6n7AUt6uu2tszcudB6HgpYSrdSWb2QFLdLBHKGno3YZyrV9G06FjrGmbKYsD7KAKWMYB0aa-7-mBhqGdj0DIOR0YOVCPU95MjfunvacA6X-6GvCBvNuPN9P9nCqZN1IM9CfRzWV5BVN1cbA2eFbOyVwLbf6amckHvE3HzslM_61mh9sVYUI-AUY9hV7mq4M5G6Y1xmRu6FuELd69x8PYJfcLJG-tqZ-mrDV9lo9NRqjZ7kGkv2bN_qtwMGa5gPrWqKQ4W5A12iT1fIUp91o34XCJv3knjuYyi-Y0Wouao0d2l1F-8Catj2icG3hjJ7CySHun5AgByeYuzMtCGiVTevkMLB8A8bFL9318R5j8qbwzGMMT7R9-0Aat6hS7PbBN1RVn93f8FtmNNNQGVwMhXrp-Gaj1DNuYvtVK7Wp0aJhehv2EZHNgdPam2fSEQAV-fdIL9ugMCt8VQ1LjpQqzO83u305B0BV3Ri16GlQYTTRYYg4bgXE85R42xx1IQoBlTioCbkga1dkkvDInSFNeCJ_B0FhNDd8DNgWc9v8wGx4MTjTdhs3mBbrRV_-yjQim0e-hhn_R46zglh7Lrb6brq31V5HaI-0_ZacSvuDJKihM3BC1UUwbvdIIRqDL_nOeWgTPT12_iUT-7VRQ5Z086QreafS20a7-ieGvnxlZuk3m_N6_ntJ_38MHi6GOCkdRQzXFcCmmmpRu-9menlmR211xVS5F_mGGW3JBee7fb04lAkNXCuoheZBDRQgy1XfUS76Fu5kdcReRWWeasRzJjsgTBXHHXxqt3kLNfyCUr4Mt0Kft-wA4G6Sdu6y28wE5QkNFaZSfoK33HStdYmx1goOV3PUBAxUelD2NBhkza3qCpVViZnGYn6q8wePvBCt8jJ7pAAAAAAAAAAAAAAAAAAAAAAAAAAACDRgdHyYxNw",
"rail": "service_credits",
"receipt_id": "rcpt_QvMysxoTGg1wEO-6SxoxE2",
"refunded_minor": 0,
"risk": null,
"settlement": {
"moved_tokens": [
"9c7e8fe00e1db777423d"
Show the remaining 14 lines
],
"payee_did": "did:phanes:venue:clearing-exchange",
"payer_did": "did:aeos:0f897ecebc5f3fc8ab34a2d3a390675c",
"rail": "service_credits",
"state": "settled"
},
"token_id": "vt_Wvl47yVOPwxlNogNQuLA4B"
}
receipt rcpt_QvMysxoTGg1wEO-6SxoxE2 12000 USD service_credits settled
# the same one-time token again: refused, and the refusal is on the record
{"error": "PhanesAPIError", "detail": "403 /v1/pay/A7BFQTESV/authorise: payment token is exhausted"}
exit=1 (refused, expected)
63

cli-verify-receipt

exit 00.768 s2026-09-15 06:06:15 UTC
$ bash -c 'set -e echo '"'"'# the merchant verifies the receipt offline under the authority key from the published anchors'"'"' /usr/local/bin/python3 -m aeos.cli anchors --server http://127.0.0.1:42643 --out /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/anchors.pay.json > /dev/null /usr/local/bin/python3 -m aeos.cli verify-receipt --anchors /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/anchors.pay.json --file /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/receipt.jws | tee /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/receipt.verified.json | head -40 /usr/local/bin/python3 -c "import json; d=json.load(open('"'"'/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/receipt.verified.json'"'"')); print(); print('"'"'verified offline:'"'"', d['"'"'verified'"'"'], '"'"'| issuer'"'"', d['"'"'issuer'"'"'], '"'"'| amount'"'"', d['"'"'receipt'"'"']['"'"'amount_minor'"'"'], d['"'"'receipt'"'"']['"'"'currency'"'"'])" '
# the merchant verifies the receipt offline under the authority key from the published anchors
{
"issuer": "did:phanes:authority:JiGheM3sejAYptRS1dpkUNkx6fBRJo2phw1lyK25jqQ",
"offline": true,
"receipt": {
"amount_minor": 12000,
"cart_hash": "o3sSv9eVWizXn77q0MJeLACf36ONcJsR_7qv92QT5q8",
"cart_id": "cart_o3sSv9eVWizXn77q0MJeLA",
"currency": "USD",
"holder_key_fingerprint": "b2570f57ef60b40500d68297731e4796bee8c707e6e96d51540b162a0157e0f7",
"iat": 1789452375032,
"intent_mandate_id": "im_NQSeAsxnQjRRt9qAf7GbT4",
"iss": "did:phanes:authority:JiGheM3sejAYptRS1dpkUNkx6fBRJo2phw1lyK25jqQ",
"jti": "rcpt_QvMysxoTGg1wEO-6SxoxE2",
"kind": "payment",
"mandate_hash": "0KswOe9f1Jt0P_BaW_84Q5MTUCWe4Z1QkLX0a3luZXY",
"merchant_did": "did:phanes:venue:clearing-exchange",
"rail": "service_credits",
"risk": null,
"settlement": {
"payee_did": "did:phanes:venue:clearing-exchange",
"payer_did": "did:aeos:0f897ecebc5f3fc8ab34a2d3a390675c",
"rail": "service_credits",
"state": "settled"
Show the remaining 8 lines
},
"sub": "A7BFQTESV",
"token_id": "vt_Wvl47yVOPwxlNogNQuLA4B"
},
"verified": true
}
verified offline: True | issuer did:phanes:authority:JiGheM3sejAYptRS1dpkUNkx6fBRJo2phw1lyK25jqQ | amount 12000 USD
64

cli-pay-refund

exit 01.168 s2026-09-15 06:06:16 UTC
$ bash -c 'set -e echo '"'"'# the merchant refunds part of it with its own key; the holder reads its payments'"'"' /usr/local/bin/python3 -m aeos.cli pay-refund --server http://127.0.0.1:42643 "$(cat /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/receipt.txt)" --merchant-key /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/venue.key --amount-minor 2000 --reason "toner out of stock" | head -24 echo; /usr/local/bin/python3 -m aeos.cli payments --server http://127.0.0.1:42643 --key /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/agent.key A7BFQTESV | /usr/local/bin/python3 -c "import json,sys; d=json.load(sys.stdin); print('"'"'summary'"'"', json.dumps(d['"'"'summary'"'"'])); print('"'"'refusals'"'"', [(r['"'"'reason'"'"']) for r in d.get('"'"'refusals'"'"', [])])" '
# the merchant refunds part of it with its own key; the holder reads its payments
{
"amount_minor": 2000,
"currency": "USD",
"id_number": "A7BFQTESV",
"issued_at": 1789452376999,
"jws": "eyJhbGciOiJFZERTQSIsImtpZCI6IkppR2hlTTNzZWpBWXB0UlMxZHBrVU5reDZmQlJKbzJwaHcxbHlLMjVqcVEiLCJ0eXAiOiJwaGFuZXMtcGF5bWVudC1yZWNlaXB0K2p3dCJ9.eyJhbW91bnRfbWlub3IiOjIwMDAsImN1cnJlbmN5IjoiVVNEIiwiaWF0IjoxNzg5NDUyMzc2OTk5LCJpc3MiOiJkaWQ6cGhhbmVzOmF1dGhvcml0eTpKaUdoZU0zc2VqQVlwdFJTMWRwa1VOa3g2ZkJSSm8ycGh3MWx5SzI1anFRIiwianRpIjoicmZuZF9hUEp1ZnJzbWkwa192c19XbE82Qi1yIiwia2luZCI6InJlZnVuZCIsIm1lcmNoYW50X2RpZCI6ImRpZDpwaGFuZXM6dmVudWU6Y2xlYXJpbmctZXhjaGFuZ2UiLCJyYWlsIjoic2VydmljZV9jcmVkaXRzIiwicmVhc29uIjoidG9uZXIgb3V0IG9mIHN0b2NrIiwicmVjZWlwdF9pZCI6InJjcHRfUXZNeXN4b1RHZzF3RU8tNlN4b3hFMiIsInNldHRsZW1lbnQiOnsicmFpbCI6InNlcnZpY2VfY3JlZGl0cyIsInN0YXRlIjoicmVmdW5kZWQifSwic3ViIjoiQTdCRlFURVNWIn0.QQEW-mtZ0nLtYM85KWW2ivUVNJaFB3CVy4hz15QnVVgPpKEFptWRc1sssYSyt0W61BLIxT8R_RnbT4aXMOLLBQ",
"kind": "refund",
"ledger_entry": "453abdd70e65d350",
"mandate_hash": "xjKJXIt2YUkI0-KHFiP6X3Y0mgu6w12o-wxLuGQQAXU",
"merchant_did": "did:phanes:venue:clearing-exchange",
"merchant_kind": "venue",
"of_receipt_id": "rcpt_QvMysxoTGg1wEO-6SxoxE2",
"pq_seal": "n6g8U2yFchcF4jwJgY4_9rAuo9cB-5o_iL2MbSBT-ZsOdP9CORN07wuj2JaycczSJj3jt0wdmiBtd5xB_bVmpUX_SbLlAQSPznRLpBle8GUhbwxoxONymAqSjKJ2hEt1ulCupROZ48IuuR5VrzwGPcMCJlq4BAxMtLhJQXw3OP5KGIaepM5xY5BeVYclPvvmQmVr7804ML5-lzh5KYFtJtOrmNULXXaVdO7gdDglJeN6Wzfw5zSdQCdp9jEP62h9lm9I4dO_FkC7_tAnVVdYvapJgZu4KG9pTSLGwst2MPkKpxpStNjn_yWWq1FWkRbBkymzrtQ_CyDYR5SmLG53ePgoBHjeeUop61CoS_7AefQITjll9lH2FSYQk2eKOPB9YgW4kU8G9aK96FfC6vHr6gOO9f0WCipeQQ8dwsV3_JgFOiz4xXB9LT4dZ7ETGupqn65_-Fh6x68Jj926EKmSR9Zi6TZoVRJjET-PLRbRF2dO7mt-toRPbs261t5-YzAxEiarblrQsZJHOk0tdoC96cKr09v9tUiPQOZdRci_tln9mo84u5c7rfwwtiianSUyzaK6MNoT9cAn0DQ_U0cCa1vC0yI05HavNwint64_hF2mHvdh3wYojTfcXdvdYaeZkbu9DInKZauPFvL6RQQsWbMe3LTZ2-6pDma5_7b-jZeKnIULPy7AIDps-EkA0nFCiKbp4jqja01TAj-1Vep0fJxMWyh4A5NdsnWfQ6KukrsMsaPgvHXnixGiJhjs85JrrGCG2d7Fd0aXkpFVraCaJG9lvON7ky7BPJivUAhZCw1cr7TmFxhFndJJ-8Fp6OopMJPcqnxCfhpcgzkWhhAVur4JjeMh0XQVpvN3qDA3xdP5b3Zv4KK5I_9vwk-J7HVb5mhbiZjwn9y7Dqm5LypInPlhaaNF8_fCRutasG3Tur57BIC3ZJAC6l9n4AtJvUc64JptN7DFoTaYt1YSMFfvAyoySwHOabbaULg4Fh6E0k_izJMCc887qNQdq-GDLZ0z4b7wiXV7JPQCJ82L5YC6EQ4swdCLZrEvRyngjn7gYnIwMd-XRl8usX9cgDWImrvKJlLOhLnYE-GRtO14i0pu_RcrzIuRMSRVV6jamX5REBQCzO2TCBdmhWR9wL1_uZBC0ken72nWnzrBe6rbOy3vfWalsg56203e6zArtZBeZbt1nMVOHoGN17v4QVaBN-WQxGCNGCTa4vCkkS1MTuBtxbq7tLTT1u1pi-_NVqqfGw2gJonjW8gtkx8EUc4Nfk2-LKUTysstqR2QESuGH06eFSgvvoT8Iy0Eq3Q41kaLGQ_T3qe85XuD7lPza-2AecTAQoEm5_X4OlhSk05SjwemwP0RZAg2XXN4YwjIdwjHx61SLXTadb-9W_pcoh4aDZnKterFXFXjHyl2VZOkXNRmbzyU69uPzB94sIu0F69BhMLqES6dEWYFfC6sKZEy4pnk4blPSpjaVsVSsfOUt6A8xoihWMehlcCPj5W-utOMBB0a_IxS6ooC0h5AyiF0kCpXe99AYQRncSXsrlDTNz-jrdR9x4HegYulgJ00hb-t1Pe1V1wOZkQMcXrQD5J3PqHItYvlazEjgle5QthXyFPd6MqEoqxI3bOAYRBnScOzicCcvjw_5cau7K2JXKvAXu8ZWsbe_LhK-ziCe-od0mJHhgPf31pXnLm6Ngkz5XrmdmRBR8-xuUbjZHQkgqZkGw9b3SkmtbKY1b98tfZs7llVK_81IHoP-OpXZMQ6qbVygpKA8E-cCuCq-E4K5NM5V55H9JnCgzw0biEypJ1BKjxnvviAkM8cHF4K95crkRKpFSNf5PQ6CYJU-4LhrerHapvwzNqkM9WUrhEUFJo1e5YRWMfnz11VK6kjJ7md5HD4ScnqmBsVqEbF_eeyM4UhXJ6983yw1kp89p8Q9t6dR9ZuvWK-NtaE7EBPIiTiVlZIUmlHqjPfPgIKvm1UdyrjOS9FsNJ0G09Ev3KUzn9jLH__tifOq8c5hsdzoiBK67sLom6wb2a6qr-53Uvg2WqYHbNB0MondV6jnF5Pp18fYQZy2iXrPJzDXQFV6XEFuWx3bLYnSniS7IcVrN54xehUyWbATlozk7z059uUrcscmJJrUVbFpKJNVa5i2C7nT3xgM9NJwrSGhAujIFzcDZ_H2bmAaGXQOjOdnqHF3UMD2_vIl-hjcZGMfsnEarBLydWlM2u-DOByqzYIKLl20mOONrIQEqMQIsYnOut76e1XCFM-E-oIIyZj9rNQHkVaRhMK7Z8dzXVcF_mJs874WfZjQvWGsLUSrhsCf-cMisn1a4GSKwJfk-5_qfooxLzFWqYUEMMTCja-QhLtAk84XOKxwcDEs1PXJfr9IxcYhe-F99D4FnG2UhYF0XRzKlavV7hpJTzOCWmZ9zwFkimmwh6JvbVzaT7C6I8WRphk3hDEYuZ5IPlz8Y6QZZw0SYWoKOE-g-7VvXa-6Djjmr62gY9zJlg_a6rT9UEkU8034sblK3zXqpGifad9F2T8C-ViSTQWS_pbwR7aEfu4poY1tR16a6MQ4jsyDLsL2sx7HG_JpdtTojal2lS4_vZ2zHuEZkhpI9NNu4JsIwYDRwuJ-WgIDyK_CgQK-GldFxhAUATcMj3-GhtgdFY6dhX0cYQoZQuMpYluHWwNtC56nnGgSjun3GL9UjjPuDETHitIjsdvFNnAMdV11IHitlfhqpuUNwz1bWWN4DcFEWHLp2An1_kGJS1AHogPAos3VWOdzrLYqIUIvhMJpvvo1R0PmUq1htAXWqM_h7bDEHEtc5WM-QgyZKZNKKYtFTUmwEUH1viUJXaWDQA1CK4MJ4DGZJZMmEmT56wp_oXpKDwKhJ9iLnj0r2cNyUCCXu-j-ZgJCVPmX6K9gRjl-pNM2tI4LWKGdq4GrjsxslVKf9q7HKAtV0UC6oMG6BVVQBZc84xD09b6lzq1e15FqesiCS_evjBari_6zhGLDCnYWzba1ioRKRC8IfLqu2rXEOkodFj0kQ8SsgvZ2PVr8y385YN-Nbs8wpj5t6-FPw4BIKIrV2dt-X7jKtUR5a0AMr76XPbe7qQy2SIXA4N1dLbVJWx0Vz1U7gtGHxlob1W10YuhylEb9rnNP_AAsv4VmXugBhQhhloghPVDYLQcMUvgvEn5Ll11u0e7w3BmPQ1-Q7Jkx_Cqzj812l7NUtcYmqvXZz1ECpXpP66qhVU5UFP2vxzX_HRBAa3sj7lGONFNTOUSecGL-bsJFdcE0w1xNdrCVPAk01yuzrYUu6dtHVuQwk1ulHtNGkTqUYMjQQQyPqimgYAykkAaEmSkW32r32BB9tGPm3R13pjyoHRX9f4hS2n--avu45vt0W45UlqJT5jb-IZN2i9wgprbHh4749POzpD74ZgSO8cD6qRGKYS7c0TH1mM8biGmMZZ5p46cPCNSfIJLila1FYWzlGZorTWDSwl6OdHqXY1dPbuop-7BIkVlx5o8cQlMhWEzBqyzWEaz3nIa2aCmi39Vt62B1gGonvkt748IRq4jTWNJnTgdHgKcda8HW-ZUCuP5jewMY_CJWdlJ3ryW_af8NHaGTpfpIk1XPRHjL5Lg2JehHzo3Z8XGz8s6sE9KH-S2oSxTHhBdawHPklm0izRRSx7hGS1zr3w899Fbgh1OHjpOcKwX63RhMBNv_kEmWU0ZFYKwE0CzKTEYHuGyQLgV7CBoa3byEatsz6DQ4oxAAzOrn3Jnu0mapV4xPiEvipPhuXMuVmECj1RaiKKZHDCvWR4glFEKz66neIHyUn55R7Oz4L7OPvC0vBdzYwCloW5ElExRaITM4l7dKe6VcyVhRn0VA0R-NJnuhX33qXvdyDkcDZgfPIBQOqIHDpMlr63rFInjRxlbM9-E-U_oFMhEUm1riWFh4SkreeyW1NI45CLXxoYodk6dSfKY4AYqUeL-i4gA-W2GqCTCP5x1CGZfOGHk6lsVybIYTcIiCXr_ex4QEtbwITSvCGm7WUkTAuh0Dp7hamiGfhT_uUikLmcMa5mDeUmXoRPUV7TWoBvebFvqrW1QhivsbFO3UaAXOXTfodWMRP9gghm0M8BkPKL1KxL3TawSf3nzQqdYugn7seIB8szzFk-dYWzfCl0b5Kf8-U12pFjY5u_C3Qs_PSfZW9KwJwitdavBfwOkouNAtOeX7S1iQDigZNXk70p3FlM3VFaYLeZzmI6-0VI0pa314iL_RHsCVzi4_Wdg1UxA7LM8uN1scY03-H2E9y70CThb5TECvkNAf23hUlBjqWs5uDn-glLXLmLBmvf5-mWuP745pSla5g2zdArzcF-wITVLg7OT9Zb4ECRLwXW5Yyr9okMVyqBo7X1JIs7iu4JN7q76_YDy53cqzE24CxlPp-RCVcfLSbe4TogHm2WVYqWsJlnflkOXawDrY9d42tPDZjPjB6gYnV2PVMOU6GSSkiQX5-8u8NkfO0eO8AyjYru4gjS-vqPYOeQxqoBzq2bqV2MOYma84SWtjloi37h-M5YNBhWkiw_r3YQYRi49HDlw_XKhDipDodDXHqxjOZ12cU2FU9nKJ2QhOAtpI3EQMHmDKsTI1uoepilWJPWdQ-andqt-0ic-ivakx4mOb6sziIVvO1i_m2FT2KumI6HD4aDLJf8EPXsxPAv0vOenlocVMUV5BM_AgZ2IInC_ylizMleDU8eC5G9TzputRy_Rhvf3F1BEquxJqk0PCAQKwxbw4DLq2oMNsSGjtkWlRMc5zg9pyam4GSTbeHLxDbBFNtKHJeZ0PF2nuXDqqlFtkb93v70eKAoFsTUIGnW_kUuhNYUil3hBMJhC9lHThPeF6v3cvVV1dceZdvn9lhjVdcBjdJPhLaS8OaJxbl2KlH30XsBcfjdUJGB_uWc0uZwPKuONmL3kE_XpT9lyjDAIK2Z_C4VxzIqLloRHqX-0xHFSnz4eP2Zba52K2CvIdXPR-PLEWja5F8pKfoZ7Pc2hfcxEovAz44Yy9_cf37I5Kqq4S6LaHDKIfVzSfCGk10Y9Sq5Gmze3-v7z-Xw_fh54cg5MBllohOc5R9A3x3SR_ItJnUCSdoSdUy9-5zwfOztkTa7iHKL_fvLxUMNL3PFhlzBq-bY0MAXNV2NIBKMrGTV5jQ3baaI08Z4d3DaZmpfVFzklfAOh_l9cZiJ3_GadE3n3nO8LncCq25BdldcMIqgZwpf5eajhQqSvQ79KAzdhAkVwKT8XFuNa5UvJFuk-fL9bGyE2O1bg2EfEHxYjd8W7Gxtoqws4Q9a59Rj17eonCEZtkAiA8LFX67RIHpDhyo_vEesYnWdQTh0AERPNisChVAA9moPEVW8T2-Tnu7Vj9Pk4uh4chIrh_fLCHb-7abmyn-QX2Krgcp9nCYMcAM8DLd65fETYazBkqCJXDWXXwQJ4Fp1R2uSyGHDKCZRndNjycMUm9M7fvapBd58PHWBYprbAIRoAXpbDiV6YgQuoSISsp_3LE8Gqsjt91nzNZpm-ZWJq5v7UnQhgiEpIvilYLMqPqZMyAC-bIxBNCla9fbnQ4hJokDcnMrplqGMi-mNNY7a38eQ5rXgMz30HU_bwxF82KNkgXzk3jTUK06I17dRevsqgJWOInvUsxNHtxmxvovoHf2WxPHTmUksMMPYm0mj_-xKvIKMW_cMe2LMf3z4F2brz3cRQnler_2woJNk-zIpUHqTFhj1KYXdEtdiDIvgKQWtq0xil7cGv8QIy3pQCXSiy9U9kATyrkf1nu0OZEhvi4WFSGlIKo226snLrWQXAQXVzdYW408iAIntPP8IaG1CljCF1LYSsnAMrwSJawUgtLgYiXBjHbyBPHkwnS20dPbfZz2bhCRlVas6_5CzHdTLcEOVp6TFJ8ClqJPj4TUFEbf7K8eRc4Nbusz0rbyYYrPmcbYU2i-yzzXaRvOv1lrLSiLigtWsojw6I-jrKHuLxbAkNEueEU94orgn-46XE-o9f4WNJaP3oAS22H7t4ZrYo1hlUj0SJKDxB99y6G5srmbMRm2sT9lS-HBdSKeilpKfuWEf_coSPFgtpi0cEBS08QFxlZ6z7LC83OUxfeo2UFhdIxvZHTHidqcDxIy2BiZ3WR1KZ1P0BSViOr9Pe_iI1UX2W9wAAAAAAAAAAAAAAAAAAAAAAAAAKExgfJSoyOA",
"rail": "service_credits",
"reason": "toner out of stock",
"receipt_id": "rfnd_aPJufrsmi0k_vs_WlO6B-r",
"settlement": {
"moved_tokens": [
"a80b1a21555242a10dac"
],
"rail": "service_credits",
"state": "refunded"
}
Show the remaining 4 lines
}
summary {"active_tokens": 0, "daily_volume_minor": 12000, "merchants": ["did:phanes:venue:clearing-exchange"], "paid_minor": 12000, "payments": 1, "refunded_minor": 2000, "refusals": 1}
refusals ['payment token is exhausted']
65

recognition-by-merchant

exit 00.165 s2026-09-15 06:06:17 UTC
$ bash -c 'set -e echo '"'"'# the registry is the agents key directory (RFC 9421, Web Bot Auth): a signed document, one record per active holder key'"'"' curl -s -D - http://127.0.0.1:42643/.well-known/http-message-signatures-directory | head -14 echo; echo '"'"'# the agent signs a request to a merchant with its holder key (Visa TAP payer profile); the merchant resolves keyid through the registry'"'"' /usr/local/bin/python3 - <<'"'"'PY'"'"' import json, sys, urllib.request sys.path.insert(0, "/Users/tofael/phanes") from aeos.cli import load_keys from aeos.httpsig import sign_request, verify_request, jwk_thumbprint_ed25519, TAG_TAP_PAYER from aeos.canonical import ed25519_public_bytes, jwk_to_ed25519 keys = load_keys("/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/agent.key") kid = jwk_thumbprint_ed25519(ed25519_public_bytes(keys.signing.public_key())) body = json.dumps({"sku": "PAPER-A4", "quantity": 2}).encode() headers = sign_request(keys.signing, kid, "POST", "https://shop.example/checkout", body=body, tag=TAG_TAP_PAYER, directory="http://127.0.0.1:42643") for k, v in headers.items(): print(f"{k}: {v[:112]}{'"'"'…'"'"' if len(v) > 112 else '"'"''"'"'}") def resolve(keyid): r = json.load(urllib.request.urlopen("http://127.0.0.1:42643/v1/keys/" + keyid)) print("registry record:", json.dumps({k: r.get(k) for k in ("id_number", "document_type", "standing", "active")})) return jwk_to_ed25519(r["jwk"]) if r.get("active") else None print() print("merchant verification:", json.dumps(verify_request("POST", "https://shop.example/checkout", headers, resolve, body=body, tags=[TAG_TAP_PAYER]))) print("tampered body: ", json.dumps(verify_request("POST", "https://shop.example/checkout", headers, resolve, body=body + b" ", tags=[TAG_TAP_PAYER])["reason"])) print("wrong path: ", json.dumps(verify_request("POST", "https://shop.example/refund", headers, resolve, body=body, tags=[TAG_TAP_PAYER])["reason"])) PY'
# the registry is the agents key directory (RFC 9421, Web Bot Auth): a signed document, one record per active holder key
HTTP/1.1 200 OK
date: Tue, 15 Sep 2026 06:06:16 GMT
server: uvicorn
signature-input: sig1=("@authority");created=1789452377;expires=1789538777;keyid="JiGheM3sejAYptRS1dpkUNkx6fBRJo2phw1lyK25jqQ";alg="ed25519";tag="http-message-signatures-directory"
signature: sig1=:5sC31n9T2MXtV+ZgGG5A5TsD//wRcJBAKESnRFTLjxaEhJo7YejE+XLsPnLFKOHwEJFmDA4t5g+ic6KLRzDRAA==:
content-type: application/http-message-signatures-directory+json
cache-control: public, max-age=300
access-control-allow-origin: *
content-length: 866
x-content-type-options: nosniff
x-frame-options: DENY
referrer-policy: no-referrer
cross-origin-resource-policy: same-origin
permissions-policy: camera=(), microphone=(), geolocation=()
# the agent signs a request to a merchant with its holder key (Visa TAP payer profile); the merchant resolves keyid through the registry
Content-Digest: sha-256=:0stsoJZKKGFy/irgBQxtqMPR3luUv7SwAO+xl9mTcD4=:
Signature-Input: sig1=("@method" "@authority" "@path" "content-digest");created=1789452377;expires=1789452677;keyid="NEnpbPKwN68Z…
Signature: sig1=:rN+0UvYZ9WHlIO4CCCpNTNgGOeB9S+Jn5lP8Q7tq5uv1lFMYfec72+ciaQY71LxNt4JtwbWo7q38GJXeNDtoDg==:
Signature-Agent: sig1="http://127.0.0.1:42643";type=directory
registry record: {"id_number": "A7BFQTESV", "document_type": "IA", "standing": "in good standing", "active": true}
merchant verification: {"ok": true, "label": "sig1", "keyid": "NEnpbPKwN68Zng_QVXRgx5P7ahWusOlzH4HzAIYkmDg", "tag": "agent-payer-auth", "agent": {"uri": "http://127.0.0.1:42643", "type": "directory"}, "created": 1789452377, "expires": 1789452677}
Show the remaining 3 lines
tampered body: "Content-Digest does not match the body"
registry record: {"id_number": "A7BFQTESV", "document_type": "IA", "standing": "in good standing", "active": true}
wrong path: "signature does not verify (InvalidSignature)"
66

enforcement-guard

exit 00.616 s2026-09-15 06:06:17 UTC
$ bash -c 'set -e /usr/local/bin/python3 - <<'"'"'PY'"'"' import json, sys sys.path.insert(0, "/Users/tofael/phanes") from aeos.cli import load_keys from aeos.client import PhanesClient from aeos.phanes_id import PhanesID from aeos.enforce import Guard, Refused keys = load_keys("/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/agent.key") client = PhanesClient("http://127.0.0.1:42643", holder=keys) pid = PhanesID.from_dict(json.load(open("/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/agent.id.json"))) guard = Guard.from_id(client, pid, jurisdiction="USA", model_id="claude-fable-5-1", intent_merchants=["did:phanes:venue:clearing-exchange"]) st = guard.refresh() print("standing from the signed status lists:", json.dumps({"good": st.good, "revoked": st.revoked, "suspended": st.suspended}), "| sealed bounds", json.dumps(guard.bounds())) print("allowed:", guard.run("order paper", lambda: "ordered PAPER-A4 x2", amount_minor=2500, merchant_did="did:phanes:venue:clearing-exchange", what={"tool": "shop.order", "sku": "PAPER-A4"})) for label, kw in (("above max_transaction_value", dict(amount_minor=9_000_000, merchant_did="did:phanes:venue:clearing-exchange")), ("outside the intent mandate", dict(amount_minor=100, merchant_did="did:phanes:venue:unknown-shop"))): try: guard.run(label, lambda: "must not run", what={"tool": "shop.order"}, **kw) except Refused as e: print("refused:", e) print("recorded:", [(e["event_type"], e.get("outcome")) for e in client.events("A7BFQTESV", 0, 500)[-3:]]) PY'
standing from the signed status lists: {"good": true, "revoked": false, "suspended": false} | sealed bounds {"max_transaction_value": 2500000}
allowed: ordered PAPER-A4 x2
refused: 9000000 exceeds the sealed max_transaction_value 2500000
refused: merchant did:phanes:venue:unknown-shop is outside this agent's intent mandate
recorded: [('tool.invoked', 'ok'), ('risk.blocked', 'blocked'), ('risk.blocked', 'blocked')]
67

cli-register-witness

exit 00.667 s2026-09-15 06:06:18 UTC
$ bash -c 'set -e /usr/local/bin/python3 -m aeos.cli keygen --out /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/witness.key > /dev/null /usr/local/bin/python3 -m aeos.cli register-witness --server http://127.0.0.1:42643 --public-key @/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/witness.key --name "Audit Office" --organisation "Court of Audit" '
{
"did": "did:phanes:witness:_2EJ_6izYydY-j68Q45Ohqc4q_hFv1klsTGC1EWR-ak",
"jwk": {
"crv": "Ed25519",
"kid": "_2EJ_6izYydY-j68Q45Ohqc4q_hFv1klsTGC1EWR-ak",
"kty": "OKP",
"use": "sig",
"x": "_Up8BQAc2PkDkfa2Lio1Kxfy302JEw79DOtW6HiMHcs"
},
"name": "Audit Office",
"organisation": "Court of Audit",
"public_key": "_Up8BQAc2PkDkfa2Lio1Kxfy302JEw79DOtW6HiMHcs",
"registered_at": 1789452379008,
"revoked_at": null
}
68

cli-witness-cosign

exit 00.617 s2026-09-15 06:06:19 UTC
$ bash -c 'set -e echo '"'"'# the witness fetches the signed tree head, checks it against the head it saw before with the consistency proof, and cosigns'"'"' /usr/local/bin/python3 -m aeos.cli witness-cosign --server http://127.0.0.1:42643 --key /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/witness.key --state /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/witness.state.json A7BFQTESV echo; echo '"'"'# the witnesses on the current head, as any verifier reads them'"'"' curl -s http://127.0.0.1:42643/v1/ids/A7BFQTESV/activity/witnesses | /usr/local/bin/python3 -m json.tool | head -40'
# the witness fetches the signed tree head, checks it against the head it saw before with the consistency proof, and cosigns
{
"cosigned": [
{
"log_id": "urn:phanes:log:wcKdrWRbn2fiZg0GZ0yeyQ",
"number": "A7BFQTESV",
"root_hash": "ZqWdw1xh7VpBXuuzVFLH9NpcZmAaLsO2IxLZ7u34bCM",
"tree_size": 11,
"witness": "did:phanes:witness:_2EJ_6izYydY-j68Q45Ohqc4q_hFv1klsTGC1EWR-ak"
}
]
}
# the witnesses on the current head, as any verifier reads them
{
"log_id": "urn:phanes:log:wcKdrWRbn2fiZg0GZ0yeyQ",
"tree_head": {
"tree_size": 11,
"root_hash": "ZqWdw1xh7VpBXuuzVFLH9NpcZmAaLsO2IxLZ7u34bCM",
"timestamp": 1789452379608,
"jws": "eyJhbGciOiJFZERTQSIsImtpZCI6IkppR2hlTTNzZWpBWXB0UlMxZHBrVU5reDZmQlJKbzJwaHcxbHlLMjVqcVEiLCJ0eXAiOiJwaGFuZXMtc3RoK2p3dCJ9.eyJpYXQiOjE3ODk0NTIzNzk2MDgsImlzcyI6ImRpZDpwaGFuZXM6YXV0aG9yaXR5OkppR2hlTTNzZWpBWXB0UlMxZHBrVU5reDZmQlJKbzJwaHcxbHlLMjVqcVEiLCJsb2dfaWQiOiJ1cm46cGhhbmVzOmxvZzp3Y0tkcldSYm4yZmlaZzBHWjB5ZXlRIiwic3RoIjp7InJvb3RfaGFzaCI6IlpxV2R3MXhoN1ZwQlh1dXpWRkxIOU5wY1ptQWFMc08ySXhMWjd1MzRiQ00iLCJ0aW1lc3RhbXAiOjE3ODk0NTIzNzk2MDgsInRyZWVfc2l6ZSI6MTF9LCJzdWIiOiJkaWQ6cGhhbmVzOmFnZW50OlN1N21Vdm85ZnJMdm5DWHBETVR6TnhTQ1hwa0VFZGRRIn0.uZlon7CWjXvo6gCkLo828rGFuRZI92SzwTkx7ujtF1i13f0BQgnktChuQY3YFvtOflT6SWP8KOwHv_CK9gVUBA"
},
"latest_head_cosignatures": [
{
Show the remaining 29 lines
"witness_did": "did:phanes:witness:_2EJ_6izYydY-j68Q45Ohqc4q_hFv1klsTGC1EWR-ak",
"log_id": "urn:phanes:log:wcKdrWRbn2fiZg0GZ0yeyQ",
"tree_size": 11,
"root_hash": "ZqWdw1xh7VpBXuuzVFLH9NpcZmAaLsO2IxLZ7u34bCM",
"sth_digest": "qxST0I_sMYTDkWaODktCYu3MyKqmVKaOAI_JIHFBtwE",
"jws": "eyJhbGciOiJFZERTQSIsImtpZCI6Il8yRUpfNml6WXlkWS1qNjhRNDVPaHFjNHFfaEZ2MWtsc1RHQzFFV1ItYWsiLCJ0eXAiOiJwaGFuZXMtd2l0bmVzcytqd3QifQ.eyJpYXQiOjE3ODk0NTIzNzk2MTAsImlzcyI6ImRpZDpwaGFuZXM6d2l0bmVzczpfMkVKXzZpell5ZFktajY4UTQ1T2hxYzRxX2hGdjFrbHNUR0MxRVdSLWFrIiwia2luZCI6InRyZWVfaGVhZCIsImxvZ19pZCI6InVybjpwaGFuZXM6bG9nOndjS2RyV1JibjJmaVpnMEdaMHlleVEiLCJvcGVyYXRvciI6ImRpZDpwaGFuZXM6YXV0aG9yaXR5OkppR2hlTTNzZWpBWXB0UlMxZHBrVU5reDZmQlJKbzJwaHcxbHlLMjVqcVEiLCJyb290X2hhc2giOiJacVdkdzF4aDdWcEJYdXV6VkZMSDlOcGNabUFhTHNPMkl4TFo3dTM0YkNNIiwic3RoX2RpZ2VzdCI6InF4U1QwSV9zTVlURGtXYU9Ea3RDWXUzTXlLcW1WS2FPQUlfSklIRkJ0d0UiLCJzdWIiOiJkaWQ6cGhhbmVzOmFnZW50OlN1N21Vdm85ZnJMdm5DWHBETVR6TnhTQ1hwa0VFZGRRIiwidHJlZV9zaXplIjoxMX0.r8qgsRN2I1NJ5FQAHnmdPdYciAMAQ6fQEu1lFQN_pbK7Obkwmjo-mW1vIUOl8BOPwHLg-X-DxguYWHzV1xEdAQ",
"received_at": 1789452379613
}
],
"all": [
{
"witness_did": "did:phanes:witness:_2EJ_6izYydY-j68Q45Ohqc4q_hFv1klsTGC1EWR-ak",
"log_id": "urn:phanes:log:wcKdrWRbn2fiZg0GZ0yeyQ",
"tree_size": 11,
"root_hash": "ZqWdw1xh7VpBXuuzVFLH9NpcZmAaLsO2IxLZ7u34bCM",
"sth_digest": "qxST0I_sMYTDkWaODktCYu3MyKqmVKaOAI_JIHFBtwE",
"jws": "eyJhbGciOiJFZERTQSIsImtpZCI6Il8yRUpfNml6WXlkWS1qNjhRNDVPaHFjNHFfaEZ2MWtsc1RHQzFFV1ItYWsiLCJ0eXAiOiJwaGFuZXMtd2l0bmVzcytqd3QifQ.eyJpYXQiOjE3ODk0NTIzNzk2MTAsImlzcyI6ImRpZDpwaGFuZXM6d2l0bmVzczpfMkVKXzZpell5ZFktajY4UTQ1T2hxYzRxX2hGdjFrbHNUR0MxRVdSLWFrIiwia2luZCI6InRyZWVfaGVhZCIsImxvZ19pZCI6InVybjpwaGFuZXM6bG9nOndjS2RyV1JibjJmaVpnMEdaMHlleVEiLCJvcGVyYXRvciI6ImRpZDpwaGFuZXM6YXV0aG9yaXR5OkppR2hlTTNzZWpBWXB0UlMxZHBrVU5reDZmQlJKbzJwaHcxbHlLMjVqcVEiLCJyb290X2hhc2giOiJacVdkdzF4aDdWcEJYdXV6VkZMSDlOcGNabUFhTHNPMkl4TFo3dTM0YkNNIiwic3RoX2RpZ2VzdCI6InF4U1QwSV9zTVlURGtXYU9Ea3RDWXUzTXlLcW1WS2FPQUlfSklIRkJ0d0UiLCJzdWIiOiJkaWQ6cGhhbmVzOmFnZW50OlN1N21Vdm85ZnJMdm5DWHBETVR6TnhTQ1hwa0VFZGRRIiwidHJlZV9zaXplIjoxMX0.r8qgsRN2I1NJ5FQAHnmdPdYciAMAQ6fQEu1lFQN_pbK7Obkwmjo-mW1vIUOl8BOPwHLg-X-DxguYWHzV1xEdAQ",
"received_at": 1789452379613
}
],
"witnesses": {
"registered": [
"did:phanes:witness:_2EJ_6izYydY-j68Q45Ohqc4q_hFv1klsTGC1EWR-ak"
],
"on_latest_head": [
"did:phanes:witness:_2EJ_6izYydY-j68Q45Ohqc4q_hFv1klsTGC1EWR-ak"
]
}
}
69

cli-register-overseer

exit 00.616 s2026-09-15 06:06:19 UTC
$ bash -c 'set -e /usr/local/bin/python3 -m aeos.cli keygen --out /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/overseer.key > /dev/null /usr/local/bin/python3 -m aeos.cli register-overseer --server http://127.0.0.1:42643 --did did:phanes:overseer:agent-supervision --public-key @/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/overseer.key --name "Agent Supervision Desk" --authority "Office of Agent Supervision" '
{
"authority": "Office of Agent Supervision",
"did": "did:phanes:overseer:agent-supervision",
"name": "Agent Supervision Desk",
"public_key": "MQ91bc5KQUeuSccCO40vdIbCnSo7RwJzZXsWFyRnB4g",
"registered_at": 1789452380264,
"revoked_at": null,
"scope": [
"agents",
"alerts",
"events",
"reports"
]
}
70

cli-oversight

exit 01.669 s2026-09-15 06:06:20 UTC
$ bash -c 'set -e echo '"'"'# the roster: names, controllers, models, standing, risk and money, signed and addressed to the overseer'"'"' /usr/local/bin/python3 -m aeos.cli oversight-agents --server http://127.0.0.1:42643 --key /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/overseer.key --purpose "walkthrough: periodic review" --limit 4 | head -70 echo; echo '"'"'# one dossier, with the purpose recorded'"'"' /usr/local/bin/python3 -m aeos.cli oversight-agent --server http://127.0.0.1:42643 --key /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/overseer.key A7BFQTESV --purpose "walkthrough: case 2026-09-15-01" | head -60 echo; echo '"'"'# the oversight log: who read what, and why'"'"' /usr/local/bin/python3 -m aeos.cli oversight-log --server http://127.0.0.1:42643 --key /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/overseer.key --limit 4'
# the roster: names, controllers, models, standing, risk and money, signed and addressed to the overseer
{
"report": {
"active_window_ms": 900000,
"filters": {},
"generated_at": 1789452380800,
"returned": 4,
"roster": [
{
"activity": {
"active": true,
"adverse": 3,
"by_type": {
"contract.created": 2,
"contract.signed": 2,
"dispute.filed": 1,
"risk.blocked": 2,
"tool.invoked": 4
},
"events": 11,
"first_seen": 1789452336460,
"jurisdictions": [
"USA"
],
Show the remaining 134 lines
"last_seen": 1789452378329,
"unregistered_venues": [
"did:phanes:venue:runtime",
"did:phanes:venue:walkthrough"
],
"venues": 3
},
"admission": {
"at": 1789452331891,
"decided_by": "policy",
"policy_mode": "open",
"reasons": [
"open admission",
"controller self-declared",
"the controller is not attested by a trusted attester"
],
"status": "admitted"
},
"agent_type": "AUTONOMOUS",
"authority_bounds": {
"max_transaction_value": 2500000
},
"capabilities": [
"dispute",
"sign_contract",
"transact"
],
"certification": {
"level": 0,
"tier": "REGISTERED"
},
"controller": {
"address": null,
"attested": false,
"contact": null,
"country": "USA",
"did": "did:phanes:org:phanes-labs",
"industry": null,
"jurisdiction": "USA",
"legal_name": "Phanes Labs",
"registration_number": null,
"website": null
},
"device": null,
"document_type": "IA",
"expires_at": 1820988331892,
"hardware_bound": false,
# one dossier, with the purpose recorded
{
"report": {
"activity": {
"active": true,
"adverse": 3,
"by_type": {
"contract.created": 2,
"contract.signed": 2,
"dispute.filed": 1,
"risk.blocked": 2,
"tool.invoked": 4
},
"events": [
{
"actor_did": "did:phanes:agent:Su7mUvo9frLvnCXpDMTzNxSCXpkEEddQ",
"event_hash": "972a5cdcdbf81304205d4342ce888d026df8cedb777d34af2a0c671402a5be60",
"how": {
"method": "bash",
"model_id": "claude-fable-5-1"
},
"outcome": "ok",
"sequence": 0,
"timestamp": 1789452336460,
"type": "tool.invoked",
"what": {
"bytes": 65631,
"exit_code": 0,
"path": "aeos/phanes_id.py",
"sha256": "2fb3e4685500c58e26abfb3532ea79d3efca967e1268793a9a0ca6d6c7898f04",
"tool": "sha256sum"
},
"where": {
"host": "vm",
"jurisdiction": "USA",
"venue_did": "did:phanes:venue:walkthrough"
},
"why": {},
"witness_did": null
},
{
"actor_did": "did:phanes:agent:Su7mUvo9frLvnCXpDMTzNxSCXpkEEddQ",
"event_hash": "316f4e6b53d7d94214d3bbe15d595225007a1141c93cb3bcf195dd1792acbd2c",
"how": {
"method": "bash",
"model_id": "claude-fable-5-1"
},
"outcome": "ok",
"sequence": 1,
"timestamp": 1789452337127,
"type": "tool.invoked",
"what": {
"bytes": 21566,
"exit_code": 0,
"path": "aeos/mark.py",
"sha256": "b3dd8f6dbe794261f8b10cf0a3fe0833b8c9aa872c0fdd7fe397e71f9386e1cb",
"tool": "sha256sum"
},
"where": {
"host": "vm",
"jurisdiction": "USA",
# the oversight log: who read what, and why
{
"entries": [
{
"access_id": "6V58jKJ4JI1g",
"at": 1789452380799,
"authority": "Office of Agent Supervision",
"id_number": null,
"kind": "roster",
"overseer_did": "did:phanes:overseer:agent-supervision",
"purpose": "walkthrough: periodic review"
},
{
"access_id": "A3sYaQlT5cgz",
"at": 1789452381331,
"authority": "Office of Agent Supervision",
"id_number": "A7BFQTESV",
"kind": "dossier",
"overseer_did": "did:phanes:overseer:agent-supervision",
"purpose": "walkthrough: case 2026-09-15-01"
}
],
"overseer": "did:phanes:overseer:agent-supervision"
}
71

cli-publish

exit 02.572 s2026-09-15 06:06:22 UTC
$ bash -c 'set -e echo '"'"'# every public document the registry serves, written as signed files with a signed manifest: a static site serves these, no server behind it'"'"' /usr/local/bin/python3 -m aeos.cli publish --out /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/publication --site https://phanes.app echo; (cd /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/publication && find . -type f | sed '"'"'s|^./||'"'"' | sort | head -36); echo "…"; echo "files: $(find /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/publication -type f | wc -l)" '
# every public document the registry serves, written as signed files with a signed manifest: a static site serves these, no server behind it
{
"anchors": 12,
"authority": "did:phanes:authority:JiGheM3sejAYptRS1dpkUNkx6fBRJo2phw1lyK25jqQ",
"files": 63,
"generated_at": 1789452382246,
"ids": [
"4CAP5XYBO",
"A7BFQTESV",
"LKJ1RG21I",
"SWUKBOSJK"
],
"manifest_sha256": "4439cb77a01588f9b2e9475ea071a6dbc8ee95a6edf3f002af8638d22d85dbe2",
"notes": [],
"out": "/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/publication",
"registry": "https://phanes.app/registry",
"site": "https://phanes.app"
}
.well-known/http-message-signatures-directory
.well-known/phanes/anchors.json
manifest.json
v/4CAP5XYBO
v/A7BFQTESV
Show the remaining 33 lines
v/LKJ1RG21I
v/SWUKBOSJK
v1/agents/4CAP5XYBO/inspect.json
v1/agents/A7BFQTESV/inspect.json
v1/agents/LKJ1RG21I/inspect.json
v1/agents/SWUKBOSJK/inspect.json
v1/anchors/anc_0b4e0bb0ce798675885e.json
v1/anchors/anc_0f9a0aeba26f848e7a8b.json
v1/anchors/anc_1c3198ef025a9aaa82e3.json
v1/anchors/anc_4063a0944c99b14dd5af.json
v1/anchors/anc_41e3be2e18798105ee6c.json
v1/anchors/anc_57cdc2da6e172d00dbda.json
v1/anchors/anc_5f973e5269e249c10c73.json
v1/anchors/anc_8f36a91a3844aa864ee5.json
v1/anchors/anc_8ff51a3b8f05c0909a73.json
v1/anchors/anc_9eda1ea89cb5943bf896.json
v1/anchors/anc_a2f162bbf950108120cd.json
v1/anchors/anc_ae11a0c87ce42d7ebcef.json
v1/ids/4CAP5XYBO/activity/transcript.json
v1/ids/4CAP5XYBO/did.json
v1/ids/4CAP5XYBO/id.png
v1/ids/4CAP5XYBO/index.json
v1/ids/4CAP5XYBO/mark.bin
v1/ids/4CAP5XYBO/mark.json
v1/ids/4CAP5XYBO/token.bin
v1/ids/4CAP5XYBO/token.json
v1/ids/A7BFQTESV/activity/transcript.json
v1/ids/A7BFQTESV/certification/badge.svg
v1/ids/A7BFQTESV/certification/index.json
v1/ids/A7BFQTESV/did.json
v1/ids/A7BFQTESV/id.png
files: 64
72

cli-publish-verify

exit 00.515 s2026-09-15 06:06:24 UTC
$ bash -c 'set -e echo '"'"'# any copy verifies against the manifest (phanes-publication+jwt)'"'"' /usr/local/bin/python3 -m aeos.cli publish --verify --out /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/publication | /usr/local/bin/python3 -c "import json,sys; d=json.load(sys.stdin); print(json.dumps({k: d.get(k) for k in ('"'"'ok'"'"','"'"'files'"'"','"'"'missing'"'"','"'"'altered'"'"','"'"'unexpected'"'"','"'"'signature'"'"','"'"'witnesses'"'"')}))" echo; echo '"'"'# the witness cosigns the publication manifest too; the verifier counts it'"'"' /usr/local/bin/python3 -m aeos.cli witness-publication --key /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/witness.key --dir /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/publication --state /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/witness.state.json /usr/local/bin/python3 -m aeos.cli publish --verify --out /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/publication | /usr/local/bin/python3 -c "import json,sys; d=json.load(sys.stdin); print('"'"'ok'"'"', d['"'"'ok'"'"'], '"'"'| witnesses'"'"', json.dumps(d['"'"'witnesses'"'"']))" echo; echo '"'"'# one byte appended to one file and the copy no longer verifies'"'"' cp /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/publication/v1/agents/A7BFQTESV/inspect.json /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/inspect.orig.json; printf '"'"' '"'"' >> /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/publication/v1/agents/A7BFQTESV/inspect.json /usr/local/bin/python3 -m aeos.cli publish --verify --out /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/publication | /usr/local/bin/python3 -c "import json,sys; d=json.load(sys.stdin); print('"'"'ok'"'"', d['"'"'ok'"'"'], '"'"'| altered'"'"', d['"'"'altered'"'"'])" cp /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/inspect.orig.json /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/publication/v1/agents/A7BFQTESV/inspect.json'
# any copy verifies against the manifest (phanes-publication+jwt)
{"ok": true, "files": 63, "missing": [], "altered": [], "unexpected": [], "signature": {"ok": true, "reason": null}, "witnesses": {"failed": [], "known": ["did:phanes:witness:_2EJ_6izYydY-j68Q45Ohqc4q_hFv1klsTGC1EWR-ak"], "verified": []}}
# the witness cosigns the publication manifest too; the verifier counts it
{
"cosignatures": 1,
"file": "/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/publication/cosignatures.json",
"witness": "did:phanes:witness:_2EJ_6izYydY-j68Q45Ohqc4q_hFv1klsTGC1EWR-ak"
}
ok True | witnesses {"failed": [], "known": ["did:phanes:witness:_2EJ_6izYydY-j68Q45Ohqc4q_hFv1klsTGC1EWR-ak"], "verified": ["did:phanes:witness:_2EJ_6izYydY-j68Q45Ohqc4q_hFv1klsTGC1EWR-ak"]}
# one byte appended to one file and the copy no longer verifies
ok False | altered ['v1/agents/A7BFQTESV/inspect.json']
73

cli-revoke

exit 00.566 s2026-09-15 06:06:25 UTC
$ /usr/local/bin/python3 -m aeos.cli revoke --server http://127.0.0.1:42643 --key /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/agent.key A7BFQTESV --reason 'walkthrough: holder self-revocation'
{
"revocation_certificate": "eyJhbGciOiJFZERTQSIsImtpZCI6IkppR2hlTTNzZWpBWXB0UlMxZHBrVU5reDZmQlJKbzJwaHcxbHlLMjVqcVEiLCJ0eXAiOiJwaGFuZXMtcmV2b2NhdGlvbitqd3QifQ.eyJpYXQiOjE3ODk0NTIzODU1ODEsImlzcyI6ImRpZDpwaGFuZXM6YXV0aG9yaXR5OkppR2hlTTNzZWpBWXB0UlMxZHBrVU5reDZmQlJKbzJwaHcxbHlLMjVqcVEiLCJqdGkiOiJ1cm46cGhhbmVzOnJldm9jYXRpb246eVZZM1VfZHI4MUtYM0sxYSIsInJldm9jYXRpb24iOnsiaWRfanRpIjoidXJuOnBoYW5lczpJRDpxZmpKRFZXLVhValpXSEFMb0phMGR2MzRwYjRKWnFFazFzNW1zNWZ2Yk5BIiwiaWRfbnVtYmVyIjoiQTdCRlFURVNWIiwicmVhc29uIjoid2Fsa3Rocm91Z2g6IGhvbGRlciBzZWxmLXJldm9jYXRpb24iLCJyZXZva2VkX2F0IjoxNzg5NDUyMzg1NTgxfX0.Zk3tdYCl95LMBcnJWDTlD-oyF0teBDE_3V1wbgq-Xo3aCnfwE-pJxgHqWKVl10_ju5PcgD0eSeps5KaWu8k8BQ",
"revoked": true
}
74

cli-verify-page-after-revocation

exit 00.566 s2026-09-15 06:06:25 UTC
$ /usr/local/bin/python3 -m aeos.cli verify-page --server http://127.0.0.1:42643 A7BFQTESV
{
"certification": "REGISTERED",
"checked_at": 1789452386132,
"document_type": "IA",
"expires_at": 1820988331892,
"hardware_bound": false,
"holder_key_fingerprint": "b2570f57ef60b40500d68297731e4796bee8c707e6e96d51540b162a0157e0f7",
"id_number": "A7BFQTESV",
"insured": true,
"issued_at": 1789452331892,
"issuer": {
"code": "PHN",
"did": "did:phanes:authority:JiGheM3sejAYptRS1dpkUNkx6fBRJo2phw1lyK25jqQ",
"name": "Phanes"
},
"mark": null,
"reason": "cannot issue a mark for a revoked ID",
"revocation_reason": "walkthrough: holder self-revocation",
"revoked": true,
"subject_did": "did:phanes:agent:Su7mUvo9frLvnCXpDMTzNxSCXpkEEddQ",
"superseded_by": null,
"suspended": false,
"valid": false,
"verdict": null
Show the remaining 1 lines
}
75

cli-anchors-refresh-and-verify

exit 01.118 s2026-09-15 06:06:26 UTC
$ bash -c '/usr/local/bin/python3 -m aeos.cli anchors --server http://127.0.0.1:42643 --out /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/anchors2.json && /usr/local/bin/python3 -m aeos.cli verify-mark --file /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/mark.bin --anchors /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/anchors2.json --require-pq; echo exit=$?'
{
"authority": "did:phanes:authority:JiGheM3sejAYptRS1dpkUNkx6fBRJo2phw1lyK25jqQ",
"saved_to": "/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/anchors2.json",
"status_lists": [
"urn:phanes:status:apIxyL4Pzk-ZjWYn",
"urn:phanes:status:2StYRAXveCXKyvGy"
]
}
{
"checks": {
"issuer_matches": true,
"not_before_ok": true,
"not_expired": true,
"not_revoked": false,
"not_suspended": true,
"pq_signature_valid": true,
"recognized": true,
"signature_valid": true,
"status_checked": true
},
"elapsed_ns": 547596,
"engine": "rust-cdylib",
"failure_bits": 32,
"mode": "offline",
Show the remaining 4 lines
"ok": false,
"require_pq": true
}
exit=0
76

cpp-build-and-verify

exit 00.566 s2026-09-15 06:06:27 UTC
$ bash -c 'set -e cd /Users/tofael/phanes/phanes-core g++ -std=c++17 -O2 examples/verify.cpp -Iinclude -Ltarget/release -lphanes_core -o /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/verify /usr/local/bin/python3 - <<'"'"'PY'"'"' import json, sys sys.path.insert(0, "/Users/tofael/phanes") from aeos.canonical import b64url_decode, jwk_to_ed25519 from aeos.phanes_id import BitstringStatusList from aeos.canonical import jws_peek d = json.load(open("/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/anchors.json")) open("/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/pk.bin", "wb").write(jwk_to_ed25519(d["trust_anchors"]["id_authority"]["jwk"])) open("/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/pq.bin", "wb").write(b64url_decode(d["trust_anchors"]["id_authority"]["pq_public_key"])) for list_id, jws in d["status_lists"].items(): sl = jws_peek(jws)[1]["status_list"] open("/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/" + sl["purpose"] + ".bin", "wb").write(BitstringStatusList.decode_encoded_list(sl["encoded_list"])) print("wrote pk.bin (32), pq.bin (2592), revocation.bin, suspension.bin from anchors.json (snapshot taken before the revocation)") PY LD_LIBRARY_PATH=target/release /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/verify /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/mark.bin /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/pk.bin /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/pq.bin /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/revocation.bin /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/suspension.bin; echo "exit=$? (genuine mark)" python3 -c "b=bytearray(open('"'"'/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/mark.bin'"'"','"'"'rb'"'"').read()); b[3000]^=0x40; open('"'"'/Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/mark.tampered.bin'"'"','"'"'wb'"'"').write(bytes(b))" set +e LD_LIBRARY_PATH=target/release /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/verify /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/mark.tampered.bin /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/pk.bin /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/pq.bin /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/revocation.bin /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence/work/suspension.bin; echo "exit=$? (one byte of the ML-DSA-87 signature flipped -> failure bit 256, expected)" exit 0'
wrote pk.bin (32), pq.bin (2592), revocation.bin, suspension.bin from anchors.json (snapshot taken before the revocation)
{"recognize_code":0,"failure_bits":0,"ok":true,"recognize_ns":3990,"verify_ns":509437,"mark_len":4787,"version":"0.6.0","require_pq":true}
exit=0 (genuine mark)
{"recognize_code":0,"failure_bits":256,"ok":false,"recognize_ns":2168,"verify_ns":557756,"mark_len":4787,"version":"0.6.0","require_pq":true}
exit=1 (one byte of the ML-DSA-87 signature flipped -> failure bit 256, expected)

The campaign

2 sessions · 1 min 56 s

77

campaign-112-agents

exit 0115.712 s2026-09-15 06:06:28 UTC
$ /usr/local/bin/python3 -m campaign.run_campaign --agents 100 --robots 12 --workers 4 --skip-suites --out /Users/tofael/phanes/campaign/out
[campaign] run 20260915T060628Z-ace4e6 -> /Users/tofael/phanes/campaign/out/20260915T060628Z-ace4e6
[campaign] registry http://127.0.0.1:34085 (pid 26617); strict registry http://127.0.0.1:46637 (pid 26622)
[campaign] attesters registered; venue process on port 53229
[campaign] phase 1: 112/112 agents complete in 86.3s; adversary 43/43 defended
[campaign] phase 3: 83/83 payers ok; 114 contracts completed, 20 disputed (20 resolved); inspections verified 83/83; anchors 843/843 in 17.7s
[campaign] done: 112/112 agents ok; peers ok 112/112; adversary defended 43/43; claims paid 51; contracts completed 114; disputes 20; inspections verified 83/83; evidence /Users/tofael/phanes/campaign/out/20260915T060628Z-ace4e6
79

campaign-summary

exit 00.165 s2026-09-15 06:08:50 UTC
$ bash -c 'set -e cd /Users/tofael/phanes/campaign/out/20260915T060628Z-ace4e6 /usr/local/bin/python3 - <<'"'"'PY'"'"' import json, collections s = json.load(open("summary.json")) ok = [x for x in s["agents"] if x.get("ok")] print("run", s["run_id"]); print("agents ok", len(ok), "/", len(s["agents"])) print("tiers", dict(collections.Counter(x["tier"] for x in ok))); print("packages", dict(collections.Counter(x.get("package") for x in ok))) print("document types", dict(collections.Counter(x["document_type"] for x in ok)), "hardware-bound", sum(x["hardware_bound"] for x in ok)) print("events", sum(x["events"] for x in ok), "witnessed", sum(x["witnessed"] for x in ok), "presentations ok", sum(x["presentation_ok"] for x in ok)) pc = [p for r in s["peer_verification"] for p in r["peers"]] print("peer checks", len(pc), "offline ok", sum(p["offline_ok"] for p in pc), "online ok", sum(p["online_ok"] for p in pc), "agree", sum(p["agree"] for p in pc), "mark v2", sum(p.get("mark_version")==2 for p in pc), "require_pq", sum(bool(p.get("require_pq")) for p in pc)) print("claims filed", len([x for x in s["agents"] if x.get("claim_id")]), "paid", len(s["claims_paid"]), "paid total minor", sum(p["paid_minor"] for p in s["claims_paid"])) st = s.get("stack", {}); print("stack: payers", st.get("payers_ok"), "/", st.get("payers"), "| contracts", st.get("contracts"), "active", st.get("active_after_signatures"), "completed", st.get("completed"), "released", st.get("released"), "| disputed", st.get("disputed"), "resolved", st.get("resolved"), "refunded minor", st.get("refunded_minor"), "| escrowed minor", st.get("escrowed_minor"), "| risk", st.get("risk_levels")) print(" inspections verified", st.get("inspections_verified"), "/", st.get("inspections"), "| anchors", st.get("anchors_verified"), "/", st.get("anchors_total"), "| ledger proofs", st.get("ledger_entries_verified"), "/", st.get("ledger_entries_total"), "| errors", len(st.get("errors", []))) net = s.get("network_after", {}); print("network after:", {k: net.get(k) for k in ("agents", "contracts", "disputes", "anchors", "credits_supply_minor")}) adv = s["adversary"]; print("adversary defended", adv["defended"], "/", adv["total"]) for x in adv["attacks"]: print(f" {'"'"'ok '"'"' if x['"'"'defended'"'"'] else '"'"'NO '"'"'} {x['"'"'attack'"'"']:<48} expected {str(x['"'"'expected'"'"']):<10} observed {str(x['"'"'observed'"'"'])[:40]}") print("pool", {k: s["pool_after"][k] for k in ("premiums_earned_minor","claims_paid_minor","exposure_minor","solvency_ratio_bps","in_force_policies","journal_valid")}) PY echo; echo "registry access log lines:"; wc -l registry.access.jsonl; echo "status distribution:"; grep -o '"'"'"status": [0-9]*'"'"' registry.access.jsonl | sort | uniq -c echo; echo "first 5 access-log lines:"; head -5 registry.access.jsonl echo; echo "audit trail (from the registry'"'"'s /v1/audit as recorded in summary.json):"; /usr/local/bin/python3 -c "import json; print(json.dumps(json.load(open('"'"'summary.json'"'"'))['"'"'registry_stats'"'"'].get('"'"'audit'"'"'), indent=1))" '
run 20260915T060628Z-ace4e6
agents ok 112 / 112
tiers {'CERTIFIED': 112}
packages {'professional': 100, 'robotics': 12}
document types {'IA': 100, 'IR': 12} hardware-bound 12
events 1810 witnessed 1017 presentations ok 112
peer checks 336 offline ok 336 online ok 336 agree 336 mark v2 336 require_pq 336
claims filed 58 paid 51 paid total minor 2550000
stack: payers 83 / 83 | contracts 134 active 134 completed 114 released 114 | disputed 20 resolved 20 refunded minor 13475726 | escrowed minor 112919953 | risk {'LOW': 30, 'MINIMAL': 104}
inspections verified 83 / 83 | anchors 843 / 843 | ledger proofs 1366 / 1366 | errors 0
network after: {'agents': 113, 'contracts': 134, 'disputes': 20, 'anchors': 649, 'credits_supply_minor': 117069953}
adversary defended 43 / 43
ok replay_signed_request expected HTTP 401 observed HTTP 401
ok stale_timestamp_-10min expected HTTP 401 observed HTTP 401
ok future_timestamp_+10min expected HTTP 401 observed HTTP 401
ok unsigned_holder_route expected HTTP 401 observed HTTP 401
ok wrong_key_read_full_id expected HTTP 403 observed HTTP 403
ok wrong_key_record_event expected HTTP 403 observed HTTP 403
ok wrong_key_quote expected HTTP 403 observed HTTP 403
ok operator_route_wrong_bearer expected HTTP 403 observed HTTP 403
ok operator_route_no_bearer expected HTTP 401 observed HTTP 401
ok signature_over_different_path expected HTTP 401 observed HTTP 401
ok signature_over_different_body expected HTTP 401 observed HTTP 401
ok forged_mark_attacker_signed_offline expected False observed False
Show the remaining 72 lines
ok forged_mark_attacker_signed_online expected False observed False
ok pq_downgrade_v2_to_v1_online expected False observed False
ok pq_downgrade_v2_to_v1_offline expected False observed False
ok pq_signature_forged_random_online expected False observed False
ok pq_signature_forged_random_offline expected False observed False
ok pq_signature_by_attacker_key_online expected False observed False
ok pq_signature_by_attacker_key_offline expected False observed False
ok pq_signature_byte_tampers_113_offline expected 113 observed 113
ok single_bit_tampers_1280_offline expected 1280 observed 1280
ok byte_tampers_11_online expected 11 observed 11
ok garbage_mark_online expected False observed False
ok short_mark_online expected False observed False
ok tampered_event_body_commit expected HTTP 4 observed HTTP 403
ok unregistered_witness expected HTTP 4 observed HTTP 403
ok replay_committed_event expected HTTP 4 observed HTTP 400
ok presentation_nonce_reuse expected False observed False
ok presentation_wrong_audience expected False observed False
ok presentation_swapped_disclosure expected False observed False
ok visa_from_unregistered_venue expected HTTP 403 observed HTTP 403
ok robotics_package_for_software_agent expected HTTP 403 observed HTTP 403
ok physical_cover_without_hardware_attestation expected HTTP 4 observed HTTP 400
ok policy_beyond_pool_capacity_refused expected HTTP 400 observed HTTP 400
ok bind_without_verified_premium_strict_registry expected HTTP 403 observed HTTP 403
ok suspended_mark_online expected False observed False
ok suspended_mark_offline_after_refresh expected False observed False
ok unsuspended_mark_online expected True observed True
ok revoked_mark_online expected False observed False
ok revoked_mark_offline_after_refresh expected False observed False
ok new_mark_for_revoked_id expected HTTP 4 observed HTTP 400
ok unknown_id_number expected HTTP 404 observed HTTP 404
ok path_traversal_number expected HTTP 4 observed HTTP 404
pool {'premiums_earned_minor': 520382928, 'claims_paid_minor': 2550000, 'exposure_minor': 20400000000, 'solvency_ratio_bps': 1479, 'in_force_policies': 112, 'journal_valid': True}
registry access log lines:
9586 registry.access.jsonl
status distribution:
6669 "status": 200
2887 "status": 201
5 "status": 400
7 "status": 401
8 "status": 403
2 "status": 404
first 5 access-log lines:
{"level": "INFO", "logger": "uvicorn.error", "message": "Started server process [26617]", "ts": "2026-09-15T06:06:29.095Z"}
{"level": "INFO", "logger": "uvicorn.error", "message": "Waiting for application startup.", "ts": "2026-09-15T06:06:29.095Z"}
{"level": "INFO", "logger": "uvicorn.error", "message": "Application startup complete.", "ts": "2026-09-15T06:06:29.096Z"}
{"level": "INFO", "logger": "uvicorn.error", "message": "Uvicorn running on http://127.0.0.1:34085 (Press CTRL+C to quit)", "ts": "2026-09-15T06:06:29.096Z"}
{"client": "127.0.0.1:42614", "http": "1.1", "level": "INFO", "logger": "uvicorn.access", "method": "GET", "path": "/v1/stats", "status": 200, "ts": "2026-09-15T06:06:29.339Z"}
audit trail (from the registry's /v1/audit as recorded in summary.json):
{
"log_id": "urn:phanes:audit:2d9vxPnIo9hcGaoE",
"entries": 9575,
"tree_size": 9575,
"root_hash": "uiLvN8WVs7gVOKjm9222N27JgHN_OpQWzm7T2eUhy3Y",
"signed_tree_heads": 0,
"by_status": {
"200": 6666,
"201": 2887,
"401": 7,
"403": 8,
"400": 5,
"404": 2
},
"by_caller_kind": {
"anonymous": 3068,
"operator": 219,
"signed": 6288
},
"chain_valid": true
}

Benchmark

1 session · 26.8 s

78

phanes-bench

exit 026.804 s2026-09-15 06:08:23 UTC
$ /usr/local/bin/python3 -m aeos.cli bench
{
"cpu": "Intel(R) Xeon(R) Processor @ 2.10GHz",
"engine": "phanes-core 0.6.0",
"iterations": {
"recognize": 20000000,
"recognize_v2": 20000000,
"sign_mldsa87": 200,
"verify_anchor": 5000,
"verify_jws": 20000,
"verify_mark": 20000,
"verify_mark_v2_hybrid": 2000,
"verify_mldsa87": 2000
},
"mark_v2_len": 4787,
"note": "recognition is structural (no crypto); verification includes one strict Ed25519 check and two status-bitmap lookups",
"recognize_junk_ns": {
"median": 0.67327275,
"min": 0.64433665
},
"recognize_v2_hybrid_ns": {
"median": 6.98916885,
"min": 6.90683355
},
"recognize_valid_ns": {
Show the remaining 29 lines
"median": 7.1786829,
"min": 6.97153495
},
"rounds": 5,
"sign_mldsa87_us": {
"median": 879.04671,
"min": 863.22676
},
"verify_anchor_4_replicas_us": {
"median": 246.87061319999998,
"min": 243.14354759999998
},
"verify_jws_2400B_us": {
"median": 64.14169079999999,
"min": 63.1071073
},
"verify_mark_ed25519_us": {
"median": 58.266398699999996,
"min": 55.867427049999996
},
"verify_mark_v2_hybrid_us": {
"median": 326.749503,
"min": 323.6169915
},
"verify_mldsa87_us": {
"median": 264.8439555,
"min": 261.67677549999996
}
}

Manifest

1 session · 0 s

80

sha256-manifest

exit 00.032 s2026-09-15 06:08:50 UTC
$ bash -c 'cd /Users/tofael/phanes/campaign/out/20260915T060329Z-evidence && find terminal work -type f ! -name '"'"'*.png'"'"' ! -name '"'"'*.html'"'"' ! -path '"'"'work/publication/*'"'"' | sort | xargs sha256sum | head -80; echo; find terminal -name '"'"'shot-*.png'"'"' | wc -l; du -sh .'
d5ffd21c9a056ccbc2d1d55d2b5bb2fed686aa9bb4839b4c389eaefe6155cc23 terminal/01-environment/command.txt
871c02e1a90958ada6faec6bf629f2d501e45a7a09f99f6d995d4fa1ddee0090 terminal/01-environment/meta.json
8ba331f4c5a25f5fad202dec7c8e1466b6ae5456707fad356b4d9a30a9549c3b terminal/01-environment/timing.log
c6cc104e06e945f37ffc2b0eaaefd2986721298816ce351dbe1f45387625de89 terminal/01-environment/typescript.log
bbae8b444324cf7bdb014def15f15be10a9468d4ca4718fdbafa579cbf9f6da8 terminal/02-cargo-build/command.txt
a831cd8d7a9f80aa6ab1607ec58d00f1a525ac68513e112cbd9ec9a537d17aa1 terminal/02-cargo-build/meta.json
f6e92f283ed3ce36c10d02b622e5f64069d67a934c5816cd0674cc116dc609c3 terminal/02-cargo-build/timing.log
d796f710da013d3c4e928e4374cfaba5e713670a59bfa09a1bf7f4c15ea514b6 terminal/02-cargo-build/typescript.log
8fc574c055efecd0e34066135b79969e6c5a9911a6d5e0e8a824befb5b51abe6 terminal/03-cargo-test/command.txt
f5b57f5b79505c7db978ee278c4e01ab30ea3421c8608b75e8f13a922ba509ec terminal/03-cargo-test/meta.json
9c5d794ff3a242187a51a1d98b44eedf8dda93ff7be8ae178389d30735c7db69 terminal/03-cargo-test/timing.log
2075d6c0380ec944f15630c65e9b8dba641908d1299528a5a81ff70a397c098c terminal/03-cargo-test/typescript.log
334347a948d006f0d962b50c6635a6e77c465e4b588d9cc2a06db2b109f5720f terminal/04-pytest-id-stack/command.txt
7e51d019df12c327fba76afb75fa8194c56a8fc40780177c8c148a0adb3c0ed8 terminal/04-pytest-id-stack/meta.json
7819b60588747f035bab9ce7aacbfe8172124f6a2c8601eab536d7ad07a053c4 terminal/04-pytest-id-stack/timing.log
c49549bb592d712aa076c090ec7c288c65cb00b33dbdf41e263f16f448e73eaa terminal/04-pytest-id-stack/typescript.log
1c415e35fce30ea44ef1a3c8f48a7f84a5a8de641c91d26805c8330a918e7bca terminal/05-pytest-agent-stack/command.txt
28676593bde3bc231ec4aeb367db800fd242048ba65464cb914ef62489e25920 terminal/05-pytest-agent-stack/meta.json
4c43b1d15714723bfa1be7bafe1c9111120e01a1415dd8ff19330891059c7094 terminal/05-pytest-agent-stack/timing.log
162131459245399a4c8168db2014dbea5d30e50ba10733e1ff26ab368bd87867 terminal/05-pytest-agent-stack/typescript.log
5169b817cd8864041ea3b5bf13c9d08f77c2398555ca6323843387feb992b54f terminal/06-pytest-mark-render/command.txt
c14eedf854997cfbdd1c59bb36f115f663117194e4e7a8b3dcd2c6076650873d terminal/06-pytest-mark-render/meta.json
a0e37d0062b7908339d90adbd2e945094be433e7c55171a9f135b221b08d7b17 terminal/06-pytest-mark-render/timing.log
77119a0e05c911f33947a1b20cb486910125eed3de65b4084c30458e300d99a8 terminal/06-pytest-mark-render/typescript.log
Show the remaining 60 lines
cd7e914c4b15aaf4262e1b8754d63373ac05b0e8296ce696e72e14636e61936b terminal/07-pytest-client-live/command.txt
3e4680d6f10392a23e3c7cfdf255e6a72f744fd89cb10f51a1d81876899b814e terminal/07-pytest-client-live/meta.json
f98532e5dd38623989a47fed95cf534d68ff74004288e416876cf9b373632b80 terminal/07-pytest-client-live/timing.log
ba1fa3072395bd8bb9314699bbc98dd45656720581711305babdac00a8001b19 terminal/07-pytest-client-live/typescript.log
5e3e849939d0f4daa8d9894cd0fc2a3dfc01697dff14d6171169f672b95536d3 terminal/08-pytest-web-verifier/command.txt
7f9d4e23de57871604b9c3db6874a820895c873052e8593b1bfa74ff78b7ced4 terminal/08-pytest-web-verifier/meta.json
db40b7d575aae206fabf8b099c9e7ea75e496f6d8b7facb1cb0edaf6b599586c terminal/08-pytest-web-verifier/timing.log
1c9f8286dbfe24b2ad6bbdac3c172d534731e0d61057869c92cf1a0ba27c97f9 terminal/08-pytest-web-verifier/typescript.log
cb894a1000b1a5191b334b5e27bb8d35ee632174844409b9ef20ef5bda0222e3 terminal/09-legacy-test-all/command.txt
f1afd4b0789c7392805a7587af235fadec9af698b583ad2303f7322b2e596ac0 terminal/09-legacy-test-all/meta.json
77b2071eadca8223529de8a225f37c4060b73f201326e634f2d776fac78f501a terminal/09-legacy-test-all/timing.log
7104a44098be9034723f0308d93b3288df74f079ea369fd5e01081ca254df51d terminal/09-legacy-test-all/typescript.log
04317134481d77dfdebd5c0a7f4c02768a577708b53a1beeda91cd20ea33069d terminal/10-pytest-admission-payments-witnesses/command.txt
0b0efede51b4e0bc23507cf36c2af513e206f3f702b060d4c683d9a0da544ef1 terminal/10-pytest-admission-payments-witnesses/meta.json
e1f0bb9cbe0967d1e27b051a4832554f68a87211935b8ac5a751dd671d407b35 terminal/10-pytest-admission-payments-witnesses/timing.log
f95e2e005053c61e8d55f5f267207daea665f7a3546d43127d62c73feb107310 terminal/10-pytest-admission-payments-witnesses/typescript.log
f135f9fa4f38fd0c92563221116e2f79df0838f5ff86440ae44d4b428576fc62 terminal/11-sdk-tests/command.txt
5cb64a645890bc8252dc68c46e619c45b2489cbc43468e6b6950f583b933a7c3 terminal/11-sdk-tests/meta.json
d17b2474d99d6ee5d28a5c9d1a0ad8ffcb4f9a1fd847b7b95a7ac5d4c7156dab terminal/11-sdk-tests/timing.log
9aec6cf2c0d73f23a476a8c08ca1c236bb6f65b24999d030d002efc2841c356a terminal/11-sdk-tests/typescript.log
d2bfbaac1ca390ae9a177caecaff277cc0da3af48364bbd10081dc2e4ea8f0fd terminal/12-cli-doctor/command.txt
f70ace8bb0566e2a73406a4112535fbe5e07b98d5f0f47266d9d41fd409f905b terminal/12-cli-doctor/meta.json
4f28ad0d52de6c5cd1f9decef9876dc39e47a357f2995326127aa0f56f587229 terminal/12-cli-doctor/timing.log
672020cec58c58dc1dac50898b78473aa59df1df4eca429d2077b7777fe746da terminal/12-cli-doctor/typescript.log
4e4ddfdc11ae4ac6f786b5494c6cf5b0298a5fd502dec55df0ddd92eff357bec terminal/13-cli-keygen/command.txt
d108803444d1ab68e026e85727086579d2e6071f5918ca0a8d5321ebd433fbb6 terminal/13-cli-keygen/meta.json
ac4a1747faa8d7509e3b300a3195f38a734da3d2c7d1d2c307ebf92ff22bc07f terminal/13-cli-keygen/timing.log
ce37302b9e151ee83f43148d82ec4e227f699d12d8321fea3ec157fde0736df3 terminal/13-cli-keygen/typescript.log
16a98e3cf57928e82a6cfaed8aae05fb1191632f95d56c3e679b219f0aa10a8f terminal/14-cli-apply/command.txt
343df5a618dea146105029932fb3fd4583bf56c888807d1a7f94461f7b7f179c terminal/14-cli-apply/meta.json
70f60b83b98fe26ef01d7e666d25a796f3d3c9acc82ea35473aa3588000491bb terminal/14-cli-apply/timing.log
c466080e1bd56d05057b18bd867983544b2d115d054bbb23a79bcc647ad08526 terminal/14-cli-apply/typescript.log
44c1f38388291215384d1e248140089814b65d975597cf1cb566628d4e2bbcb9 terminal/15-cli-id-public/command.txt
b1d70d8766bc2f22de516ffa6e935d55b2e1842e20fcb7a95f53c24fe3f42e04 terminal/15-cli-id-public/meta.json
d1a255832807095f9f00aaf35175963b63b1b071f42537d391ebab5dad647f10 terminal/15-cli-id-public/timing.log
2c24cc4d49078a06b55aaf0e2dc5f55c9f3f82e7e0a8860d2ddcf9e4f6456d7e terminal/15-cli-id-public/typescript.log
9b96c5a612d1c4779c51601860ba8f77ad9ac1071adef2283cd6c11af100b30b terminal/16-cli-mark/command.txt
975a0c2246791218b44bc59a0c0929636dfcef017ebeb15014c64bcf766ddf0c terminal/16-cli-mark/meta.json
d00709aa8fde064434485dd4bdd22b4dc0b0b38f72f72ddcdd75cbea8af8bc1c terminal/16-cli-mark/timing.log
a5afc814bb44d9b95a52d8e41380b2f68da133a4a08975222c169cbdece2e49b terminal/16-cli-mark/typescript.log
b2977b7638d1c7f379f9631cfd2d461d20fae1877c6f275284b5f50866b47f4b terminal/17-cli-token/command.txt
940f06200720000c6b201e4b3b04ffc13c189f2a9b75a0801e15cecb7bc0749c terminal/17-cli-token/meta.json
3373e47534ee97749bbb9a215f87be0bbacf441449da43e6b4e381e2a5061a25 terminal/17-cli-token/timing.log
a7055c1fd3fa2d827b6da5e1402079636b0eae939a30dfc04bc06ed5110a7c02 terminal/17-cli-token/typescript.log
67423671806af78166573d87c902738542a7869789da7e7960a0806c8c59c458 terminal/18-cli-recognize/command.txt
171aeeafdcb8d1c7bf1360084a002160d7a127b9d568713de935b8478e474225 terminal/18-cli-recognize/meta.json
4993ba8dc4feee394d1c49b45339479bae65731664e7d9cfe2f93521f9f235fd terminal/18-cli-recognize/timing.log
10aa4638cc197cad0f4fd55a8cc7aa89a6ae009c50e7ef8b14b288fcc4ef7103 terminal/18-cli-recognize/typescript.log
455939d1933fe195890275bf2b93e70fe7fc5fe765869a531ddb1b568ecf15bf terminal/19-cli-anchors/command.txt
f6bdd790863615313ca0ca1018f69b8ca8f86c077160fb19ad25082f9d12fe25 terminal/19-cli-anchors/meta.json
c93e59de1b2fca49a136e93a353fcf454734159e829d9f6f7458a6c395dc8344 terminal/19-cli-anchors/timing.log
2fe41cf9989890c9a0bbf9434b10716d13034aed2a97409e693ef7f1cdabdc9a terminal/19-cli-anchors/typescript.log
d851fc47bb8f75bfa7a3ae957a134c9643c9054fd94dffba7926de4f87c22736 terminal/20-cli-verify-mark-offline/command.txt
8b64d00af717c63e06b43f651cad2a15ca12b3744e49839c13792812d6ccc361 terminal/20-cli-verify-mark-offline/meta.json
40a30019660ac35faae12c455f8e05441505fdd06babfffd4f6acbc64f8d6b2c terminal/20-cli-verify-mark-offline/timing.log
518235d4dc12ed3ef4540cee95642b2faad72ec615e78bbeecc73984c9d5244e terminal/20-cli-verify-mark-offline/typescript.log
xargs: sha256sum: terminated by signal 13
0
11M .

The documents

683 files, 78.7 MB, each with its SHA-256.

The run directory carries every session, the campaign's files, the walkthrough's publication and two documents built only from those files. The manifest lists every one with its digest.

FileWhat it isBytesSHA-256
evidence-report.pdfThe recorded evidence report27,279,814dd1175516dc48067c870d8a5a92faad97a4da04045574a5adc2b6c945fd9e851
how-it-works.pdfHow it works, with the recorded sessions8,024,469374cb3c1d23d9dd2d4828f5020bd41f394a9aa2b671ef7a2db01279bab46686f
evidence.jsonEvery session's metadata153,3066155a6952cc66369946703cd10f9a18ccdcc2bc6e1b8deb2d4d0f2928f25616a
campaign/summary.jsonThe campaign's summary476,604495dd1518ac96697e5eddc7f68f8415a99c2501fc852d070bddb3af4b9aa929c
campaign/registry.access.jsonlThe campaign registry's access log1,929,13356fecc9ada0cbde066bd3558c578e7b543bc2bcacfa0b92767251a8c050fe14e
walkthrough.registry.access.jsonlThe walkthrough registry's access log28,084592a4fefc9e0b570aaf296ff3e05e5f527489ff68de05fd3b43b60f9278e4a58