File added.
Preview size limit exceeded, changes collapsed.
Loading
New document addressing the scientist-reported concern that Qt data
structures are referenced in parameter extractions inside the
mr_reduction path, and that this propagation is at the root cause of
recurring defects. Conclusion up front: zero Qt imports in the
data_handling/ or mr_reduction/ trees, so no Qt *type* leaks into
the back-end. The coupling that scientists perceive is structural —
Configuration class-attribute globals, Qt signal timing, and a
4-deepcopy state pipeline whose class-attribute layer bypasses the
deepcopy isolation.
Structure:
§1 Four-layer pipeline diagram: Qt widgets → event handlers →
Configuration distribution → MRR invocation. Every step named,
with file:line citations.
§2 Qt widget → Configuration extraction code, showing that every
value is a Python primitive, not a Qt type.
§3 BinningType type-drift bug: two paths write different types to
the same attribute.
§4 Class-attribute-as-mutable-global analysis. Explicit git log
evidence (commit 0ff9dfe) that the pattern caused test-order
dependencies and was worked around by a test-only classmethod.
§5 Three patterns that produce the "Qt leaked into reduction"
perception without Qt types actually being imported:
A — widget-value extraction looks Qt-coupled in tracebacks
B — signal-triggered synchronous reduction (SEGV commit
21d4d91)
C — Qt event ordering + shared class state
§6 Git archaeology of 12 commits spanning 2024-04 to 2026-04
whose fixes trace to the parameter-propagation architecture.
§7 The _as_ints divergence — two local functions in one file
produce one-pixel-off parameter values between CSD and
NexusData reduction paths. Concrete example of the debt.
§8 Architectural recommendations in 7 tiers from cheap
(single _as_ints, 30 min) through invasive (reactive
configuration bus, 2-3 weeks).
§9 Out-of-scope items for follow-up.
This is the authoritative writeup of a concern that has come up
repeatedly in scientist discussions.
Co-Authored-By:
Claude Opus 4.7 (1M context) <noreply@anthropic.com>
File added.
Preview size limit exceeded, changes collapsed.