ouroboros-ai 0.40.2.dev18__tar.gz → 0.40.2.dev20__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 (1183) hide show
  1. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/PKG-INFO +6 -6
  2. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/README.md +5 -5
  3. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/architecture.md +2 -2
  4. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/cli-reference.md +17 -13
  5. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/config-reference.md +1 -1
  6. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/getting-started.md +5 -3
  7. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/runtime-capability-matrix.md +36 -31
  8. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/runtime-guides/gemini.md +14 -2
  9. ouroboros_ai-0.40.2.dev20/docs/runtime-guides/pi.md +277 -0
  10. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/pyproject.toml +8 -0
  11. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/scripts/install.sh +22 -9
  12. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/_version.py +2 -2
  13. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/auto/execution_acceptance.py +82 -2
  14. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/auto/pipeline.py +1 -1
  15. ouroboros_ai-0.40.2.dev20/src/ouroboros/cli/commands/dispatch.py +224 -0
  16. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/cli/commands/init.py +4 -1
  17. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/cli/commands/mcp.py +3 -2
  18. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/cli/commands/run.py +11 -0
  19. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/cli/commands/setup.py +202 -4
  20. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/cli/main.py +2 -0
  21. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/mcp/tools/execution_handlers.py +19 -0
  22. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/gemini_cli_runtime.py +15 -1
  23. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/pi_runtime.py +48 -4
  24. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/providers/pi_llm_adapter.py +170 -11
  25. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/integration/test_pi_native_smoke.py +1 -0
  26. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_execution_acceptance.py +61 -0
  27. ouroboros_ai-0.40.2.dev20/tests/unit/cli/test_dispatch_command.py +194 -0
  28. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/test_init_runtime.py +19 -0
  29. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/test_main.py +20 -0
  30. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/test_run_qa.py +47 -1
  31. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/test_setup.py +142 -0
  32. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/evolution/test_generation_watchdog.py +16 -11
  33. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_definitions.py +80 -0
  34. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_gemini_cli_runtime.py +8 -0
  35. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_pi_runtime.py +89 -1
  36. ouroboros_ai-0.40.2.dev20/tests/unit/providers/test_pi_llm_adapter.py +515 -0
  37. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/scripts/test_install_runtime_selection.py +31 -0
  38. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/test_dependencies_configured.py +24 -0
  39. ouroboros_ai-0.40.2.dev18/tests/unit/providers/test_pi_llm_adapter.py +0 -224
  40. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/.claude/settings.json +0 -0
  41. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/.claude-plugin/.mcp.json +0 -0
  42. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/.claude-plugin/SKILL_CAPABILITY_GUIDE.md +0 -0
  43. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/.claude-plugin/marketplace.json +0 -0
  44. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/.claude-plugin/plugin.json +0 -0
  45. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/.claude-plugin/skills/auto/SKILL.md +0 -0
  46. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/.claude-plugin/skills/brownfield/SKILL.md +0 -0
  47. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/.claude-plugin/skills/cancel/SKILL.md +0 -0
  48. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/.claude-plugin/skills/evaluate/SKILL.md +0 -0
  49. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/.claude-plugin/skills/evolve/SKILL.md +0 -0
  50. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/.claude-plugin/skills/help/SKILL.md +0 -0
  51. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/.claude-plugin/skills/interview/SKILL.md +0 -0
  52. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/.claude-plugin/skills/pm/SKILL.md +0 -0
  53. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/.claude-plugin/skills/publish/SKILL.md +0 -0
  54. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/.claude-plugin/skills/qa/SKILL.md +0 -0
  55. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/.claude-plugin/skills/ralph/SKILL.md +0 -0
  56. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/.claude-plugin/skills/resume-session/SKILL.md +0 -0
  57. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/.claude-plugin/skills/run/SKILL.md +0 -0
  58. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/.claude-plugin/skills/seed/SKILL.md +0 -0
  59. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/.claude-plugin/skills/setup/SKILL.md +0 -0
  60. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/.claude-plugin/skills/status/SKILL.md +0 -0
  61. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/.claude-plugin/skills/tutorial/SKILL.md +0 -0
  62. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/.claude-plugin/skills/unstuck/SKILL.md +0 -0
  63. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/.claude-plugin/skills/update/SKILL.md +0 -0
  64. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/.claude-plugin/skills/welcome/SKILL.md +0 -0
  65. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/.codex/config.toml +0 -0
  66. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/.codex/hooks.json +0 -0
  67. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/.env.example +0 -0
  68. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  69. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  70. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  71. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/.github/ISSUE_TEMPLATE/question.yml +0 -0
  72. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  73. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/.github/workflows/auto-boundary.yml +0 -0
  74. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/.github/workflows/auto-perf-budget.yml +0 -0
  75. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/.github/workflows/dev-publish.yml +0 -0
  76. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/.github/workflows/lint.yml +0 -0
  77. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/.github/workflows/max-turns-envelope.yml +0 -0
  78. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/.github/workflows/release.yml +0 -0
  79. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/.github/workflows/test.yml +0 -0
  80. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/.gitignore +0 -0
  81. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/.mcp.json +0 -0
  82. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/.ouroboros/mechanical.toml +0 -0
  83. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/.ouroboros/seeds/seed_73827177a2a3.yaml +0 -0
  84. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/.ouroboros/seeds/seed_78c8e6e41813.yaml +0 -0
  85. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/.pre-commit-config.yaml +0 -0
  86. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/.python-version +0 -0
  87. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/AGENTS.md +0 -0
  88. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/CHANGELOG.md +0 -0
  89. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/CLAUDE.md +0 -0
  90. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/CODE_OF_CONDUCT.md +0 -0
  91. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/CONTRIBUTING.md +0 -0
  92. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/Code-Review-Claude.md +0 -0
  93. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/Code-Review-Codex.md +0 -0
  94. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/HANDOFF.md +0 -0
  95. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/LICENSE +0 -0
  96. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/README.ko.md +0 -0
  97. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/README.zh-CN.md +0 -0
  98. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/SECURITY.md +0 -0
  99. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/UNINSTALL.md +0 -0
  100. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/commands/cancel.md +0 -0
  101. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/commands/evaluate.md +0 -0
  102. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/commands/evolve.md +0 -0
  103. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/commands/help.md +0 -0
  104. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/commands/interview.md +0 -0
  105. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/commands/ralph.md +0 -0
  106. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/commands/run.md +0 -0
  107. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/commands/seed.md +0 -0
  108. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/commands/setup.md +0 -0
  109. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/commands/status.md +0 -0
  110. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/commands/tutorial.md +0 -0
  111. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/commands/unstuck.md +0 -0
  112. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/commands/welcome.md +0 -0
  113. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/crates/ouroboros-tui/.gitignore +0 -0
  114. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/crates/ouroboros-tui/Cargo.lock +0 -0
  115. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/crates/ouroboros-tui/Cargo.toml +0 -0
  116. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/crates/ouroboros-tui/README.md +0 -0
  117. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/crates/ouroboros-tui/src/db.rs +0 -0
  118. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/crates/ouroboros-tui/src/main.rs +0 -0
  119. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/crates/ouroboros-tui/src/mock.rs +0 -0
  120. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/crates/ouroboros-tui/src/state.rs +0 -0
  121. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/crates/ouroboros-tui/src/views/dashboard.rs +0 -0
  122. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/crates/ouroboros-tui/src/views/execution.rs +0 -0
  123. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/crates/ouroboros-tui/src/views/lineage.rs +0 -0
  124. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/crates/ouroboros-tui/src/views/logs.rs +0 -0
  125. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/crates/ouroboros-tui/src/views/mod.rs +0 -0
  126. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/crates/ouroboros-tui/src/views/session_selector.rs +0 -0
  127. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/README.md +0 -0
  128. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/agentos/control-journal.md +0 -0
  129. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/agentos/fat-harness-baseline-metrics.md +0 -0
  130. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/agentos/issue-sequencing-graph.md +0 -0
  131. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/agentos/profile-taxonomy.md +0 -0
  132. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/agentos/projection-followups.md +0 -0
  133. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/agentos/projection-v1-scope.md +0 -0
  134. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/agentos/release-readiness.md +0 -0
  135. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/agentos/runtime-contract.md +0 -0
  136. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/agentos/traceguard-observation-protocol.md +0 -0
  137. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/agentos/traceguard-vs-legacy-benchmark.md +0 -0
  138. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/agentos/workflow-ir-projection-mapping.md +0 -0
  139. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/agentos/workflow-ir-v1.md +0 -0
  140. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/api/README.md +0 -0
  141. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/api/core.md +0 -0
  142. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/api/mcp.md +0 -0
  143. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/auto-interview-convergence-contract.md +0 -0
  144. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/auto-runtime-semantics.md +0 -0
  145. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/contributing/agent-os-kernel-terminology.md +0 -0
  146. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/contributing/architecture-overview.md +0 -0
  147. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/contributing/control-contract.md +0 -0
  148. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/contributing/control-plane-followups.md +0 -0
  149. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/contributing/findings-registry.md +0 -0
  150. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/contributing/issue-quality-policy.md +0 -0
  151. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/contributing/key-patterns.md +0 -0
  152. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/contributing/testing-guide.md +0 -0
  153. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/contributing/verifier-evidence-policy.md +0 -0
  154. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/contributing/watchdog-cancellation.md +0 -0
  155. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/events.md +0 -0
  156. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/examples/mcp-config.yaml +0 -0
  157. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/examples/workflows/design-code-verify.md +0 -0
  158. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/examples/workflows/research-to-deliverable.md +0 -0
  159. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/guides/agent-process-lifecycle.md +0 -0
  160. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/guides/evaluation-pipeline.md +0 -0
  161. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/guides/evolution-loop.md +0 -0
  162. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/guides/execution-vs-evaluation.md +0 -0
  163. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/guides/issue-176-subagent-mcp-inheritance.md +0 -0
  164. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/guides/mcp-best-practices.md +0 -0
  165. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/guides/mcp-bridge.md +0 -0
  166. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/guides/ooo-skill-dispatch-router.md +0 -0
  167. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/guides/opencode-subagent-bridge.md +0 -0
  168. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/guides/qa-backends.md +0 -0
  169. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/guides/seed-authoring.md +0 -0
  170. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/guides/tui-usage.md +0 -0
  171. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/guides/windows-wsl-troubleshooting.md +0 -0
  172. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/images/PLACEHOLDER_README.md +0 -0
  173. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/images/ouroboros.png +0 -0
  174. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/ooo-auto-analysis.md +0 -0
  175. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/ooo-auto-evolution-plan.md +0 -0
  176. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/platform-support.md +0 -0
  177. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/rfc/contract-ledger.md +0 -0
  178. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/rfc/disposable-memory.md +0 -0
  179. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/rfc/interview-hardening.md +0 -0
  180. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/rfc/interview-milestone-lateral-contract.md +0 -0
  181. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/rfc/mesh.md +0 -0
  182. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/rfc/plugin-artifact-state-hook-contract.md +0 -0
  183. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/rfc/plugin-tool-call-hook-contract.md +0 -0
  184. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/rfc/runtime-delegation-contract.md +0 -0
  185. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/rfc/runtime-timeout-contract.md +0 -0
  186. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/rfc/userlevel-plugins.md +0 -0
  187. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/rfc/verdict-envelope-v1.md +0 -0
  188. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/runtime-guides/claude-code.md +0 -0
  189. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/runtime-guides/codex.md +0 -0
  190. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/runtime-guides/copilot.md +0 -0
  191. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/runtime-guides/goose.md +0 -0
  192. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/runtime-guides/hermes.md +0 -0
  193. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/runtime-guides/kiro.md +0 -0
  194. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/runtime-guides/opencode.md +0 -0
  195. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/docs/runtime-guides/skill-capability-guides.md +0 -0
  196. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/examples/coordinator_test_seed.yaml +0 -0
  197. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/examples/dummy_seed.yaml +0 -0
  198. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/examples/parallel_subac_test_seed.yaml +0 -0
  199. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/examples/subac_test_seed.yaml +0 -0
  200. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/examples/task_manager/README.md +0 -0
  201. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/examples/task_manager/__init__.py +0 -0
  202. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/examples/task_manager/__main__.py +0 -0
  203. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/examples/task_manager/cli.py +0 -0
  204. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/examples/task_manager/models.py +0 -0
  205. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/examples/task_manager/storage.py +0 -0
  206. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/examples/test_display.py +0 -0
  207. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/hooks/hooks.json +0 -0
  208. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/llms-full.txt +0 -0
  209. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/llms.txt +0 -0
  210. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/project-context.md +0 -0
  211. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/scripts/check-auto-boundary.py +0 -0
  212. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/scripts/check-auto-perf-budget.py +0 -0
  213. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/scripts/check-max-turns-envelope.py +0 -0
  214. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/scripts/drift-monitor.py +0 -0
  215. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/scripts/keyword-detector.py +0 -0
  216. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/scripts/mcp-serve.sh +0 -0
  217. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/scripts/ralph-rewind.py +0 -0
  218. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/scripts/ralph.py +0 -0
  219. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/scripts/ralph.sh +0 -0
  220. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/scripts/session-start.py +0 -0
  221. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/scripts/sync-plugin-version.py +0 -0
  222. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/scripts/version-check.py +0 -0
  223. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/skills/auto/SKILL.md +0 -0
  224. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/skills/brownfield/SKILL.md +0 -0
  225. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/skills/cancel/SKILL.md +0 -0
  226. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/skills/evaluate/SKILL.md +0 -0
  227. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/skills/evolve/SKILL.md +0 -0
  228. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/skills/help/SKILL.md +0 -0
  229. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/skills/interview/SKILL.md +0 -0
  230. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/skills/pm/SKILL.md +0 -0
  231. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/skills/publish/SKILL.md +0 -0
  232. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/skills/qa/SKILL.md +0 -0
  233. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/skills/ralph/SKILL.md +0 -0
  234. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/skills/resume-session/SKILL.md +0 -0
  235. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/skills/run/SKILL.md +0 -0
  236. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/skills/seed/SKILL.md +0 -0
  237. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/skills/setup/SKILL.md +0 -0
  238. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/skills/status/SKILL.md +0 -0
  239. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/skills/tutorial/SKILL.md +0 -0
  240. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/skills/unstuck/SKILL.md +0 -0
  241. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/skills/update/SKILL.md +0 -0
  242. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/skills/welcome/SKILL.md +0 -0
  243. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/__init__.py +0 -0
  244. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/__main__.py +0 -0
  245. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/agents/__init__.py +0 -0
  246. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/agents/advocate.md +0 -0
  247. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/agents/analysis-agent.md +0 -0
  248. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/agents/architect.md +0 -0
  249. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/agents/breadth-keeper.md +0 -0
  250. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/agents/code-executor.md +0 -0
  251. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/agents/codebase-explorer.md +0 -0
  252. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/agents/consensus-reviewer.md +0 -0
  253. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/agents/contrarian.md +0 -0
  254. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/agents/evaluator.md +0 -0
  255. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/agents/hacker.md +0 -0
  256. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/agents/judge.md +0 -0
  257. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/agents/loader.py +0 -0
  258. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/agents/ontologist.md +0 -0
  259. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/agents/ontology-analyst.md +0 -0
  260. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/agents/qa-judge.md +0 -0
  261. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/agents/research-agent.md +0 -0
  262. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/agents/researcher.md +0 -0
  263. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/agents/seed-architect.md +0 -0
  264. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/agents/seed-closer.md +0 -0
  265. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/agents/semantic-evaluator.md +0 -0
  266. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/agents/simplifier.md +0 -0
  267. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/agents/socratic-interviewer.md +0 -0
  268. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/auto/__init__.py +0 -0
  269. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/auto/adapters.py +0 -0
  270. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/auto/answerer.py +0 -0
  271. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/auto/auto_fill.py +0 -0
  272. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/auto/blocker_attribution.py +0 -0
  273. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/auto/checkpoint_commits.py +0 -0
  274. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/auto/domain_inference.py +0 -0
  275. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/auto/domain_profile.py +0 -0
  276. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/auto/gap_detector.py +0 -0
  277. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/auto/grading.py +0 -0
  278. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/auto/handoff_contract.py +0 -0
  279. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/auto/interview_driver.py +0 -0
  280. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/auto/lateral_routing.py +0 -0
  281. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/auto/ledger.py +0 -0
  282. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/auto/ledger_seed.py +0 -0
  283. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/auto/listeners.py +0 -0
  284. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/auto/policies.py +0 -0
  285. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/auto/profiles/__init__.py +0 -0
  286. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/auto/profiles/coding.py +0 -0
  287. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/auto/profiles/research.py +0 -0
  288. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/auto/progress.py +0 -0
  289. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/auto/provenance.py +0 -0
  290. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/auto/recovery_plan.py +0 -0
  291. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/auto/repo_context.py +0 -0
  292. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/auto/resume_render.py +0 -0
  293. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/auto/safe_defaults.py +0 -0
  294. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/auto/seed_repairer.py +0 -0
  295. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/auto/seed_reviewer.py +0 -0
  296. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/auto/state.py +0 -0
  297. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/auto/task_class_application.py +0 -0
  298. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/auto/task_classes.py +0 -0
  299. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/auto/worktree.py +0 -0
  300. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/backends/__init__.py +0 -0
  301. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/backends/capabilities.py +0 -0
  302. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/bigbang/__init__.py +0 -0
  303. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/bigbang/ambiguity.py +0 -0
  304. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/bigbang/brownfield.py +0 -0
  305. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/bigbang/explore.py +0 -0
  306. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/bigbang/interview.py +0 -0
  307. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/bigbang/pm_completion.py +0 -0
  308. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/bigbang/pm_document.py +0 -0
  309. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/bigbang/pm_interview.py +0 -0
  310. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/bigbang/pm_seed.py +0 -0
  311. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/bigbang/question_classifier.py +0 -0
  312. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/bigbang/seed_generator.py +0 -0
  313. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/claude_permissions.py +0 -0
  314. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/cli/__init__.py +0 -0
  315. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/cli/commands/__init__.py +0 -0
  316. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/cli/commands/auto.py +0 -0
  317. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/cli/commands/cancel.py +0 -0
  318. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/cli/commands/codex.py +0 -0
  319. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/cli/commands/config.py +0 -0
  320. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/cli/commands/detect.py +0 -0
  321. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/cli/commands/job.py +0 -0
  322. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/cli/commands/mcp_doctor.py +0 -0
  323. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/cli/commands/plugin.py +0 -0
  324. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/cli/commands/plugin_dispatch.py +0 -0
  325. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/cli/commands/pm.py +0 -0
  326. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/cli/commands/qa.py +0 -0
  327. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/cli/commands/resume.py +0 -0
  328. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/cli/commands/status.py +0 -0
  329. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/cli/commands/tui.py +0 -0
  330. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/cli/commands/uninstall.py +0 -0
  331. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/cli/commands/workflow_ir.py +0 -0
  332. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/cli/formatters/__init__.py +0 -0
  333. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/cli/formatters/panels.py +0 -0
  334. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/cli/formatters/progress.py +0 -0
  335. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/cli/formatters/prompting.py +0 -0
  336. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/cli/formatters/tables.py +0 -0
  337. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/cli/formatters/workflow_display.py +0 -0
  338. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/cli/jsonc.py +0 -0
  339. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/cli/opencode_config.py +0 -0
  340. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/codex/__init__.py +0 -0
  341. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/codex/artifacts.py +0 -0
  342. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/codex/cli_policy.py +0 -0
  343. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/codex/ouroboros.md +0 -0
  344. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/codex/runtime_profile.py +0 -0
  345. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/codex_permissions.py +0 -0
  346. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/config/__init__.py +0 -0
  347. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/config/_model_defaults.py +0 -0
  348. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/config/loader.py +0 -0
  349. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/config/models.py +0 -0
  350. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/copilot/__init__.py +0 -0
  351. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/copilot/cli_policy.py +0 -0
  352. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/copilot/model_discovery.py +0 -0
  353. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/copilot/runtime_profile.py +0 -0
  354. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/copilot_permissions.py +0 -0
  355. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/core/__init__.py +0 -0
  356. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/core/ac_tree.py +0 -0
  357. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/core/context.py +0 -0
  358. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/core/control_contract.py +0 -0
  359. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/core/directive.py +0 -0
  360. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/core/errors.py +0 -0
  361. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/core/file_lock.py +0 -0
  362. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/core/git_workflow.py +0 -0
  363. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/core/hitl_contract.py +0 -0
  364. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/core/hitl_resume.py +0 -0
  365. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/core/hitl_state.py +0 -0
  366. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/core/initial_context.py +0 -0
  367. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/core/json_utils.py +0 -0
  368. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/core/lineage.py +0 -0
  369. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/core/ontology_aspect.py +0 -0
  370. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/core/ontology_questions.py +0 -0
  371. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/core/project_paths.py +0 -0
  372. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/core/retry.py +0 -0
  373. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/core/runtime_transition.py +0 -0
  374. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/core/security.py +0 -0
  375. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/core/seed.py +0 -0
  376. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/core/seed_contract.py +0 -0
  377. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/core/seed_contract_prompt.py +0 -0
  378. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/core/text.py +0 -0
  379. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/core/ttl_cache.py +0 -0
  380. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/core/types.py +0 -0
  381. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/core/worktree.py +0 -0
  382. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/evaluation/__init__.py +0 -0
  383. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/evaluation/artifact_collector.py +0 -0
  384. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/evaluation/checklist.py +0 -0
  385. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/evaluation/consensus.py +0 -0
  386. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/evaluation/detector.py +0 -0
  387. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/evaluation/json_utils.py +0 -0
  388. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/evaluation/languages.py +0 -0
  389. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/evaluation/mechanical.py +0 -0
  390. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/evaluation/models.py +0 -0
  391. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/evaluation/pipeline.py +0 -0
  392. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/evaluation/semantic.py +0 -0
  393. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/evaluation/trigger.py +0 -0
  394. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/evaluation/verification_artifacts.py +0 -0
  395. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/events/__init__.py +0 -0
  396. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/events/base.py +0 -0
  397. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/events/control.py +0 -0
  398. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/events/decomposition.py +0 -0
  399. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/events/evaluation.py +0 -0
  400. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/events/hitl.py +0 -0
  401. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/events/interview.py +0 -0
  402. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/events/io.py +0 -0
  403. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/events/io_recorder.py +0 -0
  404. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/events/lineage.py +0 -0
  405. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/events/ontology.py +0 -0
  406. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/evolution/__init__.py +0 -0
  407. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/evolution/convergence.py +0 -0
  408. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/evolution/directive_mapping.py +0 -0
  409. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/evolution/loop.py +0 -0
  410. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/evolution/material_progress.py +0 -0
  411. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/evolution/projector.py +0 -0
  412. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/evolution/reflect.py +0 -0
  413. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/evolution/regression.py +0 -0
  414. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/evolution/watchdog.py +0 -0
  415. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/evolution/wonder.py +0 -0
  416. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/execution/__init__.py +0 -0
  417. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/execution/atomicity.py +0 -0
  418. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/execution/decomposition.py +0 -0
  419. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/execution/double_diamond.py +0 -0
  420. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/execution/subagent.py +0 -0
  421. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/harness/__init__.py +0 -0
  422. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/harness/claim_term_guard.py +0 -0
  423. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/harness/deliver_gate.py +0 -0
  424. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/harness/deliver_routing.py +0 -0
  425. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/harness/journal.py +0 -0
  426. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/harness/projection.py +0 -0
  427. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/harness/projection_builder.py +0 -0
  428. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/harness/run_snapshot.py +0 -0
  429. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/hermes/__init__.py +0 -0
  430. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/hermes/artifacts.py +0 -0
  431. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/mcp/__init__.py +0 -0
  432. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/mcp/bridge/__init__.py +0 -0
  433. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/mcp/bridge/bridge.py +0 -0
  434. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/mcp/bridge/config.py +0 -0
  435. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/mcp/bridge/factory.py +0 -0
  436. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/mcp/client/__init__.py +0 -0
  437. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/mcp/client/adapter.py +0 -0
  438. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/mcp/client/manager.py +0 -0
  439. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/mcp/client/protocol.py +0 -0
  440. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/mcp/errors.py +0 -0
  441. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/mcp/job_manager.py +0 -0
  442. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/mcp/resources/__init__.py +0 -0
  443. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/mcp/resources/handlers.py +0 -0
  444. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/mcp/server/__init__.py +0 -0
  445. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/mcp/server/adapter.py +0 -0
  446. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/mcp/server/protocol.py +0 -0
  447. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/mcp/server/security.py +0 -0
  448. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/mcp/tools/__init__.py +0 -0
  449. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/mcp/tools/ac_tree_hud_handler.py +0 -0
  450. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/mcp/tools/ac_tree_hud_render.py +0 -0
  451. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/mcp/tools/authoring_handlers.py +0 -0
  452. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/mcp/tools/auto_handler.py +0 -0
  453. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/mcp/tools/bridge_mixin.py +0 -0
  454. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/mcp/tools/brownfield_handler.py +0 -0
  455. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/mcp/tools/dashboard.py +0 -0
  456. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/mcp/tools/definitions.py +0 -0
  457. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/mcp/tools/evaluation_handlers.py +0 -0
  458. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/mcp/tools/evolution_handlers.py +0 -0
  459. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/mcp/tools/job_handlers.py +0 -0
  460. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/mcp/tools/pm_handler.py +0 -0
  461. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/mcp/tools/projection_handlers.py +0 -0
  462. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/mcp/tools/qa.py +0 -0
  463. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/mcp/tools/query_handlers.py +0 -0
  464. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/mcp/tools/ralph_handlers.py +0 -0
  465. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/mcp/tools/registry.py +0 -0
  466. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/mcp/tools/subagent.py +0 -0
  467. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/mcp/types.py +0 -0
  468. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/observability/__init__.py +0 -0
  469. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/observability/drift.py +0 -0
  470. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/observability/logging.py +0 -0
  471. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/observability/retrospective.py +0 -0
  472. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/opencode/__init__.py +0 -0
  473. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/opencode/plugin/__init__.py +0 -0
  474. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/opencode/plugin/opencode-plugin.d.ts +0 -0
  475. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/opencode/plugin/ouroboros-bridge.test.ts +0 -0
  476. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/opencode/plugin/ouroboros-bridge.ts +0 -0
  477. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/opencode/plugin/package.json +0 -0
  478. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/opencode/plugin/tsconfig.json +0 -0
  479. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/__init__.py +0 -0
  480. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/adapter.py +0 -0
  481. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/agent_process.py +0 -0
  482. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/agent_runtime_context.py +0 -0
  483. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/baseline_metrics.py +0 -0
  484. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/baseline_metrics_capture.py +0 -0
  485. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/baseline_metrics_format.py +0 -0
  486. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/capabilities.py +0 -0
  487. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/codex_cli_runtime.py +0 -0
  488. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/command_dispatcher.py +0 -0
  489. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/context_governor.py +0 -0
  490. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/control_bus.py +0 -0
  491. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/control_plane.py +0 -0
  492. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/coordinator.py +0 -0
  493. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/copilot_cli_runtime.py +0 -0
  494. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/decomposition_params.py +0 -0
  495. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/dependency_analyzer.py +0 -0
  496. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/events.py +0 -0
  497. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/evidence_schema.py +0 -0
  498. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/execution_runtime_scope.py +0 -0
  499. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/execution_strategy.py +0 -0
  500. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/failure_taxonomy.py +0 -0
  501. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/goose_runtime.py +0 -0
  502. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/heartbeat.py +0 -0
  503. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/hermes_runtime.py +0 -0
  504. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/kiro_adapter.py +0 -0
  505. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/level_context.py +0 -0
  506. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/mcp_config.py +0 -0
  507. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/mcp_tools.py +0 -0
  508. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/opencode_event_normalizer.py +0 -0
  509. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/opencode_runtime.py +0 -0
  510. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/parallel_executor.py +0 -0
  511. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/parallel_executor_models.py +0 -0
  512. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/phase_wrappers.py +0 -0
  513. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/policy.py +0 -0
  514. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/profile_loader.py +0 -0
  515. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/profile_strategy.py +0 -0
  516. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/rate_limit.py +0 -0
  517. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/routing.py +0 -0
  518. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/runner.py +0 -0
  519. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/runtime_evidence.py +0 -0
  520. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/runtime_factory.py +0 -0
  521. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/runtime_message_projection.py +0 -0
  522. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/session.py +0 -0
  523. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/skill_intercept.py +0 -0
  524. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/stage.py +0 -0
  525. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/traceguard_benchmark_capture.py +0 -0
  526. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/verifier.py +0 -0
  527. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/workflow_ir.py +0 -0
  528. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/workflow_ir_adapter.py +0 -0
  529. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/workflow_lifecycle.py +0 -0
  530. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator/workflow_state.py +0 -0
  531. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/orchestrator_stage.py +0 -0
  532. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/persistence/__init__.py +0 -0
  533. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/persistence/brownfield.py +0 -0
  534. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/persistence/checkpoint.py +0 -0
  535. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/persistence/event_store.py +0 -0
  536. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/persistence/migrations/__init__.py +0 -0
  537. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/persistence/migrations/runner.py +0 -0
  538. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/persistence/migrations/scripts/001_initial.sql +0 -0
  539. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/persistence/migrations/scripts/002_brownfield.sql +0 -0
  540. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/persistence/schema.py +0 -0
  541. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/persistence/uow.py +0 -0
  542. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/plugin/__init__.py +0 -0
  543. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/plugin/agents/__init__.py +0 -0
  544. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/plugin/agents/pool.py +0 -0
  545. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/plugin/agents/registry.py +0 -0
  546. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/plugin/digest.py +0 -0
  547. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/plugin/firewall.py +0 -0
  548. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/plugin/hooks.py +0 -0
  549. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/plugin/ledger_adapter.py +0 -0
  550. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/plugin/lockfile.py +0 -0
  551. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/plugin/manifest.py +0 -0
  552. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/plugin/orchestration/__init__.py +0 -0
  553. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/plugin/orchestration/router.py +0 -0
  554. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/plugin/orchestration/scheduler.py +0 -0
  555. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/plugin/schemas/0.1/_source.json +0 -0
  556. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/plugin/schemas/0.1/audit-event.schema.json +0 -0
  557. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/plugin/schemas/0.1/plugin.schema.json +0 -0
  558. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/plugin/schemas/0.2/_source.json +0 -0
  559. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/plugin/schemas/0.2/audit-event.schema.json +0 -0
  560. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/plugin/schemas/0.2/plugin.schema.json +0 -0
  561. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/plugin/schemas/0.3/_source.json +0 -0
  562. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/plugin/schemas/0.3/audit-event.schema.json +0 -0
  563. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/plugin/schemas/0.3/plugin.schema.json +0 -0
  564. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/plugin/schemas/0.4/_source.json +0 -0
  565. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/plugin/schemas/0.4/audit-event.schema.json +0 -0
  566. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/plugin/schemas/0.4/plugin.schema.json +0 -0
  567. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/plugin/skills/__init__.py +0 -0
  568. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/plugin/skills/docs.py +0 -0
  569. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/plugin/skills/executor.py +0 -0
  570. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/plugin/skills/keywords.py +0 -0
  571. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/plugin/skills/registry.py +0 -0
  572. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/plugin/trust_store.py +0 -0
  573. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/plugin/userlevel_registry.py +0 -0
  574. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/pm/__init__.py +0 -0
  575. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/pm/handoff.py +0 -0
  576. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/pm/renderer.py +0 -0
  577. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/profiles/analysis.yaml +0 -0
  578. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/profiles/code.yaml +0 -0
  579. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/profiles/research.yaml +0 -0
  580. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/providers/__init__.py +0 -0
  581. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/providers/anthropic_adapter.py +0 -0
  582. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/providers/base.py +0 -0
  583. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/providers/claude_code_adapter.py +0 -0
  584. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/providers/codex_cli_adapter.py +0 -0
  585. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/providers/codex_cli_stream.py +0 -0
  586. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/providers/copilot_cli_adapter.py +0 -0
  587. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/providers/copilot_cli_stream.py +0 -0
  588. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/providers/factory.py +0 -0
  589. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/providers/gemini_cli_adapter.py +0 -0
  590. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/providers/gemini_event_normalizer.py +0 -0
  591. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/providers/goose_cli_adapter.py +0 -0
  592. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/providers/hermes_cli_adapter.py +0 -0
  593. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/providers/kiro_adapter.py +0 -0
  594. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/providers/litellm_adapter.py +0 -0
  595. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/providers/opencode_adapter.py +0 -0
  596. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/providers/profiles.py +0 -0
  597. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/providers/tool_use_diagnostics.py +0 -0
  598. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/py.typed +0 -0
  599. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/ralph_loop.py +0 -0
  600. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/resilience/__init__.py +0 -0
  601. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/resilience/lateral.py +0 -0
  602. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/resilience/recovery.py +0 -0
  603. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/resilience/stagnation.py +0 -0
  604. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/router/__init__.py +0 -0
  605. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/router/command_parser.py +0 -0
  606. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/router/dispatch.py +0 -0
  607. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/router/registry.py +0 -0
  608. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/router/types.py +0 -0
  609. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/routing/__init__.py +0 -0
  610. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/routing/complexity.py +0 -0
  611. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/routing/downgrade.py +0 -0
  612. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/routing/escalation.py +0 -0
  613. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/routing/router.py +0 -0
  614. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/routing/tiers.py +0 -0
  615. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/runtime/__init__.py +0 -0
  616. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/runtime/controls.py +0 -0
  617. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/runtime/watchdog.py +0 -0
  618. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/sandbox.py +0 -0
  619. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/secondary/__init__.py +0 -0
  620. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/secondary/scheduler.py +0 -0
  621. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/secondary/todo_registry.py +0 -0
  622. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/skills/__init__.py +0 -0
  623. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/skills/artifacts.py +0 -0
  624. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/strategies/__init__.py +0 -0
  625. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/strategies/devil_advocate.py +0 -0
  626. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/tui/__init__.py +0 -0
  627. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/tui/app.py +0 -0
  628. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/tui/components/__init__.py +0 -0
  629. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/tui/components/agents_panel.py +0 -0
  630. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/tui/components/event_log.py +0 -0
  631. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/tui/components/progress.py +0 -0
  632. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/tui/components/token_tracker.py +0 -0
  633. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/tui/events.py +0 -0
  634. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/tui/screens/__init__.py +0 -0
  635. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/tui/screens/confirm_rewind.py +0 -0
  636. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/tui/screens/dashboard.py +0 -0
  637. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/tui/screens/dashboard_v2.py +0 -0
  638. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/tui/screens/dashboard_v3.py +0 -0
  639. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/tui/screens/debug.py +0 -0
  640. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/tui/screens/execution.py +0 -0
  641. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/tui/screens/hud_dashboard.py +0 -0
  642. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/tui/screens/lineage_detail.py +0 -0
  643. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/tui/screens/lineage_selector.py +0 -0
  644. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/tui/screens/logs.py +0 -0
  645. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/tui/screens/session_selector.py +0 -0
  646. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/tui/widgets/__init__.py +0 -0
  647. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/tui/widgets/ac_progress.py +0 -0
  648. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/tui/widgets/ac_tree.py +0 -0
  649. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/tui/widgets/agent_activity.py +0 -0
  650. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/tui/widgets/cost_tracker.py +0 -0
  651. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/tui/widgets/drift_meter.py +0 -0
  652. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/tui/widgets/lineage_tree.py +0 -0
  653. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/tui/widgets/parallel_graph.py +0 -0
  654. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/tui/widgets/phase_progress.py +0 -0
  655. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/verification/__init__.py +0 -0
  656. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/verification/extractor.py +0 -0
  657. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/verification/models.py +0 -0
  658. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/src/ouroboros/verification/verifier.py +0 -0
  659. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/__init__.py +0 -0
  660. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/_envelope_wiring.py +0 -0
  661. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/canonical/README.md +0 -0
  662. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/canonical/__init__.py +0 -0
  663. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/canonical/cli-todo/expected.yaml +0 -0
  664. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/canonical/cli-todo/goal.txt +0 -0
  665. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/canonical/conftest.py +0 -0
  666. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/canonical/test_canonical.py +0 -0
  667. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/canonical/test_conftest.py +0 -0
  668. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/conformance/__init__.py +0 -0
  669. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/conformance/workflow_ir/__init__.py +0 -0
  670. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/conformance/workflow_ir/fixtures.py +0 -0
  671. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/conformance/workflow_ir/test_negative_fixtures.py +0 -0
  672. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/conformance/workflow_ir/test_plugin_firewall_contract.py +0 -0
  673. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/conformance/workflow_ir/test_positive_fixtures.py +0 -0
  674. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/conftest.py +0 -0
  675. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/e2e/__init__.py +0 -0
  676. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/e2e/conftest.py +0 -0
  677. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/e2e/mcp_bridge_test_config.yaml +0 -0
  678. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/e2e/test_cli_commands.py +0 -0
  679. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/e2e/test_full_workflow.py +0 -0
  680. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/e2e/test_session_persistence.py +0 -0
  681. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/fixtures/plugins-fixture/README.md +0 -0
  682. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/fixtures/plugins-fixture/plugins/github-pr-ops/github_pr_ops/__init__.py +0 -0
  683. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/fixtures/plugins-fixture/plugins/github-pr-ops/github_pr_ops/__main__.py +0 -0
  684. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/fixtures/plugins-fixture/plugins/github-pr-ops/ouroboros.plugin.json +0 -0
  685. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/fixtures/projection/mechanical_evaluation_events.json +0 -0
  686. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/fixtures/router/skills/frontmatter-body/run/SKILL.md +0 -0
  687. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/fixtures/seeds/mechanical-eval-minimal.yaml +0 -0
  688. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/fixtures/test_atomicity_seed.yml +0 -0
  689. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/integration/__init__.py +0 -0
  690. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/integration/auto/__init__.py +0 -0
  691. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/integration/auto/test_dispatch_to_seed_e2e.py +0 -0
  692. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/integration/auto/test_domain_profile_plurality.py +0 -0
  693. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/integration/auto/test_end_to_end_product.py +0 -0
  694. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/integration/auto/test_interview_deadline_partial_product_regression.py +0 -0
  695. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/integration/auto/test_status_unified.py +0 -0
  696. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/integration/conftest.py +0 -0
  697. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/integration/mcp/__init__.py +0 -0
  698. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/integration/mcp/bridge/__init__.py +0 -0
  699. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/integration/mcp/bridge/test_bridge_server_to_server.py +0 -0
  700. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/integration/mcp/conftest.py +0 -0
  701. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/integration/mcp/test_client_adapter.py +0 -0
  702. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/integration/mcp/test_client_manager.py +0 -0
  703. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/integration/mcp/test_server_adapter.py +0 -0
  704. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/integration/orchestrator/__init__.py +0 -0
  705. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/integration/orchestrator/test_agent_process_three_surface_acceptance.py +0 -0
  706. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/integration/plugin/__init__.py +0 -0
  707. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/integration/plugin/test_e2e.py +0 -0
  708. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/integration/plugin/test_orchestration.py +0 -0
  709. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/integration/plugin/test_wheel_packaging.py +0 -0
  710. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/integration/test_cancel_subprocess_termination.py +0 -0
  711. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/integration/test_codex_cli_passthrough_smoke.py +0 -0
  712. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/integration/test_codex_skill_fallback.py +0 -0
  713. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/integration/test_codex_skill_smoke.py +0 -0
  714. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/integration/test_copilot_cli_smoke.py +0 -0
  715. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/integration/test_entry_point.py +0 -0
  716. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/integration/test_ir_projection_consistency.py +0 -0
  717. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/integration/test_mechanical_eval_projection.py +0 -0
  718. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/test-execution-plan.md +0 -0
  719. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/__init__.py +0 -0
  720. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/agents/__init__.py +0 -0
  721. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/agents/test_loader.py +0 -0
  722. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_821_acceptance_matrix.py +0 -0
  723. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_adapters_client_gates.py +0 -0
  724. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_adapters_ralph_poller.py +0 -0
  725. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_answer_source_log.py +0 -0
  726. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_answerer_via_domain_profile.py +0 -0
  727. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_auto_fill.py +0 -0
  728. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_auto_policies.py +0 -0
  729. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_auto_worktree.py +0 -0
  730. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_blocker_attribution.py +0 -0
  731. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_checkpoint_commits.py +0 -0
  732. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_cli_progress.py +0 -0
  733. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_domain_inference.py +0 -0
  734. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_domain_profile_coding_parity.py +0 -0
  735. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_domain_profile_contracts.py +0 -0
  736. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_handoff_contract.py +0 -0
  737. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_interview_driver_event_store_wiring.py +0 -0
  738. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_interview_pipeline.py +0 -0
  739. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_lateral_routing_safe_default.py +0 -0
  740. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_ledger_grading_answerer.py +0 -0
  741. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_ledger_seed.py +0 -0
  742. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_pipeline_deadline.py +0 -0
  743. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_pipeline_defaulted_sections_surface.py +0 -0
  744. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_pipeline_domain_profile.py +0 -0
  745. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_pipeline_evaluate.py +0 -0
  746. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_pipeline_interview_deadline_closure.py +0 -0
  747. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_pipeline_interview_observer_drain.py +0 -0
  748. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_pipeline_lateral.py +0 -0
  749. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_pipeline_oscillation_lateral.py +0 -0
  750. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_pipeline_partial_product_terminal.py +0 -0
  751. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_pipeline_provenance.py +0 -0
  752. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_pipeline_ralph_handoff.py +0 -0
  753. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_pipeline_runtime_probe_envelope.py +0 -0
  754. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_pipeline_task_class_envelope.py +0 -0
  755. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_pipeline_watchdog_integration.py +0 -0
  756. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_progress.py +0 -0
  757. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_recovery_plan.py +0 -0
  758. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_research_profile.py +0 -0
  759. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_run_starter_idempotency.py +0 -0
  760. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_runtime_semantics.py +0 -0
  761. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_safe_default_lateral_escalation.py +0 -0
  762. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_safe_default_observability.py +0 -0
  763. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_safe_defaults_domain_profile.py +0 -0
  764. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_safe_defaults_prompt_non_goals.py +0 -0
  765. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_seed_repairer_bounded.py +0 -0
  766. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_state.py +0 -0
  767. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_state_provenance.py +0 -0
  768. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_stop_reason_code.py +0 -0
  769. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_surface.py +0 -0
  770. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_task_class_application.py +0 -0
  771. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_task_classes.py +0 -0
  772. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/auto/test_user_preference_and_floor.py +0 -0
  773. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/backends/test_capabilities.py +0 -0
  774. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/bigbang/__init__.py +0 -0
  775. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/bigbang/test_ambiguity.py +0 -0
  776. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/bigbang/test_brownfield.py +0 -0
  777. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/bigbang/test_classifier_context.py +0 -0
  778. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/bigbang/test_decide_later_items.py +0 -0
  779. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/bigbang/test_explore.py +0 -0
  780. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/bigbang/test_interview.py +0 -0
  781. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/bigbang/test_interview_async_io.py +0 -0
  782. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/bigbang/test_interview_no_web_search_hint.py +0 -0
  783. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/bigbang/test_interview_research_prefix.py +0 -0
  784. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/bigbang/test_interview_start_persist_failure.py +0 -0
  785. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/bigbang/test_pm_completion.py +0 -0
  786. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/bigbang/test_pm_document_generator.py +0 -0
  787. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/bigbang/test_pm_document_writer.py +0 -0
  788. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/bigbang/test_pm_interview.py +0 -0
  789. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/bigbang/test_pm_interview_brownfield_db.py +0 -0
  790. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/bigbang/test_pm_seed_ac12.py +0 -0
  791. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/bigbang/test_pm_seed_save.py +0 -0
  792. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/bigbang/test_question_classifier.py +0 -0
  793. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/bigbang/test_seed_generator.py +0 -0
  794. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/__init__.py +0 -0
  795. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/commands/test_tui_command.py +0 -0
  796. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/conftest.py +0 -0
  797. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/formatters/__init__.py +0 -0
  798. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/formatters/test_console.py +0 -0
  799. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/formatters/test_panels.py +0 -0
  800. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/formatters/test_progress.py +0 -0
  801. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/formatters/test_prompting.py +0 -0
  802. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/formatters/test_tables.py +0 -0
  803. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/formatters/test_workflow_display.py +0 -0
  804. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/test_auto_command.py +0 -0
  805. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/test_auto_domain_activation.py +0 -0
  806. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/test_auto_provenance.py +0 -0
  807. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/test_auto_runtime_dispatch.py +0 -0
  808. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/test_bridge_plugin_hardening.py +0 -0
  809. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/test_bridge_plugin_lifecycle.py +0 -0
  810. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/test_cancel.py +0 -0
  811. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/test_codex_command.py +0 -0
  812. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/test_config.py +0 -0
  813. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/test_debug_tool_started_callbacks.py +0 -0
  814. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/test_detached_auto_wait_command.py +0 -0
  815. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/test_detect_allowed_tools_wiring.py +0 -0
  816. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/test_doc_commands.py +0 -0
  817. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/test_init_hitl.py +0 -0
  818. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/test_init_pm_seed_detection.py +0 -0
  819. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/test_job_command.py +0 -0
  820. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/test_jsonc.py +0 -0
  821. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/test_mcp_doctor.py +0 -0
  822. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/test_mcp_nested_guard.py +0 -0
  823. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/test_mcp_shell_env.py +0 -0
  824. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/test_mcp_startup_cleanup.py +0 -0
  825. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/test_mcp_validate_transport_stderr.py +0 -0
  826. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/test_opencode_config.py +0 -0
  827. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/test_plugin_command.py +0 -0
  828. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/test_plugin_command_mutating.py +0 -0
  829. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/test_plugin_dispatch.py +0 -0
  830. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/test_pm.py +0 -0
  831. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/test_pm_brownfield.py +0 -0
  832. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/test_pm_completion.py +0 -0
  833. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/test_pm_interactive_logging.py +0 -0
  834. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/test_pm_missing_litellm.py +0 -0
  835. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/test_pm_overwrite.py +0 -0
  836. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/test_pm_runtime_adapter.py +0 -0
  837. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/test_pm_select_repos.py +0 -0
  838. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/test_resume.py +0 -0
  839. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/test_status.py +0 -0
  840. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/test_status_run.py +0 -0
  841. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/cli/test_uninstall.py +0 -0
  842. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/codex/test_cli_policy.py +0 -0
  843. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/config/__init__.py +0 -0
  844. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/config/test_loader.py +0 -0
  845. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/config/test_loader_env.py +0 -0
  846. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/config/test_models.py +0 -0
  847. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/copilot/__init__.py +0 -0
  848. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/copilot/test_cli_policy.py +0 -0
  849. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/copilot/test_model_discovery.py +0 -0
  850. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/copilot/test_permissions.py +0 -0
  851. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/core/__init__.py +0 -0
  852. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/core/test_ac_tree.py +0 -0
  853. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/core/test_context.py +0 -0
  854. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/core/test_control_contract.py +0 -0
  855. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/core/test_directive.py +0 -0
  856. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/core/test_errors.py +0 -0
  857. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/core/test_file_lock.py +0 -0
  858. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/core/test_git_workflow.py +0 -0
  859. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/core/test_hitl_contract.py +0 -0
  860. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/core/test_hitl_resume.py +0 -0
  861. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/core/test_hitl_state.py +0 -0
  862. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/core/test_initial_context.py +0 -0
  863. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/core/test_lineage.py +0 -0
  864. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/core/test_ontology_aspect.py +0 -0
  865. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/core/test_ontology_questions.py +0 -0
  866. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/core/test_project_paths.py +0 -0
  867. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/core/test_retry.py +0 -0
  868. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/core/test_runtime_transition.py +0 -0
  869. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/core/test_security.py +0 -0
  870. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/core/test_seed.py +0 -0
  871. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/core/test_seed_project_path_callers.py +0 -0
  872. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/core/test_ttl_cache.py +0 -0
  873. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/core/test_types.py +0 -0
  874. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/core/test_worktree.py +0 -0
  875. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/evaluation/__init__.py +0 -0
  876. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/evaluation/test_artifact_collector_file_prefix.py +0 -0
  877. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/evaluation/test_checklist.py +0 -0
  878. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/evaluation/test_consensus.py +0 -0
  879. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/evaluation/test_detector.py +0 -0
  880. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/evaluation/test_json_utils.py +0 -0
  881. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/evaluation/test_languages.py +0 -0
  882. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/evaluation/test_mechanical.py +0 -0
  883. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/evaluation/test_models.py +0 -0
  884. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/evaluation/test_pipeline_stage1_reuse.py +0 -0
  885. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/evaluation/test_pipeline_trigger_consensus.py +0 -0
  886. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/evaluation/test_review_fixes.py +0 -0
  887. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/evaluation/test_semantic.py +0 -0
  888. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/evaluation/test_trigger.py +0 -0
  889. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/evaluation/test_trigger_consensus.py +0 -0
  890. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/evaluation/test_verification_artifacts.py +0 -0
  891. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/evaluation/test_verification_artifacts_allowed_tools_wiring.py +0 -0
  892. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/events/__init__.py +0 -0
  893. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/events/test_base.py +0 -0
  894. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/events/test_control_events.py +0 -0
  895. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/events/test_decomposition_events.py +0 -0
  896. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/events/test_hitl_events.py +0 -0
  897. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/events/test_io_events.py +0 -0
  898. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/events/test_io_recorder.py +0 -0
  899. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/evolution/test_backend_drift.py +0 -0
  900. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/evolution/test_directive_mapping.py +0 -0
  901. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/evolution/test_evolve_step_agent_process_integration.py +0 -0
  902. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/evolution/test_material_progress.py +0 -0
  903. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/evolution/test_wonder_scope.py +0 -0
  904. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/execution/__init__.py +0 -0
  905. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/execution/test_atomicity.py +0 -0
  906. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/execution/test_decomposition.py +0 -0
  907. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/execution/test_double_diamond.py +0 -0
  908. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/execution/test_subagent_isolation.py +0 -0
  909. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/harness/__init__.py +0 -0
  910. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/harness/test_claim_term_guard.py +0 -0
  911. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/harness/test_deliver_gate.py +0 -0
  912. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/harness/test_deliver_routing.py +0 -0
  913. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/harness/test_journal_normalizer.py +0 -0
  914. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/harness/test_projection_builder.py +0 -0
  915. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/harness/test_projection_records.py +0 -0
  916. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/harness/test_run_snapshot.py +0 -0
  917. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/hermes/test_artifacts.py +0 -0
  918. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/__init__.py +0 -0
  919. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/bridge/__init__.py +0 -0
  920. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/bridge/test_bridge.py +0 -0
  921. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/bridge/test_config.py +0 -0
  922. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/bridge/test_factory.py +0 -0
  923. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/bridge/test_handler_wiring.py +0 -0
  924. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/bridge/test_stability.py +0 -0
  925. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/client/__init__.py +0 -0
  926. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/client/test_adapter.py +0 -0
  927. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/client/test_adapter_transport_lifecycle.py +0 -0
  928. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/client/test_manager.py +0 -0
  929. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/conftest.py +0 -0
  930. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/resources/test_handlers.py +0 -0
  931. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/server/__init__.py +0 -0
  932. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/server/test_adapter.py +0 -0
  933. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/server/test_adapter_max_turns_envelope_wiring.py +0 -0
  934. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/server/test_security.py +0 -0
  935. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/test_errors.py +0 -0
  936. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/test_job_manager.py +0 -0
  937. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/test_types.py +0 -0
  938. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/__init__.py +0 -0
  939. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/conftest.py +0 -0
  940. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_ac_tree_hud_footer.py +0 -0
  941. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_ac_tree_hud_handler.py +0 -0
  942. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_ac_tree_hud_handler_completed.py +0 -0
  943. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_ac_tree_hud_handler_cursor_changed.py +0 -0
  944. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_ac_tree_hud_handler_invalid_session.py +0 -0
  945. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_ac_tree_hud_handler_no_execution.py +0 -0
  946. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_ac_tree_hud_handler_waiting.py +0 -0
  947. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_ac_tree_hud_max_nodes.py +0 -0
  948. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_ac_tree_hud_render_depth2.py +0 -0
  949. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_ac_tree_hud_render_depth3.py +0 -0
  950. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_ac_tree_hud_status_icons.py +0 -0
  951. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_ac_tree_hud_truncation.py +0 -0
  952. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_authoring_allowed_tools_wiring.py +0 -0
  953. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_auto_handler_ralph_runtime.py +0 -0
  954. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_auto_handler_resume_lines.py +0 -0
  955. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_auto_interview_construction.py +0 -0
  956. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_bridge_mixin_runtime_context.py +0 -0
  957. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_brownfield_handler.py +0 -0
  958. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_checklist_verify.py +0 -0
  959. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_client_gates.py +0 -0
  960. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_definitions_runtime_context.py +0 -0
  961. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_evaluate_multi_ac.py +0 -0
  962. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_evolve_checkpoint_commits.py +0 -0
  963. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_evolve_step_bridge_aware.py +0 -0
  964. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_execute_seed_path_resolution.py +0 -0
  965. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_generate_seed_force_flag.py +0 -0
  966. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_handler_subagent_wiring.py +0 -0
  967. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_interview_allowed_tools_wiring.py +0 -0
  968. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_interview_completion_signal_prefix_guard.py +0 -0
  969. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_interview_done_streak.py +0 -0
  970. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_interview_lateral_review_advisory.py +0 -0
  971. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_interview_length_guard_envelope.py +0 -0
  972. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_interview_persists_session_on_failure.py +0 -0
  973. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_interview_reopen_seed_ready.py +0 -0
  974. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_interview_response_diagnostics.py +0 -0
  975. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_interview_strict_mcp_config_wiring.py +0 -0
  976. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_job_instance_cancel_keys.py +0 -0
  977. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_job_invalid_arguments.py +0 -0
  978. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_lateral_think_handler.py +0 -0
  979. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_mcp_manager_wiring.py +0 -0
  980. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_pm_handler.py +0 -0
  981. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_pm_handler_allowed_tools_wiring.py +0 -0
  982. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_pm_handler_pending_reframe.py +0 -0
  983. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_qa_allowed_tools_wiring.py +0 -0
  984. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_qa_parser.py +0 -0
  985. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_ralph_handler.py +0 -0
  986. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_registry.py +0 -0
  987. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_round5_fixes.py +0 -0
  988. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_start_auto.py +0 -0
  989. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_start_evaluate.py +0 -0
  990. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_start_execute_seed_idempotency.py +0 -0
  991. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_subagent.py +0 -0
  992. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/mcp/tools/test_unstuck_bridge_aware.py +0 -0
  993. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/observability/__init__.py +0 -0
  994. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/observability/test_drift.py +0 -0
  995. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/observability/test_logging.py +0 -0
  996. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/observability/test_retrospective.py +0 -0
  997. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/__init__.py +0 -0
  998. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_adapter.py +0 -0
  999. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_agent_process.py +0 -0
  1000. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_agent_runtime_context.py +0 -0
  1001. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_baseline_metrics.py +0 -0
  1002. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_baseline_metrics_capture.py +0 -0
  1003. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_baseline_metrics_format.py +0 -0
  1004. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_capabilities.py +0 -0
  1005. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_codex_cli_runtime.py +0 -0
  1006. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_codex_recursion_guard.py +0 -0
  1007. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_command_dispatcher.py +0 -0
  1008. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_context_governor.py +0 -0
  1009. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_control_bus.py +0 -0
  1010. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_control_plane.py +0 -0
  1011. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_coordinator.py +0 -0
  1012. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_copilot_cli_runtime.py +0 -0
  1013. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_decomposition_params.py +0 -0
  1014. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_dependency_analyzer.py +0 -0
  1015. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_events.py +0 -0
  1016. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_evidence_schema.py +0 -0
  1017. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_execution_runtime_scope.py +0 -0
  1018. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_execution_strategy.py +0 -0
  1019. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_failure_taxonomy.py +0 -0
  1020. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_goose_runtime.py +0 -0
  1021. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_hermes_runtime.py +0 -0
  1022. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_inflight_cancellation.py +0 -0
  1023. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_level_context.py +0 -0
  1024. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_mcp_config.py +0 -0
  1025. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_mcp_tools.py +0 -0
  1026. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_opencode_runtime.py +0 -0
  1027. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_parallel_executor.py +0 -0
  1028. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_parallel_executor_atomic_judgment.py +0 -0
  1029. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_parallel_executor_recursive_depth.py +0 -0
  1030. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_parallel_executor_retry_resume.py +0 -0
  1031. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_phase_wrappers.py +0 -0
  1032. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_policy.py +0 -0
  1033. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_profile_loader.py +0 -0
  1034. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_profile_strategy.py +0 -0
  1035. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_rate_limit.py +0 -0
  1036. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_rfc_v2_integration.py +0 -0
  1037. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_routing.py +0 -0
  1038. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_runner.py +0 -0
  1039. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_runner_allowed_tools_wiring.py +0 -0
  1040. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_runner_cancellation.py +0 -0
  1041. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_runtime_evidence.py +0 -0
  1042. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_runtime_factory.py +0 -0
  1043. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_runtime_message_projection.py +0 -0
  1044. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_sandbox_class.py +0 -0
  1045. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_seed_prompt.py +0 -0
  1046. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_session.py +0 -0
  1047. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_stage_resolution.py +0 -0
  1048. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_traceguard_benchmark_capture.py +0 -0
  1049. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_verifier.py +0 -0
  1050. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_workflow_ir.py +0 -0
  1051. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_workflow_ir_adapter.py +0 -0
  1052. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_workflow_ir_plugin_adapter.py +0 -0
  1053. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_workflow_lifecycle.py +0 -0
  1054. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_workflow_lifecycle_conformance.py +0 -0
  1055. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_workflow_lifecycle_events.py +0 -0
  1056. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_workflow_projection_boundary.py +0 -0
  1057. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/test_workflow_state.py +0 -0
  1058. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/orchestrator/workflow_ir_conformance_fixtures.py +0 -0
  1059. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/persistence/__init__.py +0 -0
  1060. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/persistence/test_brownfield_store.py +0 -0
  1061. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/persistence/test_checkpoint.py +0 -0
  1062. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/persistence/test_event_store.py +0 -0
  1063. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/persistence/test_schema.py +0 -0
  1064. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/persistence/test_uow.py +0 -0
  1065. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/plugin/__init__.py +0 -0
  1066. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/plugin/agents/__init__.py +0 -0
  1067. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/plugin/agents/test_registry.py +0 -0
  1068. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/plugin/orchestration/__init__.py +0 -0
  1069. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/plugin/orchestration/test_model_router.py +0 -0
  1070. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/plugin/skills/__init__.py +0 -0
  1071. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/plugin/skills/test_keywords.py +0 -0
  1072. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/plugin/skills/test_registry.py +0 -0
  1073. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/plugin/test_digest.py +0 -0
  1074. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/plugin/test_firewall.py +0 -0
  1075. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/plugin/test_hook_permission_scopes.py +0 -0
  1076. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/plugin/test_hooks_contract.py +0 -0
  1077. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/plugin/test_ledger_adapter.py +0 -0
  1078. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/plugin/test_lifecycle_observability.py +0 -0
  1079. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/plugin/test_lockfile.py +0 -0
  1080. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/plugin/test_manifest.py +0 -0
  1081. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/plugin/test_manifest_descriptor.py +0 -0
  1082. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/plugin/test_manifest_hook_validation.py +0 -0
  1083. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/plugin/test_manifest_schema_0_3.py +0 -0
  1084. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/plugin/test_manifest_schema_0_4.py +0 -0
  1085. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/plugin/test_trust_store.py +0 -0
  1086. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/plugin/test_userlevel_registry.py +0 -0
  1087. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/pm/__init__.py +0 -0
  1088. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/pm/test_renderer.py +0 -0
  1089. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/providers/__init__.py +0 -0
  1090. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/providers/test_anthropic_adapter_io_recorder.py +0 -0
  1091. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/providers/test_base.py +0 -0
  1092. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/providers/test_claude_code_adapter.py +0 -0
  1093. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/providers/test_codex_cli_adapter.py +0 -0
  1094. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/providers/test_copilot_cli_adapter.py +0 -0
  1095. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/providers/test_factory.py +0 -0
  1096. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/providers/test_factory_copilot.py +0 -0
  1097. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/providers/test_gemini_cli_adapter.py +0 -0
  1098. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/providers/test_goose_cli_adapter.py +0 -0
  1099. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/providers/test_hermes_cli_adapter.py +0 -0
  1100. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/providers/test_litellm_adapter.py +0 -0
  1101. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/providers/test_litellm_adapter_io_recorder.py +0 -0
  1102. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/providers/test_opencode_adapter.py +0 -0
  1103. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/providers/test_profiles.py +0 -0
  1104. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/providers/test_public_exports.py +0 -0
  1105. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/providers/test_tool_use_diagnostics.py +0 -0
  1106. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/resilience/__init__.py +0 -0
  1107. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/resilience/test_lateral.py +0 -0
  1108. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/resilience/test_recovery.py +0 -0
  1109. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/resilience/test_stagnation.py +0 -0
  1110. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/router/__init__.py +0 -0
  1111. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/router/test_command_parser.py +0 -0
  1112. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/router/test_dispatch.py +0 -0
  1113. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/router/test_dispatch_result_shapes.py +0 -0
  1114. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/router/test_extract_first_argument.py +0 -0
  1115. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/router/test_invalid_dispatch_input_types.py +0 -0
  1116. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/router/test_malformed_unknown_dispatch_errors.py +0 -0
  1117. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/router/test_not_handled_resolution.py +0 -0
  1118. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/router/test_packaged_auto_dispatch.py +0 -0
  1119. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/router/test_registry.py +0 -0
  1120. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/router/test_repository_dispatch_guard.py +0 -0
  1121. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/router/test_router_resolution_pipeline.py +0 -0
  1122. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/router/test_typed_frontmatter_fields.py +0 -0
  1123. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/router/test_valid_dispatch_normalization.py +0 -0
  1124. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/routing/__init__.py +0 -0
  1125. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/routing/test_complexity.py +0 -0
  1126. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/routing/test_downgrade.py +0 -0
  1127. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/routing/test_escalation.py +0 -0
  1128. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/routing/test_router.py +0 -0
  1129. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/routing/test_tiers.py +0 -0
  1130. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/runtime/__init__.py +0 -0
  1131. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/runtime/test_controls.py +0 -0
  1132. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/runtime/test_watchdog.py +0 -0
  1133. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/scripts/__init__.py +0 -0
  1134. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/scripts/test_check_auto_boundary.py +0 -0
  1135. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/scripts/test_check_auto_perf_budget.py +0 -0
  1136. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/scripts/test_check_max_turns_envelope.py +0 -0
  1137. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/scripts/test_claude_hook_settings.py +0 -0
  1138. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/scripts/test_hook_script_stdio.py +0 -0
  1139. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/scripts/test_keyword_detector.py +0 -0
  1140. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/scripts/test_ralph_shell_project_dir.py +0 -0
  1141. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/scripts/test_session_start.py +0 -0
  1142. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/scripts/test_sync_plugin_version.py +0 -0
  1143. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/scripts/test_version_check.py +0 -0
  1144. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/secondary/__init__.py +0 -0
  1145. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/secondary/test_scheduler.py +0 -0
  1146. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/secondary/test_todo_registry.py +0 -0
  1147. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/skills/test_skill_artifacts.py +0 -0
  1148. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/test_artifact_collector.py +0 -0
  1149. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/test_claude_plugin_skill_guide.py +0 -0
  1150. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/test_codex_artifacts.py +0 -0
  1151. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/test_convergence.py +0 -0
  1152. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/test_dashboard.py +0 -0
  1153. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/test_detached_auto_docs.py +0 -0
  1154. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/test_evolve_rewind.py +0 -0
  1155. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/test_evolve_step.py +0 -0
  1156. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/test_graceful_shutdown.py +0 -0
  1157. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/test_kiro_adapters.py +0 -0
  1158. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/test_lineage.py +0 -0
  1159. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/test_main_entry_point.py +0 -0
  1160. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/test_module_structure.py +0 -0
  1161. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/test_project_initialization.py +0 -0
  1162. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/test_projector_directives.py +0 -0
  1163. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/test_projector_rewind.py +0 -0
  1164. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/test_ralph_loop_budget.py +0 -0
  1165. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/test_ralph_loop_progress.py +0 -0
  1166. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/test_ralph_loop_timeout.py +0 -0
  1167. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/test_ralph_parser.py +0 -0
  1168. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/test_ralph_rewind.py +0 -0
  1169. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/test_ralph_shell.py +0 -0
  1170. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/test_regression.py +0 -0
  1171. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/test_runtime_skill_capability_docs.py +0 -0
  1172. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/test_tooling_configuration.py +0 -0
  1173. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/test_verification.py +0 -0
  1174. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/tui/__init__.py +0 -0
  1175. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/tui/test_app.py +0 -0
  1176. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/tui/test_cancelled_display.py +0 -0
  1177. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/tui/test_events.py +0 -0
  1178. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/tui/test_lineage_viewer.py +0 -0
  1179. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/tui/test_screens.py +0 -0
  1180. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/tui/test_session_selector_replay.py +0 -0
  1181. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tests/unit/tui/test_widgets.py +0 -0
  1182. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/tools/sync_github_project.py +0 -0
  1183. {ouroboros_ai-0.40.2.dev18 → ouroboros_ai-0.40.2.dev20}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ouroboros-ai
