ouroboros-ai 0.43.3.dev6__tar.gz → 0.43.3.dev8__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1219) hide show
  1. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/PKG-INFO +1 -1
  2. ouroboros_ai-0.43.3.dev8/docs/rfc/context-first-inverted-interview.md +176 -0
  3. ouroboros_ai-0.43.3.dev8/docs/rfc/inverted-interview-intent-preservation.md +149 -0
  4. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/_version.py +2 -2
  5. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/auto/intent_guard.py +177 -19
  6. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/integration/auto/test_status_unified.py +1 -1
  7. ouroboros_ai-0.43.3.dev8/tests/unit/auto/test_inverted_interview_intent_guard.py +241 -0
  8. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/.claude/settings.json +0 -0
  9. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/.claude-plugin/.mcp.json +0 -0
  10. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/.claude-plugin/SKILL_CAPABILITY_GUIDE.md +0 -0
  11. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/.claude-plugin/marketplace.json +0 -0
  12. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/.claude-plugin/plugin.json +0 -0
  13. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/.claude-plugin/skills/auto/SKILL.md +0 -0
  14. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/.claude-plugin/skills/brownfield/SKILL.md +0 -0
  15. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/.claude-plugin/skills/cancel/SKILL.md +0 -0
  16. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/.claude-plugin/skills/evaluate/SKILL.md +0 -0
  17. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/.claude-plugin/skills/evolve/SKILL.md +0 -0
  18. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/.claude-plugin/skills/help/SKILL.md +0 -0
  19. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/.claude-plugin/skills/interview/SKILL.md +0 -0
  20. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/.claude-plugin/skills/pm/SKILL.md +0 -0
  21. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/.claude-plugin/skills/publish/SKILL.md +0 -0
  22. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/.claude-plugin/skills/qa/SKILL.md +0 -0
  23. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/.claude-plugin/skills/ralph/SKILL.md +0 -0
  24. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/.claude-plugin/skills/resume-session/SKILL.md +0 -0
  25. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/.claude-plugin/skills/run/SKILL.md +0 -0
  26. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/.claude-plugin/skills/seed/SKILL.md +0 -0
  27. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/.claude-plugin/skills/setup/SKILL.md +0 -0
  28. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/.claude-plugin/skills/status/SKILL.md +0 -0
  29. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/.claude-plugin/skills/tutorial/SKILL.md +0 -0
  30. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/.claude-plugin/skills/unstuck/SKILL.md +0 -0
  31. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/.claude-plugin/skills/update/SKILL.md +0 -0
  32. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/.claude-plugin/skills/welcome/SKILL.md +0 -0
  33. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/.codex/config.toml +0 -0
  34. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/.codex/hooks.json +0 -0
  35. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/.env.example +0 -0
  36. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  37. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  38. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  39. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/.github/ISSUE_TEMPLATE/question.yml +0 -0
  40. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  41. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/.github/dependabot.yml +0 -0
  42. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/.github/workflows/auto-boundary.yml +0 -0
  43. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/.github/workflows/auto-perf-budget.yml +0 -0
  44. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/.github/workflows/dev-publish.yml +0 -0
  45. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/.github/workflows/lint.yml +0 -0
  46. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/.github/workflows/max-turns-envelope.yml +0 -0
  47. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/.github/workflows/release.yml +0 -0
  48. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/.github/workflows/test.yml +0 -0
  49. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/.gitignore +0 -0
  50. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/.mcp.json +0 -0
  51. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/.ouroboros/mechanical.toml +0 -0
  52. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/.ouroboros/seeds/seed_73827177a2a3.yaml +0 -0
  53. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/.ouroboros/seeds/seed_78c8e6e41813.yaml +0 -0
  54. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/.pre-commit-config.yaml +0 -0
  55. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/.python-version +0 -0
  56. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/AGENTS.md +0 -0
  57. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/CHANGELOG.md +0 -0
  58. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/CLAUDE.md +0 -0
  59. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/CODE_OF_CONDUCT.md +0 -0
  60. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/CONTRIBUTING.md +0 -0
  61. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/Code-Review-Claude.md +0 -0
  62. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/Code-Review-Codex.md +0 -0
  63. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/HANDOFF.md +0 -0
  64. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/LICENSE +0 -0
  65. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/README.ko.md +0 -0
  66. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/README.md +0 -0
  67. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/README.zh-CN.md +0 -0
  68. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/SECURITY.md +0 -0
  69. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/UNINSTALL.md +0 -0
  70. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/commands/cancel.md +0 -0
  71. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/commands/evaluate.md +0 -0
  72. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/commands/evolve.md +0 -0
  73. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/commands/help.md +0 -0
  74. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/commands/interview.md +0 -0
  75. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/commands/ralph.md +0 -0
  76. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/commands/run.md +0 -0
  77. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/commands/seed.md +0 -0
  78. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/commands/setup.md +0 -0
  79. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/commands/status.md +0 -0
  80. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/commands/tutorial.md +0 -0
  81. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/commands/unstuck.md +0 -0
  82. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/commands/welcome.md +0 -0
  83. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/crates/ouroboros-tui/.gitignore +0 -0
  84. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/crates/ouroboros-tui/Cargo.lock +0 -0
  85. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/crates/ouroboros-tui/Cargo.toml +0 -0
  86. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/crates/ouroboros-tui/README.md +0 -0
  87. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/crates/ouroboros-tui/src/db.rs +0 -0
  88. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/crates/ouroboros-tui/src/main.rs +0 -0
  89. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/crates/ouroboros-tui/src/mock.rs +0 -0
  90. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/crates/ouroboros-tui/src/state.rs +0 -0
  91. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/crates/ouroboros-tui/src/views/dashboard.rs +0 -0
  92. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/crates/ouroboros-tui/src/views/execution.rs +0 -0
  93. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/crates/ouroboros-tui/src/views/lineage.rs +0 -0
  94. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/crates/ouroboros-tui/src/views/logs.rs +0 -0
  95. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/crates/ouroboros-tui/src/views/mod.rs +0 -0
  96. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/crates/ouroboros-tui/src/views/session_selector.rs +0 -0
  97. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/README.md +0 -0
  98. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/agentos/control-journal.md +0 -0
  99. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/agentos/fat-harness-baseline-metrics.md +0 -0
  100. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/agentos/issue-sequencing-graph.md +0 -0
  101. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/agentos/profile-taxonomy.md +0 -0
  102. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/agentos/projection-followups.md +0 -0
  103. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/agentos/projection-v1-scope.md +0 -0
  104. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/agentos/release-readiness.md +0 -0
  105. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/agentos/runtime-contract.md +0 -0
  106. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/agentos/traceguard-observation-protocol.md +0 -0
  107. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/agentos/traceguard-vs-legacy-benchmark.md +0 -0
  108. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/agentos/workflow-ir-projection-mapping.md +0 -0
  109. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/agentos/workflow-ir-v1.md +0 -0
  110. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/api/README.md +0 -0
  111. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/api/core.md +0 -0
  112. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/api/mcp.md +0 -0
  113. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/architecture.md +0 -0
  114. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/auto-interview-convergence-contract.md +0 -0
  115. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/auto-runtime-semantics.md +0 -0
  116. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/cli-reference.md +0 -0
  117. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/config-reference.md +0 -0
  118. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/contributing/agent-os-kernel-terminology.md +0 -0
  119. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/contributing/architecture-overview.md +0 -0
  120. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/contributing/control-contract.md +0 -0
  121. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/contributing/control-plane-followups.md +0 -0
  122. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/contributing/findings-registry.md +0 -0
  123. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/contributing/issue-quality-policy.md +0 -0
  124. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/contributing/key-patterns.md +0 -0
  125. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/contributing/testing-guide.md +0 -0
  126. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/contributing/verifier-evidence-policy.md +0 -0
  127. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/contributing/watchdog-cancellation.md +0 -0
  128. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/events.md +0 -0
  129. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/examples/mcp-config.yaml +0 -0
  130. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/examples/workflows/design-code-verify.md +0 -0
  131. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/examples/workflows/research-to-deliverable.md +0 -0
  132. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/getting-started.md +0 -0
  133. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/guides/agent-process-lifecycle.md +0 -0
  134. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/guides/evaluation-pipeline.md +0 -0
  135. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/guides/evolution-loop.md +0 -0
  136. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/guides/execution-vs-evaluation.md +0 -0
  137. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/guides/issue-176-subagent-mcp-inheritance.md +0 -0
  138. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/guides/mcp-best-practices.md +0 -0
  139. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/guides/mcp-bridge.md +0 -0
  140. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/guides/ooo-skill-dispatch-router.md +0 -0
  141. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/guides/opencode-subagent-bridge.md +0 -0
  142. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/guides/qa-backends.md +0 -0
  143. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/guides/seed-authoring.md +0 -0
  144. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/guides/tui-usage.md +0 -0
  145. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/guides/windows-wsl-troubleshooting.md +0 -0
  146. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/images/PLACEHOLDER_README.md +0 -0
  147. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/images/ouroboros.png +0 -0
  148. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/interview-advisory-fanout-comparison.html +0 -0
  149. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/ooo-auto-analysis.md +0 -0
  150. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/ooo-auto-evolution-plan.md +0 -0
  151. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/platform-support.md +0 -0
  152. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/rfc/config-coherence.md +0 -0
  153. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/rfc/contract-ledger.md +0 -0
  154. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/rfc/decomposition-reliability.md +0 -0
  155. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/rfc/disposable-memory.md +0 -0
  156. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/rfc/frugality-control-loop.md +0 -0
  157. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/rfc/frugality-proof-producers.md +0 -0
  158. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/rfc/interview-hardening.md +0 -0
  159. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/rfc/interview-milestone-lateral-contract.md +0 -0
  160. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/rfc/mesh.md +0 -0
  161. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/rfc/plugin-artifact-state-hook-contract.md +0 -0
  162. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/rfc/plugin-tool-call-hook-contract.md +0 -0
  163. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/rfc/runtime-delegation-contract.md +0 -0
  164. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/rfc/runtime-timeout-contract.md +0 -0
  165. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/rfc/spend-actuator-effort-dial.md +0 -0
  166. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/rfc/spend-estimator.md +0 -0
  167. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/rfc/transparency-breadcrumb-tui.md +0 -0
  168. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/rfc/userlevel-plugins.md +0 -0
  169. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/rfc/verdict-envelope-v1.md +0 -0
  170. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/runtime-capability-matrix.md +0 -0
  171. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/runtime-guides/claude-code.md +0 -0
  172. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/runtime-guides/codex.md +0 -0
  173. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/runtime-guides/copilot.md +0 -0
  174. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/runtime-guides/gemini.md +0 -0
  175. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/runtime-guides/gjc.md +0 -0
  176. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/runtime-guides/goose.md +0 -0
  177. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/runtime-guides/hermes.md +0 -0
  178. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/runtime-guides/kiro.md +0 -0
  179. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/runtime-guides/opencode.md +0 -0
  180. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/runtime-guides/pi.md +0 -0
  181. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/docs/runtime-guides/skill-capability-guides.md +0 -0
  182. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/examples/coordinator_test_seed.yaml +0 -0
  183. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/examples/dummy_seed.yaml +0 -0
  184. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/examples/parallel_subac_test_seed.yaml +0 -0
  185. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/examples/subac_test_seed.yaml +0 -0
  186. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/examples/task_manager/README.md +0 -0
  187. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/examples/task_manager/__init__.py +0 -0
  188. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/examples/task_manager/__main__.py +0 -0
  189. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/examples/task_manager/cli.py +0 -0
  190. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/examples/task_manager/models.py +0 -0
  191. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/examples/task_manager/storage.py +0 -0
  192. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/examples/test_display.py +0 -0
  193. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/hooks/hooks.json +0 -0
  194. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/llms-full.txt +0 -0
  195. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/llms.txt +0 -0
  196. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/project-context.md +0 -0
  197. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/pyproject.toml +0 -0
  198. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/scripts/check-auto-boundary.py +0 -0
  199. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/scripts/check-auto-perf-budget.py +0 -0
  200. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/scripts/check-max-turns-envelope.py +0 -0
  201. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/scripts/drift-monitor.py +0 -0
  202. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/scripts/install.sh +0 -0
  203. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/scripts/keyword-detector.py +0 -0
  204. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/scripts/mcp-serve.sh +0 -0
  205. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/scripts/ralph-rewind.py +0 -0
  206. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/scripts/ralph.py +0 -0
  207. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/scripts/ralph.sh +0 -0
  208. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/scripts/session-start.py +0 -0
  209. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/scripts/sync-plugin-version.py +0 -0
  210. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/scripts/version-check.py +0 -0
  211. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/skills/auto/SKILL.md +0 -0
  212. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/skills/brownfield/SKILL.md +0 -0
  213. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/skills/cancel/SKILL.md +0 -0
  214. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/skills/config/SKILL.md +0 -0
  215. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/skills/evaluate/SKILL.md +0 -0
  216. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/skills/evolve/SKILL.md +0 -0
  217. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/skills/help/SKILL.md +0 -0
  218. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/skills/interview/SKILL.md +0 -0
  219. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/skills/pm/SKILL.md +0 -0
  220. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/skills/publish/SKILL.md +0 -0
  221. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/skills/qa/SKILL.md +0 -0
  222. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/skills/ralph/SKILL.md +0 -0
  223. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/skills/resume-session/SKILL.md +0 -0
  224. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/skills/run/SKILL.md +0 -0
  225. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/skills/seed/SKILL.md +0 -0
  226. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/skills/setup/SKILL.md +0 -0
  227. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/skills/status/SKILL.md +0 -0
  228. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/skills/tutorial/SKILL.md +0 -0
  229. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/skills/unstuck/SKILL.md +0 -0
  230. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/skills/update/SKILL.md +0 -0
  231. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/skills/welcome/SKILL.md +0 -0
  232. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/__init__.py +0 -0
  233. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/__main__.py +0 -0
  234. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/agents/__init__.py +0 -0
  235. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/agents/advocate.md +0 -0
  236. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/agents/analysis-agent.md +0 -0
  237. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/agents/architect.md +0 -0
  238. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/agents/breadth-keeper.md +0 -0
  239. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/agents/code-executor.md +0 -0
  240. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/agents/codebase-explorer.md +0 -0
  241. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/agents/consensus-reviewer.md +0 -0
  242. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/agents/contrarian.md +0 -0
  243. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/agents/evaluator.md +0 -0
  244. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/agents/hacker.md +0 -0
  245. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/agents/judge.md +0 -0
  246. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/agents/loader.py +0 -0
  247. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/agents/ontologist.md +0 -0
  248. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/agents/ontology-analyst.md +0 -0
  249. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/agents/qa-judge.md +0 -0
  250. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/agents/research-agent.md +0 -0
  251. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/agents/researcher.md +0 -0
  252. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/agents/seed-architect.md +0 -0
  253. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/agents/seed-closer.md +0 -0
  254. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/agents/semantic-evaluator.md +0 -0
  255. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/agents/simplifier.md +0 -0
  256. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/agents/socratic-interviewer.md +0 -0
  257. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/auto/__init__.py +0 -0
  258. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/auto/adapters.py +0 -0
  259. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/auto/answerer.py +0 -0
  260. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/auto/auto_fill.py +0 -0
  261. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/auto/blocker_attribution.py +0 -0
  262. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/auto/checkpoint_commits.py +0 -0
  263. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/auto/domain_inference.py +0 -0
  264. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/auto/domain_profile.py +0 -0
  265. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/auto/execution_acceptance.py +0 -0
  266. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/auto/gap_detector.py +0 -0
  267. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/auto/grading.py +0 -0
  268. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/auto/handoff_contract.py +0 -0
  269. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/auto/interview_driver.py +0 -0
  270. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/auto/lateral_routing.py +0 -0
  271. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/auto/ledger.py +0 -0
  272. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/auto/ledger_seed.py +0 -0
  273. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/auto/listeners.py +0 -0
  274. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/auto/pipeline.py +0 -0
  275. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/auto/policies.py +0 -0
  276. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/auto/profiles/__init__.py +0 -0
  277. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/auto/profiles/coding.py +0 -0
  278. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/auto/profiles/research.py +0 -0
  279. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/auto/progress.py +0 -0
  280. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/auto/provenance.py +0 -0
  281. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/auto/recovery_plan.py +0 -0
  282. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/auto/repo_context.py +0 -0
  283. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/auto/resume_render.py +0 -0
  284. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/auto/runtime_routing.py +0 -0
  285. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/auto/safe_defaults.py +0 -0
  286. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/auto/seed_repairer.py +0 -0
  287. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/auto/seed_reviewer.py +0 -0
  288. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/auto/state.py +0 -0
  289. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/auto/task_class_application.py +0 -0
  290. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/auto/task_classes.py +0 -0
  291. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/auto/worktree.py +0 -0
  292. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/backends/__init__.py +0 -0
  293. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/backends/capabilities.py +0 -0
  294. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/backends/model_catalog.py +0 -0
  295. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/bigbang/__init__.py +0 -0
  296. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/bigbang/ambiguity.py +0 -0
  297. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/bigbang/brownfield.py +0 -0
  298. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/bigbang/explore.py +0 -0
  299. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/bigbang/interview.py +0 -0
  300. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/bigbang/pm_completion.py +0 -0
  301. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/bigbang/pm_document.py +0 -0
  302. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/bigbang/pm_interview.py +0 -0
  303. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/bigbang/pm_seed.py +0 -0
  304. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/bigbang/question_classifier.py +0 -0
  305. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/bigbang/seed_generator.py +0 -0
  306. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/claude_permissions.py +0 -0
  307. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/cli/__init__.py +0 -0
  308. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/cli/commands/__init__.py +0 -0
  309. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/cli/commands/auto.py +0 -0
  310. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/cli/commands/cancel.py +0 -0
  311. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/cli/commands/codex.py +0 -0
  312. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/cli/commands/config.py +0 -0
  313. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/cli/commands/detect.py +0 -0
  314. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/cli/commands/dispatch.py +0 -0
  315. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/cli/commands/init.py +0 -0
  316. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/cli/commands/job.py +0 -0
  317. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/cli/commands/mcp.py +0 -0
  318. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/cli/commands/mcp_doctor.py +0 -0
  319. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/cli/commands/plugin.py +0 -0
  320. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/cli/commands/plugin_dispatch.py +0 -0
  321. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/cli/commands/pm.py +0 -0
  322. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/cli/commands/qa.py +0 -0
  323. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/cli/commands/resume.py +0 -0
  324. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/cli/commands/run.py +0 -0
  325. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/cli/commands/setup.py +0 -0
  326. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/cli/commands/status.py +0 -0
  327. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/cli/commands/tui.py +0 -0
  328. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/cli/commands/uninstall.py +0 -0
  329. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/cli/commands/workflow_ir.py +0 -0
  330. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/cli/formatters/__init__.py +0 -0
  331. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/cli/formatters/panels.py +0 -0
  332. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/cli/formatters/progress.py +0 -0
  333. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/cli/formatters/prompting.py +0 -0
  334. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/cli/formatters/tables.py +0 -0
  335. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/cli/formatters/workflow_display.py +0 -0
  336. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/cli/jsonc.py +0 -0
  337. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/cli/main.py +0 -0
  338. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/cli/opencode_config.py +0 -0
  339. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/codex/__init__.py +0 -0
  340. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/codex/artifacts.py +0 -0
  341. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/codex/cli_policy.py +0 -0
  342. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/codex/ouroboros.md +0 -0
  343. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/codex/runtime_profile.py +0 -0
  344. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/codex_permissions.py +0 -0
  345. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/config/__init__.py +0 -0
  346. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/config/_model_defaults.py +0 -0
  347. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/config/loader.py +0 -0
  348. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/config/models.py +0 -0
  349. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/config_tui/__init__.py +0 -0
  350. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/config_tui/__main__.py +0 -0
  351. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/config_tui/app.py +0 -0
  352. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/config_tui/fields.py +0 -0
  353. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/config_tui/launcher.py +0 -0
  354. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/config_tui/persistence.py +0 -0
  355. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/copilot/__init__.py +0 -0
  356. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/copilot/cli_policy.py +0 -0
  357. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/copilot/model_discovery.py +0 -0
  358. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/copilot/runtime_profile.py +0 -0
  359. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/copilot_permissions.py +0 -0
  360. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/core/__init__.py +0 -0
  361. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/core/ac_tree.py +0 -0
  362. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/core/context.py +0 -0
  363. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/core/control_contract.py +0 -0
  364. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/core/directive.py +0 -0
  365. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/core/errors.py +0 -0
  366. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/core/file_lock.py +0 -0
  367. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/core/git_workflow.py +0 -0
  368. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/core/hitl_contract.py +0 -0
  369. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/core/hitl_resume.py +0 -0
  370. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/core/hitl_state.py +0 -0
  371. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/core/initial_context.py +0 -0
  372. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/core/json_utils.py +0 -0
  373. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/core/lineage.py +0 -0
  374. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/core/ontology_aspect.py +0 -0
  375. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/core/ontology_questions.py +0 -0
  376. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/core/project_paths.py +0 -0
  377. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/core/retry.py +0 -0
  378. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/core/runtime_transition.py +0 -0
  379. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/core/security.py +0 -0
  380. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/core/seed.py +0 -0
  381. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/core/seed_contract.py +0 -0
  382. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/core/seed_contract_prompt.py +0 -0
  383. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/core/text.py +0 -0
  384. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/core/ttl_cache.py +0 -0
  385. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/core/types.py +0 -0
  386. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/core/worktree.py +0 -0
  387. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/evaluation/__init__.py +0 -0
  388. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/evaluation/artifact_collector.py +0 -0
  389. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/evaluation/checklist.py +0 -0
  390. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/evaluation/consensus.py +0 -0
  391. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/evaluation/detector.py +0 -0
  392. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/evaluation/json_utils.py +0 -0
  393. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/evaluation/languages.py +0 -0
  394. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/evaluation/mechanical.py +0 -0
  395. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/evaluation/models.py +0 -0
  396. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/evaluation/pipeline.py +0 -0
  397. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/evaluation/semantic.py +0 -0
  398. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/evaluation/trigger.py +0 -0
  399. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/evaluation/verification_artifacts.py +0 -0
  400. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/events/__init__.py +0 -0
  401. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/events/base.py +0 -0
  402. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/events/control.py +0 -0
  403. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/events/evaluation.py +0 -0
  404. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/events/hitl.py +0 -0
  405. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/events/interview.py +0 -0
  406. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/events/io.py +0 -0
  407. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/events/io_recorder.py +0 -0
  408. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/events/lineage.py +0 -0
  409. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/events/ontology.py +0 -0
  410. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/evolution/__init__.py +0 -0
  411. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/evolution/convergence.py +0 -0
  412. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/evolution/directive_mapping.py +0 -0
  413. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/evolution/loop.py +0 -0
  414. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/evolution/material_progress.py +0 -0
  415. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/evolution/projector.py +0 -0
  416. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/evolution/reflect.py +0 -0
  417. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/evolution/regression.py +0 -0
  418. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/evolution/watchdog.py +0 -0
  419. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/evolution/wonder.py +0 -0
  420. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/gjc_bridge/index.ts +0 -0
  421. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/harness/__init__.py +0 -0
  422. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/harness/claim_term_guard.py +0 -0
  423. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/harness/deliver_gate.py +0 -0
  424. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/harness/deliver_routing.py +0 -0
  425. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/harness/journal.py +0 -0
  426. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/harness/projection.py +0 -0
  427. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/harness/projection_builder.py +0 -0
  428. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/harness/run_snapshot.py +0 -0
  429. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/hermes/__init__.py +0 -0
  430. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/hermes/artifacts.py +0 -0
  431. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/kiro/__init__.py +0 -0
  432. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/kiro/cli_policy.py +0 -0
  433. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/mcp/__init__.py +0 -0
  434. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/mcp/bridge/__init__.py +0 -0
  435. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/mcp/bridge/bridge.py +0 -0
  436. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/mcp/bridge/config.py +0 -0
  437. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/mcp/bridge/factory.py +0 -0
  438. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/mcp/client/__init__.py +0 -0
  439. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/mcp/client/adapter.py +0 -0
  440. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/mcp/client/manager.py +0 -0
  441. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/mcp/client/protocol.py +0 -0
  442. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/mcp/errors.py +0 -0
  443. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/mcp/job_manager.py +0 -0
  444. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/mcp/resources/__init__.py +0 -0
  445. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/mcp/resources/handlers.py +0 -0
  446. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/mcp/server/__init__.py +0 -0
  447. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/mcp/server/adapter.py +0 -0
  448. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/mcp/server/protocol.py +0 -0
  449. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/mcp/server/security.py +0 -0
  450. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/mcp/tools/__init__.py +0 -0
  451. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/mcp/tools/ac_tree_hud_handler.py +0 -0
  452. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/mcp/tools/ac_tree_hud_render.py +0 -0
  453. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/mcp/tools/authoring_handlers.py +0 -0
  454. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/mcp/tools/auto_handler.py +0 -0
  455. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/mcp/tools/background.py +0 -0
  456. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/mcp/tools/bridge_mixin.py +0 -0
  457. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/mcp/tools/brownfield_handler.py +0 -0
  458. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/mcp/tools/dashboard.py +0 -0
  459. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/mcp/tools/definitions.py +0 -0
  460. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/mcp/tools/evaluation_handlers.py +0 -0
  461. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/mcp/tools/evolution_handlers.py +0 -0
  462. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/mcp/tools/execution_handlers.py +0 -0
  463. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/mcp/tools/job_handlers.py +0 -0
  464. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/mcp/tools/pm_handler.py +0 -0
  465. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/mcp/tools/projection_handlers.py +0 -0
  466. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/mcp/tools/qa.py +0 -0
  467. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/mcp/tools/query_handlers.py +0 -0
  468. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/mcp/tools/ralph_handlers.py +0 -0
  469. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/mcp/tools/registry.py +0 -0
  470. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/mcp/tools/subagent.py +0 -0
  471. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/mcp/types.py +0 -0
  472. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/observability/__init__.py +0 -0
  473. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/observability/drift.py +0 -0
  474. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/observability/logging.py +0 -0
  475. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/observability/retrospective.py +0 -0
  476. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/opencode/__init__.py +0 -0
  477. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/opencode/plugin/__init__.py +0 -0
  478. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/opencode/plugin/opencode-plugin.d.ts +0 -0
  479. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/opencode/plugin/ouroboros-bridge.test.ts +0 -0
  480. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/opencode/plugin/ouroboros-bridge.ts +0 -0
  481. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/opencode/plugin/package.json +0 -0
  482. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/opencode/plugin/tsconfig.json +0 -0
  483. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/__init__.py +0 -0
  484. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/adapter.py +0 -0
  485. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/agent_process.py +0 -0
  486. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/agent_runtime_context.py +0 -0
  487. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/backend_limits.py +0 -0
  488. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/baseline_metrics.py +0 -0
  489. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/baseline_metrics_capture.py +0 -0
  490. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/baseline_metrics_format.py +0 -0
  491. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/capabilities.py +0 -0
  492. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/codex_cli_runtime.py +0 -0
  493. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/command_dispatcher.py +0 -0
  494. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/context_governor.py +0 -0
  495. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/control_bus.py +0 -0
  496. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/control_plane.py +0 -0
  497. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/coordinator.py +0 -0
  498. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/copilot_cli_runtime.py +0 -0
  499. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/decomposition_params.py +0 -0
  500. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/dependency_analyzer.py +0 -0
  501. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/effort_routing.py +0 -0
  502. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/events.py +0 -0
  503. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/evidence_schema.py +0 -0
  504. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/execution_runtime_scope.py +0 -0
  505. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/execution_strategy.py +0 -0
  506. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/failure_taxonomy.py +0 -0
  507. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/frugality_proof.py +0 -0
  508. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/gemini_cli_runtime.py +0 -0
  509. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/gjc_runtime.py +0 -0
  510. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/goose_runtime.py +0 -0
  511. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/heartbeat.py +0 -0
  512. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/hermes_runtime.py +0 -0
  513. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/kiro_adapter.py +0 -0
  514. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/level_context.py +0 -0
  515. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/mcp_config.py +0 -0
  516. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/mcp_tools.py +0 -0
  517. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/opencode_event_normalizer.py +0 -0
  518. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/opencode_runtime.py +0 -0
  519. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/parallel_executor.py +0 -0
  520. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/parallel_executor_models.py +0 -0
  521. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/phase_wrappers.py +0 -0
  522. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/pi_runtime.py +0 -0
  523. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/policy.py +0 -0
  524. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/profile_loader.py +0 -0
  525. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/profile_strategy.py +0 -0
  526. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/rate_limit.py +0 -0
  527. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/runner.py +0 -0
  528. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/runtime_error.py +0 -0
  529. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/runtime_evidence.py +0 -0
  530. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/runtime_factory.py +0 -0
  531. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/runtime_message_projection.py +0 -0
  532. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/runtime_param_negotiation.py +0 -0
  533. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/session.py +0 -0
  534. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/skill_intercept.py +0 -0
  535. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/skill_tool_mapping.py +0 -0
  536. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/stage.py +0 -0
  537. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/traceguard_benchmark_capture.py +0 -0
  538. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/verifier.py +0 -0
  539. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/workflow_ir.py +0 -0
  540. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/workflow_ir_adapter.py +0 -0
  541. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/workflow_lifecycle.py +0 -0
  542. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator/workflow_state.py +0 -0
  543. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/orchestrator_stage.py +0 -0
  544. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/persistence/__init__.py +0 -0
  545. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/persistence/brownfield.py +0 -0
  546. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/persistence/checkpoint.py +0 -0
  547. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/persistence/event_store.py +0 -0
  548. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/persistence/migrations/__init__.py +0 -0
  549. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/persistence/migrations/runner.py +0 -0
  550. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/persistence/migrations/scripts/001_initial.sql +0 -0
  551. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/persistence/migrations/scripts/002_brownfield.sql +0 -0
  552. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/persistence/schema.py +0 -0
  553. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/persistence/uow.py +0 -0
  554. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/plugin/__init__.py +0 -0
  555. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/plugin/agents/__init__.py +0 -0
  556. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/plugin/agents/pool.py +0 -0
  557. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/plugin/agents/registry.py +0 -0
  558. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/plugin/digest.py +0 -0
  559. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/plugin/firewall.py +0 -0
  560. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/plugin/hooks.py +0 -0
  561. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/plugin/ledger_adapter.py +0 -0
  562. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/plugin/lockfile.py +0 -0
  563. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/plugin/manifest.py +0 -0
  564. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/plugin/schemas/0.1/_source.json +0 -0
  565. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/plugin/schemas/0.1/audit-event.schema.json +0 -0
  566. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/plugin/schemas/0.1/plugin.schema.json +0 -0
  567. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/plugin/schemas/0.2/_source.json +0 -0
  568. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/plugin/schemas/0.2/audit-event.schema.json +0 -0
  569. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/plugin/schemas/0.2/plugin.schema.json +0 -0
  570. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/plugin/schemas/0.3/_source.json +0 -0
  571. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/plugin/schemas/0.3/audit-event.schema.json +0 -0
  572. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/plugin/schemas/0.3/plugin.schema.json +0 -0
  573. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/plugin/schemas/0.4/_source.json +0 -0
  574. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/plugin/schemas/0.4/audit-event.schema.json +0 -0
  575. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/plugin/schemas/0.4/plugin.schema.json +0 -0
  576. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/plugin/skills/__init__.py +0 -0
  577. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/plugin/skills/docs.py +0 -0
  578. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/plugin/skills/executor.py +0 -0
  579. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/plugin/skills/keywords.py +0 -0
  580. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/plugin/skills/registry.py +0 -0
  581. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/plugin/trust_store.py +0 -0
  582. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/plugin/userlevel_registry.py +0 -0
  583. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/pm/__init__.py +0 -0
  584. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/pm/handoff.py +0 -0
  585. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/pm/renderer.py +0 -0
  586. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/profiles/analysis.yaml +0 -0
  587. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/profiles/code.yaml +0 -0
  588. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/profiles/research.yaml +0 -0
  589. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/providers/__init__.py +0 -0
  590. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/providers/anthropic_adapter.py +0 -0
  591. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/providers/base.py +0 -0
  592. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/providers/claude_code_adapter.py +0 -0
  593. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/providers/codex_cli_adapter.py +0 -0
  594. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/providers/codex_cli_stream.py +0 -0
  595. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/providers/copilot_cli_adapter.py +0 -0
  596. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/providers/factory.py +0 -0
  597. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/providers/gemini_cli_adapter.py +0 -0
  598. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/providers/gemini_event_normalizer.py +0 -0
  599. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/providers/gjc_llm_adapter.py +0 -0
  600. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/providers/gjc_rpc_protocol.py +0 -0
  601. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/providers/goose_cli_adapter.py +0 -0
  602. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/providers/hermes_cli_adapter.py +0 -0
  603. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/providers/kiro_adapter.py +0 -0
  604. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/providers/litellm_adapter.py +0 -0
  605. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/providers/opencode_adapter.py +0 -0
  606. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/providers/ourocode_acp_client.py +0 -0
  607. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/providers/ourocode_llm_adapter.py +0 -0
  608. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/providers/pi_llm_adapter.py +0 -0
  609. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/providers/profiles.py +0 -0
  610. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/providers/tool_use_diagnostics.py +0 -0
  611. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/py.typed +0 -0
  612. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/ralph_loop.py +0 -0
  613. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/resilience/__init__.py +0 -0
  614. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/resilience/lateral.py +0 -0
  615. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/resilience/recovery.py +0 -0
  616. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/resilience/stagnation.py +0 -0
  617. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/router/__init__.py +0 -0
  618. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/router/command_parser.py +0 -0
  619. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/router/dispatch.py +0 -0
  620. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/router/registry.py +0 -0
  621. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/router/types.py +0 -0
  622. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/runtime/__init__.py +0 -0
  623. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/runtime/child_env.py +0 -0
  624. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/runtime/controls.py +0 -0
  625. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/runtime/watchdog.py +0 -0
  626. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/runtime_instruction_artifacts.py +0 -0
  627. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/sandbox.py +0 -0
  628. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/skills/__init__.py +0 -0
  629. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/skills/artifacts.py +0 -0
  630. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/strategies/__init__.py +0 -0
  631. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/strategies/devil_advocate.py +0 -0
  632. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/tui/__init__.py +0 -0
  633. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/tui/app.py +0 -0
  634. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/tui/components/__init__.py +0 -0
  635. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/tui/components/agents_panel.py +0 -0
  636. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/tui/components/event_log.py +0 -0
  637. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/tui/components/progress.py +0 -0
  638. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/tui/components/token_tracker.py +0 -0
  639. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/tui/events.py +0 -0
  640. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/tui/screens/__init__.py +0 -0
  641. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/tui/screens/confirm_rewind.py +0 -0
  642. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/tui/screens/dashboard.py +0 -0
  643. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/tui/screens/dashboard_v2.py +0 -0
  644. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/tui/screens/dashboard_v3.py +0 -0
  645. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/tui/screens/debug.py +0 -0
  646. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/tui/screens/execution.py +0 -0
  647. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/tui/screens/hud_dashboard.py +0 -0
  648. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/tui/screens/lineage_detail.py +0 -0
  649. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/tui/screens/lineage_selector.py +0 -0
  650. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/tui/screens/logs.py +0 -0
  651. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/tui/screens/session_selector.py +0 -0
  652. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/tui/widgets/__init__.py +0 -0
  653. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/tui/widgets/ac_progress.py +0 -0
  654. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/tui/widgets/ac_tree.py +0 -0
  655. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/tui/widgets/agent_activity.py +0 -0
  656. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/tui/widgets/cost_tracker.py +0 -0
  657. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/tui/widgets/drift_meter.py +0 -0
  658. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/tui/widgets/lineage_tree.py +0 -0
  659. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/tui/widgets/parallel_graph.py +0 -0
  660. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/tui/widgets/phase_progress.py +0 -0
  661. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/verification/__init__.py +0 -0
  662. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/verification/extractor.py +0 -0
  663. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/verification/models.py +0 -0
  664. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/src/ouroboros/verification/verifier.py +0 -0
  665. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/__init__.py +0 -0
  666. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/_envelope_wiring.py +0 -0
  667. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/canonical/README.md +0 -0
  668. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/canonical/__init__.py +0 -0
  669. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/canonical/cli-todo/expected.yaml +0 -0
  670. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/canonical/cli-todo/goal.txt +0 -0
  671. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/canonical/conftest.py +0 -0
  672. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/canonical/test_canonical.py +0 -0
  673. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/canonical/test_conftest.py +0 -0
  674. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/conformance/__init__.py +0 -0
  675. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/conformance/workflow_ir/__init__.py +0 -0
  676. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/conformance/workflow_ir/fixtures.py +0 -0
  677. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/conformance/workflow_ir/test_negative_fixtures.py +0 -0
  678. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/conformance/workflow_ir/test_plugin_firewall_contract.py +0 -0
  679. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/conformance/workflow_ir/test_positive_fixtures.py +0 -0
  680. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/conftest.py +0 -0
  681. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/e2e/__init__.py +0 -0
  682. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/e2e/conftest.py +0 -0
  683. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/e2e/mcp_bridge_test_config.yaml +0 -0
  684. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/e2e/test_cli_commands.py +0 -0
  685. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/e2e/test_full_workflow.py +0 -0
  686. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/e2e/test_session_persistence.py +0 -0
  687. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/fixtures/fake_ourocode_acp.py +0 -0
  688. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/fixtures/plugins-fixture/README.md +0 -0
  689. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/fixtures/plugins-fixture/plugins/github-pr-ops/github_pr_ops/__init__.py +0 -0
  690. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/fixtures/plugins-fixture/plugins/github-pr-ops/github_pr_ops/__main__.py +0 -0
  691. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/fixtures/plugins-fixture/plugins/github-pr-ops/ouroboros.plugin.json +0 -0
  692. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/fixtures/projection/mechanical_evaluation_events.json +0 -0
  693. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/fixtures/router/skills/frontmatter-body/run/SKILL.md +0 -0
  694. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/fixtures/seeds/mechanical-eval-minimal.yaml +0 -0
  695. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/integration/__init__.py +0 -0
  696. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/integration/auto/__init__.py +0 -0
  697. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/integration/auto/test_dispatch_to_seed_e2e.py +0 -0
  698. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/integration/auto/test_domain_profile_plurality.py +0 -0
  699. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/integration/auto/test_end_to_end_product.py +0 -0
  700. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/integration/auto/test_interview_deadline_partial_product_regression.py +0 -0
  701. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/integration/conftest.py +0 -0
  702. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/integration/mcp/__init__.py +0 -0
  703. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/integration/mcp/bridge/__init__.py +0 -0
  704. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/integration/mcp/bridge/test_bridge_server_to_server.py +0 -0
  705. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/integration/mcp/conftest.py +0 -0
  706. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/integration/mcp/test_client_adapter.py +0 -0
  707. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/integration/mcp/test_client_manager.py +0 -0
  708. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/integration/mcp/test_server_adapter.py +0 -0
  709. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/integration/orchestrator/__init__.py +0 -0
  710. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/integration/orchestrator/test_agent_process_three_surface_acceptance.py +0 -0
  711. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/integration/plugin/__init__.py +0 -0
  712. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/integration/plugin/test_e2e.py +0 -0
  713. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/integration/plugin/test_orchestration.py +0 -0
  714. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/integration/plugin/test_wheel_packaging.py +0 -0
  715. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/integration/test_cancel_subprocess_termination.py +0 -0
  716. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/integration/test_codex_cli_passthrough_smoke.py +0 -0
  717. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/integration/test_codex_skill_fallback.py +0 -0
  718. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/integration/test_codex_skill_smoke.py +0 -0
  719. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/integration/test_copilot_cli_smoke.py +0 -0
  720. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/integration/test_entry_point.py +0 -0
  721. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/integration/test_ir_projection_consistency.py +0 -0
  722. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/integration/test_mechanical_eval_projection.py +0 -0
  723. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/integration/test_pi_native_smoke.py +0 -0
  724. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/test-execution-plan.md +0 -0
  725. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/__init__.py +0 -0
  726. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/agents/__init__.py +0 -0
  727. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/agents/test_loader.py +0 -0
  728. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/conftest.py +0 -0
  729. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_821_acceptance_matrix.py +0 -0
  730. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_adapters_client_gates.py +0 -0
  731. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_adapters_ralph_poller.py +0 -0
  732. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_answer_refiner_adapter.py +0 -0
  733. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_answer_source_log.py +0 -0
  734. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_answerer_via_domain_profile.py +0 -0
  735. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_auto_fill.py +0 -0
  736. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_auto_policies.py +0 -0
  737. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_auto_worktree.py +0 -0
  738. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_blocker_attribution.py +0 -0
  739. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_checkpoint_commits.py +0 -0
  740. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_cli_progress.py +0 -0
  741. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_domain_inference.py +0 -0
  742. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_domain_profile_coding_parity.py +0 -0
  743. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_domain_profile_contracts.py +0 -0
  744. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_execution_acceptance.py +0 -0
  745. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_handoff_contract.py +0 -0
  746. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_intent_guard.py +0 -0
  747. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_interview_answer_refiner.py +0 -0
  748. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_interview_driver_event_store_wiring.py +0 -0
  749. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_interview_pipeline.py +0 -0
  750. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_interview_stagnation_lateral.py +0 -0
  751. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_lateral_routing_safe_default.py +0 -0
  752. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_ledger_committed_decisions.py +0 -0
  753. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_ledger_grading_answerer.py +0 -0
  754. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_ledger_seed.py +0 -0
  755. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_pipeline_deadline.py +0 -0
  756. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_pipeline_defaulted_sections_surface.py +0 -0
  757. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_pipeline_domain_profile.py +0 -0
  758. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_pipeline_evaluate.py +0 -0
  759. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_pipeline_interview_deadline_closure.py +0 -0
  760. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_pipeline_interview_observer_drain.py +0 -0
  761. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_pipeline_lateral.py +0 -0
  762. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_pipeline_oscillation_lateral.py +0 -0
  763. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_pipeline_partial_product_terminal.py +0 -0
  764. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_pipeline_provenance.py +0 -0
  765. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_pipeline_ralph_handoff.py +0 -0
  766. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_pipeline_runtime_probe_envelope.py +0 -0
  767. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_pipeline_task_class_envelope.py +0 -0
  768. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_pipeline_watchdog_integration.py +0 -0
  769. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_progress.py +0 -0
  770. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_recovery_plan.py +0 -0
  771. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_research_profile.py +0 -0
  772. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_run_starter_idempotency.py +0 -0
  773. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_runtime_routing.py +0 -0
  774. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_runtime_semantics.py +0 -0
  775. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_safe_default_lateral_escalation.py +0 -0
  776. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_safe_default_observability.py +0 -0
  777. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_safe_defaults_domain_profile.py +0 -0
  778. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_safe_defaults_freedom_policy.py +0 -0
  779. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_safe_defaults_prompt_non_goals.py +0 -0
  780. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_seed_repairer_bounded.py +0 -0
  781. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_state.py +0 -0
  782. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_state_provenance.py +0 -0
  783. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_stop_reason_code.py +0 -0
  784. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_surface.py +0 -0
  785. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_task_class_application.py +0 -0
  786. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_task_classes.py +0 -0
  787. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/auto/test_user_preference_and_floor.py +0 -0
  788. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/backends/test_capabilities.py +0 -0
  789. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/backends/test_model_catalog.py +0 -0
  790. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/bigbang/__init__.py +0 -0
  791. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/bigbang/test_ambiguity.py +0 -0
  792. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/bigbang/test_brownfield.py +0 -0
  793. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/bigbang/test_classifier_context.py +0 -0
  794. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/bigbang/test_decide_later_items.py +0 -0
  795. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/bigbang/test_explore.py +0 -0
  796. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/bigbang/test_interview.py +0 -0
  797. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/bigbang/test_interview_async_io.py +0 -0
  798. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/bigbang/test_interview_no_web_search_hint.py +0 -0
  799. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/bigbang/test_interview_research_prefix.py +0 -0
  800. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/bigbang/test_interview_start_persist_failure.py +0 -0
  801. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/bigbang/test_pm_completion.py +0 -0
  802. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/bigbang/test_pm_document_generator.py +0 -0
  803. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/bigbang/test_pm_document_writer.py +0 -0
  804. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/bigbang/test_pm_interview.py +0 -0
  805. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/bigbang/test_pm_interview_brownfield_db.py +0 -0
  806. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/bigbang/test_pm_seed_ac12.py +0 -0
  807. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/bigbang/test_pm_seed_save.py +0 -0
  808. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/bigbang/test_question_classifier.py +0 -0
  809. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/bigbang/test_seed_generator.py +0 -0
  810. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/__init__.py +0 -0
  811. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/commands/test_config_bare_dispatch.py +0 -0
  812. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/commands/test_tui_command.py +0 -0
  813. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/conftest.py +0 -0
  814. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/formatters/__init__.py +0 -0
  815. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/formatters/test_console.py +0 -0
  816. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/formatters/test_panels.py +0 -0
  817. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/formatters/test_progress.py +0 -0
  818. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/formatters/test_prompting.py +0 -0
  819. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/formatters/test_tables.py +0 -0
  820. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/formatters/test_workflow_display.py +0 -0
  821. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/test_auto_command.py +0 -0
  822. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/test_auto_domain_activation.py +0 -0
  823. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/test_auto_provenance.py +0 -0
  824. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/test_auto_runtime_dispatch.py +0 -0
  825. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/test_bridge_plugin_hardening.py +0 -0
  826. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/test_bridge_plugin_lifecycle.py +0 -0
  827. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/test_cancel.py +0 -0
  828. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/test_codex_command.py +0 -0
  829. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/test_config.py +0 -0
  830. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/test_debug_tool_started_callbacks.py +0 -0
  831. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/test_detached_auto_wait_command.py +0 -0
  832. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/test_detect_allowed_tools_wiring.py +0 -0
  833. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/test_dispatch_command.py +0 -0
  834. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/test_doc_commands.py +0 -0
  835. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/test_init_hitl.py +0 -0
  836. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/test_init_pm_seed_detection.py +0 -0
  837. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/test_init_runtime.py +0 -0
  838. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/test_job_command.py +0 -0
  839. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/test_jsonc.py +0 -0
  840. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/test_main.py +0 -0
  841. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/test_mcp_doctor.py +0 -0
  842. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/test_mcp_nested_guard.py +0 -0
  843. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/test_mcp_pid_registry.py +0 -0
  844. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/test_mcp_shell_env.py +0 -0
  845. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/test_mcp_shutdown_drain.py +0 -0
  846. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/test_mcp_startup_cleanup.py +0 -0
  847. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/test_mcp_validate_transport_stderr.py +0 -0
  848. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/test_opencode_config.py +0 -0
  849. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/test_plugin_command.py +0 -0
  850. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/test_plugin_command_mutating.py +0 -0
  851. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/test_plugin_dispatch.py +0 -0
  852. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/test_pm.py +0 -0
  853. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/test_pm_brownfield.py +0 -0
  854. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/test_pm_completion.py +0 -0
  855. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/test_pm_interactive_logging.py +0 -0
  856. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/test_pm_missing_litellm.py +0 -0
  857. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/test_pm_overwrite.py +0 -0
  858. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/test_pm_runtime_adapter.py +0 -0
  859. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/test_pm_select_repos.py +0 -0
  860. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/test_resume.py +0 -0
  861. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/test_run_qa.py +0 -0
  862. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/test_run_runtime_routing.py +0 -0
  863. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/test_setup.py +0 -0
  864. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/test_status.py +0 -0
  865. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/test_status_run.py +0 -0
  866. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/cli/test_uninstall.py +0 -0
  867. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/codex/test_cli_policy.py +0 -0
  868. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/config/__init__.py +0 -0
  869. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/config/test_loader.py +0 -0
  870. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/config/test_loader_env.py +0 -0
  871. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/config/test_models.py +0 -0
  872. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/config_tui/__init__.py +0 -0
  873. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/config_tui/test_app.py +0 -0
  874. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/config_tui/test_fields.py +0 -0
  875. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/config_tui/test_launcher.py +0 -0
  876. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/config_tui/test_persistence.py +0 -0
  877. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/copilot/__init__.py +0 -0
  878. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/copilot/test_cli_policy.py +0 -0
  879. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/copilot/test_model_discovery.py +0 -0
  880. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/copilot/test_permissions.py +0 -0
  881. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/core/__init__.py +0 -0
  882. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/core/test_ac_tree.py +0 -0
  883. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/core/test_context.py +0 -0
  884. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/core/test_control_contract.py +0 -0
  885. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/core/test_directive.py +0 -0
  886. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/core/test_errors.py +0 -0
  887. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/core/test_file_lock.py +0 -0
  888. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/core/test_git_workflow.py +0 -0
  889. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/core/test_hitl_contract.py +0 -0
  890. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/core/test_hitl_resume.py +0 -0
  891. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/core/test_hitl_state.py +0 -0
  892. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/core/test_initial_context.py +0 -0
  893. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/core/test_lineage.py +0 -0
  894. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/core/test_ontology_aspect.py +0 -0
  895. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/core/test_ontology_questions.py +0 -0
  896. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/core/test_project_paths.py +0 -0
  897. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/core/test_retry.py +0 -0
  898. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/core/test_runtime_transition.py +0 -0
  899. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/core/test_security.py +0 -0
  900. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/core/test_seed.py +0 -0
  901. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/core/test_seed_project_path_callers.py +0 -0
  902. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/core/test_ttl_cache.py +0 -0
  903. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/core/test_types.py +0 -0
  904. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/core/test_worktree.py +0 -0
  905. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/evaluation/__init__.py +0 -0
  906. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/evaluation/test_artifact_collector_file_prefix.py +0 -0
  907. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/evaluation/test_checklist.py +0 -0
  908. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/evaluation/test_consensus.py +0 -0
  909. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/evaluation/test_detector.py +0 -0
  910. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/evaluation/test_json_utils.py +0 -0
  911. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/evaluation/test_languages.py +0 -0
  912. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/evaluation/test_mechanical.py +0 -0
  913. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/evaluation/test_models.py +0 -0
  914. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/evaluation/test_pipeline_stage1_reuse.py +0 -0
  915. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/evaluation/test_pipeline_trigger_consensus.py +0 -0
  916. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/evaluation/test_review_fixes.py +0 -0
  917. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/evaluation/test_semantic.py +0 -0
  918. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/evaluation/test_trigger.py +0 -0
  919. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/evaluation/test_trigger_consensus.py +0 -0
  920. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/evaluation/test_verification_artifacts.py +0 -0
  921. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/evaluation/test_verification_artifacts_allowed_tools_wiring.py +0 -0
  922. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/events/__init__.py +0 -0
  923. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/events/test_base.py +0 -0
  924. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/events/test_control_events.py +0 -0
  925. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/events/test_hitl_events.py +0 -0
  926. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/events/test_io_events.py +0 -0
  927. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/events/test_io_recorder.py +0 -0
  928. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/evolution/test_backend_drift.py +0 -0
  929. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/evolution/test_directive_mapping.py +0 -0
  930. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/evolution/test_evolve_step_agent_process_integration.py +0 -0
  931. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/evolution/test_generation_watchdog.py +0 -0
  932. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/evolution/test_material_progress.py +0 -0
  933. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/evolution/test_wonder_scope.py +0 -0
  934. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/harness/__init__.py +0 -0
  935. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/harness/test_claim_term_guard.py +0 -0
  936. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/harness/test_deliver_gate.py +0 -0
  937. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/harness/test_deliver_routing.py +0 -0
  938. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/harness/test_journal_normalizer.py +0 -0
  939. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/harness/test_projection_builder.py +0 -0
  940. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/harness/test_projection_records.py +0 -0
  941. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/harness/test_run_snapshot.py +0 -0
  942. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/hermes/test_artifacts.py +0 -0
  943. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/__init__.py +0 -0
  944. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/bridge/__init__.py +0 -0
  945. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/bridge/test_bridge.py +0 -0
  946. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/bridge/test_config.py +0 -0
  947. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/bridge/test_factory.py +0 -0
  948. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/bridge/test_handler_wiring.py +0 -0
  949. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/bridge/test_stability.py +0 -0
  950. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/client/__init__.py +0 -0
  951. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/client/test_adapter.py +0 -0
  952. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/client/test_adapter_transport_lifecycle.py +0 -0
  953. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/client/test_manager.py +0 -0
  954. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/conftest.py +0 -0
  955. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/resources/test_handlers.py +0 -0
  956. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/server/__init__.py +0 -0
  957. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/server/test_adapter.py +0 -0
  958. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/server/test_adapter_max_turns_envelope_wiring.py +0 -0
  959. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/server/test_security.py +0 -0
  960. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/test_errors.py +0 -0
  961. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/test_job_manager.py +0 -0
  962. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/test_job_manager_drain.py +0 -0
  963. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/test_types.py +0 -0
  964. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/__init__.py +0 -0
  965. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/conftest.py +0 -0
  966. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_ac_tree_hud_footer.py +0 -0
  967. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_ac_tree_hud_handler.py +0 -0
  968. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_ac_tree_hud_handler_completed.py +0 -0
  969. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_ac_tree_hud_handler_cursor_changed.py +0 -0
  970. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_ac_tree_hud_handler_invalid_session.py +0 -0
  971. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_ac_tree_hud_handler_no_execution.py +0 -0
  972. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_ac_tree_hud_handler_waiting.py +0 -0
  973. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_ac_tree_hud_max_nodes.py +0 -0
  974. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_ac_tree_hud_render_depth2.py +0 -0
  975. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_ac_tree_hud_render_depth3.py +0 -0
  976. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_ac_tree_hud_status_icons.py +0 -0
  977. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_ac_tree_hud_truncation.py +0 -0
  978. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_authoring_allowed_tools_wiring.py +0 -0
  979. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_auto_handler_ralph_runtime.py +0 -0
  980. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_auto_handler_resume_lines.py +0 -0
  981. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_auto_interview_construction.py +0 -0
  982. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_bridge_mixin_runtime_context.py +0 -0
  983. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_brownfield_handler.py +0 -0
  984. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_checklist_verify.py +0 -0
  985. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_client_gates.py +0 -0
  986. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_definitions.py +0 -0
  987. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_definitions_runtime_context.py +0 -0
  988. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_evaluate_multi_ac.py +0 -0
  989. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_evolve_checkpoint_commits.py +0 -0
  990. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_evolve_step_bridge_aware.py +0 -0
  991. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_execute_seed_path_resolution.py +0 -0
  992. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_generate_seed_force_flag.py +0 -0
  993. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_handler_subagent_wiring.py +0 -0
  994. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_interview_allowed_tools_wiring.py +0 -0
  995. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_interview_completion_signal_prefix_guard.py +0 -0
  996. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_interview_done_streak.py +0 -0
  997. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_interview_intent_guard.py +0 -0
  998. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_interview_lateral_review_advisory.py +0 -0
  999. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_interview_length_guard_envelope.py +0 -0
  1000. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_interview_persists_session_on_failure.py +0 -0
  1001. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_interview_reopen_seed_ready.py +0 -0
  1002. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_interview_response_diagnostics.py +0 -0
  1003. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_interview_strict_mcp_config_wiring.py +0 -0
  1004. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_job_instance_cancel_keys.py +0 -0
  1005. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_job_invalid_arguments.py +0 -0
  1006. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_lateral_think_handler.py +0 -0
  1007. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_mcp_manager_wiring.py +0 -0
  1008. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_pm_handler.py +0 -0
  1009. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_pm_handler_allowed_tools_wiring.py +0 -0
  1010. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_pm_handler_pending_reframe.py +0 -0
  1011. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_qa_allowed_tools_wiring.py +0 -0
  1012. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_qa_parser.py +0 -0
  1013. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_ralph_handler.py +0 -0
  1014. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_registry.py +0 -0
  1015. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_round5_fixes.py +0 -0
  1016. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_start_auto.py +0 -0
  1017. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_start_evaluate.py +0 -0
  1018. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_start_execute_seed_idempotency.py +0 -0
  1019. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_subagent.py +0 -0
  1020. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/mcp/tools/test_unstuck_bridge_aware.py +0 -0
  1021. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/observability/__init__.py +0 -0
  1022. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/observability/test_drift.py +0 -0
  1023. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/observability/test_logging.py +0 -0
  1024. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/observability/test_retrospective.py +0 -0
  1025. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/__init__.py +0 -0
  1026. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_adapter.py +0 -0
  1027. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_agent_process.py +0 -0
  1028. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_agent_runtime_context.py +0 -0
  1029. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_backend_limits.py +0 -0
  1030. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_baseline_metrics.py +0 -0
  1031. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_baseline_metrics_capture.py +0 -0
  1032. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_baseline_metrics_format.py +0 -0
  1033. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_capabilities.py +0 -0
  1034. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_codex_cli_runtime.py +0 -0
  1035. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_codex_recursion_guard.py +0 -0
  1036. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_command_dispatcher.py +0 -0
  1037. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_context_governor.py +0 -0
  1038. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_control_bus.py +0 -0
  1039. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_control_plane.py +0 -0
  1040. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_coordinator.py +0 -0
  1041. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_copilot_cli_runtime.py +0 -0
  1042. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_dead_router_removed.py +0 -0
  1043. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_decomposition_params.py +0 -0
  1044. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_dependency_analyzer.py +0 -0
  1045. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_effort_routed_event.py +0 -0
  1046. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_effort_routing.py +0 -0
  1047. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_events.py +0 -0
  1048. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_evidence_schema.py +0 -0
  1049. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_execution_runtime_scope.py +0 -0
  1050. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_execution_strategy.py +0 -0
  1051. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_failure_taxonomy.py +0 -0
  1052. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_frugality_proof.py +0 -0
  1053. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_gemini_cli_runtime.py +0 -0
  1054. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_gjc_runtime.py +0 -0
  1055. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_goose_runtime.py +0 -0
  1056. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_hermes_runtime.py +0 -0
  1057. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_inflight_cancellation.py +0 -0
  1058. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_level_context.py +0 -0
  1059. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_mcp_config.py +0 -0
  1060. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_mcp_tools.py +0 -0
  1061. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_opencode_runtime.py +0 -0
  1062. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_parallel_executor.py +0 -0
  1063. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_parallel_executor_atomic_judgment.py +0 -0
  1064. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_parallel_executor_recursive_depth.py +0 -0
  1065. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_parallel_executor_retry_resume.py +0 -0
  1066. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_phase_wrappers.py +0 -0
  1067. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_pi_runtime.py +0 -0
  1068. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_policy.py +0 -0
  1069. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_profile_loader.py +0 -0
  1070. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_profile_strategy.py +0 -0
  1071. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_rate_limit.py +0 -0
  1072. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_reasoning_effort_routing.py +0 -0
  1073. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_rfc_v2_integration.py +0 -0
  1074. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_runner.py +0 -0
  1075. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_runner_allowed_tools_wiring.py +0 -0
  1076. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_runner_cancellation.py +0 -0
  1077. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_runtime_error.py +0 -0
  1078. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_runtime_evidence.py +0 -0
  1079. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_runtime_factory.py +0 -0
  1080. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_runtime_message_projection.py +0 -0
  1081. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_runtime_param_negotiation.py +0 -0
  1082. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_sandbox_class.py +0 -0
  1083. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_seed_prompt.py +0 -0
  1084. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_session.py +0 -0
  1085. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_skill_tool_mapping.py +0 -0
  1086. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_stage_resolution.py +0 -0
  1087. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_traceguard_benchmark_capture.py +0 -0
  1088. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_verifier.py +0 -0
  1089. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_workflow_ir.py +0 -0
  1090. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_workflow_ir_adapter.py +0 -0
  1091. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_workflow_ir_plugin_adapter.py +0 -0
  1092. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_workflow_lifecycle.py +0 -0
  1093. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_workflow_lifecycle_conformance.py +0 -0
  1094. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_workflow_lifecycle_events.py +0 -0
  1095. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_workflow_projection_boundary.py +0 -0
  1096. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/test_workflow_state.py +0 -0
  1097. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/orchestrator/workflow_ir_conformance_fixtures.py +0 -0
  1098. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/persistence/__init__.py +0 -0
  1099. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/persistence/test_brownfield_store.py +0 -0
  1100. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/persistence/test_checkpoint.py +0 -0
  1101. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/persistence/test_event_store.py +0 -0
  1102. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/persistence/test_schema.py +0 -0
  1103. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/persistence/test_uow.py +0 -0
  1104. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/plugin/__init__.py +0 -0
  1105. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/plugin/agents/__init__.py +0 -0
  1106. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/plugin/agents/test_registry.py +0 -0
  1107. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/plugin/skills/__init__.py +0 -0
  1108. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/plugin/skills/test_keywords.py +0 -0
  1109. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/plugin/skills/test_registry.py +0 -0
  1110. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/plugin/test_digest.py +0 -0
  1111. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/plugin/test_firewall.py +0 -0
  1112. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/plugin/test_firewall_tool_call_dispatch.py +0 -0
  1113. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/plugin/test_hook_permission_scopes.py +0 -0
  1114. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/plugin/test_hooks_contract.py +0 -0
  1115. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/plugin/test_ledger_adapter.py +0 -0
  1116. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/plugin/test_lifecycle_observability.py +0 -0
  1117. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/plugin/test_lockfile.py +0 -0
  1118. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/plugin/test_manifest.py +0 -0
  1119. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/plugin/test_manifest_descriptor.py +0 -0
  1120. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/plugin/test_manifest_hook_validation.py +0 -0
  1121. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/plugin/test_manifest_schema_0_3.py +0 -0
  1122. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/plugin/test_manifest_schema_0_4.py +0 -0
  1123. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/plugin/test_trust_store.py +0 -0
  1124. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/plugin/test_userlevel_registry.py +0 -0
  1125. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/pm/__init__.py +0 -0
  1126. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/pm/test_renderer.py +0 -0
  1127. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/providers/__init__.py +0 -0
  1128. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/providers/test_anthropic_adapter_io_recorder.py +0 -0
  1129. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/providers/test_base.py +0 -0
  1130. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/providers/test_claude_code_adapter.py +0 -0
  1131. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/providers/test_codex_cli_adapter.py +0 -0
  1132. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/providers/test_copilot_cli_adapter.py +0 -0
  1133. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/providers/test_factory.py +0 -0
  1134. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/providers/test_factory_copilot.py +0 -0
  1135. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/providers/test_gemini_cli_adapter.py +0 -0
  1136. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/providers/test_gjc_llm_adapter.py +0 -0
  1137. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/providers/test_goose_cli_adapter.py +0 -0
  1138. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/providers/test_hermes_cli_adapter.py +0 -0
  1139. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/providers/test_litellm_adapter.py +0 -0
  1140. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/providers/test_litellm_adapter_io_recorder.py +0 -0
  1141. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/providers/test_opencode_adapter.py +0 -0
  1142. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/providers/test_ourocode_acp_client.py +0 -0
  1143. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/providers/test_ourocode_llm_adapter.py +0 -0
  1144. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/providers/test_pi_llm_adapter.py +0 -0
  1145. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/providers/test_profiles.py +0 -0
  1146. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/providers/test_public_exports.py +0 -0
  1147. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/providers/test_tool_use_diagnostics.py +0 -0
  1148. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/resilience/__init__.py +0 -0
  1149. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/resilience/test_lateral.py +0 -0
  1150. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/resilience/test_recovery.py +0 -0
  1151. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/resilience/test_stagnation.py +0 -0
  1152. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/router/__init__.py +0 -0
  1153. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/router/test_command_parser.py +0 -0
  1154. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/router/test_dispatch.py +0 -0
  1155. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/router/test_dispatch_result_shapes.py +0 -0
  1156. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/router/test_extract_first_argument.py +0 -0
  1157. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/router/test_invalid_dispatch_input_types.py +0 -0
  1158. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/router/test_malformed_unknown_dispatch_errors.py +0 -0
  1159. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/router/test_not_handled_resolution.py +0 -0
  1160. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/router/test_packaged_auto_dispatch.py +0 -0
  1161. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/router/test_registry.py +0 -0
  1162. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/router/test_repository_dispatch_guard.py +0 -0
  1163. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/router/test_router_resolution_pipeline.py +0 -0
  1164. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/router/test_typed_frontmatter_fields.py +0 -0
  1165. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/router/test_valid_dispatch_normalization.py +0 -0
  1166. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/runtime/__init__.py +0 -0
  1167. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/runtime/test_controls.py +0 -0
  1168. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/runtime/test_watchdog.py +0 -0
  1169. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/scripts/__init__.py +0 -0
  1170. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/scripts/test_check_auto_boundary.py +0 -0
  1171. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/scripts/test_check_auto_perf_budget.py +0 -0
  1172. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/scripts/test_check_max_turns_envelope.py +0 -0
  1173. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/scripts/test_claude_hook_settings.py +0 -0
  1174. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/scripts/test_hook_script_stdio.py +0 -0
  1175. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/scripts/test_install_runtime_selection.py +0 -0
  1176. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/scripts/test_keyword_detector.py +0 -0
  1177. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/scripts/test_ralph_shell_project_dir.py +0 -0
  1178. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/scripts/test_session_start.py +0 -0
  1179. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/scripts/test_sync_plugin_version.py +0 -0
  1180. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/scripts/test_version_check.py +0 -0
  1181. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/skills/test_skill_artifacts.py +0 -0
  1182. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/test_artifact_collector.py +0 -0
  1183. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/test_claude_plugin_skill_guide.py +0 -0
  1184. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/test_codex_artifacts.py +0 -0
  1185. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/test_convergence.py +0 -0
  1186. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/test_dashboard.py +0 -0
  1187. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/test_dependencies_configured.py +0 -0
  1188. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/test_detached_auto_docs.py +0 -0
  1189. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/test_evolve_rewind.py +0 -0
  1190. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/test_evolve_step.py +0 -0
  1191. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/test_graceful_shutdown.py +0 -0
  1192. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/test_kiro_adapters.py +0 -0
  1193. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/test_lineage.py +0 -0
  1194. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/test_main_entry_point.py +0 -0
  1195. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/test_module_structure.py +0 -0
  1196. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/test_project_initialization.py +0 -0
  1197. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/test_projector_directives.py +0 -0
  1198. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/test_projector_rewind.py +0 -0
  1199. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/test_ralph_loop_budget.py +0 -0
  1200. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/test_ralph_loop_progress.py +0 -0
  1201. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/test_ralph_loop_timeout.py +0 -0
  1202. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/test_ralph_parser.py +0 -0
  1203. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/test_ralph_rewind.py +0 -0
  1204. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/test_ralph_shell.py +0 -0
  1205. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/test_regression.py +0 -0
  1206. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/test_runtime_instruction_artifacts.py +0 -0
  1207. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/test_runtime_skill_capability_docs.py +0 -0
  1208. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/test_tooling_configuration.py +0 -0
  1209. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/test_verification.py +0 -0
  1210. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/tui/__init__.py +0 -0
  1211. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/tui/test_app.py +0 -0
  1212. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/tui/test_cancelled_display.py +0 -0
  1213. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/tui/test_events.py +0 -0
  1214. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/tui/test_lineage_viewer.py +0 -0
  1215. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/tui/test_screens.py +0 -0
  1216. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/tui/test_session_selector_replay.py +0 -0
  1217. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tests/unit/tui/test_widgets.py +0 -0
  1218. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/tools/sync_github_project.py +0 -0
  1219. {ouroboros_ai-0.43.3.dev6 → ouroboros_ai-0.43.3.dev8}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ouroboros-ai
