stacktrace-cli 0.11.0__tar.gz → 0.13.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 (701) hide show
  1. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/.github/workflows/ci.yml +6 -0
  2. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/CLAUDE.md +83 -10
  3. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/PKG-INFO +15 -7
  4. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/README.md +12 -4
  5. stacktrace_cli-0.13.0/SECURITY.md +41 -0
  6. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0006-trust-boundary-and-detection-upload.md +1 -1
  7. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0018-remote-sync-config-and-facade-consumption.md +1 -1
  8. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0020-openaca-consumption-boundary.md +1 -0
  9. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0024-the-upload-carries-observations.md +1 -1
  10. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0031-one-host-daemon-observes-native-session-logs.md +1 -1
  11. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0070-package-the-cloud-agent-environment-bootstrap.md +1 -1
  12. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0072-host-supervisors-own-daemon-restarts.md +1 -1
  13. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0073-name-what-fired-and-which-component.md +1 -1
  14. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0090-count-completed-commands-locate-by-ip-send-through-the-managed-proxy.md +1 -1
  15. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0093-environment-cost-baselines-count-tokens-keyed-by-model.md +1 -1
  16. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0096-cost-usage-may-leave-as-token-totals-and-work-identifiers.md +1 -1
  17. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0099-cost-is-measured-in-tokens-and-relative-increases.md +1 -1
  18. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0101-what-names-a-run-in-fleet.md +1 -1
  19. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0104-usage-is-its-own-upload.md +1 -1
  20. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0109-a-detection-carries-its-runs-title-and-the-persons-name.md +1 -1
  21. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0113-size-triggers-behaviour-explains-session-cost-carries-reasons.md +1 -1
  22. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0118-observe-agents-through-adapters-and-a-shared-analyzer.md +1 -1
  23. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0123-the-cloud-boot-hook-brings-the-client-up-to-the-latest-release.md +1 -1
  24. stacktrace_cli-0.13.0/docs/adrs/0127-the-monitor-shows-weighted-tokens-beside-raw-tokens.md +121 -0
  25. stacktrace_cli-0.13.0/docs/adrs/0128-usage-files-each-response-once-where-it-was-first-filed.md +118 -0
  26. stacktrace_cli-0.13.0/docs/adrs/0129-an-unfinished-response-counts-the-output-it-shows.md +130 -0
  27. stacktrace_cli-0.13.0/docs/adrs/0130-usage-carries-one-hour-cache-writes-and-each-responses-price-class.md +126 -0
  28. stacktrace_cli-0.13.0/docs/adrs/0131-activate-hook-policy-without-a-privileged-runtime.md +87 -0
  29. stacktrace_cli-0.13.0/docs/adrs/0132-every-usage-page-names-the-store-that-built-it.md +92 -0
  30. stacktrace_cli-0.13.0/docs/adrs/0133-a-clients-own-error-record-is-a-third-block-channel.md +68 -0
  31. stacktrace_cli-0.13.0/docs/adrs/0134-a-secret-sent-to-a-server-configured-as-remote-is-egress.md +61 -0
  32. stacktrace_cli-0.13.0/docs/adrs/0135-enforce-policy-through-the-daemon-and-agent-hooks.md +111 -0
  33. stacktrace_cli-0.13.0/docs/adrs/0136-bound-policy-evidence-collection-as-one-bundle.md +102 -0
  34. stacktrace_cli-0.13.0/docs/adrs/0137-a-rule-in-wording-reads-the-same-on-every-surface.md +87 -0
  35. stacktrace_cli-0.13.0/docs/adrs/0138-a-credential-in-a-prompt-travels-as-a-mask-and-a-digest.md +98 -0
  36. stacktrace_cli-0.13.0/docs/adrs/0139-remediation-finding-contract.md +95 -0
  37. stacktrace_cli-0.13.0/docs/adrs/0140-an-untitled-run-names-itself-by-its-first-five-words.md +70 -0
  38. stacktrace_cli-0.13.0/docs/adrs/0141-two-remediation-models-one-credential-identity-and-a-letters-only-fragment.md +81 -0
  39. stacktrace_cli-0.13.0/docs/adrs/0142-the-cli-has-no-machine-limit.md +72 -0
  40. stacktrace_cli-0.13.0/docs/adrs/0143-the-plugin-owns-session-hooks-on-every-host.md +139 -0
  41. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/INDEX.md +26 -6
  42. stacktrace_cli-0.13.0/docs/agent-support.html +503 -0
  43. stacktrace_cli-0.13.0/docs/agent-support.md +140 -0
  44. stacktrace_cli-0.13.0/docs/releases/v0.12.0.md +74 -0
  45. stacktrace_cli-0.13.0/docs/releases/v0.13.0.md +98 -0
  46. stacktrace_cli-0.13.0/docs/specs/codex-agent-kind.md +361 -0
  47. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/specs/cost-notifications.md +15 -8
  48. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/specs/cost-phase-1.md +18 -8
  49. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/specs/cost.md +12 -3
  50. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/specs/daemon-uploads.md +2 -2
  51. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/specs/detection-policies.md +91 -11
  52. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/specs/detector.md +10 -8
  53. stacktrace_cli-0.13.0/docs/specs/hook-policy-rollout.md +205 -0
  54. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/specs/managed-policy-deployment.md +6 -0
  55. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/specs/monitor.md +54 -16
  56. stacktrace_cli-0.13.0/docs/specs/plugin-installation.md +107 -0
  57. stacktrace_cli-0.13.0/docs/specs/policy-enforcement.md +417 -0
  58. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/specs/remote-sync.md +6 -3
  59. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/specs/usage-upload.md +79 -7
  60. stacktrace_cli-0.13.0/docs/trust.md +204 -0
  61. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/pyproject.toml +11 -5
  62. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/__init__.py +1 -1
  63. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/cli.py +14 -10
  64. stacktrace_cli-0.13.0/src/stacktrace/cloud/__init__.py +37 -0
  65. stacktrace_cli-0.13.0/src/stacktrace/cloud/boot.py +186 -0
  66. stacktrace_cli-0.13.0/src/stacktrace/cloud/profile.py +71 -0
  67. stacktrace_cli-0.13.0/src/stacktrace/cloud/setup.sh +185 -0
  68. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/correlate/composition.py +22 -1
  69. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/correlate/observed.py +49 -5
  70. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/cost/baseline.py +16 -1
  71. stacktrace_cli-0.13.0/src/stacktrace/cost/copies.py +90 -0
  72. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/cost/ledger.py +8 -2
  73. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/cost/measures.py +3 -2
  74. stacktrace_cli-0.13.0/src/stacktrace/cost/models.py +76 -0
  75. stacktrace_cli-0.13.0/src/stacktrace/cost/output.py +123 -0
  76. stacktrace_cli-0.13.0/src/stacktrace/cost/price_class.py +48 -0
  77. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/cost/reasons.py +3 -2
  78. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/cost/rules.py +4 -193
  79. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/cost/usage.py +224 -16
  80. stacktrace_cli-0.13.0/src/stacktrace/cost/weights.py +120 -0
  81. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/daemon/client.py +10 -4
  82. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/daemon/config.py +0 -42
  83. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/daemon/costs.py +7 -10
  84. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/daemon/db.py +168 -15
  85. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/daemon/fleet.py +9 -9
  86. stacktrace_cli-0.13.0/src/stacktrace/daemon/policy_collect.py +306 -0
  87. stacktrace_cli-0.13.0/src/stacktrace/daemon/policy_inputs.py +278 -0
  88. stacktrace_cli-0.13.0/src/stacktrace/daemon/policy_runtime.py +569 -0
  89. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/daemon/presentation.py +40 -9
  90. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/daemon/protocol.py +46 -2
  91. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/daemon/runtime.py +10 -11
  92. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/daemon/server.py +76 -2
  93. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/daemon/store.py +155 -29
  94. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/daemon/usage.py +85 -35
  95. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/daemon/webhook.py +24 -0
  96. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/detector/blocked.py +102 -0
  97. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/detector/cache.py +2 -8
  98. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/detector/deterministic.py +426 -103
  99. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/detector/finding.py +35 -6
  100. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/detector/history.py +4 -13
  101. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/detector/jev.py +1 -14
  102. stacktrace_cli-0.13.0/src/stacktrace/detector/personal_data.py +328 -0
  103. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/detector/prompts/__init__.py +3 -2
  104. stacktrace_cli-0.13.0/src/stacktrace/detector/prompts/jev-v3/stacktrace-deceptive-completion.json +16 -0
  105. stacktrace_cli-0.13.0/src/stacktrace/detector/prompts/jev-v3/stacktrace-infra-unsafe-action.json +10 -0
  106. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/detector/reasoning.py +6 -28
  107. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/detector/render.py +10 -0
  108. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/detector/rules.py +80 -15
  109. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/detector/run.py +6 -0
  110. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/detector/secrets.py +88 -3
  111. stacktrace_cli-0.13.0/src/stacktrace/finding_contract.py +236 -0
  112. stacktrace_cli-0.13.0/src/stacktrace/finding_titles.py +57 -0
  113. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/gateway/formats/_json.py +1 -5
  114. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/gateway/session.py +20 -2
  115. stacktrace_cli-0.13.0/src/stacktrace/hooks/__init__.py +1 -0
  116. stacktrace_cli-0.13.0/src/stacktrace/hooks/claude.py +239 -0
  117. stacktrace_cli-0.13.0/src/stacktrace/hooks/session.py +76 -0
  118. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/monitor/costs.py +116 -15
  119. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/monitor/render.py +33 -4
  120. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/monitor/site/app.js +44 -10
  121. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/monitor/site/cost.js +168 -25
  122. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/monitor/site/index.html +1 -1
  123. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/monitor/site/styles.css +14 -2
  124. stacktrace_cli-0.13.0/src/stacktrace/policy_display.py +129 -0
  125. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/remote/cli.py +8 -44
  126. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/remote/client.py +159 -15
  127. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/remote/config.py +61 -2
  128. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/remote/detect_payload.py +37 -4
  129. stacktrace_cli-0.13.0/src/stacktrace/remote/hook_policy.py +148 -0
  130. stacktrace_cli-0.13.0/src/stacktrace/remote/policy_show.py +109 -0
  131. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/remote/sync.py +14 -2
  132. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/remote/upload_contract.py +35 -0
  133. stacktrace_cli-0.13.0/src/stacktrace/sessions/entrypoint.py +43 -0
  134. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/sessions/protocols.py +5 -39
  135. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/telemetry/events.py +1 -0
  136. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/conftest.py +32 -6
  137. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/cost/fakes.py +6 -0
  138. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/cost/test_baseline.py +15 -0
  139. stacktrace_cli-0.13.0/tests/cost/test_copies.py +91 -0
  140. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/cost/test_cost_evidence_travels.py +0 -35
  141. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/cost/test_cost_findings_are_dated_by_their_citations.py +9 -28
  142. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/cost/test_cost_findings_carry_no_session_text.py +0 -10
  143. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/cost/test_cost_is_tokens.py +10 -1
  144. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/cost/test_measures.py +9 -0
  145. stacktrace_cli-0.13.0/tests/cost/test_models.py +66 -0
  146. stacktrace_cli-0.13.0/tests/cost/test_output.py +149 -0
  147. stacktrace_cli-0.13.0/tests/cost/test_price_class.py +113 -0
  148. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/cost/test_rules_baseline.py +16 -2
  149. stacktrace_cli-0.13.0/tests/cost/test_unfinished_output_counts_what_it_shows.py +330 -0
  150. stacktrace_cli-0.13.0/tests/cost/test_usage.py +478 -0
  151. stacktrace_cli-0.13.0/tests/cost/test_weights.py +158 -0
  152. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/daemon/test_accounts.py +4 -3
  153. stacktrace_cli-0.13.0/tests/daemon/test_claude_policy_conformance.py +586 -0
  154. stacktrace_cli-0.13.0/tests/daemon/test_claude_policy_hook.py +232 -0
  155. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/daemon/test_cli.py +9 -3
  156. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/daemon/test_client.py +7 -3
  157. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/daemon/test_costs.py +76 -99
  158. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/daemon/test_db.py +197 -0
  159. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/daemon/test_fleet.py +50 -2
  160. stacktrace_cli-0.13.0/tests/daemon/test_policy_collect.py +344 -0
  161. stacktrace_cli-0.13.0/tests/daemon/test_policy_collect_contract.py +180 -0
  162. stacktrace_cli-0.13.0/tests/daemon/test_policy_hook_transport.py +207 -0
  163. stacktrace_cli-0.13.0/tests/daemon/test_policy_inputs.py +551 -0
  164. stacktrace_cli-0.13.0/tests/daemon/test_policy_reconcile.py +535 -0
  165. stacktrace_cli-0.13.0/tests/daemon/test_policy_runtime.py +277 -0
  166. stacktrace_cli-0.13.0/tests/daemon/test_policy_socket.py +153 -0
  167. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/daemon/test_runtime.py +1 -1
  168. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/daemon/test_session_cost_notices.py +2 -2
  169. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/daemon/test_the_stored_row_is_sufficient.py +5 -0
  170. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/daemon/test_usage.py +480 -6
  171. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/daemon/test_usage_store.py +260 -1
  172. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/daemon/test_webhook.py +56 -0
  173. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/daemon/test_wire_frames_are_bounded.py +6 -1
  174. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/detector_session_fixture.py +0 -4
  175. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/gateway/test_session.py +108 -0
  176. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/monitor/cost_harness.mjs +65 -15
  177. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/monitor/feed_harness.mjs +16 -2
  178. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/monitor/test_cost_page.py +173 -14
  179. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/monitor/test_feed_model.py +30 -5
  180. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/monitor/test_render_cost.py +523 -17
  181. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/monitor/test_site_assets.py +11 -7
  182. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/remote/test_cli.py +19 -211
  183. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/remote/test_client.py +292 -0
  184. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/remote/test_cloud_boot_updates_the_client.py +87 -16
  185. stacktrace_cli-0.13.0/tests/remote/test_cloud_session.py +59 -0
  186. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/remote/test_cloud_setup_asset_id.py +6 -0
  187. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/remote/test_config.py +85 -0
  188. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/remote/test_detect_contract_is_exhaustive.py +31 -3
  189. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/remote/test_detect_gate_matches_the_cloud.py +7 -0
  190. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/remote/test_facade_contract.py +40 -1
  191. stacktrace_cli-0.13.0/tests/remote/test_hook_policy.py +81 -0
  192. stacktrace_cli-0.13.0/tests/remote/test_policy_show.py +138 -0
  193. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/remote/test_seam.py +8 -0
  194. stacktrace_cli-0.13.0/tests/remote/test_session_registration.py +54 -0
  195. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/remote/test_usage_contract.py +5 -0
  196. stacktrace_cli-0.13.0/tests/remote/test_user_install_profile.py +45 -0
  197. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/telemetry/test_every_derived_site.py +1 -1
  198. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/telemetry/test_hooks.py +1 -1
  199. stacktrace_cli-0.13.0/tests/test_agent_support_doc.py +81 -0
  200. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_build_commit.py +2 -2
  201. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_composition.py +3 -6
  202. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_detector_blocked.py +18 -9
  203. stacktrace_cli-0.13.0/tests/test_detector_client_errors.py +125 -0
  204. stacktrace_cli-0.13.0/tests/test_detector_credential_in_prompt.py +217 -0
  205. stacktrace_cli-0.13.0/tests/test_detector_declared_egress.py +100 -0
  206. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_detector_deterministic.py +56 -0
  207. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_detector_end_to_end.py +6 -2
  208. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_detector_finding.py +9 -0
  209. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_detector_history.py +38 -8
  210. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_detector_new_deterministic.py +33 -0
  211. stacktrace_cli-0.13.0/tests/test_detector_personal_data.py +220 -0
  212. stacktrace_cli-0.13.0/tests/test_detector_pii_in_prompt.py +117 -0
  213. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_detector_prompts.py +1 -1
  214. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_detector_reasoning.py +16 -6
  215. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_detector_secrets.py +164 -0
  216. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_detector_vulnerable_dep_invoked.py +68 -54
  217. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_detector_why_it_stopped.py +44 -0
  218. stacktrace_cli-0.13.0/tests/test_entrypoint_conventions.py +110 -0
  219. stacktrace_cli-0.13.0/tests/test_finding_contract.py +168 -0
  220. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_fingerprint_covers_what_the_analyzer_reads.py +0 -2
  221. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_join.py +0 -1
  222. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_kind_conformance.py +42 -0
  223. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_no_agent_kind_is_named.py +3 -0
  224. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_observed.py +93 -1
  225. stacktrace_cli-0.13.0/tests/test_one_wording_per_rule.py +168 -0
  226. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_openaidr_contract.py +220 -0
  227. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_release_gate_coverage.py +4 -0
  228. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_seam_boundary.py +8 -0
  229. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_session_identity_is_the_pair.py +19 -0
  230. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_the_locality_claim_is_qualified_everywhere.py +0 -9
  231. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_title_disclosure_invariant.py +95 -18
  232. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_untrusted_content_never_travels.py +64 -1
  233. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/uv.lock +33 -9
  234. stacktrace_cli-0.11.0/src/stacktrace/cloud/__init__.py +0 -60
  235. stacktrace_cli-0.11.0/src/stacktrace/cloud/setup.sh +0 -469
  236. stacktrace_cli-0.11.0/src/stacktrace/cost/models.py +0 -38
  237. stacktrace_cli-0.11.0/tests/cost/test_models.py +0 -15
  238. stacktrace_cli-0.11.0/tests/cost/test_rules_budget.py +0 -189
  239. stacktrace_cli-0.11.0/tests/cost/test_usage.py +0 -255
  240. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/.agents/skills/release-stacktrace/SKILL.md +0 -0
  241. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/.claude/settings.json +0 -0
  242. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/.claude/skills/release-stacktrace/SKILL.md +0 -0
  243. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/.codex/hooks.json +0 -0
  244. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/.github/managed-autofix.md +0 -0
  245. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/.github/pull_request_template.md +0 -0
  246. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/.github/workflows/bedrock-live.yml +0 -0
  247. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/.github/workflows/guard-staging.yml +0 -0
  248. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/.github/workflows/publish-pypi.yml +0 -0
  249. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/.gitignore +0 -0
  250. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/AGENTS.md +0 -0
  251. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/contracts/observations/v1/decision-request.example.json +0 -0
  252. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/contracts/observations/v1/decision-request.schema.json +0 -0
  253. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/contracts/observations/v1/decision-response.example.json +0 -0
  254. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/contracts/observations/v1/decision-response.schema.json +0 -0
  255. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/contracts/observations/v1/example.json +0 -0
  256. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/contracts/observations/v1/schema.json +0 -0
  257. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0001-session-telemetry-as-input.md +0 -0
  258. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0002-session-collection-in-openaidr.md +0 -0
  259. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0003-runtime-edges.md +0 -0
  260. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0004-three-stage-detector.md +0 -0
  261. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0005-detection-family-and-report-assembly.md +0 -0
  262. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0007-proprietary-package-on-open-dependencies.md +0 -0
  263. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0008-console-in-separate-demo-package.md +0 -0
  264. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0010-detection-severity-and-confidence-ladders.md +0 -0
  265. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0011-verdict-cache.md +0 -0
  266. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0012-observation-evidence-kinds-and-transport.md +0 -0
  267. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0013-rule-catalogue-triage-and-per-rule-context.md +0 -0
  268. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0014-declared-project-mapping.md +0 -0
  269. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0015-narrow-the-security-catalogue.md +0 -0
  270. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0016-stall-grouping-is-session-wide.md +0 -0
  271. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0017-a-declined-repeat-is-a-stall.md +0 -0
  272. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0019-delegated-commands-are-openaca-objects.md +0 -0
  273. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0021-two-command-kinds.md +0 -0
  274. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0022-detection-scope-is-a-catalogue-column.md +0 -0
  275. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0023-sync-detect-collects-and-does-not-escalate.md +0 -0
  276. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0025-a-denied-call-is-activity-never-an-invocation.md +0 -0
  277. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0026-the-console-becomes-a-product-surface.md +0 -0
  278. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0027-a-finding-may-name-what-it-could-not-place.md +0 -0
  279. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0028-the-console-shows-what-it-placed.md +0 -0
  280. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0029-stage-three-returns-to-opt-in.md +0 -0
  281. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0030-a-detection-is-dated-by-the-turns-it-cites.md +0 -0
  282. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0032-refresh-daemon-compositions-outside-detection.md +0 -0
  283. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0033-a-third-party-analyzer-only-by-a-flag-that-names-it.md +0 -0
  284. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0034-the-drift-grade-is-read-off-a-run-not-a-call.md +0 -0
  285. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0035-naming-an-analyzer-selects-stored-answers.md +0 -0
  286. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0036-deliver-eligible-findings-to-slack-from-the-daemon.md +0 -0
  287. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0037-reuse-openaidr-append-cursors-in-the-daemon.md +0 -0
  288. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0038-poll-normalized-sessions-for-supplemental-changes.md +0 -0
  289. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0039-send-usage-telemetry-by-default-with-an-opt-out.md +0 -0
  290. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0041-defer-native-windows-support.md +0 -0
  291. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0042-read-the-build-commit-from-the-install-record.md +0 -0
  292. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0043-name-the-session-agent-and-host-and-count-errors-by-class.md +0 -0
  293. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0044-send-the-build-as-version-prints-it.md +0 -0
  294. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0045-scan-every-session-and-outlive-them.md +0 -0
  295. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0046-the-finding-store-is-an-append-only-queue.md +0 -0
  296. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0047-capture-activity-during-correlation-or-lose-it.md +0 -0
  297. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0048-the-daemon-keeps-a-leveled-content-free-activity-log.md +0 -0
  298. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0056-stop-a-resident-daemon-by-record-and-signal.md +0 -0
  299. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0057-grow-the-queue-schema-additively-and-share-only-the-document.md +0 -0
  300. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0058-one-word-for-a-finding-columns-for-a-counter-and-a-push-that-does-not-wait.md +0 -0
  301. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0059-the-daemon-does-not-decide-whether-it-should-be-running.md +0 -0
  302. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0060-two-upload-postures-not-one-command-with-two-sources.md +0 -0
  303. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0061-the-drain-sends-findings-only.md +0 -0
  304. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0062-hold-the-transition-lock-across-remote-side-effects.md +0 -0
  305. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0063-underbuilt-debt-does-not-hold-the-scan-watermark.md +0 -0
  306. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0064-a-redacted-value-has-one-path-span.md +0 -0
  307. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0065-asset-external-id-resolves-by-a-ladder.md +0 -0
  308. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0066-host-owned-daemon-supervision.md +0 -0
  309. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0067-a-webhook-is-an-independent-queue-subscriber.md +0 -0
  310. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0068-webhooks-retry-the-retained-backlog.md +0 -0
  311. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0069-webhooks-deliver-what-retention-holds.md +0 -0
  312. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0071-render-the-allowlisted-payload-per-destination.md +0 -0
  313. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0074-a-window-selects-findings-by-when-they-happened.md +0 -0
  314. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0076-two-phase-detection-pipeline.md +0 -0
  315. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0077-the-bom-job-wakes-once-at-startup-staggered.md +0 -0
  316. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0078-a-seeded-display-prefix-replaces-the-hostname-label.md +0 -0
  317. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0079-the-monitor-page-renders-findings-not-pipeline-health.md +0 -0
  318. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0080-enabling-reasoning-does-not-requeue-the-past.md +0 -0
  319. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0081-reasoning-activation-returns-to-explicit-opt-in.md +0 -0
  320. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0082-monitor-checks-every-installed-component-by-default.md +0 -0
  321. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0083-each-block-reason-is-its-own-rule.md +0 -0
  322. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0084-a-recursive-deletes-evidence-is-the-rm-that-ran.md +0 -0
  323. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0085-show-when-and-which-finding-slack-delivered.md +0 -0
  324. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0086-a-refusal-names-who-answered-the-call.md +0 -0
  325. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0087-deploy-compiled-policy-with-a-privileged-scheduled-job.md +0 -0
  326. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0088-slack-alerts-leave-out-confidence.md +0 -0
  327. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0089-infra-gate-reads-commands-not-shell-semantics.md +0 -0
  328. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0091-mark-our-own-machines-and-name-what-failed.md +0 -0
  329. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0092-cost-is-its-own-rule-family.md +0 -0
  330. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0094-estimate-cost-from-tokens-the-agent-figure-is-a-cross-check.md +0 -0
  331. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0095-cost-findings-reach-fleet-each-rule-can-be-muted.md +0 -0
  332. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0097-the-daemon-makes-cost-findings-and-the-monitor-reads-them.md +0 -0
  333. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0098-a-run-is-its-main-session.md +0 -0
  334. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0100-the-monitor-runs-offline-for-the-website.md +0 -0
  335. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0102-token-use-is-never-compared-with-a-providers-usage-api.md +0 -0
  336. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0103-finished-runs-may-leave-as-numbers-for-org-baselines.md +0 -0
  337. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0105-an-asset-key-is-a-bare-uuid.md +0 -0
  338. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0106-boot-id-is-salted-with-the-pid-namespace.md +0 -0
  339. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0107-the-daemon-follows-every-kind-openaidr-reads.md +0 -0
  340. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0108-a-kind-renamed-before-any-release-read-it-keeps-no-alias.md +0 -0
  341. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0110-every-kinds-account-comes-from-openaidr.md +0 -0
  342. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0111-built-in-sub-agents-and-skills-come-from-the-bom.md +0 -0
  343. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0112-a-person-is-known-by-the-accounts-on-the-host.md +0 -0
  344. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0114-similar-sessions-are-the-same-agent-in-the-same-repo.md +0 -0
  345. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0115-usage-states-its-coverage-and-fleet-returns-expected-runs.md +0 -0
  346. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0116-a-component-row-carries-what-its-results-cost-under-one-closed-key.md +0 -0
  347. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0117-a-component-row-on-the-day-of-a-switch-counts-from-the-switch.md +0 -0
  348. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0119-read-sessions-from-an-ai-gateway-and-block-inline.md +0 -0
  349. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0120-own-the-adapter-event-envelope.md +0 -0
  350. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0121-a-cloud-sessions-runs-are-its-persons-and-a-card-says-where-its-name-came-from.md +0 -0
  351. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0122-use-stacktrace-as-the-python-package.md +0 -0
  352. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/0124-fleet-imports-core-from-the-stacktrace-distribution.md +0 -0
  353. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/HOOK-PROMPT.md +0 -0
  354. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/adrs/TEMPLATE.md +0 -0
  355. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/cutover-openaca-remote.md +0 -0
  356. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/plans/002-session-input.md +0 -0
  357. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/plans/003-correlation.md +0 -0
  358. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/plans/004-detector.md +0 -0
  359. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/plans/005-remote-sync.md +0 -0
  360. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/plans/006-cli-composition.md +0 -0
  361. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/plans/007-detection-upload.md +0 -0
  362. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/plans/008-monitor.md +0 -0
  363. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/plans/009-reasoning-jev.md +0 -0
  364. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/plans/010-session-daemon.md +0 -0
  365. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/plans/011-daemon-store.md +0 -0
  366. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/plans/012-daemon-scanning.md +0 -0
  367. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/plans/013-daemon-uploads.md +0 -0
  368. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/plans/014-asset-identity.md +0 -0
  369. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/plans/015-managed-policy-deployment.md +0 -0
  370. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/plans/016-cost-phase-1.md +0 -0
  371. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/plans/017-cost-phase-2.md +0 -0
  372. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/releases/v0.0.1.md +0 -0
  373. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/releases/v0.1.0.md +0 -0
  374. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/releases/v0.10.0.md +0 -0
  375. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/releases/v0.11.0.md +0 -0
  376. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/releases/v0.2.0.md +0 -0
  377. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/releases/v0.2.1.md +0 -0
  378. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/releases/v0.2.2.md +0 -0
  379. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/releases/v0.2.3.md +0 -0
  380. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/releases/v0.3.0.md +0 -0
  381. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/releases/v0.3.1.md +0 -0
  382. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/releases/v0.4.0.md +0 -0
  383. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/releases/v0.4.1.md +0 -0
  384. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/releases/v0.5.0.md +0 -0
  385. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/releases/v0.5.1.md +0 -0
  386. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/releases/v0.5.2.md +0 -0
  387. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/releases/v0.5.3.md +0 -0
  388. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/releases/v0.6.0.md +0 -0
  389. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/releases/v0.6.1.md +0 -0
  390. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/releases/v0.7.0.md +0 -0
  391. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/releases/v0.7.1.md +0 -0
  392. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/releases/v0.8.0.md +0 -0
  393. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/releases/v0.9.0.md +0 -0
  394. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/research/001-intent-drift-metric.md +0 -0
  395. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/specs/agent-observability.md +0 -0
  396. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/specs/aidr.md +0 -0
  397. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/specs/cli-composition.md +0 -0
  398. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/specs/correlation.md +0 -0
  399. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/specs/cost-phase-2.md +0 -0
  400. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/specs/daemon-scanning.md +0 -0
  401. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/specs/daemon-store.md +0 -0
  402. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/specs/detection-upload.md +0 -0
  403. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/specs/event-time.md +0 -0
  404. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/specs/monitor-inventory.md +0 -0
  405. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/specs/notification-delivery.md +0 -0
  406. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/specs/production-agent-observability.md +0 -0
  407. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/specs/reasoning-jev.md +0 -0
  408. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/docs/specs/session-input.md +0 -0
  409. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/examples/observations/custom_agent.py +0 -0
  410. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/infra/README.md +0 -0
  411. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/infra/bedrock-sandbox/.gitignore +0 -0
  412. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/infra/bedrock-sandbox/ci.tf +0 -0
  413. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/infra/bedrock-sandbox/main.tf +0 -0
  414. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/infra/bedrock-sandbox/outputs.tf +0 -0
  415. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/infra/bedrock-sandbox/variables.tf +0 -0
  416. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/infra/guard-staging/.gitignore +0 -0
  417. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/infra/guard-staging/README.md +0 -0
  418. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/infra/guard-staging/check.sh +0 -0
  419. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/infra/guard-staging/ci.tf +0 -0
  420. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/infra/guard-staging/connect.sh +0 -0
  421. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/infra/guard-staging/images/envoy/Dockerfile +0 -0
  422. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/infra/guard-staging/images/envoy/entrypoint.sh +0 -0
  423. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/infra/guard-staging/images/envoy/litellm.yaml +0 -0
  424. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/infra/guard-staging/images/litellm/Dockerfile +0 -0
  425. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/infra/guard-staging/images/litellm/config.subscription.yaml +0 -0
  426. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/infra/guard-staging/images/litellm/config.yaml +0 -0
  427. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/infra/guard-staging/images/litellm/entrypoint.sh +0 -0
  428. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/infra/guard-staging/main.tf +0 -0
  429. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/infra/guard-staging/moved.tf +0 -0
  430. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/infra/guard-staging/outputs.tf +0 -0
  431. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/infra/guard-staging/smoke.sh +0 -0
  432. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/infra/guard-staging/user-key.sh +0 -0
  433. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/infra/guard-staging/variables.tf +0 -0
  434. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/infra/modules/express-gateway/main.tf +0 -0
  435. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/infra/modules/express-gateway/outputs.tf +0 -0
  436. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/infra/modules/express-gateway/variables.tf +0 -0
  437. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/integrations/e2e/claude.sh +0 -0
  438. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/integrations/e2e/scenarios.sh +0 -0
  439. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/integrations/envoy/envoy.yaml +0 -0
  440. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/integrations/envoy/run.sh +0 -0
  441. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/integrations/litellm/README.md +0 -0
  442. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/integrations/litellm/config.example.yaml +0 -0
  443. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/integrations/litellm/config.subscription.yaml +0 -0
  444. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/integrations/litellm/e2e/config.baseten.yaml +0 -0
  445. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/integrations/litellm/e2e/config.mock.yaml +0 -0
  446. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/integrations/litellm/e2e/mock_upstream.py +0 -0
  447. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/integrations/litellm/e2e/parity.py +0 -0
  448. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/integrations/litellm/stacktrace_keys.py +0 -0
  449. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/integrations/litellm/stacktrace_litellm.py +0 -0
  450. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/scripts/cost_latency.py +0 -0
  451. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/scripts/git-hooks/pre-push +0 -0
  452. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/scripts/install-hooks.sh +0 -0
  453. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/__main__.py +0 -0
  454. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/analysis.py +0 -0
  455. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/build.py +0 -0
  456. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/core/__init__.py +0 -0
  457. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/core/observations.py +0 -0
  458. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/correlate/__init__.py +0 -0
  459. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/correlate/acquire.py +0 -0
  460. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/correlate/join.py +0 -0
  461. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/correlate/orchestrate.py +0 -0
  462. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/correlate/project_map.py +0 -0
  463. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/correlate/record.py +0 -0
  464. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/correlate/render.py +0 -0
  465. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/cost/__init__.py +0 -0
  466. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/cost/clock.py +0 -0
  467. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/cost/component_usage.py +0 -0
  468. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/cost/components.py +0 -0
  469. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/cost/evidence.py +0 -0
  470. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/cost/org_baselines.py +0 -0
  471. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/cost/runs.py +0 -0
  472. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/cost/tokens.py +0 -0
  473. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/cost/totals.py +0 -0
  474. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/daemon/__init__.py +0 -0
  475. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/daemon/accounts.py +0 -0
  476. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/daemon/activity_log.py +0 -0
  477. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/daemon/bom.py +0 -0
  478. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/daemon/cli.py +0 -0
  479. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/daemon/composition.py +0 -0
  480. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/daemon/identity.py +0 -0
  481. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/daemon/jobs.py +0 -0
  482. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/daemon/lifecycle.py +0 -0
  483. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/daemon/observer.py +0 -0
  484. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/daemon/paths.py +0 -0
  485. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/daemon/scan.py +0 -0
  486. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/daemon/service.py +0 -0
  487. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/detector/__init__.py +0 -0
  488. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/detector/analyzer.py +0 -0
  489. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/detector/priors.py +0 -0
  490. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/detector/prompts/jev-v1/stacktrace-deceptive-completion.json +0 -0
  491. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/detector/prompts/jev-v2/stacktrace-deceptive-completion.json +0 -0
  492. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/detector/prompts/jev-v2/stacktrace-infra-unsafe-action.json +0 -0
  493. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/detector/prompts/v1/exclusions.md +0 -0
  494. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/detector/prompts/v1/framing.md +0 -0
  495. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/detector/prompts/v1/stacktrace-deceptive-completion.md +0 -0
  496. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/detector/verdict.py +0 -0
  497. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/detector/windows.py +0 -0
  498. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/gateway/__init__.py +0 -0
  499. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/gateway/analyzer.py +0 -0
  500. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/gateway/check.py +0 -0
  501. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/gateway/cli.py +0 -0
  502. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/gateway/exchange.py +0 -0
  503. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/gateway/formats/__init__.py +0 -0
  504. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/gateway/formats/anthropic.py +0 -0
  505. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/gateway/formats/bedrock.py +0 -0
  506. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/gateway/formats/body.py +0 -0
  507. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/gateway/formats/openai_chat.py +0 -0
  508. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/gateway/formats/openai_responses.py +0 -0
  509. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/gateway/service.py +0 -0
  510. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/gateway/sink.py +0 -0
  511. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/monitor/__init__.py +0 -0
  512. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/monitor/inventory.py +0 -0
  513. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/monitor/offline.py +0 -0
  514. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/monitor/reasoning.py +0 -0
  515. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/monitor/server.py +0 -0
  516. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/monitor/site/apple-icon.png +0 -0
  517. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/monitor/site/favicon.ico +0 -0
  518. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/monitor/site/fonts/OFL.txt +0 -0
  519. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/monitor/site/fonts/dm-mono-400-latin.woff2 +0 -0
  520. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/monitor/site/fonts/dm-mono-500-latin.woff2 +0 -0
  521. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/monitor/site/fonts/dm-sans-latin.woff2 +0 -0
  522. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/monitor/site/fonts/playfair-display-600-italic-latin.woff2 +0 -0
  523. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/monitor/site/icon.svg +0 -0
  524. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/monitor/site/inventory.js +0 -0
  525. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/monitor/state.py +0 -0
  526. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/monitor/verdicts.py +0 -0
  527. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/monitor/watch.py +0 -0
  528. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/options.py +0 -0
  529. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/private_state.py +0 -0
  530. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/py.typed +0 -0
  531. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/remote/__init__.py +0 -0
  532. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/remote/identity.py +0 -0
  533. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/remote/payload.py +0 -0
  534. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/remote/policy.py +0 -0
  535. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/remote/policy_service.py +0 -0
  536. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/remote/policy_worker.py +0 -0
  537. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/remote/redact.py +0 -0
  538. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/remote/spool.py +0 -0
  539. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/remote/sync_detect.py +0 -0
  540. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/sdk.py +0 -0
  541. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/sessions/__init__.py +0 -0
  542. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/sessions/access.py +0 -0
  543. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/sessions/index.py +0 -0
  544. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/sessions/lineage.py +0 -0
  545. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/sessions/outcome.py +0 -0
  546. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/sessions/render.py +0 -0
  547. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/telemetry/__init__.py +0 -0
  548. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/telemetry/cli.py +0 -0
  549. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/telemetry/posthog.py +0 -0
  550. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/telemetry/state.py +0 -0
  551. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/webhook/__init__.py +0 -0
  552. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/webhook/cli.py +0 -0
  553. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/src/stacktrace/webhook/config.py +0 -0
  554. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/__init__.py +0 -0
  555. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/agent_bom_fixture.py +0 -0
  556. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/cost/__init__.py +0 -0
  557. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/cost/scenarios.py +0 -0
  558. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/cost/test_as_of_cuts_every_timed_collection.py +0 -0
  559. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/cost/test_clock.py +0 -0
  560. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/cost/test_component_usage.py +0 -0
  561. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/cost/test_components.py +0 -0
  562. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/cost/test_cost_latency.py +0 -0
  563. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/cost/test_evidence.py +0 -0
  564. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/cost/test_ledger.py +0 -0
  565. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/cost/test_org_baselines.py +0 -0
  566. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/cost/test_reasons.py +0 -0
  567. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/cost/test_runs.py +0 -0
  568. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/cost/test_totals.py +0 -0
  569. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/daemon/__init__.py +0 -0
  570. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/daemon/observing.py +0 -0
  571. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/daemon/test_activity_log.py +0 -0
  572. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/daemon/test_composition.py +0 -0
  573. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/daemon/test_config.py +0 -0
  574. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/daemon/test_cost_guidance.py +0 -0
  575. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/daemon/test_detection_needs_no_subscriber.py +0 -0
  576. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/daemon/test_identity.py +0 -0
  577. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/daemon/test_job_thread.py +0 -0
  578. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/daemon/test_jobs.py +0 -0
  579. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/daemon/test_lifecycle.py +0 -0
  580. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/daemon/test_observer.py +0 -0
  581. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/daemon/test_queue_reader.py +0 -0
  582. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/daemon/test_scan.py +0 -0
  583. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/daemon/test_service.py +0 -0
  584. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/daemon/test_socket.py +0 -0
  585. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/daemon/test_stage_times.py +0 -0
  586. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/daemon/test_store.py +0 -0
  587. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/daemon/test_subagent_routing.py +0 -0
  588. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/daemon/test_the_drained_payload_is_the_cold_one.py +0 -0
  589. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/gateway/__init__.py +0 -0
  590. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/gateway/fixtures/claude-code-2.1.296-suite/gateway-last-turn.json +0 -0
  591. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/gateway/fixtures/claude-code-2.1.296-suite/projects/run/b23c3bab-a677-4b5f-ac36-e132c7df29e5.jsonl +0 -0
  592. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/gateway/test_analyzer.py +0 -0
  593. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/gateway/test_bodies_and_logs.py +0 -0
  594. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/gateway/test_call_records.py +0 -0
  595. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/gateway/test_check.py +0 -0
  596. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/gateway/test_every_choice_is_read.py +0 -0
  597. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/gateway/test_every_read_field_is_validated.py +0 -0
  598. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/gateway/test_every_shortfall_is_a_recorded_fallback.py +0 -0
  599. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/gateway/test_gateway_keys.py +0 -0
  600. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/gateway/test_gateway_scripts.py +0 -0
  601. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/gateway/test_litellm_stream.py +0 -0
  602. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/gateway/test_litellm_subscription_config.py +0 -0
  603. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/gateway/test_parity_live_capture.py +0 -0
  604. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/gateway/test_service.py +0 -0
  605. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/gateway/test_unstated_outcomes.py +0 -0
  606. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/monitor/__init__.py +0 -0
  607. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/monitor/inventory_harness.mjs +0 -0
  608. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/monitor/test_cost_range_switch.py +0 -0
  609. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/monitor/test_inventory.py +0 -0
  610. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/monitor/test_inventory_page.py +0 -0
  611. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/monitor/test_offline.py +0 -0
  612. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/monitor/test_reasoning_gates.py +0 -0
  613. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/monitor/test_render.py +0 -0
  614. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/monitor/test_server.py +0 -0
  615. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/monitor/test_state.py +0 -0
  616. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/monitor/test_verdicts.py +0 -0
  617. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/monitor/test_watch.py +0 -0
  618. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/observations/test_contract.py +0 -0
  619. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/observations/test_decisions.py +0 -0
  620. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/observations/test_event_envelope.py +0 -0
  621. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/remote/__init__.py +0 -0
  622. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/remote/helpers.py +0 -0
  623. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/remote/test_detect_activity.py +0 -0
  624. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/remote/test_detect_cli.py +0 -0
  625. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/remote/test_detect_client.py +0 -0
  626. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/remote/test_detect_layers_compose.py +0 -0
  627. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/remote/test_detect_payload_reaches_the_cloud_model.py +0 -0
  628. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/remote/test_detect_redaction.py +0 -0
  629. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/remote/test_detect_spool.py +0 -0
  630. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/remote/test_detect_upload_contract.py +0 -0
  631. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/remote/test_detect_wire_payload.py +0 -0
  632. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/remote/test_identity.py +0 -0
  633. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/remote/test_no_local_path_survives_redaction.py +0 -0
  634. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/remote/test_payload.py +0 -0
  635. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/remote/test_policy.py +0 -0
  636. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/remote/test_policy_service.py +0 -0
  637. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/remote/test_policy_service_cli.py +0 -0
  638. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/remote/test_redact_payload.py +0 -0
  639. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/remote/test_spool.py +0 -0
  640. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/remote/test_sync.py +0 -0
  641. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/remote/test_sync_detect.py +0 -0
  642. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/remote/test_upload_contract.py +0 -0
  643. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/remote/test_usage_client.py +0 -0
  644. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/sdk/test_observation_client.py +0 -0
  645. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/telemetry/__init__.py +0 -0
  646. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/telemetry/test_activity_log.py +0 -0
  647. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/telemetry/test_cli.py +0 -0
  648. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/telemetry/test_events.py +0 -0
  649. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/telemetry/test_every_internal_save_is_reported.py +0 -0
  650. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/telemetry/test_release_gate.py +0 -0
  651. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/telemetry/test_state.py +0 -0
  652. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/telemetry/test_uploader.py +0 -0
  653. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_acquire.py +0 -0
  654. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_adr_cross_references_are_reciprocal.py +0 -0
  655. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_agent_instance_id.py +0 -0
  656. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_analysis.py +0 -0
  657. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_bom_shape.py +0 -0
  658. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_call_status_conventions.py +0 -0
  659. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_cli.py +0 -0
  660. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_correlate_orchestrate.py +0 -0
  661. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_correlate_render.py +0 -0
  662. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_correlated_session.py +0 -0
  663. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_detection_components.py +0 -0
  664. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_detection_event_time.py +0 -0
  665. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_detection_subject.py +0 -0
  666. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_detector_analyzer_contract.py +0 -0
  667. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_detector_analyzer_live.py +0 -0
  668. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_detector_cache.py +0 -0
  669. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_detector_infra_reasoning.py +0 -0
  670. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_detector_jev.py +0 -0
  671. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_detector_names_the_service.py +0 -0
  672. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_detector_priors.py +0 -0
  673. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_detector_render.py +0 -0
  674. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_detector_run.py +0 -0
  675. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_detector_verdict.py +0 -0
  676. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_detector_windows.py +0 -0
  677. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_evidence_is_dated_not_numbered.py +0 -0
  678. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_help_sections.py +0 -0
  679. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_monitor_cli.py +0 -0
  680. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_no_live_document_states_the_old_stage_three_default.py +0 -0
  681. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_no_test_undoes_every_patch_at_once.py +0 -0
  682. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_openaca_contract.py +0 -0
  683. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_option_arity_matches_the_binary.py +0 -0
  684. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_project_map.py +0 -0
  685. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_python_namespace.py +0 -0
  686. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_readme_examples_are_real_output.py +0 -0
  687. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_release_readiness.py +0 -0
  688. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_sessions_access.py +0 -0
  689. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_sessions_end_to_end.py +0 -0
  690. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_sessions_protocol_typing.py +0 -0
  691. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_sessions_protocols.py +0 -0
  692. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_sessions_render.py +0 -0
  693. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_shell_separators_match_the_shell.py +0 -0
  694. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_signed_in_asks_the_agent.py +0 -0
  695. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_stored_verdicts_are_never_gated_on_reasoning.py +0 -0
  696. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_the_detector_spec_lists_the_shipped_catalogue.py +0 -0
  697. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_the_jev_spec_states_the_shipped_thresholds.py +0 -0
  698. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_verification_subcommands_match_the_binary.py +0 -0
  699. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/test_what_jev_is_told_is_what_was_disclosed.py +0 -0
  700. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/tool_fields.py +0 -0
  701. {stacktrace_cli-0.11.0 → stacktrace_cli-0.13.0}/tests/webhook/test_cli.py +0 -0
