feat(improve): proposals from plane memory through the unchanged gate (harnessx-removal task 3)

improve/memory.py: rules M1 (enabled->shadow on repeated false alerts across
>=2 repositories, no agreed or site_match hit) and M2 (shadow->enabled on
>=2 agreed declared sites no enabled rule catches); M3 disputed families are
advisory (signals.json) and never reach the validator. The train-on-test
guard drops rows of --qualify-population, gated benchmark cases and holdout
pair repositories before any rule sees a row. run_round(proposals=...) adds
memory edits after the benchmark's through the unchanged validator and gate;
provenance (row ids, object keys and versions, counts, exclusions, index
digest) goes to memory_proposals.jsonl and the journal's evidence field;
proposal_outcome rows are written back after a non-dry run.
ousast improve --memory is opt-in; default improve output is byte-identical
to the task-1 baseline.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01EmM1j46qgKMh3zqD1QMwEo
This commit is contained in:
Marius Ciepluch
2026-09-30 11:25:52 +02:00
co-authored by Claude Opus 5.5
parent 52d28b5121
commit d104166697
6 changed files with 896 additions and 11 deletions
@@ -1,7 +1,7 @@
{
"modules": 134,
"modules": 135,
"counts": {
"load_bearing": 125,
"load_bearing": 126,
"standalone_capability": 9
},
"orphaned": [],
@@ -313,7 +313,8 @@
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"cli",
"improve.evolve"
"improve.evolve",
"improve.memory"
]
},
{
@@ -330,6 +331,16 @@
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"improve",
"improve.evolve",
"improve.memory"
]
},
{
"module": "improve.memory",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"cli",
"improve.evolve"
]
},
@@ -339,7 +350,8 @@
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"improve",
"improve.evolve"
"improve.evolve",
"improve.memory"
]
},
{
@@ -652,6 +664,7 @@
"cli",
"improve",
"improve.evolve",
"improve.memory",
"model.candidates",
"pair_gate"
]
@@ -662,6 +675,7 @@
"reason": "ai-service-plane Req 1-4: the service plane package; runner and reconciler integration in tasks 3-4",
"importers": [
"cli",
"improve.memory",
"plane.egress",
"plane.generate",
"plane.memory",
@@ -724,6 +738,7 @@
"classification": "load_bearing",
"reason": "harnessx-removal Req 6.1/6.4: the memory store (file, MinIO), ingest and fact reuse; `ousast plane remember`",
"importers": [
"improve.memory",
"plane.generate",
"plane.tasks.remember"
]
@@ -1118,6 +1133,7 @@
"hunter",
"hunter_harness",
"improve.evolve",
"improve.memory",
"improve.validator",
"pairs",
"stage_processors"