ouroboros-ai 0.25.2.dev79__tar.gz → 0.25.3.dev2__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.

Potentially problematic release.


This version of ouroboros-ai might be problematic. Click here for more details.

Files changed (554) hide show
  1. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/.claude-plugin/marketplace.json +1 -1
  2. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/.claude-plugin/plugin.json +1 -1
  3. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/.github/workflows/release.yml +1 -10
  4. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/.gitignore +0 -22
  5. {ouroboros_ai-0.25.2.dev79/.claude-plugin → ouroboros_ai-0.25.3.dev2}/.mcp.json +1 -2
  6. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/CHANGELOG.md +2 -2
  7. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/CLAUDE.md +2 -2
  8. ouroboros_ai-0.25.3.dev2/CONTRIBUTING.md +466 -0
  9. ouroboros_ai-0.25.3.dev2/PKG-INFO +409 -0
  10. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/README.ko.md +36 -36
  11. ouroboros_ai-0.25.3.dev2/README.md +379 -0
  12. ouroboros_ai-0.25.3.dev2/agents/qa-judge.md +60 -0
  13. ouroboros_ai-0.25.3.dev2/agents/seed-architect.md +63 -0
  14. ouroboros_ai-0.25.3.dev2/agents/socratic-interviewer.md +37 -0
  15. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/docs/README.md +14 -16
  16. ouroboros_ai-0.25.3.dev2/docs/api/README.md +178 -0
  17. ouroboros_ai-0.25.3.dev2/docs/api/coordinator-agent-design.md +226 -0
  18. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/docs/api/core.md +1 -1
  19. ouroboros_ai-0.25.3.dev2/docs/api/parallel-dx-design.md +309 -0
  20. ouroboros_ai-0.25.3.dev2/docs/api/parallel-execution.md +367 -0
  21. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/docs/architecture.md +271 -102
  22. ouroboros_ai-0.25.3.dev2/docs/cli-reference.md +543 -0
  23. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/docs/contributing/architecture-overview.md +4 -4
  24. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/docs/contributing/key-patterns.md +1 -1
  25. ouroboros_ai-0.25.3.dev2/docs/getting-started.md +471 -0
  26. ouroboros_ai-0.25.3.dev2/docs/guides/cli-usage.md +862 -0
  27. ouroboros_ai-0.25.3.dev2/docs/guides/common-workflows.md +249 -0
  28. ouroboros_ai-0.25.3.dev2/docs/guides/language-support.md +109 -0
  29. ouroboros_ai-0.25.3.dev2/docs/guides/quick-start.md +162 -0
  30. ouroboros_ai-0.25.3.dev2/docs/guides/seed-authoring.md +342 -0
  31. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/docs/guides/tui-usage.md +29 -6
  32. ouroboros_ai-0.25.3.dev2/docs/ontological-framework/HANDOFF.md +288 -0
  33. ouroboros_ai-0.25.3.dev2/docs/ontological-framework/aop-design.md +930 -0
  34. ouroboros_ai-0.25.3.dev2/docs/ontological-framework/architecture.md +519 -0
  35. ouroboros_ai-0.25.3.dev2/docs/ontological-framework/requirements.md +112 -0
  36. ouroboros_ai-0.25.3.dev2/docs/running-with-claude-code.md +218 -0
  37. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/examples/dummy_seed.yaml +1 -1
  38. ouroboros_ai-0.25.3.dev2/playground/src/__init__.py +1 -0
  39. ouroboros_ai-0.25.3.dev2/playground/src/config.py +12 -0
  40. ouroboros_ai-0.25.3.dev2/playground/src/models.py +14 -0
  41. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/project-context.md +5 -6
  42. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/pyproject.toml +4 -13
  43. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/skills/evolve/SKILL.md +3 -2
  44. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/skills/help/SKILL.md +3 -3
  45. ouroboros_ai-0.25.3.dev2/skills/interview/SKILL.md +173 -0
  46. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/skills/run/SKILL.md +0 -4
  47. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/skills/seed/SKILL.md +3 -6
  48. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/skills/setup/SKILL.md +22 -27
  49. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/skills/status/SKILL.md +0 -3
  50. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/skills/update/SKILL.md +3 -3
  51. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/skills/welcome/SKILL.md +1 -1
  52. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/_version.py +2 -2
  53. ouroboros_ai-0.25.3.dev2/src/ouroboros/agents/architect.md +62 -0
  54. ouroboros_ai-0.25.3.dev2/src/ouroboros/agents/contrarian.md +64 -0
  55. ouroboros_ai-0.25.3.dev2/src/ouroboros/agents/evaluator.md +75 -0
  56. ouroboros_ai-0.25.3.dev2/src/ouroboros/agents/hacker.md +60 -0
  57. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/agents/loader.py +23 -10
  58. ouroboros_ai-0.25.3.dev2/src/ouroboros/agents/ontologist.md +37 -0
  59. ouroboros_ai-0.25.3.dev2/src/ouroboros/agents/researcher.md +61 -0
  60. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/agents/seed-architect.md +1 -1
  61. ouroboros_ai-0.25.3.dev2/src/ouroboros/agents/simplifier.md +66 -0
  62. ouroboros_ai-0.25.3.dev2/src/ouroboros/agents/socratic-interviewer.md +40 -0
  63. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/bigbang/ambiguity.py +33 -14
  64. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/bigbang/explore.py +4 -4
  65. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/bigbang/interview.py +66 -249
  66. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/bigbang/seed_generator.py +3 -2
  67. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/cli/commands/init.py +29 -124
  68. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/cli/commands/mcp.py +3 -104
  69. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/cli/commands/run.py +20 -47
  70. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/cli/main.py +1 -2
  71. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/config/__init__.py +0 -46
  72. ouroboros_ai-0.25.3.dev2/src/ouroboros/config/loader.py +325 -0
  73. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/config/models.py +2 -71
  74. ouroboros_ai-0.25.3.dev2/src/ouroboros/core/__init__.py +82 -0
  75. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/core/context.py +25 -20
  76. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/core/lineage.py +2 -104
  77. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/core/ontology_questions.py +2 -4
  78. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/core/security.py +0 -28
  79. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/evaluation/consensus.py +17 -14
  80. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/evaluation/json_utils.py +9 -28
  81. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/evaluation/models.py +3 -14
  82. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/evaluation/semantic.py +4 -21
  83. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/events/base.py +1 -47
  84. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/events/evaluation.py +0 -3
  85. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/evolution/loop.py +0 -1
  86. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/evolution/reflect.py +4 -3
  87. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/evolution/wonder.py +26 -63
  88. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/execution/atomicity.py +7 -6
  89. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/execution/decomposition.py +4 -5
  90. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/execution/double_diamond.py +4 -5
  91. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/mcp/job_manager.py +1 -1
  92. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/mcp/server/adapter.py +26 -98
  93. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/mcp/tools/__init__.py +9 -41
  94. ouroboros_ai-0.25.3.dev2/src/ouroboros/mcp/tools/definitions.py +3605 -0
  95. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/mcp/tools/qa.py +5 -12
  96. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/orchestrator/__init__.py +11 -71
  97. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/orchestrator/adapter.py +33 -547
  98. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/orchestrator/coordinator.py +5 -209
  99. ouroboros_ai-0.25.3.dev2/src/ouroboros/orchestrator/dependency_analyzer.py +368 -0
  100. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/orchestrator/events.py +28 -56
  101. ouroboros_ai-0.25.3.dev2/src/ouroboros/orchestrator/mcp_tools.py +482 -0
  102. ouroboros_ai-0.25.3.dev2/src/ouroboros/orchestrator/parallel_executor.py +1720 -0
  103. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/orchestrator/runner.py +175 -556
  104. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/orchestrator/session.py +29 -307
  105. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/orchestrator/workflow_state.py +26 -485
  106. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/persistence/event_store.py +29 -263
  107. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/plugin/__init__.py +1 -1
  108. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/plugin/agents/__init__.py +1 -1
  109. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/plugin/agents/pool.py +3 -3
  110. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/plugin/agents/registry.py +1 -1
  111. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/plugin/skills/keywords.py +57 -102
  112. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/plugin/skills/registry.py +64 -181
  113. ouroboros_ai-0.25.3.dev2/src/ouroboros/providers/__init__.py +35 -0
  114. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/providers/claude_code_adapter.py +6 -20
  115. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/providers/litellm_adapter.py +6 -65
  116. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/strategies/devil_advocate.py +2 -3
  117. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/app.py +67 -41
  118. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/events.py +0 -4
  119. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/screens/dashboard_v3.py +0 -15
  120. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/verification/extractor.py +4 -2
  121. ouroboros_ai-0.25.3.dev2/tests/conftest.py +1 -0
  122. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/e2e/conftest.py +0 -12
  123. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/e2e/test_cli_commands.py +5 -15
  124. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/integration/mcp/test_server_adapter.py +0 -37
  125. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/agents/test_loader.py +12 -12
  126. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/bigbang/test_ambiguity.py +63 -2
  127. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/bigbang/test_interview.py +39 -131
  128. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/bigbang/test_seed_generator.py +1 -2
  129. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/cli/test_main.py +5 -19
  130. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/cli/test_mcp_startup_cleanup.py +0 -52
  131. ouroboros_ai-0.25.3.dev2/tests/unit/config/test_loader.py +393 -0
  132. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/config/test_models.py +0 -80
  133. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/core/test_context.py +15 -8
  134. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/evaluation/test_consensus.py +6 -4
  135. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/evaluation/test_semantic.py +8 -31
  136. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/events/test_base.py +0 -81
  137. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/mcp/tools/test_definitions.py +66 -879
  138. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/mcp/tools/test_qa_integration.py +47 -61
  139. ouroboros_ai-0.25.3.dev2/tests/unit/orchestrator/test_adapter.py +421 -0
  140. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/orchestrator/test_coordinator.py +35 -182
  141. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/orchestrator/test_events.py +0 -10
  142. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/orchestrator/test_inflight_cancellation.py +26 -32
  143. ouroboros_ai-0.25.3.dev2/tests/unit/orchestrator/test_mcp_tools.py +469 -0
  144. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/orchestrator/test_runner.py +43 -947
  145. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/orchestrator/test_runner_cancellation.py +32 -44
  146. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/orchestrator/test_session.py +1 -473
  147. ouroboros_ai-0.25.3.dev2/tests/unit/orchestrator/test_workflow_state.py +241 -0
  148. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/persistence/test_event_store.py +0 -196
  149. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/plugin/agents/test_registry.py +1 -1
  150. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/plugin/skills/test_registry.py +5 -240
  151. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/providers/test_litellm_adapter.py +6 -55
  152. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/test_dependencies_configured.py +4 -9
  153. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/tui/test_events.py +0 -30
  154. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/uv.lock +5 -848
  155. ouroboros_ai-0.25.2.dev79/CONTRIBUTING.md +0 -758
  156. ouroboros_ai-0.25.2.dev79/PKG-INFO +0 -510
  157. ouroboros_ai-0.25.2.dev79/README.md +0 -470
  158. ouroboros_ai-0.25.2.dev79/SECURITY.md +0 -70
  159. ouroboros_ai-0.25.2.dev79/docs/api/README.md +0 -54
  160. ouroboros_ai-0.25.2.dev79/docs/cli-reference.md +0 -690
  161. ouroboros_ai-0.25.2.dev79/docs/config-reference.md +0 -654
  162. ouroboros_ai-0.25.2.dev79/docs/contributing/findings-registry.md +0 -1369
  163. ouroboros_ai-0.25.2.dev79/docs/getting-started.md +0 -408
  164. ouroboros_ai-0.25.2.dev79/docs/guides/evaluation-pipeline.md +0 -541
  165. ouroboros_ai-0.25.2.dev79/docs/guides/evolution-loop.md +0 -140
  166. ouroboros_ai-0.25.2.dev79/docs/guides/seed-authoring.md +0 -745
  167. ouroboros_ai-0.25.2.dev79/docs/images/PLACEHOLDER_README.md +0 -18
  168. ouroboros_ai-0.25.2.dev79/docs/images/demo-evaluation.png +0 -0
  169. ouroboros_ai-0.25.2.dev79/docs/images/demo-interview.png +0 -0
  170. ouroboros_ai-0.25.2.dev79/docs/images/demo-seed.png +0 -0
  171. ouroboros_ai-0.25.2.dev79/docs/images/demo-tui-dashboard.png +0 -0
  172. ouroboros_ai-0.25.2.dev79/docs/platform-support.md +0 -63
  173. ouroboros_ai-0.25.2.dev79/docs/runtime-capability-matrix.md +0 -111
  174. ouroboros_ai-0.25.2.dev79/docs/runtime-guides/claude-code.md +0 -128
  175. ouroboros_ai-0.25.2.dev79/docs/runtime-guides/codex.md +0 -274
  176. ouroboros_ai-0.25.2.dev79/llms-full.txt +0 -652
  177. ouroboros_ai-0.25.2.dev79/llms.txt +0 -127
  178. ouroboros_ai-0.25.2.dev79/scripts/install.sh +0 -105
  179. ouroboros_ai-0.25.2.dev79/scripts/mcp-serve.sh +0 -13
  180. ouroboros_ai-0.25.2.dev79/skills/interview/SKILL.md +0 -253
  181. ouroboros_ai-0.25.2.dev79/src/ouroboros/agents/breadth-keeper.md +0 -39
  182. ouroboros_ai-0.25.2.dev79/src/ouroboros/agents/seed-closer.md +0 -39
  183. ouroboros_ai-0.25.2.dev79/src/ouroboros/agents/socratic-interviewer.md +0 -48
  184. ouroboros_ai-0.25.2.dev79/src/ouroboros/cli/commands/setup.py +0 -398
  185. ouroboros_ai-0.25.2.dev79/src/ouroboros/codex/__init__.py +0 -29
  186. ouroboros_ai-0.25.2.dev79/src/ouroboros/codex/artifacts.py +0 -405
  187. ouroboros_ai-0.25.2.dev79/src/ouroboros/codex/ouroboros.md +0 -36
  188. ouroboros_ai-0.25.2.dev79/src/ouroboros/codex_permissions.py +0 -62
  189. ouroboros_ai-0.25.2.dev79/src/ouroboros/config/loader.py +0 -861
  190. ouroboros_ai-0.25.2.dev79/src/ouroboros/core/__init__.py +0 -71
  191. ouroboros_ai-0.25.2.dev79/src/ouroboros/mcp/tools/authoring_handlers.py +0 -985
  192. ouroboros_ai-0.25.2.dev79/src/ouroboros/mcp/tools/definitions.py +0 -221
  193. ouroboros_ai-0.25.2.dev79/src/ouroboros/mcp/tools/evaluation_handlers.py +0 -758
  194. ouroboros_ai-0.25.2.dev79/src/ouroboros/mcp/tools/evolution_handlers.py +0 -704
  195. ouroboros_ai-0.25.2.dev79/src/ouroboros/mcp/tools/execution_handlers.py +0 -720
  196. ouroboros_ai-0.25.2.dev79/src/ouroboros/mcp/tools/job_handlers.py +0 -624
  197. ouroboros_ai-0.25.2.dev79/src/ouroboros/mcp/tools/query_handlers.py +0 -480
  198. ouroboros_ai-0.25.2.dev79/src/ouroboros/orchestrator/codex_cli_runtime.py +0 -1714
  199. ouroboros_ai-0.25.2.dev79/src/ouroboros/orchestrator/command_dispatcher.py +0 -238
  200. ouroboros_ai-0.25.2.dev79/src/ouroboros/orchestrator/dependency_analyzer.py +0 -858
  201. ouroboros_ai-0.25.2.dev79/src/ouroboros/orchestrator/execution_runtime_scope.py +0 -214
  202. ouroboros_ai-0.25.2.dev79/src/ouroboros/orchestrator/heartbeat.py +0 -176
  203. ouroboros_ai-0.25.2.dev79/src/ouroboros/orchestrator/mcp_tools.py +0 -2249
  204. ouroboros_ai-0.25.2.dev79/src/ouroboros/orchestrator/parallel_executor.py +0 -3138
  205. ouroboros_ai-0.25.2.dev79/src/ouroboros/orchestrator/parallel_executor_models.py +0 -227
  206. ouroboros_ai-0.25.2.dev79/src/ouroboros/orchestrator/runtime_factory.py +0 -86
  207. ouroboros_ai-0.25.2.dev79/src/ouroboros/orchestrator/runtime_message_projection.py +0 -511
  208. ouroboros_ai-0.25.2.dev79/src/ouroboros/providers/__init__.py +0 -59
  209. ouroboros_ai-0.25.2.dev79/src/ouroboros/providers/codex_cli_adapter.py +0 -934
  210. ouroboros_ai-0.25.2.dev79/src/ouroboros/providers/codex_cli_stream.py +0 -158
  211. ouroboros_ai-0.25.2.dev79/src/ouroboros/providers/factory.py +0 -123
  212. ouroboros_ai-0.25.2.dev79/tests/conftest.py +0 -11
  213. ouroboros_ai-0.25.2.dev79/tests/integration/conftest.py +0 -179
  214. ouroboros_ai-0.25.2.dev79/tests/integration/test_codex_cli_passthrough_smoke.py +0 -129
  215. ouroboros_ai-0.25.2.dev79/tests/integration/test_codex_skill_fallback.py +0 -132
  216. ouroboros_ai-0.25.2.dev79/tests/integration/test_codex_skill_smoke.py +0 -139
  217. ouroboros_ai-0.25.2.dev79/tests/unit/cli/test_init_runtime.py +0 -102
  218. ouroboros_ai-0.25.2.dev79/tests/unit/cli/test_mcp_nested_guard.py +0 -54
  219. ouroboros_ai-0.25.2.dev79/tests/unit/cli/test_setup.py +0 -256
  220. ouroboros_ai-0.25.2.dev79/tests/unit/config/test_loader.py +0 -787
  221. ouroboros_ai-0.25.2.dev79/tests/unit/core/test_lineage.py +0 -226
  222. ouroboros_ai-0.25.2.dev79/tests/unit/evaluation/test_json_utils.py +0 -101
  223. ouroboros_ai-0.25.2.dev79/tests/unit/evolution/test_wonder_scope.py +0 -133
  224. ouroboros_ai-0.25.2.dev79/tests/unit/orchestrator/test_adapter.py +0 -1132
  225. ouroboros_ai-0.25.2.dev79/tests/unit/orchestrator/test_codex_cli_runtime.py +0 -1194
  226. ouroboros_ai-0.25.2.dev79/tests/unit/orchestrator/test_command_dispatcher.py +0 -338
  227. ouroboros_ai-0.25.2.dev79/tests/unit/orchestrator/test_dependency_analyzer.py +0 -478
  228. ouroboros_ai-0.25.2.dev79/tests/unit/orchestrator/test_execution_runtime_scope.py +0 -192
  229. ouroboros_ai-0.25.2.dev79/tests/unit/orchestrator/test_mcp_tools.py +0 -1227
  230. ouroboros_ai-0.25.2.dev79/tests/unit/orchestrator/test_parallel_executor.py +0 -2812
  231. ouroboros_ai-0.25.2.dev79/tests/unit/orchestrator/test_parallel_executor_retry_resume.py +0 -155
  232. ouroboros_ai-0.25.2.dev79/tests/unit/orchestrator/test_runtime_factory.py +0 -209
  233. ouroboros_ai-0.25.2.dev79/tests/unit/orchestrator/test_runtime_message_projection.py +0 -330
  234. ouroboros_ai-0.25.2.dev79/tests/unit/orchestrator/test_workflow_state.py +0 -498
  235. ouroboros_ai-0.25.2.dev79/tests/unit/plugin/skills/test_keywords.py +0 -121
  236. ouroboros_ai-0.25.2.dev79/tests/unit/providers/test_codex_cli_adapter.py +0 -568
  237. ouroboros_ai-0.25.2.dev79/tests/unit/providers/test_factory.py +0 -201
  238. ouroboros_ai-0.25.2.dev79/tests/unit/test_codex_artifacts.py +0 -689
  239. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/.claude/settings.json +0 -0
  240. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2/.claude-plugin}/.mcp.json +0 -0
  241. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/.env.example +0 -0
  242. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/.github/workflows/dev-publish.yml +0 -0
  243. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/.github/workflows/lint.yml +0 -0
  244. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/.github/workflows/test.yml +0 -0
  245. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/.pre-commit-config.yaml +0 -0
  246. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/.python-version +0 -0
  247. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/HANDOFF.md +0 -0
  248. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/LICENSE +0 -0
  249. {ouroboros_ai-0.25.2.dev79/src/ouroboros → ouroboros_ai-0.25.3.dev2}/agents/architect.md +0 -0
  250. {ouroboros_ai-0.25.2.dev79/src/ouroboros → ouroboros_ai-0.25.3.dev2}/agents/contrarian.md +0 -0
  251. {ouroboros_ai-0.25.2.dev79/src/ouroboros → ouroboros_ai-0.25.3.dev2}/agents/evaluator.md +0 -0
  252. {ouroboros_ai-0.25.2.dev79/src/ouroboros → ouroboros_ai-0.25.3.dev2}/agents/hacker.md +0 -0
  253. {ouroboros_ai-0.25.2.dev79/src/ouroboros → ouroboros_ai-0.25.3.dev2}/agents/ontologist.md +0 -0
  254. {ouroboros_ai-0.25.2.dev79/src/ouroboros → ouroboros_ai-0.25.3.dev2}/agents/researcher.md +0 -0
  255. {ouroboros_ai-0.25.2.dev79/src/ouroboros → ouroboros_ai-0.25.3.dev2}/agents/simplifier.md +0 -0
  256. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/commands/cancel.md +0 -0
  257. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/commands/evaluate.md +0 -0
  258. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/commands/evolve.md +0 -0
  259. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/commands/help.md +0 -0
  260. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/commands/interview.md +0 -0
  261. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/commands/ralph.md +0 -0
  262. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/commands/run.md +0 -0
  263. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/commands/seed.md +0 -0
  264. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/commands/setup.md +0 -0
  265. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/commands/status.md +0 -0
  266. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/commands/tutorial.md +0 -0
  267. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/commands/unstuck.md +0 -0
  268. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/commands/welcome.md +0 -0
  269. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/crates/ouroboros-tui/.gitignore +0 -0
  270. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/crates/ouroboros-tui/Cargo.lock +0 -0
  271. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/crates/ouroboros-tui/Cargo.toml +0 -0
  272. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/crates/ouroboros-tui/README.md +0 -0
  273. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/crates/ouroboros-tui/src/db.rs +0 -0
  274. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/crates/ouroboros-tui/src/main.rs +0 -0
  275. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/crates/ouroboros-tui/src/mock.rs +0 -0
  276. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/crates/ouroboros-tui/src/state.rs +0 -0
  277. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/crates/ouroboros-tui/src/views/dashboard.rs +0 -0
  278. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/crates/ouroboros-tui/src/views/execution.rs +0 -0
  279. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/crates/ouroboros-tui/src/views/lineage.rs +0 -0
  280. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/crates/ouroboros-tui/src/views/logs.rs +0 -0
  281. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/crates/ouroboros-tui/src/views/mod.rs +0 -0
  282. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/crates/ouroboros-tui/src/views/session_selector.rs +0 -0
  283. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/docs/api/mcp.md +0 -0
  284. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/docs/contributing/testing-guide.md +0 -0
  285. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/docs/examples/mcp-config.yaml +0 -0
  286. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/docs/guides/issue-176-subagent-mcp-inheritance.md +0 -0
  287. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/docs/images/ouroboros.png +0 -0
  288. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/examples/coordinator_test_seed.yaml +0 -0
  289. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/examples/parallel_subac_test_seed.yaml +0 -0
  290. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/examples/subac_test_seed.yaml +0 -0
  291. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/examples/task_manager/README.md +0 -0
  292. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/examples/task_manager/__init__.py +0 -0
  293. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/examples/task_manager/__main__.py +0 -0
  294. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/examples/task_manager/cli.py +0 -0
  295. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/examples/task_manager/models.py +0 -0
  296. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/examples/task_manager/storage.py +0 -0
  297. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/examples/test_display.py +0 -0
  298. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/hooks/hooks.json +0 -0
  299. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/scripts/drift-monitor.py +0 -0
  300. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/scripts/keyword-detector.py +0 -0
  301. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/scripts/ralph-rewind.py +0 -0
  302. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/scripts/ralph.py +0 -0
  303. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/scripts/ralph.sh +0 -0
  304. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/scripts/session-start.py +0 -0
  305. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/scripts/version-check.py +0 -0
  306. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/skills/cancel/SKILL.md +0 -0
  307. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/skills/evaluate/SKILL.md +0 -0
  308. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/skills/qa/SKILL.md +0 -0
  309. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/skills/ralph/SKILL.md +0 -0
  310. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/skills/tutorial/SKILL.md +0 -0
  311. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/skills/unstuck/SKILL.md +0 -0
  312. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/__init__.py +0 -0
  313. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/__main__.py +0 -0
  314. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/agents/__init__.py +0 -0
  315. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/agents/advocate.md +0 -0
  316. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/agents/analysis-agent.md +0 -0
  317. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/agents/code-executor.md +0 -0
  318. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/agents/codebase-explorer.md +0 -0
  319. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/agents/consensus-reviewer.md +0 -0
  320. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/agents/judge.md +0 -0
  321. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/agents/ontology-analyst.md +0 -0
  322. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/agents/qa-judge.md +0 -0
  323. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/agents/research-agent.md +0 -0
  324. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/agents/semantic-evaluator.md +0 -0
  325. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/bigbang/__init__.py +0 -0
  326. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/cli/__init__.py +0 -0
  327. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/cli/commands/__init__.py +0 -0
  328. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/cli/commands/cancel.py +0 -0
  329. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/cli/commands/config.py +0 -0
  330. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/cli/commands/status.py +0 -0
  331. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/cli/commands/tui.py +0 -0
  332. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/cli/formatters/__init__.py +0 -0
  333. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/cli/formatters/panels.py +0 -0
  334. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/cli/formatters/progress.py +0 -0
  335. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/cli/formatters/tables.py +0 -0
  336. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/cli/formatters/workflow_display.py +0 -0
  337. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/core/ac_tree.py +0 -0
  338. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/core/errors.py +0 -0
  339. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/core/file_lock.py +0 -0
  340. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/core/git_workflow.py +0 -0
  341. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/core/ontology_aspect.py +0 -0
  342. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/core/seed.py +0 -0
  343. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/core/text.py +0 -0
  344. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/core/types.py +0 -0
  345. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/evaluation/__init__.py +0 -0
  346. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/evaluation/artifact_collector.py +0 -0
  347. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/evaluation/languages.py +0 -0
  348. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/evaluation/mechanical.py +0 -0
  349. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/evaluation/pipeline.py +0 -0
  350. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/evaluation/trigger.py +0 -0
  351. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/events/__init__.py +0 -0
  352. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/events/decomposition.py +0 -0
  353. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/events/interview.py +0 -0
  354. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/events/lineage.py +0 -0
  355. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/events/ontology.py +0 -0
  356. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/evolution/__init__.py +0 -0
  357. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/evolution/convergence.py +0 -0
  358. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/evolution/projector.py +0 -0
  359. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/evolution/regression.py +0 -0
  360. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/execution/__init__.py +0 -0
  361. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/execution/subagent.py +0 -0
  362. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/mcp/__init__.py +0 -0
  363. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/mcp/client/__init__.py +0 -0
  364. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/mcp/client/adapter.py +0 -0
  365. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/mcp/client/manager.py +0 -0
  366. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/mcp/client/protocol.py +0 -0
  367. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/mcp/errors.py +0 -0
  368. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/mcp/resources/__init__.py +0 -0
  369. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/mcp/resources/handlers.py +0 -0
  370. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/mcp/server/__init__.py +0 -0
  371. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/mcp/server/protocol.py +0 -0
  372. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/mcp/server/security.py +0 -0
  373. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/mcp/tools/dashboard.py +0 -0
  374. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/mcp/tools/registry.py +0 -0
  375. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/mcp/types.py +0 -0
  376. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/observability/__init__.py +0 -0
  377. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/observability/drift.py +0 -0
  378. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/observability/logging.py +0 -0
  379. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/observability/retrospective.py +0 -0
  380. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/orchestrator/execution_strategy.py +0 -0
  381. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/orchestrator/level_context.py +0 -0
  382. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/orchestrator/mcp_config.py +0 -0
  383. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/persistence/__init__.py +0 -0
  384. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/persistence/checkpoint.py +0 -0
  385. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/persistence/migrations/__init__.py +0 -0
  386. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/persistence/migrations/runner.py +0 -0
  387. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/persistence/migrations/scripts/001_initial.sql +0 -0
  388. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/persistence/schema.py +0 -0
  389. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/persistence/uow.py +0 -0
  390. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/plugin/orchestration/__init__.py +0 -0
  391. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/plugin/orchestration/router.py +0 -0
  392. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/plugin/orchestration/scheduler.py +0 -0
  393. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/plugin/skills/__init__.py +0 -0
  394. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/plugin/skills/docs.py +0 -0
  395. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/plugin/skills/executor.py +0 -0
  396. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/providers/anthropic_adapter.py +0 -0
  397. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/providers/base.py +0 -0
  398. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/py.typed +0 -0
  399. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/resilience/__init__.py +0 -0
  400. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/resilience/lateral.py +0 -0
  401. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/resilience/stagnation.py +0 -0
  402. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/routing/__init__.py +0 -0
  403. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/routing/complexity.py +0 -0
  404. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/routing/downgrade.py +0 -0
  405. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/routing/escalation.py +0 -0
  406. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/routing/router.py +0 -0
  407. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/routing/tiers.py +0 -0
  408. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/secondary/__init__.py +0 -0
  409. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/secondary/scheduler.py +0 -0
  410. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/secondary/todo_registry.py +0 -0
  411. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/strategies/__init__.py +0 -0
  412. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/__init__.py +0 -0
  413. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/components/__init__.py +0 -0
  414. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/components/agents_panel.py +0 -0
  415. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/components/event_log.py +0 -0
  416. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/components/progress.py +0 -0
  417. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/components/token_tracker.py +0 -0
  418. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/screens/__init__.py +0 -0
  419. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/screens/confirm_rewind.py +0 -0
  420. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/screens/dashboard.py +0 -0
  421. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/screens/dashboard_v2.py +0 -0
  422. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/screens/debug.py +0 -0
  423. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/screens/execution.py +0 -0
  424. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/screens/hud_dashboard.py +0 -0
  425. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/screens/lineage_detail.py +0 -0
  426. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/screens/lineage_selector.py +0 -0
  427. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/screens/logs.py +0 -0
  428. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/screens/session_selector.py +0 -0
  429. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/widgets/__init__.py +0 -0
  430. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/widgets/ac_progress.py +0 -0
  431. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/widgets/ac_tree.py +0 -0
  432. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/widgets/agent_activity.py +0 -0
  433. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/widgets/cost_tracker.py +0 -0
  434. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/widgets/drift_meter.py +0 -0
  435. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/widgets/lineage_tree.py +0 -0
  436. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/widgets/parallel_graph.py +0 -0
  437. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/widgets/phase_progress.py +0 -0
  438. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/verification/__init__.py +0 -0
  439. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/verification/models.py +0 -0
  440. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/verification/verifier.py +0 -0
  441. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/__init__.py +0 -0
  442. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/e2e/__init__.py +0 -0
  443. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/e2e/test_full_workflow.py +0 -0
  444. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/e2e/test_session_persistence.py +0 -0
  445. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/fixtures/test_atomicity_seed.yml +0 -0
  446. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/integration/__init__.py +0 -0
  447. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/integration/mcp/__init__.py +0 -0
  448. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/integration/mcp/conftest.py +0 -0
  449. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/integration/mcp/test_client_adapter.py +0 -0
  450. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/integration/mcp/test_client_manager.py +0 -0
  451. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/integration/plugin/test_orchestration.py +0 -0
  452. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/integration/test_entry_point.py +0 -0
  453. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/__init__.py +0 -0
  454. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/agents/__init__.py +0 -0
  455. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/bigbang/__init__.py +0 -0
  456. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/bigbang/test_explore.py +0 -0
  457. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/cli/__init__.py +0 -0
  458. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/cli/formatters/__init__.py +0 -0
  459. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/cli/formatters/test_console.py +0 -0
  460. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/cli/formatters/test_panels.py +0 -0
  461. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/cli/formatters/test_progress.py +0 -0
  462. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/cli/formatters/test_tables.py +0 -0
  463. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/cli/formatters/test_workflow_display.py +0 -0
  464. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/cli/test_cancel.py +0 -0
  465. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/config/__init__.py +0 -0
  466. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/core/__init__.py +0 -0
  467. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/core/test_ac_tree.py +0 -0
  468. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/core/test_errors.py +0 -0
  469. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/core/test_git_workflow.py +0 -0
  470. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/core/test_ontology_aspect.py +0 -0
  471. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/core/test_ontology_questions.py +0 -0
  472. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/core/test_security.py +0 -0
  473. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/core/test_seed.py +0 -0
  474. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/core/test_types.py +0 -0
  475. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/evaluation/__init__.py +0 -0
  476. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/evaluation/test_languages.py +0 -0
  477. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/evaluation/test_mechanical.py +0 -0
  478. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/evaluation/test_models.py +0 -0
  479. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/evaluation/test_trigger.py +0 -0
  480. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/events/__init__.py +0 -0
  481. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/events/test_decomposition_events.py +0 -0
  482. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/execution/__init__.py +0 -0
  483. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/execution/test_atomicity.py +0 -0
  484. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/execution/test_decomposition.py +0 -0
  485. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/execution/test_double_diamond.py +0 -0
  486. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/execution/test_subagent_isolation.py +0 -0
  487. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/mcp/__init__.py +0 -0
  488. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/mcp/client/__init__.py +0 -0
  489. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/mcp/client/test_adapter.py +0 -0
  490. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/mcp/client/test_manager.py +0 -0
  491. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/mcp/conftest.py +0 -0
  492. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/mcp/server/__init__.py +0 -0
  493. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/mcp/server/test_adapter.py +0 -0
  494. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/mcp/server/test_security.py +0 -0
  495. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/mcp/test_errors.py +0 -0
  496. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/mcp/test_job_manager.py +0 -0
  497. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/mcp/test_types.py +0 -0
  498. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/mcp/tools/__init__.py +0 -0
  499. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/mcp/tools/test_registry.py +0 -0
  500. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/observability/__init__.py +0 -0
  501. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/observability/test_drift.py +0 -0
  502. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/observability/test_logging.py +0 -0
  503. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/observability/test_retrospective.py +0 -0
  504. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/orchestrator/__init__.py +0 -0
  505. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/orchestrator/test_execution_strategy.py +0 -0
  506. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/orchestrator/test_level_context.py +0 -0
  507. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/orchestrator/test_mcp_config.py +0 -0
  508. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/persistence/__init__.py +0 -0
  509. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/persistence/test_checkpoint.py +0 -0
  510. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/persistence/test_schema.py +0 -0
  511. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/persistence/test_uow.py +0 -0
  512. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/plugin/__init__.py +0 -0
  513. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/plugin/agents/__init__.py +0 -0
  514. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/plugin/orchestration/__init__.py +0 -0
  515. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/plugin/orchestration/test_model_router.py +0 -0
  516. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/plugin/skills/__init__.py +0 -0
  517. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/providers/__init__.py +0 -0
  518. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/providers/test_base.py +0 -0
  519. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/providers/test_claude_code_adapter.py +0 -0
  520. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/resilience/__init__.py +0 -0
  521. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/resilience/test_lateral.py +0 -0
  522. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/resilience/test_stagnation.py +0 -0
  523. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/routing/__init__.py +0 -0
  524. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/routing/test_complexity.py +0 -0
  525. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/routing/test_downgrade.py +0 -0
  526. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/routing/test_escalation.py +0 -0
  527. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/routing/test_router.py +0 -0
  528. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/routing/test_tiers.py +0 -0
  529. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/scripts/test_keyword_detector.py +0 -0
  530. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/scripts/test_version_check.py +0 -0
  531. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/secondary/__init__.py +0 -0
  532. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/secondary/test_scheduler.py +0 -0
  533. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/secondary/test_todo_registry.py +0 -0
  534. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/test_artifact_collector.py +0 -0
  535. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/test_convergence.py +0 -0
  536. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/test_dashboard.py +0 -0
  537. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/test_evolve_rewind.py +0 -0
  538. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/test_evolve_step.py +0 -0
  539. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/test_main_entry_point.py +0 -0
  540. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/test_module_structure.py +0 -0
  541. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/test_project_initialization.py +0 -0
  542. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/test_projector_rewind.py +0 -0
  543. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/test_ralph_parser.py +0 -0
  544. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/test_ralph_rewind.py +0 -0
  545. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/test_regression.py +0 -0
  546. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/test_tooling_configuration.py +0 -0
  547. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/test_verification.py +0 -0
  548. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/tui/__init__.py +0 -0
  549. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/tui/test_app.py +0 -0
  550. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/tui/test_cancelled_display.py +0 -0
  551. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/tui/test_lineage_viewer.py +0 -0
  552. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/tui/test_screens.py +0 -0
  553. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/tui/test_widgets.py +0 -0
  554. {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tools/sync_github_project.py +0 -0
@@ -10,7 +10,7 @@
10
10
  {
11
11
  "name": "ouroboros",
12
12
  "description": "Transform vague ideas into validated seed specifications through Socratic questioning and ontological analysis",
13
- "version": "0.20.0",
13
+ "version": "0.25.2",
14
14
  "author": {
15
15
  "name": "Q00",
16
16
  "email": "jqyu.lee@gmail.com"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ouroboros",
3
- "version": "0.26.0",
3
+ "version": "0.25.2",
4
4
  "description": "Self-improving AI workflow system. Crystallize requirements before execution with Socratic interview, ambiguity scoring, and 3-stage evaluation.",
5
5
  "author": {
6
6
  "name": "Q00",
@@ -41,21 +41,12 @@ jobs:
41
41
  run: |
42
42
  uv publish --dry-run dist/*
43
43
 
44
- - name: Detect pre-release
45
- id: prerelease
46
- run: |
47
- if [[ "${{ github.ref_name }}" =~ (a|alpha|b|beta|rc|dev) ]]; then
48
- echo "is_prerelease=true" >> "$GITHUB_OUTPUT"
49
- else
50
- echo "is_prerelease=false" >> "$GITHUB_OUTPUT"
51
- fi
52
-
53
44
  - name: Create GitHub Release
54
45
  uses: softprops/action-gh-release@v2
55
46
  with:
56
47
  files: dist/*
57
48
  draft: false
58
- prerelease: ${{ steps.prerelease.outputs.is_prerelease == 'true' }}
49
+ prerelease: false
59
50
  generate_release_notes: true
60
51
  env:
61
52
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -102,29 +102,7 @@ src/ouroboros/_version.py
102
102
  _bmad/
103
103
  .claude/commands/bmad/
104
104
  .omc/
105
- .smoke-home/
106
105
 
107
106
 
108
107
  # Local archive for removed/held docs and assets
109
108
  archive/
110
-
111
- # Generated doc reports (regenerable via scripts/)
112
- docs/link-index.md
113
- docs/link-index.json
114
- docs/cross-document-link-index.md
115
- docs/section-content-index.md
116
- docs/section-content-index.json
117
- docs/semantic-link-rot-report.md
118
- docs/doc-issues-register.md
119
- docs/doc-volatility-report.md
120
- docs/doc-volatility-report.json
121
- docs/doc-maintenance-ranking.yaml
122
- docs/findings-file-inventory.md
123
- docs/claim-inventory.md
124
- docs/config-inventory.md
125
- docs/runtime-capability-crosscheck.md
126
- docs/authority-model-migration-report.json
127
- docs/claim-status-derivation-audit.yaml
128
- docs/code-surface-inventory.yaml
129
- docs/code-surface-lookup.yaml
130
- docs/cli-inventory.yaml
@@ -2,8 +2,7 @@
2
2
  "mcpServers": {
3
3
  "ouroboros": {
4
4
  "command": "uvx",
5
- "args": ["--from", "ouroboros-ai", "ouroboros", "mcp", "serve"],
6
- "timeout": 600
5
+ "args": ["--from", "ouroboros-ai", "ouroboros", "mcp", "serve"]
7
6
  }
8
7
  }
9
8
  }
@@ -71,7 +71,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
71
71
  - `ralph` - Self-referential loop with verifier verification (includes ultrawork)
72
72
  - `ultrapilot` - Parallel autopilot with file ownership partitioning
73
73
  - `ecomode` - Token-efficient execution using haiku and sonnet
74
- - `swarm` - N coordinated agents using native runtime teams
74
+ - `swarm` - N coordinated agents using Claude Code native teams
75
75
  - `pipeline` - Sequential agent chaining with data passing
76
76
  - `tutorial` - Interactive guided tour for new users
77
77
  - `swarm` - Team coordination mode
@@ -224,7 +224,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
224
224
  - Resilience (Phase 3) - Stagnation detection and lateral thinking
225
225
  - Evaluation (Phase 4) - Mechanical, semantic, and consensus evaluation
226
226
  - Secondary Loop (Phase 5) - TODO registry and batch scheduler
227
- - Orchestrator (Epic 8) - Runtime abstraction and orchestration
227
+ - Orchestrator (Epic 8) - Claude Agent SDK integration
228
228
  - CLI interface with Typer
229
229
  - Event sourcing with SQLite persistence
230
230
  - Structured logging with structlog
@@ -34,10 +34,10 @@ When the user types any of these commands, read the corresponding SKILL.md file
34
34
 
35
35
  ## Agents
36
36
 
37
- Bundled agents live in `src/ouroboros/agents/`. When a skill references an agent (e.g., `ouroboros:socratic-interviewer`), read its definition from `src/ouroboros/agents/{name}.md` and adopt that role. Use `OUROBOROS_AGENTS_DIR` or `.claude-plugin/agents/` only for explicit custom overrides.
37
+ Custom agents are in `agents/`. When a skill references an agent (e.g., `ouroboros:socratic-interviewer`), read its definition from `agents/{name}.md` and adopt that role.
38
38
 
39
39
  <!-- ooo:START -->
40
- <!-- ooo:VERSION:0.26.0 -->
40
+ <!-- ooo:VERSION:0.25.1 -->
41
41
  # Ouroboros — Specification-First AI Development
42
42
 
43
43
  > Before telling AI what to build, define what should be built.
@@ -0,0 +1,466 @@
1
+ # Contributing to Ouroboros
2
+
3
+ Thank you for your interest in contributing to Ouroboros! This guide covers everything you need to get started.
4
+
5
+ ## Table of Contents
6
+
7
+ - [Quick Setup](#quick-setup)
8
+ - [Development Workflow](#development-workflow)
9
+ - [Ways to Contribute](#ways-to-contribute)
10
+ - [Development Environment](#development-environment)
11
+ - [Code Style Guide](#code-style-guide)
12
+ - [Commit Message Convention](#commit-message-convention)
13
+ - [Project Structure](#project-structure)
14
+ - [Key Patterns](#key-patterns)
15
+ - [Contributor Docs](#contributor-docs)
16
+ - [Code of Conduct](#code-of-conduct)
17
+
18
+ ---
19
+
20
+ ## Quick Setup
21
+
22
+ ```bash
23
+ # Clone and install
24
+ git clone https://github.com/Q00/ouroboros
25
+ cd ouroboros
26
+ uv sync
27
+
28
+ # Verify
29
+ uv run ouroboros --version
30
+ uv run pytest tests/unit/ -q
31
+ ```
32
+
33
+ **Requirements**: Python 3.14+, [uv](https://github.com/astral-sh/uv)
34
+
35
+ ---
36
+
37
+ ## Development Workflow
38
+
39
+ ### 1. Find or Create an Issue
40
+
41
+ - Check [GitHub Issues](https://github.com/Q00/ouroboros/issues) for open tasks
42
+ - For new features, open an issue first to discuss the approach
43
+ - Label your issue with appropriate tags: `bug`, `enhancement`, `documentation`, etc.
44
+
45
+ ### 2. Branch
46
+
47
+ ```bash
48
+ git checkout -b feat/your-feature # for new features
49
+ git checkout -b fix/your-bugfix # for bug fixes
50
+ git checkout -b docs/your-changes # for documentation
51
+ ```
52
+
53
+ ### 3. Code
54
+
55
+ - Follow the project structure (see [Architecture for Contributors](./docs/contributing/architecture-overview.md))
56
+ - Use frozen dataclasses or Pydantic models for data
57
+ - Use the `Result[T, E]` type instead of exceptions for expected failures
58
+ - Write tests alongside your code
59
+
60
+ ### 4. Test
61
+
62
+ ```bash
63
+ # Full unit test suite
64
+ uv run pytest tests/unit/ -v
65
+
66
+ # Specific module
67
+ uv run pytest tests/unit/evaluation/ -v
68
+
69
+ # With coverage
70
+ uv run pytest tests/unit/ --cov=src/ouroboros --cov-report=term-missing
71
+ ```
72
+
73
+ See [Testing Guide](./docs/contributing/testing-guide.md) for more details.
74
+
75
+ ### 5. Lint and Format
76
+
77
+ ```bash
78
+ # Check
79
+ uv run ruff check src/ tests/
80
+ uv run ruff format --check src/ tests/
81
+
82
+ # Auto-fix
83
+ uv run ruff check --fix src/ tests/
84
+ uv run ruff format src/ tests/
85
+
86
+ # Type check
87
+ uv run mypy src/ouroboros
88
+ ```
89
+
90
+ ### 6. Submit PR
91
+
92
+ - Write a clear PR description explaining **what** and **why**
93
+ - Reference the related issue (e.g., `Closes #123`)
94
+ - Ensure all tests pass and linting is clean
95
+ - Wait for code review and address feedback
96
+
97
+ ---
98
+
99
+ ## Ways to Contribute
100
+
101
+ ### Bug Reports
102
+
103
+ Found a bug? Please open an issue with:
104
+
105
+ 1. **Clear title**: Summarize the bug
106
+ 2. **Description**: Steps to reproduce, expected vs actual behavior
107
+ 3. **Environment**: Python version, OS, `uv run ouroboros --version`
108
+ 4. **Logs**: Relevant error messages or stack traces
109
+
110
+ ```markdown
111
+ ## Bug Description
112
+ [What went wrong]
113
+
114
+ ## Steps to Reproduce
115
+ 1. Run `ooo interview "test"`
116
+ 2. Enter X when prompted
117
+ 3. Observe error
118
+
119
+ ## Expected Behavior
120
+ [What should happen]
121
+
122
+ ## Environment
123
+ - Python: 3.14.0
124
+ - Ouroboros: v0.9.0
125
+ - OS: macOS 15.2
126
+
127
+ ## Logs
128
+ ```
129
+ [paste error output]
130
+ ```
131
+ ```
132
+
133
+ ### Feature Proposals
134
+
135
+ Have an idea? Open an issue with:
136
+
137
+ 1. **Problem statement**: What problem does this solve?
138
+ 2. **Proposed solution**: How should it work?
139
+ 3. **Alternatives considered**: What other approaches did you think about?
140
+ 4. **Scope**: Is this a breaking change? Can it be incremental?
141
+
142
+ ### Pull Requests
143
+
144
+ When submitting a PR:
145
+
146
+ 1. **Small, focused changes**: One logical change per PR
147
+ 2. **Tests included**: New features need tests
148
+ 3. **Docs updated**: Update relevant documentation
149
+ 4. **Clean history**: Squash commits before submitting if needed
150
+
151
+ ### Documentation
152
+
153
+ Help improve docs by:
154
+
155
+ - Fixing typos and unclear explanations
156
+ - Adding examples to existing features
157
+ - Translating documentation (if you speak multiple languages)
158
+ - Creating tutorials or guides
159
+
160
+ ### Code Review
161
+
162
+ Review open PRs to:
163
+
164
+ - Catch bugs before merge
165
+ - Suggest improvements
166
+ - Learn the codebase
167
+
168
+ ---
169
+
170
+ ## Development Environment
171
+
172
+ ### Environment Setup
173
+
174
+ ```bash
175
+ # Copy environment template
176
+ cp .env.example .env
177
+
178
+ # Edit .env with your API keys
179
+ # Required: ANTHROPIC_API_KEY or OPENAI_API_KEY
180
+ ```
181
+
182
+ ### Running Tests
183
+
184
+ ```bash
185
+ # Unit tests (fast, no network)
186
+ uv run pytest tests/unit/ -v
187
+
188
+ # Integration tests (requires MCP server)
189
+ uv run pytest tests/integration/ -v
190
+
191
+ # E2E tests (full system)
192
+ uv run pytest tests/e2e/ -v
193
+
194
+ # Skip slow tests for fast iteration
195
+ uv run pytest tests/ --ignore=tests/unit/mcp --ignore=tests/integration/mcp --ignore=tests/e2e
196
+ ```
197
+
198
+ ### Testing Specific Features
199
+
200
+ ```bash
201
+ # TUI tests
202
+ uv run pytest tests/ --ignore=tests/unit/mcp --ignore=tests/integration/mcp --ignore=tests/e2e -k "tui or tree"
203
+
204
+ # Evaluation pipeline
205
+ uv run pytest tests/unit/evaluation/ -v
206
+
207
+ # Orchestrator
208
+ uv run pytest tests/unit/orchestrator/ -v
209
+ ```
210
+
211
+ ### Pre-commit Hooks (Optional)
212
+
213
+ ```bash
214
+ # Install pre-commit hooks
215
+ uv run pre-commit install
216
+
217
+ # Hooks run automatically on git commit
218
+ # Manual run:
219
+ uv run pre-commit run --all-files
220
+ ```
221
+
222
+ ---
223
+
224
+ ## Code Style Guide
225
+
226
+ ### Formatting
227
+
228
+ - **Line length**: 100 characters
229
+ - **Quotes**: Double quotes for strings
230
+ - **Indentation**: 4 spaces (no tabs)
231
+ - **Tool**: Ruff (auto-formats on save)
232
+
233
+ ```bash
234
+ # Format code
235
+ uv run ruff format src/ tests/
236
+ ```
237
+
238
+ ### Type Checking
239
+
240
+ - **Strict mode**: Enabled (`strict = true`)
241
+ - **No untyped defs**: All functions must have type hints
242
+ - **Tool**: mypy
243
+
244
+ ```bash
245
+ # Type check
246
+ uv run mypy src/ouroboros
247
+ ```
248
+
249
+ ### Linting
250
+
251
+ Ruff enforces:
252
+ - Pycodestyle (E, W)
253
+ - Pyflakes (F)
254
+ - isort (I)
255
+ - flake8-bugbear (B)
256
+ - flake8-comprehensions (C4)
257
+ - pyupgrade (UP)
258
+ - flake8-unused-arguments (ARG)
259
+ - flake8-simplify (SIM)
260
+
261
+ ```bash
262
+ # Lint
263
+ uv run ruff check src/ tests/
264
+ ```
265
+
266
+ ### Python Version
267
+
268
+ - **Minimum**: Python 3.14
269
+ - **Target**: Python 3.14+
270
+ - Use modern Python features (type unions `|`, match statements, etc.)
271
+
272
+ ---
273
+
274
+ ## Commit Message Convention
275
+
276
+ We follow a simplified semantic commit format:
277
+
278
+ ```
279
+ <type>(<scope>): <subject>
280
+
281
+ [optional body]
282
+ ```
283
+
284
+ ### Types
285
+
286
+ | Type | When to Use |
287
+ |------|-------------|
288
+ | `feat` | New feature |
289
+ | `fix` | Bug fix |
290
+ | `docs` | Documentation changes |
291
+ | `chore` | Build, tooling, dependency updates |
292
+ | `refactor` | Code refactoring (no behavior change) |
293
+ | `test` | Test changes |
294
+ | `perf` | Performance improvements |
295
+
296
+ ### Scopes
297
+
298
+ Common scopes: `cli`, `tui`, `evaluation`, `orchestrator`, `mcp`, `plugin`, `core`
299
+
300
+ ### Examples
301
+
302
+ ```bash
303
+ # Feature
304
+ git commit -m "feat(evaluation): add consensus trigger for seed drift > 0.3"
305
+
306
+ # Bug fix
307
+ git commit -m "fix(tui): resolve crash when AC tree is empty"
308
+
309
+ # Docs
310
+ git commit -m "docs: update CLI reference with new flags"
311
+
312
+ # Refactor
313
+ git commit -m "refactor(orchestrator): extract parallel execution to separate module"
314
+ ```
315
+
316
+ ### Body (Optional)
317
+
318
+ For complex changes, add a body explaining the **why**:
319
+
320
+ ```bash
321
+ git commit -m "feat(evaluation): add stage 3 consensus trigger
322
+
323
+ This enables multi-model voting when:
324
+ - Seed is modified during execution
325
+ - Ontology evolves significantly
326
+ - Drift score exceeds 0.3
327
+
328
+ Closes #42"
329
+ ```
330
+
331
+ ---
332
+
333
+ ## Project Structure
334
+
335
+ ```
336
+ src/ouroboros/
337
+ core/ # Foundation: Result type, Seed, errors, context
338
+ bigbang/ # Phase 0: Interview and seed generation
339
+ routing/ # Phase 1: PAL Router (model tier selection)
340
+ execution/ # Phase 2: Double Diamond execution
341
+ resilience/ # Phase 3: Stagnation detection, lateral thinking
342
+ evaluation/ # Phase 4: Three-stage evaluation pipeline
343
+ secondary/ # Phase 5: TODO registry
344
+ orchestrator/ # Claude Agent SDK integration
345
+ providers/ # LLM provider adapters (LiteLLM)
346
+ persistence/ # Event sourcing, checkpoints
347
+ tui/ # Terminal UI (Textual)
348
+ cli/ # CLI commands (Typer)
349
+ mcp/ # Model Context Protocol server/client
350
+ config/ # Configuration management
351
+
352
+ tests/
353
+ unit/ # Fast, isolated tests (no network, no DB)
354
+ integration/ # Tests with real dependencies
355
+ e2e/ # End-to-end CLI tests
356
+ fixtures/ # Shared test data
357
+
358
+ .claude-plugin/ # Claude Code plugin definitions
359
+ agents/ # Custom agent prompts
360
+ skills/ # Plugin skill definitions
361
+ hooks/ # Plugin hooks
362
+ ```
363
+
364
+ ---
365
+
366
+ ## Key Patterns
367
+
368
+ Detailed explanations: [Key Patterns](./docs/contributing/key-patterns.md)
369
+
370
+ ### Result Type for Error Handling
371
+
372
+ ```python
373
+ from ouroboros.core.types import Result
374
+
375
+ def validate_score(score: float) -> Result[float, ValidationError]:
376
+ if 0.0 <= score <= 1.0:
377
+ return Result.ok(score)
378
+ return Result.err(ValidationError(f"Score {score} out of range"))
379
+
380
+ # Consume
381
+ result = validate_score(0.85)
382
+ if result.is_ok:
383
+ process(result.value)
384
+ else:
385
+ log_error(result.error.message)
386
+ ```
387
+
388
+ ### Frozen Dataclasses
389
+
390
+ ```python
391
+ from dataclasses import dataclass
392
+
393
+ @dataclass(frozen=True, slots=True)
394
+ class CheckResult:
395
+ check_type: CheckType
396
+ passed: bool
397
+ message: str
398
+ ```
399
+
400
+ ### Event Sourcing
401
+
402
+ ```python
403
+ # Events are immutable and append-only
404
+ event = create_stage1_completed_event(execution_id="exec_123", ...)
405
+ await event_store.append(event)
406
+ ```
407
+
408
+ ### Protocol Classes
409
+
410
+ ```python
411
+ from typing import Protocol
412
+
413
+ @runtime_checkable
414
+ class ExecutionStrategy(Protocol):
415
+ def get_tools(self) -> list[str]: ...
416
+ ```
417
+
418
+ ---
419
+
420
+ ## Contributor Docs
421
+
422
+ - [Architecture Overview](./docs/contributing/architecture-overview.md) - How the system fits together
423
+ - [Testing Guide](./docs/contributing/testing-guide.md) - How to write and run tests
424
+ - [Key Patterns](./docs/contributing/key-patterns.md) - Core patterns with code examples
425
+
426
+ ---
427
+
428
+ ## Getting Help
429
+
430
+ - **GitHub Issues**: [Report bugs or request features](https://github.com/Q00/ouroboros/issues)
431
+ - **GitHub Discussions**: [Ask questions or share ideas](https://github.com/Q00/ouroboros/discussions)
432
+
433
+ ---
434
+
435
+ ## Code of Conduct
436
+
437
+ ### Our Pledge
438
+
439
+ We pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
440
+
441
+ ### Our Standards
442
+
443
+ **Positive behavior includes**:
444
+ - Being respectful and inclusive
445
+ - Gracefully accepting constructive criticism
446
+ - Focusing on what is best for the community
447
+ - Showing empathy towards other community members
448
+
449
+ **Unacceptable behavior includes**:
450
+ - Harassment, trolling, or derogatory comments
451
+ - Personal or political attacks
452
+ - Public or private harassment
453
+ - Publishing private information without permission
454
+ - Any other conduct which could reasonably be considered inappropriate
455
+
456
+ ### Enforcement
457
+
458
+ Project maintainers may remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned with this Code of Conduct.
459
+
460
+ **Contact**: For any questions or concerns, please open a GitHub issue with the `conduct` label.
461
+
462
+ ---
463
+
464
+ ## License
465
+
466
+ By contributing to Ouroboros, you agree that your contributions will be licensed under the [MIT License](LICENSE).