@@ -5,6 +5,12 @@ on:
5
5
  branches: [main]
6
6
  pull_request:
7
7
 
8
+ # A new push to a PR cancels the run for the push it replaces, as in Fleet.
9
+ # Runs on main are never cancelled, so every merged commit is checked.
10
+ concurrency:
11
+ group: ci-${{ github.workflow }}-${{ github.ref }}
12
+ cancel-in-progress: ${{ github.event_name == 'pull_request' }}
13
+
8
14
  jobs:
9
15
  lint-and-test:
10
16
  runs-on: ubuntu-latest
@@ -240,13 +240,23 @@ the alternative we rejected? If yes, write the ADR.
240
240
  full ADR. The cost of one Read is much smaller than the cost of
241
241
  re-deriving or re-litigating a decision.
242
242
 
243
- **Supersede, never edit.** Accepted ADRs are immutable. If a later
244
- decision contradicts an existing ADR, write a NEW ADR with
243
+ **Supersede or amend, never edit.** Accepted ADRs are immutable. If a later
244
+ decision contradicts an existing ADR, write a NEW ADR that supersedes or
245
+ amends it, as the next rule decides. For a supersession, put
245
246
  `supersedes: NNNN` in its frontmatter, and update the old one's
246
247
  frontmatter to `status: superseded` + `superseded-by: NNNN`. Old PRs
