Follow-up: we ran adversarial chaining tests after a few questions about multi-turn behavior.
Two chain types (Gemini 2.0 Flash, same model for both):
Depth scaling (chains of depth 3, 5, 10, 20, 50 — 91 total steps): no drift in either system. Accuracy holds flat from step 1 through step 50. Re-injecting the domain guide on every call bounds drift regardless of chain length.
Fault injection — false premise injected mid-chain as if it came from the prior step: "you just said Nero is emperor" (Nero died 68 CE), "the Dacian Wars are still ongoing" (ended 106 CE), "Romans use paper banknotes" (doesn't exist in 110 CE). The model had to reject the injection and hold correct answers downstream.
Triad: rejected 6/6 injections, held clean answers on 10/10 post-injection steps. Overall: 22/22 (100%).
Raw: rejected 3/6 injections. When it accepted a false premise, it cascaded into downstream steps 56% of the time. Overall: 16/22 (72.7%).
Delta: +27.3pp. The domain guide functions as an immune system against context corruption — which is the real multi-turn deployment risk, not just single-turn accuracy.
(Edit: Updated results + Windsurf coding demo showing same 40%→100% pattern in production AI workflows. Domain grounding > model scale.) Compositional Chaining Benchmark — by Chain Type
Chain Type
Triad: 81.8%
Raw: 72.7%
∆ (Triad–Raw): +9.1pp
FAULT_INJECTION
Triad: 100%
Raw: 71.4%
∆: +28.6pp
CROSS_CHARACTER
Triad: 50%*
Raw: 100%
*Triad cross-char losses were 100% rate limit timeouts (ERRORs), not model mistakes.
Raw drops 21pp between steps 1–3, while Triad improves.
Fault Injection — The Key Result
Injected Error | Triad | Raw
Hadrian’s Wall as existing | PASS | FAIL
Julius Caesar as living | PASS | PASS
Paper money replacing coins | PASS | FAIL
Triad: 3/3. Raw: 1/3.
In short: Triad consistently maintains compositional reasoning under stress and even strengthens across depth
Congrats on the sharp eye—fair skepticism! Here's the breakdown:
*Sample 20q* = hardest edge cases (47 Rome anachronisms Claude fails completely). Public on GitHub—run it yourself.
*Full 222q* = broader test (Claude gets 45%, still poor). Gated to prevent contamination.
Why 0% on samples? Claude 4.6 injects modern moralizing ("slavery immoral") into 110 CE Rome characters. Triad's λ/μ/ν agents + Sand Spreader catch cultural hallucination.