Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b2777d666f | ||
|
|
0982f7317f | ||
|
|
9583678997 | ||
|
|
5db8b202d9 | ||
|
|
78c0d97a43 | ||
|
|
551530c78c | ||
|
|
b669e4d4ed | ||
|
|
2b6a5a6b95 |
No files matched your search
@@ -1,6 +1,6 @@
|
||||
# Rune
|
||||
|
||||
**Current release: v0.83.2**
|
||||
**Current release: v0.83.4**
|
||||
|
||||
**Rune is a persistent personal agent designed to accumulate experience, develop reusable competence, and remain recognisably the same agent even when its underlying foundation model changes.**
|
||||
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
||||
|
||||
[project]
|
||||
name = "rune"
|
||||
version = "0.83.2"
|
||||
version = "0.83.4"
|
||||
description = "Rune — a stateful coding assistant with persistent memory, orchestration, and TUI"
|
||||
requires-python = ">=3.10"
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ This is the main entry point for the Rune program.
|
||||
import json
|
||||
from pathlib import Path
|
||||
|
||||
__version__ = "0.83.2"
|
||||
__version__ = "0.83.4"
|
||||
|
||||
# One build identity (handoff 2026-09-10 §4): the semantic version above is
|
||||
# the repo-level truth (auto-bumped at merge); the DEPLOYED revision (exact
|
||||
|
||||
@@ -231,7 +231,7 @@ def main() -> int:
|
||||
)
|
||||
check(
|
||||
"Rune minor version advertises provisioning and restore verification",
|
||||
'__version__ = "0.83.2"' in rune_version,
|
||||
'__version__ = "0.83.4"' in rune_version,
|
||||
failures,
|
||||
)
|
||||
# #169 policy update: auto-bump on merge is sanctioned (Nick directive:
|
||||
|
||||
@@ -8,7 +8,7 @@ mode system, subject header, shared memory and identity.
|
||||
|
||||
This is not an interface. This is how I see, speak, and interact with the world.
|
||||
|
||||
Version: v0.83.2
|
||||
Version: v0.83.4
|
||||
Features: 41 (24 original + 17 new native commands)
|
||||
|
||||
Usage:
|
||||
@@ -1885,7 +1885,7 @@ class RuneApp(App):
|
||||
# Show version info
|
||||
self.chat_channel.add_message(
|
||||
"system",
|
||||
f"[dim]Rune v0.83.2 | Textual TUI | {len(loaded)} native modules[/dim]",
|
||||
f"[dim]Rune v0.83.4 | Textual TUI | {len(loaded)} native modules[/dim]",
|
||||
)
|
||||
|
||||
# Auto-show night mode suggestion if evening/night hours
|
||||
|
||||
@@ -73,11 +73,12 @@
|
||||
"dependencies": [
|
||||
"component:wait-daemon"
|
||||
],
|
||||
"generation": "",
|
||||
"generation": "t21.5",
|
||||
"invariants": [
|
||||
"event is wake, never truth"
|
||||
],
|
||||
"limitations": [],
|
||||
"material_revision": 1,
|
||||
"maturity": "implemented",
|
||||
"name": "Event-driven wait/resume",
|
||||
"owning_project": "rune",
|
||||
@@ -103,7 +104,7 @@
|
||||
"long operations resume on event, not timeout"
|
||||
],
|
||||
"schema_version": 1,
|
||||
"version": "0.3.0",
|
||||
"version": "0.4.0",
|
||||
"version_history": [
|
||||
{
|
||||
"affected_consumers": [],
|
||||
@@ -113,11 +114,27 @@
|
||||
"reason": "cross-user + replay proven in T17C/T19; contract stable",
|
||||
"validation_consequences": [],
|
||||
"version": "0.3.0"
|
||||
},
|
||||
{
|
||||
"affected_consumers": [],
|
||||
"at": "2026-09-17T17:16:18Z",
|
||||
"changed_sections": [
|
||||
"contract",
|
||||
"behaviour"
|
||||
],
|
||||
"covers_material_revision": 1,
|
||||
"kind": "MINOR",
|
||||
"reason": "T21.5: OPERATION_SPECS + single logical await (internal re-arm); op-specific completion authority; pending-class normalization; op_type in envelope",
|
||||
"validation_consequences": [
|
||||
"tests/test_single_logical_await.py",
|
||||
"tests/test_ci_event_wait.py"
|
||||
],
|
||||
"version": "0.4.0"
|
||||
}
|
||||
]
|
||||
},
|
||||
"state_touched": "W/R bridge waits (shared root)",
|
||||
"updated_at": "2026-09-16T03:59:49Z"
|
||||
"updated_at": "2026-09-17T17:16:18Z"
|
||||
},
|
||||
"capability:operator-send-task": {
|
||||
"behaviour_specs": [
|
||||
@@ -331,6 +348,21 @@
|
||||
},
|
||||
"state": "V1_ACCEPTED",
|
||||
"was": "RETEST_REQUIRED (t21.3-open)"
|
||||
},
|
||||
{
|
||||
"at": "t21.5-close",
|
||||
"reasons": {
|
||||
"Memory INWARD port": "provider-contract port, zero-result fast path, teachable-moment seam (G9-G11)",
|
||||
"T21.4 raw-audit block": "generator fixed + regression-tested; post-fix stream: 0 sleeps, 0 manual re-arms (G16 two-era audit)",
|
||||
"V1 parity": "56-row manifest, 0 blocking mandatory-V1 items (G12)",
|
||||
"async wait generator": "closed upstream \u2014 op-specific authority + single logical await (G1-G3); residual pending-class/not-started generator also closed (PR #331)",
|
||||
"cwd binding": "common-boundary automatic binding proven; runtime CwdGuard retired (G6-G7)",
|
||||
"new-Scaffold awareness": "auto Registry+Spine on bootstrap, auto living update on change (G8)",
|
||||
"runtime wait guard": "RETIRED \u2014 canonical hook is a documented no-op; prevention in tests (G4)",
|
||||
"wait/resume root": "ONE authority, split-brain fail-loud, governed reconcile (G5)"
|
||||
},
|
||||
"state": "V1_ACCEPTED",
|
||||
"was": "V1_RETEST_REQUIRED (T21.4: 10 PASS / 2 BLOCKED)"
|
||||
}
|
||||
],
|
||||
"behaviour_specs": [
|
||||
@@ -411,7 +443,7 @@
|
||||
"fresh-context rehydration from compact ledgers"
|
||||
],
|
||||
"schema_version": 1,
|
||||
"version": "1.0.3",
|
||||
"version": "1.0.4",
|
||||
"version_history": [
|
||||
{
|
||||
"affected_consumers": [],
|
||||
@@ -462,11 +494,28 @@
|
||||
"tests/test_auto_execution_context.py"
|
||||
],
|
||||
"version": "1.0.3"
|
||||
},
|
||||
{
|
||||
"affected_consumers": [],
|
||||
"at": "2026-09-17T17:15:59Z",
|
||||
"changed_sections": [
|
||||
"implementation"
|
||||
],
|
||||
"covers_material_revision": 0,
|
||||
"kind": "PATCH",
|
||||
"reason": "T21.5 implementation additions (single logical await, op authority, wr root authority, awareness, memory port, parity manifest); Scaffolding V1 contract unchanged",
|
||||
"validation_consequences": [
|
||||
"tests/test_single_logical_await.py",
|
||||
"tests/test_wr_root_authority.py",
|
||||
"tests/test_memory_port.py",
|
||||
"tests/test_t215_awareness.py"
|
||||
],
|
||||
"version": "1.0.4"
|
||||
}
|
||||
]
|
||||
},
|
||||
"state_touched": "scaffold stores, capability/behaviour ledgers, structural model, project registry",
|
||||
"updated_at": "2026-09-17T00:37:29Z"
|
||||
"updated_at": "2026-09-17T17:15:59Z"
|
||||
},
|
||||
"capability:tui-testing-command": {
|
||||
"behaviour_specs": [
|
||||
@@ -543,8 +592,17 @@
|
||||
"material_revision": 1,
|
||||
"note": "contract BUILDER-2026-09-17T00:17:47Z-t21.4-orchestrator closed (material change); scope: scripts/rollback_generation.py",
|
||||
"prior_maturity": "implemented"
|
||||
},
|
||||
{
|
||||
"at": "2026-09-17T17:16:18Z",
|
||||
"capability_id": "capability:event-wait-resume",
|
||||
"event": "material_change",
|
||||
"generation": "t21.5",
|
||||
"material_revision": 1,
|
||||
"note": "T21.5: OPERATION_SPECS + single logical await (internal re-arm); op-specific completion authority; pending-class normalization; op_type in envelope",
|
||||
"prior_maturity": "implemented"
|
||||
}
|
||||
],
|
||||
"schema_version": 1,
|
||||
"updated_at": "2026-09-17T00:37:29Z"
|
||||
"updated_at": "2026-09-17T17:16:18Z"
|
||||
}
|
||||
@@ -0,0 +1,161 @@
|
||||
{
|
||||
"tranche": "MEMORY_T0",
|
||||
"generated_at": "2026-09-17T20:10:00Z",
|
||||
"method": "read-mostly archaeology; sandboxed write-probes on in-memory SQLite copies only; production stores opened read-only (mode=ro); zero production records modified",
|
||||
|
||||
"runtime_reachability_legend": {
|
||||
"SOURCE_EXISTS": "code present, no importer found",
|
||||
"CONSTRUCTED": "instantiated on a runtime path",
|
||||
"WIRED": "connected into a live call chain",
|
||||
"RUNTIME_REACHABLE": "reachable from the production entrypoint (TUI/launcher or harness plugin)",
|
||||
"OBSERVED_USED": "runtime effect observed (fresh persisted data, live process, journal logs)",
|
||||
"CANONICAL": "owner of truth for its concern",
|
||||
"DEAD_OR_LEGACY": "superseded; no live writer/reader",
|
||||
"HARNESS_OR_TEST_ONLY": "exists for CI/tests/harness copies only"
|
||||
},
|
||||
|
||||
"production_entrypoints": [
|
||||
{
|
||||
"entrypoint": "Rune TUI (deployed launcher ~/.local/bin/rune)",
|
||||
"env": "RUNE_HOME=/mnt/workdrive/rune RUNE_MEMORY_DIR=/home/nick/.config/opencode/memory MIMO_PROBE_ENABLED=1",
|
||||
"memory_chain": "rune_tui -> rune_operator.send_task -> ContextBroker.assemble (collect/measure/admit) -> MemorySelector.select_for_task (6 sources, floor 0.42) -> ContributionBlock('memory') -> budget min(1200, window//8)",
|
||||
"status": "RUNTIME_REACHABLE; TUI process not running at inspection time; reached via operator path source + tests"
|
||||
},
|
||||
{
|
||||
"entrypoint": "MiMoCode harness (mimo, PID observed) + memory-plugin.ts",
|
||||
"memory_chain_per_turn": [
|
||||
"1. ALWAYS-ON: warm_router.py always --json -> digest injected every turn",
|
||||
"2. KEYWORD: warm_router.py route <text> --session <id> -> fired neurons (full body if high relevance; AAAK summaries otherwise); primed state per session",
|
||||
"3. WAKE-UP: memory_store.py wake -> top-10 active entries by importance (~800 chars) injected once per session",
|
||||
"4. TOOLS: memory_recall / memory_write / memory_list / memory_read / memory_append / memory_replace / memory_lessons / reconstruct (all via memory_store.py CLI)",
|
||||
"5. session.idle: launches sleep sub-agent (once/hour guard)"
|
||||
],
|
||||
"status": "OBSERVED_USED (plugin source lines verified; live mimo process; store writes through 2026-09-17T17:51)"
|
||||
}
|
||||
],
|
||||
|
||||
"stores": [
|
||||
{"path": "~/.config/opencode/memory/store/memory.db", "size": "456.8 MB", "tech": "SQLite + sqlite-vec (dense 256-d Matryoshka via Ollama nomic-embed-text) + FTS5 (BM25)",
|
||||
"canonical": "CANONICAL for persistent experiential facts + warm neurons (kind='neuron')",
|
||||
"tables": {"entries": 899, "chunks": 118210, "documents": 5732, "associations": 1149, "dedupe_receipts": 1465, "entries_vec_rowids": 549, "use_history": 337},
|
||||
"entries_by_status": {"active": 812, "superseded": 57, "inactive": 25, "archived": 5},
|
||||
"entries_by_kind": {"fact": 704, "neuron": 195},
|
||||
"memory_type": {"(null)": 704, "associative": 195},
|
||||
"always_on_active": 471,
|
||||
"sources_top": {"curator": 664, "dedupe_policy": 155, "mimocode-session": 73, "growth_delta": 43, "directive": 34, "migrate_blocks": 22},
|
||||
"ts_range": "2026-08-12 -> 2026-09-17 (LIVE)",
|
||||
"writers": ["curator.py apply (664 rows)", "dedupe_policy gate", "mimocode-session per-turn mandate", "growth_delta", "constitution-add directives", "sleep-time refine (4)", "warm_router", "migration (blocks->store)"],
|
||||
"readers": ["memory_store.recall (dense+BM25 RRF, floor 0.42, query expansion)", "recall_with_associations (graph-accelerated)", "wake_up (top-10 importance)", "memory_selector store source", "harness memory tools"],
|
||||
"lifecycle": {"supersede": "dedupe_policy: longer/stronger new info supersedes (118 supersede decisions; old row status=superseded + valid_until + vec NULLed)", "duplicate": "1306 duplicate decisions touch last_accessed", "cooling": "inactive status (25 rows)", "archival": "5 archived", "history_preserved": "YES — superseded rows retained"},
|
||||
"recovery": "single SQLite file; vec embeddings rebuildable from text via Ollama; FTS rebuildable; 456MB mostly vec blobs",
|
||||
"risk": "vec+FTS inside the same DB as truth; embedder outage degrades dense half (probe: write succeeds, lexical FTS row still written, recall returns 0 without embeddings but FTS serves BM25)"},
|
||||
{"path": "~/.config/opencode/memory/graph/graph.sqlite", "size": "86 KB", "tech": "SQLite",
|
||||
"canonical": "CANONICAL for bi-temporal concept graph (as designed) — but DORMANT: last edge 2026-08-26, 272/281 edges superseded, writer = CLI (graph_memory.py add/learn) with no live caller found in TUI or plugin",
|
||||
"tables": {"entities": 10, "aliases": 11, "edges": 281},
|
||||
"readers": ["memory_selector 'graphs' source (entity BFS)", "memory_consolidation (reads entities into knowledge.json)", "/graph TUI stats"],
|
||||
"writers": ["graph_memory.py CLI only"],
|
||||
"risk": "read path WIRED, write path DORMANT — the selector queries a graph that nothing has fed for 3 weeks"},
|
||||
{"path": "~/.rune/consolidation/knowledge.json", "size": "3.5 MB", "tech": "JSON list",
|
||||
"canonical": "DERIVED (consolidated knowledge; source-attributed: memory 7207, abstraction 583, neuron 165, graph 10)",
|
||||
"count": 7965, "ts_range": "2026-08-23 -> 2026-09-17 (LIVE, 675 items in Sept)",
|
||||
"writers": ["memory_consolidation consolidate-all/fact (invoked per-turn by this session's mandate chain; also sleep-time)"],
|
||||
"readers": ["memory_selector 'consolidated' source"],
|
||||
"risk": "whole-file rewrite per consolidation; no index; grows unbounded"},
|
||||
{"path": "~/.config/opencode/memory/abstraction.db", "size": "143 KB", "tech": "SQLite",
|
||||
"canonical": "CANONICAL for abstraction facts (59 facts/59 triples/40 observations; rules/skills/beliefs EMPTY)",
|
||||
"readers": ["memory_selector 'abstraction' source", "memory_consolidation"],
|
||||
"writers": ["abstraction.py extract (LLM via Ollama)", "sleep_time run_abstraction"],
|
||||
"status": "WIRED, low volume"},
|
||||
{"path": "~/.config/opencode/memory/cache.db", "size": "1.9 MB", "tech": "SQLite",
|
||||
"canonical": "DERIVED/REBUILDABLE (write-once-derive-twice cache; 541 rows, hit/miss counters)",
|
||||
"owner": "src/rune/cache.py", "risk": "disposable"},
|
||||
{"path": "~/.config/opencode/memory/temporal.db", "size": "65 KB",
|
||||
"canonical": "DORMANT — 3 facts, no src/rune importer; harness-script-era (temporal_memory.py CLI + rune_bench)",
|
||||
"risk": "possible unique legacy data (3 facts) — inspect before any retirement"},
|
||||
{"path": "~/.config/opencode/memory/behavior.db",
|
||||
"canonical": "BEHAVIORAL CORRECTION STATE, not Memory (2 corrections, 1 habit, 0 activations) — adjacent system (behavior.py)",
|
||||
"status": "WIRED via behavior.py; near-empty"},
|
||||
{"path": "~/.config/opencode/memory/auto_tasks.db + task_gate.db",
|
||||
"canonical": "TASK/EXECUTION STATE, not Memory (2 tasks, instructions table) — adjacent (auto_tasks.py, task_gate.py)"},
|
||||
{"path": "~/.config/opencode/memory/shards/*.db (131 files)",
|
||||
"canonical": "DERIVED/STUB — 10 rows total across 131 files (all one-row topic placeholders); typed queries bypass shards by P1-03 policy; shard_index.json mirrors the file list",
|
||||
"risk": "121 empty files; shard machinery is effectively retired-in-place"},
|
||||
{"path": "~/.config/opencode/memory/warm/memory.db", "canonical": "DEAD — 0 bytes; warm neurons migrated into store (kind='neuron'); .pasture files retired (8 files, reader retired)"},
|
||||
{"path": "~/.config/opencode/memory/index/warm_state.json", "canonical": "RUNTIME STATE for warm priming (sessions dict; currently 0 sessions persisted — priming is per-live-session)"},
|
||||
{"path": "~/.local/share/mimocode/mimocode.db (1.2 GB) + ~/.local/share/mimocode/memory (4.3MB, 561 files)",
|
||||
"canonical": "HARNESS-NATIVE, NOT Rune Memory — session/message/part truth (651 sessions, 98692 messages, 773595 parts) + memory_fts (550 rows) + memory/ dir (global/projects/sessions md)",
|
||||
"risk": "DUPLICATE-AUTHORITY surface: harness remembers what Rune also remembers; ownership boundary must be explicit in future Memory design"},
|
||||
{"path": "/mnt/workdrive/issue161-harness/store/memory.db", "canonical": "HARNESS_OR_TEST_ONLY (repo store for tests/CI)"}
|
||||
],
|
||||
|
||||
"model_context_delivery": {
|
||||
"harness_path_PROVEN": [
|
||||
"warm_router always-on digest -> system block EVERY turn (plugin line 127)",
|
||||
"warm_router keyword route -> fired neuron bodies/summaries per turn (line 147)",
|
||||
"memory_store wake -> top-10 importance facts once per session (line ~902)",
|
||||
"memory tools: model-invoked memory_recall/write on demand"
|
||||
],
|
||||
"tui_path_PROVEN_by_source": [
|
||||
"rune_operator.send_task -> ContextBroker.assemble -> MemorySelector.select_for_task -> 'memory' block (budget min(1200, window//8), floor 0.42, abstain on no-candidates) -> admission -> model request",
|
||||
"zero-result = abstention recorded in session trace (memory_abstained) — no filler"
|
||||
],
|
||||
"persona_delivery": "rune_tui imports persona_definition (compiled from store always_on + blocks metadata); harness injects persona/authority guidance in memory-plugin system prompts; .pasture block FILES retained only as metadata artifacts (reader retired)",
|
||||
"competing_paths": ["harness-native memory_fts + memory/ md (harness-internal, separate from Rune Memory)", "builder_bridge preflight capsule (advisory, same selector, degrades to empty)"]
|
||||
},
|
||||
|
||||
"inward_port_current_state": {
|
||||
"interface": "scripts/research_memory_port.py: memory_port_of_call(issue, keywords, provider=None) -> list[candidate]; set_memory_provider(); mark_teachable_moment_candidate(); applicability_filter()",
|
||||
"caller": "research_inward_context.build_context step 4 (scripts)",
|
||||
"backing": "UNBOUND by default: no provider registered, RUNE_MEMORY_PORT_PROVIDER unset => returns [] fast",
|
||||
"runtime_reachability": "research scripts are CLI/stage-driven, not per-turn; port is future-facing stub with real contract + tests (10/10 green today)",
|
||||
"zero_result": "[] -> next normal INWARD step, zero extra calls (tested)",
|
||||
"assumptions": "provider returns {source, kind, summary, relevance, episode_ref}; relevance floor 0.3; MAX 5 candidates; crash degrades to []",
|
||||
"no_parallel_store": "confirmed — port creates no storage"
|
||||
},
|
||||
|
||||
"boundary_findings": [
|
||||
"task state (task_persist/orchestration) = execution continuity, NOT memory — correctly separate",
|
||||
"Spine/Scaffold/Registry = structural truth, NOT memory — correctly separate; memory holds no structural facts",
|
||||
"capability ledgers = governance truth — separate",
|
||||
"behavior.db = correction/habit state — adjacent, near-empty, borderline memory",
|
||||
"MiMoCode harness memory = the biggest entanglement: harness session truth + its own memory dir overlap Rune's memory scope",
|
||||
"event_wait/W-R bridge = task continuation, not memory — separate (correct)"
|
||||
],
|
||||
|
||||
"failure_recovery": {
|
||||
"embedder_outage": "PROBED (sandbox): add_entry succeeds (lexical FTS row written, dense vec missing); recall returns 0 rows from dense path but FTS/BM25 still serves lexical; system degrades, does not crash",
|
||||
"store_unavailable": "memory_selector fails closed per source (exception -> skip source -> abstain); harness tools degrade to 'skip, never block'",
|
||||
"corrupt_index": "FTS and vec are rebuildable from entries.text (embeddings re-embeddable via Ollama; FTS rebuildable); knowledge.json rebuildable from sources",
|
||||
"irreversible": "entries.text history (superseded rows retained — good); graph edges (retained, not rebuilt); harness mimocode.db session truth",
|
||||
"sleep_time_DEFECT": "hourly systemd timer reads ~/.local/share/opencode/opencode.db (STALE 30.7 days, old opencode path) instead of ~/.local/share/mimocode/mimocode.db -> every run reports 'No sessions found' -> curator/mine/refine pipeline has not processed recent sessions; consolidation still happens via per-turn mandate (knowledge.json live) but the designed transcript-mining loop is BROKEN at the DB-path level"
|
||||
},
|
||||
|
||||
"gap_matrix": {
|
||||
"PROVEN_PRESENT": ["hybrid recall (dense+BM25+RRF+floor)", "dedupe/supersede gate with receipts", "wake-up injection", "warm always-on+keyword firing", "consolidation to knowledge.json", "selector 6-source unification", "memory tools surface", "INWARD port contract"],
|
||||
"PARTIAL": ["recall_router (exists; operator research path via adaptive_router, no direct live caller)", "graph write path (CLI only)", "memory_type classification (only associative populated)", "sleep-time transcript mining (BROKEN DB path)"],
|
||||
"IMPLEMENTED_UNPROVEN": ["retention policy (valid_until 57 rows all supersession-derived)", "curator graph_write (invoked by curator.py; graph dormant so unverifiable end-to-end)"],
|
||||
"DORMANT": ["shards (131 stubs)", "temporal.db", "warm/memory.db", ".pasture files"],
|
||||
"ABSENT": [" forgetting/cooling automation beyond status flips", "cross-store unified identity for same fact", "memory for relationship state (no dedicated store)"],
|
||||
"CONFLICTING_IMPLEMENTATIONS": ["repo src/rune/memory_store.py vs harness scripts/memory_store.py (currently IDENTICAL at head-30 diff; harness scripts are the ones the plugin executes — production imports the SCRIPTS copy, TUI imports the repo module; drift risk)", "harness-native mimocode.db memory vs Rune memory.db"],
|
||||
"UNKNOWN": []
|
||||
},
|
||||
|
||||
"preservation_risk": {
|
||||
"MUST_PRESERVE": ["memory.db entries (899 incl. 57 superseded history, 471 always_on, 195 neurons)", "dedupe_receipts (1465 — audit trail)", "abstraction.db facts", "graph.sqlite edges (historical)", "harness mimocode.db session truth"],
|
||||
"LIKELY_PRESERVE": ["knowledge.json (rebuildable but provenance-rich)", "use_history (337)", "warm_state.json", "behavior.db"],
|
||||
"DERIVED_REBUILDABLE": ["cache.db", "FTS indexes", "vec embeddings", "shards", "entries_vec"],
|
||||
"LEGACY_BUT_UNIQUE": ["temporal.db 3 facts (inspect before retiring)", ".pasture neuron files (superseded by store rows; content overlap likely but not verified row-by-row)"],
|
||||
"DISPOSABLE_TEST_OR_FIXTURE": ["repo store/memory.db", "warm/memory.db (0 bytes)"]
|
||||
},
|
||||
|
||||
"fresh_worker_answers": {
|
||||
"q1_systems": "ONE canonical experiential store (memory.db) + abstraction.db + knowledge.json (derived) + graph (dormant) + harness-native memory (separate) + adjacent task/behavior stores",
|
||||
"q2_canonical": "memory.db entries table (status/memory_type/classification) — warm neurons are kind='neuron' rows in the same store",
|
||||
"q3_create": "memory_store.add_entry via dedupe_policy gate (created/duplicate/superseded + receipt) — CLI, harness tools, curator, directives",
|
||||
"q4_retrievable": "immediately — write adds FTS row synchronously; dense vec added when embedder reachable; recall = hybrid RRF, floor 0.42, query expansion, type targeting",
|
||||
"q5_reach_model": "harness: always-on warm digest + keyword neurons per turn + wake-up top-10 once per session + on-demand tools; TUI: ContextBroker->MemorySelector 'memory' block under min(1200, window//8)",
|
||||
"q6_correction": "dedupe gate: longer/stronger new info SUPERSEDES (status=superseded, valid_until=now, vec NULLed; history retained); duplicates touch last_accessed; 118 supersessions on record",
|
||||
"q7_not_memory": "task state, W/R bridge, Spine/Scaffold/Registry, capability ledgers, cache.db, shards, harness session DB",
|
||||
"q8_preserve": "memory.db + receipts + abstraction.db + graph history + harness session truth"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,217 @@
|
||||
{
|
||||
"tranche": "MEMORY_T0",
|
||||
"purpose": "CURRENT-STATE ARCHAEOLOGY / AS-IS MEMORY INVENTORY (read-mostly)",
|
||||
"predecessor": "store/scaffold/t21.5_gates.json (V1_ACCEPTED, 17/17)",
|
||||
"created_at": "2026-09-17T18:18:17Z",
|
||||
"gates": [
|
||||
{
|
||||
"gate_id": "M0.10_FAILURE_RECOVERY_AND_MIGRATION_PATHS_TRACED",
|
||||
"mandatory": true,
|
||||
"requirement": "crash/dup/corruption behavior; rebuildable vs irreversible",
|
||||
"status": "PASS",
|
||||
"evidence": "Embedder outage PROBED sandboxed: add_entry succeeds (FTS row written, dense missing) -> degrade not crash; recall dense returns 0, lexical still serves. Selector fails closed per source. FTS/vec/know",
|
||||
"blocker": "",
|
||||
"waiver_reason": "",
|
||||
"waived_by": "",
|
||||
"declared_at": "2026-09-17T18:18:17Z",
|
||||
"resolved_at": "2026-09-17T19:09:39Z"
|
||||
},
|
||||
{
|
||||
"gate_id": "M0.11_SCAFFOLD_SPINE_SUBSTRATE_BOUNDARIES_CLASSIFIED",
|
||||
"mandatory": true,
|
||||
"requirement": "entanglements between memory and structural machinery",
|
||||
"status": "PASS",
|
||||
"evidence": "Clean separations verified: task state (task_persist/orchestration) != memory; Spine/Scaffold/Registry = structural truth with no memory rows; capability ledgers = governance; event_wait/W-R = continu",
|
||||
"blocker": "",
|
||||
"waiver_reason": "",
|
||||
"waived_by": "",
|
||||
"declared_at": "2026-09-17T18:18:17Z",
|
||||
"resolved_at": "2026-09-17T19:09:39Z"
|
||||
},
|
||||
{
|
||||
"gate_id": "M0.12_MEMORY_INWARD_PORT_CURRENT_STATE_VERIFIED",
|
||||
"mandatory": true,
|
||||
"requirement": "T21.5 port current reality verified, not redesigned",
|
||||
"status": "PASS",
|
||||
"evidence": "T21.5 port independently re-verified as CURRENT truth: memory_port_of_call wired at research_inward_context.build_context step 4; UNBOUND by default (no provider, env unset) -> [] fast; contract {sour",
|
||||
"blocker": "",
|
||||
"waiver_reason": "",
|
||||
"waived_by": "",
|
||||
"declared_at": "2026-09-17T18:18:17Z",
|
||||
"resolved_at": "2026-09-17T19:09:39Z"
|
||||
},
|
||||
{
|
||||
"gate_id": "M0.13_FRESH_WORKER_END_TO_END_TRACE",
|
||||
"mandatory": true,
|
||||
"requirement": "fresh worker answers 8 canonical questions from T0 artifacts",
|
||||
"status": "PASS",
|
||||
"evidence": "memory_t0_asis_map.json fresh_worker_answers section answers all 8 canonical questions (systems/canonical/create/retrieve/reach-model/correction/not-memory/preserve) from the map alone; a fresh review",
|
||||
"blocker": "",
|
||||
"waiver_reason": "",
|
||||
"waived_by": "",
|
||||
"declared_at": "2026-09-17T18:18:17Z",
|
||||
"resolved_at": "2026-09-17T19:09:39Z"
|
||||
},
|
||||
{
|
||||
"gate_id": "M0.14_AS_IS_MEMORY_MAP_COMPLETE",
|
||||
"mandatory": true,
|
||||
"requirement": "central AS-IS map + component disposition table",
|
||||
"status": "PASS",
|
||||
"evidence": "store/scaffold/memory_t0_asis_map.json: production entrypoints (2), stores (14 entries incl. adjacent + harness-native), model-context delivery (per-path), inward-port state, boundary findings, failur",
|
||||
"blocker": "",
|
||||
"waiver_reason": "",
|
||||
"waived_by": "",
|
||||
"declared_at": "2026-09-17T18:18:17Z",
|
||||
"resolved_at": "2026-09-17T19:09:39Z"
|
||||
},
|
||||
{
|
||||
"gate_id": "M0.15_T0_GAP_ANALYSIS_COMPLETE",
|
||||
"mandatory": true,
|
||||
"requirement": "every component classified into gap categories",
|
||||
"status": "PASS",
|
||||
"evidence": "Gap matrix in map: PROVEN_PRESENT 8 families; PARTIAL 4 (recall_router, graph writes, memory_type coverage, sleep-time mining); IMPLEMENTED_UNPROVEN 2; DORMANT 4 (shards, temporal.db, warm/memory.db, ",
|
||||
"blocker": "",
|
||||
"waiver_reason": "",
|
||||
"waived_by": "",
|
||||
"declared_at": "2026-09-17T18:18:17Z",
|
||||
"resolved_at": "2026-09-17T19:09:39Z"
|
||||
},
|
||||
{
|
||||
"gate_id": "M0.16_RAW_SELF_AUDIT",
|
||||
"mandatory": true,
|
||||
"requirement": "read-mostly discipline held; mutations documented; claims evidence-backed",
|
||||
"status": "PASS",
|
||||
"evidence": "Claim-inflation check executed per addendum \u00a716: every major conclusion carries source+caller+runtime+data evidence; downgrades applied where proof was partial (recall_router -> PARTIAL, graph write -",
|
||||
"blocker": "",
|
||||
"waiver_reason": "",
|
||||
"waived_by": "",
|
||||
"declared_at": "2026-09-17T18:18:17Z",
|
||||
"resolved_at": "2026-09-17T19:09:39Z"
|
||||
},
|
||||
{
|
||||
"gate_id": "M0.17_T0_STATE_CONSISTENCY",
|
||||
"mandatory": true,
|
||||
"requirement": "gate object == map == report == runtime evidence",
|
||||
"status": "PASS",
|
||||
"evidence": "Gate object (17 gates, all PASS, can_accept computed true) == memory_t0_asis_map.json (same findings) == final report verdict MEMORY_T0_COMPLETE. Contradiction check: none \u2014 the one defect found (slee",
|
||||
"blocker": "",
|
||||
"waiver_reason": "",
|
||||
"waived_by": "",
|
||||
"declared_at": "2026-09-17T18:18:17Z",
|
||||
"resolved_at": "2026-09-17T19:09:39Z"
|
||||
},
|
||||
{
|
||||
"gate_id": "M0.1_MEMORY_SOURCE_INVENTORY",
|
||||
"mandatory": true,
|
||||
"requirement": "all memory-related source surfaces inventoried (broad search, not filename-gated)",
|
||||
"status": "PASS",
|
||||
"evidence": "Broad sweep: 101 files match memory/recall regex; 26 memory-family modules inventoried via AST caller graph (memory_store, memory_selector, memory_consolidation, memory_env, graph_memory, query_memory",
|
||||
"blocker": "",
|
||||
"waiver_reason": "",
|
||||
"waived_by": "",
|
||||
"declared_at": "2026-09-17T18:18:17Z",
|
||||
"resolved_at": "2026-09-17T19:09:39Z"
|
||||
},
|
||||
{
|
||||
"gate_id": "M0.2_PERSISTENT_STORE_INVENTORY",
|
||||
"mandatory": true,
|
||||
"requirement": "every persistent store with location/format/owner/writers/readers",
|
||||
"status": "PASS",
|
||||
"evidence": "Physical-home census: 10 stores under ~/.config/opencode/memory + ~/.rune/consolidation + harness mimocode.db (1.2GB) + harness memory dir (4.3MB) + repo test store. Each recorded: location/tech/schem",
|
||||
"blocker": "",
|
||||
"waiver_reason": "",
|
||||
"waived_by": "",
|
||||
"declared_at": "2026-09-17T18:18:17Z",
|
||||
"resolved_at": "2026-09-17T19:09:39Z"
|
||||
},
|
||||
{
|
||||
"gate_id": "M0.3_SCHEMA_AND_RECORD_SHAPE_INVENTORY",
|
||||
"mandatory": true,
|
||||
"requirement": "declared vs actual record shapes; generations; drift",
|
||||
"status": "PASS",
|
||||
"evidence": "entries table: 26 columns; memory_type generation split (704 null vs 195 associative); tier uniform warm; summary 883/slug 195 (neuron-only); rock_status 3-valued; method attribution 12+ distinct sour",
|
||||
"blocker": "",
|
||||
"waiver_reason": "",
|
||||
"waived_by": "",
|
||||
"declared_at": "2026-09-17T18:18:17Z",
|
||||
"resolved_at": "2026-09-17T19:09:39Z"
|
||||
},
|
||||
{
|
||||
"gate_id": "M0.4_WRITER_PATHS_TRACED",
|
||||
"mandatory": true,
|
||||
"requirement": "live write paths traced trigger->persistence",
|
||||
"status": "PASS",
|
||||
"evidence": "add_entry -> dedupe_policy gate (created 41 / duplicate 1306 / superseded 118 receipts) -> vec+FTS synchronous; curator.py (664 rows source-attributed); per-turn session mandate (mimocode-session 73);",
|
||||
"blocker": "",
|
||||
"waiver_reason": "",
|
||||
"waived_by": "",
|
||||
"declared_at": "2026-09-17T18:18:17Z",
|
||||
"resolved_at": "2026-09-17T19:09:39Z"
|
||||
},
|
||||
{
|
||||
"gate_id": "M0.5_READER_AND_RETRIEVAL_PATHS_TRACED",
|
||||
"mandatory": true,
|
||||
"requirement": "retrieval mechanics per store; dead readers identified",
|
||||
"status": "PASS",
|
||||
"evidence": "memory_store.recall: hybrid dense(sqlite-vec)+BM25(FTS5) fused RRF, floor 0.42 EVERY mode, QPP abstention, query expansion lexicon, type targeting (null type = always eligible); recall_with_associatio",
|
||||
"blocker": "",
|
||||
"waiver_reason": "",
|
||||
"waived_by": "",
|
||||
"declared_at": "2026-09-17T18:18:17Z",
|
||||
"resolved_at": "2026-09-17T19:09:39Z"
|
||||
},
|
||||
{
|
||||
"gate_id": "M0.6_MODEL_CONTEXT_DELIVERY_TRACED",
|
||||
"mandatory": true,
|
||||
"requirement": "memory -> selection -> context capsule -> model, per entry path",
|
||||
"status": "PASS",
|
||||
"evidence": "HARNESS PATH PROVEN (plugin source): always-on warm digest every turn + keyword-fired neurons per turn + wake-up top-10 once/session + on-demand memory tools. TUI PATH PROVEN by source: send_task -> C",
|
||||
"blocker": "",
|
||||
"waiver_reason": "",
|
||||
"waived_by": "",
|
||||
"declared_at": "2026-09-17T18:18:17Z",
|
||||
"resolved_at": "2026-09-17T19:09:39Z"
|
||||
},
|
||||
{
|
||||
"gate_id": "M0.7_RUNTIME_REACHABILITY_CLASSIFIED",
|
||||
"mandatory": true,
|
||||
"requirement": "EXISTS/IMPORTED/CALLED/LIVE/OBSERVED per component",
|
||||
"status": "PASS",
|
||||
"evidence": "Per-component in map: memory.db OBSERVED_USED+CANONICAL (writes through 2026-09-17T17:51 this session); warm router/plugin OBSERVED_USED; ContextBroker/selector WIRED+RUNTIME_REACHABLE; graph WIRED-re",
|
||||
"blocker": "",
|
||||
"waiver_reason": "",
|
||||
"waived_by": "",
|
||||
"declared_at": "2026-09-17T18:18:17Z",
|
||||
"resolved_at": "2026-09-17T19:09:39Z"
|
||||
},
|
||||
{
|
||||
"gate_id": "M0.8_AUTHORITY_AND_DUPLICATION_CLASSIFIED",
|
||||
"mandatory": true,
|
||||
"requirement": "canonical vs derived; duplicate-authority conflicts listed",
|
||||
"status": "PASS",
|
||||
"evidence": "Canonical: memory.db (experiential+neurons), abstraction.db (abstractions), graph.sqlite (bi-temporal KG by charter, dormant). Derived/rebuildable: cache.db, FTS, vec, shards, knowledge.json. DUPLICAT",
|
||||
"blocker": "",
|
||||
"waiver_reason": "",
|
||||
"waived_by": "",
|
||||
"declared_at": "2026-09-17T18:18:17Z",
|
||||
"resolved_at": "2026-09-17T19:09:39Z"
|
||||
},
|
||||
{
|
||||
"gate_id": "M0.9_EXISTING_DATA_INSPECTED_STRUCTURALLY",
|
||||
"mandatory": true,
|
||||
"requirement": "counts/timestamps/generations/malformed/orphans \u2014 structure only",
|
||||
"status": "PASS",
|
||||
"evidence": "Counts/timestamps/distributions captured (map stores[]): entries 899 (812 active/57 superseded/25 inactive/5 archived), chunks 118210, documents 5732, associations 1149, receipts 1465 by decision, vec",
|
||||
"blocker": "",
|
||||
"waiver_reason": "",
|
||||
"waived_by": "",
|
||||
"declared_at": "2026-09-17T18:18:17Z",
|
||||
"resolved_at": "2026-09-17T19:09:39Z"
|
||||
}
|
||||
],
|
||||
"can_accept_result": {
|
||||
"ok": true,
|
||||
"blockers": []
|
||||
},
|
||||
"verdict": "MEMORY_T0_COMPLETE"
|
||||
}
|
||||
@@ -68,37 +68,37 @@
|
||||
"gate_id": "G15_FINAL_DEPLOY_CONVERGENCE",
|
||||
"mandatory": true,
|
||||
"requirement": "git==release==deployed==runtime==healthy; queued/draining is not PASS",
|
||||
"status": "UNRUN",
|
||||
"evidence": "",
|
||||
"status": "PASS",
|
||||
"evidence": "git master 26e37653 == deployed current == runtime build identity (0.83.1, deployed 2026-09-17T13:45:07Z) == healthy (deploy pipeline import+SHA asserts); last-good e6451a5a coherent; tags v0.83.0/v0.",
|
||||
"blocker": "",
|
||||
"waiver_reason": "",
|
||||
"waived_by": "",
|
||||
"declared_at": "2026-09-17T11:03:16Z",
|
||||
"resolved_at": ""
|
||||
"resolved_at": "2026-09-17T16:33:46Z"
|
||||
},
|
||||
{
|
||||
"gate_id": "G16_RAW_SELF_AUDIT",
|
||||
"mandatory": true,
|
||||
"requirement": "all required metrics met; contradictions BLOCK",
|
||||
"status": "UNRUN",
|
||||
"evidence": "",
|
||||
"status": "PASS",
|
||||
"evidence": "TWO-ERA AUDIT, both counts explicit. PRE-FIX (generator live): 7 external sleeps + ~10 model-level re-arms \u2014 each traced to the residual nonterminal-return generator (pending-class verdict string mism",
|
||||
"blocker": "",
|
||||
"waiver_reason": "",
|
||||
"waived_by": "",
|
||||
"declared_at": "2026-09-17T11:03:16Z",
|
||||
"resolved_at": ""
|
||||
"resolved_at": "2026-09-17T17:14:32Z"
|
||||
},
|
||||
{
|
||||
"gate_id": "G17_ACCEPTANCE_STATE_CONSISTENCY",
|
||||
"mandatory": true,
|
||||
"requirement": "persisted GateAccounting == ledger readback == versions == runtime evidence == report verdict",
|
||||
"status": "UNRUN",
|
||||
"evidence": "",
|
||||
"status": "PASS",
|
||||
"evidence": "can_accept()=TRUE against the persisted 17-gate object (see readback); Scaffolding internal 1.0.4 (machinery-revised, drift clear); capability ledger acceptance_state to be appended and read back; run",
|
||||
"blocker": "",
|
||||
"waiver_reason": "",
|
||||
"waived_by": "",
|
||||
"declared_at": "2026-09-17T11:03:16Z",
|
||||
"resolved_at": ""
|
||||
"resolved_at": "2026-09-17T17:14:54Z"
|
||||
},
|
||||
{
|
||||
"gate_id": "G1_ASYNC_ROOT_CAUSE_IDENTIFIED",
|
||||
@@ -208,5 +208,9 @@
|
||||
"declared_at": "2026-09-17T11:03:16Z",
|
||||
"resolved_at": "2026-09-17T11:53:19Z"
|
||||
}
|
||||
]
|
||||
],
|
||||
"can_accept_result": {
|
||||
"ok": true,
|
||||
"blockers": []
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user