ouroboros/devtools
Ouroboros 952e210cc0 v6.39 Phase 2 (F1): model-slot role-model + 429-aware fallback chain + cooldown
Rename the worker model slots to a role model where only OUROBOROS_MODEL carries a
real default and every other worker slot is empty->Main:
- OUROBOROS_MODEL_CODE -> OUROBOROS_MODEL_HEAVY (+USE_LOCAL_CODE -> USE_LOCAL_HEAVY),
  default now EMPTY -> falls back to Main; OUROBOROS_MODEL_LIGHT default EMPTY -> Main.
- New OUROBOROS_MODEL_FALLBACKS comma-separated cross-model chain replacing the singular
  OUROBOROS_MODEL_FALLBACK. SSOT config.parse_fallback_chain (FALLBACKS, then legacy
  singular env; no SETTINGS_DEFAULTS injection so an explicit-empty slot means "no
  fallback") + config.migrate_legacy_slot_keys (used by load_settings AND build_colab_settings).

429-aware resilience:
- New ouroboros/fallback_cooldown.py: per-process 429-aware cooldown (default-on, fail-soft,
  passive timestamp heal) for transiently-failed models (429/5xx/overloaded).
- loop._run_cross_model_fallback_chain: deadline-aware walk of the fallback chain skipping
  cooled-down models, per-candidate total attempt cap, cross-family reasoning sanitize;
  the bench (FALLBACKS==Main) dedupes to an empty chain -> no-op. Body-error 429 (rate_limit)
  cools the model down regardless of finish_reason; the primary's same-model transient-retry
  budget is preserved (cooldown+fallback is the second layer).

Subagent lane role model:
- Lane "code" -> "heavy" (no legacy alias; durable-data ingress tolerates an unknown stored
  lane defensively). `auto` routes a mutating first-level child (write_surface OR may_mutate,
  via normalize_bool) to Heavy and a read-only child to Light; an explicit main/heavy lane is
  honored only at/below OUROBOROS_SUBAGENT_CAPABILITY_DEPTH_LIMIT (advanced config knob),
  deeper descendants fall to Light with a visible downgrade note (P1, not a silent horizon cut).

Carriers: config, subagents, tools/control, provider_models, server_runtime,
settings_setup_contract, tools/vision, llm, pricing, colab_bootstrap, loop, loop_llm_call,
safety, tools/claude_advisory_review, prompts/SYSTEM.md, docs/ARCHITECTURE.md, docs/DEVELOPMENT.md,
web settings/onboarding, devtools/benchmarks manifest + tests.

Version bump is deferred to the final release (authorized P9 deferral, precedent v6.38.0).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 06:47:41 +03:00
..
benchmarks v6.39 Phase 2 (F1): model-slot role-model + 429-aware fallback chain + cooldown 2026-06-20 06:47:41 +03:00
__init__.py feat(devtools-benchmarks): add official benchmark harnesses and workspace executor 2026-06-06 12:03:30 +03: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.