D57 landed: runtime-aware FS dominion + model-refusal authority #2610

Closed
opened 2026-10-25 21:55:11 +00:00 by conductor · 1 comment
Owner

In plain English:

runtimeenv.go: boot-time probe (GOOS/arch, home, separators, case-sensitivity probe, writability, executor path) served on /v1/status; expandHome generalized. tool-executor deployed via ensure_core.py + build_paired.sh; ResolveToolExecutorPath single door. Refusal authority: literal-phrase classifier (ND law), false-capability claims verified against actual capability state, correction turn names the real 13-tool suite, typed journal events, model_authority report on /v1/status. Dominion check: CHAT/TASK/PLAN carry identical 13-tool suite, write_file executes in CHAT, no gate survives. Commit 6b3ed6b7. FOLLOW-UP flagged: operator module hardcodes /tmp/tool-executor; refusal tier-2 classifies first matching sentence only.

What is this about:

Why do we need it: <the itch — what happens today that shouldn't, or what becomes possible>

Why is it still open: <"not started yet" | "part done, X remains" | "deliberately parked as a future idea">

Example

What would let us close this

  • <condition 1 — observable>
  • <condition 2>

Version impact (declared at submission — verified at merge)

  • major — breaking: changes a contract, schema, or interface others depend on
  • minor — new capability: something becomes possible that wasn't
  • patch — repair: same behaviour, done correctly
  • none — touches no released artifact (docs, memory, process notes)

Technical details

WHAT:
WHY:
FILES:
ACCEPTANCE:
DEPENDENCIES:

Pipeline requirements

  • TDD: frozen tests written first, red → green (N passed)
  • ruff check and ruff format --check clean
  • Spec-compliance review gate: PASS
  • Code-quality review gate: Approved
  • Full orchestration suite regression green (suite total)
  • Canary passes (name)
  • Closed with a properly formatted closing comment + commit/PR references

Cognitive invariants (memory/cognition issues — both handoffs)

  • Owner — which existing subsystem owns this (audit before creating modules)
  • Trigger — what event activates it
  • Read/write authority — which canonical state it reads/changes
  • Provenance — derived state traceable to evidence
  • Verification — how we know the change helped
  • Failure visibility — how failure surfaces
  • Reversibility — bad learned state can be superseded/replayed/rolled back
  • Dormant cost — what it costs when irrelevant
  • Benchmark + ablation — what measurable behaviour improves; what happens when disabled
  • No duplicate authority — why extend vs create

Hard invariants: derived cognition preserves evidentiary ancestry · epistemic confidence ≠ attentional utility ≠ current applicability · retrieval never increases utility · self-model-induced behaviour is not independent evidence · historical truth survives present-state change · raw evidence is never destroyed by promotion.

