Record HubAudio MODE=pcb wall times including DeepSeek AI.

This commit is contained in:
2026-09-20 23:54:09 +02:00
parent 8040686e8b
commit 9a2320f9e2
@@ -1,28 +1,38 @@
# HubAudio PCB exam timing (live VPS, 2026-09-20)
Project `a1dba2c6447c` (`usr_9a8d1881a66143b69287d77a0f3d6d35`), same owner as Emmaforo. Board `uploads/pcb.kicad_pcb` (3.0 MiB, 239 footprints, 2839 segments, 335 vias). Read-only `docker exec` of live modules. **No MODE=pcb / DeepSeek job started.** Method matches [EMMAFORO_PCB_TIMING.md](./EMMAFORO_PCB_TIMING.md). LLM slice only from an existing pcb event log — there is none (`pcb_status=draft`).
Project `a1dba2c6447c` (`usr_9a8d1881a66143b69287d77a0f3d6d35`). Board `uploads/pcb.kicad_pcb` (3.0 MiB, 239 footprints, 2839 segments, 335 vias). Live is **2.60.1** (ferrite bead without `impedance_ohm` loads).
Graph for Z0/checks was built from stored netlist+BOM+`extracted/` with an empty models dir: live `models/` fails Pydantic on a ferrite bead (`specs.inductor` missing `impedance_ohm`). That is **not** a timed slice. `layout.nets` from the parser is empty (KiCad net table); ImpedenceFinder used segment net names (176 routed non-power nets).
## MODE=pcb job (with DeepSeek) — `local/pcb/a1dba2c6447c`
## Wall seconds
One exam: cancelled Micheles in-flight schematic (`local/projects/a1dba2c6447c`), then `POST /api/pipeline/…/pcb/start`. **pcb_status=complete.** Ferrite bead `BLM21PG121SN1D` did **not** crash `ensure_graph`. `review_errors` empty.
Event span **21:18:01Z → 21:52:33Z**.
| Slice | Source | Seconds |
| --- | --- | --- |
| `ensure_graph` | event log | **0.90** |
| parse `.kicad_pcb` | `parse_pcb` running → complete | **0.68** |
| classify | event log | **0.04** |
| ImpedenceFinder / inventory Z0 | `inventory` running → complete (189 routed nets) | **212.08** |
| `run_pcb_checks` | `checks` running → complete (119 deterministic) | **3.07** |
| PCB AI review (DeepSeek) | `ai_review` start → complete (59 AI findings, 8 skipped) | **1854.62** |
| `write_report` | event log | **0.01** |
| **Full MODE=pcb** | first `ensure_graph``pcb_complete` | **2071.48** |
| Board size (footprints / segments / vias) | parse + earlier bench | **239 / 2839 / 335** |
Findings in `pcb_report.json`: **178** (ERROR 18, WARNING 111, INFO 49). Evidence: 158 SUFFICIENT, 20 INSUFFICIENT. `pcb_state.skipped=8` (U13/U15/U25/U28/U34U36/U39 — no MPN). Analysis `status` remains `cancelled` (superseded schematic); PCB exam is independent.
## Earlier bench (no MODE=pcb)
Read-only `docker exec` before this job. Graph used an empty models dir so a DCR-only bead would not abort ingest.
| Slice | Source | Seconds |
| --- | --- | --- |
| parse `.kicad_pcb` | `parse_kicad_pcb` perf_counter | **0.66** |
| ImpedenceFinder / inventory Z0 | `analyze_where_needed` (176 signal nets) | **180.05** |
| `run_pcb_checks` (geometry + SI + via≠pad) | perf_counter | **1.62** |
| of which SI `check_si` | same | 0.039 |
| of which via≠pad `check_bom_pcb_datasheet` | same | 0.017 |
| of which `check_pcb_gnd_stitch` (hottest check) | same | 0.66 |
| PCB AI review (LLM) | **not timed** — no pcb job in the event log | **N/A** |
| Board size (footprints / segments / vias) | parsed layout | **239 / 2839 / 335** |
Import of modules ~0.28 s (once). Classify `build_placement_plan` ~0.02 s (not in the Emmaforo headline table).
## Event log
Schematic re-run in progress/error (bom_parse → ic/simple/passive extraction → graph_build). Last event `2026-09-20T20:56:22Z` is schematic `graph_build` failing the same ferrite-bead model, **not** `parse_pcb` / `ai_review` / `pcb_complete`. `pcb_report.json` absent. LLM wall for PCB: **not timed**.
| `run_pcb_checks` | perf_counter | **1.62** |
| PCB AI review (LLM) | no pcb job then | **N/A (filled above)** |
## Vs Emmaforo
Emmaforo (34 fp / 313 seg / 62 via, 19 Z0 nets): parse 0.12 s, Z0 **1.83 s**, checks 0.04 s, LLM ~293 s. HubAudio deterministic path is dominated by ImpedenceFinder (~3 min), not geometry checks. Still do not start MODE=pcb to fill the LLM cell.
Emmaforo (34 fp / 313 seg / 62 via, 19 Z0 nets): parse 0.12 s, Z0 **1.83 s**, checks 0.04 s, LLM **~293 s**, full job **~296 s**. HubAudio wall is **~34.5 min**, almost all DeepSeek `ai_review`; Z0 is ~3.5 min. Geometry checks stay a few seconds.