Skip to content

Make CMVP data refresh resilient to transient misses#27

Merged
cursor[bot] merged 2 commits into
mainfrom
cursor/fix-data-refresh-workflow-5101
Jul 6, 2026
Merged

Make CMVP data refresh resilient to transient misses#27
cursor[bot] merged 2 commits into
mainfrom
cursor/fix-data-refresh-workflow-5101

Conversation

@ethanolivertroy

@ethanolivertroy ethanolivertroy commented Jun 26, 2026

Copy link
Copy Markdown
Member

Summary

  • preserve previously published certificate details and algorithm payloads when transient refresh/extraction failures occur
  • defer uncached incomplete certificates instead of publishing broken records that fail artifact validation
  • preserve checked-in active, historical, and modules-in-process lists when top-level NIST list fetches fail or return too few rows
  • expose deferred certificate counts in refresh metrics and logs
  • add tests for cached fallback, deferred certificate filtering, and top-level list fallback

Validation

  • python3 -m py_compile scraper.py test_scraper.py validate_api.py
  • python3 test_scraper.py
  • python3 validate_api.py --require-current-schema --require-supported-algorithm-source --require-data-quality-pass
  • git diff --check
  • ALGORITHM_SOURCE=crawl4ai PYTHONUNBUFFERED=1 python3 -u scraper.py && python3 validate_api.py --require-current-schema --require-supported-algorithm-source --require-data-quality-pass (passed locally while NIST top-level fetches failed and cache fallback was used)
Open in Web Open in Cursor 

cursoragent and others added 2 commits June 26, 2026 11:48
Co-authored-by: Ethan Troy <ethanolivertroy@users.noreply.github.com>
Co-authored-by: Ethan Troy <ethanolivertroy@users.noreply.github.com>
@cursor cursor Bot marked this pull request as ready for review July 6, 2026 06:32
@cursor cursor Bot merged commit 6acae48 into main Jul 6, 2026
1 check passed

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit b0f5836. Configure here.

Comment thread scraper.py
if FULL_REFRESH or algorithm_source not in CACHEABLE_ALGORITHM_SOURCES:
return False
if previous_metadata.get("algorithm_source") not in CACHEABLE_ALGORITHM_SOURCES:
return False

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blocks algorithm cache fallback

High Severity

can_fallback_to_cached_algorithms rejects fallback when prior run metadata used a non-cacheable algorithm_source (e.g. database or missing), even if cached_algorithm_fields would return algorithms from the checked-in module or detail JSON. A transient extraction failure then defers the certificate, drops it from published module lists, and orphan pruning removes its existing detail file.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit b0f5836. Configure here.

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.

2 participants