Compare commits

...
2 Commits
Author SHA1 Message Date
conductor 76984c6362 chore(release): auto-bump version to 0.66.25 — earned by # (patch: converged release (push-to-master bump))
Auto-version and Release / release (push) Successful in 13s
deploy / deploy (push) Successful in 39s
CI Pipeline / lint (push) Successful in 16m49s
CI Pipeline / unit-tests (push) Successful in 56s
CI Pipeline / canary (push) Successful in 29s
CI Pipeline / best-practices (push) Successful in 5s
CI Pipeline / documentation (push) Successful in 6s
CI Pipeline / type-check (push) Successful in 29s
CI Pipeline / gitea-offline (push) Successful in 17s
CI Pipeline / required-checks (push) Successful in 1s
Promotion record: (unknown)
2026-09-12 17:34:32 +01:00
Nick 4072d36b1a fix(spine): build re-derivation uses high-water upgrade — no demotion noise
CI Pipeline / best-practices (push) Successful in 8s
CI Pipeline / documentation (push) Successful in 6s
CI Pipeline / canary (push) Successful in 39s
Auto-version and Release / release (push) Successful in 51s
CI Pipeline / gitea-offline (push) Successful in 17s
CI Pipeline / type-check (push) Successful in 29s
CI Pipeline / unit-tests (push) Successful in 1m13s
deploy / deploy (push) Failing after 15m23s
CI Pipeline / lint (push) Successful in 17m3s
CI Pipeline / required-checks (push) Successful in 0s
Evidence surfaced it: re-deriving module maturity during build() logged a
demotion-rejection observation for every already-earned module (171 noise
records). Build now upgrades via the silent high-water path; promote()
logging stays reserved for explicit evidence-gated API calls.
2026-09-12 17:34:05 +01:00
8 changed files with 9347 additions and 683 deletions

No files matched your search

+1 -1
View File
@@ -1,6 +1,6 @@
# Rune
**Current release: v0.66.24**
**Current release: v0.66.25**
**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
View File
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
[project]
name = "rune"
version = "0.66.24"
version = "0.66.25"
description = "Rune — a stateful coding assistant with persistent memory, orchestration, and TUI"
requires-python = ">=3.10"
+1 -1
View File
@@ -6,7 +6,7 @@ This is the main entry point for the Rune program.
import json
from pathlib import Path
__version__ = "0.66.24"
__version__ = "0.66.25"
# 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
+1 -1
View File
@@ -231,7 +231,7 @@ def main() -> int:
)
check(
"Rune minor version advertises provisioning and restore verification",
'__version__ = "0.66.24"' in rune_version,
'__version__ = "0.66.25"' in rune_version,
failures,
)
# #169 policy update: auto-bump on merge is sanctioned (Nick directive:
+2 -2
View File
@@ -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.66.24
Version: v0.66.25
Features: 41 (24 original + 17 new native commands)
Usage:
@@ -1856,7 +1856,7 @@ class RuneApp(App):
# Show version info
self.chat_channel.add_message(
"system",
f"[dim]Rune v0.66.24 | Textual TUI | {len(loaded)} native modules[/dim]",
f"[dim]Rune v0.66.25 | Textual TUI | {len(loaded)} native modules[/dim]",
)
# Auto-show night mode suggestion if evening/night hours
+14 -7
View File
@@ -318,10 +318,17 @@ def build(manifest_path: Path | None = None) -> dict:
for m in sorted(mods):
mid = f"module:{m}"
e = entity(doc, mid)
present = (SRC_DIR / f"{m}.py").is_file()
if present:
# Re-derivation uses the HIGH-WATER path (add_entity upgrades only,
# never logs): fresh evidence may be lower than the store's earned
# state on any given pass, and that is not a demotion event — it is
# a build. Explicit promote() logging is for evidence-gated API calls.
def _derive(state: str, ev: str) -> None:
add_entity(doc, id=mid, kind="module", maturity=state,
evidence_refs=[ev])
if (SRC_DIR / f"{m}.py").is_file():
e["identities"]["source"] = f"src/rune/{m}.py"
_ = promote(doc, mid, "PRESENT", f"source:{m}.py")
_derive("PRESENT", f"source:{m}.py")
consumers = sorted(c for c, deps in graph.items() if m in deps and c != m)
deps = sorted(d for d in graph.get(m, set()) if d in mods and d != m)
for c in consumers:
@@ -332,13 +339,13 @@ def build(manifest_path: Path | None = None) -> dict:
to_id=f"module:{d}", evidence_refs=[f"ast-import:{m}"])
# WIRED: importers exist, or registry wiring (canary registry)
if consumers or m in registry:
_ = promote(doc, mid, "WIRED", f"ast-imports:{len(consumers)}" if consumers
else "canary-registry")
_derive("WIRED", f"ast-imports:{len(consumers)}" if consumers
else "canary-registry")
# EXERCISED: dedicated test or canary exercise
if m in tested:
_ = promote(doc, mid, "EXERCISED", f"tests/test_{m}.py")
_derive("EXERCISED", f"tests/test_{m}.py")
elif m in registry:
_ = promote(doc, mid, "EXERCISED", "canary-registry-exercise")
_derive("EXERCISED", "canary-registry-exercise")
# 3. runtime/deployment observation (dynamic, bounded)
obs = _deployed_observation()
+679 -670
View File
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff