ouroboros-ai 0.40.1.dev2__tar.gz → 0.40.2.dev2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1171) hide show
  1. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/.claude-plugin/marketplace.json +1 -1
  2. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/.claude-plugin/plugin.json +1 -1
  3. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/PKG-INFO +1 -1
  4. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/README.md +2 -0
  5. ouroboros_ai-0.40.2.dev2/docs/agentos/issue-sequencing-graph.md +241 -0
  6. ouroboros_ai-0.40.2.dev2/docs/contributing/verifier-evidence-policy.md +80 -0
  7. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/skills/setup/SKILL.md +1 -1
  8. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/_version.py +2 -2
  9. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/failure_taxonomy.py +12 -0
  10. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/parallel_executor.py +132 -2
  11. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/verifier.py +4 -2
  12. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_failure_taxonomy.py +3 -0
  13. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_parallel_executor.py +131 -0
  14. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_verifier.py +1 -0
  15. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/.claude/settings.json +0 -0
  16. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/.claude-plugin/.mcp.json +0 -0
  17. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/.claude-plugin/SKILL_CAPABILITY_GUIDE.md +0 -0
  18. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/.claude-plugin/skills/auto/SKILL.md +0 -0
  19. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/.claude-plugin/skills/brownfield/SKILL.md +0 -0
  20. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/.claude-plugin/skills/cancel/SKILL.md +0 -0
  21. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/.claude-plugin/skills/evaluate/SKILL.md +0 -0
  22. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/.claude-plugin/skills/evolve/SKILL.md +0 -0
  23. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/.claude-plugin/skills/help/SKILL.md +0 -0
  24. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/.claude-plugin/skills/interview/SKILL.md +0 -0
  25. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/.claude-plugin/skills/pm/SKILL.md +0 -0
  26. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/.claude-plugin/skills/publish/SKILL.md +0 -0
  27. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/.claude-plugin/skills/qa/SKILL.md +0 -0
  28. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/.claude-plugin/skills/ralph/SKILL.md +0 -0
  29. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/.claude-plugin/skills/resume-session/SKILL.md +0 -0
  30. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/.claude-plugin/skills/run/SKILL.md +0 -0
  31. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/.claude-plugin/skills/seed/SKILL.md +0 -0
  32. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/.claude-plugin/skills/setup/SKILL.md +0 -0
  33. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/.claude-plugin/skills/status/SKILL.md +0 -0
  34. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/.claude-plugin/skills/tutorial/SKILL.md +0 -0
  35. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/.claude-plugin/skills/unstuck/SKILL.md +0 -0
  36. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/.claude-plugin/skills/update/SKILL.md +0 -0
  37. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/.claude-plugin/skills/welcome/SKILL.md +0 -0
  38. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/.codex/config.toml +0 -0
  39. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/.codex/hooks.json +0 -0
  40. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/.env.example +0 -0
  41. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  42. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  43. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  44. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/.github/ISSUE_TEMPLATE/question.yml +0 -0
  45. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  46. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/.github/workflows/auto-boundary.yml +0 -0
  47. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/.github/workflows/auto-perf-budget.yml +0 -0
  48. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/.github/workflows/dev-publish.yml +0 -0
  49. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/.github/workflows/lint.yml +0 -0
  50. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/.github/workflows/max-turns-envelope.yml +0 -0
  51. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/.github/workflows/release.yml +0 -0
  52. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/.github/workflows/test.yml +0 -0
  53. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/.gitignore +0 -0
  54. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/.mcp.json +0 -0
  55. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/.ouroboros/mechanical.toml +0 -0
  56. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/.ouroboros/seeds/seed_73827177a2a3.yaml +0 -0
  57. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/.ouroboros/seeds/seed_78c8e6e41813.yaml +0 -0
  58. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/.pre-commit-config.yaml +0 -0
  59. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/.python-version +0 -0
  60. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/AGENTS.md +0 -0
  61. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/CHANGELOG.md +0 -0
  62. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/CLAUDE.md +0 -0
  63. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/CODE_OF_CONDUCT.md +0 -0
  64. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/CONTRIBUTING.md +0 -0
  65. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/Code-Review-Claude.md +0 -0
  66. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/Code-Review-Codex.md +0 -0
  67. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/HANDOFF.md +0 -0
  68. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/LICENSE +0 -0
  69. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/README.ko.md +0 -0
  70. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/README.md +0 -0
  71. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/README.zh-CN.md +0 -0
  72. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/SECURITY.md +0 -0
  73. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/UNINSTALL.md +0 -0
  74. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/commands/cancel.md +0 -0
  75. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/commands/evaluate.md +0 -0
  76. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/commands/evolve.md +0 -0
  77. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/commands/help.md +0 -0
  78. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/commands/interview.md +0 -0
  79. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/commands/ralph.md +0 -0
  80. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/commands/run.md +0 -0
  81. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/commands/seed.md +0 -0
  82. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/commands/setup.md +0 -0
  83. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/commands/status.md +0 -0
  84. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/commands/tutorial.md +0 -0
  85. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/commands/unstuck.md +0 -0
  86. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/commands/welcome.md +0 -0
  87. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/crates/ouroboros-tui/.gitignore +0 -0
  88. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/crates/ouroboros-tui/Cargo.lock +0 -0
  89. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/crates/ouroboros-tui/Cargo.toml +0 -0
  90. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/crates/ouroboros-tui/README.md +0 -0
  91. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/crates/ouroboros-tui/src/db.rs +0 -0
  92. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/crates/ouroboros-tui/src/main.rs +0 -0
  93. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/crates/ouroboros-tui/src/mock.rs +0 -0
  94. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/crates/ouroboros-tui/src/state.rs +0 -0
  95. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/crates/ouroboros-tui/src/views/dashboard.rs +0 -0
  96. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/crates/ouroboros-tui/src/views/execution.rs +0 -0
  97. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/crates/ouroboros-tui/src/views/lineage.rs +0 -0
  98. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/crates/ouroboros-tui/src/views/logs.rs +0 -0
  99. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/crates/ouroboros-tui/src/views/mod.rs +0 -0
  100. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/crates/ouroboros-tui/src/views/session_selector.rs +0 -0
  101. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/agentos/control-journal.md +0 -0
  102. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/agentos/fat-harness-baseline-metrics.md +0 -0
  103. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/agentos/profile-taxonomy.md +0 -0
  104. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/agentos/projection-followups.md +0 -0
  105. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/agentos/projection-v1-scope.md +0 -0
  106. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/agentos/release-readiness.md +0 -0
  107. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/agentos/runtime-contract.md +0 -0
  108. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/agentos/traceguard-observation-protocol.md +0 -0
  109. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/agentos/traceguard-vs-legacy-benchmark.md +0 -0
  110. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/agentos/workflow-ir-projection-mapping.md +0 -0
  111. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/agentos/workflow-ir-v1.md +0 -0
  112. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/api/README.md +0 -0
  113. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/api/core.md +0 -0
  114. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/api/mcp.md +0 -0
  115. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/architecture.md +0 -0
  116. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/auto-interview-convergence-contract.md +0 -0
  117. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/auto-runtime-semantics.md +0 -0
  118. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/cli-reference.md +0 -0
  119. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/config-reference.md +0 -0
  120. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/contributing/agent-os-kernel-terminology.md +0 -0
  121. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/contributing/architecture-overview.md +0 -0
  122. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/contributing/control-contract.md +0 -0
  123. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/contributing/control-plane-followups.md +0 -0
  124. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/contributing/findings-registry.md +0 -0
  125. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/contributing/issue-quality-policy.md +0 -0
  126. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/contributing/key-patterns.md +0 -0
  127. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/contributing/testing-guide.md +0 -0
  128. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/contributing/watchdog-cancellation.md +0 -0
  129. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/events.md +0 -0
  130. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/examples/mcp-config.yaml +0 -0
  131. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/examples/workflows/design-code-verify.md +0 -0
  132. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/examples/workflows/research-to-deliverable.md +0 -0
  133. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/getting-started.md +0 -0
  134. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/guides/agent-process-lifecycle.md +0 -0
  135. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/guides/evaluation-pipeline.md +0 -0
  136. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/guides/evolution-loop.md +0 -0
  137. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/guides/execution-vs-evaluation.md +0 -0
  138. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/guides/issue-176-subagent-mcp-inheritance.md +0 -0
  139. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/guides/mcp-best-practices.md +0 -0
  140. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/guides/mcp-bridge.md +0 -0
  141. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/guides/ooo-skill-dispatch-router.md +0 -0
  142. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/guides/opencode-subagent-bridge.md +0 -0
  143. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/guides/qa-backends.md +0 -0
  144. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/guides/seed-authoring.md +0 -0
  145. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/guides/tui-usage.md +0 -0
  146. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/guides/windows-wsl-troubleshooting.md +0 -0
  147. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/images/PLACEHOLDER_README.md +0 -0
  148. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/images/ouroboros.png +0 -0
  149. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/ooo-auto-analysis.md +0 -0
  150. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/ooo-auto-evolution-plan.md +0 -0
  151. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/platform-support.md +0 -0
  152. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/rfc/contract-ledger.md +0 -0
  153. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/rfc/disposable-memory.md +0 -0
  154. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/rfc/interview-hardening.md +0 -0
  155. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/rfc/interview-milestone-lateral-contract.md +0 -0
  156. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/rfc/mesh.md +0 -0
  157. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/rfc/plugin-artifact-state-hook-contract.md +0 -0
  158. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/rfc/plugin-tool-call-hook-contract.md +0 -0
  159. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/rfc/runtime-delegation-contract.md +0 -0
  160. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/rfc/runtime-timeout-contract.md +0 -0
  161. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/rfc/userlevel-plugins.md +0 -0
  162. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/runtime-capability-matrix.md +0 -0
  163. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/runtime-guides/claude-code.md +0 -0
  164. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/runtime-guides/codex.md +0 -0
  165. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/runtime-guides/copilot.md +0 -0
  166. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/runtime-guides/gemini.md +0 -0
  167. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/runtime-guides/goose.md +0 -0
  168. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/runtime-guides/hermes.md +0 -0
  169. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/runtime-guides/kiro.md +0 -0
  170. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/runtime-guides/opencode.md +0 -0
  171. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/docs/runtime-guides/skill-capability-guides.md +0 -0
  172. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/examples/coordinator_test_seed.yaml +0 -0
  173. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/examples/dummy_seed.yaml +0 -0
  174. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/examples/parallel_subac_test_seed.yaml +0 -0
  175. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/examples/subac_test_seed.yaml +0 -0
  176. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/examples/task_manager/README.md +0 -0
  177. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/examples/task_manager/__init__.py +0 -0
  178. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/examples/task_manager/__main__.py +0 -0
  179. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/examples/task_manager/cli.py +0 -0
  180. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/examples/task_manager/models.py +0 -0
  181. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/examples/task_manager/storage.py +0 -0
  182. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/examples/test_display.py +0 -0
  183. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/hooks/hooks.json +0 -0
  184. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/llms-full.txt +0 -0
  185. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/llms.txt +0 -0
  186. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/project-context.md +0 -0
  187. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/pyproject.toml +0 -0
  188. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/scripts/check-auto-boundary.py +0 -0
  189. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/scripts/check-auto-perf-budget.py +0 -0
  190. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/scripts/check-max-turns-envelope.py +0 -0
  191. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/scripts/drift-monitor.py +0 -0
  192. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/scripts/install.sh +0 -0
  193. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/scripts/keyword-detector.py +0 -0
  194. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/scripts/mcp-serve.sh +0 -0
  195. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/scripts/ralph-rewind.py +0 -0
  196. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/scripts/ralph.py +0 -0
  197. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/scripts/ralph.sh +0 -0
  198. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/scripts/session-start.py +0 -0
  199. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/scripts/sync-plugin-version.py +0 -0
  200. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/scripts/version-check.py +0 -0
  201. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/skills/auto/SKILL.md +0 -0
  202. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/skills/brownfield/SKILL.md +0 -0
  203. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/skills/cancel/SKILL.md +0 -0
  204. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/skills/evaluate/SKILL.md +0 -0
  205. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/skills/evolve/SKILL.md +0 -0
  206. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/skills/help/SKILL.md +0 -0
  207. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/skills/interview/SKILL.md +0 -0
  208. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/skills/pm/SKILL.md +0 -0
  209. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/skills/publish/SKILL.md +0 -0
  210. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/skills/qa/SKILL.md +0 -0
  211. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/skills/ralph/SKILL.md +0 -0
  212. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/skills/resume-session/SKILL.md +0 -0
  213. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/skills/run/SKILL.md +0 -0
  214. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/skills/seed/SKILL.md +0 -0
  215. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/skills/status/SKILL.md +0 -0
  216. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/skills/tutorial/SKILL.md +0 -0
  217. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/skills/unstuck/SKILL.md +0 -0
  218. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/skills/update/SKILL.md +0 -0
  219. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/skills/welcome/SKILL.md +0 -0
  220. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/__init__.py +0 -0
  221. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/__main__.py +0 -0
  222. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/agents/__init__.py +0 -0
  223. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/agents/advocate.md +0 -0
  224. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/agents/analysis-agent.md +0 -0
  225. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/agents/architect.md +0 -0
  226. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/agents/breadth-keeper.md +0 -0
  227. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/agents/code-executor.md +0 -0
  228. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/agents/codebase-explorer.md +0 -0
  229. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/agents/consensus-reviewer.md +0 -0
  230. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/agents/contrarian.md +0 -0
  231. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/agents/evaluator.md +0 -0
  232. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/agents/hacker.md +0 -0
  233. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/agents/judge.md +0 -0
  234. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/agents/loader.py +0 -0
  235. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/agents/ontologist.md +0 -0
  236. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/agents/ontology-analyst.md +0 -0
  237. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/agents/qa-judge.md +0 -0
  238. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/agents/research-agent.md +0 -0
  239. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/agents/researcher.md +0 -0
  240. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/agents/seed-architect.md +0 -0
  241. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/agents/seed-closer.md +0 -0
  242. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/agents/semantic-evaluator.md +0 -0
  243. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/agents/simplifier.md +0 -0
  244. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/agents/socratic-interviewer.md +0 -0
  245. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/auto/__init__.py +0 -0
  246. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/auto/adapters.py +0 -0
  247. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/auto/answerer.py +0 -0
  248. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/auto/auto_fill.py +0 -0
  249. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/auto/blocker_attribution.py +0 -0
  250. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/auto/checkpoint_commits.py +0 -0
  251. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/auto/domain_inference.py +0 -0
  252. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/auto/domain_profile.py +0 -0
  253. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/auto/execution_acceptance.py +0 -0
  254. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/auto/gap_detector.py +0 -0
  255. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/auto/grading.py +0 -0
  256. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/auto/handoff_contract.py +0 -0
  257. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/auto/interview_driver.py +0 -0
  258. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/auto/lateral_routing.py +0 -0
  259. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/auto/ledger.py +0 -0
  260. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/auto/ledger_seed.py +0 -0
  261. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/auto/listeners.py +0 -0
  262. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/auto/pipeline.py +0 -0
  263. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/auto/policies.py +0 -0
  264. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/auto/profiles/__init__.py +0 -0
  265. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/auto/profiles/coding.py +0 -0
  266. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/auto/profiles/research.py +0 -0
  267. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/auto/progress.py +0 -0
  268. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/auto/provenance.py +0 -0
  269. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/auto/recovery_plan.py +0 -0
  270. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/auto/repo_context.py +0 -0
  271. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/auto/resume_render.py +0 -0
  272. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/auto/safe_defaults.py +0 -0
  273. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/auto/seed_repairer.py +0 -0
  274. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/auto/seed_reviewer.py +0 -0
  275. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/auto/state.py +0 -0
  276. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/auto/task_class_application.py +0 -0
  277. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/auto/task_classes.py +0 -0
  278. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/auto/worktree.py +0 -0
  279. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/backends/__init__.py +0 -0
  280. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/backends/capabilities.py +0 -0
  281. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/bigbang/__init__.py +0 -0
  282. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/bigbang/ambiguity.py +0 -0
  283. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/bigbang/brownfield.py +0 -0
  284. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/bigbang/explore.py +0 -0
  285. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/bigbang/interview.py +0 -0
  286. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/bigbang/pm_completion.py +0 -0
  287. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/bigbang/pm_document.py +0 -0
  288. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/bigbang/pm_interview.py +0 -0
  289. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/bigbang/pm_seed.py +0 -0
  290. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/bigbang/question_classifier.py +0 -0
  291. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/bigbang/seed_generator.py +0 -0
  292. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/claude_permissions.py +0 -0
  293. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/cli/__init__.py +0 -0
  294. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/cli/commands/__init__.py +0 -0
  295. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/cli/commands/auto.py +0 -0
  296. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/cli/commands/cancel.py +0 -0
  297. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/cli/commands/codex.py +0 -0
  298. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/cli/commands/config.py +0 -0
  299. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/cli/commands/detect.py +0 -0
  300. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/cli/commands/init.py +0 -0
  301. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/cli/commands/job.py +0 -0
  302. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/cli/commands/mcp.py +0 -0
  303. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/cli/commands/mcp_doctor.py +0 -0
  304. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/cli/commands/plugin.py +0 -0
  305. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/cli/commands/plugin_dispatch.py +0 -0
  306. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/cli/commands/pm.py +0 -0
  307. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/cli/commands/qa.py +0 -0
  308. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/cli/commands/resume.py +0 -0
  309. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/cli/commands/run.py +0 -0
  310. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/cli/commands/setup.py +0 -0
  311. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/cli/commands/status.py +0 -0
  312. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/cli/commands/tui.py +0 -0
  313. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/cli/commands/uninstall.py +0 -0
  314. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/cli/commands/workflow_ir.py +0 -0
  315. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/cli/formatters/__init__.py +0 -0
  316. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/cli/formatters/panels.py +0 -0
  317. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/cli/formatters/progress.py +0 -0
  318. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/cli/formatters/prompting.py +0 -0
  319. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/cli/formatters/tables.py +0 -0
  320. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/cli/formatters/workflow_display.py +0 -0
  321. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/cli/jsonc.py +0 -0
  322. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/cli/main.py +0 -0
  323. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/cli/opencode_config.py +0 -0
  324. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/codex/__init__.py +0 -0
  325. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/codex/artifacts.py +0 -0
  326. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/codex/cli_policy.py +0 -0
  327. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/codex/ouroboros.md +0 -0
  328. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/codex/runtime_profile.py +0 -0
  329. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/codex_permissions.py +0 -0
  330. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/config/__init__.py +0 -0
  331. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/config/loader.py +0 -0
  332. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/config/models.py +0 -0
  333. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/copilot/__init__.py +0 -0
  334. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/copilot/cli_policy.py +0 -0
  335. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/copilot/model_discovery.py +0 -0
  336. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/copilot/runtime_profile.py +0 -0
  337. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/copilot_permissions.py +0 -0
  338. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/core/__init__.py +0 -0
  339. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/core/ac_tree.py +0 -0
  340. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/core/context.py +0 -0
  341. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/core/control_contract.py +0 -0
  342. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/core/directive.py +0 -0
  343. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/core/errors.py +0 -0
  344. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/core/file_lock.py +0 -0
  345. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/core/git_workflow.py +0 -0
  346. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/core/hitl_contract.py +0 -0
  347. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/core/hitl_resume.py +0 -0
  348. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/core/hitl_state.py +0 -0
  349. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/core/initial_context.py +0 -0
  350. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/core/json_utils.py +0 -0
  351. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/core/lineage.py +0 -0
  352. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/core/ontology_aspect.py +0 -0
  353. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/core/ontology_questions.py +0 -0
  354. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/core/project_paths.py +0 -0
  355. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/core/retry.py +0 -0
  356. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/core/runtime_transition.py +0 -0
  357. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/core/security.py +0 -0
  358. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/core/seed.py +0 -0
  359. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/core/seed_contract.py +0 -0
  360. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/core/seed_contract_prompt.py +0 -0
  361. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/core/text.py +0 -0
  362. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/core/ttl_cache.py +0 -0
  363. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/core/types.py +0 -0
  364. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/core/worktree.py +0 -0
  365. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/evaluation/__init__.py +0 -0
  366. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/evaluation/artifact_collector.py +0 -0
  367. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/evaluation/checklist.py +0 -0
  368. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/evaluation/consensus.py +0 -0
  369. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/evaluation/detector.py +0 -0
  370. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/evaluation/json_utils.py +0 -0
  371. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/evaluation/languages.py +0 -0
  372. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/evaluation/mechanical.py +0 -0
  373. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/evaluation/models.py +0 -0
  374. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/evaluation/pipeline.py +0 -0
  375. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/evaluation/semantic.py +0 -0
  376. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/evaluation/trigger.py +0 -0
  377. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/evaluation/verification_artifacts.py +0 -0
  378. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/events/__init__.py +0 -0
  379. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/events/base.py +0 -0
  380. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/events/control.py +0 -0
  381. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/events/decomposition.py +0 -0
  382. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/events/evaluation.py +0 -0
  383. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/events/hitl.py +0 -0
  384. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/events/interview.py +0 -0
  385. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/events/io.py +0 -0
  386. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/events/io_recorder.py +0 -0
  387. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/events/lineage.py +0 -0
  388. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/events/ontology.py +0 -0
  389. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/evolution/__init__.py +0 -0
  390. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/evolution/convergence.py +0 -0
  391. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/evolution/directive_mapping.py +0 -0
  392. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/evolution/loop.py +0 -0
  393. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/evolution/material_progress.py +0 -0
  394. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/evolution/projector.py +0 -0
  395. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/evolution/reflect.py +0 -0
  396. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/evolution/regression.py +0 -0
  397. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/evolution/watchdog.py +0 -0
  398. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/evolution/wonder.py +0 -0
  399. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/execution/__init__.py +0 -0
  400. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/execution/atomicity.py +0 -0
  401. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/execution/decomposition.py +0 -0
  402. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/execution/double_diamond.py +0 -0
  403. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/execution/subagent.py +0 -0
  404. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/harness/__init__.py +0 -0
  405. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/harness/claim_term_guard.py +0 -0
  406. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/harness/deliver_gate.py +0 -0
  407. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/harness/deliver_routing.py +0 -0
  408. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/harness/journal.py +0 -0
  409. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/harness/projection.py +0 -0
  410. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/harness/projection_builder.py +0 -0
  411. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/harness/run_snapshot.py +0 -0
  412. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/hermes/__init__.py +0 -0
  413. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/hermes/artifacts.py +0 -0
  414. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/mcp/__init__.py +0 -0
  415. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/mcp/bridge/__init__.py +0 -0
  416. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/mcp/bridge/bridge.py +0 -0
  417. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/mcp/bridge/config.py +0 -0
  418. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/mcp/bridge/factory.py +0 -0
  419. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/mcp/client/__init__.py +0 -0
  420. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/mcp/client/adapter.py +0 -0
  421. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/mcp/client/manager.py +0 -0
  422. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/mcp/client/protocol.py +0 -0
  423. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/mcp/errors.py +0 -0
  424. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/mcp/job_manager.py +0 -0
  425. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/mcp/resources/__init__.py +0 -0
  426. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/mcp/resources/handlers.py +0 -0
  427. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/mcp/server/__init__.py +0 -0
  428. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/mcp/server/adapter.py +0 -0
  429. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/mcp/server/protocol.py +0 -0
  430. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/mcp/server/security.py +0 -0
  431. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/mcp/tools/__init__.py +0 -0
  432. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/mcp/tools/ac_tree_hud_handler.py +0 -0
  433. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/mcp/tools/ac_tree_hud_render.py +0 -0
  434. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/mcp/tools/authoring_handlers.py +0 -0
  435. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/mcp/tools/auto_handler.py +0 -0
  436. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/mcp/tools/bridge_mixin.py +0 -0
  437. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/mcp/tools/brownfield_handler.py +0 -0
  438. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/mcp/tools/dashboard.py +0 -0
  439. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/mcp/tools/definitions.py +0 -0
  440. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/mcp/tools/evaluation_handlers.py +0 -0
  441. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/mcp/tools/evolution_handlers.py +0 -0
  442. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/mcp/tools/execution_handlers.py +0 -0
  443. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/mcp/tools/job_handlers.py +0 -0
  444. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/mcp/tools/pm_handler.py +0 -0
  445. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/mcp/tools/projection_handlers.py +0 -0
  446. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/mcp/tools/qa.py +0 -0
  447. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/mcp/tools/query_handlers.py +0 -0
  448. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/mcp/tools/ralph_handlers.py +0 -0
  449. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/mcp/tools/registry.py +0 -0
  450. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/mcp/tools/subagent.py +0 -0
  451. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/mcp/types.py +0 -0
  452. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/observability/__init__.py +0 -0
  453. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/observability/drift.py +0 -0
  454. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/observability/logging.py +0 -0
  455. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/observability/retrospective.py +0 -0
  456. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/opencode/__init__.py +0 -0
  457. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/opencode/plugin/__init__.py +0 -0
  458. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/opencode/plugin/opencode-plugin.d.ts +0 -0
  459. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/opencode/plugin/ouroboros-bridge.test.ts +0 -0
  460. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/opencode/plugin/ouroboros-bridge.ts +0 -0
  461. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/opencode/plugin/package.json +0 -0
  462. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/opencode/plugin/tsconfig.json +0 -0
  463. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/__init__.py +0 -0
  464. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/adapter.py +0 -0
  465. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/agent_process.py +0 -0
  466. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/agent_runtime_context.py +0 -0
  467. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/baseline_metrics.py +0 -0
  468. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/baseline_metrics_capture.py +0 -0
  469. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/baseline_metrics_format.py +0 -0
  470. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/capabilities.py +0 -0
  471. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/codex_cli_runtime.py +0 -0
  472. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/command_dispatcher.py +0 -0
  473. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/context_governor.py +0 -0
  474. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/control_bus.py +0 -0
  475. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/control_plane.py +0 -0
  476. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/coordinator.py +0 -0
  477. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/copilot_cli_runtime.py +0 -0
  478. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/decomposition_params.py +0 -0
  479. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/dependency_analyzer.py +0 -0
  480. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/events.py +0 -0
  481. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/evidence_schema.py +0 -0
  482. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/execution_runtime_scope.py +0 -0
  483. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/execution_strategy.py +0 -0
  484. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/gemini_cli_runtime.py +0 -0
  485. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/goose_runtime.py +0 -0
  486. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/heartbeat.py +0 -0
  487. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/hermes_runtime.py +0 -0
  488. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/kiro_adapter.py +0 -0
  489. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/level_context.py +0 -0
  490. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/mcp_config.py +0 -0
  491. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/mcp_tools.py +0 -0
  492. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/opencode_event_normalizer.py +0 -0
  493. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/opencode_runtime.py +0 -0
  494. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/parallel_executor_models.py +0 -0
  495. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/phase_wrappers.py +0 -0
  496. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/policy.py +0 -0
  497. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/profile_loader.py +0 -0
  498. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/profile_strategy.py +0 -0
  499. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/rate_limit.py +0 -0
  500. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/routing.py +0 -0
  501. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/runner.py +0 -0
  502. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/runtime_evidence.py +0 -0
  503. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/runtime_factory.py +0 -0
  504. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/runtime_message_projection.py +0 -0
  505. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/session.py +0 -0
  506. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/skill_intercept.py +0 -0
  507. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/stage.py +0 -0
  508. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/traceguard_benchmark_capture.py +0 -0
  509. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/workflow_ir.py +0 -0
  510. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/workflow_ir_adapter.py +0 -0
  511. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/workflow_lifecycle.py +0 -0
  512. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator/workflow_state.py +0 -0
  513. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/orchestrator_stage.py +0 -0
  514. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/persistence/__init__.py +0 -0
  515. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/persistence/brownfield.py +0 -0
  516. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/persistence/checkpoint.py +0 -0
  517. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/persistence/event_store.py +0 -0
  518. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/persistence/migrations/__init__.py +0 -0
  519. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/persistence/migrations/runner.py +0 -0
  520. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/persistence/migrations/scripts/001_initial.sql +0 -0
  521. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/persistence/migrations/scripts/002_brownfield.sql +0 -0
  522. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/persistence/schema.py +0 -0
  523. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/persistence/uow.py +0 -0
  524. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/plugin/__init__.py +0 -0
  525. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/plugin/agents/__init__.py +0 -0
  526. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/plugin/agents/pool.py +0 -0
  527. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/plugin/agents/registry.py +0 -0
  528. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/plugin/digest.py +0 -0
  529. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/plugin/firewall.py +0 -0
  530. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/plugin/hooks.py +0 -0
  531. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/plugin/ledger_adapter.py +0 -0
  532. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/plugin/lockfile.py +0 -0
  533. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/plugin/manifest.py +0 -0
  534. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/plugin/orchestration/__init__.py +0 -0
  535. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/plugin/orchestration/router.py +0 -0
  536. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/plugin/orchestration/scheduler.py +0 -0
  537. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/plugin/schemas/0.1/_source.json +0 -0
  538. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/plugin/schemas/0.1/audit-event.schema.json +0 -0
  539. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/plugin/schemas/0.1/plugin.schema.json +0 -0
  540. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/plugin/schemas/0.2/_source.json +0 -0
  541. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/plugin/schemas/0.2/audit-event.schema.json +0 -0
  542. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/plugin/schemas/0.2/plugin.schema.json +0 -0
  543. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/plugin/schemas/0.3/_source.json +0 -0
  544. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/plugin/schemas/0.3/audit-event.schema.json +0 -0
  545. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/plugin/schemas/0.3/plugin.schema.json +0 -0
  546. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/plugin/schemas/0.4/_source.json +0 -0
  547. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/plugin/schemas/0.4/audit-event.schema.json +0 -0
  548. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/plugin/schemas/0.4/plugin.schema.json +0 -0
  549. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/plugin/skills/__init__.py +0 -0
  550. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/plugin/skills/docs.py +0 -0
  551. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/plugin/skills/executor.py +0 -0
  552. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/plugin/skills/keywords.py +0 -0
  553. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/plugin/skills/registry.py +0 -0
  554. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/plugin/trust_store.py +0 -0
  555. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/plugin/userlevel_registry.py +0 -0
  556. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/pm/__init__.py +0 -0
  557. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/pm/handoff.py +0 -0
  558. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/pm/renderer.py +0 -0
  559. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/profiles/analysis.yaml +0 -0
  560. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/profiles/code.yaml +0 -0
  561. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/profiles/research.yaml +0 -0
  562. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/providers/__init__.py +0 -0
  563. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/providers/anthropic_adapter.py +0 -0
  564. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/providers/base.py +0 -0
  565. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/providers/claude_code_adapter.py +0 -0
  566. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/providers/codex_cli_adapter.py +0 -0
  567. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/providers/codex_cli_stream.py +0 -0
  568. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/providers/copilot_cli_adapter.py +0 -0
  569. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/providers/copilot_cli_stream.py +0 -0
  570. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/providers/factory.py +0 -0
  571. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/providers/gemini_cli_adapter.py +0 -0
  572. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/providers/gemini_event_normalizer.py +0 -0
  573. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/providers/goose_cli_adapter.py +0 -0
  574. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/providers/hermes_cli_adapter.py +0 -0
  575. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/providers/kiro_adapter.py +0 -0
  576. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/providers/litellm_adapter.py +0 -0
  577. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/providers/opencode_adapter.py +0 -0
  578. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/providers/profiles.py +0 -0
  579. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/providers/tool_use_diagnostics.py +0 -0
  580. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/py.typed +0 -0
  581. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/ralph_loop.py +0 -0
  582. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/resilience/__init__.py +0 -0
  583. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/resilience/lateral.py +0 -0
  584. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/resilience/recovery.py +0 -0
  585. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/resilience/stagnation.py +0 -0
  586. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/router/__init__.py +0 -0
  587. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/router/command_parser.py +0 -0
  588. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/router/dispatch.py +0 -0
  589. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/router/registry.py +0 -0
  590. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/router/types.py +0 -0
  591. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/routing/__init__.py +0 -0
  592. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/routing/complexity.py +0 -0
  593. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/routing/downgrade.py +0 -0
  594. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/routing/escalation.py +0 -0
  595. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/routing/router.py +0 -0
  596. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/routing/tiers.py +0 -0
  597. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/runtime/__init__.py +0 -0
  598. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/runtime/controls.py +0 -0
  599. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/runtime/watchdog.py +0 -0
  600. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/sandbox.py +0 -0
  601. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/secondary/__init__.py +0 -0
  602. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/secondary/scheduler.py +0 -0
  603. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/secondary/todo_registry.py +0 -0
  604. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/skills/__init__.py +0 -0
  605. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/skills/artifacts.py +0 -0
  606. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/strategies/__init__.py +0 -0
  607. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/strategies/devil_advocate.py +0 -0
  608. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/tui/__init__.py +0 -0
  609. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/tui/app.py +0 -0
  610. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/tui/components/__init__.py +0 -0
  611. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/tui/components/agents_panel.py +0 -0
  612. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/tui/components/event_log.py +0 -0
  613. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/tui/components/progress.py +0 -0
  614. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/tui/components/token_tracker.py +0 -0
  615. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/tui/events.py +0 -0
  616. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/tui/screens/__init__.py +0 -0
  617. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/tui/screens/confirm_rewind.py +0 -0
  618. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/tui/screens/dashboard.py +0 -0
  619. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/tui/screens/dashboard_v2.py +0 -0
  620. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/tui/screens/dashboard_v3.py +0 -0
  621. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/tui/screens/debug.py +0 -0
  622. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/tui/screens/execution.py +0 -0
  623. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/tui/screens/hud_dashboard.py +0 -0
  624. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/tui/screens/lineage_detail.py +0 -0
  625. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/tui/screens/lineage_selector.py +0 -0
  626. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/tui/screens/logs.py +0 -0
  627. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/tui/screens/session_selector.py +0 -0
  628. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/tui/widgets/__init__.py +0 -0
  629. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/tui/widgets/ac_progress.py +0 -0
  630. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/tui/widgets/ac_tree.py +0 -0
  631. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/tui/widgets/agent_activity.py +0 -0
  632. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/tui/widgets/cost_tracker.py +0 -0
  633. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/tui/widgets/drift_meter.py +0 -0
  634. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/tui/widgets/lineage_tree.py +0 -0
  635. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/tui/widgets/parallel_graph.py +0 -0
  636. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/tui/widgets/phase_progress.py +0 -0
  637. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/verification/__init__.py +0 -0
  638. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/verification/extractor.py +0 -0
  639. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/verification/models.py +0 -0
  640. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/src/ouroboros/verification/verifier.py +0 -0
  641. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/__init__.py +0 -0
  642. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/_envelope_wiring.py +0 -0
  643. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/canonical/README.md +0 -0
  644. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/canonical/__init__.py +0 -0
  645. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/canonical/cli-todo/expected.yaml +0 -0
  646. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/canonical/cli-todo/goal.txt +0 -0
  647. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/canonical/conftest.py +0 -0
  648. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/canonical/test_canonical.py +0 -0
  649. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/canonical/test_conftest.py +0 -0
  650. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/conformance/__init__.py +0 -0
  651. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/conformance/workflow_ir/__init__.py +0 -0
  652. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/conformance/workflow_ir/fixtures.py +0 -0
  653. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/conformance/workflow_ir/test_negative_fixtures.py +0 -0
  654. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/conformance/workflow_ir/test_plugin_firewall_contract.py +0 -0
  655. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/conformance/workflow_ir/test_positive_fixtures.py +0 -0
  656. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/conftest.py +0 -0
  657. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/e2e/__init__.py +0 -0
  658. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/e2e/conftest.py +0 -0
  659. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/e2e/mcp_bridge_test_config.yaml +0 -0
  660. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/e2e/test_cli_commands.py +0 -0
  661. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/e2e/test_full_workflow.py +0 -0
  662. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/e2e/test_session_persistence.py +0 -0
  663. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/fixtures/plugins-fixture/README.md +0 -0
  664. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/fixtures/plugins-fixture/plugins/github-pr-ops/github_pr_ops/__init__.py +0 -0
  665. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/fixtures/plugins-fixture/plugins/github-pr-ops/github_pr_ops/__main__.py +0 -0
  666. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/fixtures/plugins-fixture/plugins/github-pr-ops/ouroboros.plugin.json +0 -0
  667. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/fixtures/projection/mechanical_evaluation_events.json +0 -0
  668. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/fixtures/router/skills/frontmatter-body/run/SKILL.md +0 -0
  669. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/fixtures/seeds/mechanical-eval-minimal.yaml +0 -0
  670. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/fixtures/test_atomicity_seed.yml +0 -0
  671. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/integration/__init__.py +0 -0
  672. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/integration/auto/__init__.py +0 -0
  673. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/integration/auto/test_dispatch_to_seed_e2e.py +0 -0
  674. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/integration/auto/test_domain_profile_plurality.py +0 -0
  675. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/integration/auto/test_end_to_end_product.py +0 -0
  676. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/integration/auto/test_interview_deadline_partial_product_regression.py +0 -0
  677. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/integration/auto/test_status_unified.py +0 -0
  678. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/integration/conftest.py +0 -0
  679. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/integration/mcp/__init__.py +0 -0
  680. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/integration/mcp/bridge/__init__.py +0 -0
  681. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/integration/mcp/bridge/test_bridge_server_to_server.py +0 -0
  682. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/integration/mcp/conftest.py +0 -0
  683. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/integration/mcp/test_client_adapter.py +0 -0
  684. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/integration/mcp/test_client_manager.py +0 -0
  685. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/integration/mcp/test_server_adapter.py +0 -0
  686. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/integration/orchestrator/__init__.py +0 -0
  687. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/integration/orchestrator/test_agent_process_three_surface_acceptance.py +0 -0
  688. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/integration/plugin/__init__.py +0 -0
  689. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/integration/plugin/test_e2e.py +0 -0
  690. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/integration/plugin/test_orchestration.py +0 -0
  691. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/integration/plugin/test_wheel_packaging.py +0 -0
  692. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/integration/test_cancel_subprocess_termination.py +0 -0
  693. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/integration/test_codex_cli_passthrough_smoke.py +0 -0
  694. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/integration/test_codex_skill_fallback.py +0 -0
  695. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/integration/test_codex_skill_smoke.py +0 -0
  696. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/integration/test_copilot_cli_smoke.py +0 -0
  697. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/integration/test_entry_point.py +0 -0
  698. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/integration/test_ir_projection_consistency.py +0 -0
  699. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/integration/test_mechanical_eval_projection.py +0 -0
  700. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/test-execution-plan.md +0 -0
  701. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/__init__.py +0 -0
  702. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/agents/__init__.py +0 -0
  703. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/agents/test_loader.py +0 -0
  704. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_821_acceptance_matrix.py +0 -0
  705. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_adapters_client_gates.py +0 -0
  706. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_adapters_ralph_poller.py +0 -0
  707. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_answer_source_log.py +0 -0
  708. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_answerer_via_domain_profile.py +0 -0
  709. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_auto_fill.py +0 -0
  710. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_auto_policies.py +0 -0
  711. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_auto_worktree.py +0 -0
  712. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_blocker_attribution.py +0 -0
  713. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_checkpoint_commits.py +0 -0
  714. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_cli_progress.py +0 -0
  715. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_domain_inference.py +0 -0
  716. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_domain_profile_coding_parity.py +0 -0
  717. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_domain_profile_contracts.py +0 -0
  718. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_execution_acceptance.py +0 -0
  719. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_handoff_contract.py +0 -0
  720. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_interview_driver_event_store_wiring.py +0 -0
  721. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_interview_pipeline.py +0 -0
  722. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_lateral_routing_safe_default.py +0 -0
  723. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_ledger_grading_answerer.py +0 -0
  724. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_ledger_seed.py +0 -0
  725. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_pipeline_deadline.py +0 -0
  726. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_pipeline_defaulted_sections_surface.py +0 -0
  727. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_pipeline_domain_profile.py +0 -0
  728. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_pipeline_evaluate.py +0 -0
  729. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_pipeline_interview_deadline_closure.py +0 -0
  730. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_pipeline_interview_observer_drain.py +0 -0
  731. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_pipeline_lateral.py +0 -0
  732. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_pipeline_oscillation_lateral.py +0 -0
  733. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_pipeline_partial_product_terminal.py +0 -0
  734. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_pipeline_provenance.py +0 -0
  735. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_pipeline_ralph_handoff.py +0 -0
  736. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_pipeline_runtime_probe_envelope.py +0 -0
  737. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_pipeline_task_class_envelope.py +0 -0
  738. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_pipeline_watchdog_integration.py +0 -0
  739. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_progress.py +0 -0
  740. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_recovery_plan.py +0 -0
  741. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_research_profile.py +0 -0
  742. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_run_starter_idempotency.py +0 -0
  743. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_runtime_semantics.py +0 -0
  744. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_safe_default_lateral_escalation.py +0 -0
  745. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_safe_default_observability.py +0 -0
  746. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_safe_defaults_domain_profile.py +0 -0
  747. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_safe_defaults_prompt_non_goals.py +0 -0
  748. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_seed_repairer_bounded.py +0 -0
  749. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_state.py +0 -0
  750. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_state_provenance.py +0 -0
  751. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_stop_reason_code.py +0 -0
  752. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_surface.py +0 -0
  753. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_task_class_application.py +0 -0
  754. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_task_classes.py +0 -0
  755. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/auto/test_user_preference_and_floor.py +0 -0
  756. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/backends/test_capabilities.py +0 -0
  757. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/bigbang/__init__.py +0 -0
  758. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/bigbang/test_ambiguity.py +0 -0
  759. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/bigbang/test_brownfield.py +0 -0
  760. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/bigbang/test_classifier_context.py +0 -0
  761. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/bigbang/test_decide_later_items.py +0 -0
  762. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/bigbang/test_explore.py +0 -0
  763. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/bigbang/test_interview.py +0 -0
  764. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/bigbang/test_interview_async_io.py +0 -0
  765. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/bigbang/test_interview_no_web_search_hint.py +0 -0
  766. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/bigbang/test_interview_research_prefix.py +0 -0
  767. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/bigbang/test_interview_start_persist_failure.py +0 -0
  768. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/bigbang/test_pm_completion.py +0 -0
  769. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/bigbang/test_pm_document_generator.py +0 -0
  770. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/bigbang/test_pm_document_writer.py +0 -0
  771. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/bigbang/test_pm_interview.py +0 -0
  772. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/bigbang/test_pm_interview_brownfield_db.py +0 -0
  773. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/bigbang/test_pm_seed_ac12.py +0 -0
  774. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/bigbang/test_pm_seed_save.py +0 -0
  775. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/bigbang/test_question_classifier.py +0 -0
  776. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/bigbang/test_seed_generator.py +0 -0
  777. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/__init__.py +0 -0
  778. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/commands/test_tui_command.py +0 -0
  779. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/conftest.py +0 -0
  780. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/formatters/__init__.py +0 -0
  781. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/formatters/test_console.py +0 -0
  782. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/formatters/test_panels.py +0 -0
  783. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/formatters/test_progress.py +0 -0
  784. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/formatters/test_prompting.py +0 -0
  785. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/formatters/test_tables.py +0 -0
  786. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/formatters/test_workflow_display.py +0 -0
  787. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/test_auto_command.py +0 -0
  788. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/test_auto_domain_activation.py +0 -0
  789. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/test_auto_provenance.py +0 -0
  790. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/test_auto_runtime_dispatch.py +0 -0
  791. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/test_bridge_plugin_hardening.py +0 -0
  792. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/test_bridge_plugin_lifecycle.py +0 -0
  793. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/test_cancel.py +0 -0
  794. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/test_codex_command.py +0 -0
  795. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/test_config.py +0 -0
  796. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/test_debug_tool_started_callbacks.py +0 -0
  797. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/test_detached_auto_wait_command.py +0 -0
  798. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/test_detect_allowed_tools_wiring.py +0 -0
  799. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/test_doc_commands.py +0 -0
  800. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/test_init_hitl.py +0 -0
  801. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/test_init_pm_seed_detection.py +0 -0
  802. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/test_init_runtime.py +0 -0
  803. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/test_job_command.py +0 -0
  804. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/test_jsonc.py +0 -0
  805. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/test_main.py +0 -0
  806. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/test_mcp_doctor.py +0 -0
  807. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/test_mcp_nested_guard.py +0 -0
  808. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/test_mcp_shell_env.py +0 -0
  809. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/test_mcp_startup_cleanup.py +0 -0
  810. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/test_mcp_validate_transport_stderr.py +0 -0
  811. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/test_opencode_config.py +0 -0
  812. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/test_plugin_command.py +0 -0
  813. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/test_plugin_command_mutating.py +0 -0
  814. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/test_plugin_dispatch.py +0 -0
  815. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/test_pm.py +0 -0
  816. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/test_pm_brownfield.py +0 -0
  817. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/test_pm_completion.py +0 -0
  818. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/test_pm_interactive_logging.py +0 -0
  819. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/test_pm_missing_litellm.py +0 -0
  820. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/test_pm_overwrite.py +0 -0
  821. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/test_pm_runtime_adapter.py +0 -0
  822. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/test_pm_select_repos.py +0 -0
  823. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/test_resume.py +0 -0
  824. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/test_run_qa.py +0 -0
  825. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/test_setup.py +0 -0
  826. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/test_status.py +0 -0
  827. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/test_status_run.py +0 -0
  828. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/cli/test_uninstall.py +0 -0
  829. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/codex/test_cli_policy.py +0 -0
  830. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/config/__init__.py +0 -0
  831. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/config/test_loader.py +0 -0
  832. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/config/test_loader_env.py +0 -0
  833. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/config/test_models.py +0 -0
  834. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/copilot/__init__.py +0 -0
  835. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/copilot/test_cli_policy.py +0 -0
  836. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/copilot/test_model_discovery.py +0 -0
  837. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/copilot/test_permissions.py +0 -0
  838. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/core/__init__.py +0 -0
  839. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/core/test_ac_tree.py +0 -0
  840. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/core/test_context.py +0 -0
  841. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/core/test_control_contract.py +0 -0
  842. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/core/test_directive.py +0 -0
  843. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/core/test_errors.py +0 -0
  844. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/core/test_file_lock.py +0 -0
  845. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/core/test_git_workflow.py +0 -0
  846. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/core/test_hitl_contract.py +0 -0
  847. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/core/test_hitl_resume.py +0 -0
  848. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/core/test_hitl_state.py +0 -0
  849. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/core/test_initial_context.py +0 -0
  850. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/core/test_lineage.py +0 -0
  851. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/core/test_ontology_aspect.py +0 -0
  852. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/core/test_ontology_questions.py +0 -0
  853. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/core/test_project_paths.py +0 -0
  854. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/core/test_retry.py +0 -0
  855. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/core/test_runtime_transition.py +0 -0
  856. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/core/test_security.py +0 -0
  857. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/core/test_seed.py +0 -0
  858. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/core/test_seed_project_path_callers.py +0 -0
  859. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/core/test_ttl_cache.py +0 -0
  860. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/core/test_types.py +0 -0
  861. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/core/test_worktree.py +0 -0
  862. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/evaluation/__init__.py +0 -0
  863. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/evaluation/test_artifact_collector_file_prefix.py +0 -0
  864. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/evaluation/test_checklist.py +0 -0
  865. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/evaluation/test_consensus.py +0 -0
  866. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/evaluation/test_detector.py +0 -0
  867. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/evaluation/test_json_utils.py +0 -0
  868. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/evaluation/test_languages.py +0 -0
  869. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/evaluation/test_mechanical.py +0 -0
  870. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/evaluation/test_models.py +0 -0
  871. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/evaluation/test_pipeline_stage1_reuse.py +0 -0
  872. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/evaluation/test_pipeline_trigger_consensus.py +0 -0
  873. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/evaluation/test_review_fixes.py +0 -0
  874. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/evaluation/test_semantic.py +0 -0
  875. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/evaluation/test_trigger.py +0 -0
  876. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/evaluation/test_trigger_consensus.py +0 -0
  877. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/evaluation/test_verification_artifacts.py +0 -0
  878. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/evaluation/test_verification_artifacts_allowed_tools_wiring.py +0 -0
  879. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/events/__init__.py +0 -0
  880. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/events/test_base.py +0 -0
  881. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/events/test_control_events.py +0 -0
  882. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/events/test_decomposition_events.py +0 -0
  883. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/events/test_hitl_events.py +0 -0
  884. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/events/test_io_events.py +0 -0
  885. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/events/test_io_recorder.py +0 -0
  886. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/evolution/test_backend_drift.py +0 -0
  887. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/evolution/test_directive_mapping.py +0 -0
  888. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/evolution/test_evolve_step_agent_process_integration.py +0 -0
  889. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/evolution/test_generation_watchdog.py +0 -0
  890. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/evolution/test_material_progress.py +0 -0
  891. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/evolution/test_wonder_scope.py +0 -0
  892. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/execution/__init__.py +0 -0
  893. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/execution/test_atomicity.py +0 -0
  894. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/execution/test_decomposition.py +0 -0
  895. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/execution/test_double_diamond.py +0 -0
  896. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/execution/test_subagent_isolation.py +0 -0
  897. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/harness/__init__.py +0 -0
  898. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/harness/test_claim_term_guard.py +0 -0
  899. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/harness/test_deliver_gate.py +0 -0
  900. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/harness/test_deliver_routing.py +0 -0
  901. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/harness/test_journal_normalizer.py +0 -0
  902. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/harness/test_projection_builder.py +0 -0
  903. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/harness/test_projection_records.py +0 -0
  904. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/harness/test_run_snapshot.py +0 -0
  905. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/hermes/test_artifacts.py +0 -0
  906. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/__init__.py +0 -0
  907. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/bridge/__init__.py +0 -0
  908. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/bridge/test_bridge.py +0 -0
  909. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/bridge/test_config.py +0 -0
  910. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/bridge/test_factory.py +0 -0
  911. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/bridge/test_handler_wiring.py +0 -0
  912. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/bridge/test_stability.py +0 -0
  913. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/client/__init__.py +0 -0
  914. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/client/test_adapter.py +0 -0
  915. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/client/test_adapter_transport_lifecycle.py +0 -0
  916. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/client/test_manager.py +0 -0
  917. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/conftest.py +0 -0
  918. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/resources/test_handlers.py +0 -0
  919. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/server/__init__.py +0 -0
  920. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/server/test_adapter.py +0 -0
  921. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/server/test_adapter_max_turns_envelope_wiring.py +0 -0
  922. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/server/test_security.py +0 -0
  923. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/test_errors.py +0 -0
  924. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/test_job_manager.py +0 -0
  925. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/test_types.py +0 -0
  926. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/__init__.py +0 -0
  927. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/conftest.py +0 -0
  928. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_ac_tree_hud_footer.py +0 -0
  929. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_ac_tree_hud_handler.py +0 -0
  930. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_ac_tree_hud_handler_completed.py +0 -0
  931. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_ac_tree_hud_handler_cursor_changed.py +0 -0
  932. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_ac_tree_hud_handler_invalid_session.py +0 -0
  933. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_ac_tree_hud_handler_no_execution.py +0 -0
  934. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_ac_tree_hud_handler_waiting.py +0 -0
  935. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_ac_tree_hud_max_nodes.py +0 -0
  936. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_ac_tree_hud_render_depth2.py +0 -0
  937. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_ac_tree_hud_render_depth3.py +0 -0
  938. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_ac_tree_hud_status_icons.py +0 -0
  939. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_ac_tree_hud_truncation.py +0 -0
  940. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_authoring_allowed_tools_wiring.py +0 -0
  941. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_auto_handler_ralph_runtime.py +0 -0
  942. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_auto_handler_resume_lines.py +0 -0
  943. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_auto_interview_construction.py +0 -0
  944. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_bridge_mixin_runtime_context.py +0 -0
  945. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_brownfield_handler.py +0 -0
  946. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_checklist_verify.py +0 -0
  947. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_client_gates.py +0 -0
  948. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_definitions.py +0 -0
  949. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_definitions_runtime_context.py +0 -0
  950. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_evaluate_multi_ac.py +0 -0
  951. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_evolve_checkpoint_commits.py +0 -0
  952. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_evolve_step_bridge_aware.py +0 -0
  953. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_execute_seed_path_resolution.py +0 -0
  954. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_generate_seed_force_flag.py +0 -0
  955. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_handler_subagent_wiring.py +0 -0
  956. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_interview_allowed_tools_wiring.py +0 -0
  957. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_interview_completion_signal_prefix_guard.py +0 -0
  958. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_interview_done_streak.py +0 -0
  959. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_interview_lateral_review_advisory.py +0 -0
  960. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_interview_length_guard_envelope.py +0 -0
  961. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_interview_persists_session_on_failure.py +0 -0
  962. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_interview_reopen_seed_ready.py +0 -0
  963. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_interview_response_diagnostics.py +0 -0
  964. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_interview_strict_mcp_config_wiring.py +0 -0
  965. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_job_instance_cancel_keys.py +0 -0
  966. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_job_invalid_arguments.py +0 -0
  967. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_lateral_think_handler.py +0 -0
  968. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_mcp_manager_wiring.py +0 -0
  969. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_pm_handler.py +0 -0
  970. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_pm_handler_allowed_tools_wiring.py +0 -0
  971. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_pm_handler_pending_reframe.py +0 -0
  972. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_qa_allowed_tools_wiring.py +0 -0
  973. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_qa_parser.py +0 -0
  974. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_ralph_handler.py +0 -0
  975. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_registry.py +0 -0
  976. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_round5_fixes.py +0 -0
  977. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_start_auto.py +0 -0
  978. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_start_evaluate.py +0 -0
  979. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_start_execute_seed_idempotency.py +0 -0
  980. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_subagent.py +0 -0
  981. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/mcp/tools/test_unstuck_bridge_aware.py +0 -0
  982. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/observability/__init__.py +0 -0
  983. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/observability/test_drift.py +0 -0
  984. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/observability/test_logging.py +0 -0
  985. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/observability/test_retrospective.py +0 -0
  986. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/__init__.py +0 -0
  987. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_adapter.py +0 -0
  988. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_agent_process.py +0 -0
  989. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_agent_runtime_context.py +0 -0
  990. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_baseline_metrics.py +0 -0
  991. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_baseline_metrics_capture.py +0 -0
  992. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_baseline_metrics_format.py +0 -0
  993. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_capabilities.py +0 -0
  994. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_codex_cli_runtime.py +0 -0
  995. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_codex_recursion_guard.py +0 -0
  996. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_command_dispatcher.py +0 -0
  997. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_context_governor.py +0 -0
  998. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_control_bus.py +0 -0
  999. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_control_plane.py +0 -0
  1000. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_coordinator.py +0 -0
  1001. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_copilot_cli_runtime.py +0 -0
  1002. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_decomposition_params.py +0 -0
  1003. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_dependency_analyzer.py +0 -0
  1004. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_events.py +0 -0
  1005. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_evidence_schema.py +0 -0
  1006. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_execution_runtime_scope.py +0 -0
  1007. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_execution_strategy.py +0 -0
  1008. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_gemini_cli_runtime.py +0 -0
  1009. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_goose_runtime.py +0 -0
  1010. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_hermes_runtime.py +0 -0
  1011. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_inflight_cancellation.py +0 -0
  1012. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_level_context.py +0 -0
  1013. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_mcp_config.py +0 -0
  1014. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_mcp_tools.py +0 -0
  1015. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_opencode_runtime.py +0 -0
  1016. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_parallel_executor_atomic_judgment.py +0 -0
  1017. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_parallel_executor_recursive_depth.py +0 -0
  1018. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_parallel_executor_retry_resume.py +0 -0
  1019. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_phase_wrappers.py +0 -0
  1020. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_policy.py +0 -0
  1021. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_profile_loader.py +0 -0
  1022. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_profile_strategy.py +0 -0
  1023. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_rate_limit.py +0 -0
  1024. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_rfc_v2_integration.py +0 -0
  1025. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_routing.py +0 -0
  1026. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_runner.py +0 -0
  1027. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_runner_allowed_tools_wiring.py +0 -0
  1028. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_runner_cancellation.py +0 -0
  1029. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_runtime_evidence.py +0 -0
  1030. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_runtime_factory.py +0 -0
  1031. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_runtime_message_projection.py +0 -0
  1032. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_sandbox_class.py +0 -0
  1033. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_seed_prompt.py +0 -0
  1034. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_session.py +0 -0
  1035. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_stage_resolution.py +0 -0
  1036. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_traceguard_benchmark_capture.py +0 -0
  1037. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_workflow_ir.py +0 -0
  1038. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_workflow_ir_adapter.py +0 -0
  1039. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_workflow_ir_plugin_adapter.py +0 -0
  1040. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_workflow_lifecycle.py +0 -0
  1041. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_workflow_lifecycle_conformance.py +0 -0
  1042. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_workflow_lifecycle_events.py +0 -0
  1043. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_workflow_projection_boundary.py +0 -0
  1044. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/test_workflow_state.py +0 -0
  1045. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/orchestrator/workflow_ir_conformance_fixtures.py +0 -0
  1046. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/persistence/__init__.py +0 -0
  1047. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/persistence/test_brownfield_store.py +0 -0
  1048. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/persistence/test_checkpoint.py +0 -0
  1049. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/persistence/test_event_store.py +0 -0
  1050. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/persistence/test_schema.py +0 -0
  1051. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/persistence/test_uow.py +0 -0
  1052. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/plugin/__init__.py +0 -0
  1053. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/plugin/agents/__init__.py +0 -0
  1054. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/plugin/agents/test_registry.py +0 -0
  1055. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/plugin/orchestration/__init__.py +0 -0
  1056. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/plugin/orchestration/test_model_router.py +0 -0
  1057. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/plugin/skills/__init__.py +0 -0
  1058. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/plugin/skills/test_keywords.py +0 -0
  1059. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/plugin/skills/test_registry.py +0 -0
  1060. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/plugin/test_digest.py +0 -0
  1061. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/plugin/test_firewall.py +0 -0
  1062. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/plugin/test_hook_permission_scopes.py +0 -0
  1063. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/plugin/test_hooks_contract.py +0 -0
  1064. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/plugin/test_ledger_adapter.py +0 -0
  1065. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/plugin/test_lifecycle_observability.py +0 -0
  1066. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/plugin/test_lockfile.py +0 -0
  1067. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/plugin/test_manifest.py +0 -0
  1068. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/plugin/test_manifest_descriptor.py +0 -0
  1069. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/plugin/test_manifest_hook_validation.py +0 -0
  1070. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/plugin/test_manifest_schema_0_3.py +0 -0
  1071. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/plugin/test_manifest_schema_0_4.py +0 -0
  1072. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/plugin/test_trust_store.py +0 -0
  1073. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/plugin/test_userlevel_registry.py +0 -0
  1074. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/pm/__init__.py +0 -0
  1075. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/pm/test_renderer.py +0 -0
  1076. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/providers/__init__.py +0 -0
  1077. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/providers/test_anthropic_adapter_io_recorder.py +0 -0
  1078. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/providers/test_base.py +0 -0
  1079. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/providers/test_claude_code_adapter.py +0 -0
  1080. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/providers/test_codex_cli_adapter.py +0 -0
  1081. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/providers/test_copilot_cli_adapter.py +0 -0
  1082. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/providers/test_factory.py +0 -0
  1083. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/providers/test_factory_copilot.py +0 -0
  1084. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/providers/test_gemini_cli_adapter.py +0 -0
  1085. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/providers/test_goose_cli_adapter.py +0 -0
  1086. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/providers/test_hermes_cli_adapter.py +0 -0
  1087. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/providers/test_litellm_adapter.py +0 -0
  1088. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/providers/test_litellm_adapter_io_recorder.py +0 -0
  1089. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/providers/test_opencode_adapter.py +0 -0
  1090. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/providers/test_profiles.py +0 -0
  1091. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/providers/test_tool_use_diagnostics.py +0 -0
  1092. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/resilience/__init__.py +0 -0
  1093. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/resilience/test_lateral.py +0 -0
  1094. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/resilience/test_recovery.py +0 -0
  1095. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/resilience/test_stagnation.py +0 -0
  1096. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/router/__init__.py +0 -0
  1097. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/router/test_command_parser.py +0 -0
  1098. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/router/test_dispatch.py +0 -0
  1099. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/router/test_dispatch_result_shapes.py +0 -0
  1100. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/router/test_extract_first_argument.py +0 -0
  1101. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/router/test_invalid_dispatch_input_types.py +0 -0
  1102. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/router/test_malformed_unknown_dispatch_errors.py +0 -0
  1103. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/router/test_not_handled_resolution.py +0 -0
  1104. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/router/test_packaged_auto_dispatch.py +0 -0
  1105. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/router/test_registry.py +0 -0
  1106. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/router/test_repository_dispatch_guard.py +0 -0
  1107. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/router/test_router_resolution_pipeline.py +0 -0
  1108. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/router/test_typed_frontmatter_fields.py +0 -0
  1109. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/router/test_valid_dispatch_normalization.py +0 -0
  1110. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/routing/__init__.py +0 -0
  1111. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/routing/test_complexity.py +0 -0
  1112. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/routing/test_downgrade.py +0 -0
  1113. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/routing/test_escalation.py +0 -0
  1114. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/routing/test_router.py +0 -0
  1115. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/routing/test_tiers.py +0 -0
  1116. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/runtime/__init__.py +0 -0
  1117. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/runtime/test_controls.py +0 -0
  1118. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/runtime/test_watchdog.py +0 -0
  1119. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/scripts/__init__.py +0 -0
  1120. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/scripts/test_check_auto_boundary.py +0 -0
  1121. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/scripts/test_check_auto_perf_budget.py +0 -0
  1122. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/scripts/test_check_max_turns_envelope.py +0 -0
  1123. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/scripts/test_claude_hook_settings.py +0 -0
  1124. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/scripts/test_hook_script_stdio.py +0 -0
  1125. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/scripts/test_install_runtime_selection.py +0 -0
  1126. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/scripts/test_keyword_detector.py +0 -0
  1127. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/scripts/test_ralph_shell_project_dir.py +0 -0
  1128. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/scripts/test_session_start.py +0 -0
  1129. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/scripts/test_sync_plugin_version.py +0 -0
  1130. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/scripts/test_version_check.py +0 -0
  1131. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/secondary/__init__.py +0 -0
  1132. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/secondary/test_scheduler.py +0 -0
  1133. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/secondary/test_todo_registry.py +0 -0
  1134. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/skills/test_skill_artifacts.py +0 -0
  1135. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/test_artifact_collector.py +0 -0
  1136. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/test_claude_plugin_skill_guide.py +0 -0
  1137. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/test_codex_artifacts.py +0 -0
  1138. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/test_convergence.py +0 -0
  1139. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/test_dashboard.py +0 -0
  1140. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/test_dependencies_configured.py +0 -0
  1141. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/test_detached_auto_docs.py +0 -0
  1142. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/test_evolve_rewind.py +0 -0
  1143. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/test_evolve_step.py +0 -0
  1144. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/test_graceful_shutdown.py +0 -0
  1145. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/test_kiro_adapters.py +0 -0
  1146. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/test_lineage.py +0 -0
  1147. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/test_main_entry_point.py +0 -0
  1148. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/test_module_structure.py +0 -0
  1149. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/test_project_initialization.py +0 -0
  1150. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/test_projector_directives.py +0 -0
  1151. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/test_projector_rewind.py +0 -0
  1152. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/test_ralph_loop_budget.py +0 -0
  1153. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/test_ralph_loop_progress.py +0 -0
  1154. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/test_ralph_loop_timeout.py +0 -0
  1155. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/test_ralph_parser.py +0 -0
  1156. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/test_ralph_rewind.py +0 -0
  1157. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/test_ralph_shell.py +0 -0
  1158. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/test_regression.py +0 -0
  1159. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/test_runtime_skill_capability_docs.py +0 -0
  1160. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/test_tooling_configuration.py +0 -0
  1161. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/test_verification.py +0 -0
  1162. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/tui/__init__.py +0 -0
  1163. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/tui/test_app.py +0 -0
  1164. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/tui/test_cancelled_display.py +0 -0
  1165. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/tui/test_events.py +0 -0
  1166. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/tui/test_lineage_viewer.py +0 -0
  1167. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/tui/test_screens.py +0 -0
  1168. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/tui/test_session_selector_replay.py +0 -0
  1169. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tests/unit/tui/test_widgets.py +0 -0
  1170. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/tools/sync_github_project.py +0 -0
  1171. {ouroboros_ai-0.40.1.dev2 → ouroboros_ai-0.40.2.dev2}/uv.lock +0 -0
