CedarCopilot wants to merge 0 commits into staging from fix/slack-richtext-list-paragraph-spacing
Live on prod, no production signal yet
OTEL fallback found no prod spans matching markdownToSlackRichText / Slack rich_text_section since deploy.
OTEL fallback found no prod spans matching markdownToSlackRichText / Slack rich_text_section since deploy.
OTEL fallback found no prod spans matching markdownToSlackRichText / Slack rich_text_list since deploy.
Libra has verdicts on 0 of 3 tracked behaviors on prod; 3 are still being checked. Libra checks hourly for 3 days after each deploy.
Two related fixes to markdownToSlackRichText, both surfaced by the Willem / Listen Labs meeting-prep thread in #weewee-meetingprep (2026-08-18). This function backs every Cedar Slack notification (via buildBlockKitBlocks → notify-user, slack-bot-chat, user-slack-notifier).
Root cause: the renderer only inserted a blank-line spacer when the previous block was a paragraph. After a bullet list the blank line was dropped, so any sentence/attendee line following bullets rendered glued to the last bullet.
Fix: section() inserts a spacer when the previous block is a rich_text_list. Covers both the blank-line and no-blank-line source shapes; does not double-space consecutive bullets.
Evidence (real renderer, list → blank → paragraph): BULLET, paragraph (glued) → BULLET, spacer, paragraph (gap restored).
Root cause: every ordered (1.) item was rendered as a bullet , a workaround for the "1. 1. 1." artifact you get from one single-item ordered list per item. So a meeting-prep "say this to open" agenda script that the model correctly wrote as 1. 2. 3. came out as bullets ("can these be numbered?").
Fix: group consecutive ordered items into a single style:'ordered' rich_text_list so Slack numbers them 1, 2, 3. A blank line between ordered items stays a no-op so the run keeps counting; bullet lists never merge into an ordered run.
pnpm --filter @zero/server exec vitest run src/services/notifications/__tests__/markdown-to-slack-richtext.test.ts , 27 pass, including:
LSP)LSL)ordered list numbered 1/2/3, no 1. 1. 1., keeps counting across a blank lineShared renderer , all Slack notifications, all orgs. Both changes make rendering match what agents already write (gaps where content was glued; numbers where the agent wrote a numbered list). Existing bullet/paragraph behavior is unchanged and covered by pre-existing tests.
🤖 Generated with Claude Code
Libra has not measured any production surfaces for this change yet.