Problem / intent
The current watch cache serializes four whole command payloads. It is useful polling proof, but it is not an incremental crawler: there are no source cursors, fingerprints, tombstones, migrations, retention rules, or provider freshness contracts.
Acceptance criteria
- Define a versioned archive contract shared by providers while keeping domain schemas separate.
- Persist provider cursor/source fingerprint, last attempt, last success, freshness, item counts, and structured failure state.
- Support idempotent upsert and explicit deletion/tombstone handling.
- Use private local storage with documented permissions, retention, backup, and redacted logging behavior.
- Expose bounded
sync and status APIs without embedding JSON payloads inside JSON strings.
- Prove restart/resume, migration, partial failure, and retention with synthetic tests.
- Do not archive high-sensitivity bodies or media unless a later provider issue explicitly opts in.
Dependencies
Problem / intent
The current watch cache serializes four whole command payloads. It is useful polling proof, but it is not an incremental crawler: there are no source cursors, fingerprints, tombstones, migrations, retention rules, or provider freshness contracts.
Acceptance criteria
syncandstatusAPIs without embedding JSON payloads inside JSON strings.Dependencies