S3 Persistence Compliance Matrix

This matrix audits the processors in cmd/ against the S3 Persistence Contract; the catalogue now spans ~168 processor commands. The contract requires: (1) archive successfully processed payloads to S3, (2) quarantine failed payloads to failed-feeds/{processor}/{date}/{reason}/, (3) maintain raw payload bytes at each failure point.

Compliance Status:

  • Compliant: Both S3 archive and quarantine fully implemented (1 processor)
  • Partial (Archive): S3 implemented, quarantine missing (17 processors — need failure wiring)
  • Non-compliant: Neither implemented (95 processors)

Key Findings:

  • Only osv-json-processor is fully compliant
  • 17 processors upload to S3 but lack quarantine wiring
  • 28 enrichment processors need record reconstruction (no raw file bytes available)
  • 95 processors require both S3 and quarantine from scratch

Note — re-audit in progress: The catalogue has since grown to ~168 processor commands. The per-processor compliance breakdown below (and the compliant / partial / non-compliant / enrichment-only sub-counts above) predates those recent additions; newer processors are not yet classified and are being re-audited. Treat the counts as covering only the originally-audited set, not the full ~168.


Processor Compliance Audit

Grouped by type and sorted alphabetically within each group. Columns: S3 (archive active), Quarantine (quarantine implemented).

JSON Processors (29)

ProcessorSourceUnitS3QFailure Paths
alpine-json-processoralpinefileparse-error
atlassian-json-processoratlassianrecordstore-error
aws-security-bulletins-json-processoraws-security-bulletinsrecordstore-error
bugcrowd-json-processorbugcrowdrecordstore-error
cargo-json-processorcargorecordstore-error
gpz-0day-itw-gsheet-processorgpzrecordfetch-error, parse-error, store-error, map-error
certcc-json-processorcertccrecordstore-error
chainguard-json-processorchainguardfileparse-error
cisa-kev-json-processorcisa_kevrecordparse-error, store-error
circl-json-processorcirclrecordstore-error
confluent-json-processorconfluentrecordparse-error, store-error
cran-json-processorcranrecordstore-error
crowdsec-json-processorcrowdsecrecordparse-error, fetch-error
eukev-json-processoreukevrecordparse-error, store-error
gitlab-json-processorgitlabfileparse-error, store-error
go-json-processorgorecordstore-error
hackerone-json-processorhackeronerecordstore-error
hex-json-processorhexrecordstore-error
maven-json-processormavenrecordstore-error
mitre-cve-json-processorcve.orgfileschema-violation, parse-error, store-error
npm-json-processornpmrecordstore-error
nuget-json-processornugetrecordstore-error
osm-json-processorosmfileparse-error, store-error
osv-json-processorosvenrichschema-violation, parse-error
ovhcloud-json-processorovhcloudenrichparse-error
rocky-linux-json-processorrocky_linuxfileparse-error, schema-violation
vulncheck-kev-json-processorvulncheckfileparse-error
vulncheck-nvd-json-processorvulncheckenrichschema-violation, store-error
wolfi-json-processorwolfifileparse-error

CSAF/CVRF Processors (11)

ProcessorSourceUnitS3QFailure Paths
abb-csaf-processorabbfileparse-error
certbund-csaf-processorcertbundfileparse-error, schema-violation
cisco-cvrf-backfillciscofileparse-error, store-error
cisco-cvrf-processorciscofileparse-error, schema-violation
msrc-csaf-processormsrcfileparse-error, schema-violation
ncsc-nl-csaf-processorncsc-nlfileparse-error
oracle-cpu-csaf-processororaclefile(none wired)
ox-csaf-processoropen-xchangefileparse-error
redhat-csaf-processorredhatfileparse-error
siemens-csaf-processorsiemensfileparse-error, schema-violation
suse-csaf-processorsusefileparse-error, schema-violation

RSS/Feed Processors (24)

