- decideExecutionPlan: implicit wide-blast reasons (missing base, diff failed, no changes, shared infra, unmapped package) route to new gate mode instead of full - CI===true force-full branch removed (CI no longer calls test-changed.mjs) - changed mode runs pnpm test:gate before the affected set - full suite reachable only via explicit --full / FUSION_TEST_FULL=1 - characterization tests updated + new only-explicit-full invariant test