Commit Graph
6 Commits
Author SHA1 Message Date
Nick 29e7947282 feat(audit): FULL-based headline per Nick directive — progress measured in finished modules
CI Pipeline / documentation (push) Successful in 8s
CI Pipeline / best-practices (push) Successful in 8s
CI Pipeline / rust-surface (push) Failing after 13s
CI Pipeline / go-surface (push) Failing after 16s
CI Pipeline / gitea-offline (push) Successful in 17s
CI Pipeline / required-checks (push) Canceled after 0s
CI Pipeline / CI Pipeline / notify-event-bridge (push) Canceled after 0s
CI Pipeline / lint (push) Canceled after 35s
CI Pipeline / unit-tests (push) Canceled after 35s
CI Pipeline / canary (push) Canceled after 36s
CI Pipeline / type-check (push) Canceled after 30s
Auto-version and Release / release (push) Canceled after 39s
deploy / deploy (push) Canceled after 26s
Headline is now module-based: FULL/total (22% — 43/192), function-level
demoted to secondary detail. Mixing complete and in-flight work in one
number flatters progress; FULL is the only honest denominator.
PARTIAL rising is the funnel filling (NOT TOUCHED -> PARTIAL on landing),
not completion stalling — FULL went 42->44 in the same window.
2026-10-13 05:33:46 +01:00
Nick 2c2b2b5a16 fix(audit): concatenate Go+Rust corpus per module (no side shadowing) + classify *_loader family and ffi smoke harness as FFI machinery
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 39s
CI Pipeline / canary (push) Canceled after 43s
CI Pipeline / go-surface (push) Canceled after 43s
CI Pipeline / best-practices (push) Canceled after 43s
CI Pipeline / lint (push) Canceled after 43s
CI Pipeline / rust-surface (push) Canceled after 52s
CI Pipeline / unit-tests (push) Canceled after 52s
CI Pipeline / documentation (push) Canceled after 52s
- verification_layer was miscounted NOT TOUCHED: the Rust stub crate
  shadowed the full Go port in the corpus. Concatenate both sides.
- The *_loader family is the programme's own ctypes delegation glue
  (strangler-fig stage-3 burn, same category as dunders) — machinery,
  not port surface. ffi_query_memory_smoke is a smoke harness (TEST).
