arcaeon-receipt 0.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (199) hide show
  1. arcaeon_receipt-0.2.0/.gitignore +13 -0
  2. arcaeon_receipt-0.2.0/CHANGELOG.md +1041 -0
  3. arcaeon_receipt-0.2.0/FORMAT_CHANGE_PROPOSAL.md +83 -0
  4. arcaeon_receipt-0.2.0/LICENSE +21 -0
  5. arcaeon_receipt-0.2.0/PKG-INFO +240 -0
  6. arcaeon_receipt-0.2.0/README.md +218 -0
  7. arcaeon_receipt-0.2.0/ZAPIER_ACTION_SPEC.md +152 -0
  8. arcaeon_receipt-0.2.0/arcaeon_receipt/__init__.py +41 -0
  9. arcaeon_receipt-0.2.0/arcaeon_receipt/approval.py +185 -0
  10. arcaeon_receipt-0.2.0/arcaeon_receipt/approval_mcp.py +457 -0
  11. arcaeon_receipt-0.2.0/arcaeon_receipt/archive.py +492 -0
  12. arcaeon_receipt-0.2.0/arcaeon_receipt/authorship.py +152 -0
  13. arcaeon_receipt-0.2.0/arcaeon_receipt/authorship_ingest.py +156 -0
  14. arcaeon_receipt-0.2.0/arcaeon_receipt/authorship_mcp.py +338 -0
  15. arcaeon_receipt-0.2.0/arcaeon_receipt/ballot.py +472 -0
  16. arcaeon_receipt-0.2.0/arcaeon_receipt/call.py +197 -0
  17. arcaeon_receipt-0.2.0/arcaeon_receipt/call_mcp.py +240 -0
  18. arcaeon_receipt-0.2.0/arcaeon_receipt/call_proxy.py +838 -0
  19. arcaeon_receipt-0.2.0/arcaeon_receipt/cite.py +229 -0
  20. arcaeon_receipt-0.2.0/arcaeon_receipt/cite_batch.py +257 -0
  21. arcaeon_receipt-0.2.0/arcaeon_receipt/cite_extract.py +74 -0
  22. arcaeon_receipt-0.2.0/arcaeon_receipt/cite_mcp.py +228 -0
  23. arcaeon_receipt-0.2.0/arcaeon_receipt/cli.py +309 -0
  24. arcaeon_receipt-0.2.0/arcaeon_receipt/core.py +713 -0
  25. arcaeon_receipt-0.2.0/arcaeon_receipt/roster_report.py +344 -0
  26. arcaeon_receipt-0.2.0/arcaeon_receipt/verify_batch.py +335 -0
  27. arcaeon_receipt-0.2.0/docs/VENDOR_PACKAGE_SPEC.md +455 -0
  28. arcaeon_receipt-0.2.0/docs/ballot-receipt-page.md +139 -0
  29. arcaeon_receipt-0.2.0/docs/ballot-wiring-note.md +151 -0
  30. arcaeon_receipt-0.2.0/docs/citation-receipt-page.md +212 -0
  31. arcaeon_receipt-0.2.0/docs/cli-exit-codes.md +34 -0
  32. arcaeon_receipt-0.2.0/examples/.gitattributes +7 -0
  33. arcaeon_receipt-0.2.0/examples/ballots/01_oral_board_pass_clean.anchored.exhibit.txt +26 -0
  34. arcaeon_receipt-0.2.0/examples/ballots/01_oral_board_pass_clean.anchored.ledger.jsonl +3 -0
  35. arcaeon_receipt-0.2.0/examples/ballots/01_oral_board_pass_clean.anchored.ledger.jsonl.witness.jsonl +3 -0
  36. arcaeon_receipt-0.2.0/examples/ballots/01_oral_board_pass_clean.anchored.receipt.json +305 -0
  37. arcaeon_receipt-0.2.0/examples/ballots/01_oral_board_pass_clean.exhibit.txt +26 -0
  38. arcaeon_receipt-0.2.0/examples/ballots/01_oral_board_pass_clean.receipt.json +301 -0
  39. arcaeon_receipt-0.2.0/examples/ballots/02_oral_board_fail_partial.exhibit.txt +26 -0
  40. arcaeon_receipt-0.2.0/examples/ballots/02_oral_board_fail_partial.receipt.json +285 -0
  41. arcaeon_receipt-0.2.0/examples/ballots/03_oral_board_reattempt.exhibit.txt +26 -0
  42. arcaeon_receipt-0.2.0/examples/ballots/03_oral_board_reattempt.receipt.json +283 -0
  43. arcaeon_receipt-0.2.0/examples/ballots/04_call_taking_strong.exhibit.txt +26 -0
  44. arcaeon_receipt-0.2.0/examples/ballots/04_call_taking_strong.receipt.json +124 -0
  45. arcaeon_receipt-0.2.0/examples/ballots/05_call_taking_weak.exhibit.txt +26 -0
  46. arcaeon_receipt-0.2.0/examples/ballots/05_call_taking_weak.receipt.json +128 -0
  47. arcaeon_receipt-0.2.0/examples/ballots/06_call_taking_unicode.exhibit.txt +26 -0
  48. arcaeon_receipt-0.2.0/examples/ballots/06_call_taking_unicode.receipt.json +129 -0
  49. arcaeon_receipt-0.2.0/examples/ballots/07_seq_strong.exhibit.txt +26 -0
  50. arcaeon_receipt-0.2.0/examples/ballots/07_seq_strong.receipt.json +137 -0
  51. arcaeon_receipt-0.2.0/examples/ballots/08_seq_retrain_fatal.exhibit.txt +26 -0
  52. arcaeon_receipt-0.2.0/examples/ballots/08_seq_retrain_fatal.receipt.json +143 -0
  53. arcaeon_receipt-0.2.0/examples/ballots/09_seq_needs_work_partial.exhibit.txt +26 -0
  54. arcaeon_receipt-0.2.0/examples/ballots/09_seq_needs_work_partial.receipt.json +151 -0
  55. arcaeon_receipt-0.2.0/examples/ballots/10_oral_board_variedmodel.exhibit.txt +26 -0
  56. arcaeon_receipt-0.2.0/examples/ballots/10_oral_board_variedmodel.receipt.json +301 -0
  57. arcaeon_receipt-0.2.0/examples/ballots/11_branded_academy_cohort.exhibit.txt +29 -0
  58. arcaeon_receipt-0.2.0/examples/ballots/11_branded_academy_cohort.receipt.json +189 -0
  59. arcaeon_receipt-0.2.0/examples/ballots/README.md +204 -0
  60. arcaeon_receipt-0.2.0/examples/ballots/WHAT_THESE_DO_NOT_SHOW.md +221 -0
  61. arcaeon_receipt-0.2.0/examples/ballots/inputs/01_oral_board_pass_clean.json +116 -0
  62. arcaeon_receipt-0.2.0/examples/ballots/inputs/02_oral_board_fail_partial.json +102 -0
  63. arcaeon_receipt-0.2.0/examples/ballots/inputs/03_oral_board_reattempt.json +108 -0
  64. arcaeon_receipt-0.2.0/examples/ballots/inputs/04_call_taking_strong.json +30 -0
  65. arcaeon_receipt-0.2.0/examples/ballots/inputs/05_call_taking_weak.json +32 -0
  66. arcaeon_receipt-0.2.0/examples/ballots/inputs/06_call_taking_unicode.json +34 -0
  67. arcaeon_receipt-0.2.0/examples/ballots/inputs/07_seq_strong.json +72 -0
  68. arcaeon_receipt-0.2.0/examples/ballots/inputs/08_seq_retrain_fatal.json +79 -0
  69. arcaeon_receipt-0.2.0/examples/ballots/inputs/09_seq_needs_work_partial.json +87 -0
  70. arcaeon_receipt-0.2.0/examples/ballots/inputs/10_oral_board_variedmodel.json +114 -0
  71. arcaeon_receipt-0.2.0/examples/ballots/inputs/11_branded_academy_cohort.json +63 -0
  72. arcaeon_receipt-0.2.0/examples/ballots/ledger.jsonl +15 -0
  73. arcaeon_receipt-0.2.0/examples/ballots/ledger.jsonl.witness.jsonl +15 -0
  74. arcaeon_receipt-0.2.0/examples/ballots/roster_example.csv +11 -0
  75. arcaeon_receipt-0.2.0/examples/ballots/roster_report_example.csv +27 -0
  76. arcaeon_receipt-0.2.0/examples/class_archive_example.zip +0 -0
  77. arcaeon_receipt-0.2.0/pyproject.toml +49 -0
  78. arcaeon_receipt-0.2.0/tests/fixtures/brief.txt +88 -0
  79. arcaeon_receipt-0.2.0/tests/fixtures/courtlistener_planted.json +10 -0
  80. arcaeon_receipt-0.2.0/tests/fixtures/courtlistener_planted_full.json +18 -0
  81. arcaeon_receipt-0.2.0/tests/fixtures/universal/.gitattributes +4 -0
  82. arcaeon_receipt-0.2.0/tests/fixtures/universal/README.md +145 -0
  83. arcaeon_receipt-0.2.0/tests/fixtures/universal/ar_duplicate_key.json +85 -0
  84. arcaeon_receipt-0.2.0/tests/fixtures/universal/ar_missing_required.json +83 -0
  85. arcaeon_receipt-0.2.0/tests/fixtures/universal/ar_missing_required_nullable.json +83 -0
  86. arcaeon_receipt-0.2.0/tests/fixtures/universal/ar_spec_example_verbatim.json +84 -0
  87. arcaeon_receipt-0.2.0/tests/fixtures/universal/ar_tampered_payload.json +84 -0
  88. arcaeon_receipt-0.2.0/tests/fixtures/universal/ar_tampered_signature.json +84 -0
  89. arcaeon_receipt-0.2.0/tests/fixtures/universal/ar_tampered_signature_padding_bits.json +84 -0
  90. arcaeon_receipt-0.2.0/tests/fixtures/universal/ar_truncated.json +53 -0
  91. arcaeon_receipt-0.2.0/tests/fixtures/universal/ar_valid_didkey.json +84 -0
  92. arcaeon_receipt-0.2.0/tests/fixtures/universal/ar_wrong_key_named.json +84 -0
  93. arcaeon_receipt-0.2.0/tests/fixtures/universal/arc_duplicate_key.json +1 -0
  94. arcaeon_receipt-0.2.0/tests/fixtures/universal/arc_float_overflow.json +1 -0
  95. arcaeon_receipt-0.2.0/tests/fixtures/universal/arc_ledger_edited_witnessed.json +1 -0
  96. arcaeon_receipt-0.2.0/tests/fixtures/universal/arc_missing_required.json +1 -0
  97. arcaeon_receipt-0.2.0/tests/fixtures/universal/arc_signature_mismatch.json +1 -0
  98. arcaeon_receipt-0.2.0/tests/fixtures/universal/arc_signature_value_unchecked.json +1 -0
  99. arcaeon_receipt-0.2.0/tests/fixtures/universal/arc_tampered_payload.json +1 -0
  100. arcaeon_receipt-0.2.0/tests/fixtures/universal/arc_tampered_seal.json +1 -0
  101. arcaeon_receipt-0.2.0/tests/fixtures/universal/arc_truncated.json +1 -0
  102. arcaeon_receipt-0.2.0/tests/fixtures/universal/arc_valid.json +1 -0
  103. arcaeon_receipt-0.2.0/tests/fixtures/universal/arc_witness_inconsistent.json +1 -0
  104. arcaeon_receipt-0.2.0/tests/fixtures/universal/arc_witness_pin_self_mismatch.json +1 -0
  105. arcaeon_receipt-0.2.0/tests/fixtures/universal/key_ed25519_test1.txt +1 -0
  106. arcaeon_receipt-0.2.0/tests/fixtures/universal/key_ed25519_test2.txt +1 -0
  107. arcaeon_receipt-0.2.0/tests/fixtures/universal/key_p256_rfc7515.jwk +1 -0
  108. arcaeon_receipt-0.2.0/tests/fixtures/universal/key_p256_transparency_service.jwk +1 -0
  109. arcaeon_receipt-0.2.0/tests/fixtures/universal/key_p256_wrong.jwk +1 -0
  110. arcaeon_receipt-0.2.0/tests/fixtures/universal/manifest.json +769 -0
  111. arcaeon_receipt-0.2.0/tests/fixtures/universal/none_ambiguous_markers.json +1 -0
  112. arcaeon_receipt-0.2.0/tests/fixtures/universal/none_empty.txt +0 -0
  113. arcaeon_receipt-0.2.0/tests/fixtures/universal/none_json_object.json +1 -0
  114. arcaeon_receipt-0.2.0/tests/fixtures/universal/none_plain_text.txt +1 -0
  115. arcaeon_receipt-0.2.0/tests/fixtures/universal/none_random_bytes.bin +0 -0
  116. arcaeon_receipt-0.2.0/tests/fixtures/universal/none_untagged_cose.cbor +0 -0
  117. arcaeon_receipt-0.2.0/tests/fixtures/universal/scitt_detached.cbor +0 -0
  118. arcaeon_receipt-0.2.0/tests/fixtures/universal/scitt_detached_payload.bin +1 -0
  119. arcaeon_receipt-0.2.0/tests/fixtures/universal/scitt_detached_payload_tampered.bin +1 -0
  120. arcaeon_receipt-0.2.0/tests/fixtures/universal/scitt_hash_envelope_eddsa.cbor +2 -0
  121. arcaeon_receipt-0.2.0/tests/fixtures/universal/scitt_hash_envelope_short_payload.cbor +2 -0
  122. arcaeon_receipt-0.2.0/tests/fixtures/universal/scitt_hash_envelope_with_content_type.cbor +0 -0
  123. arcaeon_receipt-0.2.0/tests/fixtures/universal/scitt_hash_preimage.txt +1 -0
  124. arcaeon_receipt-0.2.0/tests/fixtures/universal/scitt_hash_preimage_tampered.txt +1 -0
  125. arcaeon_receipt-0.2.0/tests/fixtures/universal/scitt_missing_cwt_claims.cbor +0 -0
  126. arcaeon_receipt-0.2.0/tests/fixtures/universal/scitt_missing_sub.cbor +0 -0
  127. arcaeon_receipt-0.2.0/tests/fixtures/universal/scitt_receipt_attached_root.cbor +2 -0
  128. arcaeon_receipt-0.2.0/tests/fixtures/universal/scitt_receipt_attached_root_tampered_path.cbor +2 -0
  129. arcaeon_receipt-0.2.0/tests/fixtures/universal/scitt_receipt_consistency_only.cbor +0 -0
  130. arcaeon_receipt-0.2.0/tests/fixtures/universal/scitt_receipt_extra_path_hash.cbor +0 -0
  131. arcaeon_receipt-0.2.0/tests/fixtures/universal/scitt_receipt_float_leaf_index.cbor +0 -0
  132. arcaeon_receipt-0.2.0/tests/fixtures/universal/scitt_receipt_float_tree_size.cbor +0 -0
  133. arcaeon_receipt-0.2.0/tests/fixtures/universal/scitt_receipt_float_tree_size_integral.cbor +0 -0
  134. arcaeon_receipt-0.2.0/tests/fixtures/universal/scitt_receipt_index_past_size.cbor +0 -0
  135. arcaeon_receipt-0.2.0/tests/fixtures/universal/scitt_receipt_missing_alg.cbor +2 -0
  136. arcaeon_receipt-0.2.0/tests/fixtures/universal/scitt_receipt_short_path_hash.cbor +2 -0
  137. arcaeon_receipt-0.2.0/tests/fixtures/universal/scitt_receipt_statement.cbor +0 -0
  138. arcaeon_receipt-0.2.0/tests/fixtures/universal/scitt_receipt_tampered_path.cbor +2 -0
  139. arcaeon_receipt-0.2.0/tests/fixtures/universal/scitt_receipt_truncated.cbor +2 -0
  140. arcaeon_receipt-0.2.0/tests/fixtures/universal/scitt_receipt_truncated_proof.cbor +2 -0
  141. arcaeon_receipt-0.2.0/tests/fixtures/universal/scitt_receipt_two_inclusion_proofs.cbor +3 -0
  142. arcaeon_receipt-0.2.0/tests/fixtures/universal/scitt_receipt_unsupported_alg.cbor +2 -0
  143. arcaeon_receipt-0.2.0/tests/fixtures/universal/scitt_receipt_unsupported_vds.cbor +2 -0
  144. arcaeon_receipt-0.2.0/tests/fixtures/universal/scitt_receipt_valid.cbor +2 -0
  145. arcaeon_receipt-0.2.0/tests/fixtures/universal/scitt_receipt_vds_without_vdp.cbor +1 -0
  146. arcaeon_receipt-0.2.0/tests/fixtures/universal/scitt_receipt_wrong_leaf_index.cbor +2 -0
  147. arcaeon_receipt-0.2.0/tests/fixtures/universal/scitt_tampered_payload.cbor +0 -0
  148. arcaeon_receipt-0.2.0/tests/fixtures/universal/scitt_tampered_signature.cbor +0 -0
  149. arcaeon_receipt-0.2.0/tests/fixtures/universal/scitt_trailing_bytes.cbor +0 -0
  150. arcaeon_receipt-0.2.0/tests/fixtures/universal/scitt_transparent_tampered_receipt.cbor +0 -0
  151. arcaeon_receipt-0.2.0/tests/fixtures/universal/scitt_transparent_two_receipts.cbor +0 -0
  152. arcaeon_receipt-0.2.0/tests/fixtures/universal/scitt_transparent_valid.cbor +0 -0
  153. arcaeon_receipt-0.2.0/tests/fixtures/universal/scitt_truncated.cbor +0 -0
  154. arcaeon_receipt-0.2.0/tests/fixtures/universal/scitt_unsupported_alg.cbor +1 -0
  155. arcaeon_receipt-0.2.0/tests/fixtures/universal/scitt_valid_es256_x5chain.b64 +1 -0
  156. arcaeon_receipt-0.2.0/tests/fixtures/universal/scitt_valid_es256_x5chain.cbor +0 -0
  157. arcaeon_receipt-0.2.0/tests/fixtures/universal/scitt_valid_es256_x5chain.hex +1 -0
  158. arcaeon_receipt-0.2.0/tests/fixtures/universal/scitt_wrong_key_embedded.cbor +0 -0
  159. arcaeon_receipt-0.2.0/tests/fixtures/universal/signet_v1_shape.json +21 -0
  160. arcaeon_receipt-0.2.0/tests/test_ab1405_fields.py +222 -0
  161. arcaeon_receipt-0.2.0/tests/test_approval_mcp.py +261 -0
  162. arcaeon_receipt-0.2.0/tests/test_archive.py +450 -0
  163. arcaeon_receipt-0.2.0/tests/test_authorship_ingest.py +277 -0
  164. arcaeon_receipt-0.2.0/tests/test_authorship_mcp.py +136 -0
  165. arcaeon_receipt-0.2.0/tests/test_ballot.py +120 -0
  166. arcaeon_receipt-0.2.0/tests/test_ballot_cohort.py +413 -0
  167. arcaeon_receipt-0.2.0/tests/test_ballot_pin_counter.py +159 -0
  168. arcaeon_receipt-0.2.0/tests/test_call_mcp.py +116 -0
  169. arcaeon_receipt-0.2.0/tests/test_call_proxy.py +452 -0
  170. arcaeon_receipt-0.2.0/tests/test_call_proxy_tape.py +879 -0
  171. arcaeon_receipt-0.2.0/tests/test_cite_batch.py +265 -0
  172. arcaeon_receipt-0.2.0/tests/test_cite_extract.py +97 -0
  173. arcaeon_receipt-0.2.0/tests/test_cite_mcp.py +107 -0
  174. arcaeon_receipt-0.2.0/tests/test_conformance_failure.py +723 -0
  175. arcaeon_receipt-0.2.0/tests/test_receipts.py +401 -0
  176. arcaeon_receipt-0.2.0/tests/test_roster_report.py +387 -0
  177. arcaeon_receipt-0.2.0/tests/test_universal_checker.mjs +388 -0
  178. arcaeon_receipt-0.2.0/tests/test_universal_checker.py +124 -0
  179. arcaeon_receipt-0.2.0/tests/test_verify_batch.py +552 -0
  180. arcaeon_receipt-0.2.0/tests/test_verify_page_parity.py +261 -0
  181. arcaeon_receipt-0.2.0/tests/test_witness_pin_refuses_unverified.py +80 -0
  182. arcaeon_receipt-0.2.0/tools/c14n_vectors.py +186 -0
  183. arcaeon_receipt-0.2.0/tools/extract_c14n.py +82 -0
  184. arcaeon_receipt-0.2.0/tools/make_universal_fixtures.mjs +544 -0
  185. arcaeon_receipt-0.2.0/web/README.md +101 -0
  186. arcaeon_receipt-0.2.0/web/authorship-recorder.html +340 -0
  187. arcaeon_receipt-0.2.0/web/universal/c14n_pinned.js +264 -0
  188. arcaeon_receipt-0.2.0/web/universal/cbor.js +212 -0
  189. arcaeon_receipt-0.2.0/web/universal/core.js +215 -0
  190. arcaeon_receipt-0.2.0/web/universal/crosscheck_pinned.js +164 -0
  191. arcaeon_receipt-0.2.0/web/universal/detect.js +142 -0
  192. arcaeon_receipt-0.2.0/web/universal/fmt_agent_receipts.js +146 -0
  193. arcaeon_receipt-0.2.0/web/universal/fmt_arcaeon.js +111 -0
  194. arcaeon_receipt-0.2.0/web/universal/fmt_scitt.js +174 -0
  195. arcaeon_receipt-0.2.0/web/universal/fmt_scitt_receipt.js +363 -0
  196. arcaeon_receipt-0.2.0/web/universal/jcs.js +39 -0
  197. arcaeon_receipt-0.2.0/web/universal/sigs.js +57 -0
  198. arcaeon_receipt-0.2.0/web/verify-any.html +294 -0
  199. arcaeon_receipt-0.2.0/web/verify-receipt.html +1573 -0
@@ -0,0 +1,13 @@
1
+ __pycache__/
2
+ *.pyc
3
+ .pytest_cache/
4
+ dist/
5
+ *.egg-info/
6
+ *.receipt.json
7
+ *.log.jsonl
8
+ *.witness.jsonl
9
+ .env
10
+ .env.*
11
+
12
+ # scratch lock files beside example ledgers (2026-09-13)
13
+ examples/ballots/*.lock