mirror of
https://github.com/razzant/ouroboros.git
synced 2026-10-03 04:07:04 +00:00
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:
parent
4e8a2da1e7
commit
eb36770ca0
5 changed files with 12 additions and 7 deletions
|
|
@ -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`
|
||||
|
|
|
|||
|
|
@ -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] = []
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue