Step 3 · Engine-agnostic byte-equality
V1 NumPy and V2 cvxpylayers emit byte-identical violation strings.
Per D-050 (Vinh commit `9048573`), the V1 NumPy validator's `.to_text()` and the V2 cvxpylayers projector's `.to_text()` produce byte-identical violation strings modulo a single ENGINE header line. The test at `app/backend/tests/test_physics_v2.py::test_v1_v2_to_text_byte_equal_modulo_engine_line` is the production lock.
This is the engineering safety contract behind the pitch (per the new feedback_byte_equality_regression_guarantee_not_killshot memory rule; the pitch headline is the COA-bound adaptive-controls model in Step 4, not this regression guarantee). Granite Guardian audits the same text regardless of which engine produced it. Stage A (8-tier Pacejka) and Stage B (3-iteration SCP) are deferred per D-031 staged ladder via the `DifferentiableProjector` Protocol one-constructor-call swap.