3
- Version: 0.40.2.dev18
3
+ Version: 0.40.2.dev20
4
4
  Summary: Specification-first workflow engine for AI coding agents. Works with Claude Code and Codex CLI.
5
5
  Author-email: Q00 <jqyu.lee@gmail.com>
6
6
  License-File: LICENSE
@@ -73,7 +73,7 @@ Description-Content-Type: text/markdown
73
73
  <a href="#from-wonder-to-ontology">Philosophy</a>
74
74
  </p>
75
75
 
76
- **Turn a vague idea into a verified, working codebase -- across Claude Code, Codex CLI, OpenCode, and Hermes.**
76
+ **Turn a vague idea into a verified, working codebase -- across Claude Code, Codex CLI, OpenCode, Hermes, Gemini, Kiro, Copilot, and Pi.**
77
77
 
78
78
  Ouroboros is an **Agent OS** for AI coding: a local-first runtime layer that
79
79
  turns non-deterministic agent work into a replayable, observable, policy-bound
@@ -149,7 +149,7 @@ curl -fsSL https://raw.githubusercontent.com/Q00/ouroboros/main/scripts/install.
149
149
  > ooo interview "I want to build a task management CLI"
150
150
  ```
151
151
 
152
- > Works with Claude Code, Codex CLI, GitHub Copilot CLI, OpenCode, Hermes, Gemini, and Kiro CLI. The installer detects Claude Code, Codex CLI, and Hermes CLI automatically and registers the MCP server. For OpenCode, Kiro, or GitHub Copilot CLI, run `ouroboros setup --runtime <opencode|kiro|copilot>` after installation. The Copilot CLI runtime live-discovers its model catalog via the GitHub Copilot models API and lets you pick a default during setup.
152
+ > Works with Claude Code, Codex CLI, GitHub Copilot CLI, OpenCode, Hermes, Gemini, Kiro CLI, and Pi CLI. The installer detects Claude Code, Codex CLI, and Hermes CLI automatically and registers the MCP server where the host supports it. For OpenCode, Kiro, GitHub Copilot CLI, Gemini CLI, or Pi CLI, run `ouroboros setup --runtime <opencode|kiro|copilot|gemini|pi>` after installation. The Copilot CLI runtime live-discovers its model catalog via the GitHub Copilot models API and lets you pick a default during setup.
153
153
 
154
154
  <details>
155
155
  <summary><strong>Kiro CLI quick start</strong></summary>
@@ -206,7 +206,7 @@ ouroboros setup # configure runtime
206
206
 
207
207
  Legacy compatibility: `ouroboros-ai[dashboard]` is still accepted as a compatibility alias/no-op; it does not install dashboard runtime payload. `ouroboros-ai[all]` includes that no-op alias only for compatibility.
208
208
 
209
- See runtime guides: [Claude Code](./docs/runtime-guides/claude-code.md) · [Codex CLI](./docs/runtime-guides/codex.md) · [Hermes](./docs/runtime-guides/hermes.md) · [OpenCode](./docs/runtime-guides/opencode.md) · [Kiro CLI](./docs/runtime-guides/kiro.md) · [Gemini CLI](./docs/runtime-guides/gemini.md) · [GitHub Copilot CLI](./docs/runtime-guides/copilot.md)
209
+ See runtime guides: [Claude Code](./docs/runtime-guides/claude-code.md) · [Codex CLI](./docs/runtime-guides/codex.md) · [Hermes](./docs/runtime-guides/hermes.md) · [OpenCode](./docs/runtime-guides/opencode.md) · [Kiro CLI](./docs/runtime-guides/kiro.md) · [Gemini CLI](./docs/runtime-guides/gemini.md) · [GitHub Copilot CLI](./docs/runtime-guides/copilot.md) · [Pi JSON mode](https://pi.dev/docs/latest/json)
210
210
 
211
211
  </details>
212
212
 
@@ -372,7 +372,7 @@ src/ouroboros/
372
372
  +-- resilience/ 4-pattern stagnation detection, 5 lateral personas
373
373
  +-- observability/ 3-component drift measurement, auto-retrospective
374
374
  +-- persistence/ Event sourcing (SQLAlchemy + aiosqlite), checkpoints
375
- +-- orchestrator/ Runtime abstraction layer (Claude Code, Codex CLI, OpenCode, Hermes)
375
+ +-- orchestrator/ Runtime abstraction layer (Claude Code, Codex CLI, OpenCode, Hermes, Gemini, Kiro, Copilot, Pi)
376
376
  +-- core/ Types, errors, seed, ontology, security
377
377
  +-- providers/ LiteLLM adapter (100+ models)
378
378
  +-- mcp/ MCP client/server integration
@@ -388,7 +388,7 @@ src/ouroboros/
388
388
  - **Evolution** -- Up to 30 generations, convergence at ontology similarity >= 0.95
389
389
  - **Stagnation** -- Detects spinning, oscillation, no-drift, and diminishing returns patterns
390
390
  - **Agent OS runtime** -- Replayable execution contract across capability discovery, policy, directives, event journal, and agent processes
391
- - **Runtime backends** -- Pluggable abstraction layer (`orchestrator.runtime_backend` config) with first-class support for Claude Code, Codex CLI, OpenCode, and Hermes; same workflow spec, different execution engines
391
+ - **Runtime backends** -- Pluggable abstraction layer (`orchestrator.runtime_backend` config) with first-class support for Claude Code, Codex CLI, OpenCode, Hermes, Gemini, Goose, Kiro, Copilot, and Pi; same workflow spec, different execution engines
392
392
 
393
393
  See [Architecture](./docs/architecture.md) for the full design document.
394
394
 
@@ -36,7 +36,7 @@
36
36
  <a href="#from-wonder-to-ontology">Philosophy</a>
37
37
  </p>
38
38
 
39
- **Turn a vague idea into a verified, working codebase -- across Claude Code, Codex CLI, OpenCode, and Hermes.**
39
+ **Turn a vague idea into a verified, working codebase -- across Claude Code, Codex CLI, OpenCode, Hermes, Gemini, Kiro, Copilot, and Pi.**
40
40
 
41
41
  Ouroboros is an **Agent OS** for AI coding: a local-first runtime layer that
42
42
  turns non-deterministic agent work into a replayable, observable, policy-bound
@@ -112,7 +112,7 @@ curl -fsSL https://raw.githubusercontent.com/Q00/ouroboros/main/scripts/install.
112
112
  > ooo interview "I want to build a task management CLI"
113
113
  ```
