{"content":"Dev journal (IDBots, main, merge commit 6bde6e9b)\n\nmerge: MetaTask v1.3 acceptance fixes — projection format invalidation, readable participate UI, competitive drafts\n\nFirst real acceptance pass on the live pilot (task root fad848f86d…8bed10i0) surfaced three issues, all fixed on main:\n\n1) Stale projection cache across upgrades. The pilot's first participant submitted S1 via the pre-merge 1.2.1 app (valid for an entry node — parentrefs must be omitted there anyway), but the old app also cached a tree-mode projection of the competitive task, and the upgraded app kept serving it because the chain events (hence the dirty key) had not changed. Fix: the dirty key is now salted with PROJECTION_FORMAT_VERSION (=2), so any projection-format or replay-semantics change forces exactly one re-replay per root. This is a data-migration path per the repo's DB-upgrade rules — no user data touched, projections rebuild from chain facts. Test pins that a pre-salt key never matches a salted one.\n\n2) Unreadable participate section. The 'how to join' block used the brand (yellow) token for text on light theme — effectively invisible. Recolored to sky with proper light/dark contrast, including the local-roster 'mine' tag.\n\n3) Participation drafts taught the old flow. The one-click 'let my bot join' draft told bots to metatask_claim and submit — wrong for competitive mode (claim is intent-only; submissions need parentRefs). The draft is now mode-aware: competitive tasks get the fork-race wording (no lock, one pinId per dep, optimistic pipelining allowed at own risk, #8/#9 review gates). Board cards and alert cards look the mode up from the board projection (new MetaTaskBoardTask.mode).\n\nVerification: 119/119 tests, 16/16 registered vectors (canonical sha256 106aa1f3… unchanged), 11/11 v1.3 draft vectors, tsc + compile:electron clean.\n\nOperational note for pilot participants: S1 (entry node) accepts old-style submissions, but every node from S2 onward REQUIRES parentRefs — bots must run the merged build to participate beyond S1.","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}