ProcessorSourceUnitS3QFailure Paths
acsc-rss-processoracscfileparse-error, fetch-error
alas-rss-processoralasfileparse-error
binarly-rss-processorbinarlyfileparse-error
cert-at-rss-processorcert-atrecordparse-error, store-error
cert-au-rss-processorcert-aurecordparse-error, store-error
cert-ca-rss-processorcert-carecordparse-error, store-error
cert-eu-rss-processorcert-eurecordparse-error, enrich-error
certfr-json-processorcert-frfileparse-error
cert-it-rss-processorcert-itrecordparse-error, store-error
cert-jp-rss-processorcert-jprecordparse-error, store-error
cert-lv-rss-processorcert-lvrecordparse-error, store-error
cert-pt-rss-processorcert-ptrecordparse-error, enrich-error
cert-se-rss-processorcert-serecordparse-error, store-error
cert-tw-rss-processorcert-twrecordparse-error, store-error
cert-ua-rss-processorcert-uarecordparse-error, store-error
cert-us-rss-processorcert-usrecordparse-error, store-error
cxsecurity-rss-processorcxsecurityenrichparse-error
gentoo-rss-processorgentooenrichparse-error
ghsa-rss-processorghsaenrichparse-error
isc-rss-processoriscenrichparse-error
ncsc-fi-rss-processorncsc_fifileparse-error
nozomi-rss-processornozomifileparse-error
rhsa-rss-processorrhsaenrichparse-error
sick-psirt-rss-processorsick_psirtfileparse-error
tailscale-rss-processortailscalefileparse-error
tenable-rss-processortenablefileparse-error
zdi-rss-processorzdifileparse-error

Git/Repository Processors (18)

ProcessorSourceUnitS3QFailure Paths
almalinux-git-processoralmalinuxfileparse-error, store-error
anchore-adp-git-processoranchore_adpfileparse-error, store-error, tx-rollback
bitnami-git-processorbitnamifileparse-error, store-error
canonical-git-processorcanonicalfileparse-error, store-error
cleanstart-git-processorcleanstartfileparse-error, store-error
cnvd-git-processorcnvdfileparse-error
conan-git-processorconanrecordstore-error
docker-git-processordockerfileparse-error, store-error
drupal-git-processordrupalfileparse-error, store-error
fstec-git-processorfstecfilestore-error
gemnasium-git-processorgitlabfilestore-error, tx-rollback
ghsa-git-processorgithubfileparse-error, store-error
hsec-git-processorhaskellfilestore-error, tx-rollback
julia-git-processorjuliarecordstore-error
ocaml-git-processorocamlfilestore-error, tx-rollback
ossfuzz-git-processorossfuzzfileparse-error, store-error
pypi-git-processorpypifileparse-error, store-error
rustsec-git-processorrustsecfilestore-error, tx-rollback
vulnrichment-git-processorcisa_adpfileparse-error, store-error, tx-rollback
wizsec-git-processoropencloudfileparse-error, store-error, tx-rollback

Fetch/Backfill/Archive Processors (33)

