docket-ai 0.1.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 (236) hide show
  1. docket_ai-0.1.0/.gitignore +54 -0
  2. docket_ai-0.1.0/CHANGELOG.md +1168 -0
  3. docket_ai-0.1.0/LICENSE +216 -0
  4. docket_ai-0.1.0/PKG-INFO +408 -0
  5. docket_ai-0.1.0/README.md +366 -0
  6. docket_ai-0.1.0/deploy/README.md +103 -0
  7. docket_ai-0.1.0/docs/adr/0001-record-format-decisions-as-adrs.md +54 -0
  8. docket_ai-0.1.0/docs/adr/0002-no-floating-point-in-hashed-structures.md +70 -0
  9. docket_ai-0.1.0/docs/adr/0003-verification-uses-recomputed-hashes.md +68 -0
  10. docket_ai-0.1.0/docs/adr/0004-content-snapshots-and-confinement.md +107 -0
  11. docket_ai-0.1.0/docs/adr/0005-concurrency-and-one-writer-at-a-time.md +99 -0
  12. docket_ai-0.1.0/docs/adr/0006-the-shape-of-the-conformance-corpus.md +105 -0
  13. docket_ai-0.1.0/docs/adr/0007-the-members-a-receipt-states-about-itself.md +59 -0
  14. docket_ai-0.1.0/docs/adr/0008-a-third-implementation-written-from-the-spec.md +46 -0
  15. docket_ai-0.1.0/docs/architecture.md +141 -0
  16. docket_ai-0.1.0/docs/caching.md +292 -0
  17. docket_ai-0.1.0/docs/cli.md +412 -0
  18. docket_ai-0.1.0/docs/comparison.md +91 -0
  19. docket_ai-0.1.0/docs/concepts.md +109 -0
  20. docket_ai-0.1.0/docs/deployment.md +159 -0
  21. docket_ai-0.1.0/docs/evidence.md +82 -0
  22. docket_ai-0.1.0/docs/faq.md +95 -0
  23. docket_ai-0.1.0/docs/incident-corpus.md +81 -0
  24. docket_ai-0.1.0/docs/integrations.md +190 -0
  25. docket_ai-0.1.0/docs/measurements/2026-10-15-2core/README.md +174 -0
  26. docket_ai-0.1.0/docs/measurements/2026-10-15-2core/cache-report.json +877 -0
  27. docket_ai-0.1.0/docs/measurements/2026-10-15-2core/control-report.json +76 -0
  28. docket_ai-0.1.0/docs/measurements/2026-10-15-2core/load-report.json +76 -0
  29. docket_ai-0.1.0/docs/measurements/2026-10-15-2core/soak-report.json +76 -0
  30. docket_ai-0.1.0/docs/policy-reference.md +167 -0
  31. docket_ai-0.1.0/docs/production-coverage.md +200 -0
  32. docket_ai-0.1.0/docs/quickstart.md +147 -0
  33. docket_ai-0.1.0/docs/resilience.md +165 -0
  34. docket_ai-0.1.0/docs/sre-coverage.md +79 -0
  35. docket_ai-0.1.0/docs/standards.md +53 -0
  36. docket_ai-0.1.0/docs/testing.md +719 -0
  37. docket_ai-0.1.0/docs/threat-model.md +148 -0
  38. docket_ai-0.1.0/docs/verification.md +206 -0
  39. docket_ai-0.1.0/examples/README.md +21 -0
  40. docket_ai-0.1.0/examples/ci/README.md +87 -0
  41. docket_ai-0.1.0/examples/ci/docket.toml +42 -0
  42. docket_ai-0.1.0/examples/client-deliverable/README.md +50 -0
  43. docket_ai-0.1.0/examples/custom-agent/README.md +64 -0
  44. docket_ai-0.1.0/examples/custom-agent/agent_sdk.py +91 -0
  45. docket_ai-0.1.0/examples/quickstart/README.md +85 -0
  46. docket_ai-0.1.0/examples/quickstart/agent.py +71 -0
  47. docket_ai-0.1.0/examples/quickstart/run_example.py +86 -0
  48. docket_ai-0.1.0/examples/subscription/README.md +60 -0
  49. docket_ai-0.1.0/examples/subscription/docket.toml +34 -0
  50. docket_ai-0.1.0/pyproject.toml +142 -0
  51. docket_ai-0.1.0/spec/conformance.md +156 -0
  52. docket_ai-0.1.0/spec/docket-receipt-1.md +404 -0
  53. docket_ai-0.1.0/spec/registry.json +268 -0
  54. docket_ai-0.1.0/spec/vectors/cache-digest.json +12 -0
  55. docket_ai-0.1.0/spec/vectors/cache.json +464 -0
  56. docket_ai-0.1.0/spec/vectors/canonical.json +44 -0
  57. docket_ai-0.1.0/spec/vectors/generate.py +291 -0
  58. docket_ai-0.1.0/spec/vectors/invalid/01-format-unknown.expected.json +10 -0
  59. docket_ai-0.1.0/spec/vectors/invalid/01-format-unknown.json +515 -0
  60. docket_ai-0.1.0/spec/vectors/invalid/02-totals-not-object.expected.json +10 -0
  61. docket_ai-0.1.0/spec/vectors/invalid/02-totals-not-object.json +475 -0
  62. docket_ai-0.1.0/spec/vectors/invalid/03-nan-in-totals.expected.json +15 -0
  63. docket_ai-0.1.0/spec/vectors/invalid/03-nan-in-totals.json +1 -0
  64. docket_ai-0.1.0/spec/vectors/invalid/04-infinity-in-totals.expected.json +15 -0
  65. docket_ai-0.1.0/spec/vectors/invalid/04-infinity-in-totals.json +1 -0
  66. docket_ai-0.1.0/spec/vectors/invalid/05-duplicate-member.expected.json +15 -0
  67. docket_ai-0.1.0/spec/vectors/invalid/05-duplicate-member.json +1 -0
  68. docket_ai-0.1.0/spec/vectors/invalid/06-top-level-list.expected.json +10 -0
  69. docket_ai-0.1.0/spec/vectors/invalid/06-top-level-list.json +517 -0
  70. docket_ai-0.1.0/spec/vectors/invalid/07-chain-edited-event.expected.json +10 -0
  71. docket_ai-0.1.0/spec/vectors/invalid/07-chain-edited-event.json +515 -0
  72. docket_ai-0.1.0/spec/vectors/invalid/08-head-mismatch.expected.json +10 -0
  73. docket_ai-0.1.0/spec/vectors/invalid/08-head-mismatch.json +515 -0
  74. docket_ai-0.1.0/spec/vectors/invalid/09-event-count-mismatch.expected.json +10 -0
  75. docket_ai-0.1.0/spec/vectors/invalid/09-event-count-mismatch.json +515 -0
  76. docket_ai-0.1.0/spec/vectors/invalid/10-merkle-root-mismatch.expected.json +10 -0
  77. docket_ai-0.1.0/spec/vectors/invalid/10-merkle-root-mismatch.json +515 -0
  78. docket_ai-0.1.0/spec/vectors/invalid/11-ledger-trailing-byte.expected.json +10 -0
  79. docket_ai-0.1.0/spec/vectors/invalid/11-ledger-trailing-byte.json +515 -0
  80. docket_ai-0.1.0/spec/vectors/invalid/12-event-with-float.expected.json +10 -0
  81. docket_ai-0.1.0/spec/vectors/invalid/12-event-with-float.json +515 -0
  82. docket_ai-0.1.0/spec/vectors/invalid/13-usage-proof-tampered.expected.json +10 -0
  83. docket_ai-0.1.0/spec/vectors/invalid/13-usage-proof-tampered.json +515 -0
  84. docket_ai-0.1.0/spec/vectors/invalid/14-usage-row-without-proof.expected.json +10 -0
  85. docket_ai-0.1.0/spec/vectors/invalid/14-usage-row-without-proof.json +497 -0
  86. docket_ai-0.1.0/spec/vectors/invalid/15-usage-row-rebound.expected.json +10 -0
  87. docket_ai-0.1.0/spec/vectors/invalid/15-usage-row-rebound.json +515 -0
  88. docket_ai-0.1.0/spec/vectors/invalid/16-usage-seq-outside.expected.json +10 -0
  89. docket_ai-0.1.0/spec/vectors/invalid/16-usage-seq-outside.json +515 -0
  90. docket_ai-0.1.0/spec/vectors/invalid/17-cost-row-mismatch.expected.json +10 -0
  91. docket_ai-0.1.0/spec/vectors/invalid/17-cost-row-mismatch.json +515 -0
  92. docket_ai-0.1.0/spec/vectors/invalid/18-totals-mismatch.expected.json +10 -0
  93. docket_ai-0.1.0/spec/vectors/invalid/18-totals-mismatch.json +515 -0
  94. docket_ai-0.1.0/spec/vectors/invalid/19-token-totals-mismatch.expected.json +10 -0
  95. docket_ai-0.1.0/spec/vectors/invalid/19-token-totals-mismatch.json +515 -0
  96. docket_ai-0.1.0/spec/vectors/invalid/20-latency-summary-mismatch.expected.json +10 -0
  97. docket_ai-0.1.0/spec/vectors/invalid/20-latency-summary-mismatch.json +515 -0
  98. docket_ai-0.1.0/spec/vectors/invalid/21-usage-source-unknown.expected.json +10 -0
  99. docket_ai-0.1.0/spec/vectors/invalid/21-usage-source-unknown.json +515 -0
  100. docket_ai-0.1.0/spec/vectors/invalid/22-limits-disclosure-missing.expected.json +10 -0
  101. docket_ai-0.1.0/spec/vectors/invalid/22-limits-disclosure-missing.json +481 -0
  102. docket_ai-0.1.0/spec/vectors/invalid/23-cache-saved-mismatch.expected.json +10 -0
  103. docket_ai-0.1.0/spec/vectors/invalid/23-cache-saved-mismatch.json +464 -0
  104. docket_ai-0.1.0/spec/vectors/invalid/24-cache-origin-wrong.expected.json +10 -0
  105. docket_ai-0.1.0/spec/vectors/invalid/24-cache-origin-wrong.json +464 -0
  106. docket_ai-0.1.0/spec/vectors/invalid/25-cache-proof-tampered.expected.json +10 -0
  107. docket_ai-0.1.0/spec/vectors/invalid/25-cache-proof-tampered.json +464 -0
  108. docket_ai-0.1.0/spec/vectors/invalid/26-cache-hits-mismatch.expected.json +10 -0
  109. docket_ai-0.1.0/spec/vectors/invalid/26-cache-hits-mismatch.json +464 -0
  110. docket_ai-0.1.0/spec/vectors/invalid/27-assumed-price-undisclosed.expected.json +10 -0
  111. docket_ai-0.1.0/spec/vectors/invalid/27-assumed-price-undisclosed.json +512 -0
  112. docket_ai-0.1.0/spec/vectors/invalid/28-totals-call-count.expected.json +10 -0
  113. docket_ai-0.1.0/spec/vectors/invalid/28-totals-call-count.json +515 -0
  114. docket_ai-0.1.0/spec/vectors/invalid/29-totals-input-tokens.expected.json +10 -0
  115. docket_ai-0.1.0/spec/vectors/invalid/29-totals-input-tokens.json +515 -0
  116. docket_ai-0.1.0/spec/vectors/invalid/30-totals-token-split.expected.json +10 -0
  117. docket_ai-0.1.0/spec/vectors/invalid/30-totals-token-split.json +515 -0
  118. docket_ai-0.1.0/spec/vectors/invalid/31-utf8-bom.expected.json +13 -0
  119. docket_ai-0.1.0/spec/vectors/invalid/31-utf8-bom.json +1 -0
  120. docket_ai-0.1.0/spec/vectors/invalid/32-trailing-bytes.expected.json +13 -0
  121. docket_ai-0.1.0/spec/vectors/invalid/32-trailing-bytes.json +2 -0
  122. docket_ai-0.1.0/spec/vectors/invalid/33-invalid-utf8.expected.json +13 -0
  123. docket_ai-0.1.0/spec/vectors/invalid/33-invalid-utf8.json +1 -0
  124. docket_ai-0.1.0/spec/vectors/invalid/34-integral-float-accepted.expected.json +10 -0
  125. docket_ai-0.1.0/spec/vectors/invalid/34-integral-float-accepted.json +1 -0
  126. docket_ai-0.1.0/spec/vectors/invalid/35-negative-zero-accepted.expected.json +10 -0
  127. docket_ai-0.1.0/spec/vectors/invalid/35-negative-zero-accepted.json +1 -0
  128. docket_ai-0.1.0/spec/vectors/invalid/36-non-nfc-accepted.expected.json +10 -0
  129. docket_ai-0.1.0/spec/vectors/invalid/36-non-nfc-accepted.json +1 -0
  130. docket_ai-0.1.0/spec/vectors/invalid/37-ledger-duplicate-name.expected.json +15 -0
  131. docket_ai-0.1.0/spec/vectors/invalid/37-ledger-duplicate-name.json +515 -0
  132. docket_ai-0.1.0/spec/vectors/invalid/38-ledger-truncated-line.expected.json +13 -0
  133. docket_ai-0.1.0/spec/vectors/invalid/38-ledger-truncated-line.json +515 -0
  134. docket_ai-0.1.0/spec/vectors/invalid/39-by-model-invents-a-model.expected.json +10 -0
  135. docket_ai-0.1.0/spec/vectors/invalid/39-by-model-invents-a-model.json +515 -0
  136. docket_ai-0.1.0/spec/vectors/invalid/40-usage-counts-say-reported.expected.json +10 -0
  137. docket_ai-0.1.0/spec/vectors/invalid/40-usage-counts-say-reported.json +515 -0
  138. docket_ai-0.1.0/spec/vectors/invalid/41-cost-basis-is-a-contradiction.expected.json +10 -0
  139. docket_ai-0.1.0/spec/vectors/invalid/41-cost-basis-is-a-contradiction.json +515 -0
  140. docket_ai-0.1.0/spec/vectors/invalid/42-quota-mode-basis-is-accepted.expected.json +10 -0
  141. docket_ai-0.1.0/spec/vectors/invalid/42-quota-mode-basis-is-accepted.json +515 -0
  142. docket_ai-0.1.0/spec/vectors/invalid/base.ledger.jsonl +12 -0
  143. docket_ai-0.1.0/spec/vectors/invalid/build.py +944 -0
  144. docket_ai-0.1.0/spec/vectors/invalid/ledgers/07-chain-edited-event.jsonl +12 -0
  145. docket_ai-0.1.0/spec/vectors/invalid/ledgers/11-ledger-trailing-byte.jsonl +13 -0
  146. docket_ai-0.1.0/spec/vectors/invalid/ledgers/12-event-with-float.jsonl +12 -0
  147. docket_ai-0.1.0/spec/vectors/invalid/ledgers/37-ledger-duplicate-name.jsonl +1 -0
  148. docket_ai-0.1.0/spec/vectors/invalid/ledgers/38-ledger-truncated-line.jsonl +13 -0
  149. docket_ai-0.1.0/spec/vectors/ledger.json +271 -0
  150. docket_ai-0.1.0/spec/vectors/merkle.json +134 -0
  151. docket_ai-0.1.0/spec/vectors/receipt-digest.json +5 -0
  152. docket_ai-0.1.0/spec/vectors/receipt.json +515 -0
  153. docket_ai-0.1.0/src/docket/__init__.py +43 -0
  154. docket_ai-0.1.0/src/docket/__main__.py +6 -0
  155. docket_ai-0.1.0/src/docket/cache.py +518 -0
  156. docket_ai-0.1.0/src/docket/canon.py +240 -0
  157. docket_ai-0.1.0/src/docket/chaos.py +1207 -0
  158. docket_ai-0.1.0/src/docket/cli.py +1469 -0
  159. docket_ai-0.1.0/src/docket/demo.py +348 -0
  160. docket_ai-0.1.0/src/docket/diagnostics.py +726 -0
  161. docket_ai-0.1.0/src/docket/events.py +133 -0
  162. docket_ai-0.1.0/src/docket/explain.py +353 -0
  163. docket_ai-0.1.0/src/docket/fakeupstream.py +402 -0
  164. docket_ai-0.1.0/src/docket/fsdiff.py +140 -0
  165. docket_ai-0.1.0/src/docket/latency.py +124 -0
  166. docket_ai-0.1.0/src/docket/ledger.py +781 -0
  167. docket_ai-0.1.0/src/docket/loaddriver.py +364 -0
  168. docket_ai-0.1.0/src/docket/policy.py +774 -0
  169. docket_ai-0.1.0/src/docket/prices.json +145 -0
  170. docket_ai-0.1.0/src/docket/pricing.py +469 -0
  171. docket_ai-0.1.0/src/docket/proxy.py +1842 -0
  172. docket_ai-0.1.0/src/docket/receipt.py +417 -0
  173. docket_ai-0.1.0/src/docket/report.py +425 -0
  174. docket_ai-0.1.0/src/docket/resilience.py +681 -0
  175. docket_ai-0.1.0/src/docket/scriptagent.py +233 -0
  176. docket_ai-0.1.0/src/docket/sdk.py +375 -0
  177. docket_ai-0.1.0/src/docket/signing.py +178 -0
  178. docket_ai-0.1.0/src/docket/snapshot.py +607 -0
  179. docket_ai-0.1.0/src/docket/supervisor.py +844 -0
  180. docket_ai-0.1.0/src/docket/util.py +375 -0
  181. docket_ai-0.1.0/src/docket/verify.py +1297 -0
  182. docket_ai-0.1.0/tests/conftest.py +120 -0
  183. docket_ai-0.1.0/tests/golden/diff-vector.txt +9 -0
  184. docket_ai-0.1.0/tests/golden/receipt-vector.txt +23 -0
  185. docket_ai-0.1.0/tests/golden/report-vector.md +31 -0
  186. docket_ai-0.1.0/tests/test_a11y_check.py +781 -0
  187. docket_ai-0.1.0/tests/test_cache.py +1712 -0
  188. docket_ai-0.1.0/tests/test_canon.py +234 -0
  189. docket_ai-0.1.0/tests/test_chaos.py +552 -0
  190. docket_ai-0.1.0/tests/test_cli_input.py +173 -0
  191. docket_ai-0.1.0/tests/test_cli_sdk_demo.py +352 -0
  192. docket_ai-0.1.0/tests/test_conformance.py +329 -0
  193. docket_ai-0.1.0/tests/test_deploy_check.py +558 -0
  194. docket_ai-0.1.0/tests/test_diagnostics.py +178 -0
  195. docket_ai-0.1.0/tests/test_doc_links.py +1270 -0
  196. docket_ai-0.1.0/tests/test_examples.py +247 -0
  197. docket_ai-0.1.0/tests/test_explain.py +208 -0
  198. docket_ai-0.1.0/tests/test_fsdiff.py +91 -0
  199. docket_ai-0.1.0/tests/test_fuzz_regressions.py +566 -0
  200. docket_ai-0.1.0/tests/test_helm_fidelity.py +433 -0
  201. docket_ai-0.1.0/tests/test_i18n.py +176 -0
  202. docket_ai-0.1.0/tests/test_invariants.py +751 -0
  203. docket_ai-0.1.0/tests/test_latency.py +496 -0
  204. docket_ai-0.1.0/tests/test_ledger.py +245 -0
  205. docket_ai-0.1.0/tests/test_ledger_concurrency.py +103 -0
  206. docket_ai-0.1.0/tests/test_ledger_contracts.py +799 -0
  207. docket_ai-0.1.0/tests/test_ledger_faults.py +562 -0
  208. docket_ai-0.1.0/tests/test_loadtest.py +710 -0
  209. docket_ai-0.1.0/tests/test_mutate.py +1217 -0
  210. docket_ai-0.1.0/tests/test_policy.py +208 -0
  211. docket_ai-0.1.0/tests/test_pricing.py +157 -0
  212. docket_ai-0.1.0/tests/test_proxy.py +311 -0
  213. docket_ai-0.1.0/tests/test_proxy_concurrency.py +324 -0
  214. docket_ai-0.1.0/tests/test_receipt_verify.py +984 -0
  215. docket_ai-0.1.0/tests/test_render_golden.py +80 -0
  216. docket_ai-0.1.0/tests/test_resilience.py +852 -0
  217. docket_ai-0.1.0/tests/test_security.py +713 -0
  218. docket_ai-0.1.0/tests/test_signing_and_attach.py +248 -0
  219. docket_ai-0.1.0/tests/test_snapshot_confinement.py +359 -0
  220. docket_ai-0.1.0/tests/test_snapshot_restore.py +688 -0
  221. docket_ai-0.1.0/tests/test_supervisor.py +256 -0
  222. docket_ai-0.1.0/tests/test_supply_chain.py +196 -0
  223. docket_ai-0.1.0/tests/test_url_guards.py +244 -0
  224. docket_ai-0.1.0/tests/test_vectors.py +181 -0
  225. docket_ai-0.1.0/tools/a11y_check.py +577 -0
  226. docket_ai-0.1.0/tools/build_docs_site.py +112 -0
  227. docket_ai-0.1.0/tools/conformance.py +423 -0
  228. docket_ai-0.1.0/tools/deploy_check.py +1054 -0
  229. docket_ai-0.1.0/tools/fuzz.py +644 -0
  230. docket_ai-0.1.0/tools/helm_fidelity.py +195 -0
  231. docket_ai-0.1.0/tools/loadtest.py +581 -0
  232. docket_ai-0.1.0/tools/mutate.py +753 -0
  233. docket_ai-0.1.0/tools/transcript_run.py +61 -0
  234. docket_ai-0.1.0/verify-go/README.md +72 -0
  235. docket_ai-0.1.0/verify-js/test.mjs +343 -0
  236. docket_ai-0.1.0/verify-js/verify.mjs +1222 -0