247
248
  need to remain readable against the rules in effect at the time —
248
249
  silently editing an accepted ADR breaks that contract.
249
250
 
251
+ **Amend or supersede: one test.** Ask if any decision in the old ADR still
252
+ binds, whether or not the ADR numbers its decisions. If one does, amend: put
253
+ `amends: NNNN` on the new ADR and `amended-by: NNNN` on the old one, and both
254
+ stay active. If none does, supersede. Only this test decides. The size of
255
+ the change, the importance of the replaced clause, and the old ADR's "When
256
+ to revisit" text do not change the result. `docs/adrs/INDEX.md` gives the
257
+ worked example. A reviewer reports the choice only when the finding names
258
+ every decision in the old ADR and shows that none still binds.
259
+
250
260
  ## Commits and PRs
251
261
 
252
262
  - Frequent commits, one logical change per commit.
@@ -264,12 +274,55 @@ silently editing an accepted ADR breaks that contract.
264
274
  the user explicitly says "merge locally," "keep as branch," or
265
275
  "discard."
266
276
 
277
+ ## Writing documents
278
+
279
+ Write all Markdown documents in ASD-STE100 Simplified Technical English.
280
+ This includes specs, ADRs, READMEs, plans and release notes. The rule
281
+ applies to every author, human or agent.
282
+
283
+ - Write one idea in each sentence.
284
+ - Use a maximum of 20 words in an instruction and 25 words in a
285
+ description.
286
+ - Use a maximum of six sentences in a paragraph.
287
+ - Use the active voice and the present tense.
288
+ - Start an instruction with a verb, for example "Run the tests."
289
+ - Use "a", "an" and "the". Do not remove them to make the text shorter.
290
+ - Use one term for one thing, and use it the same way in all of the
291
+ document.
292
+ - Use simple, common words. Do not use filler, such as "in order to" or
293
+ "utilize".
294
+ - Do not use em-dash asides. Write a new sentence.
295
+ - Do not change technical names, commands or code. Code blocks, tables and
296
+ quoted text do not have to obey these rules.
297
+
298
+ Apply these rules to the text that you write or change. Do not rewrite an
299
+ existing document only to change its style. Do not edit an accepted ADR to
300
+ change its style.
301
+
302
+ These rules are for authors. They are not a code review topic. Reviewers
303
+ do not report style findings.
304
+
267
305
  ## Code Review Rules