Related umbrella

  • Memory
  • Governance
  • Identity
  • Growth
  • Perception
  • Infrastructure
  • Life (Nick's)
  • Custodian
  • Orchestration

Priority (REQUIRED — the priority gate)

  • P0 — critical — breaks the spine / core correctness, or blocks other work
  • P1 — high — material user value or a real defect (money, correctness bugs, next-stage dependency)
  • P2 — medium — quality/consolidation improvement (check the fold-into mapping first)
  • P3 — low — measurement / benchmark / deferred policy
## In plain English: <restate the issue title here in everyday words> <!-- The heading ITSELF must carry the summary — a scan of issue headings alone should tell the whole story of the board. TOP PRIORITY: if a technical detail below contradicts this section, the issue is buggy — fix the issue. A non-technical reader must be able to retell this section. 3-6 sentences, no jargon. --> runtimeenv.go: boot-time probe (GOOS/arch, home, separators, case-sensitivity probe, writability, executor path) served on /v1/status; expandHome generalized. tool-executor deployed via ensure_core.py + build_paired.sh; ResolveToolExecutorPath single door. Refusal authority: literal-phrase classifier (ND law), false-capability claims verified against actual capability state, correction turn names the real 13-tool suite, typed journal events, model_authority report on /v1/status. Dominion check: CHAT/TASK/PLAN carry identical 13-tool suite, write_file executes in CHAT, no gate survives. Commit 6b3ed6b7. FOLLOW-UP flagged: operator module hardcodes /tmp/tool-executor; refusal tier-2 classifies first matching sentence only. What is this about: <what> Why do we need it: <the itch — what happens today that shouldn't, or what becomes possible> Why is it still open: <"not started yet" | "part done, X remains" | "deliberately parked as a future idea"> ## Example <!-- A concrete before/after in plain terms: "If X happens, the system will Y instead of Z." --> ## What would let us close this <!-- Checkable statements, verifiable by looking at something that EXISTS — a file, a log line, a passing test. Not "when appropriate". --> - [ ] <condition 1 — observable> - [ ] <condition 2> ## Version impact (declared at submission — verified at merge) <!-- The pipeline derives the real bump from merged conventional commits and compares against this declaration. A mismatch is flagged, not fatal: either the declaration was wrong or the work grew. Both facts matter. --> - [ ] major — breaking: changes a contract, schema, or interface others depend on - [ ] minor — new capability: something becomes possible that wasn't - [ ] patch — repair: same behaviour, done correctly - [ ] none — touches no released artifact (docs, memory, process notes) ## Technical details <!-- WHAT — one-line objective. WHY — design-spec reference (S#) or reason. FILES — affected components. ACCEPTANCE — frozen-test file + test count + canary name. DEPENDENCIES — parent epic + preceding stage/plan refs. --> **WHAT:** **WHY:** **FILES:** **ACCEPTANCE:** **DEPENDENCIES:** ## Pipeline requirements <!-- Every stage must clear these before the issue closes. --> - [ ] TDD: frozen tests written first, red → green (N passed) - [ ] `ruff check` and `ruff format --check` clean - [ ] Spec-compliance review gate: PASS - [ ] Code-quality review gate: Approved - [ ] Full orchestration suite regression green (suite total) - [ ] Canary passes (name) - [ ] Closed with a properly formatted closing comment + commit/PR references ## Cognitive invariants (memory/cognition issues — both handoffs) <!-- Complete ONLY if this issue touches memory, learning, or self-model state. --> - [ ] **Owner** — which existing subsystem owns this (audit before creating modules) - [ ] **Trigger** — what event activates it - [ ] **Read/write authority** — which canonical state it reads/changes - [ ] **Provenance** — derived state traceable to evidence - [ ] **Verification** — how we know the change helped - [ ] **Failure visibility** — how failure surfaces - [ ] **Reversibility** — bad learned state can be superseded/replayed/rolled back - [ ] **Dormant cost** — what it costs when irrelevant - [ ] **Benchmark + ablation** — what measurable behaviour improves; what happens when disabled - [ ] **No duplicate authority** — why extend vs create Hard invariants: derived cognition preserves evidentiary ancestry · epistemic confidence ≠ attentional utility ≠ current applicability · retrieval never increases utility · self-model-induced behaviour is not independent evidence · historical truth survives present-state change · raw evidence is never destroyed by promotion. ## Related umbrella - [ ] Memory - [ ] Governance - [ ] Identity - [ ] Growth - [ ] Perception - [ ] Infrastructure - [ ] Life (Nick's) - [ ] Custodian - [ ] Orchestration ## Priority (REQUIRED — the priority gate) <!-- Pick exactly one. An issue without a priority is not filed. --> - [ ] **P0 — critical** — breaks the spine / core correctness, or blocks other work - [ ] **P1 — high** — material user value or a real defect (money, correctness bugs, next-stage dependency) - [ ] **P2 — medium** — quality/consolidation improvement (check the fold-into mapping first) - [ ] **P3 — low** — measurement / benchmark / deferred policy
conductor added the featureP2 — medium labels 2026-10-25 21:55:11 +00:00
Author
Owner

INCIDENT REPORT + RECOVERY.

WHAT HAPPENED: the owner real chat history (Oct 14-24) vanished from the live TUI. Root cause chain: (1) the Go core conversation store was polluted by test/PTY batteries dispatching stub fixtures against the REAL home (the D53-D57 verification obligations said REAL home and REAL core); (2) battery processes each held only their own rows and rewrote the tail across restarts; (3) the migration import (b1fd06e2) imported the K25 legacy tail that was already stubbed.

RECOVERY: /tmp runner-tmp stores (rune-live-rt-*) held pre-pollution snapshots — 512-row snapshots with 335+309 real rows. Merged+deduped (591 rows, 386 real turns, Oct 14-24) into backups/conversation-recovery-2026-10-26/task-channel-recovered.jsonl. RECOVERED, not restored — restoring into the live store needs the owner say-so (the store is live).

STRUCTURAL FIXES REQUIRED (D58): (1) test batteries MUST isolate RUNE_HOME — the REAL-home verification obligation needs a seeded REAL-LIKE home redesign; (2) tail-store cross-process compaction is unsafe (a short-lived process truncates the shared tail); (3) fixture sends must use a dedicated TEST channel, never the owner task channel.

INCIDENT REPORT + RECOVERY. WHAT HAPPENED: the owner real chat history (Oct 14-24) vanished from the live TUI. Root cause chain: (1) the Go core conversation store was polluted by test/PTY batteries dispatching stub fixtures against the REAL home (the D53-D57 verification obligations said REAL home and REAL core); (2) battery processes each held only their own rows and rewrote the tail across restarts; (3) the migration import (b1fd06e2) imported the K25 legacy tail that was already stubbed. RECOVERY: /tmp runner-tmp stores (rune-live-rt-*) held pre-pollution snapshots — 512-row snapshots with 335+309 real rows. Merged+deduped (591 rows, 386 real turns, Oct 14-24) into backups/conversation-recovery-2026-10-26/task-channel-recovered.jsonl. RECOVERED, not restored — restoring into the live store needs the owner say-so (the store is live). STRUCTURAL FIXES REQUIRED (D58): (1) test batteries MUST isolate RUNE_HOME — the REAL-home verification obligation needs a seeded REAL-LIKE home redesign; (2) tail-store cross-process compaction is unsafe (a short-lived process truncates the shared tail); (3) fixture sends must use a dedicated TEST channel, never the owner task channel.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: conductor/rune#2610