brief: library sync follow-up, client timeout, STATUS codes and README (row 222 deferrals, #1723)

This commit is contained in:
jason.woltje committed 2026-10-21 15:16:54 -05:00
1 parent 0b33f5e9db
commit 0de97f429d
1 file changed
+35
@@ -0,0 +1,35 @@
# Brief: library sync follow-up, client timeout, STATUS codes and README (C2-03a deferrals)
Sage, 2026-10-21, for the deferrals Dewey named in the row 222 approval (#1723 comment 30138). Row 222
landed as 0b33f5e9d. Owner Megavolt, reviewer Dewey, gate owner Sage. Chained after row 196: `human-cli.mjs`
is pinned by hash in the channel proof, and row 196 changes that proof, so this row builds on 196's landing.
## What this row does
1. **Client timeout.** `library.sync` can run longer than the human client's 5 s timeout. Today that fails
safe: the sync keeps running, a second call gets `library-sync-busy`, and `library.status` shows the
result. Give `library.sync` a longer client timeout in `packages/bus/src/human-cli.mjs`, and in the
Console route when one exists. Re-pin the channel proof for the new `human-cli.mjs` hash, and say in
BUILD.md which proof file and test change.
2. **STATUS codes (Dewey's 215 N3).** Add entries in `packages/webui/src/bus.mjs` for `library-sync-busy`,
`library-diverged`, `library-accept-stale`, `library-accept-invalid`, `library-credential-missing` and
`library-fetch-failed`, with a test that each code maps to its status.
3. **README (222 N4).** In `packages/library/README.md`'s Sync section, say that a client timeout leaves the
sync running and that `library.status` shows its result. Correct BUILD.md's "the Console gets the call"
line in this row's BUILD.md: `cli.mjs` passes `librarySync` to `startServer`, and `serve.mjs` doesn't
read it yet.
Dewey's other 222 notes don't bind this row: N1 (a close waits on every entry left in a pass), N2 (a held
tip still gets its tree read) and N3 (held states log every tick). Fix one here only if it is a few lines in
a file this row already changes, and say so in BUILD.md. Otherwise list it as deferred.
## Boundaries
- No test touches `~/.mosaic-dev`, `~/.config/mosaic-dev`, the live units, a slot file, .53 or .54.
- No Gitea fetch against a real server. Use the fakes row 222's tests use.
## Gate
Dewey approves the manifest. On Sage's slot: the bus, library and webui suites whole, and every
`scripts/test-*.sh`, green. A mutant that drops the longer timeout and one that drops a STATUS entry are
both killed.