- Honest counts: 46% (1083/2366) | 40 FULL | 98 PARTIAL | 54 NOT TOUCHED.
2026-10-13 00:08:35 +01:00
Nick c0ec3135c6 feat(drift_ledger): port remaining cores to FULL Rust — dichotomy wave
DICHOTOMY VERDICT (dichotomy law, #2479 tranche): drift_ledger's
deterministic cores complete their Rust port in src/rust/drift_ledger —
the check() alert loop (anchor-vs-snapshot baseline, the constitution's
ANY-content-change strict check, max(prev_size,1) floor, pct/limit
round-3 with Python ties-to-even semantics, root-cause diff per alert),
snapshot/anchor entry assembly (size = the oracle's len() CHARACTER count),
the auto-fix routing and the retroactive fix() gate. SQLite store IO
(read_block/restore_topic) and file IO (load/save ledger, journal,
surface_alert) stay facade seams by design — the clock travels in the
doc envelope.

Wiring: dl_loader.py grows dl_ledger_path/dl_snapshot_entry/
dl_anchor_record/dl_check_alerts/dl_fix_decision (doc-envelope FFI,
oracle-verbatim dict unwrap, free via capability_scoring cs_free_string
— no free symbol re-export); facade delegation in drift_ledger.py with
the RUNE_DL_CORE=python pin and byte-identical python fallbacks.

Truth: scripts/gen_drift_ledger_truth.py freezes 87 cases from the live
oracle across EVERY public function and branch (sha, diff caps/truncation,
ledger path joins, load/save ledger bytes, store read filters and order,
journal/surface_alert file formats, snapshot/anchor/check/auto_fix/fix
end-to-end flows with frozen clock, restore_topic directive preservation
+ priority map, handle_hook, main CLI exits, and the kernel-level
k_snapshot/k_anchor/k_alerts/k_auto_fix/k_fix groups) — battery 8 tests
replay it VERBATIM; live parity 87/87 byte-identical under RUNE_DL_CORE=auto.

Audit instrument fixes (bug-first, with proof): module_to_keys now maps
hyphenated legacy twins to their underscore implementation (drift-ledger.py
— the same ledger — was scored NOT TOUCHED against an empty corpus) and
curator gains its curator-core alias (a FULL Go port since a95c6ce1 was
invisible to the audit). Honest post-fix queue: curator 40/43 FULL,
drift-ledger 14/14 FULL, drift_ledger 20/22 FULL; function-level
1020/2781 (37%), FULL 36 PARTIAL 93 NOT TOUCHED 108.
2026-10-12 14:33:28 +01:00
Nick 4649df1ccc feat(construction_patterns_builtin): port to FULL Rust — dichotomy wave
RUST verdict (dichotomy law, #2479 tranche): construction_patterns_
builtin.py's registry surface is ported to src/rust/construction_
patterns_builtin — the four builtin pattern docs (capability-module-
adaptation, release-deployment-change, ui-tui-structural-change, store-
schema-evolution) served verbatim from frozen_cpb_patterns.json (deep-
copied from the live oracle's to_dict() output incl. __init__-sorted
provenance order), PATTERN_REGISTRY_REVISION, and get_pattern's full
branch set (hit per pattern_id, unknown/empty-id miss -> None, revision
match passthrough, revision mismatch with the oracle's exact ValueError
message).

Wiring: cpb_loader.py ctypes loader mirroring cs_loader.py/broker_
loader.py (doc-envelope FFI cpb_registry_revision/cpb_patterns/cpb_
get_pattern, free via capability_scoring cs_free_string — never
re-exported, CPB_RUST_LIB override), facade delegation in construction_
patterns_builtin.get_pattern with RUNE_CPB_CORE=python fallback pin and
strangler fallback to the Python registry when the .so is absent.

Truth: frozen_cpb_truth.json — 17 cases from the live oracle (deep-
copied inputs, RUNE_CPB_CORE=python pinned, every public fn and every
branch incl. all four patterns and the revision-mismatch raise),
replayed VERBATIM by the in-crate cfg(test) branch battery. Live parity
check (scripts/check_cpb_parity.py): 16/16 facade + kernel-surface
cases. clippy: 0 warnings. Consumer suites green (test_construction_
pattern 30, project_build_lifecycle, provider_ownership).

Audit fix (fix-first with proof): dichotomy_audit.py now aliases
curator -> curator-core (ported FULL Go in a95c6ce1 but mislabeled NOT
TOUCHED — the alias was missing from module_to_keys). Regenerated
audit: curator 40/43 FULL; function-level completion 34% -> 36%.
2026-10-12 14:25:29 +01:00
Nick 55ad089c3f feat(spine): port to FULL Rust — dichotomy wave
CI Pipeline / documentation (push) Canceled after 0s
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
CI Pipeline / best-practices (push) Canceled after 3s
CI Pipeline / rust-surface (push) Canceled after 13s
Auto-version and Release / release (push) Canceled after 19s
deploy / deploy (push) Canceled after 20s
CI Pipeline / go-surface (push) Canceled after 16s
CI Pipeline / canary (push) Canceled after 16s
CI Pipeline / unit-tests (push) Canceled after 21s
CI Pipeline / lint (push) Canceled after 21s
Facade kernels ported to the rune_spine Rust core (RUST verdict, issue
#2479 tranche, contract BUILDER-2026-10-11T08:06:21Z-1a7a76-factory-wave):
- sf_sorted/sf_save_text/sf_entity/sf_declared_surfaces/
  sf_project_meta_surfaces/sf_ingest_umbrellas_data FFI via doc-envelope
- facade delegation wired (RUNE_SPINE_CORE=python pins the strangler
  fallback; entity returns the live dict to preserve mutation semantics)
- REAL divergence fixed pre-wiring: the Rust ingest refusal message was
  missing the oracle's exact text; battery caught the save redaction
  boundary (spine.save does NOT redact — that is structural_store.save)
- battery: 26 frozen-oracle cases replayed verbatim in-crate (45/45
  crate tests, clippy clean); live parity 26/26 vs the Python oracle
- 135 spine-adjacent Python tests green (delegation live); pinned
  fallback mode identical to pre-batch behavior
- dichotomy audit: spine 5/30 -> 20/35 functions matched (rune_spine
  crate registered in the alias table)

Dichotomy verdict: spine PARTIAL — pure kernels Rust-authoritative;
gather/IO and _py_* fallback oracles stay Python by the zero-dep split law.
2026-10-11 10:17:46 +01:00
Nick 40a2f58fad feat(scripts): dichotomy_audit.py — standing function-level completion instrument
Replaces the one-off audit with a re-runnable instrument: per-module AST function extraction, name-preserving matching against Go/Rust sources, FULL/PARTIAL/NOT-TOUCHED verdicts with missing-function naming. Current honest measure: 13% function-level (290/2225 fns; 7 FULL / 50 PARTIAL / 121 NOT TOUCHED) — the true queue, regenerated with --write after every wave.
2026-10-07 10:27:53 +01:00