Commit graph

1 commit

Author SHA1 Message Date
openresearch
d9e465fb91 feat: pipeline_core.py — module-swappable six-stage engine
Standard Filter interface: each stage is apply(configs, ctx) → configs.
Stages swappable without rewriting the pipeline. No floats (Q16_16 raw).
No native_decide.

Default stages:
  BraidStorm(k) → TreeBraid → AngrySphinx(budget) →
  MultisurfacePacker(surfaces) → COUCHFilter → SidonFilter

Swappable Sidon filters:
  - SidonFilter: CRT sum-based (chiral-invariant, proven)
  - DualQuaternionSidonFilter: dual quaternion product-based
    (chiral-discriminating — multiplication is NOT negation-invariant)

Usage:
  pipe = Pipeline([BraidStorm(k=8), TreeBraid(), ...,
                   DualQuaternionSidonFilter()])
  result = pipe.run(labels, S, moduli)

Or via CLI:
  python3 pipeline_core.py --filter crt   # CRT sum filter
  python3 pipeline_core.py --filter dq    # Dual quaternion filter

To add custom filter:
  class MyFilter(Filter):
      def apply(self, configs, ctx): ...
      @property
      def name(self): return 'MyFilter'
2026-07-04 20:43:27 +00:00