Skip to content

fix(persistence): suppress no-op scan record appends#45

Merged
saraeloop merged 1 commit intomainfrom
fix/noop-scan-persistence
Apr 13, 2026
Merged

fix(persistence): suppress no-op scan record appends#45
saraeloop merged 1 commit intomainfrom
fix/noop-scan-persistence

Conversation

@saraeloop
Copy link
Copy Markdown
Member

Summary

Suppresses duplicate scan records when a rescan produces no material changes, improving scan history quality and baseline behavior.

Changes

Updated

  • src/application/scan-package.ts

Tests

  • test/scan-package.test.ts
  • test/integrated-scenarios.test.ts

Behavior

  • Compares candidate scan record against the latest baseline-matching record
  • Skips persistence when scan substance is unchanged
  • Ignores run-scoped fields and age_days drift during comparison
  • Returns the existing persisted record for no-op rescans
  • Preserves append behavior for materially changed scans

Verification

  • pnpm test
  • pnpm run build

- compare candidate scan record against latest baseline-matching record
- skip append when scan substance is unchanged
- ignore run-scoped fields (record_id, created_at, baseline_record_id, scan_duration_ms, review-target ids)
- ignore age_days drift to avoid time-based duplicate records
- return existing persisted record for no-op rescans to keep downstream behavior consistent

- add regression coverage for:
  - identical rescans not appending
  - materially changed scans still appending
  - baseline lookup using latest persisted record after suppression
  - integrated history scenario with single persisted row

verification:
- pnpm test
- pnpm run build
@saraeloop saraeloop self-assigned this Apr 13, 2026
@saraeloop saraeloop merged commit c641e32 into main Apr 13, 2026
1 check passed
@saraeloop saraeloop deleted the fix/noop-scan-persistence branch April 13, 2026 18:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant