dos-kernel 0.24.1__tar.gz → 0.26.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 (471) hide show
  1. {dos_kernel-0.24.1/src/dos_kernel.egg-info → dos_kernel-0.26.0}/PKG-INFO +109 -13
  2. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/README.md +102 -11
  3. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/pyproject.toml +46 -1
  4. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/__init__.py +16 -1
  5. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/cli.py +943 -67
  6. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/commit_audit.py +219 -34
  7. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/config_lint.py +50 -2
  8. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/decisions.py +321 -3
  9. dos_kernel-0.26.0/src/dos/deprecation.py +68 -0
  10. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/dispatch_top.py +90 -0
  11. dos_kernel-0.26.0/src/dos/drivers/_effect_gate.py +376 -0
  12. dos_kernel-0.26.0/src/dos/drivers/agt_backend.py +357 -0
  13. dos_kernel-0.26.0/src/dos/drivers/crewai_guardrail.py +85 -0
  14. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/drivers/hook_dialects.py +68 -0
  15. dos_kernel-0.26.0/src/dos/drivers/memory_mem0.py +158 -0
  16. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/drivers/memory_recall.py +462 -34
  17. dos_kernel-0.26.0/src/dos/drivers/nemo_action.py +102 -0
  18. dos_kernel-0.26.0/src/dos/drivers/openai_agents_guardrail.py +112 -0
  19. dos_kernel-0.26.0/src/dos/drivers/pre_commit.py +67 -0
  20. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/efficiency.py +41 -8
  21. dos_kernel-0.26.0/src/dos/efficiency_trend.py +267 -0
  22. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/event_severity.py +35 -2
  23. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/home.py +2 -1
  24. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/hook_install.py +170 -0
  25. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/improve.py +41 -2
  26. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/intent_ledger.py +16 -1
  27. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/lane_journal.py +21 -1
  28. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/liveness.py +9 -0
  29. dos_kernel-0.26.0/src/dos/memory_stores.py +185 -0
  30. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/phase_shipped.py +104 -3
  31. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/plan_board.py +26 -0
  32. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/pretool_sensor.py +240 -4
  33. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/skills/EXAMPLES.md +1 -1
  34. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/skills/dos-dispatch/SKILL.md +1 -1
  35. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/skills/dos-next-up/SKILL.md +1 -1
  36. dos_kernel-0.26.0/src/dos/spend.py +276 -0
  37. dos_kernel-0.26.0/src/dos/testing/__init__.py +71 -0
  38. dos_kernel-0.26.0/src/dos/testing/doubles.py +222 -0
  39. dos_kernel-0.26.0/src/dos/testing/suite.py +392 -0
  40. dos_kernel-0.26.0/src/dos/testing/tester.py +122 -0
  41. dos_kernel-0.26.0/src/dos/verdict_census.py +381 -0
  42. dos_kernel-0.26.0/src/dos/verified.py +134 -0
  43. dos_kernel-0.26.0/src/dos/work_account.py +263 -0
  44. {dos_kernel-0.24.1 → dos_kernel-0.26.0/src/dos_kernel.egg-info}/PKG-INFO +109 -13
  45. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos_kernel.egg-info/SOURCES.txt +67 -0
  46. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos_kernel.egg-info/entry_points.txt +5 -0
  47. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos_kernel.egg-info/requires.txt +3 -0
  48. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos_mcp/server.py +66 -3
  49. dos_kernel-0.26.0/tests/test_agt_backend.py +267 -0
  50. dos_kernel-0.26.0/tests/test_backlog_triage.py +353 -0
  51. dos_kernel-0.26.0/tests/test_braintrust_scorer_example.py +107 -0
  52. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_canonical_example_lockstep.py +1 -0
  53. dos_kernel-0.26.0/tests/test_caught_lie_cast.py +96 -0
  54. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_cli_ergonomics.py +55 -0
  55. dos_kernel-0.26.0/tests/test_clobber_demo_contract.py +134 -0
  56. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_commit_audit.py +250 -14
  57. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_config_lint.py +33 -0
  58. dos_kernel-0.26.0/tests/test_conformance_plugin_examples.py +85 -0
  59. dos_kernel-0.26.0/tests/test_conformance_suite.py +193 -0
  60. dos_kernel-0.26.0/tests/test_crewai_guardrail.py +115 -0
  61. dos_kernel-0.26.0/tests/test_cross_host_continuity.py +192 -0
  62. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_decisions.py +268 -0
  63. dos_kernel-0.26.0/tests/test_deprecation.py +109 -0
  64. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_dispatch_top.py +115 -0
  65. dos_kernel-0.26.0/tests/test_docs_links.py +96 -0
  66. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_docs_version_drift.py +3 -0
  67. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_doctor_json.py +39 -0
  68. dos_kernel-0.26.0/tests/test_drift_scoreboard.py +295 -0
  69. dos_kernel-0.26.0/tests/test_duplicate_plan_numbers.py +277 -0
  70. dos_kernel-0.26.0/tests/test_effect_gate.py +243 -0
  71. dos_kernel-0.26.0/tests/test_efficiency_trend.py +156 -0
  72. dos_kernel-0.26.0/tests/test_efficiency_trend_cli.py +145 -0
  73. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_event_severity.py +66 -0
  74. dos_kernel-0.26.0/tests/test_fault_injection_journal.py +376 -0
  75. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_fleet_framework_examples.py +30 -1
  76. dos_kernel-0.26.0/tests/test_forge_arena_bench.py +117 -0
  77. dos_kernel-0.26.0/tests/test_forge_page.py +85 -0
  78. dos_kernel-0.26.0/tests/test_gemini_extension.py +137 -0
  79. dos_kernel-0.26.0/tests/test_gitlab_ci_template.py +55 -0
  80. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_hook_dialect.py +23 -6
  81. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_hook_pretool.py +154 -17
  82. dos_kernel-0.26.0/tests/test_hosts_verb.py +198 -0
  83. dos_kernel-0.26.0/tests/test_init_hooks_auto.py +226 -0
  84. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_init_hooks_crossvendor.py +50 -1
  85. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_install_drift.py +1 -0
  86. dos_kernel-0.26.0/tests/test_kernel_keep_gate_example.py +207 -0
  87. dos_kernel-0.26.0/tests/test_kernel_keep_gate_real_kernelbench.py +103 -0
  88. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_liveness.py +67 -0
  89. dos_kernel-0.26.0/tests/test_llms_full.py +81 -0
  90. dos_kernel-0.26.0/tests/test_llms_txt.py +70 -0
  91. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_mcp_server.py +97 -0
  92. dos_kernel-0.26.0/tests/test_memory_admit.py +213 -0
  93. dos_kernel-0.26.0/tests/test_memory_fossils.py +297 -0
  94. dos_kernel-0.26.0/tests/test_memory_integrity_bench.py +73 -0
  95. dos_kernel-0.26.0/tests/test_memory_mem0.py +157 -0
  96. dos_kernel-0.26.0/tests/test_memory_stores.py +229 -0
  97. dos_kernel-0.26.0/tests/test_nemo_action.py +130 -0
  98. dos_kernel-0.26.0/tests/test_openai_agents_guardrail.py +177 -0
  99. dos_kernel-0.26.0/tests/test_poisoned_pool_bench.py +188 -0
  100. dos_kernel-0.26.0/tests/test_poisoned_pool_p2.py +221 -0
  101. dos_kernel-0.26.0/tests/test_poisoned_pool_policies.py +128 -0
  102. dos_kernel-0.26.0/tests/test_pre_commit_hook.py +213 -0
  103. dos_kernel-0.26.0/tests/test_prop_arbiter_wal.py +361 -0
  104. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_release_bump.py +24 -19
  105. dos_kernel-0.26.0/tests/test_scoreboard_surfaces.py +183 -0
  106. dos_kernel-0.26.0/tests/test_server_json_version.py +81 -0
  107. dos_kernel-0.26.0/tests/test_serverless_rl_example.py +230 -0
  108. dos_kernel-0.26.0/tests/test_spend.py +170 -0
  109. dos_kernel-0.26.0/tests/test_spend_cli.py +102 -0
  110. dos_kernel-0.26.0/tests/test_spend_evidence.py +125 -0
  111. dos_kernel-0.26.0/tests/test_stability_policy.py +96 -0
  112. dos_kernel-0.26.0/tests/test_verdict_census.py +181 -0
  113. dos_kernel-0.26.0/tests/test_verified.py +206 -0
  114. dos_kernel-0.26.0/tests/test_work_account.py +307 -0
  115. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/LICENSE +0 -0
  116. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/setup.cfg +0 -0
  117. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/_demo_story.py +0 -0
  118. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/_filelock.py +0 -0
  119. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/_job_policy.py +0 -0
  120. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/_tree.py +0 -0
  121. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/admission.py +0 -0
  122. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/answer_shape.py +0 -0
  123. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/arbiter.py +0 -0
  124. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/archive_lock.py +0 -0
  125. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/arg_provenance.py +0 -0
  126. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/attest.py +0 -0
  127. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/breaker.py +0 -0
  128. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/churn.py +0 -0
  129. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/claim_extract.py +0 -0
  130. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/claim_ttl.py +0 -0
  131. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/completion.py +0 -0
  132. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/concurrency_class.py +0 -0
  133. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/config.py +0 -0
  134. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/cooldown.py +0 -0
  135. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/coverage.py +0 -0
  136. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/dangling_intent.py +0 -0
  137. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/data_class.py +0 -0
  138. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/decisions_tui.py +0 -0
  139. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/dispatch_top_tui.py +0 -0
  140. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/drivers/__init__.py +0 -0
  141. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/drivers/ci_status.py +0 -0
  142. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/drivers/citation_resolve.py +0 -0
  143. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/drivers/decision_stop.py +0 -0
  144. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/drivers/design_doc_plan.py +0 -0
  145. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/drivers/export_file.py +0 -0
  146. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/drivers/export_otlp.py +0 -0
  147. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/drivers/export_statsd.py +0 -0
  148. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/drivers/job.py +0 -0
  149. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/drivers/llm_judge.py +0 -0
  150. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/drivers/notify_slack.py +0 -0
  151. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/drivers/notify_webhook.py +0 -0
  152. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/drivers/operator_judge.py +0 -0
  153. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/drivers/os_acceptance.py +0 -0
  154. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/drivers/paste_log.py +0 -0
  155. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/drivers/plan_scope.py +0 -0
  156. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/drivers/self_improve.py +0 -0
  157. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/drivers/similarity_judge.py +0 -0
  158. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/drivers/state_diff.py +0 -0
  159. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/drivers/supervisor.py +0 -0
  160. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/drivers/watchdog.py +0 -0
  161. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/drivers/workshop.py +0 -0
  162. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/durable_schema.py +0 -0
  163. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/effect_witness.py +0 -0
  164. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/enforce.py +0 -0
  165. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/enumerate.py +0 -0
  166. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/env_print.py +0 -0
  167. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/evidence.py +0 -0
  168. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/exec_capability.py +0 -0
  169. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/export_cursor.py +0 -0
  170. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/exporter.py +0 -0
  171. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/firing_label.py +0 -0
  172. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/fleet_roll.py +0 -0
  173. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/gate_classify.py +0 -0
  174. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/gh4_coverage.py +0 -0
  175. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/git_delta.py +0 -0
  176. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/guard.py +0 -0
  177. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/health.py +0 -0
  178. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/help_summary.py +0 -0
  179. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/hook_binary.py +0 -0
  180. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/hook_dialect.py +0 -0
  181. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/hook_exit.py +0 -0
  182. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/hook_observation.py +0 -0
  183. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/id_alloc.py +0 -0
  184. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/interpret.py +0 -0
  185. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/intervention.py +0 -0
  186. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/intervention_eval.py +0 -0
  187. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/journal_delta.py +0 -0
  188. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/judge_eval.py +0 -0
  189. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/judges.py +0 -0
  190. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/lane_infer.py +0 -0
  191. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/lane_lease.py +0 -0
  192. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/lane_overlap.py +0 -0
  193. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/lease_health.py +0 -0
  194. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/lifecycle.py +0 -0
  195. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/lock_modes.py +0 -0
  196. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/log_source.py +0 -0
  197. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/loop_decide.py +0 -0
  198. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/marker_gate.py +0 -0
  199. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/marker_sensor.py +0 -0
  200. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/noop_streak.py +0 -0
  201. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/notify.py +0 -0
  202. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/observe.py +0 -0
  203. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/oracle.py +0 -0
  204. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/overlap_eval.py +0 -0
  205. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/overlap_policy.py +0 -0
  206. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/override_facts.py +0 -0
  207. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/packet_sidecar.py +0 -0
  208. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/pick_priority.py +0 -0
  209. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/pickable.py +0 -0
  210. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/picker_oracle.py +0 -0
  211. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/plan_board_tui.py +0 -0
  212. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/plan_source.py +0 -0
  213. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/posttool_sensor.py +0 -0
  214. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/precursor_gate.py +0 -0
  215. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/precursor_gate_eval.py +0 -0
  216. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/preflight.py +0 -0
  217. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/proc_delta.py +0 -0
  218. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/productivity.py +0 -0
  219. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/provider_limit.py +0 -0
  220. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/py.typed +0 -0
  221. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/reason_morphology.py +0 -0
  222. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/reasons.py +0 -0
  223. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/reconcile.py +0 -0
  224. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/recurring_wedge.py +0 -0
  225. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/render.py +0 -0
  226. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/result_state.py +0 -0
  227. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/resume.py +0 -0
  228. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/resume_evidence.py +0 -0
  229. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/retention.py +0 -0
  230. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/reward.py +0 -0
  231. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/rewind.py +0 -0
  232. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/rewind_evidence.py +0 -0
  233. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/rewind_tokens.py +0 -0
  234. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/run_id.py +0 -0
  235. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/scope.py +0 -0
  236. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/scope_source.py +0 -0
  237. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/scout.py +0 -0
  238. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/self_modify.py +0 -0
  239. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/sibling_scan.py +0 -0
  240. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/skills/dos-class-cycle/SKILL.md +0 -0
  241. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/skills/dos-dispatch-loop/SKILL.md +0 -0
  242. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/skills/dos-goal-gate/SKILL.md +0 -0
  243. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/skills/dos-promote/SKILL.md +0 -0
  244. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/skills/dos-replan/SKILL.md +0 -0
  245. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/skills/dos-replan-loop/SKILL.md +0 -0
  246. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/skills/dos-self-improve/SKILL.md +0 -0
  247. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/skills/dos-supervise-loop/SKILL.md +0 -0
  248. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/skills/dos-unstick/SKILL.md +0 -0
  249. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/skills/dos-witness-claim/SKILL.md +0 -0
  250. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/stamp.py +0 -0
  251. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/state_health.py +0 -0
  252. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/status.py +0 -0
  253. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/stop_policy.py +0 -0
  254. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/supervise.py +0 -0
  255. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/testwitness.py +0 -0
  256. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/timeline.py +0 -0
  257. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/tokens.py +0 -0
  258. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/tool_stream.py +0 -0
  259. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/tool_stream_eval.py +0 -0
  260. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/trace.py +0 -0
  261. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/verdict.py +0 -0
  262. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/verdict_cli.py +0 -0
  263. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/verdict_journal.py +0 -0
  264. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/verdict_rollup.py +0 -0
  265. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/verdicts.py +0 -0
  266. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos/wedge_reason.py +0 -0
  267. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos_kernel.egg-info/dependency_links.txt +0 -0
  268. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos_kernel.egg-info/top_level.txt +0 -0
  269. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos_mcp/__init__.py +0 -0
  270. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/src/dos_mcp/py.typed +0 -0
  271. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_admission.py +0 -0
  272. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_agent_surface.py +0 -0
  273. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_agenthallu_replay.py +0 -0
  274. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_agentprocessbench_replay.py +0 -0
  275. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_answer_shape.py +0 -0
  276. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_arbiter.py +0 -0
  277. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_archive_lock.py +0 -0
  278. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_arg_provenance.py +0 -0
  279. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_attest.py +0 -0
  280. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_backflow_ledger.py +0 -0
  281. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_bench_layering.py +0 -0
  282. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_breaker.py +0 -0
  283. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_build_wheels_binary_format.py +0 -0
  284. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_central_index.py +0 -0
  285. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_churn.py +0 -0
  286. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_ci_status.py +0 -0
  287. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_citation_resolve.py +0 -0
  288. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_claim_extract.py +0 -0
  289. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_claim_ttl.py +0 -0
  290. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_claims_lint.py +0 -0
  291. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_cli_loop.py +0 -0
  292. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_cli_pickable_enumerate.py +0 -0
  293. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_cmd_status.py +0 -0
  294. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_completion.py +0 -0
  295. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_concurrency_class.py +0 -0
  296. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_cooldown.py +0 -0
  297. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_coverage.py +0 -0
  298. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_dangling_intent.py +0 -0
  299. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_data_class.py +0 -0
  300. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_design_doc_plan_source.py +0 -0
  301. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_dispatch_loop_substrate.py +0 -0
  302. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_dos_react_terminal_error.py +0 -0
  303. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_drivers_self_improve.py +0 -0
  304. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_drivers_supervisor.py +0 -0
  305. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_drivers_watchdog.py +0 -0
  306. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_drivers_workshop.py +0 -0
  307. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_durable_schema.py +0 -0
  308. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_effect_witness.py +0 -0
  309. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_efficiency.py +0 -0
  310. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_enforce.py +0 -0
  311. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_ensure_home.py +0 -0
  312. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_enterpriseops_harness.py +0 -0
  313. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_enumerate.py +0 -0
  314. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_env_print.py +0 -0
  315. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_evidence.py +0 -0
  316. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_exec_capability.py +0 -0
  317. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_export_cli.py +0 -0
  318. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_export_cursor.py +0 -0
  319. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_export_otlp.py +0 -0
  320. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_export_statsd.py +0 -0
  321. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_exporter.py +0 -0
  322. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_feasibility_split.py +0 -0
  323. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_filelock.py +0 -0
  324. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_filepath_backstop_batch.py +0 -0
  325. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_firing_label.py +0 -0
  326. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_fleet_roll.py +0 -0
  327. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_gate_cli.py +0 -0
  328. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_gh4_coverage.py +0 -0
  329. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_git_hygiene.py +0 -0
  330. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_gitignore_hygiene.py +0 -0
  331. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_go_hook_parity.py +0 -0
  332. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_guard.py +0 -0
  333. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_health.py +0 -0
  334. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_help_summary.py +0 -0
  335. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_hermes_integration_example.py +0 -0
  336. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_home_layering.py +0 -0
  337. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_home_no_temp_pollution.py +0 -0
  338. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_hook_binaries_bundled.py +0 -0
  339. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_hook_binary_locator.py +0 -0
  340. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_hook_exit.py +0 -0
  341. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_hook_observation.py +0 -0
  342. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_hook_stop.py +0 -0
  343. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_id_alloc.py +0 -0
  344. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_improve.py +0 -0
  345. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_init_hooks.py +0 -0
  346. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_init_skills.py +0 -0
  347. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_install_levels.py +0 -0
  348. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_intent_ledger.py +0 -0
  349. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_interpret_parity.py +0 -0
  350. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_intervention.py +0 -0
  351. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_intervention_cli.py +0 -0
  352. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_intervention_eval.py +0 -0
  353. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_journal_delta.py +0 -0
  354. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_judge.py +0 -0
  355. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_judge_eval.py +0 -0
  356. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_judges.py +0 -0
  357. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_lane_adopt.py +0 -0
  358. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_lane_halt.py +0 -0
  359. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_lane_infer.py +0 -0
  360. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_lane_journal.py +0 -0
  361. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_lane_lease.py +0 -0
  362. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_lane_lease_expiry.py +0 -0
  363. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_lane_lease_mutex.py +0 -0
  364. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_lane_overlap.py +0 -0
  365. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_leak_scan.py +0 -0
  366. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_lease_health.py +0 -0
  367. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_lifecycle.py +0 -0
  368. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_llm_judge_vendor_seam.py +0 -0
  369. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_lock_modes.py +0 -0
  370. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_log_source.py +0 -0
  371. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_marker_gate.py +0 -0
  372. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_marker_sensor.py +0 -0
  373. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_memory_recall.py +0 -0
  374. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_noop_streak.py +0 -0
  375. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_notify.py +0 -0
  376. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_notify_cli.py +0 -0
  377. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_notify_slack.py +0 -0
  378. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_notify_webhook.py +0 -0
  379. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_observe.py +0 -0
  380. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_operator_judge.py +0 -0
  381. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_oracle_and_loop.py +0 -0
  382. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_oracle_forgeability_provenance.py +0 -0
  383. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_oracle_grep_in_process.py +0 -0
  384. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_overlap_policy.py +0 -0
  385. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_override_window.py +0 -0
  386. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_packet_sidecar.py +0 -0
  387. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_phase_labels.py +0 -0
  388. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_pick_priority.py +0 -0
  389. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_pickable.py +0 -0
  390. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_plan_board.py +0 -0
  391. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_plan_source.py +0 -0
  392. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_plugin_manifest.py +0 -0
  393. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_posttool_sensor.py +0 -0
  394. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_precursor_gate.py +0 -0
  395. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_precursor_gate_eval.py +0 -0
  396. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_preflight_sidecar.py +0 -0
  397. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_proc_delta.py +0 -0
  398. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_productivity.py +0 -0
  399. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_prop_breaker.py +0 -0
  400. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_prop_cooldown.py +0 -0
  401. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_prop_efficiency.py +0 -0
  402. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_prop_install_wrappers.py +0 -0
  403. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_prop_overlap_soundness.py +0 -0
  404. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_prop_productivity.py +0 -0
  405. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_prop_reconcile.py +0 -0
  406. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_prop_reward_nonforgeability.py +0 -0
  407. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_prop_tree.py +0 -0
  408. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_provider_limit.py +0 -0
  409. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_readme_assembly.py +0 -0
  410. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_reconcile.py +0 -0
  411. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_recurring_wedge.py +0 -0
  412. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_refusal_and_tokens.py +0 -0
  413. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_reindex.py +0 -0
  414. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_render.py +0 -0
  415. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_replan_skip.py +0 -0
  416. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_result_state.py +0 -0
  417. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_resume_cli.py +0 -0
  418. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_resume_evidence.py +0 -0
  419. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_resume_reachability.py +0 -0
  420. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_retention.py +0 -0
  421. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_reward.py +0 -0
  422. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_rewind.py +0 -0
  423. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_rewind_cli.py +0 -0
  424. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_scope.py +0 -0
  425. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_scope_gate.py +0 -0
  426. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_scope_gate_cli.py +0 -0
  427. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_scope_source.py +0 -0
  428. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_scout.py +0 -0
  429. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_selfmodify_hook_probe.py +0 -0
  430. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_sibling_scan.py +0 -0
  431. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_similarity_judge.py +0 -0
  432. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_skill_pack_dispatch.py +0 -0
  433. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_skill_pack_generic.py +0 -0
  434. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_skill_pack_litmus.py +0 -0
  435. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_skill_pack_operator_tier.py +0 -0
  436. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_skill_pack_replan.py +0 -0
  437. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_stall_sim.py +0 -0
  438. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_stamp_convention.py +0 -0
  439. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_stamp_doctor.py +0 -0
  440. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_stamp_filepath_rung.py +0 -0
  441. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_stamp_trailer.py +0 -0
  442. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_state_diff.py +0 -0
  443. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_state_health.py +0 -0
  444. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_state_health_doctor.py +0 -0
  445. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_state_home.py +0 -0
  446. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_status_digest.py +0 -0
  447. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_stop_policy.py +0 -0
  448. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_subprocess_stdin_hygiene.py +0 -0
  449. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_supervise.py +0 -0
  450. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_testwitness.py +0 -0
  451. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_timeline_timing.py +0 -0
  452. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_tool_stream.py +0 -0
  453. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_tool_stream_cli.py +0 -0
  454. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_toolathlon_live_adapter.py +0 -0
  455. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_toolathlon_replay.py +0 -0
  456. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_toolathlon_rewind_ceiling.py +0 -0
  457. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_trace.py +0 -0
  458. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_trajectory_audit.py +0 -0
  459. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_vendor_agnostic_kernel.py +0 -0
  460. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_verdict_cli.py +0 -0
  461. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_verdict_contract.py +0 -0
  462. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_verdict_journal.py +0 -0
  463. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_verdict_rollup.py +0 -0
  464. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_verdicts.py +0 -0
  465. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_verify_color.py +0 -0
  466. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_verify_demo_contract.py +0 -0
  467. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_verify_no_plan.py +0 -0
  468. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_verify_non_git_rung.py +0 -0
  469. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_verify_plugin_install.py +0 -0
  470. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_workflow_yaml_parses.py +0 -0
  471. {dos_kernel-0.24.1 → dos_kernel-0.26.0}/tests/test_workspace_config.py +0 -0
