Files
rune/docs/STRUCTURAL_MAP.md
T
Nick 3adfa1b1ed
CI Pipeline / best-practices (push) Successful in 10s
CI Pipeline / documentation (push) Successful in 5s
Auto-version and Release / release (push) Successful in 39s
CI Pipeline / canary (push) Successful in 36s
CI Pipeline / lint (push) Successful in 45s
CI Pipeline / type-check (push) Successful in 32s
CI Pipeline / gitea-offline (push) Successful in 18s
CI Pipeline / unit-tests (push) Successful in 2m47s
CI Pipeline / required-checks (push) Successful in 1s
CI Pipeline / CI Pipeline / notify-event-bridge (push) Successful in 5s
deploy / deploy (push) Successful in 7m53s
fix(bridge): wr_root anti-split-brain policy + map/17T updates (T17 17T)
wr_root(): explicit env → shared root (warn if legacy also exists) →
legacy → fallback. The 17T benchmark's map-assisted path found the
two-data-roots split-brain risk; an unpinned consumer now gets a loud
warning instead of silently reading a stale store. Structural map
updated: programme continuation WIRED, conversational route added.
17T benchmark persisted (store/evidence/t17/17T_reentry_benchmark.md):
raw cost ≈ equal; cold path asserted a FALSE runtime fact (daemon dead)
at 95% confidence while the map path verified liveness and found the
split-brain — the correctness gap is the benchmark's real finding.
2026-09-15 20:05:54 +01:00

4.6 KiB
Raw Blame History

Rune Structural Map

Maintained structural projection — the fast re-entry surface (T16 §16N). Companion to the Spine store (store/spine/current.json, structural authority) and store/evidence/t16/16M_inventory.md (full classification record). Update this map when authority or canonical routes change; do not copy the repo here.

What is Rune?

A self-hosting coding agent: TUI client over an operator core, with a structural self-model (Spine), a construction authority (Scaffolding), an event-driven wait/resume bridge (W/R), a research pipeline, and a fail-closed release/deployment pipeline that builds, tests, releases, and deploys Rune itself to /mnt/workdrive/rune-code/current.

Where things happen (canonical routes only)

Concern Authority State
Structural self-model src/rune/spine.py store/spine/current.json
Construction (build lifecycle) src/rune/scaffold.py + construction_*.py scaffold store (<dir>/.rune/scaffold)
Builder sessions scripts/t15_builder_session.py (event-driven successor; T14 is legacy) contract + wait records
Provider/model selection rune_operator final decider; ambient context via provider_context.require_model state/model_routing_profiles.json
Wait/resume (any long op) src/rune/event_wait.py + W/R daemon (out-of-repo snapshot at ~/.local/share/mimo-wait-resume, data root /mnt/workdrive/wr-bridge — PIN RUNE_WR_ROOT: unpinned consumers get a loud warning, never a silent split-brain) waits/events/leases/resumes JSON
Programme continuation src/rune/programme_continuation.py (WIRED T17: run_construction_programme binds stages to Scaffolding contracts) scaffold store programmes/
Conversational construction src/rune/construction_intent.py (meaning/referents/authorization) → construction_mode.classify_mode (the ONE classifier) intents are transient; contracts durable
CI qualification verdict scripts/deploy_qualify.py (two legs, fail-closed) Gitea commit status + runs
Release/deploy scripts/deploy_stage.py → deploy_promotion.py (monotonic, flock) deploy root + current/last-good symlinks
Research scripts/research_task_tree.py (authority; labels are projection) research/issue-<N>/
Task completion truth verification_layer.py + orchestration/conversation_state.py durable event store + checkpoints
Routing (task class) src/rune/adaptive_router.py routes/route.jsonl
Canary registry src/rune/canary_native.MODULES observed by Spine
Structural health henxels_checks.py + henxels.yaml repo root

Known non-canonical / duplicate routes (do not extend; reconcile via 16Q)

  • build_mode.BuildManager (legacy /build) — superseded by builder_bridge
    • event-driven sessions; still wired.
  • scripts/t14_builder_session.py — superseded by t15 event-driven driver.
  • Provider selection entry points ×5 (model_routing.rank, model_connect route, model_registry get, provider_registry, work_manager) — operator is the de-facto final decider.
  • Task-ish state ×4 (task-tool DB, task_persist persisted.json, memory_store.working, orchestration event store).
  • Maintenance ledgers ×3 (scaffold maintenance_item, tui_backlog, drift_ledger).

Unfinished / blocked / deprecated

  • programme_continuation.py: WIRED (T17 17D — run_construction_programme is the canonical multi-stage driver; 17E live-proven).
  • maintenance.yml canary-suite job: loops shared/canary_*.py — wrong dir (real canaries in src/rune/), job likely no-ops (LEGACY).
  • daemon out-of-repo: the W/R daemon is deployed from ~/.local/share/mimo-wait-resume with its own git snapshot — packaging debt, no CI coverage of the deployed copy.
  • Substrate: NOT BUILT. Scaffolding exposes the seam (construction_projection.py, construction_commands.py); mock client proves compatibility (tests/test_substrate_seam.py).

Fresh-session quick answers

  • Is a claim true? → Spine store + evidence_refs, never commit messages.
  • Is construction allowed? → scaffold contract phase + LEGAL_TRANSITIONS.
  • How does a long wait work? → register on the W/R bridge, yield on the FIFO event; watchdog is failure detection, never scheduling; the event is a WAKE — authority is re-read after resume.
  • Who picks the provider? → the user layer, via ambient context; construction never does (test_provider_ownership.py enforces).
  • What runs where? → CI on rune-ci-desktop runner; deploy stages to /mnt/workdrive/rune-code/<sha>; data home pinned at /mnt/workdrive/rune (RUNE_HOME); implementation worktree /mnt/workdrive/issue161-harness.