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.
Problem (friction log F32 + F33, both S2)
Two loops that "set up once, then trust" requires are missing from the agent:
squirrel verifyhas 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: afterverifycertified 21 objects + 2 packs, nothing ever re-confirmed them.offload_max_evidence_agestarts counting against it.Plan
verify_everycadence (per content-addressed/packed destination, or an[agent]-level default) driving the same pass assquirrel verify, results recorded asauditruns like the manual command.pull_durability_everycadence per[nodes.X](or volume), so evidence freshness has its own clock independent of sync activity.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
runs; without them, behavior is unchanged.See
design/friction-log.mdF32/F33.