3
- Version: 0.43.3.dev6
3
+ Version: 0.43.3.dev8
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
@@ -0,0 +1,176 @@
1
+ # RFC: Context-First Inverted Interview
2
+
3
+ ## Status
4
+
5
+ Draft proposal.
6
+
7
+ ## Problem
8
+
9
+ Some Seed interviews are hard for the wrong reason.
10
+
11
+ The user is not starting from a blank slate. They may have already supplied:
12
+
13
+ - a long prior discussion;
14
+ - raw files;
15
+ - recordings or transcripts;
16
+ - handoff notes;
17
+ - failed previous Seeds;
18
+ - generated artifacts that are useful as leads but not trustworthy;
19
+ - domain constraints that have already been corrected multiple times.
20
+
21
+ In those cases, a normal open-ended interview can create three failures:
22
+
23
+ 1. **Context loss** — the system asks for requirements that are already present
24
+ in the pre-work.
25
+ 2. **Fast shallow convergence** — the interview reaches `seed_ready` with a safe
26
+ but under-scoped interpretation.
27
+ 3. **User fatigue** — the user has to restate the same intent instead of only
28
+ correcting the system's current understanding.
29
+
30
+ This is different from an underspecified new idea. The missing behavior is not
31
+ "ask more questions." The missing behavior is "synthesize the existing context
32
+ first, then ask the user to correct the synthesis."
33
+
34
+ ## Proposal
35
+
36
+ Add a **context-first inverted interview** mode before Seed generation.
37
+
38
+ Instead of beginning with broad questions, the interviewer first performs a
39
+ pre-work synthesis pass:
40
+
41
+ 1. inspect supplied context and raw artifacts;
42
+ 2. reconstruct the current requirement model;
43
+ 3. separate confirmed facts, inferred assumptions, unresolved ambiguities, and
44
+ human-only decisions;
45
+ 4. present that model back as short falsifiable statements;
46
+ 5. ask the user to correct only the wrong or incomplete lines;
47
+ 6. repeat until material ambiguity is gone;
48
+ 7. then proceed to normal Seed generation and review.
49
+
50
+ ## Example interaction
51
+
52
+ ```text
53
+ Interviewer:
54
+
55
+ Based on the prior context and files, my current understanding is:
56
+
57
+ 1. The final product is a reusable CLI plus a local web surface.
58
+ 2. Static handoff docs are supporting outputs, not the product.
59
+ 3. The legacy workflow should be treated as a reference source, not discarded.
60
+ 4. New reviewer checks should be added only as candidate alerts, not final
61
+ judgments.
62
+ 5. Missing required input data must become `insufficient_data` / `unchecked`, not
63
+ `OK`.
64
+
65
+ Which line is wrong or incomplete?
66
+ ```
67
+
68
+ The user can answer:
69
+
70
+ ```text
71
+ Line 4 is right, but add that reviewer checks must include the items from the
72
+ recording. Line 1 must say CLI is the batch/reproducibility surface and web is the
73
+ human review surface.
74
+ ```
75
+
76
+ The next turn updates the requirement model instead of starting over.
77
+
78
+ ## Output model
79
+
80
+ The pre-work synthesis should produce an auditable ledger before the Seed:
81
+
82
+ ```yaml
83
+ confirmed_facts:
84
+ - value: "Final product includes CLI and web surface"
85
+ source: user_prior_context
86
+
87
+ inferred_assumptions:
88
+ - value: "Static handoff documents are generated outputs"
89
+ source: prework_synthesis
90
+ confidence: 0.8
91
+
92
+ unresolved_ambiguities:
93
+ - question: "Which reviewer checks are mandatory for MVP?"
94
+ reason: "Named in prior discussion but not mapped to acceptance criteria"
95
+
96
+ human_only_decisions:
97
+ - question: "May the system change the final artifact class?"
98
+ reason: "Changes product scope and must not be defaulted"
99
+ ```
100
+
101
+ ## Relationship to existing Socratic interview
102
+
103
+ This does not replace the Socratic interview.
104
+
105
+ Normal Socratic interview is best when the user has a vague goal and needs the
106
+ system to expose hidden assumptions.
107
+
108
+ Context-first inverted interview is best when there is already substantial
109
+ pre-work and the risk is losing it.
110
+
111
+ The two modes can compose:
112
+
113
+ ```text
114
+ prework synthesis -> inverted correction loop -> Socratic follow-up for only the
115
+ remaining ambiguities -> Seed
116
+ ```
117
+
118
+ ## Activation candidates
119
+
120
+ The mode may be explicit:
121
+
122
+ ```bash
123
+ ooo interview --mode inverted
124
+ ooo auto --interview-mode inverted
125
+ ```
126
+
127
+ It may also be suggested when signals appear:
128
+
129
+ - the prompt references prior discussion, recordings, raw files, or pre-work;
130
+ - the user says the interview is too hard or keeps losing context;
131
+ - previous auto/Seed attempts produced a safe but wrong artifact class;
132
+ - the user corrects the same scope assumption more than once;
133
+ - the driver detects many raw artifacts but few confirmed ledger entries.
134
+
135
+ ## Contract
136
+
137
+ When inverted mode is active:
138
+
139
+ - the system should not ask broad blank-slate questions until it has presented a
140
+ pre-work synthesis;
141
+ - each synthesized statement must be source-tagged as confirmed, inferred,
142
+ ambiguous, or human-only;
143
+ - inferred assumptions must be falsifiable and easy for the user to correct;
144
+ - user corrections outrank generated synthesis;
145
+ - Seed generation must not proceed while a human-only decision is unresolved;
146
+ - generated safe defaults may fill local reversible gaps, but must not replace
147
+ a user-stated artifact class or domain constraint.
148
+
149
+ ## Non-goals
150
+
151
+ - This RFC does not require a new Seed schema immediately.
152
+ - This RFC does not remove current interview behavior.
153
+ - This RFC does not require full raw-file analysis in the first implementation
154
+ slice.
155
+ - This RFC does not make generated synthesis authoritative without user review.
156
+
157
+ ## Initial implementation slices
158
+
159
+ Small follow-up PRs could land independently:
160
+
161
+ 1. Add a pre-work synthesis ledger type.
162
+ 2. Add an `--interview-mode inverted` flag that prints the synthesized ledger
163
+ before the first question.
164
+ 3. Add a diagnostic that detects high-context prompts with no synthesis pass.
165
+ 4. Add regression tests for safe-but-wrong Seed outputs after rich pre-work.
166
+ 5. Add examples showing context-first inverted interview transcripts.
167
+
168
+ ## Acceptance criteria
169
+
170
+ - A high-context prompt can produce an assumption-led first interview turn.
171
+ - Confirmed user facts, inferred assumptions, ambiguities, and human-only
172
+ decisions are distinguishable in output.
173
+ - The user can correct a numbered line without restating the whole requirement.
174
+ - Seed generation waits for unresolved human-only decisions.
175
+ - Tests cover a case where pre-work contains the intended final artifact, but a
176
+ blank-slate interview would otherwise converge to a narrower safe output.
@@ -0,0 +1,149 @@
1
+ # RFC: Inverted Interview Intent Preservation
2
+
3
+ ## Status
4
+
5
+ Draft proposal. Tracking issue: #1504.
6
+
7
+ ## Problem
8
+
9
+ Some interviews fail not because the user has not stated intent, but because the
10
+ system drifts away from intent the user already stated.
11
+
12
+ A recurring failure shape:
13
+
14
+ 1. The user states a strong artifact contract, for example `CLI + web app`.
15
+ 2. The interview or auto-answer path introduces a safer narrower option, for
16
+ example `docs-only handoff`.
17
+ 3. The pipeline converges on the narrower option because it is conservative and
18
+ easy to verify.
19
+ 4. The output is safe, but wrong: the final artifact class changed without an
20
+ explicit user decision.
21
+
22
+ This is different from ordinary ambiguity. The missing behavior is not “ask more
23
+ open-ended questions.” The missing behavior is “reconstruct and preserve the
24
+ user's already-stated contract before asking the next question.”
25
+
26
+ ## Proposal
27
+
28
+ Add an **inverted interview** mode or guardrail for interviews that begin with
29
+ strong user intent or prior context.
30
+
31
+ Instead of starting only with open-ended Socratic questions, the interviewer first
32
+ reconstructs the current requirement as explicit, falsifiable assumptions:
33
+
34
+ - final artifact class;
35
+ - outputs that are products versus outputs that are supporting artifacts;
36
+ - non-goals;
37
+ - locked user facts;
38
+ - unsafe interpretation changes;
39
+ - unresolved decisions that still need human authority.
40
+
41
+ Then it asks the user to correct mismatches.
42
+
43
+ Example:
44
+
45
+ ```text
46
+ My current understanding:
47
+
48
+ 1. Final artifact is a CLI plus web app.
49
+ 2. Docs-only handoff is not the final artifact.
50
+ 3. Checklist files are generated outputs of the CLI/web system, not the product.
51
+ 4. Existing legacy workflow behavior must be inherited where relevant.
52
+ 5. Missing source data must be represented as insufficient/unchecked, not OK.
53
+
54
+ Which line is wrong or incomplete?
55
+ ```
56
+
57
+ The user can answer with a small correction instead of restating the whole task.
58
+ The interview repeats this assumption-led loop until no material mismatch
59
+ remains, then continues through the existing Seed readiness and Restate gates.
60
+
61
+ ## Relationship to Socratic interview
62
+
63
+ This does not replace the existing Socratic interview. It is a front-loaded
64
+ intent-preservation pass for cases where the user has already supplied material
65
+ requirements.
66
+
67
+ Normal Socratic interview asks:
68
+
69
+ ```text
70
+ What do you want to build?
71
+ ```
72
+
73
+ Inverted interview asks:
74
+
75
+ ```text
76
+ Here is what I think you already asked for. Which part is wrong?
77
+ ```
78
+
79
+ Both are dialectic. The difference is that inverted interview treats prior user
80
+ intent as the first object of examination.
81
+
82
+ ## Contract
83
+
84
+ When a user-stated artifact class is locked by goal text, preference, or a
85
+ confirmed ledger entry:
86
+
87
+ - generated answers must not replace it with a narrower artifact class;
88
+ - docs-only, review-only, handoff-only, or checklist-only options must be treated
89
+ as scope-reduction candidates;
90
+ - scope reductions require an explicit user answer or a blocked state;
91
+ - if a human chooses the narrower artifact, record a warning and require
92
+ confirmation before Seed generation;
93
+ - supporting artifacts may still be generated, but they must not be represented
94
+ as the final product unless the user says so.
95
+
96
+ ## Example failure this guards
97
+
98
+ A user requests a reusable local tool with both CLI and web surfaces. During
99
+ interview, a conservative default chooses a docs-only handoff package. The handoff
100
+ contains useful material, but the final artifact class changed from executable
101
+ software to static documentation.
102
+
103
+ In inverted mode, the first interview turn should lock:
104
+
105
+ ```yaml
106
+ final_artifact: CLI + web app
107
+ supporting_artifacts:
108
+ - checklist files
109
+ - handoff documents
110
+ - review summaries
111
+ not_final_artifact:
112
+ - docs-only handoff
113
+ ```
114
+
115
+ A later generated `docs-only handoff` answer conflicts with this contract and must
116
+ be blocked unless the user explicitly changes the contract.
117
+
118
+ ## Implementation slice in this PR
119
+
120
+ This PR adds a small IntentGuard extension for narrowed-output artifact drift:
121
+
122
+ - output-contract detection recognizes CLI/web/tool/app artifacts with token-aware matching;
123
+ - generated `docs-only` / `handoff-only` / `checkpack` / `checklist package`
124
+ answers are treated like existing review-only reductions when they are offered
125
+ as narrowed alternatives;
126
+ - diagnostics warn when a pending question offers a docs-only narrowing next to a
127
+ user-locked output contract;
128
+ - supporting artifacts such as checklist packages may remain in the user goal
129
+ without disabling the goal-derived contract;
130
+ - tests cover CLI/web intent drifting toward docs-only handoff, supporting
131
+ checklist outputs, and short-term false positives such as `app` in
132
+ `approach`.
133
+
134
+ ## Non-goals
135
+
136
+ - No new interview command flag yet.
137
+ - No full assumption-led UI yet.
138
+ - No replacement of the current Socratic interview.
139
+ - No Seed schema change in this slice.
140
+
141
+ ## Future work
142
+
143
+ Possible follow-ups:
144
+
145
+ 1. `ooo interview --mode inverted` or `ooo auto --interview-mode inverted`.
146
+ 2. A first-turn assumption ledger rendered to the user for correction.
147
+ 3. A Seed Draft Ledger field for locked artifact class versus supporting outputs.
148
+ 4. Auto-activation when the user corrects artifact scope or when generated options
149
+ offer docs-only/review-only alternatives to a user-locked executable artifact.
@@ -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.43.3.dev6'
22
- __version_tuple__ = version_tuple = (0, 43, 3, 'dev6')
21
+ __version__ = version = '0.43.3.dev8'
22
+ __version_tuple__ = version_tuple = (0, 43, 3, 'dev8')
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -10,6 +10,7 @@ from __future__ import annotations
10
10
  from collections.abc import Mapping, Sequence
