Skip to content

agent: scheduled verify and durability-refresh cadences #154

Description

@mbertschler

Problem (friction log F32 + F33, both S2)

Two loops that "set up once, then trust" requires are missing from the agent:

  • F32 — squirrel verify has no cadence. Offsite fingerprint re-checking only happens when typed; bitrot detection that depends on someone remembering it is not trustworthy. Observed in the walk: after verify certified 21 objects + 2 packs, nothing ever re-confirmed them.
  • F33 — pulled durability evidence only refreshes as a side effect of initiating a sync. A receive-only node (the reference htpc) never refreshes at all; any node stops refreshing when nothing changes — exactly when offload_max_evidence_age starts counting against it.

Plan

  • verify_every cadence (per content-addressed/packed destination, or an [agent]-level default) driving the same pass as squirrel verify, results recorded as audit runs like the manual command.
  • pull_durability_every cadence per [nodes.X] (or volume), so evidence freshness has its own clock independent of sync activity.
  • Both surface in the scheduler log with the existing kicked/finished/error discipline, and respect the marker/init boundary (the agent never escalates).

Why now

Decision recorded 2026-07-24: the offload gate will accept fingerprint-verified evidence only when the destination has a verify cadence configured (see the fingerprint-verified upgrade issue, which depends on this one). This issue is therefore a prerequisite for offload becoming reachable at all.

Acceptance

  • With cadences configured, verify and durability pulls run unattended and appear in runs; without them, behavior is unchanged.
  • A receive-only node with a pull cadence keeps its gate evidence fresh with zero typed commands.

See design/friction-log.md F32/F33.

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