@@ -1,15 +1,18 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dos-kernel
3
- Version: 0.24.1
3
+ Version: 0.26.0
4
4
  Summary: Dispatch Operating System — the domain-free trust substrate for fleets of autonomous agents (verdict spine, ship oracle, structured refusal, lane arbiter, correlation spine).
5
5
  Author: Anthony Chaudhary
6
6
  License: MIT
7
7
  Project-URL: Homepage, https://github.com/anthony-chaudhary/dos-kernel
8
+ Project-URL: Website, https://anthony-chaudhary.github.io/dos-kernel/
8
9
  Project-URL: Documentation, https://github.com/anthony-chaudhary/dos-kernel/blob/master/docs/QUICKSTART.md
10
+ Project-URL: FAQ, https://github.com/anthony-chaudhary/dos-kernel/blob/master/docs/FAQ.md
11
+ Project-URL: llms.txt, https://raw.githubusercontent.com/anthony-chaudhary/dos-kernel/master/llms.txt
9
12
  Project-URL: Repository, https://github.com/anthony-chaudhary/dos-kernel
10
13
  Project-URL: Issues, https://github.com/anthony-chaudhary/dos-kernel/issues
11
14
  Project-URL: Changelog, https://github.com/anthony-chaudhary/dos-kernel/tree/master/docs/releases
