Skip to content

ltm: resolve cycle partitions for state-carrying module instances (Solo backstop under-merges genuinely-coupled module-internal-stock loops) #774

@bpowers

Description

@bpowers

Problem

The #750 fix (branch ltm-fix-batch-2, commit 03a9ec1f) stops None-partition loops from cross-normalizing by giving each one a singleton normalization group (NormGroup::Solo): sound, never pollutes, but it under-merges genuinely-coupled module-internal-stock loops. Two loops through SMOOTH instance A and SMOOTH instance B that share a parent path are genuinely coupled feedback in the same subsystem, yet each now normalizes alone -- both rel_loop_scores pin to sign-preserving +/-1, so their relative contributions cannot be compared even against each other.

The principled refinement (named and rejected-for-scope in the 03a9ec1f commit body): resolve partitions for state-carrying module instances instead of letting them fall to None:

  • treat the module instance as a partition node in the stock-coupling graph, and
  • map module-internal stock names (sub·stock) to the instance's partition,

so module-internal-stock loops land in the parent partition their instance participates in (or in a shared partition with their true siblings), and only genuinely-uncoupled loops keep the Solo backstop.

A further step composes with #773 / #749: treat PREVIOUS-holding variables as partition state nodes too, so lagged-state loops also get real partitions instead of Solo.

Why this is phase-sized (the honest assessment from the commit body)

Why it matters

Restores comparability of relative loop scores for module-heavy models (the exact value partition normalization exists to provide), where the singleton rule currently degenerates every module-internal loop to +/-1. Severity: low-medium; absolute scores unaffected, the Solo behavior is sound just uninformative.

Components affected

Cross-references

Discovery context

Named as the rejected-for-scope principled alternative in commit 03a9ec1f on ltm-fix-batch-2 (the #750 fix), 2026-06-09; filed so the refinement is independently trackable.

Metadata

Metadata

Assignees

No one assigned

    Labels

    ltmLoops that Matter (LTM) analysis subsystem

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions