From 9a2320f9e2f5c43817ba5cd044ec8cacc6c41220 Mon Sep 17 00:00:00 2001 From: Michele Bigi Date: Sun, 20 Sep 2026 23:54:09 +0200 Subject: [PATCH] Record HubAudio MODE=pcb wall times including DeepSeek AI. --- .../docs/development/HUBAUDIO_PCB_TIMING.md | 42 ++++++++++++------- 1 file changed, 26 insertions(+), 16 deletions(-) diff --git a/periscope/src/docs/development/HUBAUDIO_PCB_TIMING.md b/periscope/src/docs/development/HUBAUDIO_PCB_TIMING.md index 086500b..1c24aac 100644 --- a/periscope/src/docs/development/HUBAUDIO_PCB_TIMING.md +++ b/periscope/src/docs/development/HUBAUDIO_PCB_TIMING.md @@ -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 Michele’s 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/U34–U36/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.