FIXTURES (all run from the bundle directory; each asserts, exit!=0 on failure)
1. fixtures_missing_branch.py   deletes a required bundle association;
   EXPECT exit 2 + "incomplete branch coverage" refusals.
2. fixtures_reverse_gensets.py  reverses every GeneralizationSet array;
   EXPECT byte-identical normalized CONTO and SQL, both models.
3. fixtures_ambiguous_side.py   adds a second on-spine side relation;
   EXPECT exit 2 + "ambiguous DEMAND SIDE".
4. fixtures_irrelevant_side.py  adds an off-spine BackendCode class;
   EXPECT exit 0, 17/0/0, MF_01 = Performance Right/Right, no Fake in SQL.
5. fixtures_projection_lint.py  every derived-table column referenced is
   projected; EXPECT PASS on both archived deploys.
6. fixtures_invalid_sidescope.py  SideScope=Bogus must be refused.
7. fixtures_evidence_resolution.py every EVIDENCE atom resolves in-model.
9. fixtures_profile_portability.py  foreign IDs + declarations; no cross-load state; dup/unknown/missing refused.
10. rename_harness_v2.py <model> id-keyed rename; EXPECT MATCHER+GEN PASS.
Python kernel (both models):
   python3 pykernel_v1.py cofris_case4_compiled.conto out1.md
   python3 pykernel_v1.py cofris_v12_compiled.conto  out2.md
   EXPECT ACCEPTANCE PASS, 21 rows byte==journal_control_case.md,
   asserted refusals 51203 + 51227(Receipt@Obligation) + 51227(Transfer@Right).
7b. fixtures_missing_side.py  removes the only eligible side relation;
   EXPECT exit 2 + "no eligible DEMAND SIDE" gap + SQL generation refusal.
Side policy: legitimately side-independent dispatches carry SideScope=Any
(declared on Service LER in both models); every other missing side is a
compilation gap.
