iteration 04 · architecture

Three probes, one gate

One harness composing three pluggable axis-probes, one verdict. Not a monolithic score; not three disconnected scripts.

Execution = cost ladder (short-circuit)

1. parameterless  (static, FREE — no ClickHouse)   ── FAIL ─▶ STOP (feature-tunable veto)
        │ PASS
2. agnostic       (static no-dispatch + oracle)     ── FAIL ─▶ STOP
        │ PASS / PENDING
3. orthogonal     (full bigblack grid, EXPENSIVE)   ── consulted only now
        │
   ▶ promote = parameterless.PASS AND agnostic.PASS AND orthogonal.PASS

Running the FREE static axis first is what catches a feature-tunable knob before a single ClickHouse query.

Why not the alternatives

optionverdictreason
one monolithic scoreFAILaxes are different objects; a scalar can't express the rule (a tunable knob must veto a perfect orthogonal score)
three disconnected scriptsFAILthis is HOW the near-promotion happened — parameterless lived as detached "inspection"
one gate, three probe modulesPASSreattaches parameterless to the gate; one SSoT verdict; rule in one place
Migration (no big-bang): land probes+gate+registry (this PR) → register a 2nd reference impl per candidate (agnostic TEST B live) → bigblack orthogonality run feeds the gate → optionally wire into selection_finalize.py + a /3axis:* slash command. Architecture doc →