repo-manager/docs/evidence/2026-10-04-freshness-coverage.md
tegwick e3940cdc26 Add read-only freshness coverage measurement and 2026-10-04 evidence
For STATE-WP-0094-T05: runner revision, active definition, per-repo Forge
commit, projection sync proxy, queued receipts and freshness window, with
explicit gaps and coverage holes. No writes to hub, cluster or Forge.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 671493@bnt-lap001
Assistant-Session: 60d7b11f-78f9-4731-9367-918511b2762d
2026-10-04 12:46:01 +02:00

4.2 KiB

Freshness coverage measurement — 2026-10-04

For STATE-WP-0094-T05 (freshness-coverage half). Raw data: docs/evidence/2026-10-04-freshness-coverage.json, produced read-only by uv run python -m repo_manager.freshness --out <file> at 2026-10-04T10:40Z.

Sources: State Hub REST (GET only) on the primary (instance_role=primary, railiance01, schema a0b1c2d3e4f5); git ls-remote against Forge; kubectl get (read-only); statehub outbox status. No workstation checkout was read (ADR-002). There were no writes to the hub, cluster, Forge or any checkout.

Required fields and what the sources supply

T05 field Result Source / gap
Exact runner revision No scheduled C-rule runner exists. Engine source HEAD a8184d5e14fb (repo-manager, not deployed: no repo-manager Deployment in the cluster). Adapter image state-hub:main-5dd3df9; scheduler image activity-core@sha256:75e240ac… kubectl, git
Active definition None active. Only C-rule definition live in activity-core/actcore-external-activity-definitions: state-hub-consistency-sweep.md (id 7c4e9a12-…, v1.1, enabled: false, status: paused, */15), paused by RMGR-WP-0005-T11. It is also the legacy --all --remote sweep path, which ADR-002 excludes kubectl
Per-repository source commit 141/141 active repositories resolved a Forge HEAD git ls-remote
Last successful receipt Gap. The hub does not persist projection receipts or expected/derived commits; rmgr sync returns the receipt only to its caller. Proxy: newest backing_synced_at per repository snapshot. This proxy shows that a sync happened. It does not show that the projection equals Forge HEAD hub snapshot
Failed / queued receipts Queued: edge outbox 0 pending / 0 conflict. Failed: gap. No sync/projection kinds in the mutation meter (1305 entries). /ops-runs/summary is unavailable (ACTIVITY_CORE_URL is not configured) statehub outbox, hub
Measured freshness window See below. The window is observed, not an SLA, because no schedule drives it hub snapshot

Coverage numbers (active repositories = 141 of 146)

  • Projection sync timestamp present: 136; absent: 5
  • Synced within 24 h: 35 (25 %); within 7 d: 120 (85 %); within 30 d: 124
  • Age of last projection sync (hours): min 0.2, median 109.2, p90 292.1, max 949.4 (~39.5 d)
  • Task dependency rows projected: 524. They were not reconciled by normal receiving; see the State Hub T05 note.

Explicit coverage holes

Measured now:

  1. access-engine: snapshot request timed out, so its freshness is unknown.
  2. clay-borg, pr-hall-of-helix, python-snake: 0 projected workplans and no sync stamp.
  3. repo-seed: 2 workplans, no backing_synced_at.
  4. Older than 7 days (16): railiance-forge, ralph-workplan, rapp-issue-core, rapp-sbom-nexus, repo-scoping, shard-wiki, target-revenue, tele-mcp, testdrive-jsui, timeline-svg (all ~949 h); tmux-amq (940 h); whynot-design (862 h); rapp-canned-prompts (625 h); rein-openweights, resource-control (292 h); railiance-enablement (243 h).
  5. All 141: projected commit is unknown, so Forge HEAD equality cannot be proven for any repository.

Historical registrar failures (kept as holes, not counted as covered):

  1. RMGR-WP-0005-T11: legacy sweep paused because railiance01 checkouts targeted the stale gitea-remote lineage. Nothing since has proved coverage for the repositories that sweep touched.
  2. RMGR-WP-0005 rail-kubernetes (2026-08-22): wrapper reported failed before file writeback. It was fixed in c90f701, but there is no later scheduled receipt.
  3. RMGR-WP-0019-T03 (wait): Activity receiving refused three empty duplicate projections; disposition is pending under STATE-WP-0095-T04 (decision 91b7c633-…).
  4. RMGR-WP-0014/0015: unknown aliases, same-parent UUID collisions and active unbound invalid records still refuse before writes. Any repository that hits these is unsynchronised by design.

Conclusion

No supported freshness schedule exists. The T05 freshness requirement is not met. Freshness depends on ad hoc syncs (25 % of repositories within 24 h), and receipts are not durable. Proposal: RMGR-WP-0020 (bounded Activity Core → Repo Manager runner). It is not enabled.