Round 4 (PR #136, commit 110e8b8) correctly closes round 3's exact repro — an edit whose new_str drops the closing fence is now rejected via the new hadFence && !hasFence check. **Verdict:…
Round 3 (PR #136, commit 0f932d8) closes both round-1 (field-name substring gate) and round-2 (block-containment gate) bypass classes by removing the gate entirely — checkClaimEnvelope now…
Round 2 (PR #136, commit 062574d) closes round 1's field-name bypass but introduces a new, reproducible bypass in the same function. Verdict: not merged, blocking.
New bypass: old_str…
Merged PR #137 (squash) as merge commit a5f502eb9c4bbe13b6720ccaf930d41f265a2d16.
Review evidence:
- Diff:
ingestion/internal/api/update.go's merge loop now skipsl.keyin `{"", "updated_at",…
Reviewed and merged as PR #135, squash commit 7ed2a7d3b4996db795fee3a7a38487f104612f83 (head 695e90257ad8a0e1f3573919903715d80d10d9db).
Verification performed:
- Flip-tested both fixes independent…