Skip to content

m8.4: Complete automatic feeder inference

Choose a tag to compare

@WilliamSmithEdwardSandbox WilliamSmithEdwardSandbox released this 15 Jun 04:56

Makes the automatic feeder inference (ADR-0005) complete for the rule patterns the original cut missed, from a feeder-focused adversarial review. No computed value is affected: cell reads always use the dense, always-correct consolidation, so feeders are an optimization and a diagnostic, never the read path.

What's improved

  • Chained rules are fed: a rule that reads another rule's derived output is now fed (inference is a fixpoint over "potentially non-zero" leaves, seeded by stored cells).
  • Consolidated inputs feed via their contributing leaves.
  • Multi-element target areas with a pinned input feed every target leaf (previously rejected as un-analyzable).
  • Base contributions (a non-zero constant or attribute term, including inside a conditional branch) feed the whole target area, since such a rule is non-zero everywhere regardless of input population. Closes the constant/conditional under-feed.
  • Validation false-negative fixed: a rule is a pure consolidation override only when its area selects no leaf coordinates, so a mixed-target rule (e.g. {descendants of Total}) keeps its leaf targets validated -- an under-feed there is no longer silently skipped.

Unchanged by design: cross-cube-only rules remain reported as opaque (non-localizable) rather than guessed at, and the inference stays a sound over-approximation (it never under-feeds an analyzable rule; at worst it over-feeds, which is a warning). One consolidated input's expansion is bounded so inference cost stays bounded on pathological hierarchies.

Quality

  • New unit tests for chained rules, consolidated inputs, multi-element targets, the base-potent constant/conditional cases, and the mixed-target validation.
  • Hardened across two adversarial review rounds (the second re-reviewing the rewrite itself for soundness, termination, and regressions). Full workspace green, clippy + fmt clean.