# ROCpd Validation Flow ```mermaid flowchart TD A[Start: validate-rocpd.py] --> B{Parse Arguments} B --> |--help| C[Display Help & Exit] B --> |Missing --database| D[Show Error & Exit] B --> |Valid Args| E[Load Validation Rules] E --> F{Rules File Exists?} F --> |No| G[Use Default Rules
default_rules.json] F --> |Yes| H[Load Custom Rules] G --> I[Parse JSON Rules] H --> I I --> J[Create Rule Objects:
• required_table
• validation_rule] J --> K{Database File Exists?} K --> |No| L[Error: File Not Found] K --> |Yes| M[Connect to SQLite Database] M --> N[Get All Tables from Database
SELECT name FROM sqlite_master] N --> O[Start Validation Loop] O --> P[For Each Required Table Rule] P --> Q{Table Exists
in Database?} Q --> |No| R[❌ FAIL: Table Missing] Q --> |Yes| S[Check Required Columns
PRAGMA table_info] S --> T{All Required
Columns Present?} T --> |No| U[❌ FAIL: Missing Columns] T --> |Yes| V[Check Minimum Row Count] V --> W{Meets Minimum
Row Count?} W --> |No| X[❌ FAIL: Insufficient Rows] W --> |Yes| Y[Execute Validation Queries] Y --> Z[For Each Query in Rule] Z --> AA[Execute SQL Query] AA --> BB[Get Result] BB --> CC{Validation
Comparison Pass?} CC --> |No| DD[❌ FAIL: Query Failed
Log Error Message] CC --> |Yes| EE[✅ PASS: Query Passed] EE --> FF{More Queries?} DD --> FF FF --> |Yes| Z FF --> |No| GG{More Tables?} R --> GG U --> GG X --> GG GG --> |Yes| P GG --> |No| HH{All Validations
Passed?} HH --> |Yes| II[✅ SUCCESS
Exit Code: 0] HH --> |No| JJ[❌ FAILURE
Exit Code: 65] L --> KK[Exit Code: 1] subgraph "Validation Rules Structure" LL[JSON Rules File] LL --> MM["required_tables[]"] MM --> NN["Table Definition:
• name
• required_columns
• min_rows
• validation_queries"] NN --> OO["Validation Query:
• description
• query (SQL)
• expected_result
• comparison
• error_message"] end subgraph "Database Structure" PP[ROCpd SQLite Database] PP --> QQ[Tables:
• kernel_summary
• kernels
• threads
• ...] QQ --> RR[Columns per Table] RR --> SS[Data Rows] end subgraph "Comparison Operations" TT[Supported Comparisons:
• equals
• greater_than
• less_than
• greater_than_or_equal
• less_than_or_equal
• not_equals] end ``` ## Input Phase - Takes a ROCpd database file (.db) as input - Optionally accepts custom validation rules (JSON file) - Uses default rules if no custom rules provided ## Validation Rules Structure - JSON-based configuration with required tables - Each table has: - Required columns to check for - Minimum row count requirements - Custom SQL validation queries ## Validation Process - For each required table, the tool: - Checks table existence in the database - Verifies required columns are present - Validates minimum row count - Executes custom SQL queries with various comparison operations ## Output & Results - Real-time feedback with ✅/❌ indicators - Detailed error messages for failures - Exit codes: - **0**: All validations passed - **65**: Validation failures - **1**: General errors (file not found, etc.)