Compare commits

...
4 Commits
Author SHA1 Message Date
conductor 775591d76c chore(release): auto-bump version to 0.162.1 — earned by # (patch: converged release (push-to-master bump))
deploy / deploy (push) Skipped
CI Pipeline / best-practices (push) Successful in 7s
CI Pipeline / documentation (push) Successful in 3s
Auto-version and Release / release (push) Successful in 21s
CI Pipeline / gitea-offline (push) Successful in 18s
CI Pipeline / type-check (push) Successful in 53s
CI Pipeline / lint (push) Successful in 1m23s
CI Pipeline / canary (push) Successful in 2m55s
CI Pipeline / go-surface (push) Successful in 3m12s
CI Pipeline / required-checks (push) Canceled after 0s
CI Pipeline / CI Pipeline / notify-event-bridge (push) Canceled after 0s
CI Pipeline / rust-surface (push) Canceled after 4m1s
CI Pipeline / unit-tests (push) Canceled after 4m6s
Promotion record: (unknown)
2026-10-10 15:11:07 +01:00
Nick 5c134537f7 fix(ci): prune deploy-test rust targets — tmpfs disk-full class (2026-10-07 recurrence)
CI Pipeline / type-check (push) Canceled after 0s
CI Pipeline / gitea-offline (push) Canceled after 0s
CI Pipeline / required-checks (push) Canceled after 0s
CI Pipeline / CI Pipeline / notify-event-bridge (push) Canceled after 0s
deploy / deploy (push) Canceled after 0s
Auto-version and Release / release (push) Canceled after 17s
CI Pipeline / canary (push) Canceled after 5s
CI Pipeline / best-practices (push) Canceled after 5s
CI Pipeline / rust-surface (push) Canceled after 5s
CI Pipeline / go-surface (push) Canceled after 6s
CI Pipeline / unit-tests (push) Canceled after 6s
CI Pipeline / documentation (push) Canceled after 6s
CI Pipeline / lint (push) Canceled after 6s
/tmp hit 100% again: /tmp/rune-deploy-test/src/rust accumulated 15G of
cargo target dirs (every crate's release build), invisible to the prune
step which only covered rune-ci-target-* and go-bins-*. Pruned to 47%
(staged source survives; targets rebuild on next deploy). The prune step
now clears deploy-test rust targets too — prune coverage must match every
CI-created /tmp accumulation, or the 2026-10-07 disk-full incident
recurs silently.
2026-10-10 15:10:52 +01:00
conductor a50466744f chore(release): auto-bump version to 0.162.0 — earned by # (minor: converged release (push-to-master bump))
CI Pipeline / best-practices (push) Successful in 7s
CI Pipeline / documentation (push) Successful in 2s
Auto-version and Release / release (push) Successful in 20s
CI Pipeline / gitea-offline (push) Successful in 16s
CI Pipeline / go-surface (push) Failing after 1m1s
CI Pipeline / type-check (push) Successful in 53s
CI Pipeline / lint (push) Successful in 1m22s
CI Pipeline / canary (push) Failing after 2m7s
CI Pipeline / rust-surface (push) Successful in 5m13s
CI Pipeline / required-checks (push) Canceled after 0s
CI Pipeline / CI Pipeline / notify-event-bridge (push) Canceled after 0s
CI Pipeline / unit-tests (push) Canceled after 5m22s
deploy / deploy (push) Canceled after 5m3s
Promotion record: (unknown)
2026-10-10 15:05:28 +01:00
Nick b8745ab455 feat(memory-store-deep): drift-rerank blend kernel — memory_store batch 2
CI Pipeline / best-practices (push) Successful in 7s
CI Pipeline / documentation (push) Successful in 3s
CI Pipeline / gitea-offline (push) Canceled after 0s
CI Pipeline / required-checks (push) Canceled after 0s
CI Pipeline / CI Pipeline / notify-event-bridge (push) Canceled after 0s
CI Pipeline / go-surface (push) Canceled after 20s
CI Pipeline / rust-surface (push) Canceled after 21s
CI Pipeline / type-check (push) Canceled after 11s
CI Pipeline / canary (push) Canceled after 21s
Auto-version and Release / release (push) Canceled after 24s
CI Pipeline / lint (push) Canceled after 25s
CI Pipeline / unit-tests (push) Canceled after 26s
deploy / deploy (push) Canceled after 30s
DriftRerankBlend (combined = original*0.7 + drift*0.3, stable sort desc —
Python sort-stability parity pinned by the tie edge). The DB reads and
drift_core.compute_value stay Python-reactive per the dichotomy; the
deterministic blend is the kernel. 2-row truth + HARD CI gate extended.
GO kernel verdict, parity-only improvements note.
2026-10-10 15:05:07 +01:00
9 changed files with 141 additions and 7 deletions

No files matched your search

+4 -1
View File
@@ -199,6 +199,9 @@ jobs:
# the tmpfs (2026-10-07: venv creation failed disk-full across
# every job). Keep the 3 newest; drop the rest.
cd /tmp && ls -dt rune-ci-target-* 2>/dev/null | tail -n +4 | xargs -r rm -rf
# deploy-test cache: rust targets accumulate ~15G (every crate's
# release dir). The staged source survives; targets rebuild.
find /tmp/rune-deploy-test/src/rust -maxdepth 2 -name target -type d 2>/dev/null | xargs -r rm -rf
- name: go vet + go test + go build
run: |
for dir in src/go/*/; do
@@ -353,7 +356,7 @@ jobs:
fi
- name: memory-store-deep text-kernel parity gate (HARD — #2479 batch: fts/mapreduce/entities)
run: |
cd src/go/memory-store-deep && go build -o /tmp/msd-${{ gitea.run_id }} . && go test -run TestTextKernelsParity -v
cd src/go/memory-store-deep && go build -o /tmp/msd-${{ gitea.run_id }} . && go test -run "TestTextKernelsParity|TestDriftRerankBlendParity" -v
- name: go race detector (every module's test suite under -race)
run: |
for dir in src/go/*/; do
+1 -1
View File
@@ -1,6 +1,6 @@
# Rune
**Current release: v0.161.0**
**Current release: v0.162.1**
**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.161.0"
version = "0.162.1"
description = "Rune — a stateful coding assistant with persistent memory, orchestration, and TUI"
requires-python = ">=3.10"
+32
View File
@@ -0,0 +1,32 @@
package main
// drift_rerank.go — #2479 memory_store batch 2: the drift-aware re-rank
// BLEND kernel (combined = original*0.7 + drift*0.3, stable sort desc).
// The DB reads and drift_core.compute_value calls stay in the Python
// reactive seam (SQLite + cross-crate); the deterministic blend is here.
// Oracle: src/rune/memory_store.py _drift_rerank's blend section.
import "sort"
// DriftRerankBlend — entries carry {"id", "orig", "drift"}; returns ids
// sorted by combined score desc (stable — Python sort stability parity).
func DriftRerankBlend(entries []map[string]any) []string {
type scored struct {
id string
score float64
seq int
}
ss := make([]scored, 0, len(entries))
for i, e := range entries {
id, _ := e["id"].(string)
orig, _ := e["orig"].(float64)
drift, _ := e["drift"].(float64)
ss = append(ss, scored{id: id, score: orig*0.7 + drift*0.3, seq: i})
}
sort.SliceStable(ss, func(a, b int) bool { return ss[a].score > ss[b].score })
out := make([]string, len(ss))
for i, s := range ss {
out[i] = s.id
}
return out
}
@@ -0,0 +1,64 @@
[
{
"op": "blend",
"inputs": [
{
"id": "e1",
"orig": 0.9,
"drift": 0.2
},
{
"id": "e2",
"orig": 0.5,
"drift": 0.9
},
{
"id": "e3",
"orig": 0.7,
"drift": 0.7
},
{
"id": "e4",
"orig": 0.1,
"drift": 1.0
},
{
"id": "e5",
"orig": 0.6,
"drift": 0.6
}
],
"want": [
"e3",
"e1",
"e2",
"e5",
"e4"
]
},
{
"op": "blend",
"inputs": [
{
"id": "a",
"orig": 0.5,
"drift": 0.5
},
{
"id": "b",
"orig": 0.5,
"drift": 0.5
},
{
"id": "c",
"orig": 0.4,
"drift": 0.7
}
],
"want": [
"a",
"b",
"c"
]
}
]
@@ -0,0 +1,35 @@
package main
// truth_drift_rerank_test.go — blend-kernel parity gate.
import (
"encoding/json"
"os"
"testing"
)
func TestDriftRerankBlendParity(t *testing.T) {
raw, err := os.ReadFile("truth_drift_rerank.json")
if err != nil {
t.Fatalf("truth_drift_rerank.json missing: %v", err)
}
var rows []struct {
Inputs []map[string]any `json:"inputs"`
Want []string `json:"want"`
}
if err := json.Unmarshal(raw, &rows); err != nil {
t.Fatalf("unparseable: %v", err)
}
for i, c := range rows {
got := DriftRerankBlend(c.Inputs)
if len(got) != len(c.Want) {
t.Errorf("row %d: got %d want %d", i, len(got), len(c.Want))
continue
}
for j := range got {
if got[j] != c.Want[j] {
t.Errorf("row %d[%d]: got %q want %q", i, j, got[j], c.Want[j])
}
}
}
}
+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.161.0"
__version__ = "0.162.1"
# 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
@@ -233,7 +233,7 @@ def main() -> int:
)
check(
"Rune minor version advertises provisioning and restore verification",
'__version__ = "0.161.0"' in rune_version,
'__version__ = "0.162.1"' 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.161.0
Version: v0.162.1
Features: 41 (24 original + 17 new native commands)
Usage:
@@ -2037,7 +2037,7 @@ class RuneApp(App):
# Show version info
self.chat_channel.add_message(
"system",
f"[dim]Rune v0.161.0 | Textual TUI | {len(loaded)} native modules[/dim]",
f"[dim]Rune v0.162.1 | Textual TUI | {len(loaded)} native modules[/dim]",
)
# Auto-show night mode suggestion if evening/night hours