Data Architecture

Custom Database Tables

Crucible Scan creates two custom tables in the WordPress database, prefixed with the WordPress table prefix (typically wp_):

TablePurpose
{prefix}crucible_scan_scansScan metadata: date, type, status, page count, issue count, compliance score
{prefix}crucible_scan_issuesIndividual issues: scan ID, page URL, criterion, severity, description, element HTML, status

WordPress Options

Settings and lightweight data are stored in the wp_options table using the crucible_scan_ prefix:

Option KeyPurpose
crucible_scan_post_typesArray of post types included in scans
crucible_scan_excluded_postsArray of post IDs excluded from scans
crucible_scan_resolved_issuesArray of fingerprints marked as resolved
crucible_scan_ignored_issuesArray of fingerprints marked as dismissed
crucible_scan_dynamic_filterBoolean master toggle for dynamic filtering
crucible_scan_dynamic_filter_categoriesAssociative array of filter category toggles
crucible_scan_standardsArray of active regulatory standards
crucible_scan_activatedBoolean flag indicating plugin has been activated

Transients

Scan results for the most recent scan are cached in a transient (crucible_scan_passed_items) to avoid repeated database queries when loading the results page.

Data Retention & Cleanup

Scan data is automatically cleaned up based on the license tier’s retention window (7 to 365 days). The cleanup runs daily via WordPress cron. Records older than the retention window are permanently deleted from both custom tables.

Uninstall Behavior

When the plugin is deleted (not just deactivated), the uninstall.php file runs and removes all custom tables, all crucible_scan_* options, all related transients, and all scheduled cron events. This ensures a clean removal with no database orphans.