outerloop-science 0.3.0rc1__tar.gz → 0.3.0rc2__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 (274) hide show
  1. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/CHANGELOG.md +4 -0
  2. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/CITATION.cff +2 -2
  3. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/PKG-INFO +1 -1
  4. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/docs/install.md +1 -1
  5. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/__init__.py +1 -1
  6. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/harnesses.toml +4 -4
  7. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_install_harness.py +3 -1
  8. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_version.py +1 -1
  9. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/.gitignore +0 -0
  10. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/.pre-commit-config.yaml +0 -0
  11. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/.python-version +0 -0
  12. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/CLAUDE.md +0 -0
  13. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/CONTRIBUTING.md +0 -0
  14. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/LICENSE +0 -0
  15. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/NOTICE +0 -0
  16. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/README.md +0 -0
  17. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/RELEASING.md +0 -0
  18. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/SECURITY.md +0 -0
  19. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/containers/README.md +0 -0
  20. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/containers/agent-py312.def +0 -0
  21. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/docs/assets/icon-dark.svg +0 -0
  22. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/docs/assets/icon-light.svg +0 -0
  23. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/docs/assets/icon.svg +0 -0
  24. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/docs/community.md +0 -0
  25. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/docs/compute.md +0 -0
  26. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/docs/contract.md +0 -0
  27. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/docs/design/accelerators.md +0 -0
  28. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/docs/design/agent-environment.md +0 -0
  29. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/docs/design/agent-protocols.md +0 -0
  30. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/docs/design/agent-substrate.md +0 -0
  31. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/docs/design/architecture.md +0 -0
  32. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/docs/design/base-reintegration.md +0 -0
  33. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/docs/design/consolidation.md +0 -0
  34. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/docs/design/dispatcher.md +0 -0
  35. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/docs/design/eval-cache.md +0 -0
  36. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/docs/design/external.md +0 -0
  37. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/docs/design/github-app-auth.md +0 -0
  38. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/docs/design/headline.md +0 -0
  39. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/docs/design/judge-placement.md +0 -0
  40. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/docs/design/lifecycle.md +0 -0
  41. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/docs/design/meta.md +0 -0
  42. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/docs/design/multi-cluster.md +0 -0
  43. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/docs/design/onboarding.md +0 -0
  44. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/docs/design/orchestrator-verify.md +0 -0
  45. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/docs/design/public-surface.md +0 -0
  46. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/docs/design/research-lines.md +0 -0
  47. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/docs/design/research-loop-buildout.md +0 -0
  48. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/docs/design/research-loop.md +0 -0
  49. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/docs/design/resident-tick.md +0 -0
  50. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/docs/design/review-placement.md +0 -0
  51. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/docs/design/reviewer-infra.md +0 -0
  52. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/docs/design/role-cli.md +0 -0
  53. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/docs/design/roles.md +0 -0
  54. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/docs/design/scaling.md +0 -0
  55. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/docs/design/session-watcher.md +0 -0
  56. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/docs/endpoints.md +0 -0
  57. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/docs/reviewer.md +0 -0
  58. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/docs/roadmap.md +0 -0
  59. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/docs/validation/author-syscalls.md +0 -0
  60. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/examples/review.yml +0 -0
  61. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/pyproject.toml +0 -0
  62. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/scripts/README.md +0 -0
  63. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/scripts/install_bridge.sh +0 -0
  64. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/scripts/install_claude.sh +0 -0
  65. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/scripts/install_codex.sh +0 -0
  66. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/scripts/install_hermes.sh +0 -0
  67. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/scripts/requeue_moved_successors.sh +0 -0
  68. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/scripts/setup_branch_protection.sh +0 -0
  69. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/scripts/sweep_git_locks.sh +0 -0
  70. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/scripts/tick_chain.sbatch +0 -0
  71. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/scripts/tick_deploy.sh +0 -0
  72. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/scripts/tick_resident.sh +0 -0
  73. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/__main__.py +0 -0
  74. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/appauth.py +0 -0
  75. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/appmanifest.py +0 -0
  76. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/attempt.py +0 -0
  77. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/author_overrides.py +0 -0
  78. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/bridge_install.py +0 -0
  79. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/bridge_runtime/pyproject.toml +0 -0
  80. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/bridge_runtime/uv.lock +0 -0
  81. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/brief.py +0 -0
  82. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/cli.py +0 -0
  83. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/climbboard.py +0 -0
  84. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/codex_bridge.py +0 -0
  85. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/compute.py +0 -0
  86. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/contract.py +0 -0
  87. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/contract_cli.py +0 -0
  88. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/disk.py +0 -0
  89. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/dispatch.py +0 -0
  90. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/endpoint_wait.py +0 -0
  91. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/endpoints.py +0 -0
  92. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/evalcache.py +0 -0
  93. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/github.py +0 -0
  94. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/gpu_lanes.py +0 -0
  95. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/harness.py +0 -0
  96. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/harness_cli.py +0 -0
  97. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/harness_pins.py +0 -0
  98. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/hermes_install.py +0 -0
  99. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/housekeeping.py +0 -0
  100. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/hypothesis.py +0 -0
  101. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/image.py +0 -0
  102. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/inbox.py +0 -0
  103. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/init.py +0 -0
  104. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/instance.py +0 -0
  105. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/intake.py +0 -0
  106. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/job_names.py +0 -0
  107. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/launchlog.py +0 -0
  108. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/ledger_branch.py +0 -0
  109. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/ledger_events.py +0 -0
  110. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/ledger_migrate.py +0 -0
  111. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/limits.py +0 -0
  112. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/maintain.py +0 -0
  113. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/maintain_agent_cli.py +0 -0
  114. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/maintain_post_cli.py +0 -0
  115. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/markers.py +0 -0
  116. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/measure.py +0 -0
  117. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/operator_limits.py +0 -0
  118. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/orchestrator.py +0 -0
  119. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/panel.py +0 -0
  120. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/paths.py +0 -0
  121. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/posting.py +0 -0
  122. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/progress.py +0 -0
  123. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/provenance.py +0 -0
  124. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/py.typed +0 -0
  125. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/rebind.py +0 -0
  126. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/review.py +0 -0
  127. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/review_agent.py +0 -0
  128. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/review_agent_cli.py +0 -0
  129. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/review_post_cli.py +0 -0
  130. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/review_summarize_cli.py +0 -0
  131. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/role_runner.py +0 -0
  132. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/roles.py +0 -0
  133. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/rolespec.py +0 -0
  134. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/runstate.py +0 -0
  135. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/status.py +0 -0
  136. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/steward.py +0 -0
  137. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/style.py +0 -0
  138. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/syscall.py +0 -0
  139. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/syscall_cli.py +0 -0
  140. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/tick.py +0 -0
  141. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/verifier.py +0 -0
  142. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/verify_agent.py +0 -0
  143. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/verify_agent_cli.py +0 -0
  144. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/verify_post_cli.py +0 -0
  145. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/src/outerloop/watcher.py +0 -0
  146. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/conftest.py +0 -0
  147. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/fakes.py +0 -0
  148. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/fixtures/README.md +0 -0
  149. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/fixtures/author_route_legacy.json +0 -0
  150. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/fixtures/author_route_missing_model.json +0 -0
  151. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/fixtures/author_route_missing_route.json +0 -0
  152. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/fixtures/base_moved_cc4e5d7.json +0 -0
  153. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/fixtures/dispatched_pre_gpu_identity/completed/eval-candidate-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-f69684777d523fe6502ee4ed4d09f98410a56aec/command.txt +0 -0
  154. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/fixtures/dispatched_pre_gpu_identity/completed/eval-candidate-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-f69684777d523fe6502ee4ed4d09f98410a56aec/exit-code +0 -0
  155. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/fixtures/dispatched_pre_gpu_identity/completed/eval-candidate-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-f69684777d523fe6502ee4ed4d09f98410a56aec/job.sh +0 -0
  156. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/fixtures/dispatched_pre_gpu_identity/completed/eval-candidate-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-f69684777d523fe6502ee4ed4d09f98410a56aec/provenance.json +0 -0
  157. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/fixtures/dispatched_pre_gpu_identity/completed/eval-candidate-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-f69684777d523fe6502ee4ed4d09f98410a56aec/stdout +0 -0
  158. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/fixtures/dispatched_pre_gpu_identity/completed/eval-candidate-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-f69684777d523fe6502ee4ed4d09f98410a56aec/submitted +0 -0
  159. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/fixtures/dispatched_pre_gpu_identity/identity.json +0 -0
  160. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/fixtures/dispatched_pre_gpu_identity/inflight/eval-candidate-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-f69684777d523fe6502ee4ed4d09f98410a56aec/command.txt +0 -0
  161. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/fixtures/dispatched_pre_gpu_identity/inflight/eval-candidate-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-f69684777d523fe6502ee4ed4d09f98410a56aec/job.sh +0 -0
  162. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/fixtures/dispatched_pre_gpu_identity/inflight/eval-candidate-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-f69684777d523fe6502ee4ed4d09f98410a56aec/provenance.json +0 -0
  163. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/fixtures/dispatched_pre_gpu_identity/inflight/eval-candidate-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-f69684777d523fe6502ee4ed4d09f98410a56aec/submitted +0 -0
  164. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/fixtures/hermes_resume_legacy.json +0 -0
  165. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/fixtures/hermes_sample_20260924.json +0 -0
  166. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/fixtures/launches-before-provenance.jsonl +0 -0
  167. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/fixtures/panel_wake_9ca3d7c.json +0 -0
  168. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/fixtures/rc1_v021/baselines/main@aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json +0 -0
  169. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/fixtures/rc1_v021/brief.txt +0 -0
  170. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/fixtures/rc1_v021/end-request.json +0 -0
  171. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/fixtures/rc1_v021/ended.json +0 -0
  172. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/fixtures/rc1_v021/eval-provenance/command.txt +0 -0
  173. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/fixtures/rc1_v021/eval-provenance/job.sh +0 -0
  174. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/fixtures/rc1_v021/eval-run/eval-candidate-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-f69684777d523fe6502ee4ed4d09f98410a56aec/command.txt +0 -0
  175. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/fixtures/rc1_v021/eval-run/eval-candidate-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-f69684777d523fe6502ee4ed4d09f98410a56aec/exit-code +0 -0
  176. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/fixtures/rc1_v021/eval-run/eval-candidate-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-f69684777d523fe6502ee4ed4d09f98410a56aec/job.sh +0 -0
  177. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/fixtures/rc1_v021/eval-run/eval-candidate-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-f69684777d523fe6502ee4ed4d09f98410a56aec/stdout +0 -0
  178. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/fixtures/rc1_v021/eval-run/eval-candidate-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-f69684777d523fe6502ee4ed4d09f98410a56aec/submitted +0 -0
  179. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/fixtures/rc1_v021/generate.py.txt +0 -0
  180. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/fixtures/rc1_v021/identity.json +0 -0
  181. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/fixtures/rc1_v021/launches.jsonl +0 -0
  182. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/fixtures/rc1_v021/line.bundle +0 -0
  183. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/fixtures/rc1_v021/merged.json +0 -0
  184. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/fixtures/rc1_v021/open.json +0 -0
  185. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/fixtures/rc1_v021/pending/owner__repo.json +0 -0
  186. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/fixtures/rc1_v021/pending/owner__repo@agent-01.json +0 -0
  187. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/fixtures/rc1_v021/pr-states.json +0 -0
  188. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/fixtures/rc1_v021/queue.json +0 -0
  189. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/fixtures/rc1_v021/rebind.json +0 -0
  190. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/fixtures/rc1_v021/sessionless.json +0 -0
  191. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/helpers.py +0 -0
  192. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/ledger_fake.py +0 -0
  193. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_app_permissions.py +0 -0
  194. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_appauth.py +0 -0
  195. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_appmanifest.py +0 -0
  196. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_attempt.py +0 -0
  197. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_attempt_review.py +0 -0
  198. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_author_overrides.py +0 -0
  199. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_bot_aliases.py +0 -0
  200. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_bot_login.py +0 -0
  201. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_brief.py +0 -0
  202. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_channel_dir.py +0 -0
  203. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_climbboard.py +0 -0
  204. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_codex_bridge.py +0 -0
  205. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_codex_harness.py +0 -0
  206. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_compute.py +0 -0
  207. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_contract.py +0 -0
  208. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_contract_cli.py +0 -0
  209. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_contract_names.py +0 -0
  210. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_default_claude_model.py +0 -0
  211. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_disk.py +0 -0
  212. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_dispatch.py +0 -0
  213. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_endpoint_wait.py +0 -0
  214. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_endpoints.py +0 -0
  215. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_evalcache.py +0 -0
  216. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_github.py +0 -0
  217. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_gpu_lanes.py +0 -0
  218. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_hardening.py +0 -0
  219. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_harness.py +0 -0
  220. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_harness_pins.py +0 -0
  221. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_hermes_author.py +0 -0
  222. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_hermes_harness.py +0 -0
  223. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_housekeeping.py +0 -0
  224. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_image.py +0 -0
  225. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_import.py +0 -0
  226. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_inbox.py +0 -0
  227. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_init.py +0 -0
  228. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_instance.py +0 -0
  229. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_intake.py +0 -0
  230. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_launchlog.py +0 -0
  231. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_ledger_events.py +0 -0
  232. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_ledger_migrate.py +0 -0
  233. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_lifecycle_cli.py +0 -0
  234. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_limits.py +0 -0
  235. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_local_compute.py +0 -0
  236. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_maintain.py +0 -0
  237. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_markers.py +0 -0
  238. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_measure.py +0 -0
  239. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_measure_and_decide.py +0 -0
  240. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_messages.py +0 -0
  241. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_operator_end.py +0 -0
  242. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_operator_limits.py +0 -0
  243. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_orchestrator.py +0 -0
  244. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_packaging.py +0 -0
  245. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_panel.py +0 -0
  246. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_paths.py +0 -0
  247. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_posting.py +0 -0
  248. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_progress.py +0 -0
  249. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_rebind.py +0 -0
  250. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_requeue_moved_successors.py +0 -0
  251. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_review.py +0 -0
  252. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_review_agent.py +0 -0
  253. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_review_agent_cli.py +0 -0
  254. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_review_hardening.py +0 -0
  255. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_review_policy.py +0 -0
  256. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_review_summarize.py +0 -0
  257. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_role_runner.py +0 -0
  258. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_rolespec.py +0 -0
  259. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_runstate.py +0 -0
  260. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_start.py +0 -0
  261. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_status.py +0 -0
  262. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_steward.py +0 -0
  263. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_sweep_git_locks.py +0 -0
  264. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_syscall.py +0 -0
  265. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_syscall_cli.py +0 -0
  266. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_tick.py +0 -0
  267. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_tick_chain_successors.py +0 -0
  268. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_tick_resident.py +0 -0
  269. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_tiers.py +0 -0
  270. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_verifier.py +0 -0
  271. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_verify_agent.py +0 -0
  272. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_verify_agent_cli.py +0 -0
  273. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/tests/test_watcher.py +0 -0
  274. {outerloop_science-0.3.0rc1 → outerloop_science-0.3.0rc2}/uv.lock +0 -0
