mirror of
https://github.com/razzant/ouroboros.git
synced 2026-08-05 16:49:47 +00:00
Naming (B): SSOT `ouroboros/project_naming.py` coins a short human project title via a bounded LIGHT-model call (P5, no keyword gates; fail-soft to a heuristic; spend recorded through chat_observed + update_budget_from_usage). A proactive card namer (`supervisor/workers.py::_spawn_proactive_namer`) names a fresh main-chat card up front — background thread → `suggested_name` on the result + a `task_named` WS broadcast → the live card shows the title (UI-buffered if the card races ahead; persisted across reload via history.py for progress AND task_summary rows). turn-into-project reuses that name with ZERO extra call; the heuristic `task-…` is gone. ensure_project_scope/agent paths share the SSOT. Ordering (A): the owner's request sorts to the TOP of the converted project thread — `_owner_message_send_ts` matched in the originating chat at/before task creation (dup-text safe), then queued_at / result ts / now. chat_id persisted on the direct-chat RUNNING result. Self-DoS (#4): a per-(model,use_local)-route `threading.BoundedSemaphore` (`ouroboros/model_concurrency.py`, `OUROBOROS_MODEL_MAX_CONCURRENCY` from the config SSOT, default-on, fail-soft, deadline-bounded, cap in the cache key) caps CONCURRENT provider calls within a process so a task's loop + in-process subagent threads + status pings can't storm one rate limit. PER-PROCESS (like fallback_cooldown); cross-worker is future work. Soft join (#7): cancel_task gains a recorded reason; new peek_task inspects a child WITHOUT absorbing; new discard_child_result(reason) is the EXPLICIT (not prose-parsed) abandon — both stamp a durable parent_decision the handoff reminder honors, lineage-gated to own children (cancel fail-closed for constrained profiles). The prose acknowledgement gate is REMOVED (P5): the reminder is suppressed only by structured decisions/absorption, and a forced/deadline/provider finalization records orphaned (incl. completed-unread) children instead of dropping them. peek/discard/cancel extracted to `ouroboros/tools/join_ledger.py`. Deferrals 1-5 (C): read-only `subagent_projects`/`deliverables` ResourceRoots (never write/shell, never to subagents); a freshly provisioned genesis root must be empty (fail-loud); a genesis project emits a typed `deliverable_manifest` on the artifact axis; a shared `_str_match_replace` gives the data-plane editor the repo editor's match feedback; a data-plane shrink-guard blocks accidental overwrite/edit truncation (force bypass) across _data_write/_write_file (single+batch)/_edit_text incl. skill_payload. Workstreams (E): bench swe_bench_pro/osworld slot keys CODE/FALLBACK/USE_LOCAL_CODE → HEAVY/FALLBACKS/USE_LOCAL_HEAVY; stale joi-lab catalog URLs → razzant in repo. Surface: peek_task/discard_child_result tools, OUROBOROS_MODEL_MAX_CONCURRENCY, subagent_projects/deliverables resource roots, TaskNamedOutbound WS contract. Reviewed: triad+scope converged (scope pass + gemini/opus SAFE) + codex SAFE TO COMMIT. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| benchmarks | ||
| __init__.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.