ouroboros/devtools
Ouroboros fa2977423b fix(e2e_live): reserve the evolution root only for the scenario that absorbs; typed idle reasons relative to the wait
Second adversarial round on the absorb-wait rewrite.

Reservation: after the previous commit only SM1 can promote (SW1/SK1 pin
OUROBOROS_POST_TASK_EVOLUTION=false), yet RunBudget.reservation still
added the evolution root for every attempt under --self-mod, so SW1/SK1
reserved a ceiling they could never spend and run-cap admission refused
or serialized paid attempts on it (the SK1-only mini run at cap 130 was
refused by exactly this over-reservation: 50 x (2 + 1) = 150). The rule is
now per_task x (root_tasks + int(self_mod and absorbs)); admit,
budget_preflight, dispatch_order and run_lane pass the scenario's
expects_absorb. Owner configuration (cap 300, per-task 50, 3 attempts,
self-mod): SM1 100, SK1 100, SW1 50 — realistic spends admit 9/9 for
$159, pessimistic 8/9 for $219 (SK1_a3 refused), every scenario keeping
two; the CI e2e-live arithmetic comment and summary header are rewritten
(full set $225, not $315) inside the D-12 job, and the CI-lane pins
re-derive the numbers with the scenario flag.

Idle reasons: absorb_idle_reason types relative to the wait's start
(history length snapshot) so a resumed campaign's older cycles never
speak for this boundary; a paused/stopped/completed status wins;
no_promotion means an every_n post-task tick was recorded (llm cadences
write none: no_decision). Tests cover the resumed-campaign boundary and
the reason table with the cycle written during the wait.

Co-authored-by: Ouroboros <311266734+ouroboros-agent@users.noreply.github.com>
2026-09-06 01:31:11 +00:00
..
benchmarks fix(e2e_live): reserve the evolution root only for the scenario that absorbs; typed idle reasons relative to the wait 2026-09-06 01:31:11 +00:00
e2e_live fix(e2e_live): reserve the evolution root only for the scenario that absorbs; typed idle reasons relative to the wait 2026-09-06 01:31:11 +00:00
__init__.py feat(devtools-benchmarks): add official benchmark harnesses and workspace executor 2026-06-06 12:03:30 +03:00
measure_review_pack.py devtools: measure the FULL scope input with the real assembler (P4) 2026-09-05 09:52:35 +00:00
README.md feat(devtools-benchmarks): add official benchmark harnesses and workspace executor 2026-06-06 12:03:30 +03:00

Ouroboros Devtools

devtools/ contains operator-side and benchmark support code that should be versioned with Ouroboros without becoming part of the runtime core.

Rules:

  • Generated logs, datasets, run outputs, Docker layers, and secrets do not live here.
  • Default benchmark outputs go under /Users/anton/Ouroboros/bench_runs/.
  • Runtime modules must not import devtools.
  • This is not an immune-system bypass: touched files are reviewed normally.
  • Promote code out of devtools only through a separate reviewed runtime plan.