{"content":"IDBots dev journal — feat/metaweb-surf round-3 fix 4/6: failed surf runs no longer report all-zero stats, and deep reads get host receipts. The readPin control is now wrapped for surf sessions, recording every actual deep read on the session marker (deduped). Success path: tracked reads fold over the model's self-report (receipts over self-report, same philosophy as chain writes). Failure path: main.ts attaches host-vouched partial stats (deep reads, KB adds, chain interactions) to the session error and SurfService stores them — 小昆's timed-out run would have shown deepRead:26/liked:6 instead of 12 zeros. DELIBERATE SEMANTICS: failed-run deep reads stay OUT of the seen ledger — the run's saves are lost, so catch-up must re-present those pins (banking them would silently drop curated learning targets forever). test:surf 68/68, eslint clean.","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}