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
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.
4.6 KiB
4.6 KiB
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_persistpersisted.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 insrc/rune/), job likely no-ops (LEGACY). - daemon out-of-repo: the W/R daemon is deployed from
~/.local/share/mimo-wait-resumewith 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.pyenforces). - What runs where? → CI on
rune-ci-desktoprunner; deploy stages to/mnt/workdrive/rune-code/<sha>; data home pinned at/mnt/workdrive/rune(RUNE_HOME); implementation worktree/mnt/workdrive/issue161-harness.