12
- Keywords: agents,ai-agents,llm,multi-agent,agent-orchestration,orchestration,dispatch,scheduler,oracle,leases,verification,trust,mcp
15
+ Keywords: agents,ai-agents,llm,multi-agent,agent-orchestration,orchestration,dispatch,scheduler,oracle,leases,verification,trust,mcp,claude,claude-code,mcp-server,model-context-protocol,agent-verification,autonomous-agents,agent-monitoring
13
16
  Classifier: Development Status :: 4 - Beta
14
17
  Classifier: Intended Audience :: Developers
15
18
  Classifier: License :: OSI Approved :: MIT License
@@ -43,6 +46,8 @@ Requires-Dist: slack-helpers>=0.2; extra == "notify-slack"
43
46
  Provides-Extra: export-otlp
44
47
  Requires-Dist: opentelemetry-sdk>=1.20; extra == "export-otlp"
45
48
  Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.20; extra == "export-otlp"
49
+ Provides-Extra: memory-mem0
50
+ Requires-Dist: mem0ai>=0.1; extra == "memory-mem0"
46
51
  Provides-Extra: paper
47
52
  Requires-Dist: arxiv-latex-cleaner>=1.0; extra == "paper"
48
53
  Dynamic: license-file
@@ -61,8 +66,18 @@ Dynamic: license-file
61
66
  [![Python versions](https://img.shields.io/pypi/pyversions/dos-kernel)](https://pypi.org/project/dos-kernel/)
62
67
  [![CI](https://github.com/anthony-chaudhary/dos-kernel/actions/workflows/ci.yml/badge.svg)](https://github.com/anthony-chaudhary/dos-kernel/actions/workflows/ci.yml)
63
68
  [![verified by DOS](https://github.com/anthony-chaudhary/dos-kernel/actions/workflows/dos-gate.yml/badge.svg)](https://github.com/anthony-chaudhary/dos-kernel/actions/workflows/dos-gate.yml)
69
+ [![commit-claims](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fanthony-chaudhary%2Fdos-kernel%2Fmaster%2Fdocs%2Fscoreboard%2Fanthony-chaudhary%2Fdos-kernel%2Fbadge.json)](https://github.com/anthony-chaudhary/dos-kernel/blob/master/docs/scoreboard/methodology.md)
64
70
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://github.com/anthony-chaudhary/dos-kernel/blob/master/LICENSE)
65
71
 
72
+ <p align="center">
73
+ <img src="https://raw.githubusercontent.com/anthony-chaudhary/dos-kernel/master/docs/assets/caught-lie-cast.svg" alt="A terminal recording of the caught lie. The agent reports: Done! Shipped the login endpoint (AUTH1) and the password reset (AUTH2). git log shows one commit — AUTH1: ship the login endpoint. dos verify AUTH AUTH1 answers SHIPPED (exit 0); dos verify AUTH AUTH2 answers NOT_SHIPPED via none (exit 1) — caught. The exit code is the verdict: gate the agent's done on it and a false claim cannot land." width="100%">
74
+ <br>
75
+ <em>The whole pitch in one recording: the agent claims two features shipped; git backs one.
76
+ <code>dos verify</code> answers from the commits, the lie exits <code>1</code>, and a gate on that
77
+ exit code refuses the false "done". Every line is the real CLI's verbatim output —
78
+ <a href="https://github.com/anthony-chaudhary/dos-kernel/blob/master/scripts/build_caught_lie_cast.py"><code>scripts/build_caught_lie_cast.py</code></a> re-records it whenever the output changes.</em>
79
+ </p>
80
+
66
81
  <p align="center">
67
82
  <img src="https://raw.githubusercontent.com/anthony-chaudhary/dos-kernel/master/docs/assets/loop-hero.svg" alt="Two agent fleets side by side. Left, no referee: agents all report 'done!', every report is believed, and silent corruption (lies, collisions, spin) piles up into a codebase that 'sorta works' and can't be changed. Right, DOS adjudicates: dos verify reads git and the run branches to SHIPPED (exit 0, land it) or NOT_SHIPPED (exit 1, re-dispatch — caught), and that verdict steers the next step." width="100%">
68
83
  <br>
@@ -96,7 +111,23 @@ zero config, and the only thing you ever install is one small Python package.
96
111
  > ⏱️ **Want to try it right now?** Jump to **[Try it in 60 seconds](#try-it-in-60-seconds)**
97
112
  > — one command, real output, then come back for the why.
98
113
 
99
- <sub>**v0.24.1** · 3900+ tests · CI: Python 3.11–3.13 on Linux + a Windows 3.13
114
+ > ⚡ **Or just add it two commands, zero decisions.** From the repo where your
115
+ > agent works:
116
+ >
117
+ > ```bash
118
+ > pip install dos-kernel
119
+ > dos init --hooks auto # finds the agent runtime(s) you already use, wires in the checks
120
+ > ```
121
+ >
122
+ > From then on: your agent can't tell you **"done"** unless the work actually
123
+ > landed, two agents can't silently overwrite each other's files, and a run
124
+ > that stalls gets flagged instead of quietly spinning. Nothing about your
125
+ > workflow changes, and you don't need to learn any of the vocabulary below to
126
+ > be covered. It prints the one config file it wrote; deleting the `dos hook`
127
+ > entries there undoes it. (No runtime detected? It says so and lists the
128
+ > names to pick from — it never guesses.)
129
+
130
+ <sub>**v0.26.0** · 3900+ tests · CI: Python 3.11–3.13 on Linux + a Windows 3.13
100
131
  smoke run · the only runtime dependency is **PyYAML** · **MIT**.</sub>
101
132
 
102
133
  > 🧭 **Want it in plain words first?** What DOS is, what it catches, and what
@@ -549,9 +580,11 @@ first (`dos_verify` "did it ship?", `dos_commit_audit` "does this commit's claim
549
580
  match its diff?", `dos_status` one folded fact about a run), then
550
581
  `dos_arbitrate` (may two workers run without colliding?), the structured-refusal
551
582
  pair (`dos_refuse_reasons` / `dos_check_reason`), `dos_recall` (is this recalled
552
- memory still true?), and `dos_doctor` (the workspace report) so any
553
- MCP-speaking hostClaude Desktop, Cursor, Cline, Trae, an Agent-SDK app — can
554
- call the referee over JSON-on-stdio with zero Python coupling. Each verdict comes
583
+ memory still true?), `dos_citation_resolve` (does this cited legal case exist in
584
+ a third-party reporter?the *Mata v. Avianca* witness), and `dos_doctor` (the
585
+ workspace report) so any
586
+ MCP-speaking host — Claude Desktop, Claude Cowork, Cursor, Cline, Trae, an
587
+ Agent-SDK app — can call the referee over JSON-on-stdio with zero Python coupling. Each verdict comes
555
588
  back with a one-line interpretation of what it means for the agent's next move.
556
589
  (See **[the MCP server surface](https://github.com/anthony-chaudhary/dos-kernel/blob/master/docs/80_mcp-server-surface.md)**.)
557
590
 
@@ -566,6 +599,20 @@ thinks to. The per-host wiring for Cursor / Codex / Gemini is in
566
599
  **[the MCP README](https://github.com/anthony-chaudhary/dos-kernel/blob/master/src/dos_mcp/README.md)** — all four are MCP clients, so this
567
600
  works on every one of them with zero code.
568
601
 
602
+ **Gemini CLI users get a one-liner.** DOS ships a `gemini-extension.json`
603
+ manifest at the repo root, so the whole referee — the MCP server plus a context
604
+ file that tells the model to gate its own done-claims — installs as one Gemini
605
+ extension, no clone and no config edit:
606
+
607
+ ```bash
608
+ pip install 'dos-kernel[mcp]' # the server the extension launches
609
+ gemini extensions install https://github.com/anthony-chaudhary/dos-kernel
610
+ ```
611
+
612
+ The same manifest is what Google's auto-indexed
613
+ [extensions gallery](https://geminicli.com/extensions/) crawls, so the listing
614
+ is automatic.
615
+
569
616
  ### …then make the verdict *act* (hooks)
570
617
 
571
618
  To go from "the agent can ask" to "the host won't let a bad call through", wire
@@ -573,22 +620,46 @@ DOS's hooks into the runtime you actually run. One command per host — it write
573
620
  that host's own hook-config file, merged into anything already there:
574
621
 
575
622
  ```bash
623
+ dos init --hooks auto . # don't know the names below? this detects the
624
+ # runtime(s) this repo already uses and wires them all
576
625
  dos init --hooks claude-code . # .claude/settings.json
577
626
  dos init --hooks cursor . # .cursor/hooks.json
578
627
  dos init --hooks codex . # .codex/config.toml
579
628
  dos init --hooks gemini . # .gemini/settings.json
580
629
  dos init --hooks antigravity . # .agents/hooks.json
630
+ dos init --hooks claude-cowork . # the SAME .claude/settings.json Claude Code reads
581
631
  ```
582
632
 
633
+ The list above is illustrative, not authoritative — the live matrix is a verb:
634
+ `dos hosts` prints every host DOS can wire, sourced from the registries themselves
635
+ (`dos hosts --json` for tooling), so the table never rots out of sync with what
636
+ `dos init --hooks` actually installs. Each row carries the host's tier, the events
637
+ it binds, its dialect, its config path, the exact wiring command, and the host's
638
+ own caveat (Codex's partial tool coverage, Cowork's not-yet-firing hooks). A host
639
+ with **no** row is itself the signal: it has no hook seam, so its DOS surface is
640
+ the advisory one (MCP + skills).
641
+
583
642
  That binds three shipped hooks: `pretool` denies a structurally-refused call
584
643
  before it runs, `stop` refuses a stop on an unverified "done," `posttool`
585
644
  re-surfaces a stalled stream. This is the **enforcement** path (the *host*
586
645
  denies on a DOS verdict) — the complement to MCP's advisory path. Until
587
- recently this spoke only Claude Code; it now installs across five hosts —
588
- Claude Code, Cursor, Codex, Gemini, and Antigravity
646
+ recently this spoke only Claude Code; it now installs across six hosts —
647
+ Claude Code, Cursor, Codex, Gemini, Antigravity, and Claude Cowork
589
648
  ([docs/221](https://github.com/anthony-chaudhary/dos-kernel/blob/master/docs/221_the-cross-vendor-hook-installer.md),
590
- [docs/269](https://github.com/anthony-chaudhary/dos-kernel/blob/master/docs/269_antigravity-the-fifth-host.md)).
591
- `--with-hooks` is the back-compat alias for `--hooks claude-code`.
649
+ [docs/269](https://github.com/anthony-chaudhary/dos-kernel/blob/master/docs/269_antigravity-the-fifth-host.md),
650
+ [docs/298](https://github.com/anthony-chaudhary/dos-kernel/blob/master/docs/298_claude-cowork-the-sixth-host-shared-surface.md)).
651
+ `--with-hooks` is the back-compat alias for `--hooks claude-code`. `auto`
652
+ ([docs/303](https://github.com/anthony-chaudhary/dos-kernel/blob/master/docs/303_hooks-auto-detection-plan.md))
653
+ names the host *for* you: it probes which of those config dirs already exist in
654
+ the repo — plus the shell's own environment, so a fresh repo opened inside
655
+ Claude Code still detects — wires every runtime it finds (a shared config file
656
+ is wired once), and fails loud with the list above when nothing is detectable,
657
+ never guessing. Claude
658
+ Cowork is the *shared-surface* host: it runs the same agent harness as Claude
659
+ Code, so wiring either name binds both — one file, one set of hooks. (One
660
+ honest caveat, carried on the install note itself: the Cowork app doesn't
661
+ *fire* hooks yet — anthropics/claude-code#63360 — so until that closes,
662
+ Cowork's working DOS surface is the advisory one above.)
592
663
 
593
664
  Under the installer sits a pluggable dialect seam: the verdict is decided
594
665
  once, then rendered into whatever JSON shape the host parses
@@ -770,9 +841,9 @@ pip install "dos-kernel[mcp]"
770
841
 
771
842
  After installing, run **`/dos-kernel:dos-setup`** once — it confirms the package
772
843
  is importable, reports what the plugin wired, and points at the next skill. The
773
- same three hooks are available à la carte via `dos init --hooks claude-code`
774
- (and for Cursor / Codex / Gemini); the plugin is just the pre-packaged Claude
775
- Code form. The bundle's design + the build that keeps its skills in lockstep
844
+ same three hooks are available à la carte via `dos init --hooks auto` (detects
845
+ your runtime; or name one claude-code, cursor, codex, gemini, antigravity,
846
+ claude-cowork); the plugin is just the pre-packaged Claude Code form. The bundle's design + the build that keeps its skills in lockstep
776
847
  with the source are in **[claude-plugin/README.md](https://github.com/anthony-chaudhary/dos-kernel/blob/master/claude-plugin/README.md)**.
777
848
 
778
849
  ## CLI
@@ -990,12 +1061,33 @@ for a copy-me skeleton.
990
1061
  ## Documentation
991
1062
 
992
1063
  - **[docs/QUICKSTART.md](https://github.com/anthony-chaudhary/dos-kernel/blob/master/docs/QUICKSTART.md)** — runnable 5-minute hello-world. Start here.
1064
+ - **[docs/FAQ.md](https://github.com/anthony-chaudhary/dos-kernel/blob/master/docs/FAQ.md)** — the arriving questions ("how do I
1065
+ verify an agent's claim?", "does it need an LLM?"), each answered in one
1066
+ self-contained block.
1067
+ - **[docs/ALTERNATIVES.md](https://github.com/anthony-chaudhary/dos-kernel/blob/master/docs/ALTERNATIVES.md)** — DOS and the
1068
+ alternatives: evals, framework guardrails, Temporal, in-toto, plain CI —
1069
+ what each does well, what DOS adds, and when NOT to use DOS.
993
1070
  - **[docs/README.md](https://github.com/anthony-chaudhary/dos-kernel/blob/master/docs/README.md)** — the docs index (guides vs. design notes
994
1071
  vs. the dated build-journal; the numbers are chronology, not a reading order).
995
1072
  - **[docs/HACKING.md](https://github.com/anthony-chaudhary/dos-kernel/blob/master/docs/HACKING.md)** — extend DOS without forking it.
1073
+ - **[docs/DOT_DOS.md](https://github.com/anthony-chaudhary/dos-kernel/blob/master/docs/DOT_DOS.md)** — the `.dos`
1074
+ surface: what that directory is, why it's safe to delete, and the
1075
+ repo-resident state contract (policy in `dos.toml`, fossils under `.dos/`,
1076
+ verdicts in git) that keeps every host adapter thin.
1077
+ - **[docs/STABILITY.md](https://github.com/anthony-chaudhary/dos-kernel/blob/master/docs/STABILITY.md)** — the compatibility
1078
+ promise: what you may depend on, what SemVer means here, how deprecations
1079
+ are announced (`DosDeprecationWarning`, a two-minor-release window), and
1080
+ what will never break.
996
1081
  - **[CLAUDE.md](https://github.com/anthony-chaudhary/dos-kernel/blob/master/CLAUDE.md)** / **[CONTRIBUTING.md](https://github.com/anthony-chaudhary/dos-kernel/blob/master/CONTRIBUTING.md)** — the
997
1082
  architecture contract and how to send a change.
1083
+ - **[verify-action/](https://github.com/anthony-chaudhary/dos-kernel/blob/master/verify-action/README.md)** — the CI gate: a
1084
+ composite Action and a reusable workflow that run `dos commit-audit` on every
1085
+ PR and merge-queue group and post the verdict as the named **dos-verify**
1086
+ status check; make it required and GitHub enforces what the kernel decides
1087
+ (the *verified by DOS* badge above is this gate on the kernel's own repo).
998
1088
  - **[docs/releases/](https://github.com/anthony-chaudhary/dos-kernel/tree/master/docs/releases)** — per-version release notes (the changelog).
1089
+ - **[The website](https://anthony-chaudhary.github.io/dos-kernel/)** — this page,
1090
+ condensed to one screen (good for sending to someone).
999
1091
 
1000
1092
  ## Playbooks & examples
1001
1093
 
@@ -1017,6 +1109,10 @@ back verbatim:
1017
1109
  CrewAI, AutoGen, the OpenAI/Claude Agents SDK — with every framework recipe also
1018
1110
  shipped as a runnable, suite-pinned file under
1019
1111
  [`examples/fleet_frameworks/`](https://github.com/anthony-chaudhary/dos-kernel/tree/master/examples/fleet_frameworks).
1112
+ Two seats ship as drivers in the package itself ([docs/305](https://github.com/anthony-chaudhary/dos-kernel/blob/master/docs/305_guardrail-seat-pair-openai-agents-and-crewai-plan.md)):
1113
+ an OpenAI Agents SDK output guardrail that trips on a deliverable git can't
1114
+ see, and a CrewAI task guardrail that turns the retry loop into a
1115
+ do-the-work loop — one import line each.
1020
1116
  - [**Wire DOS into a Hermes / OpenClaw swarm**](https://github.com/anthony-chaudhary/dos-kernel/tree/master/examples/hermes_integration) —
1021
1117
  the offline, A/B-measured swarm-runtime example: the `exec-capability` gate
1022
1118
  refuses a prompt-injected command before it runs (real at a single agent), and
@@ -12,8 +12,18 @@
12
12
  [![Python versions](https://img.shields.io/pypi/pyversions/dos-kernel)](https://pypi.org/project/dos-kernel/)
13
13
  [![CI](https://github.com/anthony-chaudhary/dos-kernel/actions/workflows/ci.yml/badge.svg)](https://github.com/anthony-chaudhary/dos-kernel/actions/workflows/ci.yml)
14
14
  [![verified by DOS](https://github.com/anthony-chaudhary/dos-kernel/actions/workflows/dos-gate.yml/badge.svg)](https://github.com/anthony-chaudhary/dos-kernel/actions/workflows/dos-gate.yml)
15
+ [![commit-claims](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fanthony-chaudhary%2Fdos-kernel%2Fmaster%2Fdocs%2Fscoreboard%2Fanthony-chaudhary%2Fdos-kernel%2Fbadge.json)](https://github.com/anthony-chaudhary/dos-kernel/blob/master/docs/scoreboard/methodology.md)
15
16
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://github.com/anthony-chaudhary/dos-kernel/blob/master/LICENSE)
16
17
 
18
+ <p align="center">
19
+ <img src="https://raw.githubusercontent.com/anthony-chaudhary/dos-kernel/master/docs/assets/caught-lie-cast.svg" alt="A terminal recording of the caught lie. The agent reports: Done! Shipped the login endpoint (AUTH1) and the password reset (AUTH2). git log shows one commit — AUTH1: ship the login endpoint. dos verify AUTH AUTH1 answers SHIPPED (exit 0); dos verify AUTH AUTH2 answers NOT_SHIPPED via none (exit 1) — caught. The exit code is the verdict: gate the agent's done on it and a false claim cannot land." width="100%">
20
+ <br>
21
+ <em>The whole pitch in one recording: the agent claims two features shipped; git backs one.
22
+ <code>dos verify</code> answers from the commits, the lie exits <code>1</code>, and a gate on that
23
+ exit code refuses the false "done". Every line is the real CLI's verbatim output —
24
+ <a href="https://github.com/anthony-chaudhary/dos-kernel/blob/master/scripts/build_caught_lie_cast.py"><code>scripts/build_caught_lie_cast.py</code></a> re-records it whenever the output changes.</em>
25
+ </p>
26
+
17
27
  <p align="center">
18
28
  <img src="https://raw.githubusercontent.com/anthony-chaudhary/dos-kernel/master/docs/assets/loop-hero.svg" alt="Two agent fleets side by side. Left, no referee: agents all report 'done!', every report is believed, and silent corruption (lies, collisions, spin) piles up into a codebase that 'sorta works' and can't be changed. Right, DOS adjudicates: dos verify reads git and the run branches to SHIPPED (exit 0, land it) or NOT_SHIPPED (exit 1, re-dispatch — caught), and that verdict steers the next step." width="100%">
19
29
  <br>
@@ -47,7 +57,23 @@ zero config, and the only thing you ever install is one small Python package.
47
57
  > ⏱️ **Want to try it right now?** Jump to **[Try it in 60 seconds](#try-it-in-60-seconds)**
48
58
  > — one command, real output, then come back for the why.
49
59
 
50
- <sub>**v0.24.1** · 3900+ tests · CI: Python 3.11–3.13 on Linux + a Windows 3.13
60
+ > ⚡ **Or just add it two commands, zero decisions.** From the repo where your
61
+ > agent works:
62
+ >
63
+ > ```bash
64
+ > pip install dos-kernel
65
+ > dos init --hooks auto # finds the agent runtime(s) you already use, wires in the checks
66
+ > ```
67
+ >
68
+ > From then on: your agent can't tell you **"done"** unless the work actually
69
+ > landed, two agents can't silently overwrite each other's files, and a run
70
+ > that stalls gets flagged instead of quietly spinning. Nothing about your
71
+ > workflow changes, and you don't need to learn any of the vocabulary below to
72
+ > be covered. It prints the one config file it wrote; deleting the `dos hook`
73
+ > entries there undoes it. (No runtime detected? It says so and lists the
74
+ > names to pick from — it never guesses.)
75
+
76
+ <sub>**v0.26.0** · 3900+ tests · CI: Python 3.11–3.13 on Linux + a Windows 3.13
51
77
  smoke run · the only runtime dependency is **PyYAML** · **MIT**.</sub>
52
78
 
53
79
  > 🧭 **Want it in plain words first?** What DOS is, what it catches, and what
@@ -500,9 +526,11 @@ first (`dos_verify` "did it ship?", `dos_commit_audit` "does this commit's claim
500
526
  match its diff?", `dos_status` one folded fact about a run), then
501
527
  `dos_arbitrate` (may two workers run without colliding?), the structured-refusal
502
528
  pair (`dos_refuse_reasons` / `dos_check_reason`), `dos_recall` (is this recalled
503
- memory still true?), and `dos_doctor` (the workspace report) so any
504
- MCP-speaking hostClaude Desktop, Cursor, Cline, Trae, an Agent-SDK app — can
505
- call the referee over JSON-on-stdio with zero Python coupling. Each verdict comes
529
+ memory still true?), `dos_citation_resolve` (does this cited legal case exist in
530
+ a third-party reporter?the *Mata v. Avianca* witness), and `dos_doctor` (the
531
+ workspace report) so any
532
+ MCP-speaking host — Claude Desktop, Claude Cowork, Cursor, Cline, Trae, an
533
+ Agent-SDK app — can call the referee over JSON-on-stdio with zero Python coupling. Each verdict comes
506
534
  back with a one-line interpretation of what it means for the agent's next move.
507
535
  (See **[the MCP server surface](https://github.com/anthony-chaudhary/dos-kernel/blob/master/docs/80_mcp-server-surface.md)**.)
508
536
 
@@ -517,6 +545,20 @@ thinks to. The per-host wiring for Cursor / Codex / Gemini is in
517
545
  **[the MCP README](https://github.com/anthony-chaudhary/dos-kernel/blob/master/src/dos_mcp/README.md)** — all four are MCP clients, so this
518
546
  works on every one of them with zero code.
519
547
 
548
+ **Gemini CLI users get a one-liner.** DOS ships a `gemini-extension.json`
549
+ manifest at the repo root, so the whole referee — the MCP server plus a context
550
+ file that tells the model to gate its own done-claims — installs as one Gemini
551
+ extension, no clone and no config edit:
552
+
553
+ ```bash
554
+ pip install 'dos-kernel[mcp]' # the server the extension launches
555
+ gemini extensions install https://github.com/anthony-chaudhary/dos-kernel
556
+ ```
557
+
558
+ The same manifest is what Google's auto-indexed
559
+ [extensions gallery](https://geminicli.com/extensions/) crawls, so the listing
560
+ is automatic.
561
+
520
562
  ### …then make the verdict *act* (hooks)
521
563
 
522
564
  To go from "the agent can ask" to "the host won't let a bad call through", wire
@@ -524,22 +566,46 @@ DOS's hooks into the runtime you actually run. One command per host — it write
524
566
  that host's own hook-config file, merged into anything already there:
525
567
 
526
568
  ```bash
569
+ dos init --hooks auto . # don't know the names below? this detects the
570
+ # runtime(s) this repo already uses and wires them all
527
571
  dos init --hooks claude-code . # .claude/settings.json
528
572
  dos init --hooks cursor . # .cursor/hooks.json
529
573
  dos init --hooks codex . # .codex/config.toml
530
574
  dos init --hooks gemini . # .gemini/settings.json
531
575
  dos init --hooks antigravity . # .agents/hooks.json
576
+ dos init --hooks claude-cowork . # the SAME .claude/settings.json Claude Code reads
532
577
  ```
533
578
 
579
+ The list above is illustrative, not authoritative — the live matrix is a verb:
580
+ `dos hosts` prints every host DOS can wire, sourced from the registries themselves
581
+ (`dos hosts --json` for tooling), so the table never rots out of sync with what
582
+ `dos init --hooks` actually installs. Each row carries the host's tier, the events
583
+ it binds, its dialect, its config path, the exact wiring command, and the host's
584
+ own caveat (Codex's partial tool coverage, Cowork's not-yet-firing hooks). A host
585
+ with **no** row is itself the signal: it has no hook seam, so its DOS surface is
586
+ the advisory one (MCP + skills).
587
+
534
588
  That binds three shipped hooks: `pretool` denies a structurally-refused call
535
589
  before it runs, `stop` refuses a stop on an unverified "done," `posttool`
536
590
  re-surfaces a stalled stream. This is the **enforcement** path (the *host*
537
591
  denies on a DOS verdict) — the complement to MCP's advisory path. Until
538
- recently this spoke only Claude Code; it now installs across five hosts —
539
- Claude Code, Cursor, Codex, Gemini, and Antigravity
592
+ recently this spoke only Claude Code; it now installs across six hosts —
593
+ Claude Code, Cursor, Codex, Gemini, Antigravity, and Claude Cowork
540
594
  ([docs/221](https://github.com/anthony-chaudhary/dos-kernel/blob/master/docs/221_the-cross-vendor-hook-installer.md),
541
- [docs/269](https://github.com/anthony-chaudhary/dos-kernel/blob/master/docs/269_antigravity-the-fifth-host.md)).
542
- `--with-hooks` is the back-compat alias for `--hooks claude-code`.
595
+ [docs/269](https://github.com/anthony-chaudhary/dos-kernel/blob/master/docs/269_antigravity-the-fifth-host.md),
596
+ [docs/298](https://github.com/anthony-chaudhary/dos-kernel/blob/master/docs/298_claude-cowork-the-sixth-host-shared-surface.md)).
597
+ `--with-hooks` is the back-compat alias for `--hooks claude-code`. `auto`
598
+ ([docs/303](https://github.com/anthony-chaudhary/dos-kernel/blob/master/docs/303_hooks-auto-detection-plan.md))
599
+ names the host *for* you: it probes which of those config dirs already exist in
600
+ the repo — plus the shell's own environment, so a fresh repo opened inside
601
+ Claude Code still detects — wires every runtime it finds (a shared config file
602
+ is wired once), and fails loud with the list above when nothing is detectable,
603
+ never guessing. Claude
604
+ Cowork is the *shared-surface* host: it runs the same agent harness as Claude
605
+ Code, so wiring either name binds both — one file, one set of hooks. (One
606
+ honest caveat, carried on the install note itself: the Cowork app doesn't
607
+ *fire* hooks yet — anthropics/claude-code#63360 — so until that closes,
608
+ Cowork's working DOS surface is the advisory one above.)
543
609
 
544
610
  Under the installer sits a pluggable dialect seam: the verdict is decided
545
611
  once, then rendered into whatever JSON shape the host parses
@@ -721,9 +787,9 @@ pip install "dos-kernel[mcp]"
721
787
 
722
788
  After installing, run **`/dos-kernel:dos-setup`** once — it confirms the package
723
789
  is importable, reports what the plugin wired, and points at the next skill. The
724
- same three hooks are available à la carte via `dos init --hooks claude-code`
725
- (and for Cursor / Codex / Gemini); the plugin is just the pre-packaged Claude
726
- Code form. The bundle's design + the build that keeps its skills in lockstep
790
+ same three hooks are available à la carte via `dos init --hooks auto` (detects
791
+ your runtime; or name one claude-code, cursor, codex, gemini, antigravity,
792
+ claude-cowork); the plugin is just the pre-packaged Claude Code form. The bundle's design + the build that keeps its skills in lockstep
727
793
  with the source are in **[claude-plugin/README.md](https://github.com/anthony-chaudhary/dos-kernel/blob/master/claude-plugin/README.md)**.
728
794
 
729
795
  ## CLI
@@ -941,12 +1007,33 @@ for a copy-me skeleton.
941
1007
  ## Documentation
942
1008
 
943
1009
  - **[docs/QUICKSTART.md](https://github.com/anthony-chaudhary/dos-kernel/blob/master/docs/QUICKSTART.md)** — runnable 5-minute hello-world. Start here.
1010
+ - **[docs/FAQ.md](https://github.com/anthony-chaudhary/dos-kernel/blob/master/docs/FAQ.md)** — the arriving questions ("how do I
1011
+ verify an agent's claim?", "does it need an LLM?"), each answered in one
1012
+ self-contained block.
1013
+ - **[docs/ALTERNATIVES.md](https://github.com/anthony-chaudhary/dos-kernel/blob/master/docs/ALTERNATIVES.md)** — DOS and the
1014
+ alternatives: evals, framework guardrails, Temporal, in-toto, plain CI —
1015
+ what each does well, what DOS adds, and when NOT to use DOS.
944
1016
  - **[docs/README.md](https://github.com/anthony-chaudhary/dos-kernel/blob/master/docs/README.md)** — the docs index (guides vs. design notes
945
1017
  vs. the dated build-journal; the numbers are chronology, not a reading order).
946
1018
  - **[docs/HACKING.md](https://github.com/anthony-chaudhary/dos-kernel/blob/master/docs/HACKING.md)** — extend DOS without forking it.
1019
+ - **[docs/DOT_DOS.md](https://github.com/anthony-chaudhary/dos-kernel/blob/master/docs/DOT_DOS.md)** — the `.dos`
1020
+ surface: what that directory is, why it's safe to delete, and the
1021
+ repo-resident state contract (policy in `dos.toml`, fossils under `.dos/`,
1022
+ verdicts in git) that keeps every host adapter thin.
1023
+ - **[docs/STABILITY.md](https://github.com/anthony-chaudhary/dos-kernel/blob/master/docs/STABILITY.md)** — the compatibility
1024
+ promise: what you may depend on, what SemVer means here, how deprecations
1025
+ are announced (`DosDeprecationWarning`, a two-minor-release window), and
1026
+ what will never break.
947
1027
  - **[CLAUDE.md](https://github.com/anthony-chaudhary/dos-kernel/blob/master/CLAUDE.md)** / **[CONTRIBUTING.md](https://github.com/anthony-chaudhary/dos-kernel/blob/master/CONTRIBUTING.md)** — the
948
1028
  architecture contract and how to send a change.
1029
+ - **[verify-action/](https://github.com/anthony-chaudhary/dos-kernel/blob/master/verify-action/README.md)** — the CI gate: a
1030
+ composite Action and a reusable workflow that run `dos commit-audit` on every
1031
+ PR and merge-queue group and post the verdict as the named **dos-verify**
1032
+ status check; make it required and GitHub enforces what the kernel decides
1033
+ (the *verified by DOS* badge above is this gate on the kernel's own repo).
949
1034
  - **[docs/releases/](https://github.com/anthony-chaudhary/dos-kernel/tree/master/docs/releases)** — per-version release notes (the changelog).
1035
+ - **[The website](https://anthony-chaudhary.github.io/dos-kernel/)** — this page,
1036
+ condensed to one screen (good for sending to someone).
950
1037
 
951
1038
  ## Playbooks & examples
952
1039
 
@@ -968,6 +1055,10 @@ back verbatim:
968
1055
  CrewAI, AutoGen, the OpenAI/Claude Agents SDK — with every framework recipe also
969
1056
  shipped as a runnable, suite-pinned file under
970
1057
  [`examples/fleet_frameworks/`](https://github.com/anthony-chaudhary/dos-kernel/tree/master/examples/fleet_frameworks).
1058
+ Two seats ship as drivers in the package itself ([docs/305](https://github.com/anthony-chaudhary/dos-kernel/blob/master/docs/305_guardrail-seat-pair-openai-agents-and-crewai-plan.md)):
1059
+ an OpenAI Agents SDK output guardrail that trips on a deliverable git can't
1060
+ see, and a CrewAI task guardrail that turns the retry loop into a
1061
+ do-the-work loop — one import line each.
971
1062
  - [**Wire DOS into a Hermes / OpenClaw swarm**](https://github.com/anthony-chaudhary/dos-kernel/tree/master/examples/hermes_integration) —
972
1063
  the offline, A/B-measured swarm-runtime example: the `exec-capability` gate
973
1064
  refuses a prompt-injected command before it runs (real at a single agent), and
@@ -9,7 +9,7 @@ build-backend = "setuptools.build_meta"
9
9
  # src/), and the console scripts stay `dos` / `dos-mcp` — only the pip-install /
10
10
  # dependency-pin name is `dos-kernel`. See SECURITY.md "Supply chain".
11
11
  name = "dos-kernel"
12
- version = "0.24.1"
12
+ version = "0.26.0"
13
13
  description = "Dispatch Operating System — the domain-free trust substrate for fleets of autonomous agents (verdict spine, ship oracle, structured refusal, lane arbiter, correlation spine)."
14
14
  # The PyPI project page renders this. Point it at the README so the page isn't
15
15
  # blank below the metadata (twine warns when it's missing). PyPI resolves
@@ -24,6 +24,11 @@ keywords = [
24
24
  "agents", "ai-agents", "llm", "multi-agent", "agent-orchestration",
25
25
  "orchestration", "dispatch", "scheduler", "oracle", "leases",
26
26
  "verification", "trust", "mcp",
27
+ # The arrival terms an agent or answer engine actually types (docs/299 P3).
28
+ # Honesty rule: every keyword must be true of the package — no aspirational
29
+ # or adjacent-product terms.
30
+ "claude", "claude-code", "mcp-server", "model-context-protocol",
31
+ "agent-verification", "autonomous-agents", "agent-monitoring",
27
32
  ]
28
33
  classifiers = [
29
34
  "Development Status :: 4 - Beta",
@@ -118,6 +123,18 @@ export-otlp = [
118
123
  "opentelemetry-sdk>=1.20",
119
124
  "opentelemetry-exporter-otlp-proto-http>=1.20",
120
125
  ]
126
+ # The Mem0 memory-store driver (src/dos/drivers/memory_mem0, docs/314 P3). Kept OUT
127
+ # of the core for the same reason as [mcp]/[tui]/[notify-slack]: the kernel stays
128
+ # near-stdlib. `dos memory recall/verify/admit` work with NO extra (the built-in
129
+ # `file` store; the admit gate reads only candidate bytes); this extra adds only the
130
+ # Mem0 SDK so the same gates sweep a HOSTED memory store. The driver imports the SDK
131
+ # LAZILY (inside the client builder, never at module load) and fails with an install
132
+ # hint only when a read is attempted — so entry-point discovery of the driver never
133
+ # fails for lack of it (the notify_slack discipline). The store seam
134
+ # (dos.memory_stores) names no provider and stays dependency-free.
135
+ memory-mem0 = [
136
+ "mem0ai>=0.1",
137
+ ]
121
138
  # The arXiv paper bundle tooling (paper/arxiv/make_bundle.py). NOT part of the
122
139
  # kernel — it operates on the paper, which itself only `import dos`-es nothing
123
140
  # (the paper is downstream of the code, the one-way arrow). Kept OUT of the core
@@ -188,6 +205,10 @@ codex = "dos.drivers.hook_dialects:CodexDialect"
188
205
  gemini = "dos.drivers.hook_dialects:GeminiDialect"
189
206
  cursor = "dos.drivers.hook_dialects:CursorDialect"
190
207
  antigravity = "dos.drivers.hook_dialects:AntigravityDialect"
208
+ # Claude Cowork runs the Claude Code agent harness in a desktop VM, so its envelope
209
+ # IS CC's — the renderer delegates (the Codex precedent), kept as a named entry so
210
+ # `--dialect claude-cowork` resolves and a future divergence has a home (docs/298).
211
+ claude-cowork = "dos.drivers.hook_dialects:ClaudeCoworkDialect"
191
212
  # Hermes Agent (Nous Research) — its `pre_tool_call` SHELL hook is a real
192
213
  # stdout-JSON deny surface (`{"decision":"block","reason":…}`), docs/278. (OpenClaw's
193
214
  # real hook is an in-process TS return, not stdout — no renderer consumer; SwarmClaw
@@ -282,10 +303,34 @@ codex = "dos.drivers.hook_dialects:codex_install_spec"
282
303
  gemini = "dos.drivers.hook_dialects:gemini_install_spec"
283
304
  cursor = "dos.drivers.hook_dialects:cursor_install_spec"
284
305
  antigravity = "dos.drivers.hook_dialects:antigravity_install_spec"
306
+ # Claude Cowork — the SHARED surface: the same .claude/settings.json Claude Code
307
+ # reads (same harness, same file; the wired command carries NO --dialect because the
308
+ # shared file must serve both runtimes and the default IS the envelope). The spec's
309
+ # note carries the one Cowork-specific fact: the product does not fire hooks yet
310
+ # (anthropics/claude-code#63360, docs/298).
311
+ claude-cowork = "dos.drivers.hook_dialects:claude_cowork_install_spec"
312
+
313
+ # The memory-STORE providers (docs/314 P2/P3) — where a fleet's memories live, so
314
+ # the recall gate (docs/103) and the write gate (`dos memory admit`) can run against
315
+ # hosted memory, not just a directory of markdown. The kernel seam
316
+ # (`dos.memory_stores`) holds the read-only MemoryStore Protocol + resolver + the
317
+ # ONE unshadowable `file` built-in; every provider store names its vendor as code
318
+ # (a Mem0 store is inherently Mem0-specific), which the vendor-blindness litmus
319
+ # forbids in a kernel module — so it lives in a DRIVER and registers here, the same
320
+ # kernel/driver split as `dos.judges` / `dos.notifiers`. `--store-kind mem0`
321
+ # discovers it by name; the kernel imports none of them. The `mem0` store needs the
322
+ # `[memory-mem0]` extra; its lazy import means discovering it here never fails when
323
+ # the extra is absent (it resolves, and reports the install hint only on a read).
324
+ [project.entry-points."dos.memory_stores"]
325
+ mem0 = "dos.drivers.memory_mem0:Mem0Store"
285
326
 
286
327
  [project.urls]
287
328
  Homepage = "https://github.com/anthony-chaudhary/dos-kernel"
329
+ Website = "https://anthony-chaudhary.github.io/dos-kernel/"
288
330
  Documentation = "https://github.com/anthony-chaudhary/dos-kernel/blob/master/docs/QUICKSTART.md"
331
+ FAQ = "https://github.com/anthony-chaudhary/dos-kernel/blob/master/docs/FAQ.md"
332
+ # The agent-facing index (docs/299): the raw URL is the fetchable spelling.
333
+ "llms.txt" = "https://raw.githubusercontent.com/anthony-chaudhary/dos-kernel/master/llms.txt"
289
334
  Repository = "https://github.com/anthony-chaudhary/dos-kernel"
290
335
  Issues = "https://github.com/anthony-chaudhary/dos-kernel/issues"
291
336
  Changelog = "https://github.com/anthony-chaudhary/dos-kernel/tree/master/docs/releases"
@@ -46,7 +46,7 @@ try:
46
46
 
47
47
  __version__ = _pkg_version("dos-kernel")
48
48
  except Exception: # pragma: no cover - source-tree / not-installed fallback
49
- __version__ = "0.24.1"
49
+ __version__ = "0.26.0"
50
50
 
51
51
  from dos import config # noqa: F401 (re-export the seam as the package entry)
52
52
  from dos.config import ( # noqa: F401
@@ -166,6 +166,17 @@ from dos.reward import ( # noqa: F401 (the reward-set admission verdict, docs/
166
166
  AcceptanceAB,
167
167
  acceptance_ab as reward_acceptance_ab,
168
168
  )
169
+ from dos.deprecation import ( # noqa: F401 (the typed deprecation category, docs/308)
170
+ DosDeprecationWarning,
171
+ warn_deprecated,
172
+ )
173
+ from dos.verified import ( # noqa: F401 (the in-process verify gate, issue #75)
174
+ # NB: this deliberately rebinds the `dos.verified` attribute from the
175
+ # submodule to the callable, so `from dos import verified` yields the
176
+ # decorator/context-manager (the issue-#75 surface), datetime.datetime-style.
177
+ verified,
178
+ NotShippedError,
179
+ )
169
180
 
170
181
  __all__ = [
171
182
  "__version__",
@@ -258,4 +269,8 @@ __all__ = [
258
269
  "reward_admit",
259
270
  "AcceptanceAB",
260
271
  "reward_acceptance_ab",
272
+ "DosDeprecationWarning",
273
+ "warn_deprecated",
274
+ "verified",
275
+ "NotShippedError",
261
276
  ]