@@ -0,0 +1,54 @@
1
+ # byte-compiled / caches
2
+ __pycache__/
3
+ *.py[cod]
4
+ .pytest_cache/
5
+ .ruff_cache/
6
+ .mypy_cache/
7
+ .coverage
8
+ htmlcov/
9
+
10
+ # builds
11
+ build/
12
+ dist/
13
+ site/
14
+ .mkdocs-site/
15
+ *.egg-info/
16
+ .venv/
17
+ venv/
18
+
19
+ # docket's own artifacts: ledgers and receipts are frequently sensitive
20
+ .docket/
21
+ *.receipt.json
22
+ *.jsonl
23
+ !spec/vectors/*.json
24
+ # The negative corpus ships its ledgers as fixtures, deliberately: each is the evidence one or
25
+ # more vectors are refused against, and `*.jsonl` above is a rule about ledgers a *user* produces.
26
+ # It hid these four from the first commit of the corpus, and the release record caught it exactly
27
+ # as designed — the suite passed in the authoring tree (where the files existed, untracked) and
28
+ # failed in a clone of the shipped bundle.
29
+ !spec/vectors/invalid/*.jsonl
30
+ !spec/vectors/invalid/ledgers/*.jsonl
31
+
32
+ # the mutation sweep's reports (regenerate with `make mutation`)
33
+ mutation-report.json
34
+ mutation-report.md
35
+
36
+ # measurements written to the repository root by `make load` / `make soak` / `make cache-load`.
37
+ # These are anchored on purpose: the curated reports that ship under docs/measurements/ are
38
+ # evidence, they are cited by name in docs/sre-coverage.md and README.md, and a basename pattern
39
+ # would leave them out of every clone while the authoring checkout still had them.
40
+ /load-report.json
41
+ /load-report.md
42
+ /soak-report.json
43
+ /soak-report.md
44
+ /cache-report.json
45
+ /cache-report.md
46
+ /.docket-soak/
47
+
48
+ # editors / OS
49
+ .vscode/
50
+ .idea/
51
+ .DS_Store
52
+
53
+ # the Go verifier's build product
54
+ verify-go/docket-verify