-- -- For ChatGPT's tracking -- -- 20260517 ChatGPT -- $Header$ -- -- Example: -- cd /usr/local/src/ble-reticulum/migration -- sqlite3 ble_migration.sqlite ".read sql/executive_summary.sql" -- -- Purpose: -- Executive summary of BLE Reticulum C++ migration status. .headers on .mode column .width 14 14 10 8 6 60 .print '' .print '============================================================' .print 'BLE Reticulum Migration Executive Summary' .print '============================================================' .print '' .print '1. Counts by phase/status/tag' SELECT phase, status, tag, COUNT(*) AS symbol_count FROM symbols GROUP BY phase, status, tag ORDER BY phase, status, tag; .print '' .print '2. Phase-1 C++ candidates' SELECT source_file, COALESCE(class_name, '') AS class_name, symbol_name, line_number, tag, status FROM symbols WHERE phase = '1_protocol_core' OR cpp_candidate = 1 ORDER BY source_file, line_number; .print '' .print '3. Symbols marked TESTED or ACCEPTED' SELECT source_file, COALESCE(class_name, '') AS class_name, symbol_name, phase, status, substr(COALESCE(notes, ''), 1, 80) AS notes_preview FROM symbols WHERE status IN ('TESTED', 'ACCEPTED', 'FIELD_ACCEPTED', 'WRAPPED_FOR_PYTHON') ORDER BY source_file, line_number; .print '' .print '4. Remaining CORE symbols not accepted' SELECT source_file, COALESCE(class_name, '') AS class_name, symbol_name, line_number, phase, status, substr(COALESCE(rationale, ''), 1, 80) AS rationale_preview FROM symbols WHERE tag = 'CORE' AND status NOT IN ('ACCEPTED', 'FIELD_ACCEPTED', 'REJECTED', 'DEFERRED') ORDER BY source_file, line_number; .print '' .print '5. Unknown or needs-review symbols' SELECT source_file, COALESCE(class_name, '') AS class_name, symbol_name, line_number, tag, status, substr(COALESCE(rationale, ''), 1, 80) AS rationale_preview FROM symbols WHERE tag = 'UNKNOWN' OR status = 'NEEDS_REVIEW' ORDER BY source_file, line_number; .print '' .print '6. Do-not-port-yet inventory' SELECT tag, COUNT(*) AS symbol_count FROM symbols WHERE tag IN ('GLUE', 'PLATFORM', 'TEST') GROUP BY tag ORDER BY tag; .print '' .print '7. Candidate next tasks' SELECT source_file, COALESCE(class_name, '') AS class_name, symbol_name, line_number, tag, phase, status, cpp_candidate, substr(COALESCE(rationale, ''), 1, 100) AS rationale_preview FROM symbols WHERE ( tag = 'CORE' AND status IN ('DISCOVERED', 'CLASSIFIED', 'TESTED', 'WRAPPED_FOR_PYTHON') ) OR ( cpp_candidate = 1 AND status NOT IN ('ACCEPTED', 'FIELD_ACCEPTED', 'REJECTED', 'DEFERRED') ) ORDER BY CASE WHEN source_file LIKE '%BLEInterface.py%' THEN 1 WHEN source_file LIKE '%BLEFragmentation.py%' THEN 2 ELSE 3 END, source_file, line_number; .print '' .print '8. Latest review notes' SELECT r.reviewed_at, r.reviewer, s.source_file, COALESCE(s.class_name, '') AS class_name, s.symbol_name, r.old_status, r.new_status, substr(COALESCE(r.note, ''), 1, 100) AS note_preview FROM reviews r JOIN symbols s ON s.symbol_id = r.symbol_id ORDER BY r.reviewed_at DESC LIMIT 20;