268
306
 
307
+ **The goal of review is to converge.** The reviewer and the fixer both work
308
+ toward a PR that can merge in few rounds. Each round costs a full CI run and
309
+ a review, and a finding on text that was already reviewed starts another
310
+ round. Converging does not mean letting a serious defect through. The first
311
+ review catches the glaring issues, and later reviews check only what changed.
312
+
269
313
  ### Reviewer
270
314
 
271
- - Review the full PR against its base branch. Report all qualifying
272
- findings together; do not deliberately reserve findings for later rounds.
315
+ - **The first review of a PR is the complete one.** Review the full PR
316
+ against its base branch. Report every qualifying finding together. Do not
317
+ reserve findings for later rounds.
318
+ - **A later review covers only what changed since the previous reviewed
319
+ head.** That is the PR's new commits, plus existing code whose behavior
320
+ those commits change, such as a caller or dependency of changed code.
321
+ Changes that a merge or rebase brings in from the base branch are not part
322
+ of it.
323
+ - **Do not report a defect that existed at the previous reviewed head**,
324
+ unless the new commits change its behavior. Exception: report a P0 or P1
325
+ even if it existed before, and label it a late discovery.
273
326
  - Report concrete, actionable defects with supported failure scenarios.
274
327
  Respect explicit scope decisions and accepted tradeoffs. Do not present