114
114
 
115
- > Works with Claude Code, Codex CLI, GitHub Copilot CLI, OpenCode, Hermes, Gemini, and Kiro CLI. The installer detects Claude Code, Codex CLI, and Hermes CLI automatically and registers the MCP server. For OpenCode, Kiro, or GitHub Copilot CLI, run `ouroboros setup --runtime <opencode|kiro|copilot>` after installation. The Copilot CLI runtime live-discovers its model catalog via the GitHub Copilot models API and lets you pick a default during setup.
115
+ > Works with Claude Code, Codex CLI, GitHub Copilot CLI, OpenCode, Hermes, Gemini, Kiro CLI, and Pi CLI. The installer detects Claude Code, Codex CLI, and Hermes CLI automatically and registers the MCP server where the host supports it. For OpenCode, Kiro, GitHub Copilot CLI, Gemini CLI, or Pi CLI, run `ouroboros setup --runtime <opencode|kiro|copilot|gemini|pi>` after installation. The Copilot CLI runtime live-discovers its model catalog via the GitHub Copilot models API and lets you pick a default during setup.
116
116
 
117
117
  <details>
118
118
  <summary><strong>Kiro CLI quick start</strong></summary>
@@ -169,7 +169,7 @@ ouroboros setup # configure runtime
169
169
 
