ed
6f9a3af201
feat(audit): add main-thread import graph audit + baseline measurements
...
Phase 1, Tasks T1.2 + T1.4 of the startup_speedup_20260606 track.
NEW: scripts/audit_main_thread_imports.py
Static CI gate that AST-walks the import graph reachable from
sloppy.py and fails (exit 1) if any heavy module is imported at the
top of a main-thread-reachable file. Walks into if/elif/else and
try/except branches (which run at import time) but skips function
bodies (which only run when called). Allowlist: stdlib + the lean
gui_2 skeleton (imgui_bundle, defer, src.imgui_scopes, src.theme_2,
src.theme_models, src.paths, src.models, src.events).
NEW: scripts/audit_gui2_imports.py
Read-only analysis tool that lists every top-level and function-level
import in src/gui_2.py, classified by location. Used in Phase 5D to
identify which imports to remove.
NEW: tests/test_audit_main_thread_imports.py
9 tests covering: --help exits 0, clean stdlib-only passes, heavy
third-party fails, google.genai fails, transitive walks, function-
body imports ignored, if-branch imports flagged, try-block imports
flagged, file:line reported. All 9 pass.
NEW: docs/reports/startup_baseline_20260606.txt
3-run median cold-start benchmark. Worst offenders: src.gui_2
(1770ms), simulation.user_agent (1517ms), google.genai (1001ms),
openai (482ms), anthropic (441ms), imgui_bundle (255ms),
src.theme_nerv* (485ms combined), src.markdown_table (243ms),
src.command_palette (242ms).
NEW: docs/reports/startup_audit_20260606.txt
Audit output on the CURRENT codebase. Reports 67 violations across
the main-thread import graph (incl. numpy in src/gui_2.py:9,
tomli_w in src/gui_2.py:18, fastapi + requests in src/app_controller,
tree_sitter_* in src/file_cache, pydantic in src/models, plus all
the src.* subsystem imports that drag in heavy transitive deps).
Phase 3-5 of the track will resolve these one by one.
After Phase 3-5, this audit must exit 0 (no violations).
Co-located reports in docs/reports/ per project convention; the other
agent finished their work in docs/superpowers/ and is unrelated.
2026-06-06 14:22:18 -04:00
..
2026-03-02 22:56:32 -05:00
2026-05-10 15:38:16 -04:00
2026-06-04 22:31:22 -04:00
2026-03-02 22:56:32 -05:00
2026-06-02 01:27:32 -04:00
2026-05-07 15:02:00 -04:00
2026-05-04 21:52:39 -04:00
2026-05-14 22:23:48 -04:00
2026-05-13 22:35:52 -04:00
2026-03-05 17:13:59 -05:00
2026-03-05 14:04:17 -05:00
2026-05-06 13:48:47 -04:00
2026-05-09 17:44:15 -04:00
2026-03-07 12:13:08 -05:00
2026-05-16 03:00:20 -04:00
2026-03-06 12:59:18 -05:00
2026-05-13 22:35:52 -04:00
2026-05-09 15:00:35 -04:00
2026-03-11 23:14:09 -04:00
2026-03-05 19:21:57 -05:00
2026-05-12 19:06:54 -04:00
2026-03-12 19:28:21 -04:00
2026-03-11 23:04:42 -04:00
2026-03-12 15:33:37 -04:00
2026-05-13 22:35:52 -04:00
2026-06-02 21:34:56 -04:00
2026-05-16 03:00:20 -04:00
2026-05-16 03:00:20 -04:00
2026-06-02 17:30:46 -04:00
2026-05-10 15:14:54 -04:00
2026-05-20 07:51:58 -04:00
2026-05-13 22:35:52 -04:00
2026-06-06 14:22:18 -04:00
2026-05-16 11:22:41 -04:00
2026-05-08 22:01:15 -04:00
2026-03-06 12:48:02 -05:00
2026-05-06 13:48:47 -04:00
2026-03-10 10:25:09 -04:00
2026-03-10 09:53:59 -04:00
2026-03-10 09:27:12 -04:00
2026-06-03 00:52:08 -04:00
2026-05-13 22:35:52 -04:00
2026-03-04 10:01:55 -05:00
2026-06-02 22:41:59 -04:00
2026-06-02 22:54:52 -04:00
2026-06-03 14:25:59 -04:00
2026-06-03 14:53:05 -04:00
2026-05-13 22:35:52 -04:00
2026-05-13 22:35:52 -04:00
2026-05-13 22:35:52 -04:00
2026-06-06 13:30:18 -04:00
2026-05-06 20:37:48 -04:00
2026-05-16 03:00:20 -04:00
2026-05-16 11:22:41 -04:00
2026-05-16 03:00:20 -04:00
2026-05-16 03:00:20 -04:00
2026-05-11 20:03:01 -04:00
2026-05-20 07:51:58 -04:00
2026-05-20 07:51:58 -04:00
2026-03-22 12:59:10 -04:00
2026-05-16 11:22:41 -04:00
2026-05-16 17:58:19 -04:00
2026-03-06 17:05:48 -05:00
2026-03-05 16:37:30 -05:00
2026-05-11 17:15:04 -04:00
2026-05-13 22:35:52 -04:00
2026-05-13 22:35:52 -04:00
2026-05-13 22:35:52 -04:00
2026-05-16 03:00:20 -04:00
2026-06-02 01:42:41 -04:00
2026-06-02 01:42:41 -04:00
2026-06-03 11:27:04 -04:00
2026-05-09 15:00:35 -04:00
2026-06-03 11:27:04 -04:00
2026-06-03 08:33:10 -04:00
2026-05-09 12:35:58 -04:00
2026-03-06 12:48:02 -05:00
2026-05-13 22:35:52 -04:00
2026-05-07 21:21:05 -04:00
2026-05-16 03:00:20 -04:00
2026-03-12 15:58:36 -04:00
2026-05-16 03:00:20 -04:00
2026-03-12 15:41:01 -04:00
2026-05-13 22:35:52 -04:00
2026-06-03 12:24:51 -04:00
2026-05-20 07:51:58 -04:00
2026-05-16 03:00:20 -04:00
2026-03-06 12:48:02 -05:00
2026-05-16 03:00:20 -04:00
2026-03-06 12:48:02 -05:00
2026-03-06 12:48:02 -05:00
2026-05-10 11:43:50 -04:00
2026-05-13 22:35:52 -04:00
2026-06-03 12:41:13 -04:00
2026-05-10 15:38:16 -04:00
2026-05-13 22:35:52 -04:00
2026-05-13 22:35:52 -04:00
2026-05-13 22:35:52 -04:00
2026-05-13 22:35:52 -04:00
2026-05-13 22:35:52 -04:00
2026-05-16 14:32:38 -04:00
2026-03-13 12:05:49 -04:00
2026-05-06 13:48:47 -04:00
2026-05-13 22:35:52 -04:00
2026-06-03 11:27:04 -04:00
2026-03-12 19:28:21 -04:00
2026-06-03 11:27:04 -04:00
2026-05-16 15:59:40 -04:00
2026-05-13 22:35:52 -04:00
2026-05-13 22:35:52 -04:00
2026-05-13 22:35:52 -04:00
2026-06-05 10:33:38 -04:00
2026-06-05 10:25:25 -04:00
2026-05-13 22:35:52 -04:00
2026-05-16 03:00:20 -04:00
2026-06-03 11:27:04 -04:00
2026-05-16 14:45:06 -04:00
2026-06-02 17:30:46 -04:00
2026-06-02 02:20:07 -04:00
2026-05-13 22:35:52 -04:00
2026-06-02 17:30:46 -04:00
2026-05-16 01:21:27 -04:00
2026-03-12 19:28:21 -04:00
2026-05-13 22:35:52 -04:00
2026-05-13 22:35:52 -04:00
2026-06-02 01:27:32 -04:00
2026-05-16 03:00:20 -04:00
2026-05-05 17:50:55 -04:00
2026-05-09 15:00:35 -04:00
2026-06-01 17:56:24 -04:00
2026-05-16 03:00:20 -04:00
2026-05-12 19:02:30 -04:00
2026-05-13 22:35:52 -04:00
2026-05-16 01:21:27 -04:00
2026-06-03 17:37:44 -04:00
2026-05-13 22:35:52 -04:00
2026-06-03 13:47:08 -04:00
2026-06-03 11:28:36 -04:00
2026-05-16 14:45:06 -04:00
2026-03-06 12:48:02 -05:00
2026-03-07 12:43:29 -05:00
2026-05-09 15:00:35 -04:00
2026-03-06 16:43:11 -05:00
2026-03-07 16:25:44 -05:00
2026-06-03 21:48:12 -04:00
2026-06-04 23:13:33 -04:00
2026-06-03 21:14:16 -04:00
2026-06-03 11:08:58 -04:00
2026-06-03 21:33:47 -04:00
2026-06-03 10:59:57 -04:00
2026-05-06 13:48:47 -04:00
2026-03-12 15:31:10 -04:00
2026-03-05 17:13:59 -05:00
2026-05-05 19:48:38 -04:00
2026-05-10 14:58:29 -04:00
2026-05-09 15:00:35 -04:00
2026-05-09 15:00:35 -04:00
2026-05-16 14:45:06 -04:00
2026-05-13 22:35:52 -04:00
2026-05-13 22:35:52 -04:00
2026-05-16 03:00:20 -04:00
2026-05-16 14:45:06 -04:00
2026-06-06 13:30:18 -04:00
2026-05-16 03:00:20 -04:00
2026-05-16 03:00:20 -04:00
2026-03-05 16:37:30 -05:00
2026-03-07 20:32:59 -05:00
2026-05-13 22:35:52 -04:00
2026-03-06 12:48:02 -05:00
2026-03-02 13:26:20 -05:00
2026-03-06 22:03:59 -05:00
2026-03-06 16:43:11 -05:00
2026-03-05 17:13:59 -05:00
2026-05-13 17:22:34 -04:00
2026-03-06 16:55:45 -05:00
2026-05-13 22:35:52 -04:00
2026-03-07 00:15:06 -05:00
2026-03-12 19:08:51 -04:00
2026-03-07 16:41:47 -05:00
2026-05-06 14:59:34 -04:00
2026-05-06 14:59:34 -04:00
2026-05-06 14:30:22 -04:00
2026-03-10 11:09:11 -04:00
2026-03-10 23:21:14 -04:00
2026-03-10 23:21:14 -04:00
2026-03-12 19:28:21 -04:00
2026-05-10 15:46:53 -04:00
2026-05-04 18:49:18 -04:00
2026-03-07 16:36:04 -05:00
2026-05-09 15:00:35 -04:00
2026-05-09 15:00:35 -04:00
2026-05-09 15:00:35 -04:00
2026-06-03 15:18:18 -04:00
2026-06-06 01:12:29 -04:00
2026-05-13 22:35:52 -04:00
2026-03-07 11:24:05 -05:00
2026-05-06 13:48:47 -04:00
2026-03-05 15:10:53 -05:00
2026-03-12 19:08:51 -04:00
2026-05-09 15:00:35 -04:00
2026-05-16 15:59:40 -04:00
2026-06-04 21:29:12 -04:00
2026-05-09 15:00:35 -04:00
2026-05-16 15:59:40 -04:00
2026-06-06 13:21:43 -04:00
2026-05-16 15:59:40 -04:00
2026-05-16 01:21:27 -04:00
2026-06-05 12:38:47 -04:00
2026-05-20 07:51:58 -04:00
2026-05-14 23:38:23 -04:00
2026-05-13 22:35:52 -04:00
2026-05-09 17:36:07 -04:00
2026-05-16 15:59:40 -04:00
2026-05-16 14:45:06 -04:00
2026-03-08 20:51:27 -04:00
2026-03-12 19:08:51 -04:00
2026-03-06 16:43:11 -05:00
2026-05-16 14:45:06 -04:00
2026-05-13 22:35:52 -04:00
2026-05-13 22:35:52 -04:00
2026-05-13 22:35:52 -04:00
2026-05-13 22:35:52 -04:00
2026-05-13 22:35:52 -04:00
2026-03-07 11:54:11 -05:00
2026-05-11 18:19:50 -04:00
2026-03-06 12:48:02 -05:00
2026-06-06 13:57:26 -04:00
2026-05-15 17:17:05 -04:00
2026-05-04 04:52:40 -04:00
2026-05-04 05:20:03 -04:00
2026-03-07 15:20:39 -05:00
2026-05-15 17:17:05 -04:00
2026-05-09 15:00:35 -04:00
2026-05-09 15:00:35 -04:00
2026-03-19 19:53:09 -04:00
2026-05-02 18:31:36 -04:00
2026-05-13 22:35:52 -04:00
2026-05-16 14:45:06 -04:00
2026-03-09 23:16:02 -04:00
2026-06-04 22:31:22 -04:00
2026-03-09 00:55:09 -04:00
2026-03-11 23:49:23 -04:00
2026-03-09 01:13:23 -04:00
2026-06-04 23:16:21 -04:00
2026-05-16 15:59:40 -04:00
2026-05-16 03:00:20 -04:00
2026-03-13 21:55:29 -04:00
2026-05-06 20:37:48 -04:00
2026-05-16 03:00:20 -04:00
2026-03-07 00:10:35 -05:00
2026-05-16 03:00:20 -04:00
2026-05-10 10:13:56 -04:00
2026-03-06 12:59:18 -05:00
2026-05-16 15:59:40 -04:00
2026-05-02 13:23:00 -04:00
2026-03-10 09:53:59 -04:00
2026-03-11 20:30:09 -04:00
2026-05-09 15:00:35 -04:00
2026-03-10 09:27:12 -04:00
2026-03-10 09:27:12 -04:00
2026-03-10 01:23:57 -04:00
2026-05-13 22:35:52 -04:00
2026-05-09 15:00:35 -04:00
2026-05-13 22:35:52 -04:00
2026-05-20 07:51:58 -04:00
2026-05-20 07:51:58 -04:00
2026-05-04 05:18:04 -04:00
2026-05-16 11:22:41 -04:00
2026-05-09 16:55:45 -04:00
2026-03-09 23:25:06 -04:00
2026-03-07 21:40:40 -05:00
2026-06-03 11:31:29 -04:00
2026-06-05 11:52:49 -04:00
2026-05-09 16:55:45 -04:00
2026-05-16 03:00:20 -04:00
2026-06-02 02:20:07 -04:00
2026-05-13 22:35:52 -04:00
2026-03-04 09:46:02 -05:00
2026-05-20 07:51:58 -04:00
2026-03-04 10:01:55 -05:00
2026-05-05 20:51:03 -04:00
2026-06-05 20:14:39 -04:00
2026-05-13 22:35:52 -04:00
2026-05-14 23:13:17 -04:00