275
328
  speculative hardening or optional improvements as correctness defects.
@@ -280,12 +333,16 @@ silently editing an accepted ADR breaks that contract.
280
333
  - P3: low-priority suggestion.
281
334
  - Report only P0 and P1 findings. Do not post P2 or P3 findings, inline or
282
335
  in the review summary. Do not inflate priority to get a finding reported.
283
- - On subsequent reviews, verify earlier fixes and inspect their effects on
284
- callers and dependencies. Older code within the PR remains reviewable.
336
+ - A missing detail or an optional improvement is never P1. This applies to
337
+ code and to documentation. A P1 is something wrong: a defect, or a false
338
+ statement.
339
+ - On later reviews, verify that the earlier fixes work. Check their effects on
340
+ callers and dependencies.
285
341
  - When review history supports it, identify a finding as:
286
342
  - Regression: introduced since the previous reviewed head.
287
- - Late discovery: present at a previously reviewed head but not reported.
288
343
  - Unresolved: a previously reported defect remains.
344
+ - Late discovery: present at a previously reviewed head but not reported.
345
+ Only a P0 or P1 may be a late discovery.
289
346
  If the history is unavailable or ambiguous, say so rather than guessing.
290
347
  - Deduplicate by underlying defect and remedy, not by title. Refer to an