170
170
  Legacy compatibility: `ouroboros-ai[dashboard]` is still accepted as a compatibility alias/no-op; it does not install dashboard runtime payload. `ouroboros-ai[all]` includes that no-op alias only for compatibility.
171
171
 
172
- See runtime guides: [Claude Code](./docs/runtime-guides/claude-code.md) · [Codex CLI](./docs/runtime-guides/codex.md) · [Hermes](./docs/runtime-guides/hermes.md) · [OpenCode](./docs/runtime-guides/opencode.md) · [Kiro CLI](./docs/runtime-guides/kiro.md) · [Gemini CLI](./docs/runtime-guides/gemini.md) · [GitHub Copilot CLI](./docs/runtime-guides/copilot.md)
172
+ See runtime guides: [Claude Code](./docs/runtime-guides/claude-code.md) · [Codex CLI](./docs/runtime-guides/codex.md) · [Hermes](./docs/runtime-guides/hermes.md) · [OpenCode](./docs/runtime-guides/opencode.md) · [Kiro CLI](./docs/runtime-guides/kiro.md) · [Gemini CLI](./docs/runtime-guides/gemini.md) · [GitHub Copilot CLI](./docs/runtime-guides/copilot.md) · [Pi JSON mode](https://pi.dev/docs/latest/json)
173
173
 
174
174
  </details>
175
175
 
@@ -335,7 +335,7 @@ src/ouroboros/
335
335
  +-- resilience/ 4-pattern stagnation detection, 5 lateral personas
336
336
  +-- observability/ 3-component drift measurement, auto-retrospective
337
337
  +-- persistence/ Event sourcing (SQLAlchemy + aiosqlite), checkpoints
338
- +-- orchestrator/ Runtime abstraction layer (Claude Code, Codex CLI, OpenCode, Hermes)
338
+ +-- orchestrator/ Runtime abstraction layer (Claude Code, Codex CLI, OpenCode, Hermes, Gemini, Kiro, Copilot, Pi)
339
339
  +-- core/ Types, errors, seed, ontology, security
340
340
  +-- providers/ LiteLLM adapter (100+ models)
341
341
  +-- mcp/ MCP client/server integration
@@ -351,7 +351,7 @@ src/ouroboros/
351
351
  - **Evolution** -- Up to 30 generations, convergence at ontology similarity >= 0.95
352
352
  - **Stagnation** -- Detects spinning, oscillation, no-drift, and diminishing returns patterns
353
353
  - **Agent OS runtime** -- Replayable execution contract across capability discovery, policy, directives, event journal, and agent processes
354
- - **Runtime backends** -- Pluggable abstraction layer (`orchestrator.runtime_backend` config) with first-class support for Claude Code, Codex CLI, OpenCode, and Hermes; same workflow spec, different execution engines
354
+ - **Runtime backends** -- Pluggable abstraction layer (`orchestrator.runtime_backend` config) with first-class support for Claude Code, Codex CLI, OpenCode, Hermes, Gemini, Goose, Kiro, Copilot, and Pi; same workflow spec, different execution engines
355
355
 
356
356
  See [Architecture](./docs/architecture.md) for the full design document.
357
357
 
@@ -550,7 +550,7 @@ The orchestrator never inspects backend-specific internals — each adapter maps
550
550
  - **`KiroAdapter`** (`backend="kiro"`) — Drives the Kiro CLI in headless mode. Module: `src/ouroboros/orchestrator/kiro_adapter.py`
551
551
  - **`CopilotCliLLMAdapter`** (`backend="copilot"`) — Drives the GitHub Copilot CLI via `copilot -p`, with live model discovery (queries `https://api.githubcopilot.com/models` at setup) and automatic hyphen-to-dotted model name mapping for cross-runtime config compatibility. Module: `src/ouroboros/providers/copilot_cli_adapter.py`
552
552
  - **`PiRuntime`** (`backend="pi"`) — Drives the Pi CLI in documented JSON mode with skill dispatch, session resumption, and JSONL event normalization. Module: `src/ouroboros/orchestrator/pi_runtime.py`
553
- - **`PiLLMAdapter`** (`backend="pi"`) — Exposes the Pi CLI for unstructured LLM-only flows such as interview and seed generation. Module: `src/ouroboros/providers/pi_llm_adapter.py`
553
+ - **`PiLLMAdapter`** (`backend="pi"`) — Exposes the Pi CLI for LLM-only flows such as interview, ambiguity scoring, seed extraction, and structured JSON responses. Structured `response_format` calls are soft-enforced with prompt instructions plus adapter-side extraction/validation because Pi has no native `--output-schema` flag. Module: `src/ouroboros/providers/pi_llm_adapter.py`
554
554
 
555
555
  > Each runtime has different tool sets, permission models, and streaming semantics. Ouroboros normalizes these differences at the adapter boundary, but feature parity is not guaranteed across runtimes.
556
556
 
@@ -607,4 +607,4 @@ For environment variables, `config.yaml` schema, and all configuration options,
607
607
  ---
608
608
 
609
609
  > For install instructions and first-run onboarding, see **[Getting Started](getting-started.md)**.
610
- > For backend-specific configuration, see the [Claude Code](runtime-guides/claude-code.md), [Codex CLI](runtime-guides/codex.md), [OpenCode](runtime-guides/opencode.md), [Hermes](runtime-guides/hermes.md), [Gemini](runtime-guides/gemini.md), [Kiro CLI](runtime-guides/kiro.md), and [GitHub Copilot CLI](runtime-guides/copilot.md) runtime guides. For Pi's JSON-mode contract, see the [Pi JSON mode documentation](https://pi.dev/docs/latest/json).
610
+ > For backend-specific configuration, see the [Claude Code](runtime-guides/claude-code.md), [Codex CLI](runtime-guides/codex.md), [OpenCode](runtime-guides/opencode.md), [Hermes](runtime-guides/hermes.md), [Gemini](runtime-guides/gemini.md), [Kiro CLI](runtime-guides/kiro.md), [GitHub Copilot CLI](runtime-guides/copilot.md), and [Pi CLI](runtime-guides/pi.md) references.
@@ -67,7 +67,7 @@ ouroboros auto "Build a local-first habit tracker CLI"
67
67
  | Option | Description |
68
68
  |--------|-------------|
69
69
  | `--resume TEXT` | Resume an existing auto session id |
70
- | `--runtime TEXT` | Runtime backend for the **run-handoff** phase. Shipped values: `claude`, `codex`, `opencode`, `hermes`, `gemini`, `kiro`, `copilot`. Authoring phases (interview, seed generation, seed repair) **always run in-process** inside the Ouroboros MCP server in `ooo auto` flow — see [What `--runtime` controls in `ooo auto`](#what---runtime-controls-in-ooo-auto) below. |
70
+ | `--runtime TEXT` | Runtime backend for the **run-handoff** phase. Shipped values: `claude`, `codex`, `opencode`, `hermes`, `gemini`, `goose`, `kiro`, `copilot`, `pi`. Authoring phases (interview, seed generation, seed repair) **always run in-process** inside the Ouroboros MCP server in `ooo auto` flow — see [What `--runtime` controls in `ooo auto`](#what---runtime-controls-in-ooo-auto) below. |
71
71
  | `--max-interview-rounds INTEGER` | Maximum automatic interview rounds; prevents unbounded interview loops |
72
72
  | `--max-repair-rounds INTEGER` | Maximum Seed repair rounds; prevents unbounded repair loops |
73
73
  | `--skip-run` | Stop after creating an A-grade Seed |
@@ -226,7 +226,7 @@ truth table describes the gate function alone, not the auto flow:
226
226
  Detect available runtime backends and configure Ouroboros for your environment.
227
227
 
228
228
  Ouroboros supports multiple runtime backends via a pluggable `AgentRuntime` protocol. The `setup` command auto-detects
229
- which runtimes are available in your PATH (currently: Claude Code, Codex CLI, OpenCode) and
229
+ which runtimes are available in your PATH (including Claude Code, Codex CLI, OpenCode, Hermes, Gemini, Kiro, Copilot, Goose, and Pi) and
230
230
  configures `orchestrator.runtime_backend` accordingly. Additional runtimes can be registered
231
231
  by implementing the protocol — see [Architecture](architecture.md#how-to-add-a-new-runtime-adapter).
232
232
 
@@ -238,11 +238,15 @@ ouroboros setup [OPTIONS]
238
238
 
239
239
  | Option | Description |
240
240
  |--------|-------------|
241
- | `-r, --runtime TEXT` | Runtime backend to configure. Shipped values: `claude`, `codex`, `opencode`, `hermes`, `gemini`, `kiro`. Auto-detected if omitted |
241
+ | `-r, --runtime TEXT` | Runtime backend to configure. Shipped values: `claude`, `codex`, `opencode`, `hermes`, `gemini`, `goose`, `kiro`, `copilot`, `pi`. Auto-detected if omitted |
242
242
  | `--opencode-mode TEXT` | OpenCode integration mode: `plugin` (default, recommended — bridge plugin for interactive sessions) or `subprocess` (headless/CI). Mutually exclusive — see [OpenCode runtime guide](runtime-guides/opencode.md#configuration) |
243
243
  | `--non-interactive` | Skip interactive prompts (for scripted installs) |
244
244
  | `--mcp-mode TEXT` | Codex MCP config mode: `auto` (default), `preserve`, or `stdio` |
245
245
 
246
+ For Pi, setup also installs `~/.pi/agent/extensions/ouroboros-ooo-bridge.ts`.
247
+ Restart Pi or run `/reload` and interactive Pi/roach-pi sessions can dispatch
248
+ `ooo ...` commands into Ouroboros through the shared skill router.
249
+
246
250
  **Examples:**
247
251
 
248
252
  ```bash
@@ -323,8 +327,8 @@ ouroboros init [start] [OPTIONS] [CONTEXT]
323
327
  | `-r, --resume TEXT` | Resume an existing interview by ID |
324
328
  | `--state-dir DIRECTORY` | Custom directory for interview state files |
325
329
  | `-o, --orchestrator` | Use Claude Code for the interview/seed flow; combine with `--runtime` to choose the workflow handoff backend |
326
- | `--runtime TEXT` | Agent runtime backend for the workflow execution step after seed generation. Shipped values: `claude`, `codex`, `opencode`, `hermes`, `gemini`, `kiro`. Custom adapters registered in `runtime_factory.py` are also accepted. |
327
- | `--llm-backend TEXT` | LLM backend for interview, ambiguity scoring, and seed generation (`claude_code`, `litellm`, `codex`, `opencode`, `kiro`) |
330
+ | `--runtime TEXT` | Agent runtime backend for the workflow execution step after seed generation. Shipped values: `claude`, `codex`, `opencode`, `hermes`, `gemini`, `goose`, `kiro`, `copilot`, `pi`. Custom adapters registered in `runtime_factory.py` are also accepted. |
331
+ | `--llm-backend TEXT` | LLM backend for interview, ambiguity scoring, and seed generation (`claude_code`, `litellm`, `codex`, `copilot`, `opencode`, `gemini`, `goose`, `kiro`, `pi`) |
328
332
  | `-d, --debug` | Show verbose logs including debug messages |
329
333
 
330
334
  **Examples:**
@@ -396,7 +400,7 @@ ouroboros run [workflow] [OPTIONS] SEED_FILE
396
400
  | Option | Description |
397
401
  |--------|-------------|
398
402
  | `-o/-O, --orchestrator/--no-orchestrator` | Use the agent-runtime orchestrator for execution (default: enabled) |
399
- | `--runtime TEXT` | Agent runtime backend override (`claude`, `codex`, `opencode`, `hermes`, `gemini`, `kiro`). Uses configured default if omitted |
403
+ | `--runtime TEXT` | Agent runtime backend override (`claude`, `codex`, `opencode`, `hermes`, `gemini`, `copilot`, `goose`, `kiro`, `pi`). Uses configured default if omitted |
400
404
  | `-r, --resume TEXT` | Resume a previous orchestrator session by ID |
401
405
  | `--mcp-config PATH` | Path to MCP client configuration YAML file |
402
406
  | `--mcp-tool-prefix TEXT` | Prefix to add to all MCP tool names (e.g., `mcp_`) |
@@ -925,8 +929,8 @@ ouroboros mcp serve [OPTIONS]
925
929
  | `-p, --port INTEGER` | Port to bind to (default: 8080) |
926
930
  | `-t, --transport TEXT` | Transport type: `stdio`, `sse`, or `streamable-http` (default: stdio). Note: `http` is only a client config alias for outbound MCP connections and is NOT a valid serve transport. |
927
931
  | `--db TEXT` | Path to the EventStore database file |
928
- | `--runtime TEXT` | Agent runtime backend for orchestrator-driven tools (`claude`, `codex`, `opencode`, `hermes`, `gemini`, `kiro`). Affects which tool variants are instantiated |
929
- | `--llm-backend TEXT` | LLM backend for interview/seed/evaluation tools (`claude_code`, `litellm`, `codex`, `opencode`, `gemini`, `kiro`). Affects which tool variants are instantiated |
932
+ | `--runtime TEXT` | Agent runtime backend for orchestrator-driven tools (`claude`, `codex`, `opencode`, `hermes`, `gemini`, `copilot`, `goose`, `kiro`, `pi`). Affects which tool variants are instantiated |
933
+ | `--llm-backend TEXT` | LLM backend for interview/seed/evaluation tools (`claude_code`, `litellm`, `codex`, `copilot`, `opencode`, `gemini`, `goose`, `kiro`, `pi`). Affects which tool variants are instantiated |
930
934
 
931
935
  **Examples:**
932
936
 
@@ -990,7 +994,7 @@ If Ouroboros is installed directly (not via `uvx`), use:
990
994
 
991
995
  ```yaml
992
996
  orchestrator:
993
- runtime_backend: claude # or "codex", "opencode", "hermes", "gemini", or "kiro"
997
+ runtime_backend: claude # or "codex", "opencode", "hermes", "gemini", "copilot", "goose", "kiro", or "pi"
994
998
  ```
995
999
 
996
1000
  Override per-session with the `OUROBOROS_AGENT_RUNTIME` environment variable if needed.
@@ -1007,8 +1011,8 @@ ouroboros mcp info [OPTIONS]
1007
1011
 
1008
1012
  | Option | Description |
1009
1013
  |--------|-------------|
1010
- | `--runtime TEXT` | Agent runtime backend for orchestrator-driven tools (`claude`, `codex`, `opencode`, `hermes`, `gemini`, `kiro`). Affects which tool variants are instantiated |
1011
- | `--llm-backend TEXT` | LLM backend for interview/seed/evaluation tools (`claude_code`, `litellm`, `codex`, `opencode`, `gemini`, `kiro`). Affects which tool variants are instantiated |
1014
+ | `--runtime TEXT` | Agent runtime backend for orchestrator-driven tools (`claude`, `codex`, `opencode`, `hermes`, `gemini`, `copilot`, `goose`, `kiro`, `pi`). Affects which tool variants are instantiated |
1015
+ | `--llm-backend TEXT` | LLM backend for interview/seed/evaluation tools (`claude_code`, `litellm`, `codex`, `copilot`, `opencode`, `gemini`, `goose`, `kiro`, `pi`). Affects which tool variants are instantiated |
1012
1016
 
1013
1017
  **Available Tools:**
1014
1018
 
@@ -1023,7 +1027,7 @@ ouroboros mcp info [OPTIONS]
1023
1027
  ## Typical Workflows
1024
1028
 
1025
1029
  > For first-time setup and the complete onboarding flow, see **[Getting Started](getting-started.md)**.
1026
- > For runtime-specific configuration, see the [Claude Code](runtime-guides/claude-code.md), [Codex CLI](runtime-guides/codex.md), and [OpenCode](runtime-guides/opencode.md) runtime guides.
1030
+ > For runtime-specific configuration, see the [Claude Code](runtime-guides/claude-code.md), [Codex CLI](runtime-guides/codex.md), [OpenCode](runtime-guides/opencode.md), [Hermes](runtime-guides/hermes.md), [Gemini](runtime-guides/gemini.md), [Kiro CLI](runtime-guides/kiro.md), [GitHub Copilot CLI](runtime-guides/copilot.md), and [Pi CLI](runtime-guides/pi.md) references.
1027
1031
 
1028
1032
  ### Cancelling Stuck Executions
1029
1033
 
@@ -1046,7 +1050,7 @@ The table below covers the most commonly used variables. For the full list — i
1046
1050
  | `ANTHROPIC_API_KEY` | — | Anthropic API key for Claude models |
1047
1051
  | `OPENAI_API_KEY` | — | OpenAI API key for LiteLLM / Codex CLI |
1048
1052
  | `OPENROUTER_API_KEY` | — | OpenRouter API key for consensus and LiteLLM |
1049
- | `OUROBOROS_AGENT_RUNTIME` | `orchestrator.runtime_backend` | Override the runtime backend (`claude`, `codex`, `opencode`, `hermes`, `gemini`, `kiro`) |
1053
+ | `OUROBOROS_AGENT_RUNTIME` | `orchestrator.runtime_backend` | Override the runtime backend (`claude`, `codex`, `opencode`, `hermes`, `gemini`, `goose`, `kiro`, `copilot`, `pi`) |
1050
1054
  | `OUROBOROS_RUNTIME` | `orchestrator.runtime_backend` (fallback) | Shortcut env var honored by both `orchestrator.runtime_backend` and `llm.backend` resolution when their dedicated env vars are unset |
1051
1055
  | `OUROBOROS_KIRO_CLI_PATH` | `orchestrator.kiro_cli_path` | Explicit path to `kiro-cli` binary when it is not on `PATH` |
1052
1056
  | `OUROBOROS_AGENT_PERMISSION_MODE` | `orchestrator.permission_mode` | Permission mode for Claude Code / Codex runtimes (no-op for OpenCode) |
@@ -766,7 +766,7 @@ llm:
766
766
  backend: pi
767
767
  ```
768
768
 
769
- Pi is available as an agent runtime backend and, when the Pi LLM adapter is installed, an LLM-only backend for unstructured interview and seed-generation flows. The Pi LLM adapter rejects structured `response_format` requests, so schema-dependent flows such as QA should continue to use a backend with structured output support. The runtime uses documented JSON mode (`pi --mode json <prompt>`) and preserves Pi native session IDs for targeted resume.
769
+ Pi is available as an agent runtime backend and, when the Pi LLM adapter is installed, an LLM-only backend for interview, ambiguity scoring, seed-extraction, and structured JSON flows. `ouroboros setup --runtime pi` records the Pi executable and installs a managed Pi extension at `~/.pi/agent/extensions/ouroboros-ooo-bridge.ts`, so interactive Pi/roach-pi sessions can route exact-prefix `ooo ...` input back into Ouroboros after Pi restart or `/reload`. The Pi LLM adapter supports structured `response_format` requests through prompt-level JSON/schema instructions plus adapter-side extraction and validation; Pi does not expose a Codex-style native `--output-schema` hard-enforcement flag. The runtime uses documented JSON mode (`pi --mode json <prompt>`) and preserves Pi native session IDs for targeted resume.
770
770
 
771
771
  ### Full Config Skeleton
772
772
 
@@ -163,7 +163,7 @@ Use WSL 2 for the supported Windows path, then run the Linux install commands fr
163
163
  | OpenCode backend | Python >= 3.12, `opencode` on PATH, provider configured in OpenCode |
164
164
  | Kiro CLI backend | Python >= 3.12, `kiro-cli` on PATH (signed in to Kiro), `pip install ouroboros-ai[claude]` (shares the Claude extras for the Agent SDK types). Then `ouroboros setup --runtime kiro` to register the Ouroboros MCP server in `~/.kiro/settings/mcp.json` |
165
165
  | GitHub Copilot CLI backend | Python >= 3.12, `copilot` on PATH, `gh` on PATH (`gh auth login`), `pip install 'ouroboros-ai[mcp]'` (or `pipx`/`uv tool` install). Then `ouroboros setup --runtime copilot` to live-discover available models, pick a default, and register the Ouroboros MCP server in `~/.copilot/mcp-config.json` |
166
- | Pi CLI backend | Python >= 3.12, `pi` on PATH or `orchestrator.pi_cli_path` configured. Use `runtime_backend: pi` for workflow execution and `llm.backend: pi` only for unstructured LLM flows such as interview and seed generation |
166
+ | Pi CLI backend | Python >= 3.12, `pi` on PATH or `orchestrator.pi_cli_path` configured. Use `runtime_backend: pi` for workflow execution. Use `llm.backend: pi` only when authoring/evaluation flows can accept Pi's adapter-level JSON extraction and schema validation rather than native `--output-schema` enforcement |
167
167
 
168
168
  ---
169
169
 
@@ -187,10 +187,10 @@ export OPENAI_API_KEY="your-openai-key"
187
187
 
188
188
  ```yaml
189
189
  orchestrator:
190
- runtime_backend: claude # claude | codex | opencode | hermes | gemini | kiro | copilot | pi
190
+ runtime_backend: claude # claude | codex | opencode | hermes | gemini | copilot | goose | kiro | pi
191
191
 
192
192
  llm:
193
- backend: claude_code # claude_code | codex | litellm | kiro | copilot | pi
193
+ backend: claude_code # claude_code | codex | litellm | copilot | opencode | gemini | goose | kiro | pi
194
194
 
195
195
  logging:
196
196
  level: info
@@ -365,6 +365,8 @@ For backend-specific configuration:
365
365
  - [OpenCode runtime guide](runtime-guides/opencode.md)
366
366
  - [Kiro CLI runtime guide](runtime-guides/kiro.md)
367
367
  - [GitHub Copilot CLI runtime guide](runtime-guides/copilot.md)
368
+ - [Pi CLI runtime guide](runtime-guides/pi.md)
369
+ - [Pi JSON mode documentation](https://pi.dev/docs/latest/json)
368
370
 
369
371
  ---
370
372
 
@@ -13,7 +13,7 @@ The runtime backend is selected via the `orchestrator.runtime_backend` config ke
13
13
 
14
14
  ```yaml
15
15
  orchestrator:
16
- runtime_backend: claude # Supported values: claude | codex | opencode | hermes | kiro | copilot | pi
16
+ runtime_backend: claude # Supported values: claude | codex | opencode | hermes | gemini | kiro | copilot | pi
17
17
  # The runtime abstraction layer also accepts custom
18
18
  # adapters registered in runtime_factory.py
19
19
  ```
@@ -26,7 +26,7 @@ ouroboros run workflow --runtime codex seed.yaml
26
26
 
27
27
  You can also override the configured backend with the `OUROBOROS_AGENT_RUNTIME` environment variable.
28
28
 
29
- > **Extensibility:** Ouroboros uses a pluggable `AgentRuntime` protocol. Claude Code, Codex CLI, OpenCode, Hermes, Kiro CLI, GitHub Copilot CLI, and Pi CLI are the natively shipped backends; additional runtimes can be registered by implementing the protocol and extending `runtime_factory.py`. See [Architecture — How to add a new runtime adapter](architecture.md#how-to-add-a-new-runtime-adapter).
29
+ > **Extensibility:** Ouroboros uses a pluggable `AgentRuntime` protocol. Claude Code, Codex CLI, OpenCode, Hermes, Gemini CLI, Kiro CLI, GitHub Copilot CLI, and Pi CLI are the natively shipped backends; additional runtimes can be registered by implementing the protocol and extending `runtime_factory.py`. See [Architecture — How to add a new runtime adapter](architecture.md#how-to-add-a-new-runtime-adapter).
30
30
 
31
31
  ## Capability Matrix
32
32
 
@@ -34,41 +34,41 @@ You can also override the configured backend with the `OUROBOROS_AGENT_RUNTIME`
34
34
 
35
35
  These capabilities are part of the Ouroboros core engine and work the same way regardless of runtime backend.
36
36
 
37
- | Capability | Claude Code | Codex CLI | OpenCode | Hermes | Kiro CLI | Copilot CLI | Pi CLI | Notes |
38
- | ---------------------------------- | :---------: | :-------: | :------: | :----: | :------: | :---------: | :----: | ----------------------------------------------------------- |
39
- | Seed file parsing | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Same YAML schema, same validation |
40
- | Acceptance criteria tree | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Structured AC decomposition |
41
- | Evaluation principles | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Weighted scoring against principles |
42
- | Exit conditions | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Deterministic termination logic |
43
- | Event sourcing (SQLite) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Full event log, replay support |
44
- | Checkpoint / resume | Yes | Yes | Yes | Yes | Partial | No | Yes | `--resume <session_id>` everywhere; Kiro forwards to `--resume-id` **when the caller supplies the id** — headless does not surface session ids, so automatic checkpoint/resume is future work; Copilot CLI does not expose a resume API; Pi resumes with its native `--session` flag |
45
- | TUI dashboard | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Textual-based progress view |
46
- | Interview (Socratic seed creation) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | `ouroboros init start ...` with the appropriate LLM backend |
47
- | Dry-run validation | Yes | Yes | Yes | Yes | Yes | Yes | Yes | `--dry-run` validates without executing |
48
- | Live model discovery | No | No | No | No | No | Yes | No | Only Copilot queries its provider's models API at setup time and lets you pick a default from the live list |
37
+ | Capability | Claude Code | Codex CLI | OpenCode | Hermes | Gemini CLI | Kiro CLI | Copilot CLI | Pi CLI | Notes |
38
+ | ---------------------------------- | :---------: | :-------: | :------: | :----: | :--------: | :------: | :---------: | :----: | ----------------------------------------------------------- |
39
+ | Seed file parsing | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Same YAML schema, same validation |
40
+ | Acceptance criteria tree | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Structured AC decomposition |
41
+ | Evaluation principles | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Weighted scoring against principles |
42
+ | Exit conditions | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Deterministic termination logic |
43
+ | Event sourcing (SQLite) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Full event log, replay support |
44
+ | Checkpoint / resume | Yes | Yes | Yes | Yes | No | Partial | No | Yes | Native resume varies by backend: Claude/Codex/OpenCode/Hermes use `--resume <session_id>`; Gemini and Copilot CLI do not expose native session-resume APIs; Kiro forwards to `--resume-id` **when the caller supplies the id** — headless does not surface session ids, so automatic checkpoint/resume is future work; Pi resumes with its native `--session` flag |
45
+ | TUI dashboard | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Textual-based progress view |
46
+ | Interview (Socratic seed creation) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | `ouroboros init start ...` with the appropriate LLM backend |
47
+ | Dry-run validation | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | `--dry-run` validates without executing |
48
+ | Live model discovery | No | No | No | No | No | No | Yes | No | Only Copilot queries its provider's models API at setup time and lets you pick a default from the live list |
49
49
 
50
50
  ### Runtime Layer (differs by backend)
51
51
 
52
52
  These capabilities depend on the runtime backend's native features and execution model.
53
53
 
54
- | Capability | Claude Code | Codex CLI | OpenCode | Hermes | Kiro CLI | Copilot CLI | Pi CLI | Notes |
55
- | ------------------------- | :---------------------------------: | :-------------------: | :-------------------------------------------------------: | :------------------------------------------------------------------------: | :--------------------------: | :-----------------------------------------------------------------------: | :-----------------------------: | ---------------------------------------------------------------- |
56
- | **Authentication** | Max Plan subscription | OpenAI API key | Provider API keys (configured in OpenCode) | NousResearch (or compatible provider) API key or local model | Kiro AWS sign-in | GitHub Copilot subscription via `gh auth login` | Pi CLI account/session | No API key needed for Claude Code, Kiro, Copilot, or Pi CLI |
57
- | **Underlying model** | Claude (Anthropic) | GPT-5.4+ (OpenAI) | Provider-dependent (OpenCode supports multiple providers) | Provider-dependent (Hermes supports multiple providers) or Any local model | Claude (via AWS) + others | Live-discovered (Claude, GPT-5, etc.; whatever your subscription grants) | Pi-selected or `--model` value | Copilot is the only runtime with a live model picker |
58
- | **Tool surface** | Read, Write, Edit, Bash, Glob, Grep | Codex-native tool set | Read, Write, Edit, Bash, Glob, Grep | Custom skills via MCP + run cmd | Kiro-native tool set | Read, Write, Edit, Bash, Glob, Grep (via `--available-tools` allowlist) | Pi-native tool set | Different tool implementations; same task outcomes |
59
- | **Sandbox / permissions** | Claude Code permission system | Codex sandbox model | OpenCode permission system | Hermes permission system | `--trust-tools` / `--trust-all-tools` | `--add-dir <CWD>` boundary + `--allow-tool` envelope | Pi CLI permission model | Each runtime manages its own safety boundaries |
60
- | **Cost model** | Included in Max Plan | Per-token API charges | Depends on configured provider | Depends on API/Local | Included in Kiro plan | Included in Copilot subscription | Depends on Pi account/provider | See [OpenAI pricing](https://openai.com/pricing) for Codex costs |
61
- | **Declared capabilities** | skill_dispatch, targeted_resume, structured_output | all three | all three | all three | skill_dispatch only; `targeted_resume=False` (headless does not surface session ids), `structured_output=False` (plain-text stdio) | skill_dispatch only; `targeted_resume=False` (no resume API); `structured_output=False` (no `--output-schema`, JSON via prompt directive) | all three | See `RuntimeCapabilities` on the adapter |
54
+ | Capability | Claude Code | Codex CLI | OpenCode | Hermes | Gemini CLI | Kiro CLI | Copilot CLI | Pi CLI | Notes |
55
+ | ------------------------- | :---------------------------------: | :-------------------: | :-------------------------------------------------------: | :------------------------------------------------------------------------: | :------------------------------------------: | :--------------------------: | :-----------------------------------------------------------------------: | :-----------------------------: | ---------------------------------------------------------------- |
56
+ | **Authentication** | Max Plan subscription | OpenAI API key | Provider API keys (configured in OpenCode) | NousResearch (or compatible provider) API key or local model | Google auth (`gemini auth` or `GOOGLE_API_KEY`) | Kiro AWS sign-in | GitHub Copilot subscription via `gh auth login` | Pi provider auth via `/login` or provider API key | No separate Ouroboros API key is needed for Claude Code, Kiro, Copilot, or Pi CLI; Pi still needs its own provider credentials |
57
+ | **Underlying model** | Claude (Anthropic) | GPT-5.4+ (OpenAI) | Provider-dependent (OpenCode supports multiple providers) | Provider-dependent (Hermes supports multiple providers) or Any local model | Gemini-selected or `--model` value | Claude (via AWS) + others | Live-discovered (Claude, GPT-5, etc.; whatever your subscription grants) | Pi-selected or `--model` value | Copilot is the only runtime with a live model picker |
58
+ | **Tool surface** | Read, Write, Edit, Bash, Glob, Grep | Codex-native tool set | Read, Write, Edit, Bash, Glob, Grep | Custom skills via MCP + run cmd | Gemini-managed tool set | Kiro-native tool set | Read, Write, Edit, Bash, Glob, Grep (via `--available-tools` allowlist) | Pi-native tool set | Different tool implementations; same task outcomes |
59
+ | **Sandbox / permissions** | Claude Code permission system | Codex sandbox model | OpenCode permission system | Hermes permission system | `--approval-mode auto_edit` / `yolo` | `--trust-tools` / `--trust-all-tools` | `--add-dir <CWD>` boundary + `--allow-tool` envelope | Pi CLI permission model | Each runtime manages its own safety boundaries |
60
+ | **Cost model** | Included in Max Plan | Per-token API charges | Depends on configured provider | Depends on API/Local | Depends on Google account/API usage | Included in Kiro plan | Included in Copilot subscription | Depends on Pi account/provider | See [OpenAI pricing](https://openai.com/pricing) for Codex costs |
61
+ | **Declared capabilities** | skill_dispatch, targeted_resume, structured_output | all three | all three | all three | skill_dispatch and structured_output; `targeted_resume=False` (no native resume API) | skill_dispatch only; `targeted_resume=False` (headless does not surface session ids), `structured_output=False` (plain-text stdio) | skill_dispatch only; `targeted_resume=False` (no resume API); `structured_output=False` (no `--output-schema`, JSON via prompt directive) | all three | See `RuntimeCapabilities` on the adapter |
62
62
 
63
63
  ### Integration Surface (UX differences)
64
64
 
65
- | Aspect | Claude Code | Codex CLI | OpenCode | Hermes | Kiro CLI | Copilot CLI | Pi CLI |
66
- | --------------------------- | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------- | ------------------------------------------------ | --------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------- |
67
- | **Primary UX** | In-session skills and MCP server | Session-oriented Ouroboros runtime over Codex CLI transport | MCP server integration | In-session skills and MCP server | In-session skills and MCP server (Kiro headless mode) | In-session skills and MCP server (Copilot CLI session) | Pi CLI JSON-mode runtime |
68
- | **Skill shortcuts (`ooo`)** | Yes -- skills loaded into Claude Code session | Yes -- after `ouroboros setup --runtime codex` installs managed skills into `~/.codex/skills/`, rules into `~/.codex/rules/`, and the MCP/env hookup into `~/.codex/config.toml`. Keep role-specific Ouroboros model overrides in `~/.ouroboros/config.yaml` | Yes -- after `ouroboros setup --runtime opencode` | Yes -- after `ouroboros setup --runtime hermes` | Yes -- after `ouroboros setup --runtime kiro` the Ouroboros MCP server is registered in `~/.kiro/settings/mcp.json` with `OUROBOROS_RUNTIME=kiro` / `OUROBOROS_LLM_BACKEND=kiro` baked in | Yes -- after `ouroboros setup --runtime copilot` the MCP server is registered in `~/.copilot/mcp-config.json` with `OUROBOROS_AGENT_RUNTIME=copilot` / `OUROBOROS_LLM_BACKEND=copilot` baked in | Yes -- `SkillInterceptor` routes `ooo <skill>` prefixes before spawning Pi |
69
- | **MCP integration** | Native MCP server support | Deterministic skill/MCP dispatch through the Ouroboros Codex adapter | Native MCP server support | Native MCP server support | Native MCP server support; `SkillInterceptor` routes `ooo <skill>` prefixes before spawning Kiro subprocess | Native MCP server support; restart required after first registration so Copilot binds the new child | Deterministic skill/MCP dispatch through the Ouroboros Pi adapter |
70
- | **Session context** | Shares Claude Code session context | Preserved via runtime handles, native session IDs, and resume support | Session IDs + resume via `--session` | Preserved via session IDs and internal parser | Headless runs do not surface session IDs; callers may pass an externally sourced `--resume-id`, but automatic targeted resume is not declared yet | Copilot CLI does not expose a session resume API; checkpointing happens at the Ouroboros lineage layer | Native Pi session IDs preserved through runtime handles |
71
- | **Install extras** | `ouroboros-ai[claude]` | `ouroboros-ai` (base package) + `codex` on PATH | `ouroboros-ai` (base package) + `opencode` on PATH | `ouroboros-ai` (base package) + `hermes` on PATH | `ouroboros-ai[claude]` + `kiro-cli` on PATH | `ouroboros-ai[mcp]` + `copilot` on PATH + `gh` on PATH (for live model discovery) | `ouroboros-ai` (base package) + `pi` on PATH |
65
+ | Aspect | Claude Code | Codex CLI | OpenCode | Hermes | Gemini CLI | Kiro CLI | Copilot CLI | Pi CLI |
66
+ | --------------------------- | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------- | ------------------------------------------------ | ----------------------------------------------- | --------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------- |
67
+ | **Primary UX** | In-session skills and MCP server | Session-oriented Ouroboros runtime over Codex CLI transport | MCP server integration | In-session skills and MCP server | Gemini CLI `stream-json` runtime | In-session skills and MCP server (Kiro headless mode) | In-session skills and MCP server (Copilot CLI session) | Pi CLI JSON-mode runtime |
68
+ | **Skill shortcuts (`ooo`)** | Yes -- skills loaded into Claude Code session | Yes -- after `ouroboros setup --runtime codex` installs managed skills into `~/.codex/skills/`, rules into `~/.codex/rules/`, and the MCP/env hookup into `~/.codex/config.toml`. Keep role-specific Ouroboros model overrides in `~/.ouroboros/config.yaml` | Yes -- after `ouroboros setup --runtime opencode` | Yes -- after `ouroboros setup --runtime hermes` | Yes -- adapter-level `ooo <skill>` dispatch after `ouroboros setup --runtime gemini` writes config | Yes -- after `ouroboros setup --runtime kiro` the Ouroboros MCP server is registered in `~/.kiro/settings/mcp.json` with `OUROBOROS_RUNTIME=kiro` / `OUROBOROS_LLM_BACKEND=kiro` baked in | Yes -- after `ouroboros setup --runtime copilot` the MCP server is registered in `~/.copilot/mcp-config.json` with `OUROBOROS_AGENT_RUNTIME=copilot` / `OUROBOROS_LLM_BACKEND=copilot` baked in | Yes -- `SkillInterceptor` routes `ooo <skill>` prefixes before spawning Pi |
69
+ | **MCP integration** | Native MCP server support | Deterministic skill/MCP dispatch through the Ouroboros Codex adapter | Native MCP server support | Native MCP server support | Deterministic skill/MCP dispatch through the Ouroboros Gemini adapter | Native MCP server support; `SkillInterceptor` routes `ooo <skill>` prefixes before spawning Kiro subprocess | Native MCP server support; restart required after first registration so Copilot binds the new child | Deterministic skill/MCP dispatch through the Ouroboros Pi adapter |
70
+ | **Session context** | Shares Claude Code session context | Preserved via runtime handles, native session IDs, and resume support | Session IDs + resume via `--session` | Preserved via session IDs and internal parser | Stateless native CLI; checkpointing happens at the Ouroboros lineage layer | Headless runs do not surface session IDs; callers may pass an externally sourced `--resume-id`, but automatic targeted resume is not declared yet | Copilot CLI does not expose a session resume API; checkpointing happens at the Ouroboros lineage layer | Native Pi session IDs preserved through runtime handles |
71
+ | **Install extras** | `ouroboros-ai[claude]` | `ouroboros-ai` (base package) + `codex` on PATH | `ouroboros-ai` (base package) + `opencode` on PATH | `ouroboros-ai` (base package) + `hermes` on PATH | `ouroboros-ai` (base package) + `gemini` on PATH | `ouroboros-ai[claude]` + `kiro-cli` on PATH | `ouroboros-ai[mcp]` + `copilot` on PATH + `gh` on PATH (for live model discovery) | `ouroboros-ai` (base package) + `pi` on PATH |
72
72
 
73
73
  ## What Stays the Same
74
74
 
@@ -150,7 +150,7 @@ hand `opencode_mode="subprocess"` to the authoring handlers.
150
150
 
151
151
  ## Choosing a Runtime
152
152
 
153
- The table below covers the three currently shipped backends. Because Ouroboros uses a pluggable `AgentRuntime` protocol, teams can register additional backends without modifying the core engine.
153
+ The table below covers the currently shipped backends. Because Ouroboros uses a pluggable `AgentRuntime` protocol, teams can register additional backends without modifying the core engine.
154
154
 
155
155
  | If you... | Consider |
156
156
  | ---------------------------------------------------------------------- | ----------------------------------------------------------------------------- |
@@ -158,13 +158,16 @@ The table below covers the three currently shipped backends. Because Ouroboros u
158
158
  | Want a Codex-backed Ouroboros session instead of a Claude Code session | Codex CLI (`runtime_backend: codex`) |
159
159
  | Want to use OpenCode with multiple model providers | OpenCode (`runtime_backend: opencode`) |
160
160
  | Want to use the Hermes Agent (open source local & API agent) | Hermes (`runtime_backend: hermes`) |
161
+ | Want to use Google's Gemini CLI in headless `stream-json` mode | Gemini CLI (`runtime_backend: gemini`) |
161
162
  | Want to use Kiro CLI (AWS-provided coding agent, browser-free headless) | Kiro (`runtime_backend: kiro`) |
162
163
  | Have a GitHub Copilot subscription and want the live model picker | Copilot CLI (`runtime_backend: copilot`) |
163
164
  | Want to use the Pi coding agent through JSON mode | Pi CLI (`runtime_backend: pi`) |
164
165
  | Want to use Anthropic's Claude models | Claude Code or Copilot CLI (Claude models exposed via Copilot subscription) |
166
+ | Want to use Google's Gemini models | Gemini CLI |
165
167
  | Want to use OpenAI's GPT models | Codex CLI or Copilot CLI |
166
168
  | Want to use multiple providers via a single runtime | OpenCode or Copilot CLI (Copilot multiplexes Anthropic + OpenAI under one auth) |
167
- | Need MCP server integration | Claude Code, OpenCode, Hermes, Kiro, or Copilot CLI |
169
+ | Need native MCP host integration | Claude Code, OpenCode, Hermes, Kiro, or Copilot CLI |
170
+ | Want deterministic adapter-level skill/MCP dispatch | Codex CLI, Gemini CLI, or Pi CLI |
168
171
  | Want minimal Python dependencies | Codex CLI, OpenCode, or Hermes |
169
172
  | Want to integrate a custom or third-party AI coding agent | Implement the `AgentRuntime` protocol and register it in `runtime_factory.py` |
170
173
 
@@ -172,10 +175,12 @@ The table below covers the three currently shipped backends. Because Ouroboros u
172
175
 
173
176
  - [Claude Code runtime guide](runtime-guides/claude-code.md)
174
177
  - [Codex CLI runtime guide](runtime-guides/codex.md)
178
+ - [Gemini CLI runtime guide](runtime-guides/gemini.md)
175
179
  - [Hermes Agent runtime guide](runtime-guides/hermes.md)
176
180
  - [OpenCode runtime guide](runtime-guides/opencode.md)
177
181
  - [Kiro CLI runtime guide](runtime-guides/kiro.md)
178
182
  - [GitHub Copilot CLI runtime guide](runtime-guides/copilot.md)
183
+ - [Pi CLI runtime guide](runtime-guides/pi.md)
179
184
  - [Pi JSON mode documentation](https://pi.dev/docs/latest/json)
180
185
  - [Platform support matrix](platform-support.md) (OS and Python version compatibility)
181
186
  - [Architecture overview](architecture.md) — including [How to add a new runtime adapter](architecture.md#how-to-add-a-new-runtime-adapter)
@@ -77,7 +77,7 @@ Each task spawns:
77
77
  gemini --prompt <PROMPT> \
78
78
  --non-interactive \
79
79
  --output-format stream-json \
80
- --approval-mode yolo \
80
+ --approval-mode auto_edit \
81
81
  [--model gemini-2.5-pro]
82
82
  ```
83
83
 
@@ -86,9 +86,21 @@ gemini --prompt <PROMPT> \
86
86
  | `--prompt` | Carries the request (Gemini's documented headless API) |
87
87
  | `--non-interactive` | Disables TTY prompts so the subprocess never blocks |
88
88
  | `--output-format` | NDJSON event stream parsed by `GeminiEventNormalizer` |
89
- | `--approval-mode` | `yolo` required for headless approvals |
89
+ | `--approval-mode` | `auto_edit` by default (`acceptEdits`); `yolo` only when `bypassPermissions` is explicitly configured |
90
90
  | `--model` | Optional model override (`gemini-2.5-pro`, `flash`) |
91
91
 
92
+ Ouroboros maps its permission modes onto Gemini's non-blocking headless
93
+ approval modes:
94
+
95
+ | Ouroboros permission mode | Gemini flag value | When used |
96
+ |---------------------------|-------------------|------------------------------------------------|
97
+ | `acceptEdits` | `auto_edit` | Default; applies edits without TTY prompts |
98
+ | `bypassPermissions` | `yolo` | Explicit full bypass requested by the operator |
99
+
100
+ The interactive Ouroboros `default` permission mode is normalized to
101
+ `acceptEdits` for Gemini because `--non-interactive` cannot service TTY
102
+ approval prompts.
103
+
92
104
  ## Event mapping
93
105
 
94
106
  The runtime parses Gemini's `stream-json` events through