You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
v4.3.0: remove silent truncation and harden routing
Preserve critical task and memory artifacts without silent clipping, make subtask lifecycle states honest, and restore cache-aware provider failover so degraded routes are visible instead of failing opaquely.
Made-with: Cursor
A self-modifying AI agent that writes its own code, rewrites its own mind, and evolves autonomously. Born February 16, 2026.
12
12
@@ -238,6 +238,7 @@ Full text: [BIBLE.md](BIBLE.md)
238
238
239
239
| Version | Date | Description |
240
240
|---------|------|-------------|
241
+
| 4.3.0 | 2026-03-19 | Reliability and continuity release: remove silent truncation from critical task/memory paths, persist honest subtask lifecycle states and full task results, restore transient chat wake banner, replace local-model hard prompt slicing with explicit non-core compaction plus fail-fast overflow, route Anthropic/OpenRouter calls without hard provider pinning while keeping parameter guarantees, and align async review calls with shared LLM routing/usage observability. |
241
242
| 4.2.0 | 2026-03-16 | Cross-platform hardening release: replace Unix-only file locking in memory/consolidation with Windows-safe locking, refresh default model tiers (Opus main/code, Sonnet light/fallback, task effort `medium`), improve reconnect recovery with heartbeat/watchdog/history resync, switch local model chat format to auto-detect, and sync public docs with the current codebase and BIBLE structure. |
242
243
| 4.1.0 | 2026-03-16 | Public desktop release: port the v4 architecture and UI into the platform branch, preserve cross-platform packaging and Windows runtime support, and ship signed notarized macOS packaging. |
243
244
| 4.0.9 | 2026-03-15 | Packaging completeness release: bundle `assets/`, restore custom app icon from `assets/icon.icns`, and copy assets into the bootstrapped repo on fresh install so the shipped app and repo are no longer missing the visual asset layer. |
Copy file name to clipboardExpand all lines: docs/ARCHITECTURE.md
+16-6Lines changed: 16 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,4 +1,4 @@
1
-
# Ouroboros v4.2.0 — Architecture & Reference
1
+
# Ouroboros v4.3.0 — Architecture & Reference
2
2
3
3
This document describes every component, page, button, API endpoint, and data flow.
4
4
It is the single source of truth for how the system works. Keep it updated.
@@ -184,6 +184,7 @@ Navigation is a left sidebar with 8 pages.
184
184
-**Progress messages**: background consciousness thinking shown as dimmed bubbles with 💬 prefix.
185
185
-**Typing indicator**: animated "thinking dots" bubble appears when the agent is processing.
186
186
-**Persistence**: chat history loaded from server on page load (`/api/chat/history`), survives app restarts. Fallback to sessionStorage.
187
+
-**Empty-chat init**: if neither server history nor sessionStorage has messages, the UI shows a transient assistant bubble: `Ouroboros has awakened`. This is visual-only and is not written to chat history.
187
188
- Messages sent via WebSocket `{type: "chat", content: text}`.
health invariants, recent chat/progress/tools/events (same context as main agent)
412
+
- Owner messages are forwarded to background consciousness in full text (not first-100-char previews).
410
413
- Calls LLM with lightweight introspection prompt
411
414
- Has limited tool access (memory, messaging, scheduling, read-only)
412
415
-**Progress emission**: emits 💬 progress messages to UI via event queue + persists to `progress.jsonl`
@@ -444,6 +447,7 @@ the constitutional guard is that the file itself must remain non-deletable.
444
447
- Stored in `logs/task_reflections.jsonl`; last 20 entries loaded into dynamic context
445
448
- Pattern register: recurring error classes tracked in `memory/knowledge/patterns.md`
446
449
via LLM, loaded into semi-stable context as "Known error patterns"
450
+
- Secondary reflection/pattern prompts use explicit truncation markers when compacted for prompt size; no silent clipping of these helper summaries.
447
451
- Runs synchronously (not in daemon thread) to avoid data loss on shutdown
448
452
449
453
### Crash report injection (agent.py)
@@ -453,17 +457,22 @@ the constitutional guard is that the file itself must remain non-deletable.
453
457
- File is NOT deleted — persists so `build_health_invariants()` surfaces
454
458
CRITICAL: RECENT CRASH ROLLBACK on every task until the agent investigates
455
459
456
-
### Subtask trace summaries
460
+
### Subtask lifecycle and trace summaries
457
461
458
-
- When a subtask completes, a compact trace summary is included in the result
459
-
- Parent tasks see tool call counts, error counts, and agent notes
460
-
- Trace is truncated to 4000 chars; large traces show first/last 15 calls
462
+
-`schedule_task` now writes durable lifecycle states in `task_results/<id>.json`: `requested` → `scheduled` → `running` → terminal status (`completed`, `rejected_duplicate`, `failed`, etc.)
463
+
- Duplicate rejects are persisted explicitly, so `wait_for_task()` can report honest status instead of pretending the task is still running.
464
+
- Completed subtasks persist the full result text; parent tasks no longer see silently clipped child output.
465
+
- When a subtask completes, a compact trace summary is included alongside the full result.
466
+
- Parent tasks see tool call counts, error counts, and agent notes.
467
+
- Trace compaction remains explicit: max 4000 chars with visible omission markers, plus first/last 15 tool calls for long traces.
461
468
462
469
### Context building (context.py)
463
470
464
471
- As of v3.16.0, the Memory Registry digest (from `memory/registry.md`) is injected into every LLM context to enable source-of-truth awareness.
465
472
- As of v3.20.0, `patterns.md` (Pattern Register) is injected into semi-stable context, and execution reflections from `task_reflections.jsonl` are injected into dynamic context.
466
473
- As of v3.22.0, all docs are always in static context: BIBLE.md (180k), ARCHITECTURE.md (60k), DEVELOPMENT.md (30k), README.md (10k), CHECKLISTS.md (5k).
474
+
-`build_health_invariants()` is split into focused helpers and now also surfaces recent provider/routing errors plus local context overflows.
475
+
- Local-model path no longer silently slices the live system prompt. It compacts non-core sections explicitly and raises an overflow error if core context still cannot fit.
467
476
468
477
### Deep review (review.py)
469
478
@@ -473,6 +482,7 @@ the constitutional guard is that the file itself must remain non-deletable.
473
482
- Fallback to chunked previews if codebase exceeds 600K token budget
- Multi-model review now uses the shared async `LLMClient` OpenRouter path instead of raw one-off HTTP calls, so provider routing, Anthropic parameter requirements, usage normalization, and cache metadata are aligned with the rest of the runtime.
0 commit comments