CedarCopilot wants to merge 0 commits into staging from fix/slack-single-tilde-strikethrough
Live on prod, no production signal yet
Strict CloudWatch fallback found 5 recent prod failure log lines for [backfillSlackChannelHistory] Backfill failed (Superglue workflow failed: fetch failed), but the same failure had 4 log lines in the comparable pre-deploy baseline. Libra is not blaming this PR intent without.
Libra has verdicts on 0 of 1 tracked behaviors on prod; 1 is still being checked. Libra checks hourly for 3 days after each deploy.
A Greptile/Jihoon meeting prep in Slack rendered a whole sentence with a strikethrough through it. The struck span started at $3K and ended right before 2 , the tell.
The agent wrote two approximations using a leading tilde: ~$3K and ~2 (tilde = "approximately"). It did not write any strikethrough.
This is not a remark-gfm issue (that's the web app). Slack prep is built server-side by Cedar's own converter markdownToSlackRichText → parseInline, whose inline tokenizer deliberately supported single-tilde strikethrough (~strike~, Slack's native syntax). The two stray single tildes got paired, striking everything between them.
~~strike~~); a lone ~ is left literal.Single-tilde strike is vanishingly rare in agent output; single-tilde "approximately" (and ~/path, ~5%) is common , same tradeoff as remark-gfm's singleTilde: false.
~strike~" assertion with double-tilde-only.~$3K … ~2 that asserts nothing is struck and both literal ~$3K/~2 survive.21/21 tests pass in markdown-to-slack-richtext.test.ts; edited file typechecks clean.
The sister converter convertMarkdownToSlackMrkdwn (utils/slack-mrkdwn.ts) is untouched , it has no tilde rule and only produces the plain-text fallback string, not the visible rich_text blocks. That lower-traffic raw-mrkdwn path (fallback/overflow, slack-bot-chat replies) still relies on Slack's own single-tilde rendering; can be addressed separately if desired.
🤖 Generated with Claude Code
The PR prevents approximation markers such as ~$3K and ~2 from being paired as Slack strikethrough delimiters.
The PR appears safe to merge, with the intended double-tilde-only behavior covered by a focused regression test.
The tokenizer’s capture groups remain correctly aligned after removing the single-tilde branch, and no current caller-visible defect or repository-rule violation remains.
| Filename | Overview |
|---|---|
| apps/server/src/services/notifications/markdown-to-slack-richtext.ts | Removes single-tilde strikethrough parsing and consistently adjusts every affected capture-group reference. |
| apps/server/src/services/notifications/tests/markdown-to-slack-richtext.test.ts | Replaces the obsolete single-tilde expectation and adds focused coverage for approximation values containing lone tildes. |
Reviews (1): Last reviewed commit: "fix(slack): don't strike single-tilde "a..." | Re-trigger Greptile
Libra has not measured any production surfaces for this change yet.