Repository navigation
feat(errors): fingerprint v3 grouping with a version-salted hash - #1466
Merged
Merged
Maple Review Bot / Maple / review
succeeded
Oct 14, 2026 in 6m 53s
Confidence 8/10 · No issues found
🟢 Confidence 8/10 · likely safe to merge
The risky part — hash rotation, archiving and restore — is pinned end to end by two ClickHouse e2e suites; the 2,148-line v30 snapshot SQL went unread.
quality 100/100 · no findings · tests covered · risk high
Fingerprint v3: version-salted hashes, new frame and message-signature rules, a ClickHouse MV recreation (0039), local schema v30, and restore of archived error issues on recurrence. The MV SQL and its TS mirror apply the same chain, and the parity is pinned by ClickHouse e2e tests.
FINGERPRINT_VERSIONis 3 and'fp3'is hashed intoFingerprintHash, so every issue hash rotates- Namespaced exception types keep one frame; Effect span and schema key-path lines are not frames
ERROR_MSG_REDACTIONScuts ClickHouse query echoes and redacts FS paths, prefixed ids and ULIDs- The errors tick restores an archived, non-done issue on its next occurrence
Before merge
- Migration · Check it is safe on production data and with the code still deployed ·
packages/domain/src/clickhouse/migrations/0039_error_fingerprint_v3.ts - Manual · Warn users before cutover: every open error issue is archived and returns as a new
triageissue without assignee, priority, notes or snooze - Manual · Self-hosted ClickHouse orgs must apply schema migration 0039, or they keep producing v2 hashes that reopen archived issues
What was checked
- MV SQL and TS mirror apply the same redaction order (
materializations.ts:828,fingerprint.ts:202,0039_error_fingerprint_v3.ts:23) - Both
error_eventsMVs carry the salt and v3 frame rules (local-schema.sql:1091,:1161,:1259) - Frame selector matches in RE2 and JS:
position(line,'(definition)') = 0vs!line.includes(...)
f68d27e · Updated on every push. Reply "won't fix" to dismiss a finding, or mention @maple-review-bot to ask about one.
Loading