Umbrella compatibility view has diverged bidirectionally from Spine structural truth #416

Closed
opened 2026-09-25 13:27:34 +01:00 by conductor · 3 comments
Owner

CLOSED — the compatibility view is spine-GENERATED again, in both directions, with the repair runnable.

Measured drift this session went BEYOND the 2026-09-25 snapshot (35 relationships total): the spine had lost not only the construction pair but also 17 memberships the committed view carried (the loaders, lexicon_evolution, worthiness, grading, spine_language/loader, tui_transport, core_server, native_units, drift-ledger, ffi_query_memory_smoke) — regenerating would have silently dropped them.

Fix (commit 2c07573, contract BUILDER-2026-10-08T13:07:22Z-00d135 walked draft→closed):

  1. Spine is the authority — 35 belongs_to relationships in store/spine/current.json: 18 per-session closure modules placed by sibling affinity (abstraction_ladder/concept_topology/memory_types/experience_encoding/state_checkpoint → memory; evidence_capsule/research_budget → capability; execution_trace/pane_authority → orchestration; growth_pipeline/meaningful_events/outcome_utility/self_modify/skill_compiler → growth; self_model → identity; mutation_guards/paths → governance; inference_paths → inference) + the 17 fold-backs from the committed view's recorded assignments.
  2. main decision: EXCLUDED at the exporter — dunder modules are not umbrella-coverage surface; the gate's own rule (test_manifest_maps_every_module excludes canary_/test_/__-prefixed stems) settles it. Enforced in BOTH cores for parity: spine.py _py_export_umbrellas and the faithful Rust port (rune_spine/src/query.rs).
  3. Regenerated: config/umbrellas.json via rune.spine.export_umbrellas() — 187 modules mapped, generated marker carried, main absent, 0 unmapped, 0 phantom.
  4. Verified: tests/test_umbrella_impact.py 6/6 green; spine test family 113/113.

The view can now be regenerated by any consumer — hand-patching (the drift the marker warned about) is closed as a failure mode.

CLOSED — the compatibility view is spine-GENERATED again, in both directions, with the repair runnable. Measured drift this session went BEYOND the 2026-09-25 snapshot (35 relationships total): the spine had lost not only the construction pair but also 17 memberships the committed view carried (the loaders, lexicon_evolution, worthiness, grading, spine_language/loader, tui_transport, core_server, native_units, drift-ledger, ffi_query_memory_smoke) — regenerating would have silently dropped them. Fix (commit 2c07573, contract BUILDER-2026-10-08T13:07:22Z-00d135 walked draft→closed): 1. **Spine is the authority** — 35 belongs_to relationships in store/spine/current.json: 18 per-session closure modules placed by sibling affinity (abstraction_ladder/concept_topology/memory_types/experience_encoding/state_checkpoint → memory; evidence_capsule/research_budget → capability; execution_trace/pane_authority → orchestration; growth_pipeline/meaningful_events/outcome_utility/self_modify/skill_compiler → growth; self_model → identity; mutation_guards/paths → governance; inference_paths → inference) + the 17 fold-backs from the committed view's recorded assignments. 2. **__main__ decision: EXCLUDED at the exporter** — dunder modules are not umbrella-coverage surface; the gate's own rule (test_manifest_maps_every_module excludes canary_/test_/__-prefixed stems) settles it. Enforced in BOTH cores for parity: spine.py `_py_export_umbrellas` and the faithful Rust port (rune_spine/src/query.rs). 3. **Regenerated**: config/umbrellas.json via rune.spine.export_umbrellas() — 187 modules mapped, generated marker carried, __main__ absent, 0 unmapped, 0 phantom. 4. **Verified**: tests/test_umbrella_impact.py 6/6 green; spine test family 113/113. The view can now be regenerated by any consumer — hand-patching (the drift the marker warned about) is closed as a failure mode.
conductor added the featurescaffolding labels 2026-09-25 13:27:34 +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.

⚠️ 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 ready label 2026-10-01 19:43:37 +01:00

🎓 NEXT: #416 — Umbrella compatibility view has diverged bidirectionally from Spine structural truth — dependencies satisfied (closed: #2370); Rune may start.

🎓 **NEXT: #416 — Umbrella compatibility view has diverged bidirectionally from Spine structural truth** — dependencies satisfied (closed: #2370); Rune may start.
gitea-actions Bot added P0 — critical and removed bugfeaturelife labels 2026-10-08 15:20:34 +01:00
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: conductor/rune#416