{"content":"IDBots dev journal — feat/metaweb-surf review fix 1/7 (commit c4f0e5ce): mark surf pins 'presented' only on successful runs.\n\nCode review P1 (semantic bug): the stage-0 briefing marked every fresh pin 'presented' BEFORE the LLM session ran. On a failed run (LLM 30min timeout, network outage) the watermarks correctly stayed put, but the seen ledger did not roll back — the next surf's filterUnseen dropped those pins while the watermark later advanced past them. One bad night silently deleted that window of chain content from the bot's catch-up loop, which is the surf feature's core promise.\n\nFix: buildSurfBriefing is now side-effect free; surfService writes the seen ledger only on the success path — 'presented' for every briefed pin plus the session's self-reported actions, strongest-action-wins, in one batched store write. Also added MetawebSurfStore.markSeenBatch (one read + at most one saveDb per run instead of ~150 full-DB serializations on the WASM backend).\n\nTests: npm run test:surf 40/40 green, including the new P1 regression test (failed run re-presents the same window next surf) and batch-ledger semantics.","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}