mirror of
https://github.com/razzant/ouroboros.git
synced 2026-10-03 12:18:39 +00:00
The rc.14 paid run (per-task $20) failed lane SM1_a3 with budget_exhausted at $10.21 accounted while its cap was $20: the product's in-task ceiling is min(cost_hard_stop_pct of the GLOBAL remaining at task start, per-task cap - planning margin), and in a lane the global remaining IS the lane budget = the 1x reservation, so every root task's ceiling collapsed to 50% of its cap. On a real install the global budget is far larger and the root-cap axis binds. Second, --self-mod runs the post-task evolution cycle as another root task under the same per-task fence (SM1_a3: task $10.2 + cycle ~$8 of $20), so a 1x reservation under-reserves the lane's legitimate spend. The reservation is now max(LANE_BUDGET_FLOOR_USD, HARD_STOP_INVERSE x per_task_usd x root_tasks), where HARD_STOP_INVERSE = 100 / the product's _DEFAULT_COST_HARD_STOP_PCT imported from ouroboros.task_pacing (2 today; it follows the product's default rather than copying the number). The lane's TOTAL_BUDGET stays equal to its reservation, so the ceilings in flight remain disjoint and settled spend + in-flight ceilings <= cap. RESERVATION_RULE (the manifest's reservation_rule), the docstrings, the --per-task-usd help and the handbook paragraph state the rule and both reasons. Tests: the ledger pins use per-task $4 so the $8 unit and every admission number are unchanged; a new EQUALITY pin drives run_lane up to the written settings file and asserts that per-task $20 with one root reserves $40 and that exactly $40 reaches the lane's settings.json as TOTAL_BUDGET (never the template's $100 run cap), and that the factor equals 100 / the product's default cost_hard_stop_pct. Co-authored-by: Ouroboros <311266734+ouroboros-agent@users.noreply.github.com> |
||
|---|---|---|
| .. | ||
| benchmarks | ||
| e2e_live | ||
| __init__.py | ||
| measure_review_pack.py | ||
| README.md | ||
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
devtoolsonly through a separate reviewed runtime plan.