11
11
  from dataclasses import dataclass
12
12
  from enum import StrEnum
13
+ import re
13
14
  from typing import Any
14
15
 
15
16
  from ouroboros.auto.ledger import (
@@ -114,9 +115,62 @@ _ARTIFACT_OUTPUT_TERMS = (
114
115
  "html",
115
116
  "report",
116
117
  "reports",
118
+ "cli",
119
+ "command",
120
+ "commands",
121
+ "web",
122
+ "webapp",
123
+ "web app",
124
+ "app",
125
+ "application",
126
+ "tool",
127
+ "tools",
117
128
  )
118
129
 
130
+ _BROAD_ARTIFACT_OUTPUT_TERMS = (
131
+ "video",
132
+ "videos",
133
+ "mp4",
134
+ "clip",
135
+ "clips",
136
+ "short",
137
+ "shorts",
138
+ "long-form",
139
+ "long form",
140
+ "json",
141
+ "csv",
142
+ "pdf",
143
+ "html",
144
+ "cli",
145
+ "command",
146
+ "commands",
147
+ "web",
148
+ "webapp",
149
+ "web app",
150
+ "app",
151
+ "application",
152
+ "tool",
153
+ "tools",
154
+ )
155
+
156
+ _NARROWED_OUTPUT_COMPETING_ARTIFACT_TERMS = tuple(
157
+ term for term in _BROAD_ARTIFACT_OUTPUT_TERMS if term not in {"json", "csv", "pdf", "html"}
158
+ )
159
+
160
+ _NARROWED_OUTPUT_CONTEXT_FOLLOWERS = {
161
+ "audience",
162
+ "audiences",
163
+ "group",
164
+ "groups",
165
+ "stakeholder",
166
+ "stakeholders",
167
+ "team",
168
+ "teams",
169
+ }
170
+
119
171
  _ARTIFACT_GENERATION_TERMS = (
172
+ "build",
173
+ "builds",
120
174
  "make",
121
175
  "makes",
122
176
  "create",
@@ -144,6 +198,44 @@ _REVIEW_ONLY_TERMS = (
144
198
  "no export",
145
199
  )
146
200
 
201
+ _SCOPE_REDUCTION_TERMS = (
202
+ "docs-only",
203
+ "docs only",
204
+ "documentation-only",
205
+ "documentation only",
206
+ "document-only",
207
+ "document only",
208
+ "handoff-only",
209
+ "handoff only",
210
+ "handoff package",
211
+ "checkpack",
212
+ "check pack",
213
+ "checklist-only",
214
+ "checklist only",
215
+ "checklist package",
216
+ )
217
+
218
+ _NARROWED_OUTPUT_EXCLUSION_TERMS = (
219
+ "not the final artifact",
220
+ "not final artifact",
221
+ "not the final output",
222
+ "not final output",
223
+ "not the final deliverable",
224
+ "not final deliverable",
225
+ "not the deliverable",
226
+ "not deliverable",
227
+ "not the artifact",
228
+ "not artifact",
229
+ "only generated output",
230
+ "only generated outputs",
231
+ "only supporting output",
232
+ "only supporting outputs",
233
+ "supporting output",
234
+ "supporting outputs",
235
+ "supporting artifact",
236
+ "supporting artifacts",
237
+ )
238
+
147
239
  _DIAGNOSTIC_MARKERS = (
148
240
  "[seed qa repair attempt",
149
241
  "[seed qa lateral repair attempt",
@@ -210,7 +302,7 @@ def guard_auto_answer(
210
302
  IntentGuardCheck(
211
303
  code="generated_option_conflict",
212
304
  status=IntentGuardStatus.FAIL,
213
- message="generated review-only framing conflicts with the user output contract",
305
+ message="generated narrowed-output framing conflicts with the user output contract",
214
306
  action="discard the generated option and answer from USER_GOAL/USER_PREFERENCE; block if retry still conflicts",
215
307
  )
216
308
  )
@@ -252,16 +344,17 @@ def guard_interview_turn(
252
344
  message="initial interview context contains an artifact-output contract",
253
345
  )
254
346
  )
255
- question_has_generated_choice = _contains_review_only_option(question) or (
347
+ question_has_generated_choice = _contains_scope_reduction_option(question) or (
256
348
  "--mode auto" in question.casefold() and "--mode review" in question.casefold()
257
349
  )
258
- answer_has_review_only = _contains_review_only_option(answer_text) or (
259
- "review" in answer_text.casefold()
260
- and not _has_artifact_output_terms(answer_text)
261
- and question_has_generated_choice
350
+ answer_has_review_only = _contains_scope_reduction_option(answer_text) or (
351
+ "review" in answer_text.casefold() and not _has_artifact_output_terms(answer_text)
262
352
  )
353
+
263
354
  if not question_has_generated_choice or not answer_has_review_only:
264
355
  return IntentGuardReport(tuple(checks))
356
+ if _is_explicit_narrowed_output_contract(contract):
357
+ return IntentGuardReport(tuple(checks))
265
358
 
266
359
  source = answer_source.strip().casefold()
267
360
  if source in _HUMAN_ANSWER_SOURCES:
@@ -269,7 +362,7 @@ def guard_interview_turn(
269
362
  IntentGuardCheck(
270
363
  code="user_contract_change",
271
364
  status=IntentGuardStatus.WARN,
272
- message="human answer appears to change the initial output contract toward review-only behavior",
365
+ message="human answer appears to change the initial output contract toward a narrower output class",
273
366
  action="record it, but ask/confirm whether this is an intentional scope change before Seed generation",
274
367
  )
275
368
  )
@@ -324,12 +417,16 @@ def diagnose_auto_state(
324
417
  message="output contract is anchored in user/repo evidence",
325
418
  )
326
419
  )
327
- if pending_question and _contains_review_only_option(pending_question):
420
+ if (
421
+ pending_question
422
+ and _contains_scope_reduction_option(pending_question)
423
+ and not _is_explicit_narrowed_output_contract(contract)
424
+ ):
328
425
  checks.append(
329
426
  IntentGuardCheck(
330
427
  code="generated_option_present",
331
428
  status=IntentGuardStatus.WARN,
332
- message="pending question contains a generated review-only option next to a user output contract",
429
+ message="pending question contains a generated narrowed-output option next to a user output contract",
333
430
  action="prefer USER_GOAL/USER_PREFERENCE when answering; do not let the generated option win",
334
431
  )
335
432
  )
@@ -347,7 +444,7 @@ def diagnose_auto_state(
347
444
  IntentGuardCheck(
348
445
  code="generated_option_conflict",
349
446
  status=IntentGuardStatus.FAIL,
350
- message="recent auto answer appears to have accepted review-only framing over user output intent",
447
+ message="recent auto answer appears to have accepted narrowed-output framing over user output intent",
351
448
  action="discard that answer, reopen the round, and re-answer from USER_GOAL/USER_PREFERENCE",
352
449
  )
353
450
  )
@@ -429,35 +526,96 @@ def _generated_review_option_conflicts(
429
526
  source = answer_source.strip().casefold()
430
527
  if source in {"user_goal", "user_preference", "repo_fact", "existing_convention"}:
431
528
  return False
432
- question_has_generated_choice = _contains_review_only_option(question) or (
529
+ question_has_generated_choice = _contains_scope_reduction_option(question) or (
433
530
  "--mode auto" in question.casefold() and "--mode review" in question.casefold()
434
531
  )
435
532
  if not question_has_generated_choice:
436
533
  return False
534
+ if _is_explicit_narrowed_output_contract(contract_text):
535
+ return False
437
536
  answer_lower = answer_text.casefold()
438
- if _contains_review_only_option(answer_lower):
537
+ if _contains_scope_reduction_option(answer_lower):
439
538
  return True
440
539
  return "review" in answer_lower and not _has_artifact_output_terms(answer_lower)
441
540
 
442
541
 
443
- def _contains_review_only_option(text: str) -> bool:
542
+ def _is_explicit_narrowed_output_contract(text: str) -> bool:
543
+ """Return true when the user contract itself is the narrowed output.
544
+
545
+ Scope-reduction phrases are only failures when a generated answer narrows a
546
+ broader user artifact class. If the user's locked contract is already a
547
+ docs-only/review-only/checklist-only handoff, a generated answer that
548
+ repeats that contract should pass instead of being treated as drift. Narrow
549
+ artifact terms that are explicitly excluded from the final deliverable do
550
+ not make the user contract a narrowed-output contract.
551
+ """
552
+ return (
553
+ _contains_scope_reduction_option(text)
554
+ and not _contains_competing_artifact_contract(text)
555
+ and not _contains_any_phrase(text, _NARROWED_OUTPUT_EXCLUSION_TERMS)
556
+ )
557
+
558
+
559
+ def _contains_competing_artifact_contract(text: str) -> bool:
560
+ """Return true when text names a competing final artifact class.
561
+
562
+ Broad tokens such as ``web`` and ``app`` are also used as audience/context
563
+ descriptors (``web team``, ``app team``). Those should not prevent an
564
+ explicitly narrowed user contract (for example, docs-only handoff files for
565
+ that team) from passing the guard.
566
+ """
444
567
  lowered = text.casefold()
445
- return any(term in lowered for term in _REVIEW_ONLY_TERMS)
568
+ for term in _NARROWED_OUTPUT_COMPETING_ARTIFACT_TERMS:
569
+ escaped = re.escape(term.casefold())
570
+ prefix = r"(?<!\w)" if term[:1].isalnum() else ""
571
+ suffix = r"(?!\w)" if term[-1:].isalnum() else ""
572
+ for match in re.finditer(f"{prefix}{escaped}{suffix}", lowered):
573
+ after = lowered[match.end() :]
574
+ next_word = re.match(r"(?:\s+|-)+(\w+)", after)
575
+ if next_word and next_word.group(1) in _NARROWED_OUTPUT_CONTEXT_FOLLOWERS:
576
+ continue
577
+ return True
578
+ return False
579
+
580
+
581
+ def _contains_review_only_option(text: str) -> bool:
582
+ return _contains_any_phrase(text, _REVIEW_ONLY_TERMS)
583
+
584
+
585
+ def _contains_scope_reduction_option(text: str) -> bool:
586
+ return _contains_any_phrase(text, (*_REVIEW_ONLY_TERMS, *_SCOPE_REDUCTION_TERMS))
446
587
 
447
588
 
448
589
  def _looks_like_artifact_generation(text: str) -> bool:
449
- lowered = text.casefold()
450
590
  return (
451
591
  bool(text.strip())
452
- and any(term in lowered for term in _ARTIFACT_GENERATION_TERMS)
453
- and _has_artifact_output_terms(lowered)
454
- and not _contains_review_only_option(lowered)
592
+ and _contains_any_phrase(text, _ARTIFACT_GENERATION_TERMS)
593
+ and _has_artifact_output_terms(text)
455
594
  )
456
595
 
457
596
 
458
597
  def _has_artifact_output_terms(text: str) -> bool:
598
+ return _contains_any_phrase(text, _ARTIFACT_OUTPUT_TERMS)
599
+
600
+
601
+ def _contains_any_phrase(text: str, phrases: Sequence[str]) -> bool:
459
602
  lowered = text.casefold()
460
- return any(term in lowered for term in _ARTIFACT_OUTPUT_TERMS)
603
+ return any(_contains_phrase(lowered, phrase.casefold()) for phrase in phrases)
604
+
605
+
606
+ def _contains_phrase(lowered_text: str, phrase: str) -> bool:
607
+ """Return true when ``phrase`` appears as a token/phrase, not a substring.
608
+
609
+ IntentGuard uses short artifact terms such as ``app`` and ``web``. Raw
610
+ substring matching would treat prose like ``approach`` or ``webbing`` as an
611
+ artifact contract, so alphanumeric phrase edges must align to non-word
612
+ boundaries. Phrases that start or end with punctuation keep substring
613
+ semantics for CLI flags such as ``--mode review``.
614
+ """
615
+ escaped = re.escape(phrase)
616
+ prefix = r"(?<!\w)" if phrase[:1].isalnum() else ""
617
+ suffix = r"(?!\w)" if phrase[-1:].isalnum() else ""
618
+ return re.search(f"{prefix}{escaped}{suffix}", lowered_text) is not None
461
619
 
462
620
 
463
621
  def _seed_artifact_has_diagnostic_constraints(seed_artifact: Mapping[str, Any]) -> bool:
@@ -640,7 +640,7 @@ def test_cli_status_auto_snapshot(tmp_path) -> None:
640
640
  " current_generation: 3\n"
641
641
  " stop_reason: qa passed\n"
642
642
  "IntentGuard: pass\n"
643
- " PASS intent_contract_not_applicable: goal does not look like an artifact-output request\n"
643
+ " PASS intent_lock_present: output contract is anchored in user/repo evidence\n"
644
644
  " PASS spec_pollution: Seed constraints do not contain known diagnostic markers\n"
645
645
  )
646
646
  assert rendered == expected