docs: close the remaining stale pointers and two extraction-history clauses

The gate reviews found four code pointers still naming documentation that
moved or never existed — the residency docstring that contradicted its own
selector by treating project membership as the signal, a bench script naming a
C1 section, a UI smoke test naming a retired handbook heading, and the second
copy of the stale ARCHITECTURE line-count comment. Two module-map rows also
carried the size-gate extraction history they were split at; the rows now state
only what the module does and where it is re-imported.
This commit is contained in:
Anton Razzhigaev 2026-09-03 04:52:07 +00:00
parent 4e8a2da1e7
commit eb36770ca0
5 changed files with 12 additions and 7 deletions

View file

@ -30,7 +30,7 @@ server.py (Starlette+uvicorn) ← HTTP + WebSocket on configurable host:port (de
│ ├── cognitive_operations.py ← Typed in-memory LLM/review/VLM operation leases for the idle rail; no scheduler or durable timing ledger
│ ├── task_admission.py ← Token-owned admission reservations fence duplicate user-ingress ids before Project/workspace/attachment side effects; schedule-dispatch refusals project through the same boundary; queue.py stays the state authority
│ ├── task_lifecycle.py ← Cancellation custody — the ONE settle owner of durable cancel intents: claim → capture → confirmed death → natural-completion re-check → owed delivery registration → settle → delivery/cleanup, plus the `sweep_cancel_intents` watchdog and the queue-owned root-budget admission fence; every custody rule it enforces is stated once in §10 (cancellation custody)
│ ├── cancel_publication.py ← Cancellation settlement publication (split from task_lifecycle.py at the size boundary, re-imported there): typed CANCEL_* outcome vocabulary, artifact-honest cancelled result fields, physical-ledger cost reconstruction, salvage adapter, owed-before-settle outbox registration, publication of the STORED terminal truth, capture-miss terminalization/delivery adapter
│ ├── cancel_publication.py ← Cancellation settlement publication, re-imported by `task_lifecycle.py`: typed CANCEL_* outcome vocabulary, artifact-honest cancelled result fields, physical-ledger cost reconstruction, salvage adapter, owed-before-settle outbox registration, publication of the STORED terminal truth, capture-miss terminalization/delivery adapter
│ ├── queue_transitions.py ← Queue-owned lifecycle transitions that are not cancellation custody: acceptance-fence open/inspect/seal, explicit budget resume, typed `stop_evolution_tasks` (per-task typed outcomes through the durable-intent ingress, never an in-place prune; an incomplete stop leaves the campaign OPEN via the durable `evolution_owner_stopped` flag, the settle-time backstop in events.py closes it when the last live evolution task settles, and both start ingresses clear the flag BEFORE minting a fresh campaign), and fenced Project deletion (cascade only lineage ROOTS — descendants fall with their trees, one cascade and one summary per tree; tombstone only after provable quiescence; a settled-but-LIVE root still mints the coordination intent, and wind-down defers and RE-CHECKS bounded instead of re-running the cancel pass over a settled-lingering set, which would deliver duplicate owner summaries); imports nothing from task_lifecycle; `supervisor.queue` re-exports these names
│ ├── terminal_delivery.py ← Durable terminal-answer delivery seam: restart-surviving `delivery_id` dedupe + bounded PENDING outbox `state/terminal_deliveries.json` (owed before enqueue, cleared in the delivering write, replayed on boot and on the supervisor tick), shared by natural final answers (every non-ephemeral root registers at durable-result persistence), cancel salvage, cascade digest, and non-retry reap; the cascade digest enumerates descendants by ANCESTRY (parent-chain walk, never `root_task_id` equality); eviction past outbox capacity is disclosed via typed `terminal_delivery_exhausted`, never a silent pop; salvage messages carry a bounded preview plus a full-copy receipt (path, size, full 64-hex sha256 or an explicit marker) and route by lineage chat — no resolvable chat records a typed `terminal_delivery_handoff` row; reads/mutations are row-strict per §10; the delivery id digests only the STABLE part (task id + status framing + core answer) so a replay whose rebuilt note shrank dedups instead of double-sending
│ ├── task_reaper.py ← Off-loop single-owner reaper thread: kill/join/archive/respawn a timed-out worker; STRICT fail-closed — an unconfirmed death holds the slot `reaping`, leaves the task RUNNING, emits `task_reaper_wedged` + an owner /restart hint (no terminal/retry/respawn while the worker may be alive); after confirmed death it reconciles the task's open delegated runs through the custody seam before the retry/respawn decision and discloses still-open runs; mints no cancel intents
@ -38,7 +38,7 @@ server.py (Starlette+uvicorn) ← HTTP + WebSocket on configurable host:port (de
│ ├── schedule_time.py ← Cron/timezone schedule time parsing helpers
│ ├── evolution_lifecycle.py ← Evolution campaign state + transaction lifecycle: campaign file IO, start/pause, begin/update transaction, cycle-outcome recording, deterministic worktree cleanup, owner cycle reports, idle dispatch over queue-owned state, supervisor auto-restart request
│ ├── events.py ← Worker→supervisor event dispatcher with exact attempt/execution/round/call correlation for the process-local active main-LLM row; composes the frozen subagent task text (`_compose_subagent_text`; the acting `[WRITE SURFACE]` block states only the write-root authority boundary — actor identity comes from the immutable configured snapshot, startup/wake facts from bootstrap); an event type absent from `EVENT_HANDLERS` is DROPPED into a truncated `unknown_worker_event` row, and `tests/test_worker_event_registry.py` pins the registry by AST scan — an unexplained allowlist entry is exactly the silent blessing the scan exists to end; the scan is shape-bounded, and outside its reach the discipline is code review; holds shrink-only byte debt above the module byte ceiling
│ ├── subagent_task_truth.py ← Delegation-truth enrichment of the subagent `task_done` transport frame (`enrich_task_done_event`); split from events.py at its byte ceiling
│ ├── subagent_task_truth.py ← Delegation-truth enrichment of the subagent `task_done` transport frame (`enrich_task_done_event`)
│ ├── chat_delivery_events.py ← Photo/video/document/link delivery handlers, merged into events.py `EVENT_HANDLERS` via `**_CDE`
│ ├── task_dispatch.py ← Pure admitted-event→worker-payload construction, including the identical top-level/metadata depth and configured-route projections consumed by workers
│ ├── log_addressing.py ← Explicit audience for task-scoped live log events: `address_task_event` (lineage from the RUNNING row, project binding wins, explicit chat_id preserved — 0 is the real Skill Review session; A2A frames are suppressed at the `push_log` choke, not by dishonest addressing), `make_server_log_sink`, `address_handler_push`

View file

@ -152,8 +152,11 @@ def reference_doc_sections(
``context_mode`` is the OWNER context mode and decides only the ARCHITECTURE
form (full in max, nav map in low — D-ARCH, owner 2026-08-08).
``include_development`` is the caller's mode-independent decision whether the
self-engineering handbook is inline (self-body/self-mod/evolution work) or an
on-demand pointer (project tasks — folder or not — and external surfaces).
self-engineering handbook is inline (work on Ouroboros's own body) or an
on-demand pointer. The structural signal is the active repo binding, never
project membership: an external worktree, a subagent, or an api/cli/scheduled
surface gets the pointer, while a direct turn inside a project room with no
workspace bound keeps the handbook (see ``context.py`` D-DEV).
"""
parts: List[str] = []
on_demand: List[str] = []

View file

@ -11,7 +11,8 @@ creates and deletes baseline refs and worktree registrations in the target's
Reports per-run provision (baseline build + worktree checkout) and teardown
wall-clock, plus tree shape (file count, on-disk size). The delegated-snapshot
lifecycle this measures is documented in docs/ARCHITECTURE.md (C1 section).
lifecycle this measures is documented in docs/ARCHITECTURE.md,
"Delegated subagents".
"""
from __future__ import annotations

View file

@ -212,7 +212,7 @@ def test_repo_read_schema_default_is_2000():
def test_repo_read_can_read_architecture_md_in_one_call(tmp_path):
"""A file of ARCHITECTURE.md length (~1285 lines) is returned fully with default max_lines."""
"""A file longer than the historical 1050-line default is returned fully with default max_lines."""
from ouroboros.tools.core import _repo_read
# Simulate a file slightly longer than the old 1050-line default
n_lines = 1300

View file

@ -2882,7 +2882,8 @@ def test_ui_smoke_v679_subagent_depth_zero_round_trips_through_settings(direct_s
full page reload — and pins the three neighbouring states so the fix cannot silently break
them: 0 (no delegation), a normal positive value, and empty (falls back, does not persist
an invalid value). Screenshots are written for vision inspection; a saved screenshot is
not verification on its own (docs/DEVELOPMENT.md "Browser/mobile verification").
not verification on its own (docs/DEVELOPMENT.md "Responsive and accessible
behavior").
"""
pytest.importorskip("playwright.sync_api", reason="Playwright is not installed")
from playwright.sync_api import Error as PlaywrightError