2026-09-08: Backlog lane added to the structured client lane. accounts.slack_backlog_channel_id (migration 046) = the branch {branch}-backlog Slack Connect channel; slack_channel_id stays the production lane. announcer_post.lane_for_project() picks ‘backlog’ iff projects.work_lane == ‘closeout’ (tracker-origin post-production work); F4 cert-sent (CertPanel “Post to backlog channel” → POST /portal/announcer/cert-sent) posts there with no cross-lane fallback (unmapped backlog = 409 + pocket alert). Channel uniqueness enforced across both lanes at read time. UP-owned closeout projects (PPDR-to-UP shape) resolve to their originating branch on the backlog lane. F1/F2/F3/F7 remain production-lane. Seeded JES Manassas → C0BTFVBCW77 (#manassas-backlog). Gate: announcer bot must be invited to manassas-backlog. entirely-api d4d39ee + b3777f7, entirely-portal e9d4e09.
2026-09-08 (later): F4 cert-sent is AUTO-POST — ruling amendment 3 (Dustin: “let’s automate the trigger”). cert_delivery_log.log_cert_delivery step 1c calls announcer_post.auto_post_cert_sent after every successful cert email (portal send, /cert/deliver, cert_gen approve+deliver, bulk, resends); lane by work_lane, unmapped lane = silent skip, mapped-but-no-link = pocket alert, 24 h Redis dedup (announcer:f4:{record_id}, fails open), never fails the send. Manual CertPanel button = “Re-post to (backlog) channel”. entirely-api a793d64, entirely-portal 6f8b61d. Bot is in manassas-backlog. Amendments section added to RULING_CLIENT_LANE_2026-08-30.md §7.