Elie Habib
92dd046820
fix(brief): address Greptile P1 + P4 review on merged PR #3396 ( #3401 )
...
P1 — False-positive PARITY REGRESSION for AI-digest opt-out users
(scripts/seed-digest-notifications.mjs)
When rule.aiDigestEnabled === false, briefLead is intentionally
null (no summary in channel bodies), but envLead still reads the
envelope's stub lead. The string comparison null !== '<stub lead>'
fired channels_equal=false on every tick for every opted-out user
— flooding the parity log with noise and risking the PARITY
REGRESSION alert becoming useless.
The WARN was already gated by `briefLead && envLead` (so no Sentry
flood), but the LOG line still misled operators counting
channels_equal=false. Gate the entire parity-log block on the same
condition that governs briefLead population:
if (AI_DIGEST_ENABLED && rule.aiDigestEnabled !== false) {
// … parity log + warn …
}
Opt-out users now produce no parity-log line at all (correct —
there's no canonical synthesis to compare against).
P4 — greetingBucket '' fallback semantics
(scripts/lib/brief-llm.mjs)
Doc-only — Greptile flagged that unrecognised greetings collapse
to '' (a single bucket). Added a comment clarifying this is
intentional: '' is a stable fourth bucket, not a sentinel for
"missing data". A user whose greeting flips between recognised
and unrecognised values gets different cache keys, which is
correct (those produce visibly different leads).
Other Greptile findings (no code change — replied via PR comment):
- P2 (double-fetch in [...sortedDue, ...sortedAll]): already
addressed in helper extraction commit df3563080 of PR #3396 —
see `seen` Set dedupe at scripts/lib/digest-orchestration-helpers.mjs:103.
- P2 (parity check no-op for opted-in): outdated as written —
after 5d10cee86's per-rule synthesis, briefLead is per-rule and
envLead is winner-rule's envelope.lead. They diverge for
non-winner rules (legitimate); agree for winner rules (cache-
shared via generateDigestProse). The check still serves its
documented purpose for cache-drift detection.
Stacked on the merged PR #3396 ; opens as a follow-up since the
parent branch is now closed.
Test results: 7012/7012 (was 7006 pre-rebase onto post-merge main).
2026-04-25 16:43:50 +04:00
..
2026-04-25 12:08:15 +04:00
2026-04-25 16:43:50 +04:00
2026-04-24 16:25:14 +04:00
2026-04-25 12:02:48 +04:00
2026-02-28 17:43:56 +04:00
2026-04-25 00:14:04 +04:00
2026-04-02 08:17:32 +04:00
2026-03-23 16:10:49 +04:00
2026-04-04 15:38:02 +04:00
2026-04-11 09:39:27 +04:00
2026-03-29 11:09:26 +04:00
2026-04-24 19:08:07 +04:00
2026-04-13 13:00:14 +04:00
2026-04-23 09:15:57 +04:00
2026-04-16 10:41:15 +04:00
2026-04-24 07:21:13 +04:00
2026-03-28 15:03:54 +04:00
2026-03-16 08:40:14 +04:00
2026-04-16 09:24:12 +04:00
2026-04-24 23:36:51 +04:00
2026-03-14 21:29:21 +04:00
2026-04-20 09:36:10 +04:00
2026-03-19 00:24:47 +04:00
2026-04-14 22:11:56 +04:00
2026-04-14 22:11:56 +04:00
2026-04-25 00:14:04 +04:00
2026-03-31 07:54:23 +04:00
2026-04-23 07:34:07 +04:00
2026-03-28 19:51:29 +04:00
2026-04-11 08:21:08 +04:00
2026-04-16 09:25:06 +04:00
2026-03-14 21:29:21 +04:00
2026-04-24 16:25:14 +04:00
2026-04-24 18:13:22 +04:00
2026-03-31 13:09:21 +04:00
2026-04-24 18:14:04 +04:00
2026-04-24 18:14:04 +04:00
2026-04-25 13:47:53 +04:00
2026-04-23 22:21:25 +04:00
2026-04-04 15:38:02 +04:00
2026-03-14 21:29:21 +04:00
2026-03-12 06:50:30 +04:00
2026-03-05 10:16:43 +04:00
2026-03-19 10:31:37 +04:00
2026-04-23 10:25:18 +04:00
2026-03-14 21:29:21 +04:00
2026-03-23 23:59:21 +04:00
2026-02-26 20:52:44 +04:00
2026-04-24 18:00:41 +03:00
2026-04-24 18:00:41 +03:00
2026-04-22 09:55:59 +03:00
2026-03-15 15:57:22 +04:00
2026-03-24 18:52:02 +04:00
2026-03-15 15:57:22 +04:00
2026-03-19 02:40:05 +04:00
2026-03-17 06:35:12 +04:00
2026-03-01 11:53:20 +04:00
2026-03-01 11:53:20 +04:00
2026-03-14 21:29:21 +04:00
2026-04-21 22:37:27 +04:00
2026-03-28 23:59:47 +04:00
2026-04-04 15:38:02 +04:00
2026-03-01 15:59:53 +04:00
2026-04-03 23:25:08 +04:00
2026-04-08 11:21:40 +04:00
2026-04-11 17:55:39 +04:00
2026-03-14 21:29:21 +04:00
2026-03-01 11:53:20 +04:00
2026-04-17 08:35:20 +04:00
2026-04-24 16:25:14 +04:00
2026-04-23 11:53:37 +04:00
2026-04-23 11:53:37 +04:00
2026-04-05 09:03:34 +04:00
2026-04-05 09:03:34 +04:00
2026-03-15 15:57:22 +04:00
2026-03-23 23:59:21 +04:00
2026-03-01 11:53:20 +04:00
2026-04-03 10:27:37 +04:00
2026-04-10 15:54:30 +04:00
2026-04-15 09:16:27 +04:00
2026-04-24 16:25:14 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-23 07:34:07 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-20 15:21:43 +04:00
2026-04-20 15:21:43 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-22 17:10:38 +04:00
2026-04-25 00:14:17 +04:00
2026-04-13 08:05:59 +04:00
2026-04-16 13:41:28 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-16 09:25:06 +04:00
2026-04-14 12:29:17 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:06:24 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-25 16:43:50 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-03-27 11:48:02 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-18 14:40:00 +04:00
2026-04-07 22:24:17 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-23 20:43:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-16 09:25:06 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-23 20:38:11 +04:00
2026-04-01 08:53:13 +04:00
2026-04-22 17:10:38 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-23 20:43:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-16 10:41:15 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-16 09:25:06 +04:00
2026-04-03 10:27:37 +04:00
2026-04-15 09:16:27 +04:00
2026-04-12 21:34:38 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-03-22 19:59:42 +04:00
2026-04-24 07:21:13 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-06 13:58:54 +04:00
2026-04-22 23:47:45 +04:00
2026-04-15 09:16:27 +04:00
2026-04-16 09:25:06 +04:00
2026-03-15 15:57:22 +04:00
2026-04-15 09:16:27 +04:00
2026-03-22 19:59:42 +04:00
2026-04-20 19:03:47 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-23 20:43:27 +04:00
2026-04-23 20:43:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-22 22:37:08 +04:00
2026-04-15 09:16:27 +04:00
2026-04-22 17:10:38 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-24 18:13:41 +04:00
2026-04-25 00:14:17 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-12 11:46:04 +04:00
2026-04-04 23:19:33 +04:00
2026-04-15 09:16:27 +04:00
2026-04-13 09:21:13 +04:00
2026-04-24 18:14:04 +04:00
2026-04-13 13:00:58 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-03-22 19:59:42 +04:00
2026-04-25 12:02:48 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-23 20:43:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-04-25 15:27:43 +04:00
2026-04-15 09:16:27 +04:00
2026-04-15 09:16:27 +04:00
2026-03-17 16:12:05 +04:00
2026-04-15 09:16:27 +04:00
2026-03-14 10:23:20 +04:00
2026-04-15 09:16:27 +04:00
2026-03-19 01:57:27 +04:00
2026-04-13 21:53:21 +04:00
2026-04-20 08:40:29 +04:00
2026-04-25 12:08:15 +04:00
2026-02-19 07:53:15 +04:00
2026-04-24 18:14:04 +04:00
2026-04-24 18:14:04 +04:00
2026-04-12 10:22:21 +04:00
2026-03-14 21:29:21 +04:00
2026-04-02 08:55:22 +04:00
2026-04-23 20:23:45 +04:00
2026-04-14 22:11:56 +04:00