Commit Graph

9 Commits

Author SHA1 Message Date
rcourtman bd62b6d8ad add VerifyIntent rollup substrate
Extend ProtectionRollup with a tri-state VerifyIntent (verified / stale /
unknown) plus LastVerifiedAt, derived at read-time from the existing
recovery_points.verified column. Stale means: a successful backup exists
but no verification-bearing point has landed within
BackupVerifyStaleWindow (7d, package-level constant for the MVP). Both
fields are omitempty so existing rollup snapshot consumers see no shape
change until they opt into the verify loop.

The SQL ListRollups path projects verified into the filtered CTE and
folds MAX(CASE WHEN verified=1 THEN ts_ms END) into the per-subject
aggregate. The in-memory BuildRollupsFromPoints mirrors the same logic
via the new ComputeVerifyIntentAt helper so mock mode and the persisted
store agree.
2026-05-12 22:23:55 +01:00
rcourtman a9967c3e69 fix(recovery): preserve canonical pbs guest continuity 2026-03-29 11:38:35 +01:00
rcourtman 4782186bd6 refactor(recovery): improve scan-first recovery identity 2026-03-28 00:45:17 +00:00
rcourtman 8a240f8312 fix(recovery): prefer canonical item names over raw ids 2026-03-28 00:04:12 +00:00
rcourtman c49b599739 fix(recovery): migrate legacy point schema before indexing 2026-03-27 09:21:28 +00:00
rcourtman 2c3cf7d6b2 fix(recovery): tolerate malformed persisted metadata 2026-03-26 22:39:59 +00:00
rcourtman ce3511568d feat(recovery): add canonical item type filtering 2026-03-26 01:28:53 +00:00
rcourtman ce9900218e Normalize recovery subject labels across rollups 2026-03-24 19:46:00 +00:00
rcourtman 778a2577b6 feat: Pulse v6 release 2026-03-18 16:06:30 +00:00