291
348
  existing thread for an unresolved defect instead of opening another one.
@@ -301,6 +358,13 @@ silently editing an accepted ADR breaks that contract.
301
358
  If its reasoning or priority is wrong, explain why rather than applying
302
359
  it solely because a reviewer requested it. Surface unresolved disputes
303
360
  for human judgment.
361
+ - Decline a late discovery that is not P0 or P1. If the defect existed at the
362
+ previous reviewed head and the new commits do not change its behavior,
363
+ reply that the review rules exclude it, and do not fix it. A declined
364
+ finding does not count as a fix round.
365
+ - Keep each fix to what its finding needs. Do not rewrite or extend nearby
366
+ code or text. A change beyond the finding gives the next review new
367
+ material to report, and the PR does not converge.
304
368
  - Fix the underlying invariant across relevant call sites. Test the
305
369
  failure class rather than only the reported example.
306
370
  - Preserve accepted fixes and regression tests when reviewing a rebased PR or
@@ -310,9 +374,18 @@ silently editing an accepted ADR breaks that contract.
310
374
  - Batch related fixes into one tested update before requesting re-review.
311
375
  Avoid duplicate review requests for the same head.
312
376
  - An automated fixer pushes ordinary commits to the existing PR branch and
313
- runs every required gate. It does not bypass gates, merge, rebase, or
314
- force-push, or change workflows, permissions, credentials, or branch
315
- protection. Report an environment failure or required rebase as a blocker.
377
+ runs every required gate. It does not bypass gates, merge, or change
378
+ workflows, permissions, credentials, or branch protection. It force-pushes
379
+ only after a rebase, as the next rule says. Report an environment failure
380
+ as a blocker.
381
+ - When a PR branch conflicts with its base branch, the automated fixer
382
+ rebases it onto the current base branch. The base branch is normally
383
+ `main`. It resolves the conflicts, runs every required gate, and pushes
384
+ with `git push --force-with-lease`. It does not merge the base branch into
385
+ the PR branch. PR branches are rarely shared, so rewritten history is
386
+ acceptable. Report a conflict as a blocker when both sides change the same
387
+ logic and each resolution loses behavior. A rebase with no other change is
388
+ not a fix round.
316
389
  - After pushing fixes, wait for CI and a completed review of the current
317
390
  head. Silence, an older review, or a running review is not clearance.
318
391
  - Stop and ask for human input when the same failure repeats without progress.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: stacktrace-cli
3
- Version: 0.11.0
3
+ Version: 0.13.0
4
4
  Summary: CLI for Stacktrace — Detection and Response platform for AI Agents.
5
5
  Project-URL: Homepage, https://stacktrace.ai
6
6
  Author-email: "Stacktrace AI, Inc" <founders@stacktrace.ai>
@@ -20,8 +20,8 @@ Classifier: Topic :: Security
20
20
  Requires-Python: >=3.11
21
21
  Requires-Dist: click>=8.1
22
22
  Requires-Dist: httpx<1.0.dev0,>=0.28.1
23
- Requires-Dist: openaca==0.10.1
24
- Requires-Dist: openaidr==0.6.3
23
+ Requires-Dist: openaca==0.11.0
24
+ Requires-Dist: openaidr==0.7.0
25
25
  Requires-Dist: posthog<8,>=7.0
