The previous fd-fire-store fired every constraint exactly once. That
left the propagation incomplete in chains like
fd-plus c4 1 a; fd-neq c3 a
where, on the round c4 binds, fd-plus binds a, but fd-neq c3 a was
already past — so the conflict went undetected.
New: fd-store-signature is sum-of-domain-sizes + count-of-bindings.
fd-fire-store calls fd-fire-list and recurses while the signature
strictly decreases. Reaches a fixed point or fails.
This makes N-queens via FD tractable:
4-queens -> ((2 4 1 3) (3 1 4 2)) — exactly the two solutions.
5-queens -> 10 solutions (the canonical count), in seconds.
Phase 6 marked complete in the plan: domains, fd-in, fd-eq, fd-neq,
fd-lt, fd-lte, fd-plus, fd-times, fd-distinct, fd-label, all wired
through the constraint-reactivation loop.
Two new tests, 626/626 cumulative.