Conversation
This was referenced Sep 23, 2026
Closed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed
A behavior-neutral comment, em dash and emoji sweep across the backend, plus one separate commit for user-facing copy. Comments now explain why, never what: banners, commented-out code, plan and review codes, name-restating doc comments and pointers to retired docs are gone, while security, privacy, concurrency, vendor-quirk and retention reasons are kept and tightened. Every em dash is gone except three inside applied migrations. The only behavior change is wording: the messages, email, PDF title and calendar title listed below read without em dashes.
Before you start
Verify
[Web]
"; a table cell with no value shows "–".[Admin]
Regression
Everything else — [Web] [Mobile] [Admin]
Findings addressed
Campaign PR 6: the comment rule (CLAUDE.md §2) across
src, tests, scripts, the email Worker and config; every em dash in code, comments, SQL comments, user-facing strings and living markdown; every emoji in comments; the two TODOs (media upload CSRF, routing provider) turned into WHY comments.Counts (source metrics over
services/api/srcandservices/media-worker/src, before -> after): comment lines 6947 -> 4053; lines with an em dash (whole repo, excluding licenses and changelogs) 1391 -> 3; emoji in comments 5 -> 0.Decisions for the reviewer
COMMENT ON COLUMNstrings of applied migrations0049_cleanup_cohosts.sql:26,0051_social_posts.sql:128and0163_event_team_tiers.sql:81. Editing them changes SQL that databases already applied, and a new migration could not remove the text from the historical files. Catalog comments never reach users.git grep -n $'\u2014' -- . ':!LICENSE*' ':!LICENSES/**' ':!**/CHANGELOG.md'prints exactly these three lines.EMPTY_VALUE = "–"(en dash, matching the "start – end" period on the same page) instead of the em dash. Issued certificates still verify: the ledger fingerprint does not include these strings; only newly rendered PDFs change. Switching to "-" is one line."\u2014"; the string value and the check are unchanged./healthzdoes not expose the version; the deploy workflows'if:conditions and the promote-and-pull flow; a rollback hint that moved no traffic; several "not used yet" notes; the jurisdiction layer order; the reference-code lock-order note.User-visible copy changes
No error code, field key or machine-matched token changed. civfix-app and civfix-admin were checked: no client matches on any of these strings (the app's own announcement-limit copy is separate text in its catalog).
Tests changed
adapters-mailer-oci.test.ts,certificate-model.test.ts(usesEMPTY_VALUE),certificate-pdf.test.ts,cleanups-routes.test.ts(ICS SUMMARY).—and a city reply body are written as the\u2014escape; two incidental fixture dashes follow the real subject format ([civfix: <ref>] <title>) or a colon.Verification
package.jsondiffers only in its//overridesnote keys (deep-equal otherwise).--and/* */comments outside quotes and$$bodies and compares each changed file with #94's branch. Output:sql-comment-neutral: 53/53 changed SQL files differ only in comments.pnpm typecheck,pnpm lint,pnpm check:sql, prettier check pass; api unit suite by path 428 files, 7116 passed, 3 skipped; media-worker unit 300 passed, 2 failed (the known ffprobe-helper environment issue fixed in #92, not in this stack).Staging checks
https://api.civfix.dev/readyzanswers ready after the deploy (no migration in this PR).Not covered
🤖 Generated with Claude Code