Skip to content

Reduce immutable publication latency below the 30-minute freshness budget #190

Description

@beepboop2025

Problem

The evidence wire is collected every five minutes, but the single-writer immutable publication cycle currently takes about 25 minutes. A completed edition therefore activates with a wire snapshot already about 25 to 30 minutes old and can remain served until the next cycle completes.

For a five-minute capture interval and a serial back-to-back publisher, continuous 30-minute semantic freshness requires approximately:

capture age + 2 x build duration <= 30 minutes

That means the full build must be below roughly 12.5 minutes.

Safety constraints

  • keep the 30-minute freshness endpoint fail-closed
  • do not recopy only the wire near upload because newsroom, situation, rights, manifest, and release identities must stay causally bound
  • do not run concurrent publishers because receipts, rollback identity, shared resources, and memory are single-writer
  • do not raise the budget and call it a freshness improvement

Work

  1. Add monotonic per-phase timing receipts.
  2. Profile newsroom rendering and its independent check.
  3. Profile recursive rights staging, checking, and bundle construction.
  4. Remove duplicated safe work while preserving independent gates and exact manifests.
  5. If P95 cannot fall below 12.5 minutes, design a separately sealed fast-wire edition with its own narrow manifest, rights receipt, attestation, and deployment route.

Acceptance

Either:

  • three consecutive back-to-back production cycles keep the published wire clock within 30 minutes and P95 full-build time below 12.5 minutes; or
  • a reviewed fast-wire architecture meets the same semantic freshness budget without weakening rights, provenance, rollback, or single-writer safety.

Repository Actions are currently disabled. Do not re-enable Actions or create paid deployment activity without explicit owner authorization.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions