Skip to content

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

Part of external-workspaces — An external workspace is read the way this repository reads anything else, and its content never becomes public by accident.

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

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.