I1306 — A sync resumes, repeats itself without harm, and says how fresh it is
Implement the sync: incremental from a durable checkpoint, idempotent on replay, bounded in what one run may fetch, and honest about how each change was acquired.
BLOCKED wave 4 · p1 · deep-work profile · runs alone
Blocked. This issue cannot start until I1303, I1305 are done. The status is derived from that, not declared.
Objective
Implement the sync: incremental from a durable checkpoint, idempotent on replay, bounded in what one run may fetch, and honest about how each change was acquired.
Why
Polling is not a subscription. A run that cannot resume will either re-fetch a whole workspace every time or silently skip what it missed, and a store that changes when nothing upstream changed cannot be diffed by anyone.
Current state
Nothing exists.
Desired state
A run reads its checkpoint, fetches only what changed, writes records that are byte-identical when nothing changed, records the acquisition mode of every change, bounds itself by count and by wall clock, and leaves a checkpoint an interrupted run can resume from.
Scope
- scripts/lib
- scripts
- test/cases
Out of scope
- Any write to the vendor
- Watch semantics that call polling a subscription
Dependencies
- I1303BLOCKED The store is bounded, measured and invisible to every published projection
- I1305BLOCKED An observed contract has a fingerprint, a compatibility state and a fixture
Acceptance criteria
- A second run over an unchanged workspace leaves the store byte-identical
- An interrupted run resumes from its checkpoint without re-fetching what it already had
- Every change records the acquisition mode that produced it, and a poll is never reported as a push
- A run is bounded by count and by wall clock and says what it did not reach
- Replaying a captured run over fixtures reproduces the same store
Validation
- bash test/run.sh
Evidence required
- idempotent_replay
- resumable
- acquisition_honest
- bounded
Evidence
None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.
Risk
Bounds that are too tight make the first sync of a large workspace impossible to finish; bounds that are too loose make a broken adapter expensive. Both are tuned against a measured first run, not chosen in advance.
Timeline
- started
- —
- verified
- —
- completed
- —
Those three fields, the evidence above and the state of the dependencies are all the status is made of. There is no status field to disagree with them.
Canonical record: .ai/repo/project/issues/I1306.yaml. Read it back with majordomus plan show I1306.