Phase G strangler slice 1: retrieval-index Rust candidate — qualification + shadow + authority switch #2447

Closed
opened 2026-10-02 15:40:56 +01:00 by conductor · 2 comments
Owner

CLOSED — all three remaining items delivered; the shadow evidence is fresh, not historical.

① Qualification (commit db373b1, contract BUILDER-2026-10-08T13:52:55Z-b0fc70 walked draft→closed): query_memory is now in ALL THREE rust build lists in ci.yml (rust-surface, the 183-line battery, the 326-line battery) + a dedicated shadow step — the candidate is observed through the required-check pipeline on every push.

② Shadow comparison — fresh, honest evidence: the original parity harness had rotted (it pointed at superseded src/rune/query_memory.py — comparing Rust against Rust). scripts/qm_shadow.py recovers the TRUE pre-shim Python oracle from git history (6f44a87~1:shared/query_memory.py — the exact commit that superseded it) and runs the frozen 24-command sequence through both implementations in isolated HOMEs:
24/24 commands exact-equal, history.jsonl + topic_stats.json byte-parity (timestamps masked per contract; topic_stats byte-diff catches float-repr divergence per the f64 shortest-repr law).

③ Authority switch — verified live in-tree: shared/query_memory.py is the AUTHORITY-SWITCHED shim (doctrine step 8): consumers call QueryMemory() unchanged and get the Rust core through the cdylib; the classification core lives in Rust; the Python implementation is preserved on branch phase-g-strangler-retrieval-index per deletion discipline (no silent fallback — a missing cdylib fails loudly). FFI smoke re-verified this session (classify/adaptive-rate/record/health through qm_loader).

Byte-parity laws held: json.dumps compact separators + ensure_ascii (history), indent-2 (stats), f64 shortest-repr, first-max tie-break, TOPIC_KEYWORDS insertion order — all pinned by the shadow.

CLOSED — all three remaining items delivered; the shadow evidence is fresh, not historical. **① Qualification** (commit db373b1, contract BUILDER-2026-10-08T13:52:55Z-b0fc70 walked draft→closed): query_memory is now in ALL THREE rust build lists in ci.yml (rust-surface, the 183-line battery, the 326-line battery) + a dedicated shadow step — the candidate is observed through the required-check pipeline on every push. **② Shadow comparison — fresh, honest evidence:** the original parity harness had rotted (it pointed at superseded src/rune/query_memory.py — comparing Rust against Rust). scripts/qm_shadow.py recovers the TRUE pre-shim Python oracle from git history (6f44a87~1:shared/query_memory.py — the exact commit that superseded it) and runs the frozen 24-command sequence through both implementations in isolated HOMEs: **24/24 commands exact-equal, history.jsonl + topic_stats.json byte-parity** (timestamps masked per contract; topic_stats byte-diff catches float-repr divergence per the f64 shortest-repr law). **③ Authority switch — verified live in-tree:** shared/query_memory.py is the AUTHORITY-SWITCHED shim (doctrine step 8): consumers call QueryMemory() unchanged and get the Rust core through the cdylib; the classification core lives in Rust; the Python implementation is preserved on branch phase-g-strangler-retrieval-index per deletion discipline (no silent fallback — a missing cdylib fails loudly). FFI smoke re-verified this session (classify/adaptive-rate/record/health through qm_loader). Byte-parity laws held: json.dumps compact separators + ensure_ascii (history), indent-2 (stats), f64 shortest-repr, first-max tie-break, TOPIC_KEYWORDS insertion order — all pinned by the shadow.

⚠️ Priority gate: this issue has no priority. Assign exactly one of P0 — critical (spine/correctness/blocks), P1 — high (material value or real defect), P2 — medium (quality/consolidation), P3 — low (measurement/deferred). An issue without a priority is not filed.

⚠️ **Priority gate:** this issue has no priority. Assign exactly one of **P0 — critical** (spine/correctness/blocks), **P1 — high** (material value or real defect), **P2 — medium** (quality/consolidation), **P3 — low** (measurement/deferred). An issue without a priority is not filed.
gitea-actions Bot added the custodianmemory labels 2026-10-02 15:41:00 +01:00

⚠️ Priority gate: this issue has no priority. Assign exactly one of P0 — critical (spine/correctness/blocks), P1 — high (material value or real defect), P2 — medium (quality/consolidation), P3 — low (measurement/deferred). An issue without a priority is not filed.

⚠️ **Priority gate:** this issue has no priority. Assign exactly one of **P0 — critical** (spine/correctness/blocks), **P1 — high** (material value or real defect), **P2 — medium** (quality/consolidation), **P3 — low** (measurement/deferred). An issue without a priority is not filed.
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: conductor/rune#2447