Skip to content

fix: preserve tag revisions, retry marker purges and enforce header deadlines - #196

Merged
Vonng merged 6 commits into
mainfrom
codex/merge-r4-r8
Sep 15, 2026
Merged

Vonng merged 6 commits into
mainfrom
codex/merge-r4-r8

Conversation

@Vonng

@Vonng Vonng commented Sep 15, 2026

Copy link
Copy Markdown
Member

Summary

Complete the R4–R8 repair set on top of R4 (#193) and R7 (#194), which are already in main:

  • R5: Deleting tags advances their revision. COPY, PUT, multipart completion, retries and source acknowledgments preserve that revision so an older replication event cannot restore deleted tags.
  • R6: Classify legacy delete-marker purge retries correctly, recover markers through MRF, preserve creation/replica metadata during purge updates, and retain retry budgets and per-target outcomes.
  • R8: Bind the configured read-header timeout and enforce its absolute deadline. Body transfers retain the existing rolling idle timeout; keep-alive, TLS, HTTP/2 and internode behavior have focused coverage.

Each repair was planned and checked with the environment's actual Opus 5.0 before implementation. A separate claude-opus-5 --effort max integration review found zero blocking findings. The original review, dispositions, source hashes and local logs are archived in the integration report.

Validation

  • make verifiers, make build, and ./silo --version: passed.
  • Complete go test -p 2 ./cmd ./internal/... -count=1 -timeout=30m: passed (50 tested packages).
  • Focused race tests for the changed cmd/deadlineconn/http behavior: passed.
  • The actual built server rejected delayed headers under both CLI and environment timeout configuration and remained healthy.
  • Independent R5/R6/R8 integration checks and source-equivalence checks: passed. DCO sign-offs preserve original authorship and cherry-pick provenance.

Local validation used commit 80684fed59f556d579e268c5a855d936c1347b68; the subsequent commit adds only the integration report and evidence. Final PR CI covers the submitted head, including Linux-only tests and cross-compilation.

Compatibility and scope

No dependency or storage-format change. The compatibility inventory adds only an existing replication ARN prefix used by a new test fixture. Purge audit status is normalized from COMPLETE to COMPLETED; a short configured read-header timeout also limits TLS handshakes, as net/http specifies. Historical malformed tag revisions remain fail-closed; resync may send an additional metadata COPY for a version carrying a tag revision.

The report records remaining historical-data and multi-site acceptance boundaries. This change completes the main-branch repairs; release, deployment and R9 remain separate work.

Persist, send and reconcile empty tag states together with their revision
across COPY, PUT and multipart replication. Advance local tag mutations
under the existing locks and preserve current tags during replication ACK.

Cover signed HTTP, persistent single/multiple pool state, KMS, SSE-C key
rotation, ordering, retry and duplicate requests. Record real Opus plan
consensus, implementation review and local verification evidence.

Signed-off-by: Feng Ruohang <rh@vonng.com>
(cherry picked from commit 115fe8b12329d147adbaf817faa1737392ecbf9b)
Signed-off-by: Feng Ruohang <rh@vonng.com>
(cherry picked from commit cf381a7151ef25fc95ace5fedcd767fa19410de2)
Signed-off-by: Feng Ruohang <rh@vonng.com>
(cherry picked from commit d38edb2c46182d3a8fa96e040604493d20a4b478)
Signed-off-by: Feng Ruohang <rh@vonng.com>
Signed-off-by: Feng Ruohang <rh@vonng.com>
(cherry picked from commit 0d48d32d7e038ae1ea5966f3d7e0cb86780a6311)
Signed-off-by: Feng Ruohang <rh@vonng.com>
Use the actual author and AGPL-3.0-or-later notices for new R6/R8 tests, preserving all test bodies and the Linux build tag. Record the existing replication ARN prefix used by the new R6 fixture in the compatibility inventory; no wire behavior changes.

Signed-off-by: Feng Ruohang <rh@vonng.com>
Signed-off-by: Feng Ruohang <rh@vonng.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant