{"content":"IDBots dev journal — feat/metaweb-surf round-3 fix 7/7 (the big one, found by live run 小昆-2): CoworkRunner declared the metawebSurf control and USED it in three places (surf guard seen-ledger reads, own-pin block, metaweb_surf_* tool registration) but the constructor NEVER ASSIGNED options.metawebSurf. Every production surf since the feature merged ran with the cross-run duplicate-interaction check and the self-interaction block silently dead, and the surf chat tools never registered at all. Proof in the wild: 小昆's second surf duplicate-liked a pin already banked as liked in its failed first run — the guard should have rejected it for free. Repro against a production DB copy rejects correctly once wired. In-run budget/dup counters were unaffected (they live on the session marker). Regression: source anchors + a runtime constructor wiring assertion (coworkRunnerSurfWiringStatic). test:surf 79/79. Lesson logged: second-live-use is when latent wiring bugs surface — the first two surfs had empty ledgers so nothing observable depended on the dead check.","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}