ouroboros-ai 0.26.2.dev21__tar.gz → 0.26.2.dev26__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 (551) hide show
  1. ouroboros_ai-0.26.2.dev26/.github/ISSUE_TEMPLATE/bug_report.yml +106 -0
  2. ouroboros_ai-0.26.2.dev26/.github/ISSUE_TEMPLATE/config.yml +8 -0
  3. ouroboros_ai-0.26.2.dev26/.github/ISSUE_TEMPLATE/feature_request.yml +114 -0
  4. ouroboros_ai-0.26.2.dev26/.github/ISSUE_TEMPLATE/question.yml +58 -0
  5. ouroboros_ai-0.26.2.dev26/CODE_OF_CONDUCT.md +33 -0
  6. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/CONTRIBUTING.md +38 -12
  7. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/PKG-INFO +1 -1
  8. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/docs/README.md +2 -0
  9. ouroboros_ai-0.26.2.dev26/docs/contributing/issue-quality-policy.md +29 -0
  10. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/_version.py +2 -2
  11. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/.claude/settings.json +0 -0
  12. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/.claude-plugin/.mcp.json +0 -0
  13. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/.claude-plugin/marketplace.json +0 -0
  14. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/.claude-plugin/plugin.json +0 -0
  15. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/.env.example +0 -0
  16. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/.github/workflows/dev-publish.yml +0 -0
  17. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/.github/workflows/lint.yml +0 -0
  18. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/.github/workflows/release.yml +0 -0
  19. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/.github/workflows/test.yml +0 -0
  20. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/.gitignore +0 -0
  21. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/.mcp.json +0 -0
  22. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/.ouroboros/mechanical.toml +0 -0
  23. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/.pre-commit-config.yaml +0 -0
  24. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/.python-version +0 -0
  25. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/CHANGELOG.md +0 -0
  26. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/CLAUDE.md +0 -0
  27. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/HANDOFF.md +0 -0
  28. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/LICENSE +0 -0
  29. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/README.ko.md +0 -0
  30. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/README.md +0 -0
  31. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/SECURITY.md +0 -0
  32. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/commands/cancel.md +0 -0
  33. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/commands/evaluate.md +0 -0
  34. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/commands/evolve.md +0 -0
  35. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/commands/help.md +0 -0
  36. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/commands/interview.md +0 -0
  37. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/commands/ralph.md +0 -0
  38. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/commands/run.md +0 -0
  39. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/commands/seed.md +0 -0
  40. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/commands/setup.md +0 -0
  41. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/commands/status.md +0 -0
  42. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/commands/tutorial.md +0 -0
  43. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/commands/unstuck.md +0 -0
  44. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/commands/welcome.md +0 -0
  45. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/crates/ouroboros-tui/.gitignore +0 -0
  46. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/crates/ouroboros-tui/Cargo.lock +0 -0
  47. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/crates/ouroboros-tui/Cargo.toml +0 -0
  48. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/crates/ouroboros-tui/README.md +0 -0
  49. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/crates/ouroboros-tui/src/db.rs +0 -0
  50. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/crates/ouroboros-tui/src/main.rs +0 -0
  51. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/crates/ouroboros-tui/src/mock.rs +0 -0
  52. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/crates/ouroboros-tui/src/state.rs +0 -0
  53. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/crates/ouroboros-tui/src/views/dashboard.rs +0 -0
  54. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/crates/ouroboros-tui/src/views/execution.rs +0 -0
  55. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/crates/ouroboros-tui/src/views/lineage.rs +0 -0
  56. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/crates/ouroboros-tui/src/views/logs.rs +0 -0
  57. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/crates/ouroboros-tui/src/views/mod.rs +0 -0
  58. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/crates/ouroboros-tui/src/views/session_selector.rs +0 -0
  59. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/docs/api/README.md +0 -0
  60. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/docs/api/core.md +0 -0
  61. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/docs/api/mcp.md +0 -0
  62. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/docs/architecture.md +0 -0
  63. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/docs/cli-reference.md +0 -0
  64. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/docs/config-reference.md +0 -0
  65. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/docs/contributing/architecture-overview.md +0 -0
  66. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/docs/contributing/findings-registry.md +0 -0
  67. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/docs/contributing/key-patterns.md +0 -0
  68. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/docs/contributing/testing-guide.md +0 -0
  69. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/docs/examples/mcp-config.yaml +0 -0
  70. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/docs/getting-started.md +0 -0
  71. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/docs/guides/evaluation-pipeline.md +0 -0
  72. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/docs/guides/evolution-loop.md +0 -0
  73. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/docs/guides/issue-176-subagent-mcp-inheritance.md +0 -0
  74. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/docs/guides/seed-authoring.md +0 -0
  75. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/docs/guides/tui-usage.md +0 -0
  76. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/docs/images/PLACEHOLDER_README.md +0 -0
  77. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/docs/images/ouroboros.png +0 -0
  78. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/docs/platform-support.md +0 -0
  79. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/docs/runtime-capability-matrix.md +0 -0
  80. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/docs/runtime-guides/claude-code.md +0 -0
  81. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/docs/runtime-guides/codex.md +0 -0
  82. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/examples/coordinator_test_seed.yaml +0 -0
  83. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/examples/dummy_seed.yaml +0 -0
  84. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/examples/parallel_subac_test_seed.yaml +0 -0
  85. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/examples/subac_test_seed.yaml +0 -0
  86. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/examples/task_manager/README.md +0 -0
  87. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/examples/task_manager/__init__.py +0 -0
  88. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/examples/task_manager/__main__.py +0 -0
  89. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/examples/task_manager/cli.py +0 -0
  90. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/examples/task_manager/models.py +0 -0
  91. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/examples/task_manager/storage.py +0 -0
  92. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/examples/test_display.py +0 -0
  93. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/hooks/hooks.json +0 -0
  94. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/llms-full.txt +0 -0
  95. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/llms.txt +0 -0
  96. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/project-context.md +0 -0
  97. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/pyproject.toml +0 -0
  98. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/scripts/drift-monitor.py +0 -0
  99. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/scripts/install.sh +0 -0
  100. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/scripts/keyword-detector.py +0 -0
  101. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/scripts/mcp-serve.sh +0 -0
  102. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/scripts/ralph-rewind.py +0 -0
  103. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/scripts/ralph.py +0 -0
  104. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/scripts/ralph.sh +0 -0
  105. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/scripts/session-start.py +0 -0
  106. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/scripts/sync-plugin-version.py +0 -0
  107. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/scripts/version-check.py +0 -0
  108. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/skills/brownfield/SKILL.md +0 -0
  109. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/skills/cancel/SKILL.md +0 -0
  110. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/skills/evaluate/SKILL.md +0 -0
  111. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/skills/evolve/SKILL.md +0 -0
  112. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/skills/help/SKILL.md +0 -0
  113. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/skills/interview/SKILL.md +0 -0
  114. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/skills/pm/SKILL.md +0 -0
  115. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/skills/qa/SKILL.md +0 -0
  116. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/skills/ralph/SKILL.md +0 -0
  117. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/skills/run/SKILL.md +0 -0
  118. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/skills/seed/SKILL.md +0 -0
  119. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/skills/setup/SKILL.md +0 -0
  120. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/skills/status/SKILL.md +0 -0
  121. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/skills/tutorial/SKILL.md +0 -0
  122. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/skills/unstuck/SKILL.md +0 -0
  123. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/skills/update/SKILL.md +0 -0
  124. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/skills/welcome/SKILL.md +0 -0
  125. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/__init__.py +0 -0
  126. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/__main__.py +0 -0
  127. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/agents/__init__.py +0 -0
  128. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/agents/advocate.md +0 -0
  129. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/agents/analysis-agent.md +0 -0
  130. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/agents/architect.md +0 -0
  131. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/agents/breadth-keeper.md +0 -0
  132. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/agents/code-executor.md +0 -0
  133. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/agents/codebase-explorer.md +0 -0
  134. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/agents/consensus-reviewer.md +0 -0
  135. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/agents/contrarian.md +0 -0
  136. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/agents/evaluator.md +0 -0
  137. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/agents/hacker.md +0 -0
  138. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/agents/judge.md +0 -0
  139. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/agents/loader.py +0 -0
  140. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/agents/ontologist.md +0 -0
  141. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/agents/ontology-analyst.md +0 -0
  142. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/agents/qa-judge.md +0 -0
  143. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/agents/research-agent.md +0 -0
  144. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/agents/researcher.md +0 -0
  145. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/agents/seed-architect.md +0 -0
  146. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/agents/seed-closer.md +0 -0
  147. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/agents/semantic-evaluator.md +0 -0
  148. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/agents/simplifier.md +0 -0
  149. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/agents/socratic-interviewer.md +0 -0
  150. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/bigbang/__init__.py +0 -0
  151. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/bigbang/ambiguity.py +0 -0
  152. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/bigbang/brownfield.py +0 -0
  153. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/bigbang/explore.py +0 -0
  154. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/bigbang/interview.py +0 -0
  155. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/bigbang/pm_document.py +0 -0
  156. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/bigbang/pm_interview.py +0 -0
  157. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/bigbang/pm_seed.py +0 -0
  158. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/bigbang/question_classifier.py +0 -0
  159. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/bigbang/seed_generator.py +0 -0
  160. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/cli/__init__.py +0 -0
  161. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/cli/commands/__init__.py +0 -0
  162. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/cli/commands/cancel.py +0 -0
  163. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/cli/commands/config.py +0 -0
  164. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/cli/commands/init.py +0 -0
  165. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/cli/commands/mcp.py +0 -0
  166. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/cli/commands/pm.py +0 -0
  167. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/cli/commands/run.py +0 -0
  168. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/cli/commands/setup.py +0 -0
  169. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/cli/commands/status.py +0 -0
  170. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/cli/commands/tui.py +0 -0
  171. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/cli/formatters/__init__.py +0 -0
  172. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/cli/formatters/panels.py +0 -0
  173. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/cli/formatters/progress.py +0 -0
  174. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/cli/formatters/tables.py +0 -0
  175. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/cli/formatters/workflow_display.py +0 -0
  176. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/cli/main.py +0 -0
  177. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/codex/__init__.py +0 -0
  178. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/codex/artifacts.py +0 -0
  179. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/codex/ouroboros.md +0 -0
  180. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/codex_permissions.py +0 -0
  181. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/config/__init__.py +0 -0
  182. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/config/loader.py +0 -0
  183. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/config/models.py +0 -0
  184. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/core/__init__.py +0 -0
  185. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/core/ac_tree.py +0 -0
  186. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/core/context.py +0 -0
  187. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/core/errors.py +0 -0
  188. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/core/file_lock.py +0 -0
  189. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/core/git_workflow.py +0 -0
  190. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/core/lineage.py +0 -0
  191. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/core/ontology_aspect.py +0 -0
  192. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/core/ontology_questions.py +0 -0
  193. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/core/security.py +0 -0
  194. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/core/seed.py +0 -0
  195. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/core/text.py +0 -0
  196. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/core/types.py +0 -0
  197. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/evaluation/__init__.py +0 -0
  198. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/evaluation/artifact_collector.py +0 -0
  199. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/evaluation/consensus.py +0 -0
  200. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/evaluation/json_utils.py +0 -0
  201. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/evaluation/languages.py +0 -0
  202. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/evaluation/mechanical.py +0 -0
  203. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/evaluation/models.py +0 -0
  204. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/evaluation/pipeline.py +0 -0
  205. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/evaluation/semantic.py +0 -0
  206. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/evaluation/trigger.py +0 -0
  207. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/events/__init__.py +0 -0
  208. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/events/base.py +0 -0
  209. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/events/decomposition.py +0 -0
  210. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/events/evaluation.py +0 -0
  211. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/events/interview.py +0 -0
  212. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/events/lineage.py +0 -0
  213. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/events/ontology.py +0 -0
  214. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/evolution/__init__.py +0 -0
  215. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/evolution/convergence.py +0 -0
  216. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/evolution/loop.py +0 -0
  217. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/evolution/projector.py +0 -0
  218. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/evolution/reflect.py +0 -0
  219. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/evolution/regression.py +0 -0
  220. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/evolution/wonder.py +0 -0
  221. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/execution/__init__.py +0 -0
  222. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/execution/atomicity.py +0 -0
  223. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/execution/decomposition.py +0 -0
  224. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/execution/double_diamond.py +0 -0
  225. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/execution/subagent.py +0 -0
  226. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/mcp/__init__.py +0 -0
  227. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/mcp/client/__init__.py +0 -0
  228. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/mcp/client/adapter.py +0 -0
  229. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/mcp/client/manager.py +0 -0
  230. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/mcp/client/protocol.py +0 -0
  231. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/mcp/errors.py +0 -0
  232. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/mcp/job_manager.py +0 -0
  233. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/mcp/resources/__init__.py +0 -0
  234. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/mcp/resources/handlers.py +0 -0
  235. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/mcp/server/__init__.py +0 -0
  236. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/mcp/server/adapter.py +0 -0
  237. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/mcp/server/protocol.py +0 -0
  238. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/mcp/server/security.py +0 -0
  239. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/mcp/tools/__init__.py +0 -0
  240. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/mcp/tools/authoring_handlers.py +0 -0
  241. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/mcp/tools/brownfield_handler.py +0 -0
  242. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/mcp/tools/dashboard.py +0 -0
  243. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/mcp/tools/definitions.py +0 -0
  244. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/mcp/tools/evaluation_handlers.py +0 -0
  245. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/mcp/tools/evolution_handlers.py +0 -0
  246. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/mcp/tools/execution_handlers.py +0 -0
  247. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/mcp/tools/job_handlers.py +0 -0
  248. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/mcp/tools/pm_handler.py +0 -0
  249. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/mcp/tools/qa.py +0 -0
  250. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/mcp/tools/query_handlers.py +0 -0
  251. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/mcp/tools/registry.py +0 -0
  252. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/mcp/types.py +0 -0
  253. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/observability/__init__.py +0 -0
  254. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/observability/drift.py +0 -0
  255. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/observability/logging.py +0 -0
  256. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/observability/retrospective.py +0 -0
  257. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/orchestrator/__init__.py +0 -0
  258. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/orchestrator/adapter.py +0 -0
  259. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/orchestrator/codex_cli_runtime.py +0 -0
  260. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/orchestrator/command_dispatcher.py +0 -0
  261. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/orchestrator/coordinator.py +0 -0
  262. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/orchestrator/dependency_analyzer.py +0 -0
  263. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/orchestrator/events.py +0 -0
  264. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/orchestrator/execution_runtime_scope.py +0 -0
  265. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/orchestrator/execution_strategy.py +0 -0
  266. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/orchestrator/heartbeat.py +0 -0
  267. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/orchestrator/level_context.py +0 -0
  268. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/orchestrator/mcp_config.py +0 -0
  269. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/orchestrator/mcp_tools.py +0 -0
  270. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/orchestrator/parallel_executor.py +0 -0
  271. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/orchestrator/parallel_executor_models.py +0 -0
  272. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/orchestrator/runner.py +0 -0
  273. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/orchestrator/runtime_factory.py +0 -0
  274. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/orchestrator/runtime_message_projection.py +0 -0
  275. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/orchestrator/session.py +0 -0
  276. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/orchestrator/workflow_state.py +0 -0
  277. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/persistence/__init__.py +0 -0
  278. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/persistence/brownfield.py +0 -0
  279. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/persistence/checkpoint.py +0 -0
  280. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/persistence/event_store.py +0 -0
  281. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/persistence/migrations/__init__.py +0 -0
  282. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/persistence/migrations/runner.py +0 -0
  283. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/persistence/migrations/scripts/001_initial.sql +0 -0
  284. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/persistence/migrations/scripts/002_brownfield.sql +0 -0
  285. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/persistence/schema.py +0 -0
  286. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/persistence/uow.py +0 -0
  287. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/plugin/__init__.py +0 -0
  288. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/plugin/agents/__init__.py +0 -0
  289. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/plugin/agents/pool.py +0 -0
  290. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/plugin/agents/registry.py +0 -0
  291. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/plugin/orchestration/__init__.py +0 -0
  292. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/plugin/orchestration/router.py +0 -0
  293. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/plugin/orchestration/scheduler.py +0 -0
  294. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/plugin/skills/__init__.py +0 -0
  295. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/plugin/skills/docs.py +0 -0
  296. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/plugin/skills/executor.py +0 -0
  297. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/plugin/skills/keywords.py +0 -0
  298. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/plugin/skills/registry.py +0 -0
  299. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/pm/__init__.py +0 -0
  300. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/pm/renderer.py +0 -0
  301. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/providers/__init__.py +0 -0
  302. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/providers/anthropic_adapter.py +0 -0
  303. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/providers/base.py +0 -0
  304. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/providers/claude_code_adapter.py +0 -0
  305. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/providers/codex_cli_adapter.py +0 -0
  306. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/providers/codex_cli_stream.py +0 -0
  307. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/providers/factory.py +0 -0
  308. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/providers/litellm_adapter.py +0 -0
  309. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/py.typed +0 -0
  310. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/resilience/__init__.py +0 -0
  311. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/resilience/lateral.py +0 -0
  312. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/resilience/stagnation.py +0 -0
  313. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/routing/__init__.py +0 -0
  314. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/routing/complexity.py +0 -0
  315. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/routing/downgrade.py +0 -0
  316. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/routing/escalation.py +0 -0
  317. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/routing/router.py +0 -0
  318. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/routing/tiers.py +0 -0
  319. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/secondary/__init__.py +0 -0
  320. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/secondary/scheduler.py +0 -0
  321. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/secondary/todo_registry.py +0 -0
  322. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/strategies/__init__.py +0 -0
  323. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/strategies/devil_advocate.py +0 -0
  324. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/tui/__init__.py +0 -0
  325. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/tui/app.py +0 -0
  326. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/tui/components/__init__.py +0 -0
  327. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/tui/components/agents_panel.py +0 -0
  328. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/tui/components/event_log.py +0 -0
  329. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/tui/components/progress.py +0 -0
  330. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/tui/components/token_tracker.py +0 -0
  331. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/tui/events.py +0 -0
  332. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/tui/screens/__init__.py +0 -0
  333. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/tui/screens/confirm_rewind.py +0 -0
  334. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/tui/screens/dashboard.py +0 -0
  335. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/tui/screens/dashboard_v2.py +0 -0
  336. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/tui/screens/dashboard_v3.py +0 -0
  337. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/tui/screens/debug.py +0 -0
  338. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/tui/screens/execution.py +0 -0
  339. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/tui/screens/hud_dashboard.py +0 -0
  340. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/tui/screens/lineage_detail.py +0 -0
  341. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/tui/screens/lineage_selector.py +0 -0
  342. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/tui/screens/logs.py +0 -0
  343. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/tui/screens/session_selector.py +0 -0
  344. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/tui/widgets/__init__.py +0 -0
  345. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/tui/widgets/ac_progress.py +0 -0
  346. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/tui/widgets/ac_tree.py +0 -0
  347. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/tui/widgets/agent_activity.py +0 -0
  348. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/tui/widgets/cost_tracker.py +0 -0
  349. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/tui/widgets/drift_meter.py +0 -0
  350. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/tui/widgets/lineage_tree.py +0 -0
  351. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/tui/widgets/parallel_graph.py +0 -0
  352. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/tui/widgets/phase_progress.py +0 -0
  353. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/verification/__init__.py +0 -0
  354. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/verification/extractor.py +0 -0
  355. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/verification/models.py +0 -0
  356. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/src/ouroboros/verification/verifier.py +0 -0
  357. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/__init__.py +0 -0
  358. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/conftest.py +0 -0
  359. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/e2e/__init__.py +0 -0
  360. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/e2e/conftest.py +0 -0
  361. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/e2e/test_cli_commands.py +0 -0
  362. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/e2e/test_full_workflow.py +0 -0
  363. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/e2e/test_session_persistence.py +0 -0
  364. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/fixtures/test_atomicity_seed.yml +0 -0
  365. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/integration/__init__.py +0 -0
  366. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/integration/conftest.py +0 -0
  367. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/integration/mcp/__init__.py +0 -0
  368. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/integration/mcp/conftest.py +0 -0
  369. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/integration/mcp/test_client_adapter.py +0 -0
  370. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/integration/mcp/test_client_manager.py +0 -0
  371. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/integration/mcp/test_server_adapter.py +0 -0
  372. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/integration/plugin/test_orchestration.py +0 -0
  373. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/integration/test_codex_cli_passthrough_smoke.py +0 -0
  374. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/integration/test_codex_skill_fallback.py +0 -0
  375. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/integration/test_codex_skill_smoke.py +0 -0
  376. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/integration/test_entry_point.py +0 -0
  377. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/__init__.py +0 -0
  378. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/agents/__init__.py +0 -0
  379. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/agents/test_loader.py +0 -0
  380. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/bigbang/__init__.py +0 -0
  381. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/bigbang/test_ambiguity.py +0 -0
  382. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/bigbang/test_brownfield.py +0 -0
  383. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/bigbang/test_classifier_context.py +0 -0
  384. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/bigbang/test_decide_later_items.py +0 -0
  385. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/bigbang/test_explore.py +0 -0
  386. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/bigbang/test_interview.py +0 -0
  387. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/bigbang/test_pm_document_generator.py +0 -0
  388. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/bigbang/test_pm_document_writer.py +0 -0
  389. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/bigbang/test_pm_interview.py +0 -0
  390. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/bigbang/test_pm_interview_brownfield_db.py +0 -0
  391. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/bigbang/test_pm_seed_ac12.py +0 -0
  392. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/bigbang/test_pm_seed_save.py +0 -0
  393. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/bigbang/test_question_classifier.py +0 -0
  394. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/bigbang/test_seed_generator.py +0 -0
  395. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/cli/__init__.py +0 -0
  396. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/cli/formatters/__init__.py +0 -0
  397. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/cli/formatters/test_console.py +0 -0
  398. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/cli/formatters/test_panels.py +0 -0
  399. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/cli/formatters/test_progress.py +0 -0
  400. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/cli/formatters/test_tables.py +0 -0
  401. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/cli/formatters/test_workflow_display.py +0 -0
  402. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/cli/test_cancel.py +0 -0
  403. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/cli/test_init_pm_seed_detection.py +0 -0
  404. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/cli/test_init_runtime.py +0 -0
  405. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/cli/test_main.py +0 -0
  406. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/cli/test_mcp_nested_guard.py +0 -0
  407. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/cli/test_mcp_startup_cleanup.py +0 -0
  408. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/cli/test_pm_brownfield.py +0 -0
  409. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/cli/test_pm_overwrite.py +0 -0
  410. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/cli/test_pm_select_repos.py +0 -0
  411. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/cli/test_setup.py +0 -0
  412. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/config/__init__.py +0 -0
  413. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/config/test_loader.py +0 -0
  414. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/config/test_models.py +0 -0
  415. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/core/__init__.py +0 -0
  416. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/core/test_ac_tree.py +0 -0
  417. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/core/test_context.py +0 -0
  418. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/core/test_errors.py +0 -0
  419. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/core/test_git_workflow.py +0 -0
  420. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/core/test_lineage.py +0 -0
  421. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/core/test_ontology_aspect.py +0 -0
  422. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/core/test_ontology_questions.py +0 -0
  423. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/core/test_security.py +0 -0
  424. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/core/test_seed.py +0 -0
  425. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/core/test_types.py +0 -0
  426. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/evaluation/__init__.py +0 -0
  427. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/evaluation/test_consensus.py +0 -0
  428. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/evaluation/test_json_utils.py +0 -0
  429. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/evaluation/test_languages.py +0 -0
  430. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/evaluation/test_mechanical.py +0 -0
  431. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/evaluation/test_models.py +0 -0
  432. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/evaluation/test_semantic.py +0 -0
  433. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/evaluation/test_trigger.py +0 -0
  434. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/events/__init__.py +0 -0
  435. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/events/test_base.py +0 -0
  436. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/events/test_decomposition_events.py +0 -0
  437. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/evolution/test_wonder_scope.py +0 -0
  438. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/execution/__init__.py +0 -0
  439. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/execution/test_atomicity.py +0 -0
  440. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/execution/test_decomposition.py +0 -0
  441. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/execution/test_double_diamond.py +0 -0
  442. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/execution/test_subagent_isolation.py +0 -0
  443. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/mcp/__init__.py +0 -0
  444. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/mcp/client/__init__.py +0 -0
  445. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/mcp/client/test_adapter.py +0 -0
  446. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/mcp/client/test_manager.py +0 -0
  447. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/mcp/conftest.py +0 -0
  448. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/mcp/server/__init__.py +0 -0
  449. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/mcp/server/test_adapter.py +0 -0
  450. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/mcp/server/test_security.py +0 -0
  451. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/mcp/test_errors.py +0 -0
  452. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/mcp/test_job_manager.py +0 -0
  453. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/mcp/test_types.py +0 -0
  454. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/mcp/tools/__init__.py +0 -0
  455. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/mcp/tools/conftest.py +0 -0
  456. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/mcp/tools/test_brownfield_handler.py +0 -0
  457. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/mcp/tools/test_definitions.py +0 -0
  458. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/mcp/tools/test_pm_handler.py +0 -0
  459. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/mcp/tools/test_pm_handler_generate.py +0 -0
  460. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/mcp/tools/test_pm_handler_pending_reframe.py +0 -0
  461. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/mcp/tools/test_qa_integration.py +0 -0
  462. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/mcp/tools/test_registry.py +0 -0
  463. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/observability/__init__.py +0 -0
  464. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/observability/test_drift.py +0 -0
  465. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/observability/test_logging.py +0 -0
  466. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/observability/test_retrospective.py +0 -0
  467. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/orchestrator/__init__.py +0 -0
  468. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/orchestrator/test_adapter.py +0 -0
  469. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/orchestrator/test_codex_cli_runtime.py +0 -0
  470. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/orchestrator/test_codex_recursion_guard.py +0 -0
  471. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/orchestrator/test_command_dispatcher.py +0 -0
  472. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/orchestrator/test_coordinator.py +0 -0
  473. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/orchestrator/test_dependency_analyzer.py +0 -0
  474. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/orchestrator/test_events.py +0 -0
  475. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/orchestrator/test_execution_runtime_scope.py +0 -0
  476. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/orchestrator/test_execution_strategy.py +0 -0
  477. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/orchestrator/test_inflight_cancellation.py +0 -0
  478. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/orchestrator/test_level_context.py +0 -0
  479. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/orchestrator/test_mcp_config.py +0 -0
  480. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/orchestrator/test_mcp_tools.py +0 -0
  481. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/orchestrator/test_parallel_executor.py +0 -0
  482. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/orchestrator/test_parallel_executor_retry_resume.py +0 -0
  483. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/orchestrator/test_runner.py +0 -0
  484. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/orchestrator/test_runner_cancellation.py +0 -0
  485. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/orchestrator/test_runtime_factory.py +0 -0
  486. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/orchestrator/test_runtime_message_projection.py +0 -0
  487. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/orchestrator/test_session.py +0 -0
  488. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/orchestrator/test_workflow_state.py +0 -0
  489. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/persistence/__init__.py +0 -0
  490. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/persistence/test_brownfield_store.py +0 -0
  491. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/persistence/test_checkpoint.py +0 -0
  492. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/persistence/test_event_store.py +0 -0
  493. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/persistence/test_schema.py +0 -0
  494. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/persistence/test_uow.py +0 -0
  495. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/plugin/__init__.py +0 -0
  496. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/plugin/agents/__init__.py +0 -0
  497. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/plugin/agents/test_registry.py +0 -0
  498. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/plugin/orchestration/__init__.py +0 -0
  499. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/plugin/orchestration/test_model_router.py +0 -0
  500. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/plugin/skills/__init__.py +0 -0
  501. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/plugin/skills/test_keywords.py +0 -0
  502. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/plugin/skills/test_registry.py +0 -0
  503. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/pm/__init__.py +0 -0
  504. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/pm/test_renderer.py +0 -0
  505. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/providers/__init__.py +0 -0
  506. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/providers/test_base.py +0 -0
  507. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/providers/test_claude_code_adapter.py +0 -0
  508. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/providers/test_codex_cli_adapter.py +0 -0
  509. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/providers/test_factory.py +0 -0
  510. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/providers/test_litellm_adapter.py +0 -0
  511. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/resilience/__init__.py +0 -0
  512. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/resilience/test_lateral.py +0 -0
  513. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/resilience/test_stagnation.py +0 -0
  514. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/routing/__init__.py +0 -0
  515. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/routing/test_complexity.py +0 -0
  516. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/routing/test_downgrade.py +0 -0
  517. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/routing/test_escalation.py +0 -0
  518. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/routing/test_router.py +0 -0
  519. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/routing/test_tiers.py +0 -0
  520. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/scripts/test_keyword_detector.py +0 -0
  521. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/scripts/test_version_check.py +0 -0
  522. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/secondary/__init__.py +0 -0
  523. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/secondary/test_scheduler.py +0 -0
  524. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/secondary/test_todo_registry.py +0 -0
  525. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/test_artifact_collector.py +0 -0
  526. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/test_codex_artifacts.py +0 -0
  527. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/test_convergence.py +0 -0
  528. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/test_dashboard.py +0 -0
  529. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/test_dependencies_configured.py +0 -0
  530. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/test_evolve_rewind.py +0 -0
  531. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/test_evolve_step.py +0 -0
  532. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/test_graceful_shutdown.py +0 -0
  533. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/test_main_entry_point.py +0 -0
  534. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/test_module_structure.py +0 -0
  535. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/test_project_initialization.py +0 -0
  536. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/test_projector_rewind.py +0 -0
  537. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/test_ralph_parser.py +0 -0
  538. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/test_ralph_rewind.py +0 -0
  539. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/test_regression.py +0 -0
  540. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/test_tooling_configuration.py +0 -0
  541. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/test_verification.py +0 -0
  542. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/tui/__init__.py +0 -0
  543. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/tui/test_app.py +0 -0
  544. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/tui/test_cancelled_display.py +0 -0
  545. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/tui/test_events.py +0 -0
  546. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/tui/test_lineage_viewer.py +0 -0
  547. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/tui/test_screens.py +0 -0
  548. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/tui/test_session_selector_replay.py +0 -0
  549. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tests/unit/tui/test_widgets.py +0 -0
  550. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/tools/sync_github_project.py +0 -0
  551. {ouroboros_ai-0.26.2.dev21 → ouroboros_ai-0.26.2.dev26}/uv.lock +0 -0
