Skip to content

Implement expiry-safe replay sets #87

Description

@flyingrobots

Outcome

Provide an expiry-safe replay-marker policy surface with atomic add-if-absent, digest-only durable metadata, exact successor evidence, and expiry-only release.

Dependencies

Invariant impact

A live marker must not disappear before its admitted expiry through remove, repair, capacity, LRU, stale-writer, recovery, or GC paths. Duplicate admission must return exact existing evidence or a typed conflict.

Acceptance criteria

  • Marker identity is a typed domain-separated digest; plaintext security tokens never enter durable metadata or diagnostics.
  • Add-if-absent is atomic against one exact generation and refuses stale writers.
  • Expiry is supplied as validated policy evidence; the core owns no ambient clock.
  • No public remove, repair, capacity, or LRU path can release a live marker.
  • Release admits only a policy observation at or beyond expiry and publishes an exact successor.
  • Restart and reconciliation preserve every unexpired marker through all documented crash prefixes.
  • Model, concurrency, corruption, property, fuzz, and process-death tests cover premature-release attempts.
  • Receipts distinguish newly admitted, already present, expired and released, stale, unavailable, and corrupt states.

Non-goals

  • Authentication, authorization, or token validation.
  • Storing plaintext markers.
  • Sharing cache eviction mechanisms.
  • Claiming wall-clock truth beyond caller-supplied evidence.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:integrationEcho, Graft, and external integration boundariesarea:retentionRetention namespaces, roots, and generationsarea:verificationIntegrity verification and corruption posturekind:implementationProduction implementation workkind:testTest infrastructure or failure-mode evidencepriority:P2Should fix

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions