Compatibility changelog

Every time we tighten a rule, correct a spec, or trim the catalog we post it here. No silent changes.

  1. rule

    T-Type ecosystem now requires a SRAM UDH frame

    T-Type derailleurs attach direct-mount to a UDH dropout — no replaceable hanger. Builds with a T-Type RD on a non-UDH frame are now blocked (when the frame dropout is explicitly non-UDH), or warned (when the frame dropout is ambiguous). See AAA roadmap P1.1.1.

  2. rule

    Shimano Di2 and SRAM AXS are explicitly incompatible

    The engine now emits a hard error when a Di2 shifter is paired with an AXS derailleur (or vice-versa). Previously the two electronic protocol groups were separate and correctly caught by generic group-mismatch logic; this change locks the behaviour in with dedicated regression tests. AAA roadmap P1.1.3.

  3. rule

    Bare "straight-steerer" normaliser

    Frame rows carrying the generic "straight-steerer" value (no size) are now treated as straight-1-1/8 by the validator, unblocking fork selection on 12 affected frames (Canyon Grail family among them). AAA roadmap P0.1.1.

  4. scope

    Catalog locked to gravel-only

    21 MTB frames (trail, enduro, XC, downhill, hardtail) archived to frames_archive. Road / cyclocross filter options removed — the catalog never contained road or cyclocross rows. Mullet builds remain in-scope (gravel frame + MTB drivetrain). AAA roadmap P0.3.1, P0.3.2.

  5. data

    Canyon Grail steerer type corrected to tapered

    7 Canyon Grail variants in the catalog were tagged with the generic "straight-steerer" value but are in fact tapered. Rows corrected in migration 20260418100001. AAA roadmap P0.1.2.

  6. rule

    Anon UPDATE on components catalog revoked

    The legacy `Anon can update components` RLS policy is gone — only admin-authenticated API routes can now mutate component rows. RLS is also now enabled on cranksets, front_derailleurs, and frame_sizes. AAA roadmap P0.2.1, P0.2.2.