From 4ec6ac791f4d861dc2299ef4e480faeab0a2af94 Mon Sep 17 00:00:00 2001 From: dietrich ayala Date: Thu, 13 Aug 2026 23:11:27 +0200 Subject: [PATCH] docs(sync): record starred and archived as declared-but-unsynced --- docs/sync-coverage-gaps.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/docs/sync-coverage-gaps.md b/docs/sync-coverage-gaps.md index e9aaea39..17316523 100644 --- a/docs/sync-coverage-gaps.md +++ b/docs/sync-coverage-gaps.md @@ -73,6 +73,21 @@ Consequences, in rising order of cost: declaring it. The current state — declared, indexed, unimplemented — reads as working to anyone who checks the schema instead of the code. +### `starred` and `archived` are the same shape of gap + +Both are `"sync": true` on `items` in `packages/schema/v1.json`, and neither appears +in the body `sync.ts pushSingleItem()` builds or the columns `mergeServerItem()` +inserts. Until the MCP work added them, the server had no column to receive them +either. + +So a starred item is starred on one laptop only, and archiving something on one +device leaves it unarchived everywhere else. Lower stakes than the event tables, and +the same root cause: the schema's `sync` flag describes an intention that the sync +engine was never made to honour. + +**Settled by:** carrying both in `pushSingleItem()` and `mergeServerItem()`. The +server columns now exist, so this is the smaller half of the change. + ## 3. Tag metadata is local-only `tags` marks `slug`, `color`, `parentId`, `description`, and `metadata` -- 2.51.2