@@ -0,0 +1,106 @@
1
+ name: Bug report
2
+ description: Report a reproducible problem in Ouroboros
3
+ title: "[Bug] "
4
+ labels:
5
+ - bug
6
+ body:
7
+ - type: markdown
8
+ attributes:
9
+ value: |
10
+ Actionable bug issues in Ouroboros should be detailed enough for someone else to reproduce and verify a fix.
11
+ - type: textarea
12
+ id: summary
13
+ attributes:
14
+ label: Summary
15
+ description: Describe the bug in one or two sentences.
16
+ placeholder: What is broken?
17
+ validations:
18
+ required: true
19
+ - type: textarea
20
+ id: impact
21
+ attributes:
22
+ label: Impact
23
+ description: Explain why this matters and who or what is blocked, broken, or confused by it.
24
+ placeholder: Why does this bug matter?
25
+ validations:
26
+ required: true
27
+ - type: textarea
28
+ id: environment
29
+ attributes:
30
+ label: Environment
31
+ description: Include the environment details needed to reason about the bug.
32
+ placeholder: |
33
+ - Ouroboros version (ouroboros --version):
34
+ - OS:
35
+ - Python version:
36
+ - Installation method:
37
+ - Model/provider:
38
+ - Relevant flags or config:
39
+ validations:
40
+ required: true
41
+ - type: textarea
42
+ id: steps
43
+ attributes:
44
+ label: Steps to reproduce
45
+ description: Provide a clear sequence someone else can follow.
46
+ placeholder: |
47
+ 1.
48
+ 2.
49
+ 3.
50
+ validations:
51
+ required: true
52
+ - type: textarea
53
+ id: expected
54
+ attributes:
55
+ label: Expected behavior
56
+ description: Describe what should happen.
57
+ placeholder: What did you expect instead?
58
+ validations:
59
+ required: true
60
+ - type: textarea
61
+ id: actual
62
+ attributes:
63
+ label: Actual behavior
64
+ description: Describe what happened instead.
65
+ placeholder: What actually happened?
66
+ validations:
67
+ required: true
68
+ - type: textarea
69
+ id: logs
70
+ attributes:
71
+ label: Logs or error output
72
+ description: Paste the most relevant output here.
73
+ render: text
74
+ validations:
75
+ required: false
76
+ - type: textarea
77
+ id: repro
78
+ attributes:
79
+ label: Minimal reproduction
80
+ description: Include the smallest seed, command, or config needed to reproduce the issue if possible.
81
+ placeholder: Minimal repro steps, config, or seed
82
+ validations:
83
+ required: false
84
+ - type: textarea
85
+ id: acceptance
86
+ attributes:
87
+ label: Acceptance criteria for fix
88
+ description: List the concrete conditions that will be true once this bug is fixed.
89
+ placeholder: |
90
+ - [ ]
91
+ - [ ]
92
+ validations:
93
+ required: false
94
+ - type: checkboxes
95
+ id: checklist
96
+ attributes:
97
+ label: Checklist
98
+ options:
99
+ - label: I searched existing issues before opening this report.
100
+ required: true
101
+ - label: I can reproduce this on the latest main branch or latest release.
102
+ required: true
103
+ - label: I included clear reproduction steps.
104
+ required: true
105
+ - label: I included enough detail for someone else to verify the fix.
106
+ required: true
@@ -0,0 +1,8 @@
1
+ blank_issues_enabled: true
2
+ contact_links:
3
+ - name: GitHub Discussions
4
+ url: https://github.com/Q00/ouroboros/discussions
5
+ about: Ask questions, share ideas, or start open-ended conversations here.
6
+ - name: Discord
7
+ url: https://discord.gg/8cW7Wfxnpu
8
+ about: Chat with the community and maintainers in real time.
@@ -0,0 +1,114 @@
1
+ name: Feature request
2
+ description: Propose a new feature or workflow improvement
3
+ title: "[Feature] "
4
+ labels:
5
+ - enhancement
6
+ body:
7
+ - type: markdown
8
+ attributes:
9
+ value: |
10
+ Lightweight structure helps both humans and tooling understand a proposal quickly.
11
+ - type: textarea
12
+ id: problem
13
+ attributes:
14
+ label: Problem
15
+ description: Describe the user, maintainer, or workflow problem that exists today.
16
+ placeholder: What problem exists right now?
17
+ validations:
18
+ required: true
19
+ - type: textarea
20
+ id: why-now
21
+ attributes:
22
+ label: Why now
23
+ description: Explain why this is worth doing now.
24
+ placeholder: Why is this worth doing now?
25
+ validations:
26
+ required: false
27
+ - type: textarea
28
+ id: persona
29
+ attributes:
30
+ label: User / persona
31
+ description: Describe who is affected by this problem.
32
+ placeholder: Who is affected?
33
+ validations:
34
+ required: false
35
+ - type: textarea
36
+ id: current
37
+ attributes:
38
+ label: Current behavior
39
+ description: Describe what happens today.
40
+ placeholder: What happens today?
41
+ validations:
42
+ required: false
43
+ - type: textarea
44
+ id: desired
45
+ attributes:
46
+ label: Desired behavior
47
+ description: Describe what should happen instead.
48
+ placeholder: What should happen instead?
49
+ validations:
50
+ required: true
51
+ - type: textarea
52
+ id: solution
53
+ attributes:
54
+ label: Proposed solution
55
+ description: Explain how you think this should work.
56
+ placeholder: What is your proposed solution?
57
+ validations:
58
+ required: false
59
+ - type: textarea
60
+ id: constraints
61
+ attributes:
62
+ label: Constraints
63
+ description: List technical, UX, policy, cost, or compatibility constraints.
64
+ placeholder: What boundaries or constraints matter here?
65
+ validations:
66
+ required: false
67
+ - type: textarea
68
+ id: non-goals
69
+ attributes:
70
+ label: Non-goals
71
+ description: Explain what is explicitly out of scope for this issue.
72
+ placeholder: What is this issue not trying to solve?
73
+ validations:
74
+ required: false
75
+ - type: textarea
76
+ id: alternatives
77
+ attributes:
78
+ label: Alternatives considered
79
+ description: List other approaches you considered.
80
+ placeholder: What other approaches did you consider?
81
+ validations:
82
+ required: false
83
+ - type: textarea
84
+ id: acceptance
85
+ attributes:
86
+ label: Acceptance criteria
87
+ description: List specific, testable statements that define done.
88
+ placeholder: |
89
+ - [ ]
90
+ - [ ]
91
+ - [ ]
92
+ validations:
93
+ required: true
94
+ - type: textarea
95
+ id: references
96
+ attributes:
97
+ label: References
98
+ description: Add mockups, examples, related issues, PRs, docs, or screenshots.
99
+ placeholder: Links, screenshots, references, or related issues
100
+ validations:
101
+ required: false
102
+ - type: checkboxes
103
+ id: checklist
104
+ attributes:
105
+ label: Checklist
106
+ options:
107
+ - label: I searched existing issues and discussions first.
108
+ required: true
109
+ - label: I explained the problem, not just the solution.
110
+ required: false
111
+ - label: I included clear scope boundaries and non-goals.
112
+ required: false
113
+ - label: I listed concrete acceptance criteria.
114
+ required: true
@@ -0,0 +1,58 @@
1
+ name: Question or usage help
2
+ description: Ask an actionable question when GitHub Discussions is not a better fit
3
+ title: "[Question] "
4
+ labels:
5
+ - question
6
+ body:
7
+ - type: markdown
8
+ attributes:
9
+ value: |
10
+ For open-ended discussion or general community chat, prefer GitHub Discussions or Discord.
11
+ - type: textarea
12
+ id: question
13
+ attributes:
14
+ label: Question
15
+ description: Explain what you are trying to do.
16
+ placeholder: What are you trying to do?
17
+ validations:
18
+ required: true
19
+ - type: textarea
20
+ id: context
21
+ attributes:
22
+ label: Context
23
+ description: Include the details needed for someone else to help.
24
+ placeholder: |
25
+ - Command or workflow:
26
+ - Seed or config involved:
27
+ - Expected outcome:
28
+ - What you already tried:
29
+ validations:
30
+ required: true
31
+ - type: textarea
32
+ id: output
33
+ attributes:
34
+ label: Relevant output
35
+ description: Paste any relevant output, errors, or logs.
36
+ render: text
37
+ validations:
38
+ required: false
39
+ - type: textarea
40
+ id: actionable
41
+ attributes:
42
+ label: Why this should be a GitHub issue
43
+ description: Explain why this looks actionable for maintainers rather than a general discussion question.
44
+ placeholder: Why should maintainers track this as an issue?
45
+ validations:
46
+ required: true
47
+ - type: checkboxes
48
+ id: checklist
49
+ attributes:
50
+ label: Checklist
51
+ options:
52
+ - label: I checked the README and docs first.
53
+ required: true
54
+ - label: I searched existing issues and discussions.
55
+ required: true
56
+ - label: I included enough context for someone else to help.
57
+ required: true
58
+
@@ -0,0 +1,33 @@
1
+ # Code of Conduct
2
+
3
+ Ouroboros is built around rigorous thinking, iteration, and care. We want the community to feel precise without becoming hostile.
4
+
5
+ ## Core expectations
6
+
7
+ - Question assumptions, not people.
8
+ - Seek clarity without humiliation.
9
+ - Prefer root causes over blame.
10
+ - Critique ideas with precision and care.
11
+ - Leave each cycle better than you found it.
12
+
13
+ ## Unacceptable behavior
14
+
15
+ - Harassment, intimidation, or abuse
16
+ - Personal attacks or demeaning language
17
+ - Publishing private information without permission
18
+ - Dogpiling, baiting, or repeated bad-faith engagement
19
+ - Conduct that makes the project unsafe for contributors or users
20
+
21
+ ## Enforcement
22
+
23
+ Project maintainers may remove, edit, or reject comments, commits, code, issues, pull requests, and other contributions that do not align with this Code of Conduct.
24
+
25
+ ## Reporting
26
+
27
+ For conduct-sensitive reports, email **jqyu.lee@gmail.com** directly. This is the private reporting path.
28
+
29
+ If no private path is available, open a GitHub issue titled "Conduct report" and include only the minimum information needed to route the report. Do **not** include private personal details, doxxing content, or anything that would further harm the affected person.
30
+
31
+ ## Scope
32
+
33
+ This Code of Conduct applies to repository discussions, issues, pull requests, code review, and related community spaces associated with Ouroboros.
@@ -52,6 +52,7 @@ uv run pytest tests/unit/ -q # run tests
52
52
  - Check [GitHub Issues](https://github.com/Q00/ouroboros/issues) for open tasks
53
53
  - For new features, open an issue first to discuss the approach
54
54
  - Label your issue with appropriate tags: `bug`, `enhancement`, `documentation`, etc.
55
+ - Treat actionable issues as structured work artifacts, not casual notes. See [Issue Quality Policy](./docs/contributing/issue-quality-policy.md).
55
56
 
56
57
  ### 2. Branch
57
58
 
@@ -114,13 +115,20 @@ uv run mypy src/ouroboros
114
115
  Found a bug? Please open an issue with:
115
116
 
116
117
  1. **Clear title**: Summarize the bug
117
- 2. **Description**: Steps to reproduce, expected vs actual behavior
118
- 3. **Environment**: Python version, OS, `uv run ouroboros --version`
119
- 4. **Logs**: Relevant error messages or stack traces
118
+ 2. **Impact**: Explain what is blocked or broken
119
+ 3. **Description**: Steps to reproduce, expected vs actual behavior
120
+ 4. **Acceptance criteria**: State what will be true once fixed
121
+ 5. **Environment**: Python version, OS, `uv run ouroboros --version`
122
+ 6. **Logs**: Relevant error messages or stack traces
120
123
 
121
- ```markdown
122
- ## Bug Description
123
- [What went wrong]
124
+ See the [Issue Quality Policy](./docs/contributing/issue-quality-policy.md) for the full bug issue standard.
125
+
126
+ ````markdown
127
+ ## Summary
128
+ [What is broken]
129
+
130
+ ## Impact
131
+ [Why this matters]
124
132
 
125
133
  ## Steps to Reproduce
126
134
  1. Run `ooo interview "test"`
@@ -130,6 +138,12 @@ Found a bug? Please open an issue with:
130
138
  ## Expected Behavior
131
139
  [What should happen]
132
140
 
141
+ ## Actual Behavior
142
+ [What happens instead]
143
+
144
+ ## Acceptance Criteria for Fix
145
+ - [ ] [Condition that proves the bug is fixed]
146
+
133
147
  ## Environment
134
148
  - Python: 3.12+
135
149
  - Ouroboros: v0.9.0
@@ -139,16 +153,24 @@ Found a bug? Please open an issue with:
139
153
  ```
140
154
  [paste error output]
141
155
  ```
142
- ```
156
+ ````
143
157
 
144
158
  ### Feature Proposals
145
159
 
146
- Have an idea? Open an issue with:
160
+ Have an idea? Open an issue only when it is structured enough to act on.
147
161
 
148
- 1. **Problem statement**: What problem does this solve?
149
- 2. **Proposed solution**: How should it work?
150
- 3. **Alternatives considered**: What other approaches did you think about?
151
- 4. **Scope**: Is this a breaking change? Can it be incremental?
162
+ Feature issues should be written in a **PRD-lite** format with:
163
+
164
+ 1. **Problem**: What problem exists today?
165
+ 2. **Why now**: Why is this worth doing now?
166
+ 3. **User / persona**: Who is affected?
167
+ 4. **Current vs desired behavior**: What changes?
168
+ 5. **Constraints and non-goals**: What boundaries matter?
169
+ 6. **Acceptance criteria**: What would make this done?
170
+
171
+ If the idea is still fuzzy, use GitHub Discussions or Discord first, then turn it into a structured issue.
172
+
173
+ See the [Issue Quality Policy](./docs/contributing/issue-quality-policy.md) for the full feature issue standard.
152
174
 
153
175
  ### Pull Requests
154
176
 
@@ -721,11 +743,15 @@ ls skills/*.yaml 2>/dev/null || echo "No skill YAML files found"
721
743
 
722
744
  - **GitHub Issues**: [Report bugs or request features](https://github.com/Q00/ouroboros/issues)
723
745
  - **GitHub Discussions**: [Ask questions or share ideas](https://github.com/Q00/ouroboros/discussions)
746
+ - **Security Reports**: See [SECURITY.md](./SECURITY.md) before reporting vulnerabilities
747
+ - **Community Conduct**: See [CODE_OF_CONDUCT.md](./CODE_OF_CONDUCT.md)
724
748
 
725
749
  ---
726
750
 
727
751
  ## Code of Conduct
728
752
 
753
+ The canonical community rules live in [CODE_OF_CONDUCT.md](./CODE_OF_CONDUCT.md).
754
+
729
755
  ### Our Pledge
730
756
 
731
757
  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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ouroboros-ai
3
- Version: 0.26.2.dev21
3
+ Version: 0.26.2.dev26
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
@@ -43,6 +43,8 @@ Ouroboros is a specification-first workflow engine for AI coding agents. It tran
43
43
  - [Testing Guide](./contributing/testing-guide.md) - Writing and running tests
44
44
  - [Key Patterns](./contributing/key-patterns.md) - Result type, immutability, event sourcing, protocols
45
45
  - [Findings Registry](./contributing/findings-registry.md) - Documentation audit findings registry
46
+ - [Issue Quality Policy](./contributing/issue-quality-policy.md) - Quality bar for actionable issues and PRD-lite feature requests
47
+
46
48
 
47
49
  ## Key Concepts
48
50
 
@@ -0,0 +1,29 @@
1
+ # Issue Quality Policy
2
+
3
+ This document explains why Ouroboros prefers structured GitHub issues.
4
+
5
+ GitHub is the source of truth for actionable work. Clear issues help maintainers, contributors, and future tooling understand what problem exists, what success looks like, and whether something is ready to implement.
6
+
7
+ ## What we prefer
8
+
9
+ - Bug reports should make reproduction and verification possible.
10
+ - Feature requests should explain the problem, the desired outcome, and what “done” looks like.
11
+ - Exploratory ideas should usually start in Discussions or Discord before becoming implementation issues.
12
+
13
+ ## Why this matters
14
+
15
+ - Better issue quality reduces clarification churn and off-target PRs.
16
+ - Structured issues are easier for both humans and tooling to read.
17
+ - Ambiguous issues are hard to review, scope, and verify safely.
18
+
19
+ ## Practical guidance
20
+
21
+ - For bugs, include enough detail for someone else to reproduce the problem.
22
+ - For features, focus on the problem and acceptance criteria before debating implementation details.
23
+ - If an idea is still fuzzy, discuss it first and turn it into a GitHub issue once it is actionable.
24
+
25
+ ## Maintainer guidance
26
+
27
+ - Ask for the minimum missing structure rather than rejecting an idea outright.
28
+ - Redirect open-ended brainstorming to Discussions or Discord when needed.
29
+ - Avoid starting implementation from issues that are too vague to verify.
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '0.26.2.dev21'
22
- __version_tuple__ = version_tuple = (0, 26, 2, 'dev21')
21
+ __version__ = version = '0.26.2.dev26'
22
+ __version_tuple__ = version_tuple = (0, 26, 2, 'dev26')
23
23
 
24
24
  __commit_id__ = commit_id = None