26
26
  Requires-Dist: pydantic<3,>=2.10
27
27
  Description-Content-Type: text/markdown
@@ -52,7 +52,7 @@ Requires Python 3.11 or newer.
52
52
 
53
53
  ```console
54
54
  $ stacktrace --version
55
- stacktrace 0.11.0 (openaca 0.10.1)
55
+ stacktrace 0.13.0
56
56
  ```
57
57
 
58
58
  ## Python package namespace
@@ -107,9 +107,14 @@ stacktrace webhook disable
107
107
  ```
108
108
 
109
109
  `configure` prompts for an optional HMAC-SHA256 signing secret without echoing
110
- it. The endpoint receives a narrow JSON document containing the event ID, rule,
111
- severity, confidence and session identity—not transcript content, finding prose
112
- or evidence. Delivery is at least once, so receivers should deduplicate on
110
+ it. The endpoint receives a narrow JSON document: the event ID, detection time,
111
+ rule, severity, confidence and session identity, plus, when the finding has
112
+ them, the rule's catalogue title, the component it concerns (type and name) and
113
+ the kinds of evidence it cites. For `stacktrace-destructive-action` the
114
+ evidence kind is `rm -rf` and the paths it deleted outside the workspace,
115
+ redacted so an absolute path is never sent (ADR-0073, ADR-0084). Transcript
116
+ content, remediation text and evidence detail are not sent. Delivery is at
117
+ least once, so receivers should deduplicate on
113
118
  `event_id`. The URL and secret are stored in a mode-0600 host configuration
114
119
  file. HTTP is accepted only for loopback development endpoints.
115
120
 
@@ -250,6 +255,9 @@ Beta, and under active development.
250
255
  Devin sessions alike (Devin CLI and Devin Desktop's local agent). Session collection is
251
256
  [OpenAIDR](https://github.com/open-agent-security/openaidr)'s, and further agent
252
257
  kinds arrive with it. The daemon observes every kind it reads, sub-agents included.
258
+ [Agent support](docs/agent-support.md) lists what works for each agent, rule by
259
+ rule, and what cannot. Codex is next
260
+ ([spec](docs/specs/codex-agent-kind.md)).
253
261
 
254
262
  ## Built on
255
263
 
@@ -24,7 +24,7 @@ Requires Python 3.11 or newer.
24
24
 
25
25
  ```console
26
26
  $ stacktrace --version
27
- stacktrace 0.11.0 (openaca 0.10.1)
27
+ stacktrace 0.13.0
28
28
  ```
29
29
 
30
30
  ## Python package namespace
@@ -79,9 +79,14 @@ stacktrace webhook disable
79
79
  ```
80
80
 
81
81
  `configure` prompts for an optional HMAC-SHA256 signing secret without echoing
82
- it. The endpoint receives a narrow JSON document containing the event ID, rule,
83
- severity, confidence and session identity—not transcript content, finding prose
84
- or evidence. Delivery is at least once, so receivers should deduplicate on
82
+ it. The endpoint receives a narrow JSON document: the event ID, detection time,
83
+ rule, severity, confidence and session identity, plus, when the finding has
84
+ them, the rule's catalogue title, the component it concerns (type and name) and
85
+ the kinds of evidence it cites. For `stacktrace-destructive-action` the
86
+ evidence kind is `rm -rf` and the paths it deleted outside the workspace,
87
+ redacted so an absolute path is never sent (ADR-0073, ADR-0084). Transcript
88
+ content, remediation text and evidence detail are not sent. Delivery is at
89
+ least once, so receivers should deduplicate on
85
90
  `event_id`. The URL and secret are stored in a mode-0600 host configuration
86
91
  file. HTTP is accepted only for loopback development endpoints.
87
92
 