@@ -10,7 +10,7 @@
10
10
  {
11
11
  "name": "ouroboros",
12
12
  "description": "Transform vague ideas into validated seed specifications through Socratic questioning and ontological analysis",
13
- "version": "0.40.1",
13
+ "version": "0.40.2",
14
14
  "author": {
15
15
  "name": "Q00",
16
16
  "email": "jqyu.lee@gmail.com"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ouroboros",
3
- "version": "0.40.1",
3
+ "version": "0.40.2",
4
4
  "description": "Self-improving AI workflow system. Crystallize requirements before execution with Socratic interview, ambiguity scoring, and 3-stage evaluation.",
5
5
  "author": {
6
6
  "name": "Q00",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ouroboros-ai
3
- Version: 0.40.1.dev2
3
+ Version: 0.40.2.dev2
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
@@ -30,6 +30,7 @@ replayable execution contract on your choice of runtime backend.
30
30
  - [Configuration Reference](./config-reference.md) - All `config.yaml` options and environment variables
31
31
  - [Agent OS Profile Taxonomy](./agentos/profile-taxonomy.md) - Locked 4-slot vocabulary (`runtime_backend`, `stage_runtime`, `llm_profile`, `provider_profile`) for the historically-overloaded "profile" concepts; tiebreaker for #573
32
32
  - [AgentOS Release Readiness](./agentos/release-readiness.md) - #961-aligned release gate, verification pack, and open issue triage
33
+ - [AgentOS Issue Sequencing Graph](./agentos/issue-sequencing-graph.md) - Non-normative, dated #961/#1256 snapshot of track sequencing, merged-PR evidence, and recommended work order
33
34
 
34
35
  ### API Reference
35
36
 
@@ -55,6 +56,7 @@ replayable execution contract on your choice of runtime backend.
55
56
  - [Agent OS Kernel Terminology](./contributing/agent-os-kernel-terminology.md) - Locked vocabulary for `AgentRuntimeContext`, `ControlPlane`, `ControlContract`, `Directive`, `ControlBus`, and `IOJournal`
56
57
  - [ControlContract](./contributing/control-contract.md) - Control-plane schema, terminality, replay, and idempotency invariants
57
58
  - [Testing Guide](./contributing/testing-guide.md) - Writing and running tests
59
+ - [Verifier Evidence Policy](./contributing/verifier-evidence-policy.md) - Core verifier boundary: avoid runner-specific parsers, classify evidence-form mismatches, and preserve anti-fabrication semantics
58
60
  - [Key Patterns](./contributing/key-patterns.md) - Result type, immutability, event sourcing, protocols
59
61
  - [Findings Registry](./contributing/findings-registry.md) - Documentation audit findings registry
60
62
  - [Issue Quality Policy](./contributing/issue-quality-policy.md) - Quality bar for actionable issues and PRD-lite feature requests
@@ -0,0 +1,241 @@
1
+ # AgentOS Issue Sequencing Graph
2
+
3
+ > Snapshot documentation imported from #1291. This page is informational only; #961 remains the canonical AgentOS roadmap SSOT, and #1256 remains the product-policy SSOT for the `ooo auto` closure ladder.
4
+
5
+ Snapshot: 2026-05-29 18:40 KST.
6
+
7
+ This document is a point-in-time triage view for the AgentOS issue set. It is
8
+ not a new source of truth. GitHub issues, especially #961 and #1256, remain the
9
+ normative records. Use this page to see which recently merged PRs resolved
10
+ which roadmap tracks, which open issues are still intentionally open, and what
11
+ order the remaining work should follow.
12
+
13
+ ## Source Of Truth
14
+
15
+ - #961 is the AgentOS roadmap sequencing SSOT.
16
+ - Track B's implementation merge train is reconciled. #1256 owns the remaining
17
+ product-policy decisions, but they are not open autonomous implementation
18
+ work.
19
+ - #939 remains the plugin lifecycle umbrella after its docs/schema slices.
20
+ - The GitHub open issue list is the closure authority. At this snapshot there
21
+ are 20 open issues, and none has enough merged evidence to close safely.
22
+
23
+ ## Sequencing Graph
24
+
25
+ ```mermaid
26
+ flowchart TD
27
+ LegendMeta["Meta / RFC SSOT"]
28
+ LegendOpen["Open: design or implementation remains"]
29
+ LegendMerged["Merged PR / delivered slice"]
30
+ LegendClosed["Closed issue"]
31
+ LegendBacklog["Backlog / later design"]
32
+
33
+ I961["#961 AgentOS roadmap SSOT"]
34
+
35
+ I961 --> A["Track A: fat harness COMPLETE"]
36
+ A --> A920["#920 closed"]
37
+ A --> A925["#925 closed"]
38
+ A --> A960["#960 closed"]
39
+ A --> A1282["#1282 merged: health readiness snapshot"]
40
+
41
+ I961 --> B["Track B: ooo auto IMPLEMENTATION RECONCILED"]
42
+ B --> I1157["#1157 auto vision SSOT"]
43
+ I1157 --> I1256["#1256 Product-or-Die RFC"]
44
+ I1256 --> B1257["#1257 closed by #1269-#1272"]
45
+ I1256 --> B1260["#1260 merged: first EventStore slice"]
46
+ I1256 --> I1254["#1254 open: all auto state transitions"]
47
+ I1256 --> I1258["#1258 open: perf regression approval/design"]
48
+ I1256 --> I1170["#1170 open: canonical product matrix"]
49
+ I1256 --> I1263["#1263 open: aggressive autofill design"]
50
+ I1256 --> I1234["#1234 open: verifier pipeline policy"]
51
+ B --> B1281["#1281 merged: checkpoint isolation"]
52
+ B --> B1284["#1284 merged: interview progress relay"]
53
+ B --> B1286["#1286 merged: detached job UX"]
54
+ B --> B1289["#1289 merged: #1283 residue"]
55
+ B --> B1290["#1290 merged: #1285 residue"]
56
+
57
+ I961 --> C["Track C: AgentOS substrate / plugins"]
58
+ C --> C946["#946 closed"]
59
+ C --> C956["#956 closed"]
60
+ C --> C1276["#1276 merged: artifact/state hook contract"]
61
+ C --> C1277["#1277 merged: plugin v0.4 schema"]
62
+ C --> I939["#939 open: remaining lifecycle hooks/audit work"]
63
+
64
+ I961 --> D["Design backlog"]
65
+ D --> I518["#518 AgentProcess lifecycle"]
66
+ D --> I614["#614 external guidance contract"]
67
+ D --> I615["#615 reasoning budget policy"]
68
+ D --> I813["#813 Symposium primitive"]
69
+ I813 --> I814["#814 verdict envelope"]
70
+ I813 --> I815["#815 stateful debate policy"]
71
+ I813 --> I816["#816 evaluate consensus migration"]
72
+ I813 --> I819["#819 persistent transcript"]
73
+ D --> I831["#831 interview MCP hang watchlist"]
74
+ D --> I1139["#1139 Pi runtime bridge"]
75
+ D --> I1239["#1239 reference-aware interviews"]
76
+
77
+ classDef meta fill:#fef3c7,stroke:#d97706,color:#111827,stroke-width:2px
78
+ classDef open fill:#fee2e2,stroke:#dc2626,color:#111827,stroke-width:2px
79
+ classDef merged fill:#dcfce7,stroke:#16a34a,color:#111827,stroke-width:2px
80
+ classDef closed fill:#e0f2fe,stroke:#0284c7,color:#111827,stroke-width:2px
81
+ classDef backlog fill:#f3e8ff,stroke:#7e22ce,color:#111827,stroke-width:2px
82
+ classDef track fill:#f8fafc,stroke:#64748b,color:#111827,stroke-width:1px
83
+
84
+ class LegendMeta,I961,I1157,I1256 meta
85
+ class LegendOpen,I1254,I1258,I1170,I1263,I1234,I939 open
86
+ class LegendMerged,A1282,B1260,B1281,B1284,B1286,B1289,B1290,C1276,C1277 merged
87
+ class LegendClosed,A920,A925,A960,B1257,C946,C956 closed
88
+ class LegendBacklog,I518,I614,I615,I813,I814,I815,I816,I819,I831,I1139,I1239 backlog
89
+ class A,B,C,D track
90
+ ```
91
+
92
+ ## Closure Verdict
93
+
94
+ No currently open issue is safe to close from the available evidence.
95
+
96
+ The merged PRs have resolved important slices, but the open issues are still in
97
+ one of these states:
98
+
99
+ - Meta or RFC SSOT that must stay open while downstream tracks converge.
100
+ - Partially implemented umbrella with remaining scoped work.
101
+ - Needs-design or needs-approval item that requires a human decision before
102
+ implementation can be declared complete.
103
+ - Backlog design issue unrelated to the recent auto/detached-job merge train.
104
+
105
+ Already closed items with clear closure evidence include #920, #925, #946,
106
+ #956, #960, #1257, #1267, #573, #575, and #476.
107
+
108
+ ## `ooo auto` Release Position
109
+
110
+ Track B is release-ready as an implementation track, but #1256 should stay open
111
+ as a policy/RFC umbrella.
112
+
113
+ What this release can safely claim:
114
+
115
+ - `ooo auto --complete-product` has a real Interview -> Seed -> Run -> Ralph
116
+ product chain, with foreground completion when Ralph reaches a terminal
117
+ success and tracked detached background work when ownership moves out of the
118
+ client wait budget.
119
+ - Detached auto is not treated as failure: CLI/MCP status, wait, and result
120
+ surfaces expose stable handles and polling guidance.
121
+ - The R3 failure class from #1256/#1257 is fixed: an interview phase deadline no
122
+ longer terminally reports `interview_phase_deadline` BLOCKED. It routes
123
+ through `partial_seed_from_evidence`, emits `runtime.deadline.interview.fired`
124
+ before `auto.product.partial_emitted`, and surfaces
125
+ `partial_product=True` with unresolved slots as next-step hints.
126
+ - Degraded partial Seeds relax ambiguity/open-gap blockers only for recoverable
127
+ missing evidence. Safety blockers and explicit human-required ledger BLOCKED
128
+ entries still block.
129
+ - Canonical `cli-todo` product-complete shape exists and validates fixture
130
+ shape in CI; the live canonical run remains manual opt-in because it consumes
131
+ real LLM/runtime budget.
132
+
133
+ What this release should not over-claim:
134
+
135
+ - #1256 Product-or-Die is not fully adopted as a global invariant. The codebase
136
+ still has legitimate BLOCKED states for safety, missing structural goal,
137
+ failed run handoff, Ralph terminal failure, and other recoverable operator
138
+ states.
139
+ - #1263 aggressive LLM auto-fill is not implemented as a general policy. Safe
140
+ defaults and degraded partial Seeds exist, but "auto-fill every gap with LLM
141
+ inference" remains owner-approved future policy.
142
+ - #1254 unified EventStore coverage is only partially implemented. The
143
+ interview/deadline/partial-product path has typed evidence, but the RFC's
144
+ "every transition in every phase" contract is still umbrella work.
145
+ - #1258 throughput/per-round regression remains approval-gated. Guardrails and
146
+ R-run lint exist, but the release should not claim improved auto throughput.
147
+ - #1170 I6 product reality is represented by the canonical harness and
148
+ `cli-todo` shape/live-run path, not by a full 3-task product matrix.
149
+
150
+ Focused verification on this snapshot:
151
+
152
+ ```text
153
+ uv run pytest tests/unit/auto/test_pipeline_partial_product_terminal.py \
154
+ tests/integration/auto/test_interview_deadline_partial_product_regression.py \
155
+ tests/canonical/test_canonical.py \
156
+ tests/unit/mcp/tools/test_start_auto.py \
157
+ tests/unit/cli/test_job_command.py -q
158
+
159
+ 82 passed, 1 skipped
160
+ ```
161
+
162
+ ## Recently Merged Evidence
163
+
164
+ | PR | Merged | Track | Delivered behavior | Disposition |
165
+ | --- | --- | --- | --- | --- |
166
+ | #1290 | 2026-05-29 09:30 UTC | Track B | Carried the linked-stream residue from closed-unmerged #1285 into the branch that actually merged. This preserves the intended stream/attachment behavior without depending on the abandoned PR. | Detached stream residue is merged; no open issue closes from this alone. |
167
+ | #1289 | 2026-05-29 09:31 UTC | Track B | Carried the auto-dispatch residue from closed-unmerged #1283 into the branch that actually merged. This keeps CLI/MCP detached auto dispatch aligned after the superseding UX PR. | Dispatch residue is merged; #1283 itself stays closed-unmerged. |
168
+ | #1286 | 2026-05-29 06:12 UTC | Track B | Improved detached auto job tracking UX so auto runs are treated as tracked background work rather than terminal failures when the client stops waiting. | Main detached async UX slice is merged; follow-up residue landed in #1289/#1290. |
169
+ | #1284 | 2026-05-29 06:12 UTC | Track B | Relays hidden auto interview questions into progress output so users can see what the background interview is asking instead of treating auto as a black box. | Observability UX improved; broader EventStore lifecycle coverage remains #1254. |
170
+ | #1282 | 2026-05-29 07:03 UTC | Track A/C | Added the AgentOS health-readiness table and release-readiness triage snapshot. It records that Track A wiring and baseline gates are complete, then separates remaining Track B/C/D follow-ups from the completed fat-harness lane. | Snapshot merged; #961 remains the live roadmap SSOT. |
171
+ | #1281 | 2026-05-29 06:46 UTC | Track B | Isolates coding sessions with checkpoint commits so `ooo auto` can preserve intermediate work and avoid losing state across detached or resumed coding sessions. | Reliability slice merged; remaining Track B items are design/RFC-gated, not open implementation PR work. |
172
+ | #1280 | 2026-05-28 16:18 UTC | Track B | Cleans up synchronous `complete-product` runs so completed auto sessions do not leave misleading active/blocked residue. | Cleanup merged; detached and background semantics were completed later by #1286/#1289/#1290. |
173
+ | #1279 | 2026-05-28 16:17 UTC | Track B | Requires terminal run evidence before Ralph/evolution handoff, preventing premature evolution loops when auto has not actually produced terminal execution evidence. | Guardrail merged; canonical product matrix remains #1170. |
174
+ | #1278 | 2026-05-28 15:28 UTC | Track B | Closes backend-ready fallback resumes, so fallback-ready sessions can resume through the intended terminal path instead of appearing stranded. | Resume fix merged; broader auto ladder semantics are covered by #1256. |
175
+ | #1277 | 2026-05-28 15:03 UTC | Track C | Adds plugin schema v0.4 plus tool-call hook type promotion, advancing #939's lifecycle hook contract from prose toward typed plugin metadata. | Schema slice merged; #939 remains open for write-side hook/audit execution. |
176
+ | #1276 | 2026-05-28 14:10 UTC | Track C | Documents the artifact/state hook contract for plugins, including what hook producers and consumers can rely on. | Contract docs merged; implementation slices remain under #939. |
177
+ | #1275 | 2026-05-28 14:10 UTC | Track C | Locks the profile taxonomy terminology for #573, removing ambiguity around the overloaded "profile" vocabulary. | #573 is closed. |
178
+ | #1274 | 2026-05-28 14:10 UTC | Track C | Locks ControlJournal option A for #575, settling that design choice for the runtime contract. | #575 is closed. |
179
+ | #1273 | 2026-05-28 14:10 UTC | Track C | Records #476 as implemented in the runtime contract snapshot so the earlier runtime-contract issue has a durable doc anchor. | #476 is closed. |
180
+ | #1272 | 2026-05-28 14:58 UTC | Track B | Adds canonical regression coverage for the #1257 closure ladder, making the ladder behavior testable instead of only described. | Completes the #1257 ladder PR train. |
181
+ | #1271 | 2026-05-28 14:52 UTC | Track B | Makes degraded seed output a partial-product terminal state, so imperfect evidence can still yield a usable artifact instead of BLOCKED. | Part of #1257 closure; #1257 is closed. |
182
+ | #1270 | 2026-05-28 14:36 UTC | Track B | Converts interview deadline expiry into closure-ladder behavior, avoiding terminal BLOCKED when enough partial evidence exists. | Part of #1257 closure; #1257 is closed. |
183
+ | #1269 | 2026-05-28 14:11 UTC | Track B | Adds the `partial_seed_from_evidence` substrate used by the closure ladder to synthesize a partial Seed from collected interview evidence. | Foundation for #1270-#1272; #1257 is closed. |
184
+ | #1268 | 2026-05-28 14:10 UTC | Track C | Migrates Codex setup profiles to profile-v2, aligning setup/runtime naming with the locked taxonomy. | #1267 is closed. |
185
+ | #1260 | 2026-05-28 05:02 UTC | Track B | Wires the first `ooo auto` interview lifecycle events to EventStore, proving the path but only for the initial event family. | First slice merged; #1254 remains open for all auto state transitions. |
186
+ | #1259 | 2026-05-28 05:01 UTC | Track B | Adds CI/perf-budget lint around the R-run section so future auto evidence must include timing discipline. | Guardrail merged; the #1258 wall-clock regression itself remains open. |
187
+ | #1238 | 2026-05-26 16:52 UTC | Track B | Makes the verifier tolerate safe Gradle/Maven evidence cases and quote variants that were falsely flagged by #1234. | Safe subset merged; strict pipeline/tail policy remains open in #1234. |
188
+
189
+ ## Open Issue Disposition
190
+
191
+ | Issue | Track | Current disposition | Next decision |
192
+ | --- | --- | --- | --- |
193
+ | #961 | Meta | AgentOS roadmap SSOT; intentionally open. | Keep as the single coordination point until AgentOS release gates close. |
194
+ | #1256 | B | Product-or-Die RFC; intentionally open after implementation reconciliation. | Keep as policy SSOT; do not start more autonomous Track B implementation without explicit approval. |
195
+ | #1157 | B | Auto vision SSOT now subordinate to #1256. | Keep open as meta vision until maintainers decide the product-policy lane is done. |
196
+ | #1254 | B | Partially addressed by #1260; expanded by #1256 to all auto state transitions. | Design-gated observability umbrella, not a current release implementation blocker. |
197
+ | #1258 | B | Regression guardrails landed in #1259; the broader perf policy remains needs-design/needs-approval. | Treat as approval-gated policy/perf work, not an active autonomous fix. |
198
+ | #1263 | B | Design item for aggressive auto-fill after non-converging interviews. | Defer until maintainers explicitly accept the policy and scope. |
199
+ | #1170 | B | Canonical harness/product matrix remains a meta slice. | Keep as future acceptance policy unless #1256 promotes a concrete implementation task. |
200
+ | #1234 | B | Safe subset landed in #1238, but pipe/tail policy remains unresolved. | Decide strict matcher policy for unprotected pipelines. |
201
+ | #939 | C | Umbrella remains open after #1276/#1277. | Finish write-side artifact/state substrate and remaining hook/audit slices. |
202
+ | #518 | D | Long-lived AgentProcess lifecycle design item. | Keep for later runtime lifecycle planning. |
203
+ | #614 | D | External guidance contract design item. | Define project/user skill guidance boundaries. |
204
+ | #615 | D | Runtime reasoning budget policy design item. | Define budget/cognitive-effort policy and enforcement surface. |
205
+ | #813 | D | Symposium primitive RFC. | Pick naming/envelope/adoption plan before child migration. |
206
+ | #814 | D | Child of Symposium-style dispatch direction. | Standardize verdict envelope after #813 direction. |
207
+ | #815 | D | Debate-pool policy question. | Decide whether stateful agents may join debates. |
208
+ | #816 | D | Needs-info migration from score average to debate. | Revisit after #813/#814 policy is accepted. |
209
+ | #819 | D | Persistent transcript for multi-persona debate. | Revisit after the debate primitive is accepted. |
210
+ | #831 | D | Watchlist, not an active release blocker. #834/#837/#972 added contract hygiene and diagnostics, but the original trace likely crossed into Claude Code/SDK behavior. | Do not spend more harness-engineering effort unless it reproduces again on the supported MCP interview path; disclose or reopen as active only on a fresh failure. |
211
+ | #1139 | D | Pi support via runtime bridge. | Keep as integration design work, separate from release readiness. |
212
+ | #1239 | D | Reference-aware interview adapters RFC. | Define adapter/glossary provenance contract before implementation. |
213
+
214
+ ## Recommended Work Order
215
+
216
+ 1. Keep #961 and #1256 open as control issues. Do not close them for slice PRs.
217
+ 2. Treat the detached async-running lane as merged through #1286, #1289, and
218
+ #1290. There is no remaining open issue to close for #1283/#1285 because
219
+ those PRs were closed unmerged and their residue landed in follow-up PRs.
220
+ 3. Treat Track B as implementation-reconciled. Do not keep digging there just
221
+ because #1157/#1170/#1256/#1254/#1258/#1263 remain open; those are
222
+ meta/RFC/design/approval surfaces. Start new Track B implementation only if
223
+ a maintainer turns one into a concrete accepted slice.
224
+ 4. Finish Track C after the write-side substrate is unblocked:
225
+ - Remaining #939 hook dispatch, permissions, and audit slices.
226
+ 5. Keep Track D as a deliberate design backlog. It should not block the current
227
+ AgentOS release-readiness lane unless #961 reclassifies one of those issues.
228
+ For #831 specifically, prefer watchlist/disclosure over more harness work
229
+ unless a fresh supported-path hang reproduces.
230
+
231
+ ## Practical Triage Rule
232
+
233
+ When a new PR lands, update this page only if it changes one of these facts:
234
+
235
+ - An open issue becomes safely closable.
236
+ - A meta issue delegates ownership to a different SSOT.
237
+ - The recommended work order changes.
238
+ - A previously deferred Track B/C item gets a concrete implementation plan.
239
+
240
+ Otherwise, leave #961 as the active SSOT and avoid creating duplicate roadmap
241
+ state.
@@ -0,0 +1,80 @@
1
+ # Verifier Evidence Policy
2
+
3
+ This policy governs fixes to the atomic verifier and fat-harness evidence
4
+ boundary.
5
+
6
+ The core verifier must stay domain- and language-agnostic. It decides whether
7
+ typed evidence is backed by the runtime transcript. It must not grow bespoke
8
+ parsers for each test runner, language ecosystem, framework, or report format.
9
+
10
+ ## Core rule
11
+
12
+ When valid work appears to be rejected, first classify the failure shape:
13
+
14
+ | Shape | Meaning | Correct direction |
15
+ | --- | --- | --- |
16
+ | No runtime transcript evidence exists for the claim | The claim may be fabricated. | Keep or use `FABRICATION_SUSPECTED`. |
17
+ | Related runtime work exists, but the evidence form cannot prove the claim | The evidence contract is mismatched. | Use `EVIDENCE_FORM_MISMATCH` with retry guidance. |
18
+ | The evidence needs runner-specific interpretation | The core verifier is the wrong layer. | Add a profile/adapter-level contract or require a runner-agnostic proof form. |
19
+
20
+ ## Do not add runner-specific parsers to core
21
+
22
+ Avoid fixes that teach `parallel_executor.py` to understand one ecosystem's
23
+ result format, such as JUnit XML, pytest JUnit XML, TAP, Go test JSON, Vitest
24
+ JSON, Maven Surefire XML, or Gradle-specific report layouts.
25
+
26
+ Those fixes make one stack pass while creating an implicit obligation to support
27
+ every other stack in the same core path. They also make anti-fabrication
28
+ semantics depend on language-specific parsing details that the core verifier
29
+ cannot own consistently.
30
+
31
+ ## Preferred evidence forms
32
+
33
+ For test commands whose output is filtered or paged, the preferred proof is a
34
+ runner-agnostic command contract:
35
+
36
+ ```sh
37
+ set -o pipefail && <test command> 2>&1 | tail -100
38
+ ```
39
+
40
+ `pipefail` preserves the failing status of the left-hand test command even when
41
+ the right-hand output filter succeeds. Without it, a filtered pipeline is a real
42
+ transcript event but not a clean command proof.
43
+
44
+ For richer result formats, prefer one of these approaches:
45
+
46
+ - Emit a typed, runner-neutral proof field from a profile or adapter that owns
47
+ that runner.
48
+ - Keep the core verdict as `EVIDENCE_FORM_MISMATCH` and retry with clearer
49
+ evidence.
50
+ - Promote a new cross-runner evidence contract only after it has an explicit
51
+ design issue and acceptance criteria across multiple ecosystems.
52
+
53
+ ## Failure class semantics
54
+
55
+ `FABRICATION_SUSPECTED` is reserved for claims with no supporting runtime event
56
+ or artifact reference. It should not be used when the transcript clearly shows
57
+ related work but the evidence shape is contract-incompatible.
58
+
59
+ `EVIDENCE_FORM_MISMATCH` means:
60
+
61
+ - related runtime work is visible;
62
+ - the current evidence form cannot prove the typed claim;
63
+ - retrying with a contract-compliant proof form is reasonable;
64
+ - the verifier must still reject the claim until that proof form exists.
65
+
66
+ This distinction keeps issue triage honest: the implementer did not necessarily
67
+ invent work, but the harness still cannot accept the evidence.
68
+
69
+ ## Review checklist
70
+
71
+ Before accepting a verifier-evidence fix, ask:
72
+
73
+ 1. Does this add language-, framework-, or runner-specific parsing to core?
74
+ 2. Could the same pattern appear in another ecosystem tomorrow?
75
+ 3. Is the fix preserving anti-fabrication semantics, or merely making one report
76
+ format pass?
77
+ 4. Would `EVIDENCE_FORM_MISMATCH` plus retry guidance be the correct smaller
78
+ response?
79
+ 5. If structured parsing is required, is it owned by a profile/adapter or a
80
+ cross-runner evidence contract rather than by the core verifier?
@@ -282,7 +282,7 @@ A backup will be created: CLAUDE.md.bak
282
282
  **If "Preview first", show:**
283
283
  ````markdown
284
284
  <!-- ooo:START -->
285
- <!-- ooo:VERSION:0.40.1 -->
285
+ <!-- ooo:VERSION:0.40.2 -->
286
286
  # Ouroboros — Specification-First AI Development
287
287
 
288
288
  > Before telling AI what to build, define what should be built.
@@ -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.40.1.dev2'
22
- __version_tuple__ = version_tuple = (0, 40, 1, 'dev2')
21
+ __version__ = version = '0.40.2.dev2'
22
+ __version_tuple__ = version_tuple = (0, 40, 2, 'dev2')
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -28,6 +28,9 @@ class FailureClass(StrEnum):
28
28
  Members:
29
29
  EVIDENCE_MISSING: Leaf could not emit a parseable / validated
30
30
  evidence record (covers both parse errors and H2 rejections).
31
+ EVIDENCE_FORM_MISMATCH: Leaf executed related work, but the evidence
32
+ shape cannot prove it under the contract (for example an
33
+ unprotected output-filter pipeline for a test command).
31
34
  FABRICATION_SUSPECTED: Verifier flagged claims about files,
32
35
  symbols, or sources that do not exist. Verifier sets this
33
36
  via VerifierVerdict.failure_class.
@@ -43,6 +46,7 @@ class FailureClass(StrEnum):
43
46
  """
44
47
 
45
48
  EVIDENCE_MISSING = "EVIDENCE_MISSING"
49
+ EVIDENCE_FORM_MISMATCH = "EVIDENCE_FORM_MISMATCH"
46
50
  FABRICATION_SUSPECTED = "FABRICATION_SUSPECTED"
47
51
  SCOPE_CREEP = "SCOPE_CREEP"
48
52
  STALL = "STALL"
@@ -74,6 +78,14 @@ _POLICY_TABLE: dict[FailureClass, RecoveryPolicy] = {
74
78
  "verifier feedback already names the missing/rejected fields."
75
79
  ),
76
80
  ),
81
+ FailureClass.EVIDENCE_FORM_MISMATCH: RecoveryPolicy(
82
+ action=RecoveryAction.RETRY,
83
+ rationale=(
84
+ "Leaf ran related work, but its evidence shape cannot prove the "
85
+ "claim; retry with contract-compliant evidence such as pipefail "
86
+ "for output-filtered test commands."
87
+ ),
88
+ ),
77
89
  FailureClass.FABRICATION_SUSPECTED: RecoveryPolicy(
78
90
  action=RecoveryAction.ESCALATE_MODEL,
79
91
  rationale=(
@@ -692,6 +692,86 @@ def _runtime_messages_support_command_claim(
692
692
  return any(_runtime_message_supports_command_claim(value, message) for message in messages)
693
693
 
694
694
 
695
+ def _runtime_messages_have_masked_test_command_form(
696
+ value: str,
697
+ messages: tuple[AgentMessage, ...],
698
+ ) -> bool:
699
+ """Return True when a test command claim matches only after unsafe plumbing.
700
+
701
+ This deliberately does NOT prove the command claim. It distinguishes a real
702
+ transcript shape that failed the evidence contract (for example a test run
703
+ piped through ``tail`` without ``set -o pipefail``) from a fabrication where
704
+ no related test command appears at all.
705
+ """
706
+ claim_invocation = _test_command_invocation(value)
707
+ if claim_invocation is None:
708
+ return False
709
+ for message in messages:
710
+ if message.tool_name != "Bash":
711
+ continue
712
+ for runtime_command in _runtime_message_command_values(message):
713
+ if not _has_trailing_output_filter_pipeline(runtime_command):
714
+ continue
715
+ runtime_invocation = _test_command_invocation_allowing_output_plumbing(runtime_command)
716
+ if runtime_invocation is None:
717
+ continue
718
+ if runtime_invocation == claim_invocation or runtime_invocation.startswith(
719
+ claim_invocation + " "
720
+ ):
721
+ return True
722
+ return False
723
+
724
+
725
+ def _runtime_messages_have_masked_test_command_for_test_claim(
726
+ *,
727
+ value: str,
728
+ messages: tuple[AgentMessage, ...],
729
+ task_cwd: str | None,
730
+ ) -> bool:
731
+ """Return True when a rejected test claim depends on masked test output.
732
+
733
+ This is diagnostic only. It lets the verifier classify a dependent
734
+ ``tests_passed`` failure with the same evidence-form mismatch as the
735
+ rejected ``commands_run`` claim, while still refusing to accept the masked
736
+ command as proof.
737
+ """
738
+ for index, message in enumerate(messages):
739
+ if message.tool_name != "Bash":
740
+ continue
741
+ masked_invocations: list[str] = []
742
+ for runtime_command in _runtime_message_command_values(message):
743
+ if not _has_trailing_output_filter_pipeline(runtime_command):
744
+ continue
745
+ runtime_invocation = _test_command_invocation_allowing_output_plumbing(runtime_command)
746
+ if runtime_invocation is not None:
747
+ masked_invocations.append(runtime_invocation)
748
+ if not masked_invocations:
749
+ continue
750
+
751
+ chunk = [message]
752
+ for following in messages[index + 1 :]:
753
+ if following.tool_name and not _is_tool_result_message(following):
754
+ break
755
+ chunk.append(following)
756
+ if not any(_message_contains_test_success(item) for item in chunk):
757
+ continue
758
+ chunk_text = "\n".join(_runtime_message_search_text(item) for item in chunk)
759
+ chunk_test_proof_text = "\n".join(_runtime_message_test_proof_text(item) for item in chunk)
760
+ if any(
761
+ _test_command_targets_claim(
762
+ command=command,
763
+ claim=value,
764
+ chunk_text=chunk_text,
765
+ chunk_test_proof_text=chunk_test_proof_text,
766
+ messages=messages,
767
+ task_cwd=task_cwd,
768
+ )
769
+ for command in masked_invocations
770
+ ):
771
+ return True
772
+ return False
773
+
774
+
695
775
  def _runtime_messages_support_file_claim(
696
776
  value: str,
697
777
  messages: tuple[AgentMessage, ...],
@@ -936,6 +1016,29 @@ def _test_command_invocation(command: str) -> str | None:
936
1016
  return _test_invocation_from_shell_body(body)
937
1017
 
938
1018
 
1019
+ def _test_command_invocation_allowing_output_plumbing(command: str) -> str | None:
1020
+ """Return a test invocation after stripping output plumbing unconditionally.
1021
+
1022
+ This must not be used as command proof. It exists only to classify rejected
1023
+ evidence forms for diagnostics while preserving the #1208 masking guard.
1024
+ """
1025
+ normalized = command.strip().lower()
1026
+ if not normalized:
1027
+ return None
1028
+ direct = _test_invocation_from_prefix(_strip_command_output_plumbing(normalized))
1029
+ if direct is not None:
1030
+ return direct
1031
+ body = _shell_command_body(normalized)
1032
+ if body is None:
1033
+ return None
1034
+ for segment, _pipefail_enabled in _segments_after_safe_shell_preamble_with_pipefail(body):
1035
+ invocation = _test_invocation_from_prefix(_strip_command_output_plumbing(segment))
1036
+ if invocation is not None:
1037
+ return invocation
1038
+ return None
1039
+ return None
1040
+
1041
+
939
1042
  def _shell_command_body(command: str) -> str | None:
940
1043
  """Return the ``-c`` body when the command starts with a shell wrapper."""
941
1044
  try:
@@ -5808,6 +5911,7 @@ Files present:
5808
5911
  )
5809
5912
 
5810
5913
  unsupported: list[str] = []
5914
+ evidence_form_mismatches: list[str] = []
5811
5915
  backed_commands = tuple(
5812
5916
  command
5813
5917
  for command in _flatten_evidence_values(typed_evidence.get("commands_run"))
@@ -5831,6 +5935,13 @@ Files present:
5831
5935
  if field_name == "commands_run":
5832
5936
  if _runtime_messages_support_command_claim(value, field_messages):
5833
5937
  continue
5938
+ if _runtime_messages_have_masked_test_command_form(
5939
+ value,
5940
+ field_messages,
5941
+ ):
5942
+ evidence_form_mismatches.append(f"{field_name}: {value}")
5943
+ unsupported.append(f"{field_name}: {value}")
5944
+ continue
5834
5945
  unsupported.append(f"{field_name}: {value}")
5835
5946
  continue
5836
5947
  if field_name == "files_touched":
@@ -5850,16 +5961,35 @@ Files present:
5850
5961
  task_cwd=self._task_cwd or self._adapter.working_directory,
5851
5962
  ):
5852
5963
  continue
5964
+ if _runtime_messages_have_masked_test_command_for_test_claim(
5965
+ value=value,
5966
+ messages=support_messages,
5967
+ task_cwd=self._task_cwd or self._adapter.working_directory,
5968
+ ):
5969
+ evidence_form_mismatches.append(f"{field_name}: {value}")
5970
+ unsupported.append(f"{field_name}: {value}")
5971
+ continue
5853
5972
  unsupported.append(f"{field_name}: {value}")
5854
5973
  continue
5855
5974
  if not _runtime_messages_support_claim(value, field_messages):
5856
5975
  unsupported.append(f"{field_name}: {value}")
5857
5976
 
5858
5977
  if unsupported:
5978
+ failure_class = (
5979
+ "EVIDENCE_FORM_MISMATCH"
5980
+ if evidence_form_mismatches and len(evidence_form_mismatches) == len(unsupported)
5981
+ else "FABRICATION_SUSPECTED"
5982
+ )
5983
+ reason_prefix = (
5984
+ "evidence form mismatch; unprotected output-filter pipeline "
5985
+ "cannot prove a clean command claim"
5986
+ if failure_class == "EVIDENCE_FORM_MISMATCH"
5987
+ else "unsupported evidence claims"
5988
+ )
5859
5989
  return VerifierVerdict(
5860
5990
  passed=False,
5861
- reasons=("unsupported evidence claims: " + "; ".join(unsupported),),
5862
- failure_class="FABRICATION_SUSPECTED",
5991
+ reasons=(reason_prefix + ": " + "; ".join(unsupported),),
5992
+ failure_class=failure_class,
5863
5993
  )
5864
5994
 
5865
5995
  return VerifierVerdict(passed=True)
@@ -85,6 +85,7 @@ class VerifierContractError(ValueError):
85
85
  _VALID_FAILURE_CLASSES: frozenset[str] = frozenset(
86
86
  {
87
87
  "EVIDENCE_MISSING",
88
+ "EVIDENCE_FORM_MISMATCH",
88
89
  "FABRICATION_SUSPECTED",
89
90
  "SCOPE_CREEP",
90
91
  "STALL",
@@ -105,8 +106,9 @@ class VerifierVerdict:
105
106
  to the executor — a bare FAIL with no reasons is opaque
106
107
  and indistinguishable from the first attempt).
107
108
  failure_class: Optional hint for H7 (failure taxonomy). One of
108
- "EVIDENCE_MISSING", "FABRICATION_SUSPECTED", "SCOPE_CREEP",
109
- "STALL", "BLOCKED", or None for an unclassified failure.
109
+ "EVIDENCE_MISSING", "EVIDENCE_FORM_MISMATCH",
110
+ "FABRICATION_SUSPECTED", "SCOPE_CREEP", "STALL",
111
+ "BLOCKED", or None for an unclassified failure.
110
112
  """
111
113
 
112
114
  passed: bool
@@ -133,6 +133,9 @@ class TestPolicyTable:
133
133
  def test_evidence_missing_retries(self) -> None:
134
134
  assert policy_for(FailureClass.EVIDENCE_MISSING).action == RecoveryAction.RETRY
135
135
 
136
+ def test_evidence_form_mismatch_retries(self) -> None:
137
+ assert policy_for(FailureClass.EVIDENCE_FORM_MISMATCH).action == RecoveryAction.RETRY
138
+
136
139
  def test_fabrication_escalates_model(self) -> None:
137
140
  assert (
138
141
  policy_for(FailureClass.FABRICATION_SUSPECTED).action == RecoveryAction.ESCALATE_MODEL