karox-runtime 5.0.0rc2__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 (527) hide show
  1. karox_runtime-5.0.0rc2/LICENSE +21 -0
  2. karox_runtime-5.0.0rc2/PKG-INFO +448 -0
  3. karox_runtime-5.0.0rc2/README.md +419 -0
  4. karox_runtime-5.0.0rc2/pyproject.toml +238 -0
  5. karox_runtime-5.0.0rc2/setup.cfg +4 -0
  6. karox_runtime-5.0.0rc2/src/karox/__init__.py +6 -0
  7. karox_runtime-5.0.0rc2/src/karox/access_mode.py +248 -0
  8. karox_runtime-5.0.0rc2/src/karox/action_execution.py +231 -0
  9. karox_runtime-5.0.0rc2/src/karox/action_policy.py +610 -0
  10. karox_runtime-5.0.0rc2/src/karox/activity_stream.py +439 -0
  11. karox_runtime-5.0.0rc2/src/karox/affected_checks.py +962 -0
  12. karox_runtime-5.0.0rc2/src/karox/agent.py +2576 -0
  13. karox_runtime-5.0.0rc2/src/karox/agent_mcp.py +92 -0
  14. karox_runtime-5.0.0rc2/src/karox/agent_modes.py +168 -0
  15. karox_runtime-5.0.0rc2/src/karox/agent_protocol.py +347 -0
  16. karox_runtime-5.0.0rc2/src/karox/artifacts.py +306 -0
  17. karox_runtime-5.0.0rc2/src/karox/autonomy_benchmark.py +1012 -0
  18. karox_runtime-5.0.0rc2/src/karox/autonomy_runtime.py +3207 -0
  19. karox_runtime-5.0.0rc2/src/karox/background_orchestration.py +344 -0
  20. karox_runtime-5.0.0rc2/src/karox/background_worker.py +58 -0
  21. karox_runtime-5.0.0rc2/src/karox/bridge.py +465 -0
  22. karox_runtime-5.0.0rc2/src/karox/bridge_handoff.py +185 -0
  23. karox_runtime-5.0.0rc2/src/karox/browser_access.py +1892 -0
  24. karox_runtime-5.0.0rc2/src/karox/browser_approval.py +451 -0
  25. karox_runtime-5.0.0rc2/src/karox/browser_bootstrap.py +218 -0
  26. karox_runtime-5.0.0rc2/src/karox/browser_credential_injection.py +128 -0
  27. karox_runtime-5.0.0rc2/src/karox/browser_credentials.py +224 -0
  28. karox_runtime-5.0.0rc2/src/karox/browser_errors.py +144 -0
  29. karox_runtime-5.0.0rc2/src/karox/browser_extension/__init__.py +1 -0
  30. karox_runtime-5.0.0rc2/src/karox/browser_extension/content.js +509 -0
  31. karox_runtime-5.0.0rc2/src/karox/browser_extension/dom_helpers.js +442 -0
  32. karox_runtime-5.0.0rc2/src/karox/browser_extension/manifest.json +57 -0
  33. karox_runtime-5.0.0rc2/src/karox/browser_extension/newtab.css +1 -0
  34. karox_runtime-5.0.0rc2/src/karox/browser_extension/newtab.html +21 -0
  35. karox_runtime-5.0.0rc2/src/karox/browser_extension/newtab.js +1 -0
  36. karox_runtime-5.0.0rc2/src/karox/browser_extension/page_console_bridge.js +93 -0
  37. karox_runtime-5.0.0rc2/src/karox/browser_extension/service_worker.js +1426 -0
  38. karox_runtime-5.0.0rc2/src/karox/browser_extension/sidepanel.css +1 -0
  39. karox_runtime-5.0.0rc2/src/karox/browser_extension/sidepanel.html +27 -0
  40. karox_runtime-5.0.0rc2/src/karox/browser_extension/sidepanel.js +1 -0
  41. karox_runtime-5.0.0rc2/src/karox/browser_session.py +521 -0
  42. karox_runtime-5.0.0rc2/src/karox/build_identity.py +124 -0
  43. karox_runtime-5.0.0rc2/src/karox/cache_scheduler.py +263 -0
  44. karox_runtime-5.0.0rc2/src/karox/chatgpt_project_binding.py +307 -0
  45. karox_runtime-5.0.0rc2/src/karox/check_jobs.py +1523 -0
  46. karox_runtime-5.0.0rc2/src/karox/checkpoints.py +75 -0
  47. karox_runtime-5.0.0rc2/src/karox/cli.py +6897 -0
  48. karox_runtime-5.0.0rc2/src/karox/cli_shortcuts.py +128 -0
  49. karox_runtime-5.0.0rc2/src/karox/clickup_setup.py +1412 -0
  50. karox_runtime-5.0.0rc2/src/karox/client_capabilities.py +279 -0
  51. karox_runtime-5.0.0rc2/src/karox/clipboard.py +175 -0
  52. karox_runtime-5.0.0rc2/src/karox/command_guard.py +217 -0
  53. karox_runtime-5.0.0rc2/src/karox/connection_controller.py +581 -0
  54. karox_runtime-5.0.0rc2/src/karox/connection_runtime.py +556 -0
  55. karox_runtime-5.0.0rc2/src/karox/connection_status.py +413 -0
  56. karox_runtime-5.0.0rc2/src/karox/connection_tests.py +391 -0
  57. karox_runtime-5.0.0rc2/src/karox/connections.py +1456 -0
  58. karox_runtime-5.0.0rc2/src/karox/constitution.py +288 -0
  59. karox_runtime-5.0.0rc2/src/karox/context_ab.py +300 -0
  60. karox_runtime-5.0.0rc2/src/karox/context_bus.py +425 -0
  61. karox_runtime-5.0.0rc2/src/karox/context_compiler.py +375 -0
  62. karox_runtime-5.0.0rc2/src/karox/core.py +2603 -0
  63. karox_runtime-5.0.0rc2/src/karox/core_tools.py +908 -0
  64. karox_runtime-5.0.0rc2/src/karox/cost_intelligence.py +648 -0
  65. karox_runtime-5.0.0rc2/src/karox/credentials.py +273 -0
  66. karox_runtime-5.0.0rc2/src/karox/delegated_provider.py +252 -0
  67. karox_runtime-5.0.0rc2/src/karox/desktop_apps.py +1058 -0
  68. karox_runtime-5.0.0rc2/src/karox/detached_process.py +92 -0
  69. karox_runtime-5.0.0rc2/src/karox/disk_maintenance.py +1099 -0
  70. karox_runtime-5.0.0rc2/src/karox/economy_engine.py +306 -0
  71. karox_runtime-5.0.0rc2/src/karox/economy_eval.py +179 -0
  72. karox_runtime-5.0.0rc2/src/karox/ecosystem.py +268 -0
  73. karox_runtime-5.0.0rc2/src/karox/effort.py +442 -0
  74. karox_runtime-5.0.0rc2/src/karox/effort_signals.py +324 -0
  75. karox_runtime-5.0.0rc2/src/karox/ellipsis_api.py +459 -0
  76. karox_runtime-5.0.0rc2/src/karox/ellipsis_bridge_server.py +382 -0
  77. karox_runtime-5.0.0rc2/src/karox/ellipsis_checkpoint.py +367 -0
  78. karox_runtime-5.0.0rc2/src/karox/ellipsis_cli.py +409 -0
  79. karox_runtime-5.0.0rc2/src/karox/ellipsis_helpers.py +407 -0
  80. karox_runtime-5.0.0rc2/src/karox/ellipsis_runtime.py +810 -0
  81. karox_runtime-5.0.0rc2/src/karox/ellipsis_watchdog.py +115 -0
  82. karox_runtime-5.0.0rc2/src/karox/entrypoint.py +70 -0
  83. karox_runtime-5.0.0rc2/src/karox/event_bus.py +343 -0
  84. karox_runtime-5.0.0rc2/src/karox/evidence_packets.py +443 -0
  85. karox_runtime-5.0.0rc2/src/karox/extension_browser.py +1586 -0
  86. karox_runtime-5.0.0rc2/src/karox/file_mentions.py +108 -0
  87. karox_runtime-5.0.0rc2/src/karox/handoff.py +208 -0
  88. karox_runtime-5.0.0rc2/src/karox/hosted_bridge.py +1328 -0
  89. karox_runtime-5.0.0rc2/src/karox/hosted_project_orchestration.py +139 -0
  90. karox_runtime-5.0.0rc2/src/karox/hosted_tools_runtime.py +3080 -0
  91. karox_runtime-5.0.0rc2/src/karox/hot_worker.py +341 -0
  92. karox_runtime-5.0.0rc2/src/karox/image_attachments.py +109 -0
  93. karox_runtime-5.0.0rc2/src/karox/intelligence_pool.py +508 -0
  94. karox_runtime-5.0.0rc2/src/karox/launch_support.py +219 -0
  95. karox_runtime-5.0.0rc2/src/karox/lsp_diagnostics.py +362 -0
  96. karox_runtime-5.0.0rc2/src/karox/managed_browser.py +661 -0
  97. karox_runtime-5.0.0rc2/src/karox/managed_process_cleanup.py +63 -0
  98. karox_runtime-5.0.0rc2/src/karox/map_service.py +798 -0
  99. karox_runtime-5.0.0rc2/src/karox/mcp_client.py +1171 -0
  100. karox_runtime-5.0.0rc2/src/karox/mcp_oauth.py +268 -0
  101. karox_runtime-5.0.0rc2/src/karox/mcp_status.py +302 -0
  102. karox_runtime-5.0.0rc2/src/karox/memory.py +672 -0
  103. karox_runtime-5.0.0rc2/src/karox/migration.py +245 -0
  104. karox_runtime-5.0.0rc2/src/karox/mission_control.py +462 -0
  105. karox_runtime-5.0.0rc2/src/karox/mission_control_server.py +320 -0
  106. karox_runtime-5.0.0rc2/src/karox/mission_control_worker.py +112 -0
  107. karox_runtime-5.0.0rc2/src/karox/mobile_mission.py +309 -0
  108. karox_runtime-5.0.0rc2/src/karox/mode_artifacts.py +141 -0
  109. karox_runtime-5.0.0rc2/src/karox/model_auto.py +124 -0
  110. karox_runtime-5.0.0rc2/src/karox/model_delegation_broker.py +213 -0
  111. karox_runtime-5.0.0rc2/src/karox/model_grant_requests.py +496 -0
  112. karox_runtime-5.0.0rc2/src/karox/model_grants.py +1084 -0
  113. karox_runtime-5.0.0rc2/src/karox/model_hot_actions.py +467 -0
  114. karox_runtime-5.0.0rc2/src/karox/model_micro_benchmark.py +157 -0
  115. karox_runtime-5.0.0rc2/src/karox/model_quality_benchmark.py +316 -0
  116. karox_runtime-5.0.0rc2/src/karox/models.py +251 -0
  117. karox_runtime-5.0.0rc2/src/karox/notion_mcp.py +60 -0
  118. karox_runtime-5.0.0rc2/src/karox/oauth_bridge.py +1465 -0
  119. karox_runtime-5.0.0rc2/src/karox/openapi_bridge.py +392 -0
  120. karox_runtime-5.0.0rc2/src/karox/openrouter_delegation.py +472 -0
  121. karox_runtime-5.0.0rc2/src/karox/orchestration_cli.py +861 -0
  122. karox_runtime-5.0.0rc2/src/karox/orchestration_native.py +319 -0
  123. karox_runtime-5.0.0rc2/src/karox/orchestration_planning.py +170 -0
  124. karox_runtime-5.0.0rc2/src/karox/orchestration_presenter.py +372 -0
  125. karox_runtime-5.0.0rc2/src/karox/orchestration_recipes.py +162 -0
  126. karox_runtime-5.0.0rc2/src/karox/orchestration_recovery.py +287 -0
  127. karox_runtime-5.0.0rc2/src/karox/orchestration_routing.py +481 -0
  128. karox_runtime-5.0.0rc2/src/karox/orchestrator.py +1715 -0
  129. karox_runtime-5.0.0rc2/src/karox/orchestrator_advisor.py +252 -0
  130. karox_runtime-5.0.0rc2/src/karox/orchestrator_delegation.py +329 -0
  131. karox_runtime-5.0.0rc2/src/karox/output_policy.py +151 -0
  132. karox_runtime-5.0.0rc2/src/karox/packs.py +951 -0
  133. karox_runtime-5.0.0rc2/src/karox/paths.py +160 -0
  134. karox_runtime-5.0.0rc2/src/karox/plan_act.py +97 -0
  135. karox_runtime-5.0.0rc2/src/karox/plan_executor.py +1605 -0
  136. karox_runtime-5.0.0rc2/src/karox/policy.py +212 -0
  137. karox_runtime-5.0.0rc2/src/karox/port_allocation.py +144 -0
  138. karox_runtime-5.0.0rc2/src/karox/port_ownership.py +593 -0
  139. karox_runtime-5.0.0rc2/src/karox/process_identity.py +430 -0
  140. karox_runtime-5.0.0rc2/src/karox/process_launcher.py +150 -0
  141. karox_runtime-5.0.0rc2/src/karox/project_context.py +506 -0
  142. karox_runtime-5.0.0rc2/src/karox/project_map.py +363 -0
  143. karox_runtime-5.0.0rc2/src/karox/project_registry.py +250 -0
  144. karox_runtime-5.0.0rc2/src/karox/prompt_benchmark.py +239 -0
  145. karox_runtime-5.0.0rc2/src/karox/prompt_cache_plan.py +64 -0
  146. karox_runtime-5.0.0rc2/src/karox/promptql_outbound.py +276 -0
  147. karox_runtime-5.0.0rc2/src/karox/provider_adapters.py +1321 -0
  148. karox_runtime-5.0.0rc2/src/karox/provider_controller.py +661 -0
  149. karox_runtime-5.0.0rc2/src/karox/provider_credential_capture.py +200 -0
  150. karox_runtime-5.0.0rc2/src/karox/provider_factory.py +50 -0
  151. karox_runtime-5.0.0rc2/src/karox/provider_presets.py +378 -0
  152. karox_runtime-5.0.0rc2/src/karox/provider_pricing.py +209 -0
  153. karox_runtime-5.0.0rc2/src/karox/providers.py +1123 -0
  154. karox_runtime-5.0.0rc2/src/karox/proxy.py +252 -0
  155. karox_runtime-5.0.0rc2/src/karox/proxy_server.py +2049 -0
  156. karox_runtime-5.0.0rc2/src/karox/quickstart.py +387 -0
  157. karox_runtime-5.0.0rc2/src/karox/quota_brain.py +136 -0
  158. karox_runtime-5.0.0rc2/src/karox/recipe_registry.py +187 -0
  159. karox_runtime-5.0.0rc2/src/karox/registry.py +659 -0
  160. karox_runtime-5.0.0rc2/src/karox/release_hot_actions.py +577 -0
  161. karox_runtime-5.0.0rc2/src/karox/remote_lease.py +280 -0
  162. karox_runtime-5.0.0rc2/src/karox/remote_tools.py +806 -0
  163. karox_runtime-5.0.0rc2/src/karox/repo_context.py +1950 -0
  164. karox_runtime-5.0.0rc2/src/karox/repository_lease.py +492 -0
  165. karox_runtime-5.0.0rc2/src/karox/research_subagent.py +613 -0
  166. karox_runtime-5.0.0rc2/src/karox/result_envelope.py +197 -0
  167. karox_runtime-5.0.0rc2/src/karox/risk_engine.py +648 -0
  168. karox_runtime-5.0.0rc2/src/karox/risk_mapping.py +583 -0
  169. karox_runtime-5.0.0rc2/src/karox/route_health.py +170 -0
  170. karox_runtime-5.0.0rc2/src/karox/routing.py +686 -0
  171. karox_runtime-5.0.0rc2/src/karox/runtime_restart.py +510 -0
  172. karox_runtime-5.0.0rc2/src/karox/saved_bridge_autostart.py +889 -0
  173. karox_runtime-5.0.0rc2/src/karox/saved_bridge_supervisor.py +1134 -0
  174. karox_runtime-5.0.0rc2/src/karox/security.py +157 -0
  175. karox_runtime-5.0.0rc2/src/karox/service_supervisor.py +758 -0
  176. karox_runtime-5.0.0rc2/src/karox/session_view.py +1129 -0
  177. karox_runtime-5.0.0rc2/src/karox/sessions.py +825 -0
  178. karox_runtime-5.0.0rc2/src/karox/shadow_economy.py +229 -0
  179. karox_runtime-5.0.0rc2/src/karox/skills.py +873 -0
  180. karox_runtime-5.0.0rc2/src/karox/smart_stop.py +173 -0
  181. karox_runtime-5.0.0rc2/src/karox/static_server.py +45 -0
  182. karox_runtime-5.0.0rc2/src/karox/subscription_cli.py +640 -0
  183. karox_runtime-5.0.0rc2/src/karox/system_chrome.py +321 -0
  184. karox_runtime-5.0.0rc2/src/karox/tailscale.py +938 -0
  185. karox_runtime-5.0.0rc2/src/karox/tailscale_routes.py +389 -0
  186. karox_runtime-5.0.0rc2/src/karox/task_state.py +469 -0
  187. karox_runtime-5.0.0rc2/src/karox/tool_catalog.py +66 -0
  188. karox_runtime-5.0.0rc2/src/karox/tool_telemetry.py +425 -0
  189. karox_runtime-5.0.0rc2/src/karox/tool_universe.py +187 -0
  190. karox_runtime-5.0.0rc2/src/karox/transcript.py +407 -0
  191. karox_runtime-5.0.0rc2/src/karox/transcript_shadow.py +435 -0
  192. karox_runtime-5.0.0rc2/src/karox/tui.py +16842 -0
  193. karox_runtime-5.0.0rc2/src/karox/tui_connections.py +9408 -0
  194. karox_runtime-5.0.0rc2/src/karox/tui_dashboard.py +1192 -0
  195. karox_runtime-5.0.0rc2/src/karox/tui_workspace.py +332 -0
  196. karox_runtime-5.0.0rc2/src/karox/unified_patch.py +295 -0
  197. karox_runtime-5.0.0rc2/src/karox/usage_analytics.py +467 -0
  198. karox_runtime-5.0.0rc2/src/karox/usage_report.py +376 -0
  199. karox_runtime-5.0.0rc2/src/karox/user_commands.py +232 -0
  200. karox_runtime-5.0.0rc2/src/karox/verification.py +351 -0
  201. karox_runtime-5.0.0rc2/src/karox/web_bridge_launcher.py +6698 -0
  202. karox_runtime-5.0.0rc2/src/karox/web_bridge_profiles.py +552 -0
  203. karox_runtime-5.0.0rc2/src/karox/worker_adapter_registry.py +101 -0
  204. karox_runtime-5.0.0rc2/src/karox/worker_adapters.py +236 -0
  205. karox_runtime-5.0.0rc2/src/karox/workspace_change_guard.py +269 -0
  206. karox_runtime-5.0.0rc2/src/karox/workspace_transaction.py +490 -0
  207. karox_runtime-5.0.0rc2/src/karox/workspace_worker.py +639 -0
  208. karox_runtime-5.0.0rc2/src/karox/worktree_pool.py +576 -0
  209. karox_runtime-5.0.0rc2/src/karox_runtime.egg-info/PKG-INFO +448 -0
  210. karox_runtime-5.0.0rc2/src/karox_runtime.egg-info/SOURCES.txt +525 -0
  211. karox_runtime-5.0.0rc2/src/karox_runtime.egg-info/dependency_links.txt +1 -0
  212. karox_runtime-5.0.0rc2/src/karox_runtime.egg-info/entry_points.txt +4 -0
  213. karox_runtime-5.0.0rc2/src/karox_runtime.egg-info/requires.txt +22 -0
  214. karox_runtime-5.0.0rc2/src/karox_runtime.egg-info/top_level.txt +1 -0
  215. karox_runtime-5.0.0rc2/tests/test_access_mode.py +207 -0
  216. karox_runtime-5.0.0rc2/tests/test_action_execution.py +87 -0
  217. karox_runtime-5.0.0rc2/tests/test_action_execution_checkpoint_adapter.py +113 -0
  218. karox_runtime-5.0.0rc2/tests/test_action_policy.py +305 -0
  219. karox_runtime-5.0.0rc2/tests/test_activity_stream.py +368 -0
  220. karox_runtime-5.0.0rc2/tests/test_affected_checks.py +487 -0
  221. karox_runtime-5.0.0rc2/tests/test_affected_checks_nested_lease.py +93 -0
  222. karox_runtime-5.0.0rc2/tests/test_agent.py +2223 -0
  223. karox_runtime-5.0.0rc2/tests/test_agent_events.py +231 -0
  224. karox_runtime-5.0.0rc2/tests/test_agent_modes.py +97 -0
  225. karox_runtime-5.0.0rc2/tests/test_agent_quality_economy.py +253 -0
  226. karox_runtime-5.0.0rc2/tests/test_agent_small_talk.py +31 -0
  227. karox_runtime-5.0.0rc2/tests/test_autonomy_benchmark.py +26 -0
  228. karox_runtime-5.0.0rc2/tests/test_autonomy_runtime.py +1165 -0
  229. karox_runtime-5.0.0rc2/tests/test_background_orchestration.py +199 -0
  230. karox_runtime-5.0.0rc2/tests/test_benchmark.py +747 -0
  231. karox_runtime-5.0.0rc2/tests/test_bootstrap_portable.py +101 -0
  232. karox_runtime-5.0.0rc2/tests/test_bridge.py +887 -0
  233. karox_runtime-5.0.0rc2/tests/test_bridge_credential_rotation.py +303 -0
  234. karox_runtime-5.0.0rc2/tests/test_bridge_lifecycle_cli.py +172 -0
  235. karox_runtime-5.0.0rc2/tests/test_bridge_restart_lifecycle.py +156 -0
  236. karox_runtime-5.0.0rc2/tests/test_bridge_tool_normalization.py +110 -0
  237. karox_runtime-5.0.0rc2/tests/test_browser_bootstrap.py +127 -0
  238. karox_runtime-5.0.0rc2/tests/test_browser_capability_regression.py +286 -0
  239. karox_runtime-5.0.0rc2/tests/test_browser_command_actions.py +207 -0
  240. karox_runtime-5.0.0rc2/tests/test_browser_credential_cli.py +105 -0
  241. karox_runtime-5.0.0rc2/tests/test_browser_credential_injection.py +168 -0
  242. karox_runtime-5.0.0rc2/tests/test_browser_credential_runtime.py +291 -0
  243. karox_runtime-5.0.0rc2/tests/test_browser_credentials.py +147 -0
  244. karox_runtime-5.0.0rc2/tests/test_browser_fixture_suite.py +289 -0
  245. karox_runtime-5.0.0rc2/tests/test_browser_input_implies_read.py +314 -0
  246. karox_runtime-5.0.0rc2/tests/test_browser_probe_cleanup.py +57 -0
  247. karox_runtime-5.0.0rc2/tests/test_browser_restart_profile_contract.py +83 -0
  248. karox_runtime-5.0.0rc2/tests/test_browser_takeover_persistence.py +274 -0
  249. karox_runtime-5.0.0rc2/tests/test_build_identity.py +107 -0
  250. karox_runtime-5.0.0rc2/tests/test_bypass_matrix.py +288 -0
  251. karox_runtime-5.0.0rc2/tests/test_bypass_wiring.py +206 -0
  252. karox_runtime-5.0.0rc2/tests/test_cache_scheduler.py +203 -0
  253. karox_runtime-5.0.0rc2/tests/test_cache_scheduler_wiring.py +203 -0
  254. karox_runtime-5.0.0rc2/tests/test_capability_runtime.py +306 -0
  255. karox_runtime-5.0.0rc2/tests/test_catalog_refresh.py +131 -0
  256. karox_runtime-5.0.0rc2/tests/test_channel_isolation.py +125 -0
  257. karox_runtime-5.0.0rc2/tests/test_chatgpt_inline_result_budget.py +89 -0
  258. karox_runtime-5.0.0rc2/tests/test_chatgpt_project_binding.py +128 -0
  259. karox_runtime-5.0.0rc2/tests/test_chatgpt_project_hosted_integration.py +73 -0
  260. karox_runtime-5.0.0rc2/tests/test_chatgpt_project_orchestration.py +257 -0
  261. karox_runtime-5.0.0rc2/tests/test_check_jobs.py +671 -0
  262. karox_runtime-5.0.0rc2/tests/test_ci_test_command.py +42 -0
  263. karox_runtime-5.0.0rc2/tests/test_cli_doctor_autonomy.py +116 -0
  264. karox_runtime-5.0.0rc2/tests/test_cli_effort_mode_preferences.py +46 -0
  265. karox_runtime-5.0.0rc2/tests/test_cli_human_help.py +56 -0
  266. karox_runtime-5.0.0rc2/tests/test_cli_jobs.py +174 -0
  267. karox_runtime-5.0.0rc2/tests/test_cli_provider_e2e.py +294 -0
  268. karox_runtime-5.0.0rc2/tests/test_cli_root_shortcuts.py +56 -0
  269. karox_runtime-5.0.0rc2/tests/test_cli_shortcuts.py +88 -0
  270. karox_runtime-5.0.0rc2/tests/test_cli_status_autonomy.py +100 -0
  271. karox_runtime-5.0.0rc2/tests/test_clickup_setup.py +1326 -0
  272. karox_runtime-5.0.0rc2/tests/test_client_capabilities.py +151 -0
  273. karox_runtime-5.0.0rc2/tests/test_client_evidence.py +104 -0
  274. karox_runtime-5.0.0rc2/tests/test_cloudflared_installer_pin.py +63 -0
  275. karox_runtime-5.0.0rc2/tests/test_command_catalog.py +63 -0
  276. karox_runtime-5.0.0rc2/tests/test_command_guard.py +57 -0
  277. karox_runtime-5.0.0rc2/tests/test_connection_controller.py +235 -0
  278. karox_runtime-5.0.0rc2/tests/test_connection_enablement.py +643 -0
  279. karox_runtime-5.0.0rc2/tests/test_connection_runtime.py +251 -0
  280. karox_runtime-5.0.0rc2/tests/test_connection_status.py +289 -0
  281. karox_runtime-5.0.0rc2/tests/test_connection_tests.py +152 -0
  282. karox_runtime-5.0.0rc2/tests/test_connection_tests_model.py +205 -0
  283. karox_runtime-5.0.0rc2/tests/test_connections.py +325 -0
  284. karox_runtime-5.0.0rc2/tests/test_connections_cli.py +520 -0
  285. karox_runtime-5.0.0rc2/tests/test_constitution.py +139 -0
  286. karox_runtime-5.0.0rc2/tests/test_constitution_wiring.py +218 -0
  287. karox_runtime-5.0.0rc2/tests/test_context_ab.py +102 -0
  288. karox_runtime-5.0.0rc2/tests/test_context_compiler.py +221 -0
  289. karox_runtime-5.0.0rc2/tests/test_continuity_ledger.py +194 -0
  290. karox_runtime-5.0.0rc2/tests/test_core.py +727 -0
  291. karox_runtime-5.0.0rc2/tests/test_core_bridge_repository_lease.py +119 -0
  292. karox_runtime-5.0.0rc2/tests/test_core_checks.py +467 -0
  293. karox_runtime-5.0.0rc2/tests/test_core_process_stdio.py +37 -0
  294. karox_runtime-5.0.0rc2/tests/test_core_search_fast_path.py +176 -0
  295. karox_runtime-5.0.0rc2/tests/test_core_smart_stop.py +241 -0
  296. karox_runtime-5.0.0rc2/tests/test_credentials.py +135 -0
  297. karox_runtime-5.0.0rc2/tests/test_default_dispatch.py +357 -0
  298. karox_runtime-5.0.0rc2/tests/test_delegated_provider.py +256 -0
  299. karox_runtime-5.0.0rc2/tests/test_desktop_apps.py +338 -0
  300. karox_runtime-5.0.0rc2/tests/test_desktop_live_probe.py +29 -0
  301. karox_runtime-5.0.0rc2/tests/test_desktop_noninvasive_contract.py +46 -0
  302. karox_runtime-5.0.0rc2/tests/test_detached_process.py +133 -0
  303. karox_runtime-5.0.0rc2/tests/test_dev_command_jobs.py +216 -0
  304. karox_runtime-5.0.0rc2/tests/test_dev_server_identity.py +240 -0
  305. karox_runtime-5.0.0rc2/tests/test_developer_runtime.py +824 -0
  306. karox_runtime-5.0.0rc2/tests/test_disk_maintenance.py +225 -0
  307. karox_runtime-5.0.0rc2/tests/test_disk_maintenance_wiring.py +178 -0
  308. karox_runtime-5.0.0rc2/tests/test_durable_command_compat.py +599 -0
  309. karox_runtime-5.0.0rc2/tests/test_durable_job_workstream_scope.py +233 -0
  310. karox_runtime-5.0.0rc2/tests/test_economy_eval.py +206 -0
  311. karox_runtime-5.0.0rc2/tests/test_economy_truthfulness.py +91 -0
  312. karox_runtime-5.0.0rc2/tests/test_ecosystem.py +249 -0
  313. karox_runtime-5.0.0rc2/tests/test_effort.py +186 -0
  314. karox_runtime-5.0.0rc2/tests/test_effort_signals.py +139 -0
  315. karox_runtime-5.0.0rc2/tests/test_effort_wiring.py +207 -0
  316. karox_runtime-5.0.0rc2/tests/test_ellipsis_api.py +159 -0
  317. karox_runtime-5.0.0rc2/tests/test_ellipsis_checkpoint.py +98 -0
  318. karox_runtime-5.0.0rc2/tests/test_ellipsis_entrypoint.py +38 -0
  319. karox_runtime-5.0.0rc2/tests/test_ellipsis_lease.py +89 -0
  320. karox_runtime-5.0.0rc2/tests/test_ellipsis_local_bridge_e2e.py +189 -0
  321. karox_runtime-5.0.0rc2/tests/test_ellipsis_remote_tools.py +92 -0
  322. karox_runtime-5.0.0rc2/tests/test_ellipsis_runtime.py +186 -0
  323. karox_runtime-5.0.0rc2/tests/test_event_bus.py +251 -0
  324. karox_runtime-5.0.0rc2/tests/test_evidence_packets.py +255 -0
  325. karox_runtime-5.0.0rc2/tests/test_extended_core_tools.py +535 -0
  326. karox_runtime-5.0.0rc2/tests/test_extension_browser.py +1550 -0
  327. karox_runtime-5.0.0rc2/tests/test_external_browser_access.py +950 -0
  328. karox_runtime-5.0.0rc2/tests/test_handoff.py +412 -0
  329. karox_runtime-5.0.0rc2/tests/test_hosted_bridge.py +1380 -0
  330. karox_runtime-5.0.0rc2/tests/test_hosted_bridge_health.py +114 -0
  331. karox_runtime-5.0.0rc2/tests/test_hosted_bridge_routing_cache.py +73 -0
  332. karox_runtime-5.0.0rc2/tests/test_hosted_bridge_smart_stop.py +459 -0
  333. karox_runtime-5.0.0rc2/tests/test_hosted_desktop_apps.py +130 -0
  334. karox_runtime-5.0.0rc2/tests/test_hosted_orchestration_autonomy.py +213 -0
  335. karox_runtime-5.0.0rc2/tests/test_hosted_project_orchestration.py +83 -0
  336. karox_runtime-5.0.0rc2/tests/test_hosted_tools_runtime.py +655 -0
  337. karox_runtime-5.0.0rc2/tests/test_human_first_ux.py +475 -0
  338. karox_runtime-5.0.0rc2/tests/test_hyperagent_bridge.py +899 -0
  339. karox_runtime-5.0.0rc2/tests/test_install_portability.py +67 -0
  340. karox_runtime-5.0.0rc2/tests/test_intelligence_pool_endpoint_ids.py +68 -0
  341. karox_runtime-5.0.0rc2/tests/test_intelligence_pool_human_ux.py +52 -0
  342. karox_runtime-5.0.0rc2/tests/test_karox_remote_client.py +132 -0
  343. karox_runtime-5.0.0rc2/tests/test_launch_support.py +170 -0
  344. karox_runtime-5.0.0rc2/tests/test_line_mode_v5_ux.py +65 -0
  345. karox_runtime-5.0.0rc2/tests/test_local_health_canary.py +185 -0
  346. karox_runtime-5.0.0rc2/tests/test_long_context_guard.py +250 -0
  347. karox_runtime-5.0.0rc2/tests/test_long_job_bridge_acceptance.py +138 -0
  348. karox_runtime-5.0.0rc2/tests/test_long_reasoning_stream_v5.py +28 -0
  349. karox_runtime-5.0.0rc2/tests/test_managed_browser.py +732 -0
  350. karox_runtime-5.0.0rc2/tests/test_managed_server_projects.py +441 -0
  351. karox_runtime-5.0.0rc2/tests/test_map_service.py +277 -0
  352. karox_runtime-5.0.0rc2/tests/test_mcp.py +776 -0
  353. karox_runtime-5.0.0rc2/tests/test_mcp_oauth.py +128 -0
  354. karox_runtime-5.0.0rc2/tests/test_memory.py +216 -0
  355. karox_runtime-5.0.0rc2/tests/test_memory_multilingual.py +115 -0
  356. karox_runtime-5.0.0rc2/tests/test_memory_tools.py +177 -0
  357. karox_runtime-5.0.0rc2/tests/test_memory_ux.py +211 -0
  358. karox_runtime-5.0.0rc2/tests/test_migration_cli.py +197 -0
  359. karox_runtime-5.0.0rc2/tests/test_mission_control_mobile_performance_contract.py +30 -0
  360. karox_runtime-5.0.0rc2/tests/test_mission_control_mobile_ux.py +35 -0
  361. karox_runtime-5.0.0rc2/tests/test_mission_control_pairing_security.py +65 -0
  362. karox_runtime-5.0.0rc2/tests/test_mode_wiring.py +304 -0
  363. karox_runtime-5.0.0rc2/tests/test_model_auto.py +173 -0
  364. karox_runtime-5.0.0rc2/tests/test_model_browser.py +213 -0
  365. karox_runtime-5.0.0rc2/tests/test_model_delegation_broker.py +304 -0
  366. karox_runtime-5.0.0rc2/tests/test_model_discovery_metadata.py +266 -0
  367. karox_runtime-5.0.0rc2/tests/test_model_grant_requests.py +176 -0
  368. karox_runtime-5.0.0rc2/tests/test_model_grants.py +445 -0
  369. karox_runtime-5.0.0rc2/tests/test_model_quality_benchmark.py +72 -0
  370. karox_runtime-5.0.0rc2/tests/test_modern_mcp_2026.py +692 -0
  371. karox_runtime-5.0.0rc2/tests/test_multi_project_bridge.py +218 -0
  372. karox_runtime-5.0.0rc2/tests/test_oauth_approval_password.py +246 -0
  373. karox_runtime-5.0.0rc2/tests/test_oauth_bridge.py +1007 -0
  374. karox_runtime-5.0.0rc2/tests/test_oauth_cimd.py +101 -0
  375. karox_runtime-5.0.0rc2/tests/test_oauth_clickup_redirect_chain.py +22 -0
  376. karox_runtime-5.0.0rc2/tests/test_openrouter_delegation.py +262 -0
  377. karox_runtime-5.0.0rc2/tests/test_openrouter_stream_compat.py +102 -0
  378. karox_runtime-5.0.0rc2/tests/test_orchestrate_task_default_run.py +50 -0
  379. karox_runtime-5.0.0rc2/tests/test_orchestration_cli_autoverification.py +85 -0
  380. karox_runtime-5.0.0rc2/tests/test_orchestration_cli_delegation.py +69 -0
  381. karox_runtime-5.0.0rc2/tests/test_orchestration_cli_human_output.py +61 -0
  382. karox_runtime-5.0.0rc2/tests/test_orchestration_cli_mission_human_output.py +181 -0
  383. karox_runtime-5.0.0rc2/tests/test_orchestration_context_truthfulness.py +244 -0
  384. karox_runtime-5.0.0rc2/tests/test_orchestration_planning.py +247 -0
  385. karox_runtime-5.0.0rc2/tests/test_orchestration_presenter.py +92 -0
  386. karox_runtime-5.0.0rc2/tests/test_orchestrator_advisor.py +200 -0
  387. karox_runtime-5.0.0rc2/tests/test_orchestrator_delegation.py +164 -0
  388. karox_runtime-5.0.0rc2/tests/test_output_policy.py +117 -0
  389. karox_runtime-5.0.0rc2/tests/test_output_policy_wiring.py +118 -0
  390. karox_runtime-5.0.0rc2/tests/test_packs.py +642 -0
  391. karox_runtime-5.0.0rc2/tests/test_phase5_8_foundations.py +231 -0
  392. karox_runtime-5.0.0rc2/tests/test_plan_executor.py +734 -0
  393. karox_runtime-5.0.0rc2/tests/test_plan_executor_change_guard.py +255 -0
  394. karox_runtime-5.0.0rc2/tests/test_policy.py +64 -0
  395. karox_runtime-5.0.0rc2/tests/test_port_allocation.py +89 -0
  396. karox_runtime-5.0.0rc2/tests/test_port_ownership.py +459 -0
  397. karox_runtime-5.0.0rc2/tests/test_portable_bundle.py +125 -0
  398. karox_runtime-5.0.0rc2/tests/test_portable_launchers.py +164 -0
  399. karox_runtime-5.0.0rc2/tests/test_portable_uv_pins.py +74 -0
  400. karox_runtime-5.0.0rc2/tests/test_prepare_portable_uv.py +140 -0
  401. karox_runtime-5.0.0rc2/tests/test_process_identity.py +202 -0
  402. karox_runtime-5.0.0rc2/tests/test_production_isolation_guard.py +132 -0
  403. karox_runtime-5.0.0rc2/tests/test_project_command.py +50 -0
  404. karox_runtime-5.0.0rc2/tests/test_project_context.py +355 -0
  405. karox_runtime-5.0.0rc2/tests/test_project_map.py +101 -0
  406. karox_runtime-5.0.0rc2/tests/test_project_registry.py +83 -0
  407. karox_runtime-5.0.0rc2/tests/test_prompt_benchmark.py +104 -0
  408. karox_runtime-5.0.0rc2/tests/test_promptql_outbound.py +257 -0
  409. karox_runtime-5.0.0rc2/tests/test_provider_adapters.py +1027 -0
  410. karox_runtime-5.0.0rc2/tests/test_provider_cli.py +451 -0
  411. karox_runtime-5.0.0rc2/tests/test_provider_controller.py +191 -0
  412. karox_runtime-5.0.0rc2/tests/test_provider_details_discovery.py +145 -0
  413. karox_runtime-5.0.0rc2/tests/test_provider_key_ux_v5.py +172 -0
  414. karox_runtime-5.0.0rc2/tests/test_provider_pricing.py +121 -0
  415. karox_runtime-5.0.0rc2/tests/test_providers.py +818 -0
  416. karox_runtime-5.0.0rc2/tests/test_proxy_descriptor_cache.py +98 -0
  417. karox_runtime-5.0.0rc2/tests/test_proxy_transport_telemetry.py +257 -0
  418. karox_runtime-5.0.0rc2/tests/test_public_mcp_readiness.py +76 -0
  419. karox_runtime-5.0.0rc2/tests/test_quickstart.py +278 -0
  420. karox_runtime-5.0.0rc2/tests/test_recursive_research_context.py +205 -0
  421. karox_runtime-5.0.0rc2/tests/test_registry.py +275 -0
  422. karox_runtime-5.0.0rc2/tests/test_release_gates.py +302 -0
  423. karox_runtime-5.0.0rc2/tests/test_release_hot_actions.py +286 -0
  424. karox_runtime-5.0.0rc2/tests/test_repo_context.py +346 -0
  425. karox_runtime-5.0.0rc2/tests/test_repository_lease.py +268 -0
  426. karox_runtime-5.0.0rc2/tests/test_research_subagent.py +280 -0
  427. karox_runtime-5.0.0rc2/tests/test_resource_lifetime_regressions.py +209 -0
  428. karox_runtime-5.0.0rc2/tests/test_result_envelope.py +236 -0
  429. karox_runtime-5.0.0rc2/tests/test_risk_engine.py +349 -0
  430. karox_runtime-5.0.0rc2/tests/test_risk_mapping.py +278 -0
  431. karox_runtime-5.0.0rc2/tests/test_route_health.py +99 -0
  432. karox_runtime-5.0.0rc2/tests/test_route_health_fast_recovery.py +56 -0
  433. karox_runtime-5.0.0rc2/tests/test_routing.py +995 -0
  434. karox_runtime-5.0.0rc2/tests/test_routing_advisory_authority.py +187 -0
  435. karox_runtime-5.0.0rc2/tests/test_runtime_restart.py +381 -0
  436. karox_runtime-5.0.0rc2/tests/test_runtime_restart_tool.py +237 -0
  437. karox_runtime-5.0.0rc2/tests/test_safe_child_environment.py +111 -0
  438. karox_runtime-5.0.0rc2/tests/test_saved_bridge_apply_profile.py +257 -0
  439. karox_runtime-5.0.0rc2/tests/test_saved_bridge_autostart.py +801 -0
  440. karox_runtime-5.0.0rc2/tests/test_saved_bridge_credential_durability.py +455 -0
  441. karox_runtime-5.0.0rc2/tests/test_saved_bridge_delete_service.py +178 -0
  442. karox_runtime-5.0.0rc2/tests/test_saved_bridge_service.py +1386 -0
  443. karox_runtime-5.0.0rc2/tests/test_saved_bridge_start_legacy_kwarg.py +25 -0
  444. karox_runtime-5.0.0rc2/tests/test_saved_bridge_supervisor.py +583 -0
  445. karox_runtime-5.0.0rc2/tests/test_saved_profile_tool_upgrade.py +241 -0
  446. karox_runtime-5.0.0rc2/tests/test_service_supervisor.py +303 -0
  447. karox_runtime-5.0.0rc2/tests/test_session_commands.py +86 -0
  448. karox_runtime-5.0.0rc2/tests/test_session_view.py +742 -0
  449. karox_runtime-5.0.0rc2/tests/test_sessions.py +425 -0
  450. karox_runtime-5.0.0rc2/tests/test_skill_cli.py +258 -0
  451. karox_runtime-5.0.0rc2/tests/test_skills.py +421 -0
  452. karox_runtime-5.0.0rc2/tests/test_static_server.py +47 -0
  453. karox_runtime-5.0.0rc2/tests/test_status_command.py +34 -0
  454. karox_runtime-5.0.0rc2/tests/test_subscription_cli.py +309 -0
  455. karox_runtime-5.0.0rc2/tests/test_system_chrome.py +64 -0
  456. karox_runtime-5.0.0rc2/tests/test_tailscale_background_funnel.py +321 -0
  457. karox_runtime-5.0.0rc2/tests/test_tailscale_route_supervisor.py +322 -0
  458. karox_runtime-5.0.0rc2/tests/test_tailscale_routes.py +235 -0
  459. karox_runtime-5.0.0rc2/tests/test_task_state.py +258 -0
  460. karox_runtime-5.0.0rc2/tests/test_tool_catalog_groups.py +78 -0
  461. karox_runtime-5.0.0rc2/tests/test_tool_telemetry.py +176 -0
  462. karox_runtime-5.0.0rc2/tests/test_tool_universe.py +134 -0
  463. karox_runtime-5.0.0rc2/tests/test_tool_universe_wiring.py +215 -0
  464. karox_runtime-5.0.0rc2/tests/test_toolvm_measurement.py +279 -0
  465. karox_runtime-5.0.0rc2/tests/test_transcript.py +162 -0
  466. karox_runtime-5.0.0rc2/tests/test_transcript_shadow.py +243 -0
  467. karox_runtime-5.0.0rc2/tests/test_tui.py +2847 -0
  468. karox_runtime-5.0.0rc2/tests/test_tui_activity_line.py +455 -0
  469. karox_runtime-5.0.0rc2/tests/test_tui_advanced_connections.py +711 -0
  470. karox_runtime-5.0.0rc2/tests/test_tui_api_benchmark_ux.py +134 -0
  471. karox_runtime-5.0.0rc2/tests/test_tui_bridge_secret_output.py +56 -0
  472. karox_runtime-5.0.0rc2/tests/test_tui_clickup.py +328 -0
  473. karox_runtime-5.0.0rc2/tests/test_tui_clickup_connection_screen.py +89 -0
  474. karox_runtime-5.0.0rc2/tests/test_tui_command_ux_v5.py +432 -0
  475. karox_runtime-5.0.0rc2/tests/test_tui_connect_polish.py +610 -0
  476. karox_runtime-5.0.0rc2/tests/test_tui_connect_surface.py +263 -0
  477. karox_runtime-5.0.0rc2/tests/test_tui_connection_copy_e2e.py +58 -0
  478. karox_runtime-5.0.0rc2/tests/test_tui_connection_detail_lifecycle.py +740 -0
  479. karox_runtime-5.0.0rc2/tests/test_tui_connection_hub.py +662 -0
  480. karox_runtime-5.0.0rc2/tests/test_tui_connection_management.py +1635 -0
  481. karox_runtime-5.0.0rc2/tests/test_tui_connections.py +444 -0
  482. karox_runtime-5.0.0rc2/tests/test_tui_conversation_polish.py +236 -0
  483. karox_runtime-5.0.0rc2/tests/test_tui_copy_auth_action.py +242 -0
  484. karox_runtime-5.0.0rc2/tests/test_tui_dashboard.py +41 -0
  485. karox_runtime-5.0.0rc2/tests/test_tui_disk_cleanup.py +84 -0
  486. karox_runtime-5.0.0rc2/tests/test_tui_jobs_command.py +39 -0
  487. karox_runtime-5.0.0rc2/tests/test_tui_keyboard_responsiveness.py +326 -0
  488. karox_runtime-5.0.0rc2/tests/test_tui_large_paste_v5.py +180 -0
  489. karox_runtime-5.0.0rc2/tests/test_tui_layout.py +160 -0
  490. karox_runtime-5.0.0rc2/tests/test_tui_minimal_shell.py +157 -0
  491. karox_runtime-5.0.0rc2/tests/test_tui_model_picker.py +97 -0
  492. karox_runtime-5.0.0rc2/tests/test_tui_picker_mount_readiness.py +162 -0
  493. karox_runtime-5.0.0rc2/tests/test_tui_polish_v5.py +237 -0
  494. karox_runtime-5.0.0rc2/tests/test_tui_progress_cap.py +57 -0
  495. karox_runtime-5.0.0rc2/tests/test_tui_progress_metrics.py +26 -0
  496. karox_runtime-5.0.0rc2/tests/test_tui_provider_flow.py +302 -0
  497. karox_runtime-5.0.0rc2/tests/test_tui_reasoning_progress_v5.py +125 -0
  498. karox_runtime-5.0.0rc2/tests/test_tui_saved_web_profile_settings.py +587 -0
  499. karox_runtime-5.0.0rc2/tests/test_tui_selection.py +287 -0
  500. karox_runtime-5.0.0rc2/tests/test_tui_service_flow.py +1276 -0
  501. karox_runtime-5.0.0rc2/tests/test_tui_session_browser.py +891 -0
  502. karox_runtime-5.0.0rc2/tests/test_tui_session_browser_compact.py +1332 -0
  503. karox_runtime-5.0.0rc2/tests/test_tui_session_detail.py +1024 -0
  504. karox_runtime-5.0.0rc2/tests/test_tui_session_detail_overview.py +897 -0
  505. karox_runtime-5.0.0rc2/tests/test_tui_session_view.py +1569 -0
  506. karox_runtime-5.0.0rc2/tests/test_tui_shared_bridge_project_switch.py +156 -0
  507. karox_runtime-5.0.0rc2/tests/test_tui_status_progressive_disclosure.py +47 -0
  508. karox_runtime-5.0.0rc2/tests/test_tui_total_size_acceptance.py +111 -0
  509. karox_runtime-5.0.0rc2/tests/test_tui_visual_polish_v5.py +67 -0
  510. karox_runtime-5.0.0rc2/tests/test_tui_windows_raw_paste.py +131 -0
  511. karox_runtime-5.0.0rc2/tests/test_typed_secret_service.py +317 -0
  512. karox_runtime-5.0.0rc2/tests/test_typed_status_ui.py +331 -0
  513. karox_runtime-5.0.0rc2/tests/test_unittest_compat.py +74 -0
  514. karox_runtime-5.0.0rc2/tests/test_usage_analytics.py +143 -0
  515. karox_runtime-5.0.0rc2/tests/test_usage_report.py +220 -0
  516. karox_runtime-5.0.0rc2/tests/test_v5_orchestration.py +1512 -0
  517. karox_runtime-5.0.0rc2/tests/test_v5_release_contract.py +58 -0
  518. karox_runtime-5.0.0rc2/tests/test_verification.py +192 -0
  519. karox_runtime-5.0.0rc2/tests/test_verification_error_code.py +21 -0
  520. karox_runtime-5.0.0rc2/tests/test_web_bridge_launcher.py +1668 -0
  521. karox_runtime-5.0.0rc2/tests/test_web_bridge_profiles.py +1114 -0
  522. karox_runtime-5.0.0rc2/tests/test_wheel_contents.py +168 -0
  523. karox_runtime-5.0.0rc2/tests/test_windows_background_console.py +119 -0
  524. karox_runtime-5.0.0rc2/tests/test_windows_execution_runtime.py +523 -0
  525. karox_runtime-5.0.0rc2/tests/test_worker_usage_provenance.py +119 -0
  526. karox_runtime-5.0.0rc2/tests/test_workspace_change_guard.py +81 -0
  527. karox_runtime-5.0.0rc2/tests/test_workspace_picker_v1.py +101 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Yahor Kanakhovich
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,448 @@
1
+ Metadata-Version: 2.4
2
+ Name: karox-runtime
3
+ Version: 5.0.0rc2
4
+ Summary: Hybrid local runtime for native and hosted AI agents
5
+ License-Expression: MIT
6
+ Requires-Python: >=3.10
7
+ Description-Content-Type: text/markdown
8
+ License-File: LICENSE
9
+ Requires-Dist: fastapi<1.0,>=0.115
10
+ Requires-Dist: uvicorn[standard]<1.0,>=0.30
11
+ Requires-Dist: pydantic<3.0,>=2.7
12
+ Requires-Dist: httpx<1.0,>=0.27
13
+ Requires-Dist: httpx-sse<1.0,>=0.4
14
+ Requires-Dist: keyring<27,>=25
15
+ Requires-Dist: playwright<2.0,>=1.50
16
+ Requires-Dist: mcp<2.0,>=1.27
17
+ Requires-Dist: PyYAML<7.0,>=6.0
18
+ Requires-Dist: textual<7.0,>=0.89
19
+ Requires-Dist: rich<15.0,>=13.7
20
+ Requires-Dist: Pygments<3.0,>=2.17
21
+ Requires-Dist: markdown-it-py<5.0,>=3.0
22
+ Requires-Dist: anyio<4.15,>=4.4
23
+ Requires-Dist: starlette<2.0,>=0.37
24
+ Requires-Dist: psutil<8.0,>=5.9
25
+ Requires-Dist: Pillow<13.0,>=11.2
26
+ Requires-Dist: tomli<3.0,>=2.0; python_version < "3.11"
27
+ Provides-Extra: browser
28
+ Dynamic: license-file
29
+
30
+ # KaroX 5
31
+
32
+ <div align="center">
33
+
34
+ **A local control plane for autonomous AI coding — one runtime, many agents, your repository.**
35
+
36
+ ![Status](https://img.shields.io/badge/status-beta-f59e0b)
37
+ ![CI](https://github.com/kar0777/KaroX/actions/workflows/ci.yml/badge.svg?branch=main)
38
+ ![Product quality](https://github.com/kar0777/KaroX/actions/workflows/quality.yml/badge.svg?branch=main)
39
+ ![Release](https://img.shields.io/github/v/release/kar0777/KaroX?include_prereleases&label=release)
40
+ ![Runtime](https://img.shields.io/badge/runtime-5.0.0rc2-2563eb)
41
+ ![Python](https://img.shields.io/badge/python-%3E%3D3.10-3776ab)
42
+ ![Platforms](https://img.shields.io/badge/platform-Windows%20%7C%20macOS%20%7C%20Linux-64748b)
43
+ ![Protocol](https://img.shields.io/badge/protocol-MCP-7c3aed)
44
+ [![Supporters](https://img.shields.io/badge/supporters-33-ec4899)](SUPPORTERS.md)
45
+
46
+ Run AI coding agents on local Git repositories without giving one provider
47
+ control of your permissions, sessions, or evidence.
48
+
49
+ **KaroX 5 beta is now the primary `main` line · `5.0.0rc2`**
50
+
51
+ ### 🤝 Supported by
52
+
53
+ <table>
54
+ <tr>
55
+ <td align="center"><a href="https://routing.run"><img src="https://www.google.com/s2/favicons?domain=routing.run&sz=128" width="38" height="38" alt="routing.run"><br><sub><b>routing.run</b></sub></a></td>
56
+ <td align="center"><a href="https://vivgrid.com"><img src="https://www.google.com/s2/favicons?domain=vivgrid.com&sz=128" width="38" height="38" alt="Vivgrid"><br><sub><b>Vivgrid</b></sub></a></td>
57
+ <td align="center"><a href="https://puter.com"><img src="https://www.google.com/s2/favicons?domain=puter.com&sz=128" width="38" height="38" alt="Puter"><br><sub><b>Puter</b></sub></a></td>
58
+ <td align="center"><a href="https://www.verda.com"><img src="https://www.google.com/s2/favicons?domain=verda.com&sz=128" width="38" height="38" alt="Verda"><br><sub><b>Verda</b></sub></a></td>
59
+ <td align="center"><a href="https://tinfoil.sh"><img src="https://www.google.com/s2/favicons?domain=tinfoil.sh&sz=128" width="38" height="38" alt="Tinfoil"><br><sub><b>Tinfoil</b></sub></a></td>
60
+ <td align="center"><a href="https://www.stepfun.com"><img src="https://www.google.com/s2/favicons?domain=stepfun.com&sz=128" width="38" height="38" alt="StepFun"><br><sub><b>StepFun</b></sub></a></td>
61
+ </tr>
62
+ <tr>
63
+ <td align="center"><a href="https://browser-use.com"><img src="https://www.google.com/s2/favicons?domain=browser-use.com&sz=128" width="38" height="38" alt="Browser Use"><br><sub><b>Browser Use</b></sub></a></td>
64
+ <td align="center"><a href="https://tavily.com"><img src="https://www.google.com/s2/favicons?domain=tavily.com&sz=128" width="38" height="38" alt="Tavily"><br><sub><b>Tavily</b></sub></a></td>
65
+ <td align="center"><a href="https://sentry.io"><img src="https://www.google.com/s2/favicons?domain=sentry.io&sz=128" width="38" height="38" alt="Sentry"><br><sub><b>Sentry</b></sub></a></td>
66
+ <td align="center"><a href="https://wandb.ai"><img src="https://www.google.com/s2/favicons?domain=wandb.ai&sz=128" width="38" height="38" alt="W&B"><br><sub><b>W&amp;B</b></sub></a></td>
67
+ <td align="center"><a href="https://openrouter.ai"><img src="https://www.google.com/s2/favicons?domain=openrouter.ai&sz=128" width="38" height="38" alt="OpenRouter"><br><sub><b>OpenRouter</b></sub></a></td>
68
+ <td align="center"><a href="https://www.blockrun.ai"><img src="https://www.google.com/s2/favicons?domain=blockrun.ai&sz=128" width="38" height="38" alt="BlockRun"><br><sub><b>BlockRun</b></sub></a></td>
69
+ </tr>
70
+ </table>
71
+
72
+ **All 33 acknowledged supporters:** [routing.run](https://routing.run) · [Vivgrid](https://vivgrid.com) · [Puter](https://puter.com) · [OmniaKey](https://omniakey.com) · [Browser Use](https://browser-use.com) · [Verda](https://www.verda.com) · [Tinfoil](https://tinfoil.sh) · [fal](https://fal.ai) · [Tavily](https://tavily.com) · [Cohere](https://cohere.com) · [Chutes](https://chutes.ai) · [EmpirioLabs](https://empiriolabs.ai) · [Langfuse](https://langfuse.com) · [AIReiter](https://aireiter.com) · [Scout APM](https://scoutapm.com) · [APIMaster](https://apimaster.ai) · [Merge Gateway](https://gateway.merge.dev) · [OpenRouter](https://openrouter.ai) · [Weights & Biases (W&B)](https://wandb.ai) · [BlockRun](https://www.blockrun.ai) · [UnifyLLM](https://www.unifyllm.com) · [Novita AI](https://novita.ai) · [BazaarLink](https://bazaarlink.ai) · [CostRouter](https://www.costrouter.ai) · [Ellipsis](https://www.ellipsis.dev) · [Advanced Installer](https://www.advancedinstaller.com) · [Bump.sh](https://bump.sh) · [Sentry](https://sentry.io) · [Socket](https://socket.dev) · [RouterPlex](https://routerplex.com) · [LangWatch](https://langwatch.ai) · [LLMTR / Knowhy](https://www.knowhy.ai) · [StepFun](https://www.stepfun.com)
73
+
74
+ **[Meet all 33 supporters — full logo wall & acknowledgements →](SUPPORTERS.md)**
75
+
76
+ </div>
77
+
78
+ KaroX is a local control plane for ChatGPT, Claude, API models, and compatible
79
+ MCP clients. Every local action goes through one repository-scoped runtime with
80
+ explicit permissions, retry-safe mutations, durable sessions, approved checks,
81
+ Git evidence, and secret filtering.
82
+
83
+ KaroX is not a model, an IDE, or an operating-system sandbox. An explicitly
84
+ approved process still runs with the operating-system rights of the KaroX user.
85
+ The runtime reduces authority through repository confinement, capabilities,
86
+ allowlists, leases, idempotency, and hard blocks; it does not virtualize the
87
+ machine.
88
+
89
+ > **Release status:** the packaged runtime is `5.0.0rc2`. Deterministic local
90
+ > contracts are extensively tested, but live ChatGPT Web, Claude Web, and paid
91
+ > provider conformance records are still pending. See the
92
+ > [5.0 release scope](docs/V5_RELEASE_SCOPE.md),
93
+ > [4.x migration contract](docs/MIGRATION_V4_TO_V5.md), and
94
+ > [live conformance records](docs/conformance/README.md).
95
+
96
+ ## Why KaroX
97
+
98
+ | What you want | What KaroX does |
99
+ | --- | --- |
100
+ | **Autonomous coding without prompt spam** | Normal reads, edits, tests, checks, dev commands, and local commits run without nuisance approval loops. |
101
+ | **One safety boundary for every agent** | ChatGPT, Claude, API models, MCP clients, and local workers reach the machine through the same repository-scoped Core policy. |
102
+ | **Rare, meaningful approvals** | Protected mode stops destructive source deletion and real external commit points; Bypass can opt into autonomous deletion *inside the repository* without weakening credential/system boundaries. |
103
+ | **Work continues while a gate is pending** | A blocked dangerous action is deferred so the agent can finish independent work and ask only when the gate actually becomes necessary. |
104
+ | **Portable release evidence** | Windows, macOS, and Linux CI exercise the same wheel, tests, release checks, Git contracts, and secret-scan rules. |
105
+
106
+ ## The primary flow
107
+
108
+ A stable KaroX 5 release is defined by one complete workflow:
109
+
110
+ 1. Install KaroX and run `karox` inside a Git repository.
111
+ 2. Choose Russian or English and an access profile.
112
+ 3. Connect ChatGPT Web, Claude Web, or a supported API provider.
113
+ 4. Ask the agent to make a bounded repository change.
114
+ 5. Let KaroX run an explicitly approved verification command.
115
+ 6. Inspect check results, Git status, Git diff, and the evidence report.
116
+ 7. Restart and resume the durable session without replaying a completed change.
117
+
118
+ Features that do not support this path remain Preview, Experimental, or Legacy
119
+ until their own evidence gates pass.
120
+
121
+ ## Install
122
+
123
+ The beta candidate is **`v5.0.0rc2`**. After its PyPI publication completes,
124
+ install this exact version on Windows, macOS, or Linux:
125
+
126
+ ```bash
127
+ pipx install "karox-runtime==5.0.0rc2"
128
+ # or
129
+ uv tool install --prerelease=allow karox-runtime
130
+ ```
131
+
132
+ On a clean macOS or Linux machine, including one with **no Python installed**,
133
+ the preview bootstrap downloads the checksummed portable bundle, uses its
134
+ bundled `uv` to provision a managed Python runtime, installs KaroX, and starts it:
135
+
136
+ ```bash
137
+ curl -fsSL https://raw.githubusercontent.com/kar0777/KaroX/main/bootstrap.sh | bash -s -- --channel preview
138
+ ```
139
+
140
+ For source-level testing of the exact release candidate, install the matching
141
+ Git tag instead of a moving branch:
142
+
143
+ ```bash
144
+ pipx install --force "git+https://github.com/kar0777/KaroX.git@v5.0.0rc2"
145
+ ```
146
+
147
+ Then open a terminal inside the Git repository you want to work with and run:
148
+
149
+ ```bash
150
+ karox
151
+ ```
152
+
153
+ `karox quickstart` prints what is already connected and the single next command
154
+ to run, so the first minute needs no documentation.
155
+
156
+ The public bootstrap commands on `main` still install the latest stable 4.x
157
+ release. `bootstrap.sh --channel preview` / `bootstrap.ps1 -Channel preview`
158
+ install the 5.x release candidate through pipx instead. To test from a source
159
+ checkout, run `./install.karox.sh` or `.\install.karox.ps1` in the repository.
160
+
161
+ On Windows, a terminal opened before installation keeps its old `PATH`. Open a
162
+ new terminal, use the Desktop shortcut, or refresh the environment before
163
+ reporting that the launcher is missing.
164
+
165
+ ## Terminal client
166
+
167
+ `karox` opens the full-screen client. Ordinary text is an agent task; it is not
168
+ parsed as command-line syntax.
169
+
170
+ - The first launch asks for Russian or English.
171
+ - `/connect` configures an API provider, a hosted client, or both.
172
+ - Provider credentials are stored in the OS keyring.
173
+ - `F5` discovers models where the provider exposes discovery.
174
+ - `F10` performs a minimal live connection test before activating a route.
175
+ - `Ctrl+B` opens hosted bridge setup.
176
+ - `/language`, `/help`, and `/quit` provide basic UI control.
177
+
178
+ The header shows repository, model, session, and bridge state. The TUI does not
179
+ bypass Core policy; it is a view over the same services used by the CLI.
180
+
181
+ ## Connect hosted clients
182
+
183
+ The bridge command creates a repository-bound session, temporary approval
184
+ credential, local MCP endpoint, and managed HTTPS tunnel:
185
+
186
+ ```bash
187
+ karox bridge connect chatgpt-web --repository . --write
188
+ karox bridge connect claude-web --repository . --write
189
+ karox bridge connect hyperagent-web --repository . --write
190
+ ```
191
+
192
+ Omit `--write` for the read-only tool set. KaroX prints the MCP URL and connection
193
+ instructions; approval credentials remain in the OS keyring instead of being
194
+ printed into logs or chat. When a client needs an OAuth approval password, copy
195
+ the current value locally with `karox bridge oauth approval-password --saved NAME --copy`.
196
+ For HyperAgent, leave "Bring my own OAuth app" off — KaroX advertises OAuth
197
+ discovery and Dynamic Client Registration, so no Client ID or Client Secret is
198
+ entered by hand. See `docs/CONNECTIVITY.md` for the full HyperAgent steps.
199
+
200
+ A Cloudflare Quick Tunnel URL changes after restart. For repeatable setup, save
201
+ only the non-secret launch policy and reconnect with a short command:
202
+
203
+ ```bash
204
+ karox bridge saved create full-dev --target-profile chatgpt-web --repository . --write --tunnel tailscale --deadline-preset full-suite
205
+ karox bridge connect --saved full-dev
206
+ ```
207
+
208
+ Add explicit `--tool` and `--verification-command` allowlists before exposing
209
+ checks. Tailscale mode uses a stable `.ts.net` hostname when the tailnet permits
210
+ Funnel, refuses to replace existing routes, and stops only its foreground child.
211
+ Use `karox bridge saved validate full-dev --json` or
212
+ `karox bridge connect --saved full-dev --diagnostics-only` to inspect effective
213
+ tools, disabled-tool reasons, verification commands, deadlines, tunnel type, URL
214
+ stability, and session lifetime before publication. Real Tailscale account
215
+ conformance remains pending under `docs/TAILSCALE_LIVE_RUNBOOK.md`.
216
+
217
+ For legal inspection of public HTTPS services, create a separate
218
+ `browser_control` connection with `--browser-external-https`, a domain allowlist,
219
+ headed takeover, and optional redacted network inspection. Headed takeover uses
220
+ a dedicated persistent Chrome profile plus the local KaroX Manifest V3 extension;
221
+ headless verification retains the isolated Playwright and pinned-proxy backend.
222
+ Neither mode exposes cookies or credentials or grants repository write. See
223
+ [External HTTPS browser](docs/EXTERNAL_BROWSER.md).
224
+
225
+ ## Connect an API model
226
+
227
+ KaroX supports adapter contracts for:
228
+
229
+ - OpenAI Responses;
230
+ - Anthropic Messages;
231
+ - Gemini GenerateContent;
232
+ - generic OpenAI-compatible streaming endpoints.
233
+
234
+ Use `/connect` in the TUI or the explicit provider, model, and credential CLI
235
+ commands. Credentials are opaque keyring references and must not appear in
236
+ configuration, session state, logs, support bundles, or MCP descriptors.
237
+
238
+ KaroX never silently changes provider, privacy boundary, or mutation behavior.
239
+ Fallback is restricted to classified failures and explicit configured routes.
240
+
241
+ ## Intelligence orchestration and economy
242
+
243
+ KaroX 5 now has an opt-in orchestration layer over the same guarded Core. Add API
244
+ models, already-paid subscription agents, local models, and explicitly attached
245
+ external agents to one **Intelligence Pool**, then assign one orchestrator and
246
+ role-specific workers. Automatic quality routing learns only from local KaroX
247
+ outcomes that were both accepted and verified; it does not rank models from their
248
+ names or unversioned marketing benchmarks.
249
+
250
+ The economy path reduces duplicated work before it reduces model quality:
251
+ content-addressed shared context, role-specific context projections, delta
252
+ transfer, deterministic stable prompt prefixes, already-paid-capacity preference,
253
+ quota reserve, measured pricing, and independent review. A Savings Receipt shows
254
+ dollar/percentage savings only when a measured baseline exists; shadow/replay
255
+ counterfactuals are labelled projections.
256
+
257
+ ```bash
258
+ karox intelligence list --json
259
+ karox intelligence discover-agents --apply
260
+ karox orchestrate recipes --json
261
+ karox orchestrate plan --objective "Fix retry semantics" --recipe bug-fix --preset maximum_economy
262
+ karox orchestrate run --objective "Fix retry semantics" --recipe bug-fix --isolate-implementers --verification-command '["python","-m","pytest","-q"]'
263
+ karox orchestrate status RUN_ID
264
+ karox mission-control serve RUN_ID
265
+ ```
266
+
267
+ `orchestrate run` executes registered API endpoints through the existing
268
+ `AgentKernel` and Core policy. It also has guarded built-in adapters for already-
269
+ paid Codex and Claude Code subscriptions: Codex implementation is confined to a
270
+ KaroX worktree with its workspace-write sandbox, while the Claude built-in path
271
+ is read/review-only in safe mode with Read/Glob/Grep. Gemini CLI and OpenCode can
272
+ be discovered, but automatic built-in execution stays off until KaroX can prove
273
+ an equivalent write boundary. Other local/external workers still require a
274
+ separately registered guarded adapter; KaroX never falls back to arbitrary shell
275
+ commands, scraped cookies, or raw credentials.
276
+
277
+ The selected orchestrator owns planner work by default and runs the final
278
+ `orchestrator-judge` after independent review/test evidence. High-risk plans add
279
+ an independent security review, interrupted running workers require reconciliation
280
+ before retry, and detached worker worktrees are never auto-merged. In the TUI,
281
+ `/orchestrate`, `/agents`, and `/mission` use the same CLI/runtime services; the
282
+ slash menu stays deliberately compact at eight high-frequency commands.
283
+
284
+ See [Intelligence Orchestration and Economy](docs/KAROX_5_ORCHESTRATION_ECONOMY.md)
285
+ for the exact contracts and commands.
286
+
287
+ ## Access profiles
288
+
289
+ Friendly UI labels map to stable policy identifiers:
290
+
291
+ - **Observe** (`read_only`) — repository and Git inspection without mutation.
292
+ - **Browser** (`browser_control`) — repository/Git read plus an explicitly
293
+ configured, session-isolated browser and network policy; no repository writes,
294
+ process execution, or local commit.
295
+ - **Build** (`workspace_write`) — file changes, explicitly approved process and
296
+ check execution, Git status/diff evidence, and selected MCP calls. Build does
297
+ not grant `git.commit`.
298
+ - **Advanced** (`elevated`) — explicitly adds guarded local commit and the
299
+ browser, desktop-input, and network capabilities present in elevated policy.
300
+
301
+ No stable profile grants standing Git push, package publishing, or authentication
302
+ authority. An Advanced durable ChatGPT Web bridge may advertise the dedicated
303
+ `karox.git.push` surface, but every push requires a machine-verifiable one-shot
304
+ user approval bound to the exact remote/branch action; `command.run` cannot
305
+ bypass that gate. Resuming work is an action on an existing durable session, not
306
+ a new permission level. Some legacy UI may still display a Resume profile during
307
+ migration.
308
+
309
+ ## Automation CLI
310
+
311
+ Scripts and CI use explicit subcommands:
312
+
313
+ ```text
314
+ karox paths | session | credential | provider | model | intelligence | skill | mcp | bridge
315
+ | orchestrate | mission-control | economy | pack | target | tool | integration
316
+ | agent | migrate | doctor
317
+ ```
318
+
319
+ Examples:
320
+
321
+ ```bash
322
+ karox --version
323
+ karox doctor
324
+ karox provider list
325
+ karox model list
326
+ karox session list
327
+ karox bridge list
328
+ karox migrate --json
329
+ karox migrate --apply --json
330
+ ```
331
+
332
+ `karox migrate` is dry-run by default; `--apply` is the only mode that writes the
333
+ sanitized migration destination.
334
+
335
+ `karox-vnext` remains a compatibility alias during the preview. New docs and
336
+ scripts should use `karox`.
337
+
338
+ ## What is stable, preview, and pending
339
+
340
+ | Surface | Current evidence | Product status |
341
+ | --- | --- | --- |
342
+ | Core Runtime | deterministic unit, integration, and benchmark coverage | Preview release-critical |
343
+ | Native agent loop | real local HTTP/SSE contract E2E with evidence verification | Contract tested |
344
+ | OpenAI/Anthropic/Gemini adapters | deterministic adapter and transport coverage | Contract tested; live pending |
345
+ | ChatGPT Web bridge | OAuth/DCR/PKCE and real local MCP wire coverage | Experimental; live pending |
346
+ | Claude Web bridge | OAuth/DCR/PKCE and real local MCP wire coverage | Experimental; live pending |
347
+ | Generic Streamable HTTP MCP | authenticated local wire E2E | Protocol compatible |
348
+ | Notion gateway | legacy transport regression | Legacy / Preview |
349
+ | PromptQL | local contract and mocked outbound coverage | Experimental |
350
+ | Skills and Packs | strict validation and lifecycle coverage | Preview |
351
+
352
+ A surface is called **live tested** only when a dated record exists under
353
+ [`docs/conformance/`](docs/conformance/README.md). Local fake servers prove the
354
+ KaroX contract, not the current behavior of a third-party product.
355
+
356
+ ## Security model
357
+
358
+ Every shipping local action is evaluated against:
359
+
360
+ - an origin identity;
361
+ - a capability;
362
+ - the selected repository;
363
+ - the active session;
364
+ - a mutation lease and fencing token where required;
365
+ - an idempotency key for mutating operations.
366
+
367
+ KaroX additionally enforces secret redaction, path and link confinement,
368
+ allowlisted hosted tools, dedicated credential namespaces, a hard block on
369
+ arbitrary developer-command Git push/package publication, and an exact-action
370
+ one-shot user gate on the dedicated push surface. A failed check cannot be
371
+ converted into a verified success by model text.
372
+
373
+ Read [SECURITY.md](SECURITY.md). Security reports should use the private process
374
+ described there, not a public issue containing a credential or private
375
+ repository data.
376
+
377
+ ## Migration
378
+
379
+ KaroX 5 migration is incremental and reversible. The preview discovers legacy
380
+ state in dry-run mode by default, preserves the old installation, imports only
381
+ validated non-secret metadata, places credentials in the OS keyring, and reports
382
+ unsupported data instead of dropping it.
383
+
384
+ See [Migrating from KaroX 4.x to KaroX 5](docs/MIGRATION_V4_TO_V5.md).
385
+
386
+ ## Sponsors & supporters
387
+
388
+ KaroX now publicly thanks **33 unique supporters** for concrete development help across model/API access, compute, browser capacity, search, observability, security tooling, developer infrastructure, licenses and research tooling. The expanded list includes StepFun plus the additional confirmed support restored from the project outreach/Gmail record, with duplicate records collapsed.
389
+
390
+ The same 33 names are carried by the KaroX 5 sponsor registry used by `/sponsors`. See the [full supporter wall](SUPPORTERS.md) for logos, links, support categories, and acknowledgements. A listing is a thank-you, not an endorsement of a provider's security, privacy, pricing, or model claims.
391
+
392
+ ## Verification
393
+
394
+ CI runs the complete pytest collection, including standalone and parameterized
395
+ tests. For a parallel local run after installing the test dependency group:
396
+
397
+ ```bash
398
+ python -m pip install --group test
399
+ python -m pytest tests -n 6 --dist=loadfile
400
+ ```
401
+
402
+ Whole-file scheduling keeps benchmark aggregation and class fixtures together;
403
+ no benchmark assertion is skipped to enable parallelism.
404
+
405
+ For comparison with historical records, the deterministic **unittest-only**
406
+ count is maintained separately. The suite is 3384 tests.
407
+
408
+ ```bash
409
+ python -m unittest discover -s tests -p "test_*.py"
410
+ ```
411
+
412
+ A clean run reports `Ran 3384 tests`. Class-level environment skips can reduce
413
+ the executed count. The unittest-plus-legacy subtotal is 3389 (the baseline
414
+ plus five KaroX 4 script checks); it is **not** the full pytest collection size.
415
+
416
+ `python scripts/check_test_count.py` verifies the published counts. Other
417
+ release checks include:
418
+
419
+ ```bash
420
+ python scripts/check_dependencies.py
421
+ python scripts/check_versions.py
422
+ python scripts/check_test_count.py
423
+ python scripts/check_v5_release.py
424
+ python scripts/check_release_workflow.py
425
+ python -m ruff check src tests scripts
426
+ python -m mypy src/karox
427
+ ```
428
+
429
+ Use `python scripts/check_v5_release.py --strict` for release-candidate
430
+ rehearsal. It intentionally fails while required live conformance records and
431
+ external beta gates are not passed.
432
+
433
+ ## Documentation
434
+
435
+ - [Quick start](QUICKSTART.md)
436
+ - [KaroX 5 release scope](docs/V5_RELEASE_SCOPE.md)
437
+ - [Release checklist](docs/RELEASE_CHECKLIST.md)
438
+ - [External beta plan](docs/BETA_TEST_PLAN.md)
439
+ - [Live test runbook](docs/LIVE_TEST_RUNBOOK.md)
440
+ - [Migration from 4.x](docs/MIGRATION_V4_TO_V5.md)
441
+ - [Live conformance records](docs/conformance/README.md)
442
+ - [Connectivity](docs/CONNECTIVITY.md)
443
+ - [External HTTPS browser](docs/EXTERNAL_BROWSER.md)
444
+ - [Implementation status](docs/IMPLEMENTATION_STATUS.md)
445
+ - [Troubleshooting](TROUBLESHOOTING.md)
446
+ - [Security](SECURITY.md)
447
+ - [Contributing](CONTRIBUTING.md)
448
+ - [Russian README](README_RU.md)