@@ -222,6 +227,9 @@ Beta, and under active development.
222
227
  Devin sessions alike (Devin CLI and Devin Desktop's local agent). Session collection is
223
228
  [OpenAIDR](https://github.com/open-agent-security/openaidr)'s, and further agent
224
229
  kinds arrive with it. The daemon observes every kind it reads, sub-agents included.
230
+ [Agent support](docs/agent-support.md) lists what works for each agent, rule by
231
+ rule, and what cannot. Codex is next
232
+ ([spec](docs/specs/codex-agent-kind.md)).
225
233
 
226
234
  ## Built on
227
235
 
@@ -0,0 +1,41 @@
1
+ # Security policy
2
+
3
+ ## Reporting a vulnerability
4
+
5
+ Email **security@stacktrace.ai**. Please do not open a public issue, post in a
6
+ public channel, or disclose details before we have released a fix.
7
+
8
+ A useful report says:
9
+
10
+ - the `stacktrace --version` output and your operating system;
11
+ - what you did, what happened, and what you expected;
12
+ - whether the issue can expose session content, credentials or file paths, or
13
+ send anything off the machine that [docs/trust.md](docs/trust.md) says stays
14
+ on it.
15
+
16
+ We acknowledge a report within three business days and keep you informed until
17
+ it is resolved. Once a fix is released we credit you in the release notes,
18
+ unless you ask us not to.
19
+
20
+ ## Supported versions
21
+
22
+ Fixes ship in a new release on PyPI (`stacktrace-cli`). Only the latest release
23
+ is supported: upgrade with `uv tool upgrade stacktrace-cli` or
24
+ `pip install -U stacktrace-cli`. A published version is never re-uploaded, so a
25
+ fix always arrives as a new version number.
26
+
27
+ ## Scope
28
+
29
+ In scope: the `stacktrace` command, its daemon, and every path by which it
30
+ sends data off the machine (see [docs/trust.md](docs/trust.md)).
31
+
32
+ Session collection and composition analysis come from two open-source
33
+ dependencies, [`openaidr`](https://github.com/open-agent-security/openaidr) and
34
+ [`openaca`](https://pypi.org/project/openaca/). Report an issue in either one
35
+ to us at the same address; we coordinate the fix upstream.
36
+
37
+ ## Good-faith research
38
+
39
+ We will not pursue legal action against research that is done in good faith,
40
+ stays within your own machines and accounts, avoids harm to other people's
41
+ data, and gives us reasonable time to fix the issue before disclosure.
@@ -5,7 +5,7 @@ status: accepted
5
5
  date: 2026-08-28
6
6
  supersedes: null
7
7
  superseded-by: null
8
- amended-by: 0011, 0027, 0031, 0039, 0064, 0084, 0086, 0096, 0109, 0118
8
+ amended-by: 0011, 0027, 0031, 0039, 0064, 0084, 0086, 0096, 0109, 0118, 0138, 0139
9
9
  ---
10
10
 
11
11
  ## Context
@@ -6,7 +6,7 @@ date: 2026-09-03
6
6
  supersedes: null
7
7
  superseded-by: null
8
8
  amends: null
9
- amended-by: 0087
9
+ amended-by: 0087, 0131
10
10
  ---
11
11
 
12
12
  ## Context
@@ -5,6 +5,7 @@ status: accepted
5
5
  date: 2026-09-03
6
6
  supersedes: null
7
7
  superseded-by: null
8
+ amended-by: 0136
8
9
  ---
9
10
 
10
11
  ## Context
@@ -6,7 +6,7 @@ date: 2026-09-05
6
6
  supersedes: null
7
7
  superseded-by: null
8
8
  amends: null
9
- amended-by: null
9
+ amended-by: 0139
10
10
  ---
11
11
 
12
12
  ## Context
@@ -6,7 +6,7 @@ date: 2026-09-17
6
6
  supersedes: null
7
7
  superseded-by: null
8
8
  amends: 0006
9
- amended-by: 0032, 0036, 0037, 0038, 0039, 0045, 0046, 0066, 0072, 0107, 0113, 0118
9
+ amended-by: 0032, 0036, 0037, 0038, 0039, 0045, 0046, 0066, 0072, 0107, 0113, 0118, 0135
10
10
  ---
11
11
 
12
12
  ## Context
@@ -6,7 +6,7 @@ date: 2026-09-25
6
6
  supersedes: null
7
7
  superseded-by: null
8
8
  amends: null
9
- amended-by: 0123
9
+ amended-by: 0123, 0143
10
10
  ---
11
11
 
12
12
  ## Context
@@ -6,7 +6,7 @@ date: 2026-09-25
6
6
  supersedes: 0066
7
7
  superseded-by: null
8
8
  amends: 0031, 0045, 0058
9
- amended-by: null
9
+ amended-by: 0143
10
10
  ---
11
11
 
12
12
  ## Context
@@ -6,7 +6,7 @@ date: 2026-09-26
6
6
  supersedes: null
7
7
  superseded-by: null
8
8
  amends: 0067, 0071
9
- amended-by: 0084, 0085
9
+ amended-by: 0084, 0085, 0138
10
10
  ---
11
11
 
12
12
  ## Context
@@ -6,7 +6,7 @@ date: 2026-10-02
6
6
  supersedes: null
7
7
  superseded-by: null
8
8
  amends: 0039
9
- amended-by: null
9
+ amended-by: 0131
10
10
  ---
11
11
 
12
12
  ## Context
@@ -6,7 +6,7 @@ date: 2026-10-05
6
6
  supersedes: null
7
7
  superseded-by: null
8
8
  amends: null
9
- amended-by: 0099, 0113, 0114
9
+ amended-by: 0099, 0113, 0114, 0129
10
10
  ---
11
11
 
12
12
  ## Context
@@ -6,7 +6,7 @@ date: 2026-10-06
6
6
  supersedes: null
7
7
  superseded-by: null
8
8
  amends: 0006
9
- amended-by: 0103, 0109, 0115, 0116
9
+ amended-by: 0103, 0109, 0115, 0116, 0130, 0140
10
10
  ---
11
11
 
12
12
  ## Context
@@ -6,7 +6,7 @@ date: 2026-10-06
6
6
  supersedes: 0094
7
7
  superseded-by: null
8
8
  amends: 0093
9
- amended-by: null
9
+ amended-by: 0127
10
10
  ---
11
11
 
12
12
  ## Context
@@ -6,7 +6,7 @@ date: 2026-10-08
6
6
  supersedes: null
7
7
  superseded-by: null
8
8
  amends: null
9
- amended-by: 0109, 0110, 0112, 0121
9
+ amended-by: 0109, 0110, 0112, 0121, 0140
10
10
  ---
11
11
 
12
12
  ## Context
@@ -6,7 +6,7 @@ date: 2026-10-08
6
6
  supersedes: null
7
7
  superseded-by: null
8
8
  amends: 0061
9
- amended-by: null
9
+ amended-by: 0128
10
10
  ---
11
11
 
12
12
  ## Context
@@ -6,7 +6,7 @@ date: 2026-10-11
6
6
  supersedes: null
7
7
  superseded-by: null
8
8
  amends: 0006, 0096, 0101
9
- amended-by: 0110, 0112
9
+ amended-by: 0110, 0112, 0140
10
10
  ---
11
11
 
12
12
  ## Context
@@ -6,7 +6,7 @@ date: 2026-10-11
6
6
  supersedes: null
7
7
  superseded-by: null
8
8
  amends: 0031, 0092, 0093
9
- amended-by: null
9
+ amended-by: 0142
10
10
  ---
11
11
 
12
12
  ## Context
@@ -6,7 +6,7 @@ date: 2026-10-11
6
6
  supersedes: null
7
7
  superseded-by: null
8
8
  amends: 0001, 0004, 0006, 0031, 0061
9
- amended-by: null
9
+ amended-by: 0135
10
10
  ---
11
11
 
12
12
  ## Context
@@ -6,7 +6,7 @@ date: 2026-10-13
6
6
  supersedes: null
7
7
  superseded-by: null
8
8
  amends: 0070
9
- amended-by: null
9
+ amended-by: 0143
10
10
  ---
11
11
 
12
12
  ## Context
@@ -0,0 +1,121 @@
1
+ ---
2
+ id: 0127
3
+ title: The monitor shows weighted tokens beside raw tokens
4
+ status: proposed
5
+ date: 2026-10-15
6
+ supersedes: null
7
+ superseded-by: null
8
+ amends: 0099
9
+ amended-by: null
10
+ ---
11
+
12
+ ## Context
13
+
14
+ The monitor's Usage tab adds fresh input, cache reads, cache writes and output
15
+ one to one. On the measured machine 98% of those tokens were cache reads
16
+ (ADR-0099). A cache read is billed at a tenth of a fresh input token on most
17
+ Claude models, and at less on the newest. So the raw total mostly says how
18
+ often a context was re-read. A long session that re-reads a large cache looks
19
+ heavy. A session that sends the same context uncached on every call looks
20
+ light.
21
+
22
+ Fleet now judges and shows cost in dollars (Fleet ADR-0087). A developer who
23
+ opens the monitor sees a raw count that moves differently from Fleet's figure.
24
+ Nothing on the page says why.
25
+
26
+ The product owner asked the monitor to show each kind of token on its own, and
27
+ what each kind weighs, beside the raw count.
28
+
29
+ ADR-0099 rejected tokens weighted by kind: "that is a price table by another
30
+ name." Its concern was a table kept current for every model, and a figure read
31
+ against an invoice it never matches. That conclusion does not hold for this
32
+ use:
33
+
34
+ - The table holds ratios between the kinds of one model, as the provider's
35
+ pricing page states them. It holds no price. The ratios change rarely: every
36
+ Claude model shares the same cache write and output ratios, and only four
37
+ models have cheaper cache reads.
38
+ - A model the table does not list still gets a figure, at Anthropic's usual
39
+ ratios, marked estimated. ADR-0099's "a new model works on day one" holds.
40
+ - A weighted token is still a token: one fresh input token of the model that
41
+ served it. It names no money and makes no claim about any invoice.
42
+ - Rules, thresholds, baselines, evidence and the usual stay in raw tokens.
43
+ Only what the monitor shows changes.
44
+
45
+ ## Decision
46
+
47
+ 1. **The monitor shows weighted tokens beside raw tokens.** The Usage tab's
48
+ head states the range's weighted total under its raw total. A card lists each
49
+ kind of token with its raw count, the ratio it was weighed at, its weighted
50
+ count and its share of the weighted total. Each row of the table by model and
51
+ by agent carries its weighted count. The Live tab's session line carries the
52
+ session's weighted count beside its tokens.
53
+ 2. **One weighted token is one fresh input token of the model that served it.**
54
+ Each kind is multiplied by that model's published ratio to its own fresh
55
+ input, model by model, and then summed. On every Anthropic model: fresh input
56
+ ×1, 5-minute cache write ×1.25, 1-hour cache write ×2, output ×5. Cache reads
57
+ ×0.1, except ×0.05 on Opus 5.5 and Sonnet 5.5 and ×0.025 on Fable 5.1 and
58
+ Mythos 5.1. A cache write recorded without its lifetime weighs as a 5-minute
59
+ write.
60
+ 3. **The table lives in the client, as ratios** (`cost/weights.py`). A model is
61
+ looked up by the name `cost.models` gives it, without its snapshot date, and
62
+ without the effort suffix Devin records (`claude-opus-5-5-medium`).
63
+ 4. **A figure weighed by defaults is marked estimated.** A `claude-*` model the
64
+ table does not list, any other model (Devin's `swe-1-6`) and a response with
65
+ no model weigh at Anthropic's usual ratios, cache reads at ×0.1. No token is
66
+ dropped. The page says "estimated" and names the models.
67
+ 5. **Three charges are not weighted:** fast mode, US-only inference, and Haiku
68
+ 5.5's tier for prompts over 100K tokens. Each is billed higher, so each
69
+ leaves a weighted figure under the bill, never over. The page says so.
70
+ 6. **Nothing else changes unit.** The chart, the runs, the components, the
71
+ usual, Session cost and its reasons, and every figure that leaves the
72
+ machine stay in raw tokens.
73
+
74
+ What this amends: ADR-0099's rejection of "tokens weighted by kind", for what
75
+ the monitor shows. ADR-0099's decision stands. Every cost figure is tokens, and
76
+ a weighted token is a token. There is still no price table: this table holds
77
+ ratios.
78
+
79
+ ## Alternatives considered
80
+
81
+ - **Dollars on the machine.** Rejected by ADR-0099 and by this repo's rule that
82
+ cost is tokens, never dollars. It needs prices kept current, and invites a
83
+ comparison with an invoice that subscriptions and discounts never match.
84
+ - **One reference model for every model.** Weigh each model's tokens against a
85
+ single model's fresh input, so Opus and Haiku add up on one scale. Rejected:
86
+ the ratio between two models is a ratio of their prices, so this is dollars in
87
+ disguise, with a reference price to keep current.
88
+ - **Weigh only in Fleet**, as cost-notifications §6 proposed. Rejected: the
89
+ product owner asked for it on the machine. Fleet now shows dollars (Fleet
90
+ ADR-0087), so a monitor with raw tokens alone disagrees with Fleet by a factor
91
+ that moves with the mix of kinds, and nothing explains it.
92
+ - **Show weighted tokens instead of raw ones.** Rejected: the rules, the usual
93
+ and Session cost read raw tokens, and the page must show the figure they
94
+ judge.
95
+ - **Fold cache writes without a lifetime into 5-minute writes.** Rejected: that
96
+ changes the raw 5-minute figure. They get their own row when there are any.
97
+
98
+ ## Consequences
99
+
100
+ - A reader sees why a large raw total can weigh little: cache reads count a
101
+ tenth or less.
102
+ - The table is one more thing to keep current. A changed ratio needs a client
103
+ release. Until it ships, a listed model's figure is off, and a new model's
104
+ figure says estimated.
105
+ - The machine's weighted tokens and Fleet's dollars are different scales. Within
106
+ one model they move together. Across models they do not, because each
107
+ model's weighted token is its own fresh input token.
108
+ - The monitor weighs 1-hour writes at ×2, because transcripts split the two
109
+ lifetimes. cost-notifications §6 had Fleet weigh both at ×1.25.
110
+ - `tests/cost/test_weights.py` holds each listed model's cache-read ratio,
111
+ checks that no kind of token is dropped, and checks that every model with a
112
+ known context window has ratios of its own.
113
+
114
+ ## When to revisit
115
+
116
+ - When Anthropic changes a ratio, or a new model's cache reads differ from
117
+ ×0.1.
118
+ - When OpenAIDR reads an agent whose provider publishes different ratios, such
119
+ as Codex.
120
+ - If Session cost or the usual should judge weighted tokens. That changes the
121
+ rules, and needs its own ADR.