ProcessorSourceUnitS3QFailure Paths
0day-today-fetch-backfill0day-todayfileparse-error
adobe-security-fetch-processoradobefilestore-error
akamai-fetch-processorakamaifilefetch-error, parse-error, store-error
alpine-apk-fetch-processoralpine-apkrecordstore-error
aur-fetch-processoraurrecordstore-error
homebrew-fetch-processorhomebrewrecordstore-error
broadcom-vmware-security-fetch-processorbroadcom-vmwarerecordstore-error
cert-be-fetch-processorcert-befileparse-error, store-error
cert-il-fetch-processorcert-ilrecordstore-error
cert-tw-fetch-processorcert-twrecordstore-error
cloudflare-advisories-fetch-processorcloudflarerecordstore-error
cvelistv5-json-backfillcve.orgfileparse-error, store-error
databricks-fetch-processordatabricksfileparse-error, store-error
digitalocean-fetch-processordigitaloceanfilefetch-error, parse-error
eol-json-processoreolrecordparse-error, store-error
eol-fetch-processoreolrecordstore-error
epss-csv-backfillepssfileparse-error, store-error
euvd-json-backfilleuvdrecordstore-error
euvd-json-processoreuvdrecordstore-error
fastly-fetch-processorfastlyrecordfetch-error, parse-error
github-yara-fetch-processor?enrichfetch-error
hashicorp-discuss-fetch-processorhashicorp-discussrecordstore-error
pwno-fetch-processor?enrichfetch-error
sap-patch-day-fetch-processorsaprecordstore-error
servicenow-kb-fetch-processorservicenowrecordstore-error
snowflake-fetch-processorsnowflakerecordstore-error
snyk-fetch-processorsnykrecordfetch-error, parse-error, store-error
tencent-blade-fetch-processortencent-bladerecordparse-error, store-error
twilio-fetch-processortwiliorecordparse-error, store-error
variot-json-backfillvariotfileparse-error
variot-json-processorvariotfileparse-error
vercel-security-bulletins-fetch-processorvercelrecordstore-error
zoom-fetch-processorzoomrecordstore-error

Enrichment-Only Processors (23)

⚠️ Special: Record reconstruction required (no raw file bytes). Database row serialization needed for quarantine.

ProcessorSourceS3QFailure Paths
cveprefix-json-processorcve.orgenrich-error
enrich-coalition-cess-jsoncoalition-cessenrich-error
enrich-docker-vexdockerenrich-error
enrich-first-epss-json(no CVEMetadata)enrich-error
enrich-googleosi-json(no CVEMetadata)enrich-error
enrich-malware-exposure-fetch(no CVEMetadata)enrich-error
enrich-nse-fetch(no CVEMetadata)fetch-error, decode-error
enrich-nuclei-fetch(no CVEMetadata)fetch-error, enrich-error
enrich-references-fetch(no CVEMetadata)fetch-error, enrich-error
gcve-json-processor?enrich-error
github-poc-processor?fetch-error, enrich-error
mageia-json-processormageiaenrich-error
vulnetix-kev-processor?enrich-error
wiz-json-processorwizenrich-error

Dashboard/Monitor/Other Processors (17)

ProcessorSourceUnitS3Q
ai-discovered-vulns-runner?file
ai-models-processor?file
community-snort-processorcommunity-snortrecord
community-suricata-snort-processorcommunity-suricatarecord
emergingthreats-snort-processoremerging_threatsfile
misp-galaxy-json-processormisp_galaxyfile
nist-nvd-modified-json-processornvdfile
nist-nvd-recent-json-processornvdfile
nist-nvd-year-json-processornvdfile
oss-malware-git-processoross-malicious-packagesfile
scanner-processor?enrich
scan-watchdog?file
shadowserver-dashboard-processor?enrich
summary-processor?enrich
nvd-deepdive-processor?enrich
vulncheck-nvd-cleanupvulncheckfile
epss-score-pruneepssn/an/an/a

Summary

StatusCountDetails
Compliant1osv-json-processor (S3 + quarantine fully wired)
Partial (Archive)17S3 active; quarantine wiring needed (abb, certbund, certfr, cert-jp, cisco, cxsecurity, mitre-cve, msrc, ncsc-nl, redhat, rocky, siemens, suse, zdi, 0day-today, github-yara, vulncheck-nvd)
Non-compliant95Neither S3 nor quarantine
Enrich-only23Require record reconstruction (database serialization for quarantine)

Implementation Roadmap

  1. Phase 1 - Wire Quarantine (17 processors): Add quarantineFailedFeed() calls at parse/schema/store errors
  2. Phase 2 - Implement S3+Quarantine (95 processors): Copy patterns from osv-json-processor, establish consistent path format
  3. Phase 3 - Record-Based Enrichment (23 processors): Implement CVEMetadata row serialization for quarantine when database enrichment fails