Commit5c632b2aRecorded24 Oct 2026Repositoryfolio

Document cold-fill checkpoints and their response-time limit

Changed
 CHANGELOG.md        | 1 +
 docs/shared-http.md | 9 +++++++--
 2 files changed, 8 insertions(+), 2 deletions(-)
Diff
CHANGELOG.mdmodified
@@ -12,6 +12,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
12
- Reduce JSON response encoding CPU with sigil-json's native string escaping. Require sigil-json 0.16.2 and sigil-mcp 0.18.4. HTTP tool replies remain JSON-RPC JSON documents and use chunked responses; stdio is unchanged.
13
- Skip unused snippets in note-list searches while retaining default search-index snippets, ranking and filters. Locate existing full-text rows by indexed literal name for updates, falling back to the previous scan for tokenless/missing names or lookup failure. Keep the existing schema and transactions.
14
- HTTP tools taking over ten milliseconds allow socket polling before response encoding with a one-millisecond cooperative pause; fast tools can reply immediately, and individual CPU-bound phases remain cooperative.
+15
- Add cooperative checkpoints during cold file-cache fills and task-block parsing, allowing independent HTTP reads while these tools populate their caches. Warm file-cache hits keep their direct path. Recheck file fingerprints after a pause before publishing a cached value.
16
17
## [0.3.3] - 2026-10-24
18
docs/shared-http.mdmodified
@@ -31,8 +31,13 @@ handlers are serialized through their index flush, including inbox reads that
31
may backfill ids. Other read tools do not enter that writer queue.
32
Tools taking over ten milliseconds allow socket polling before JSON encoding
33
with a one-millisecond cooperative pause; faster tools can reply immediately.
−34
Either phase can still delay peers
−35
while it uses the thread. Note listings skip unused full-text snippets, and
+34
Cold file-cache fills and task-block parsing also pause between work units
+35
after about ten milliseconds, so a first status, inbox or task-notes call can
+36
populate its caches while independent reads proceed. Cache hits bypass these
+37
checkpoints; a fingerprint recheck after a pause prevents caching a value
+38
whose file changed meanwhile. Individual native operations still occupy the
+39
thread until they return, so this is not a hard response-time bound.
+40
Note listings skip unused full-text snippets, and
41
updates locate existing full-text rows through their indexed names.
42
43
Note and project mutations use the cross-process SQLite store lock. Index