@@ -10,6 +10,8 @@ Versions follow [SemVer](https://semver.org).
10
10
 
11
11
  Operator actions (everything else needs no action; details in each entry):
12
12
 
13
+ - Claude Code is pinned at 2.1.285: run `outerloop harness upgrade claude`
14
+ (deploys that run harness upgrades do this on their own).
13
15
  - Before selecting a chat-only Codex endpoint profile, install the bridge:
14
16
  `outerloop harness upgrade --used`.
15
17
  - Existing Hermes source-only installs: run `bash scripts/install_hermes.sh
@@ -255,6 +257,8 @@ Operator actions (everything else needs no action; details in each entry):
255
257
 
256
258
  ### Changed
257
259
 
260
+ - Claude Code pin 2.1.272 -> 2.1.285, the current stable release;
261
+ `claude-opus-5-5` refuses Claude Code older than 2.1.280.
258
262
  - Upgrading: legacy Codex archive-only markers and Hermes runtimes without interpreter digests are reinstalled on upgrade; legacy Hermes runtimes remain launchable. Existing retry records remain readable, and corrupt records are treated as empty. Run state and in-flight PRs are unchanged; rollback leaves the additional digest files unused.
259
263
 
260
264
  - Upgrading: version overrides now require matching SHA-256 settings; legacy Codex installs without hash markers are reprovisioned. New retry state and hash markers are ignored by older kernels; the first successfully synced tick verifies configured harnesses and records new paths only when needed. Legacy `.env` paths and Hermes runtimes remain readable; old artifacts are retained. See `docs/install.md` for rollback across kernel pins.
@@ -13,5 +13,5 @@ authors:
13
13
  repository-code: "https://github.com/outerloop-science/outerloop"
14
14
  url: "https://outerloop.science"
15
15
  license: Apache-2.0
16
- version: 0.3.0rc1
17
- date-released: "2026-10-03"
16
+ version: 0.3.0rc2
17
+ date-released: "2026-10-04"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: outerloop-science
3
- Version: 0.3.0rc1
3
+ Version: 0.3.0rc2
4
4
  Summary: Autonomous research agents that improve the benchmark you point them at, one verified pull request at a time
5
5
  Project-URL: Homepage, https://outerloop.science
6
6
  Project-URL: Repository, https://github.com/outerloop-science/outerloop
@@ -301,7 +301,7 @@ Use `--no-install-harness` to skip this step. To install by hand from the
301
301
  outerloop checkout, run `bash scripts/install_claude.sh [target_path]` or
302
302
  `bash scripts/install_codex.sh [target_path]`, then rerun `outerloop init --force`.
303
303
  The default target is `$OUTERLOOP_<BACKEND>_BIN`, else `~/.local/bin/<backend>`.
304
- Claude 2.1.272 is pinned for Linux x64 (glibc/musl) and ARM64; other platforms
304
+ Claude 2.1.285 is pinned for Linux x64 (glibc/musl) and ARM64; other platforms
305
305
  are refused. Installation needs `curl`, `sha256sum`, and a writable target
306
306
  directory. Hermes runs authors and reviewers, provisioned with
307
307
  `bash scripts/install_hermes.sh [target_dir]`.
@@ -1,3 +1,3 @@
1
1
  """Outerloop: autonomous research agents that improve a benchmark on your own code."""
2
2
 
3
- __version__ = "0.3.0rc1"
3
+ __version__ = "0.3.0rc2"
@@ -1,9 +1,9 @@
1
1
  # Versions and integrity pins move together.
2
2
  [claude]
3
- version = "2.1.272"
4
- linux-x64 = "d81396a668eb76fbddb49a2a5841f1b5d7af96b4c1f6500ced92f2c988f5bcd4"
5
- linux-x64-musl = "e30bb3ac07c4f1c3f63b47312e9a73ba6875256b7768c4cdb784d2b179417489"
6
- linux-arm64 = "214a90efdd16ee0ea81132ffecced588dba394d178cc494f285ba04b5288c8de"
3
+ version = "2.1.285"
4
+ linux-x64 = "33dad1ec615a2e08cc78b494f05c110e49916de2c79d78ec8799ebf46b233d29"
5
+ linux-x64-musl = "7b4414af1bc06eb6d91730759bd01c4c02a4976d0b8526237e9a6d8c33eaf102"
6
+ linux-arm64 = "24fac77749bed3d91365d6b6915aa4b824e14318ecb6bc17adbc192f01c9173d"
7
7
 
8
8
  [codex]
9
9
  version = "0.130.0"
@@ -97,7 +97,9 @@ def test_init_install(tmp_path, monkeypatch, capsys, backend, mode):
97
97
  def test_claude_checksum_gate(tmp_path, valid):
98
98
  # Substitute only the test copy's pins, never the production verification
99
99
  # or hash tool: a small executable stands in for the 227 MB release asset.
100
- payload = b"#!/bin/sh\necho '2.1.272 (Claude Code)'\n"
100
+ from outerloop.harness_pins import pins
101
+
102
+ payload = f"#!/bin/sh\necho '{pins('claude')['version']} (Claude Code)'\n".encode()
101
103
  asset = tmp_path / "asset"
102
104
  asset.write_bytes(payload if valid else b"untrusted")
103
105
  script = tmp_path / "installer.sh"
@@ -9,4 +9,4 @@ def test_installed_metadata_matches_package_version() -> None:
9
9
 
10
10
  def test_release_version_is_pinned() -> None:
11
11
  # the release PR bumps this literal; a forgotten bump fails here
12
- assert outerloop.__version__ == "0.3.0rc1"
12
+ assert outerloop.__version__ == "0.3.0rc2"