RED — 2026-08-29 Command: env PYTHONDONTWRITEBYTECODE=1 PYTHONPATH='dualcoach/profile:.' \ uv run --directory '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' \ pytest -q \ tests/test_nutricoach_v150_v15_safety.py::test_external_authority_transition_restores_predecessor_after_failure Result: FAILED tests/test_nutricoach_v150_v15_safety.py::test_external_authority_transition_restores_predecessor_after_failure Exact production failure: gateway/platforms/task26_runtime_authority.py:126 ValueError: runtime authority pin is stale Meaning: The post-promotion rollback restored the predecessor credential bytes but did not append a compensating predecessor QUALIFY event or regenerate the pin for the final external registry/ledger heads. Summary: 1 failed in 0.91s GREEN: Command: env PYTHONDONTWRITEBYTECODE=1 PYTHONPATH='dualcoach/profile:.' \ uv run --directory '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' \ pytest -q \ tests/test_nutricoach_v150_v15_safety.py::test_external_authority_transition_restores_predecessor_after_failure Result: PASSED tests/test_nutricoach_v150_v15_safety.py::test_external_authority_transition_restores_predecessor_after_failure Verified: - post-promotion rollback appends predecessor QUALIFY at N+2; - the final predecessor pin matches the final paired heads and event count; - production loader authorizes predecessor and rejects successor; - successor runtime and credentials are absent after rollback. Summary: 1 passed in 0.80s