Suite revue adversariale MERGE-READY (« non-bloquant ≠ oublié », Dom) :
1. Contrat crop CORROMPU figé par test : `materialize_anchor_from_b64` retire la
clé `_anchor_image_base64` de params AVANT le try (pop). Un crop inexploitable
(b64 invalide, PNG au magic cassé) → pas d'exception, anchor_id NULL, aucun
VisualAnchor, ET clé retirée (pas de donnée morte volumineuse dans les params).
3 cas paramétrés verrouillent ce comportement assumé. Docstring clarifiée.
2. `workflow_id` réintroduit dans le sidecar metadata.json (parité avec la route
d'origine avant refactor). Nouveau paramètre optionnel du helper, passé par les
deux appelants live (route HTTP + bridge R1). 2 tests : présent quand fourni,
absent sinon (pas de clé None parasite). Backfill inchangé (workflow_id optionnel).
TDD : +5 tests. 29 tests unit VERTS, 0 régression.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>