← Commit history

Deliver Board34 R10 prototype review, current simulator twin and 4m34s narrated process cut

John Lauer ·47014bd79a · ·parent 240b78a
39 files changed +1689−71
README.md+2−2SKILL.md+5−1docs/completion-plan-history-r9-r10.md+59docs/completion-plan.md+21−49docs/process-video-r9-history.md+17docs/process-video.md+11−9docs/project-page/board34-r10-side-cooling.jpgdocs/project-page/electronic-load-datasheet-r0.pdf+8−8mechanical/side-fan-r10/collision-input-recheck.json+5mechanical/side-fan-r10/fan-live-off.json+1mechanical/side-fan-r10/fan-live-on.json+1mechanical/side-fan-r10/fan-video-review.json+34probing-flow/progress-history-pre-r10.json+44probing-flow/progress.json+18probing-preview-r10-original/probing-flow/twin/probing-preview-r10-original/board.json+6probing-preview-r10-original/probing-flow/twin/probing-preview-r10-original/probe-registration.json+180probing-preview-r10-original/probing-flow/twin/probing-preview-r10-original/viewer/base-scaffold-black.glbprobing-preview-r10-original/probing-flow/twin/probing-preview-r10-original/viewer/control-panel-mount.glbprobing-preview-r10-original/probing-flow/twin/probing-preview-r10-original/viewer/control-panel-scaffold.glbprobing-preview-r10-original/probing-flow/twin/probing-preview-r10-original/viewer/layout-scene.json+315probing-preview-r10-original/probing-flow/twin/probing-preview-r10-original/viewer/machine-pin-medium-short.glbprobing-preview-r10-original/probing-flow/twin/probing-preview-r10-original/viewer/probing-preview-r10-original.glbtools/assemble_r10_review_video.py+36tools/build_project_datasheet.py+2−2tools/render_r10_hero_video.mjs+10videos/full-edit-r10/captions.vtt+97videos/full-edit-r10/chapters.json+130videos/full-edit-r10/contact-sheet.jpgvideos/full-edit-r10/edit-report.json+353videos/full-edit-r10/electronic-load-r10-review-1080p.mp4videos/full-edit-r10/electronic-load-r10-review-web.mp4videos/full-edit-r10/hero-render.json+7videos/full-edit-r10/narration/closing.mp3videos/full-edit-r10/narration/closing.txt+1videos/full-edit-r10/narration/opening.mp3videos/full-edit-r10/narration/opening.txt+1videos/full-edit-r10/r10-assembly-hero.mp4videos/full-edit-r10/segments/r10-simulated-fan.mp4videos/full-edit-r10/storyboard.json+325
README.md+2−2
@@ -59,13 +59,13 @@ Earlier assembled-harness study with simulated fan speed. Factory fan leads are - D1 now uses [SBR10U45SP5-13](https://wiki.adom.inc/adom/sbr10u45sp5-13), with published symbol, footprint and drawing-derived nominal STEP/GLB assets. Its local thermal study excludes Q1 and is not complete assembly acceptance. - The fan has a [component page with GLB motion states](https://wiki.adom.inc/adom/mf40200v1-1000u-g99). Its preview is simulated; shared viewer integration remains proposed. - The [thermal budget](docs/thermal-budget.md) now matches the 55 °C firmware trip ceiling. The earlier 25 W assumption is retained as an unqualified future option; R0 targets 5 W and still requires cooling validation.-- The [video inventory](videos/inventory.json) distinguishes raw native takes, reviewed excerpts, storyboard candidates, headless reviews and solver replays. Static or clipped takes are rejected for the action film. The [updated narrated review cut](docs/process-video.md) runs 4 minutes 21 seconds. Human editorial approval and final brand treatment remain open.+- The [video inventory](videos/inventory.json) distinguishes raw native takes, reviewed excerpts, storyboard candidates, headless reviews and solver replays. Static or clipped takes are rejected for the action film. The [updated narrated review cut](docs/process-video.md) runs 4 minutes 34 seconds. The R10 edit includes brand stings and remains available for human editorial review.  Read the [engineering status](docs/status.md), [placement review](docs/placement-review.md), [library review](docs/library-review.md), [cost breakdown](docs/cost/README.md), [firmware/control-panel contract](docs/firmware-contract.md), and [raw clip log](videos/shotlog.json). The [AI Flow report](docs/runs/board-codex-20261007-1749/README.md) records the run.  The 3rdPartyFab two-layer rules are loaded. Native DRC, current/thermal analysis, the cooling assembly, physical calibration and industrial qualification must pass before production use. No hardware has been built or ordered. -[Watch the 4:21 narrated review](docs/process-video.md) · [Build clips and review notes](docs/build-clips.md)+[Watch the 4:34 narrated review](docs/process-video.md) · [Build clips and review notes](docs/build-clips.md)  ## Project datasheet 
SKILL.md+5−1
@@ -12,8 +12,12 @@ Use the selected 3rdPartyFab profile through Adom AI Flow. Keep the process's pr  Regenerate independent connectivity with tools/netlist.py and schematic with tools/make_schematic.py. Native KiCad runs on the selected desktop or shared service, never a container KiCad installation. tools/host_build.py is currently target-specific: verify and adapt the host path/thread before use. It regenerates the staged board, so do not run it over accepted placement/routing or an open editor. Keep review candidates separate until accepted. -The portable C policy in firmware/load_core.c has no HAL/USB implementation. It cannot be flashed as a working load. The initial 5 W bring-up limit and assembly_qualified gate must not be bypassed by serial commands. Hardware operation requires a verified unit, correct wiring, cooling, calibration and a concrete test procedure; never energize a speculative pin mapping.+The portable C policy has host tests, and an output-locked STM32 USB bring-up build exists. This is not qualified functional-load firmware. The initial 5 W bring-up limit and assembly_qualified gate must not be bypassed by serial commands. Hardware operation requires a verified unit, correct wiring, cooling, calibration and a concrete test procedure; never energize a speculative pin mapping.  Read design/bom.csv and docs/cost/README.md for purchasing. Unknown Adom inventory quantities remain unknown. Prices are dated snapshots; refresh before an authorized purchase. No ordering is implied by opening this skill.  Record only the task's own native CAD/dashboard windows. Keep timestamps, failures, playback speed and simulation labels in videos/shotlog.json. Inspect decoded clips; remove idle/static shots from the demo. Follow the video-review workflow before final composition/publication. Never present replay or simulation as live hardware measurement.++## Current delivered design identity++Use Board34/R10 and read `docs/completion-plan.md`. AIFlow design finish passed with nominal passive cooling assumptions; physical qualification is later. The active simulator project is `probing-preview-r10-original`; pass that exact `--project` and port 4896. The root `probing-flow` contains historical candidates and must not be used as the active simulator by inference. Recheck all collision input hashes before showing it. The current hero is `mechanical/side-fan-r10/side-fan-assembly.glb`; supplier fin detail is simplified in the public model. Keep off/on/RPM animation explicitly simulated and the hardware output lock intact.
docs/completion-plan-history-r9-r10.mdadded+59
@@ -0,0 +1,59 @@+# Active completion plan++Updated 2026-10-13. Finish the custom electronic-load board through adom-aiflow, complete the probing simulation and project Wiki, and prepare the requested narrated build film. Supporting tool fixes do not complete this work. Preserve all acceptance gates. No physical cell actuation, ordering, fabrication, flashing or YouTube publication is authorized by this plan.++## Current board and run++- Adopted **Board34 / R23**, `aiflow/run/board-34.kicad_pcb`, SHA256 `74f8ac20cba6b95db26c40f5369156efec80cb80e35388fe064f6891ff78ff11`.+- Canonical schematic and PCB in `kicad/` are synchronized. Native comparison: 107 references, 276/276 connected pins match. Exact R23 native DRC: zero electrical errors and zero opens.+- Two layers, standard 1 oz finished copper; 2 oz on request. Public fab name: **3rdPartyFab**.+- 72 x 104 mm outline; large corner machine pins; edge-mounted J8 USB-C; TP14/15/16 included. Do not resume from Board32 or its cooling evidence.+- Run `aiflow/run`, target **AdomLapper**, thread **adom-custom-load**. Recheck live target and saved board before mutations. Current step **thermal**. Outline has no sharp corners; supported `outline round` verified zero changes. Current analysis passed with `checkpoints/board34-edge-spec-fields/fields.json`.+- Task binary `/home/adom/project/load-aiflow-edge-target/debug/adom-aiflow`. Source fixes published through `438f37f0654cb563b2e448fc0254e38ba388cbb9`; shared installed package is separate. One SSE dashboard on 8893.++## Open acceptance gates++1. **Thermal:** exact Board34 bare-board Fields screen fails; no fan/heatsink thermal credit has been accepted. Operating envelope remains 4.5–24 V, min(3 A, 5 W/V), Q1 guard 5.5 W, ambient 40 C, case ceiling 55 C. Do not weaken these. ATS candidate forced-air tables require installed airflow and a defined contact/spreading path. `mechanical/side-fan-airflow/` contains a conditional pressure budget, not proof of cooling.+2. **Probing:** `probing-preview-r9/probing-flow/collide.json` passes the full 221.5 s replay, 20 touches, 14,528 poses and 721 tether solves: zero head collisions and zero snags. Exact inputs are hash-bound. Wire-on-heatsink contact remains a physical wear review. Live simulator 4896 serves R9 in the existing single webview; always pass `ui --port 4896`.+3. **Cooling mechanics:** R9 corrects disconnected R6 carrier and R8 fastener intersections. One valid connected carrier; no unexpected fitted-body or checked hardware intersections; 301 exposed mask centres pass. M4x35 fan hardware and M3x10 captive clamp stacks are nominal, not supplier-released. Manufacturer fin geometry, Q1 machining/insulation stack, clamp preload and print retention remain unqualified.+4. **Simulation functionality:** fan animation is explicitly simulated RPM with authored acceleration/deceleration, not measured dynamics or hardware control. Complete electronic-load command/current/shunt/fault/reference tests before claiming functional simulation coverage. Browser now includes board-body obstacles; jaw, floor, module-compression and smoothed-input parity remains open.+5. **Delivery:** rerun downstream AIFlow finish/export gates on the final adopted board/assembly. Do not reuse old Board32 thermal/export acceptance. Refresh cooling metadata/BOM, datasheet, screenshots and exact component records after final geometry.+6. **Video:** build-clips page contains real Board34 carrier/layer and fan simulation footage. New TTS succeeded. A 4:21 narrated R9 review cut is assembled and decode/contact-sheet checked; human review and final brand treatment remain open. Reject long static captures as action shots; inspect contact sheets and actual playback before choosing excerpts.++## Next useful actions++- R9 Wiki, datasheet/BOM and clips published at 4daaf8f06e345a5cc33de64a0c8636f2855bdf1d; rendered full-board hero verified. No acceptance from older revisions transfers.+- Develop and check the real thermal assembly model; continue other deliverables while physical-only qualifications remain explicitly open.+- Complete electronic-load functional/reference simulation coverage; maintain the assembled narrated review film as a draft until human editorial review.+- Probing owner contribution submitted as draft PR2, stacked on existing scaffold PR1: https://wiki.adom.inc/adom/adom-aiflow-probing/prs/2. Source commit 593d65edca97812cca1d739152598bcc8138ac23; combined Rust22 and JS3 tests pass. Not merged or installed. Shared viewer performance PR remains unmerged.+- Synchronize this plan, Wiki and dashboard after engineering progress; run finish-guard before final handoff.++## Evidence and history++Current public project commit: `f42ada49eafd9d88ffc29bd4357ddb01dcecd968` (R9 narrated review film and docs), following `4daaf8f06e345a5cc33de64a0c8636f2855bdf1d` (R9 model, datasheet and clips).++The prior chronological plan, including superseded Board32 data, is retained in [completion-plan-history-20261013.md](completion-plan-history-20261013.md). Treat it as history, not the current resume target. The run ledger remains append-only.++## Active thermal alternative study++`mechanical/passive-board34-envelope/` tests a conservative 76.0984 × 76.2 × 50.8 mm Wakefield 125319 three-inch-cut envelope on the same Board34 probing route. It is not adopted; the R9 carrier would require redesign, and catalog resistance is not an installed rating. `probing-preview-passive-envelope` contains the separate check. The existing R9 public model and acceptance are preserved.+++Board34 passive feasibility update: the initial envelope failed with 14 head-collision episodes and three tether snags. The shifted envelope reduced this to one collision at TP16, including the landing, with zero snags; increased travel Z cannot resolve a blocked landing. A rearward envelope is being screened separately. No geometry or thermal credit has been adopted.++The isolated 0.2 mm Fields candidate completed with Q1 case rise 12.062 C and junction rise 14.372 C at 5.5 W, D1 rise 28.626 C, using catalog 1.522 K/W sink resistance and assumed contact/pad paths. This is supplied-parameter feasibility only; installed orientation, convection obstruction, contact spread, retention and sensitivity remain unresolved. Evidence: `checkpoints/board34-passive-thermal-candidate/fields/fields.json`.+++The decoded rearward and contact-preserving passive envelopes both pass the full 221.5 s replay (zero head collisions, zero snags). The contact-preserving position is X20–96.0984, Y19–95.2, Z12.85–63.65 mm in assembly coordinates. These remain envelope studies, not adopted assemblies. Summary: `mechanical/thermal-alternatives/board34-feasibility-review.json`. Do not use the earlier rearward bounding-box diagnostic as final evidence.++Probing reporting correction: 3 startup rail expectations are scored against synthetic declared nominal values; the other 17 observations are UNSCORED. None is SPICE or bench circuit acceptance. Source and skill fix in probing draft PR2 through `2f5155f8191465d788c9e89d57cec52588d66f1e`; three focused regression tests pass. Current local captures were regenerated with the corrected task binary; the shared package remains unchanged.++## R10 prototype-design continuation++Board34 is unchanged. The original publishable R10 assembly passes 650 fastener-pair checks, fitted-body checks and carrier connectivity. R10 uses a three-inch Wakefield 125319 passive heatsink, outboard fan with 6 mm plate, rear support and blind Q1 mounting; public fin render is simplified original geometry. The exact supplier-profile local variant has already passed the complete probing replay; the original public variant replay is running separately.++Fresh 0.1 mm Fields screen in `checkpoints/board34-r10-selection/fields` passed current and thermal AIFlow gates. At 40 C ambient, nominal Q1 case is 52.066 C and junction 54.376 C at 5.5 W. No heatsink fan credit is used. The nominal margin is narrow; sensitivity and installed thermal qualification remain explicit later bench tasks, not a reason to leave the design workflow unfinished. Existing limits were preserved. Placement and saved-pour proofs were revalidated against the updated spec.++Board34 native manufacturing-review exports now verify two copper layers, 348 plated drills (including four slots), three nonplated holes and 91 placement coordinates/rotations. `manufacturing-review/board34/review.json` binds the exact PCB. Final BOM/procurement completeness and CAM/assembly review remain clearly separated from these geometric export checks.++Next: complete Fields tour and original-model replay, register new images/assembly review, finish remaining AIFlow steps and fresh finish/export/delivery, refresh project hero/datasheet and film. No physical qualification is claimed.
docs/completion-plan.md+21−49
@@ -1,59 +1,31 @@-# Active completion plan+# Completion plan — Board34 / R10 -Updated 2026-10-13. Finish the custom electronic-load board through adom-aiflow, complete the probing simulation and project Wiki, and prepare the requested narrated build film. Supporting tool fixes do not complete this work. Preserve all acceptance gates. No physical cell actuation, ordering, fabrication, flashing or YouTube publication is authorized by this plan.+Updated 13 October 2026. **AIFlow design finish passed.** Current run is `aiflow/run`; board SHA256 `74f8ac20cba6b95db26c40f5369156efec80cb80e35388fe064f6891ff78ff11`. Do not resume Board32 or R9 as current. -## Current board and run+## Completed design work -- Adopted **Board34 / R23**, `aiflow/run/board-34.kicad_pcb`, SHA256 `74f8ac20cba6b95db26c40f5369156efec80cb80e35388fe064f6891ff78ff11`.-- Canonical schematic and PCB in `kicad/` are synchronized. Native comparison: 107 references, 276/276 connected pins match. Exact R23 native DRC: zero electrical errors and zero opens.-- Two layers, standard 1 oz finished copper; 2 oz on request. Public fab name: **3rdPartyFab**.-- 72 x 104 mm outline; large corner machine pins; edge-mounted J8 USB-C; TP14/15/16 included. Do not resume from Board32 or its cooling evidence.-- Run `aiflow/run`, target **AdomLapper**, thread **adom-custom-load**. Recheck live target and saved board before mutations. Current step **thermal**. Outline has no sharp corners; supported `outline round` verified zero changes. Current analysis passed with `checkpoints/board34-edge-spec-fields/fields.json`.-- Task binary `/home/adom/project/load-aiflow-edge-target/debug/adom-aiflow`. Source fixes published through `438f37f0654cb563b2e448fc0254e38ba388cbb9`; shared installed package is separate. One SSE dashboard on 8893.+- Native DRC and connectivity: zero new electrical violations/opens; 107 references and 276 connected pins match.+- Two layers, 1 oz finished copper; 2 oz is an option requiring corresponding review. Large corner pins, edge USB-C and routed TP14/15/16.+- Fresh exact-input 0.1 mm current and thermal gates pass; placement and saved-pour proofs refreshed. Q1 nominal case/junction 52.07/54.38 C at 40 C ambient and 5.5 W, using catalog passive cooling with no heatsink fan credit.+- R10 original public assembly: one connected carrier, 650 fastener pair checks and fitted-body checks clear. Green mask and exposed-pad GLB gate pass.+- Exact R10 full probing replay: 221.5 s, 20 touches, 14,528 poses, 721 tether solves; no modeled head collisions or snags. Input digests rechecked after twin generation.+- Board34 exports checked: two copper layers, 348 plated drill entries, three nonplated holes, 91 placements and 107 BOM references. Files at `manufacturing-review/board34`.+- Wiki hero, six README images and three-page datasheet refreshed. Smooth R10 render, native Fields/net/3D clips and R10 simulated fan startup/shutdown recorded. Narrated review cut about 4:34. -## Open acceptance gates+## Delivery work -1. **Thermal:** exact Board34 bare-board Fields screen fails; no fan/heatsink thermal credit has been accepted. Operating envelope remains 4.5–24 V, min(3 A, 5 W/V), Q1 guard 5.5 W, ambient 40 C, case ceiling 55 C. Do not weaken these. ATS candidate forced-air tables require installed airflow and a defined contact/spreading path. `mechanical/side-fan-airflow/` contains a conditional pressure budget, not proof of cooling.-2. **Probing:** `probing-preview-r9/probing-flow/collide.json` passes the full 221.5 s replay, 20 touches, 14,528 poses and 721 tether solves: zero head collisions and zero snags. Exact inputs are hash-bound. Wire-on-heatsink contact remains a physical wear review. Live simulator 4896 serves R9 in the existing single webview; always pass `ui --port 4896`.-3. **Cooling mechanics:** R9 corrects disconnected R6 carrier and R8 fastener intersections. One valid connected carrier; no unexpected fitted-body or checked hardware intersections; 301 exposed mask centres pass. M4x35 fan hardware and M3x10 captive clamp stacks are nominal, not supplier-released. Manufacturer fin geometry, Q1 machining/insulation stack, clamp preload and print retention remain unqualified.-4. **Simulation functionality:** fan animation is explicitly simulated RPM with authored acceleration/deceleration, not measured dynamics or hardware control. Complete electronic-load command/current/shunt/fault/reference tests before claiming functional simulation coverage. Browser now includes board-body obstacles; jaw, floor, module-compression and smoothed-input parity remains open.-5. **Delivery:** rerun downstream AIFlow finish/export gates on the final adopted board/assembly. Do not reuse old Board32 thermal/export acceptance. Refresh cooling metadata/BOM, datasheet, screenshots and exact component records after final geometry.-6. **Video:** build-clips page contains real Board34 carrier/layer and fan simulation footage. New TTS succeeded. A 4:21 narrated R9 review cut is assembled and decode/contact-sheet checked; human review and final brand treatment remain open. Reject long static captures as action shots; inspect contact sheets and actual playback before choosing excerpts.+Complete final video checks/publication and record `deliver`; then run finish-guard. Do not create another supervisor. Preserve the existing paused supervisor state. AIFlow dashboard remains one SSE view on 8893; simulator remains one Hydrogen tab on 4896. -## Next useful actions+## Later physical work — outside this design finish -- R9 Wiki, datasheet/BOM and clips published at 4daaf8f06e345a5cc33de64a0c8636f2855bdf1d; rendered full-board hero verified. No acceptance from older revisions transfers.-- Develop and check the real thermal assembly model; continue other deliverables while physical-only qualifications remain explicitly open.-- Complete electronic-load functional/reference simulation coverage; maintain the assembled narrated review film as a draft until human editorial review.-- Probing owner contribution submitted as draft PR2, stacked on existing scaffold PR1: https://wiki.adom.inc/adom/adom-aiflow-probing/prs/2. Source commit 593d65edca97812cca1d739152598bcc8138ac23; combined Rust22 and JS3 tests pass. Not merged or installed. Shared viewer performance PR remains unmerged.-- Synchronize this plan, Wiki and dashboard after engineering progress; run finish-guard before final handoff.+Prototype manufacturing/assembly review, installed cooling/contact/preload/print qualification, calibration, physical interlocks and firmware bring-up. No ordering, fabrication, flashing or actuation has occurred. The nominal thermal margin is small and is not a guaranteed installed rating. Firmware remains output locked. The simulator demonstrates access and authored RPM, not full circuit or hardware acceptance. Custom parts/hardware still need quotes; no complete purchase total is asserted. -## Evidence and history+## Resume locations -Current public project commit: `f42ada49eafd9d88ffc29bd4357ddb01dcecd968` (R9 narrated review film and docs), following `4daaf8f06e345a5cc33de64a0c8636f2855bdf1d` (R9 model, datasheet and clips).+- Electrical source: `kicad/`, run `aiflow/run`.+- Assembly: `mechanical/side-fan-r10`; public model is an original simplified render, supplier extrusion governs machining.+- Active probing project: **`probing-preview-r10-original`**, not the historical root `probing-flow/state.json`.+- Evidence: `checkpoints/board34-r10-selection/fields`, `probing-preview-r10-original/probing-flow/collide.json`, `manufacturing-review/board34/review.json`.+- Review video: `videos/full-edit-r10`; per-scene storyboard on port 8963, file watching disabled. -The prior chronological plan, including superseded Board32 data, is retained in [completion-plan-history-20261013.md](completion-plan-history-20261013.md). Treat it as history, not the current resume target. The run ledger remains append-only.--## Active thermal alternative study--`mechanical/passive-board34-envelope/` tests a conservative 76.0984 × 76.2 × 50.8 mm Wakefield 125319 three-inch-cut envelope on the same Board34 probing route. It is not adopted; the R9 carrier would require redesign, and catalog resistance is not an installed rating. `probing-preview-passive-envelope` contains the separate check. The existing R9 public model and acceptance are preserved.---Board34 passive feasibility update: the initial envelope failed with 14 head-collision episodes and three tether snags. The shifted envelope reduced this to one collision at TP16, including the landing, with zero snags; increased travel Z cannot resolve a blocked landing. A rearward envelope is being screened separately. No geometry or thermal credit has been adopted.--The isolated 0.2 mm Fields candidate completed with Q1 case rise 12.062 C and junction rise 14.372 C at 5.5 W, D1 rise 28.626 C, using catalog 1.522 K/W sink resistance and assumed contact/pad paths. This is supplied-parameter feasibility only; installed orientation, convection obstruction, contact spread, retention and sensitivity remain unresolved. Evidence: `checkpoints/board34-passive-thermal-candidate/fields/fields.json`.---The decoded rearward and contact-preserving passive envelopes both pass the full 221.5 s replay (zero head collisions, zero snags). The contact-preserving position is X20–96.0984, Y19–95.2, Z12.85–63.65 mm in assembly coordinates. These remain envelope studies, not adopted assemblies. Summary: `mechanical/thermal-alternatives/board34-feasibility-review.json`. Do not use the earlier rearward bounding-box diagnostic as final evidence.--Probing reporting correction: 3 startup rail expectations are scored against synthetic declared nominal values; the other 17 observations are UNSCORED. None is SPICE or bench circuit acceptance. Source and skill fix in probing draft PR2 through `2f5155f8191465d788c9e89d57cec52588d66f1e`; three focused regression tests pass. Current local captures were regenerated with the corrected task binary; the shared package remains unchanged.--## R10 prototype-design continuation--Board34 is unchanged. The original publishable R10 assembly passes 650 fastener-pair checks, fitted-body checks and carrier connectivity. R10 uses a three-inch Wakefield 125319 passive heatsink, outboard fan with 6 mm plate, rear support and blind Q1 mounting; public fin render is simplified original geometry. The exact supplier-profile local variant has already passed the complete probing replay; the original public variant replay is running separately.--Fresh 0.1 mm Fields screen in `checkpoints/board34-r10-selection/fields` passed current and thermal AIFlow gates. At 40 C ambient, nominal Q1 case is 52.066 C and junction 54.376 C at 5.5 W. No heatsink fan credit is used. The nominal margin is narrow; sensitivity and installed thermal qualification remain explicit later bench tasks, not a reason to leave the design workflow unfinished. Existing limits were preserved. Placement and saved-pour proofs were revalidated against the updated spec.--Board34 native manufacturing-review exports now verify two copper layers, 348 plated drills (including four slots), three nonplated holes and 91 placement coordinates/rotations. `manufacturing-review/board34/review.json` binds the exact PCB. Final BOM/procurement completeness and CAM/assembly review remain clearly separated from these geometric export checks.--Next: complete Fields tour and original-model replay, register new images/assembly review, finish remaining AIFlow steps and fresh finish/export/delivery, refresh project hero/datasheet and film. No physical qualification is claimed.+[Prior continuation history](completion-plan-history-r9-r10.md) is preserved. Shared probing fixes remain draft PR2; source review and deployed availability are separate.
docs/process-video-r9-history.mdadded+17
@@ -0,0 +1,17 @@+# Electronic load narrated process review — Board34 / R9++The updated review draft runs **4 minutes 21 seconds**, with 32 narrated scenes. It follows recorded sourcing, layout, analysis, silkscreen and model work, then shows the current R9 carrier and simulated fan startup/shutdown. The closing narration explicitly says thermal acceptance remains open. This is not a finished-board claim, industrial qualification or a YouTube publication master.++<video width="100%" controls playsinline preload="metadata" src="videos/full-edit-r9/electronic-load-r9-review-web.mp4"><track kind="captions" src="videos/full-edit-r9/captions.vtt" srclang="en" label="English"></video>++[Download 1080p review cut](../videos/full-edit-r9/electronic-load-r9-review-1080p.mp4) · [Captions](../videos/full-edit-r9/captions.vtt) · [Chapters](../videos/full-edit-r9/chapters.json) · [Scene/contact-sheet review](../videos/full-edit-r9/contact-sheet.jpg).++## Narration and editing++Fresh Adom TTS requests succeeded for the opening, fan sequence and closing. Prior narrated excerpts retain their original audio and speed changes. The carrier inspection runs at 1.5×; the probing clip runs at normal replay speed with a separately labeled 0.01× rotor presentation. Historical scenes are labeled as recorded design iterations. They must not be mistaken for acceptance of the latest board.++The [edit report](../videos/full-edit-r9/edit-report.json) records every source hash, narration script, duration and sequence. Captions are timed per scene rather than word-aligned. The web copy is approximately 13.3 MB; the 1080p copy is approximately 29 MB. The video contains no complete procurement quote or invented token cost.++Full decode and scene contact-sheet checks pass. Human audio/editorial review and final brand stings remain open. Repeated current-assembly footage in the introduction and close is deliberate review framing and can be tightened during that review. No autoplay is requested, and no YouTube upload has occurred.++Reproduce with `tools/assemble_r9_review_video.py`; the original [Board32 edit notes](process-video-board32-history.md) are retained as history. New raw R9 captures and selected excerpts are indexed in [R9 clip provenance](../videos/probing/r9-clip-review.json).
docs/process-video.md+11−9
@@ -1,17 +1,19 @@-# Electronic load narrated process review — Board34 / R9+# Electronic load narrated process review — Board34 / R10 -The updated review draft runs **4 minutes 21 seconds**, with 32 narrated scenes. It follows recorded sourcing, layout, analysis, silkscreen and model work, then shows the current R9 carrier and simulated fan startup/shutdown. The closing narration explicitly says thermal acceptance remains open. This is not a finished-board claim, industrial qualification or a YouTube publication master.+The updated review cut runs **4 minutes 34 seconds**, within the requested 4–5 minute range. It follows real sourcing, circuit, layout, analysis and silkscreen iterations, then closes with the fresh Board34/R10 design results. AIFlow finish passed; physical cooling, calibration and industrial qualification are still later work. -<video width="100%" controls playsinline preload="metadata" src="videos/full-edit-r9/electronic-load-r9-review-web.mp4"><track kind="captions" src="videos/full-edit-r9/captions.vtt" srclang="en" label="English"></video>+<video width="100%" controls playsinline preload="metadata" src="videos/full-edit-r10/electronic-load-r10-review-web.mp4"><track kind="captions" src="videos/full-edit-r10/captions.vtt" srclang="en" label="English"></video> -[Download 1080p review cut](../videos/full-edit-r9/electronic-load-r9-review-1080p.mp4) · [Captions](../videos/full-edit-r9/captions.vtt) · [Chapters](../videos/full-edit-r9/chapters.json) · [Scene/contact-sheet review](../videos/full-edit-r9/contact-sheet.jpg).+[Download 1080p review cut](../videos/full-edit-r10/electronic-load-r10-review-1080p.mp4) · [Captions](../videos/full-edit-r10/captions.vtt) · [Chapters](../videos/full-edit-r10/chapters.json) · [Scene review manifest](../videos/full-edit-r10/storyboard.json) · [Contact sheet](../videos/full-edit-r10/contact-sheet.jpg). -## Narration and editing+## What changed -Fresh Adom TTS requests succeeded for the opening, fan sequence and closing. Prior narrated excerpts retain their original audio and speed changes. The carrier inspection runs at 1.5×; the probing clip runs at normal replay speed with a separately labeled 0.01× rotor presentation. Historical scenes are labeled as recorded design iterations. They must not be mistaken for acceptance of the latest board.+The opening uses a smooth frame-rendered R10 assembly orbit and a heatsink visibility reveal. This is a render of the verified model, not live CAD footage. The closing uses a freshly recorded Fields walkthrough, sped up 10×, and reports the actual design-screen outcome. Microsoft-backed Adom TTS succeeded for both new voiceovers. Dark Adom brand stings bookend the draft. -The [edit report](../videos/full-edit-r9/edit-report.json) records every source hash, narration script, duration and sequence. Captions are timed per scene rather than word-aligned. The web copy is approximately 13.3 MB; the 1080p copy is approximately 29 MB. The video contains no complete procurement quote or invented token cost.+Historical clips retain revision labels, original narration and speed changes. They demonstrate the work that led here and must not be read as the latest geometry or acceptance state. Simulated fan motion is explicitly labeled, with slowed blade presentation; it is not measured RPM or a physical test. -Full decode and scene contact-sheet checks pass. Human audio/editorial review and final brand stings remain open. Repeated current-assembly footage in the introduction and close is deliberate review framing and can be tightened during that review. No autoplay is requested, and no YouTube upload has occurred.+The [edit report](../videos/full-edit-r10/edit-report.json) records source hashes, narration, durations and ordering. The per-scene storyboard is available locally at port 8963; the server has file watching disabled. Captions are scene-timed. The web copy is under 15 MB and the full-resolution copy is about 30 MB. -Reproduce with `tools/assemble_r9_review_video.py`; the original [Board32 edit notes](process-video-board32-history.md) are retained as history. New raw R9 captures and selected excerpts are indexed in [R9 clip provenance](../videos/probing/r9-clip-review.json).+Full decode and contact-sheet review are complete. This is a review cut for your editorial feedback, not a YouTube publication master. No upload or autoplay was performed. The video makes no complete procurement or AI-token-cost claim. Final audio polish and per-clip human review remain available through the storyboard.++Reproduce with `tools/render_r10_hero_video.mjs` and `tools/assemble_r10_review_video.py`. [R9 edit history](process-video-r9-history.md) is preserved.
docs/project-page/board34-r10-side-cooling.jpg
⋯ 1 unchanged line ⋯
docs/project-page/electronic-load-datasheet-r0.pdf+8−8
@@ -57,7 +57,7 @@ endobj endobj 9 0 obj <<-/Author (\(anonymous\)) /CreationDate (D:20261013025317-05'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20261013025317-05'00') /Producer (ReportLab PDF Library - \(opensource\)) +/Author (\(anonymous\)) /CreationDate (D:20261013030809-05'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20261013030809-05'00') /Producer (ReportLab PDF Library - \(opensource\))    /Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False >> endobj@@ -75,17 +75,17 @@ Gat=+?$"^Z'Re<2\<""$*6Zt=2G]Quh<q)8V+u5X-834OTN7@`9.jYM5CTehq$_8@$ko^IbL/Dkk?_F" endobj 12 0 obj <<-/Filter [ /ASCII85Decode /FlateDecode ] /Length 1936+/Filter [ /ASCII85Decode /FlateDecode ] /Length 1959 >> stream-Gat=+=`<%S&:Vs/R$S!)_No?@B[DMS:"s'>VMUN1+[Eh6[*=mL?':*2`W#Z2.*G[%@;?^:j:O942rBPro'm$ds(P5M1o/E25X@rY&I#EUe*q;P0\i_jI4$(\h6f)<'uUE4#n:t05<Sa^:0dA>C/p(SUgb5?9-9%r-ofhQ(t2G7X6b5V+i!U&Tc\F[5D\1Cn-9E[51,n=M3fLH;LQ&plIXnX:dD^#N"@-'/"%Gs.e+s2Dg+rD$E>5cd)?PaI;dKuiUJUsrQg2ZHGi^!L_X(S-)(sN=IO&ESVI;Sn_&(0))s!%V/agS-qX>jF5F\C#2OgB5nX[eobHm13$.nu8pm8b@76R5kj;D-<GDB21gs[A[@KJbK>n=QM[XF&fKWD*YoVr4\:SV*S*iXR`43m6@AuU)I)6qYd]]**!57=:NLU/KIMOhg^Ph*8RitLk&QV#7Ql'U=(0QjqEIS5^,NjL1m![B#;B3V.C//[8%r]1c*;AZSO%[SGc\VT*cjM1WQ+r"e9[ChFe#AiZeCSkIC5oMNh:gKY=",u08r3ohKqYgI<AH!mJnJCg>(UFC[.NVFqP\htS/8rFWitIeHKk4cQr6q7U#Z71*o1("`p6qY<QKHD$>!qiMN1YGE7e.7\G#,Qd?r$G#$P5B7MpiT\ee;e7,FGlhC](**(%5rRFjrHj@+/`2htI%)EO6jI4$?l>WBM@<#J5G_CEYb6f%']d7cM4Dhp/?G)3HU(gu-TTiW^lWRV*SiEplV;G1Xc@[7cqdcL!2h<bG5[tQcY]/Pu;#?53*7\u?6X%d=s+$9lo>IB!Mo%.T^%lW;g&Hdg#`agnAqitChoUZhWDudfEl/Tb)!CaLY4hS9H*Zfh%#a8XAFAC$sSj1:V:bS4PFq3dY.Etpci!%_BnIInS'%YCupLDNBl8eV"HM)7g9>t^)m.+oH\N<C7Q.3!Krg%*dbi7mY2hQRgQFa\n'H*sJ\6DPBr_eWcV0&q(3`r$@/PYoh*^rXP_p(L`!;,]P].SO.qKtLuRN\qB;W=^"rT/j<)R!>6;C,ZRLGRj9:DXR5j)-XXG@)DARZ/l'9]_jMi]7)THmZ,;[50F(0&.j8]Dcj@N^SVV&L6dW7=m*HQJ'^Eb3aW5:G$#o:Xj(=:3!0"8$%s+X]d5c9d$kTS6:oe'R\"^dd<!.#1U'E6%P=;joA)aVMQMIS/HOj9dss2I6KB'gf7]B$j-q`C=UmO"3H9nRDqeikS2+1i=XTr/Zh%('oiMb,J7Cp&o&Iq'k(g-nX6C>LC::A^.Wke^Jp<aIkIdk3#H,*cFMKK\3\\DV*@\LH2lPa$>J!`d8Boi4LBO_O8D3b?Y5eQTE):AYV`tGktt$q`k55_]2MF!'V$&t[QL0kPh6U_7V+uJbZCL>p'AP/_)7)Y`bmdXUoV]1AU&Z8f:@E0nI5)on244?!nVU`h:k3H@Zr`%T1YIhUX82@3374P:l(bN+K>/V)pQ\13:l>Ie(JON.&_6A'W!mYp?AA/F8n$RhY<A?0Vq7I_@[>sGfT<j-r&rZUJ=d,;)Fif%1jlN&NEs'%2a1.Y>)SLEN%.s4EMu^V,bU)HP>bIGoI4CLqP5)^/Y$'ELhIpH`%</am!'3@S`e.h"u/[m9c1`P'MKpqk<K9#495#rL<N$_;Lm=8).jF$b*eB+F!UR48aI7P.t12B8SD(-T!EOiMM6AX^p[ZMcj,`3uqu!B,+#$1toD8XVO-@Vp`)T$8fqL3V@&Fi>"V#M*55nlssUoY!@J%G/@*miJNC;aZ,Ri7pL03m@;Cb40[9=6J"l_e.>dUo_uE\0Q6m$d/?qH")ebfj,%'K"/0^fb.tOtL78,B.*WqT'4Cmr3@UAi\a5![ECIF;JhYt7U7:g"SZf+IqI6]6k<Le+(>,4C2FDs*=r4tr*/j0ei/*a(71+Z@#X+>ceqhR)l7W]9HiF*JgJZZ~>endstream+Gat=+>Ap!%'RnB33%lemQ&Pfs0=CY<9@GfQUhShaI>AS3?u/V#0Q_iT?L<g2D[(U4"`5hA!?[&;rQ]VI4`^)_m/JIW3grn>e0E;;acsHR$#&lgI@)#(nt?YVSGl"CeI$nir/`63[16!HS.h5O.^Vf:6rL:WrhU.i9Ve1oOj5B(W_gYij,dWY*T-PeT'Q(+d,YF+hEK=,#,)]br^sl=Fm@SpqN+4"6%BLhF0/-^[["?:R(']*5']$lh`!97]qI5#%.JKS;sSL.E'7bEc\\L'ob(+-Q**f(G0\!VYP@HF&WVe`gX9KfKG9/Yjd\,I]i!Z3B,(3;?uq%6.?=;nLdK^iNo))+C&3!#)I"-3QH$+$Yd#u0Dq(-T^WO?pMUo%)e(lFE`T?c>qrp;gF"p<$SefhP#<ld]6KqRr+Fo%;k=3`Z-pR<m^#)?Maj#JoQ&@skEgW5.<Mjc"pVCeZmsE(OT\93K^Ib[H]Vmj']g'1*^38;*.m>I0.sObc2h7JT8Z_hAUgSL?H'r5a3NfQVW72_s>Ii;4r)Y=(\#%#sM);+crDbU%VLli`;d-ij*bcM?c1Ors\2c3[@oZmX$hVm;aY?46"[gBdh&bBW;p=Q6-^DhcRo385PbhZbB&Kme/\#uf6ICb67g<.$B1Cqh8Mr.jP)5tp(P@,I&fQGq)`+a[hO`2k>Ili-RaB!gjQ\f]BlRP]5IMF8EM?9mCPKFP$)<2.,i0)D)"&!tTJ=6T&OWa$qGO@!?GkZHc_?$:#/gkKJu$TM,J%Z9?GDIYrOY"Q,\*:/;Gs5ubcl6%[h<7fXSJXL$d)SCo6a6bI$oluNO7,?G=9C7doE<EN5*Z@6]h9gq&1,q2Wh(Q'<e4UU\@_"`u'Qge&RB11%fL,H?aEo3B[<%&-g-Rk_)V:OpANcF%E/sYlqs?Q0.CsnW`@-p]joHW?ojZpZ'$qlZ)^\HM-e.]>nAD',*GBc(1YG.s5Wq]-Gum;a#R.VDmkn;KK=5,%J"pGAF0B>Y/qEP)`R58"5]pQ)VU>UL%'GE)Xk@oS,A>Xt--Y5$oPOAk6`]RD@Bk\=2Ke5OEV/.JYGQMubkb\u.e3oUDhks72]0Cg%C.<T9BOYNo'.(D=nt#;%26@4':Qop:S\,\"t.0a56oY&%$CYbK?]ji)X2En\GgSuCo'SDm6":K]+SZ]VAP22A\di2gn]9?L>S,gC)'(-l/p*Yd8-1'_3UD,-mhjt&H(bV8(&6(^qn1DT;D0#QJ^,bs'&Gd0PTc82=P3?:-aneZQCUsUEQ)S-(+n<?(d2s:9C&XF2u*0LFW]KR0+lGMPVK)#@eVqoA/"N6Sp6EfAQVb7d'bT"g=ch:C1Hd,7@)npu\NpF3kcl:uf@bVb75aF-JCU7)*.Trtnn(-1[g&[+`Z^c4HSn+3J7>Wjr1*T$HD(+^mK<V.jN?X#-gP,stlLK<;Snm_^o8bjPU])$9R1^9?]4Em="'sHoT<ff,0Ju4kcUD`UdKMr\JgQ#Dk&W(;5?$LaTheA&Mf#,[dM=9(GHhiMoBsKnO4A(4a$aK29ack(+?\iCS>WpG'[8Z'7.mjnR4aQ9d0a[)T^d8:de&>]FfaMp5p7`dKq+Pi_9SKncqo_SlNR6RMXNE?SM+LAZsb:!S^kaR7-Y#05DND-\kJ71o@(MJ?2)q9GcpAhF?Y^Sn''Kp2Rl/B*HqLo_$AfT=/Hf5eYZfL#h+)p=Xc)F],9g*Q6s/0F`o;#)H/k;,i-r+Y2+$(pk_(5j16_e/3@G*ct(ER5]qoH?m1F'f$8+u5Gho8;/BZuLF.j<Q3BW\FSY<onr+Nlec\=k/(i>_=nd#Rdi4Z5m[\9F;:gB.M2U'"W7lgL3'tUB>Q[@<IfP^YQ&W>q!SetM)5Fa"3A]]QP2$8(F2NfGer+4P[T`>m[4Nak10PIGSsMm)rZJR#J8$tYfjDW1/IdRO3AMcM<2rA32Z;L:64=n4#NE!sWr~>endstream endobj 13 0 obj <<-/Filter [ /ASCII85Decode /FlateDecode ] /Length 2396+/Filter [ /ASCII85Decode /FlateDecode ] /Length 2384 >> stream-Gat=,9lo&K'#!I0o[0(i.$>2l.66($;L@%i16/e`nHC+&#r,"*!,1%aoAfR&p`\<fWFi#4O_#0hDKNYf\rhe8r'^N?X,(XO2#@ta'[rqPBFue/o3_@(H.+ubn`+bR*hPp8JOMnF6CWk8Y&D(&-<\L8)-s;%8hG)[Ma#]R<D.%*]q`S\VqlD=nbb#0`aPB,@5NI,Rif$5m?QdDOT\5g&*?YhrHpCRMJ0P*i!=QCqIaDaC*]SYn"+rb.Ir7M@m7dc%bA`AD`9[^I?rPm+C\2CW"<0cDbfPc7%MfQ<g9WJT*u<*:U_R=5Oe8"Uh%^n]m^m's'D?+?\B.!H?CSWQ/u[Y/o.B?o19jLoc#L.pe;R*97E)/F,]C>hQbDReVt=kT.``<EdLA%f8Yu>?XQVEjjL/7:%q`Hrc9)-kn)LtE`&o+(5LRDUt^$TDrWZYKLIXlf27^R6=qa\>D7*hbZCi3L?YF'=6le5QE-a9UAMD#D;[0N[OK0OSDGEp9^<<.)SHDlA[O+^WO:0;EYeJI-_+U2<AgIR=/n`O&O9Q#o_$,H4">>fW"`hk@Em<M:nqbu>\YMjS(E+kD+$O\s*_MIIN[T=LR\O9n)VCh_s!E8Z2#:iB)"pl,7Wj\!9I)+mG/"B>ZOHT'no:1q/N+9CVU'CNTR/iiNdlE:R!0Eb@;/@?.[.S>kf078m_jnm3Va0=[9G7a)lQ-[tVn.CZ*%matMLBUT)\P/;$TO8a#8uRYLhDWLq3bR-HXVn9W3!Z9ANE,eV4\jl.gn2[>>*2N?eo5"fC:$BAS5nuop?k>,P+co6_J"4U;K>1l&:gMM3@bPKQZ']YCqUJRf>QBGZbjNgk1f+f:_Q'(d963_ot]$AumBhLH"5hr\7iS,[q:>16$#F$.Kq#HO[@qq&5,O,\N3l%bN'?j-P,.CraKAQ_FLZ]l^,mnFJ>@FiNWhr9W<8L34EjC9uk0%(5lmCB@16]hb\UrdRUoFf>1/<?R7`"4Q\NP6-F)YNXPER6?(nUA*4NKk21.TWRH*ddmKL:nE-u0h`:!5AL4n[SOVqLH-$=9(6!tMakO0U6iC4U/g1]`#MPQhisQ/,!.:WAS"kTq9<!"!<[L\OQpE7g"9dr%f8*L+!"^#+Y+)n#9'=B.5[jH;#rkL.!JDmDNfJ?4fL4*!Af8tTPH=2$?DJ:WnJAg#Fjd"NU7J:?d+F2g)qH<';o1K#F#I&\6V7i2O[9"jgL=X/GGAY$$.Y=bpXRJ+]V10<lfW>Fm]%'p^`o$9o+nWE\Y@c9`=#)<am-6"&a`=S4%9F168H7=O?l=).+doU`+gG=S\G1*49Wp0dbbZaKK<U>mo9/uWB2IXUuNHQSH`n!B*j1#P#at;ekXlWL1M)!2BZ1neg!$+/j&,K*NkId<aO9>3ieLg7?"rk2p(W$5Ad`cO^1tj(p^!%O(EfATZKN-`m\4mE<^nU_fn$*(8PkDV+SS;5E!O*AM8l#_IVJ[up"O9L*f,pZI!7C#b_i/_Na;%@gQ2tbHU]<GqMJkCP,/bpR'FHncoB7XT(W`5XjaIt?SSfT4hTiIJoB>jCDGWSVVl_NKN762!^Tb,ug%X@Q8E#TgduM/U9<WAH-&N%T+HM&Pc[P>),g+Y]0R'P_l,]_(FL6g`f8Z?NQ#u/6_J06PQG0/DlBn(u=g.N9K7nr'(Wo\^@AM68cAW)hNf%6VVQ2"4fE9W7O646A'E4tJ^UP)"k#Oa>_#?KN60.3j&W$s<5'(n3e3>/0Y`b//^hiPWkNtcDHWX`r%d'f8JC&Z*6&$-uYH50i&^!0h?dj5M6%];e;uqFDi8=451]me"-O?PcX/:OJ+G8Gr0LPN2)AE&VN8IURdZ7qEHr[an<#pYd@(&k'luhHbY0H"g),Z7BbC?[1\)$Cc0bJ$<Spnt!]Sb#q*QF<[^=&C>Fg?.SYota2qJ,X5aW0khhpL;k`kIqe%dH=`R'<VVe_,nrplB.?>)-J*9@]7[<BaTYl!.kE2F)6(V)"uL:uud@,?MTRJR&p_T+t/C^YELA8]r1ACP/@Q(/j:!OZeZ3\9;2SG`:Qe.P&<U)k"OgUTDM%E4!Q8=@umU"W-LPfHARR\D2>K6C6e*/A36%Mc(YL`=C\-_%2Ic_s+gCJZ928GL%KiL($S[4Rg]U5jJ@902Yk2]DHi$qt]8,<L=C6CCI@(T'u5!/)-gI[Ilnh&+rAe6tb7loP`IOXj1+q0DV(%ntOmFXYpM>?M`[RCo]_4XCJ%?R$-Q&R832:e!i#BGIR1_'_9T;Tkd;QX25F?MUq1&iPpSs3T=o8=YEN^kb2LX>[kq)2=<FE;).+>rke;$gp)'NQRW#pQiF,U8pTi8iUrG)k3+QB;L@&k+_0l7DE]-0f)o/&6hAjJ2tH"a1E`h.`*S\0Faq*!2ua,s;,R;~>endstream+Gat=,bAu@I'&D_$HKe*p'M4F5,V(rOl7Qs$)+V0AnHL1'#r,"*!,1%aoC;Q3plOj@<&7H*;_eZ&2nI<qh/Gb*INj9d.\`CAbs"Q1`O%'B8qM^Ss.tdG2uW[ihd-PGj5$XmOJESg[&N9SqY&*FP,6BmdC%,qe0:g*k[V;)[?O/24)0^tg-%A-p[>t5*6*mbN95%mo7Js9]s=.TBoo4^@/b8ucSsmYLmH3e>JRr!h_VlC,9\B2p?Y^OOl&PHo,a3;YYOA+]#j4%Zcr+E&W:ZrL"I;kF%Y%0lC<=3U/XR2B8BrAqDuLh"$\G+9%P'2lau]`mff0T,-3cNX#p-U/4ZIU=Zb`::X\a5h^CMFGEJsZq+\cP0rc=Aa$)jl2d2SrSrg8=p6%hH)^k6k^mlsuV,b-rm]XA'k;l?S6XX!=Uf`I)%^W9>CtEC8N>G_1(?p4ONm`V4A@B@]<@I%pI'kG7\4DLrC)n&.E`EfNFT47l%:&&<2PkYQdlTs`BjCd-UDI@@XL@4H[8pI/c6C$qKKUS[<>2BTV.p,N!OPiq?U*>YUI)GE8mulUek@Y)26++'V+-X;o%L:TNMn5s^Mc'[%j]roOL$)$SXaq4(u93n2IE4iL.f[U76nTi.$'O/mlk^MZ;S!--sTZl[gT<D""$!B1e1gXQgHk]U+@a"*g;uU\jiRU_T1kAqEihN0CbCO!kQq7VSfaO/O\`)!tRk&IbA$G9pO"8)-fMP@X\fdMst'rp%'");]V>1?8&iafB9r<L)8OU9[864F3l=Ldn$Y1ZSWGri$d_7s!itSrZnoQI<.q95YZs4Q/*[mh(.r%=o\;h@U)Je$<;t#.2`mjrbSER?,?&:)/2krAFO6,l^U,+[ZiQK`'%<=^27oLU^cO65cKm9%hP-dVY8(bU<\:d"0?f._9@QYEXT<5p_9Yd4<FSP;-7me'fIS9C3kP$jdfp2-S'FQ^?gQmgB>,mAhlA)="kVR<-=m/`X*3r.+gX1[jM]8%M#R]EcP\/_iqfm#?`HXk/_g/O4HR`E(KO%AZ[2TBt4LY:Hc2-DKbo>K%K,QJ:h^^UTB?H>2WR29gE&,V#^aKAN,e:POYFKHANRQ5Q[Cp+g-_\*-Pf=[+c3f#GpfampF$,NS=1NXK!1>EljTJF(sK`2q]6C5h8H7*BBZCV9cC5/)Q\2^q`M`1QZ6pkX(A,5X4qQ3TD#s]de2s)(C\LhGk*2,E.9hV;D$'X:`74ZHh(R=/FKg9RGh;R4EKDeB'a7_lRC2rc:teI,r"o=?$o(_'VR9ai;AF0n_AG'>f.2\.lf+Fg2VQl)Qn&m2<f>46]X-<HSBlAhA7a.X"DH,ole1RkS@!7QZc4A*Y6&EI83tat;ekXlWL1M)!2BZ1neg!$+/j&,K*NkId<aO9>3ieLeP:%:8OE>R1]K8Md\idqF@^pG.)?aY@*\&5mLPi\iZ9!K6B4^W.6T;:b'IFf&`\"i+H'.6SgkR_#o^&i^iD?b_.Y!^rf%%l;e-+]g38>6_0kO94Xa.DFJ3M%HS0UJT</T1;\f^-I.^/bcSjl?!EenTLKeSk#u6Ee=G!3Gi?lB:P!"rdh2jcG'%M7LF>RT6Bko?&I(q_(X+7<hd5<$M%;dqDsQf].a<_%Lu9W4WSfjJ>2`[nd;[d\rt?$:KY(kcdEW]cQA@7G3a8m"-KgLnNrZ/+O%oa/'de4*&XqQUG_PrKO;.S+7p2kbR3PI\A+pqM#7rBiilk2B?lNhqF:Z-<`0h@Qn1G6!7?k9p>Ema*6_L&'+?01Io]dmd,[V4XQ_eSTL!0QS,bX!nBZDDRK7_po7>]*<R]p?f>#]VpBborfIIYb;\a(3ElYakl)mBrf\M2.S1To;^g%S\H+Z87-LlEXcNW^E)d4g__<fgucT-tdnN!MbI.G/+,%bJY?6/]SLl8FM)Z<#YH+_mU[!/[Xmq/nYH;FW3lRG_R2WHIi1<j"gn8UQb:&-X-U\0JiF_57gihfs1K3AFY:A6J`jnf^)28RpJ0eIi7b2@B-4kS?j76N5ubdSdC(i=9[]K5T\^eId/J<;cGK:bY:O1jIbM3Y<0]OhMneYBB8S'>oPnH=OgbEH%S.@M$K5-TqcBOQN8(<_KhH)Uj$*VA`jB4XaQNbWjtBl/CMrS(\RZ>Oj[nbVtNa(),'*\%pAS7t+!j\o3g7l>&ILKYebMb&]Mp=nfgo\3T@[@CUp2:^eW[qC&('OEoh`J_&cp@OT0=]/WiQ7$6)3NQ"p^0KROcBB]!TDLt,Ns&O<+[-XCgM=\I$S?G<gVgF)S.*_2X#rDUR%nF:DE=M$\8D19l']%]n+[Go!Z3TjSa]6smUY:QPe6&@1*9D@fV9*ihP>$C*Y-a'=XHMfe])h&j1mGnXp`0SPcT"WY+dlT#D9ch1]~>endstream endobj xref 0 14@@ -102,11 +102,11 @@ xref 0000001342 00000 n  0000001414 00000 n  0000003121 00000 n -0000005149 00000 n +0000005172 00000 n  trailer << /ID -[<0da0493de43825555ccdd98ca88ab85e><0da0493de43825555ccdd98ca88ab85e>]+[<ae641b3d115bff79948047409f85ed8b><ae641b3d115bff79948047409f85ed8b>] % ReportLab generated PDF document -- digest (opensource)  /Info 9 0 R@@ -114,5 +114,5 @@ trailer /Size 14 >> startxref-7637+7648 %%EOF
mechanical/side-fan-r10/collision-input-recheck.jsonadded+5
@@ -0,0 +1,5 @@+{+  "pass": true,+  "changedInputs": [],+  "scope": "Exact input digests rechecked after building the R10 simulator twin"+}
mechanical/side-fan-r10/fan-live-off.jsonadded+1
@@ -0,0 +1 @@+{"_hints":{"examples":[{"js":"document.querySelector('nav').prepend(myMeterEl)","target":"shell"},{"frame":0,"js":"document.title","target":"workbench"}],"note":"Universal eval: inject JS into any HD surface. target = friendly name (shell|workbench|wiki|claude), url-substring, or target id. Omit target/js to list surfaces. frame = url-substring or index to descend into a nested context. Connects directly to the target's CDP socket so it works in dev AND release.","related":["/targets","/cdp-eval","/iframe-eval","/devtools"]},"contextId":null,"frames":[],"ok":true,"target":"http://localhost:4896/dashboard/index.html?board=probing-preview-r10-original","value":"{\"FAN1\":{\"state\":\"off\",\"rpm\":0,\"valid\":true,\"source\":\"simulated\",\"presentationScale\":0.01,\"phase\":0.9868333333333226}}"}\ No newline at end of file
mechanical/side-fan-r10/fan-live-on.jsonadded+1
@@ -0,0 +1 @@+{"_hints":{"examples":[{"js":"document.querySelector('nav').prepend(myMeterEl)","target":"shell"},{"frame":0,"js":"document.title","target":"workbench"}],"note":"Universal eval: inject JS into any HD surface. target = friendly name (shell|workbench|wiki|claude), url-substring, or target id. Omit target/js to list surfaces. frame = url-substring or index to descend into a nested context. Connects directly to the target's CDP socket so it works in dev AND release.","related":["/targets","/cdp-eval","/iframe-eval","/devtools"]},"contextId":null,"frames":[],"ok":true,"target":"http://localhost:4896/dashboard/index.html?board=probing-preview-r10-original","value":"{\"FAN1\":{\"state\":\"on\",\"rpm\":7000,\"valid\":true,\"source\":\"simulated\",\"presentationScale\":0.01,\"phase\":0.0315000313194318}}"}\ No newline at end of file
mechanical/side-fan-r10/fan-video-review.jsonadded+34
@@ -0,0 +1,34 @@+{+  "sourceClips": [+    {+      "file": "videos/probing/window-16190338-20261013-082414.mp4",+      "sha256": "8b66b892a291146dfcae4474242f3fbcb3de5d41ad2d3505dcf8d68d05f29285"+    },+    {+      "file": "videos/probing/window-16190338-20261013-082642.mp4",+      "sha256": "4f6bdefe336786af826bb7a1e50423fb872aa9e9fbd36d2228cd75d8ddc7b87f"+    }+  ],+  "selected": "videos/full-edit-r10/segments/r10-simulated-fan.mp4",+  "crop": [+    1300,+    300,+    1260,+    1120+  ],+  "review": "Startup and shutdown frames visually inspected; only workcell pane selected, adjacent threads excluded. Simulation RPM badge shows ramp and off/on state. Native footage, authored dynamics, no physical test.",+  "sequence": [+    {+      "source": "videos/probing/window-16190338-20261013-082414.mp4",+      "startSeconds": 2,+      "takeSeconds": 7.3+    },+    {+      "source": "videos/probing/window-16190338-20261013-082642.mp4",+      "startSeconds": 0,+      "takeSeconds": 7.3+    }+  ],+  "playbackSpeed": 1,+  "rotorPresentationScale": 0.01+}
probing-flow/progress-history-pre-r10.jsonadded+44
@@ -0,0 +1,44 @@+{+  "status": "in-progress",+  "baselineBoard": 32,+  "fixture": "Candidate: four large pins aligned on base scaffold; explicit PCB substrate gives board top 5.65 mm, zero XY pin error and zero seat gap. Original Board32 remains unchanged.",+  "sourceChanges": {+    "probing": "/home/adom/project/load-probing-20261012",+    "aiflow": "/home/adom/project/aiflow-fields-window-work",+    "publication": "AIFlow pin selection source published; probing development changes local, not released or installed.",+    "aiflowPublication": {+      "commit": "74561044c30bf421afec3bb52d14649ab6a0cfd6",+      "readbackVerified": true,+      "registryInstalled": false,+      "tests": "workspace tests and production compilation passed"+    },+    "baseScaffoldPublication": {+      "commit": "f68730265ab2899374d4a8c3a30de7cf127dd4f9",+      "registryInstalled": false+    }+  },+  "fan": "Deterministic timeline tests pass; initial viewer and simulated RPM badge integration compiles but is not yet visually validated.",+  "boardRevision": "Unadopted 72 x 104 mm candidate: USB-C mating edge aligned; TP3/TP7/TP11 relocated and routed to left bank; native DRC reports 0 electrical errors and 0 unconnected, with library/silkscreen/dangling warnings still open.",+  "recording": {+    "file": "videos/probing/window-2565810-20261012-162453.mp4",+    "durationSeconds": 60.666667,+    "kind": "baseline static capture; not an edit sequence",+    "review": "Frame inspected: valid native baseline board view, static capture only.",+    "additional": [+      "videos/probing/window-7932222-20261012-164522.mp4",+      "videos/probing/window-7932222-20261012-164614.mp4",+      "videos/probing/window-7932222-20261012-164731.mp4"+    ],+    "additionalReview": "Candidate views captured; posted keyboard refill not visually confirmed, do not label it a successful refill action.",+    "verifiedActionClip": "window-7932222-20261012-164731.mp4: 20.53 seconds of menu-driven candidate zoom inspection; not simulator footage."+  },+  "remaining": [+    "Free probe ground contact reach and full cooling assembly collision review",+    "Complete test plan, simulated sequence, fan visual playback and action recording",+    "Schematic/BOM and silk synchronization; current/thermal and manufacturing revalidation before candidate adoption",+    "Probing source publication after latest HEAD reconciliation and validation"+  ],+  "updated": "2026-10-12T17:16:58.791121+00:00",+  "geometry": "Complete candidate STEP exported with model dependencies; board GLB combined with cooling assembly and named fan rotor animation. Explicit nominal substrate envelope prevents cooler plate being mistaken for PCB.",+  "coverage": "Completed candidate screening: 19 measurements, 13 OK, six missing (four required, including duplicate buck-style labels). Unique missing nets 5V_AUX, VREF_2V5, BOOST_SW; FAN_TACH ground reach 52.5mm >50mm. No waivers. Full assembly redesign search running."+}
probing-flow/progress.jsonadded+18
@@ -0,0 +1,18 @@+{+  "status": "modeled-probe-clearance-passed",+  "boardRevision": "Board34 / R10",+  "activeProject": "probing-preview-r10-original",+  "activeTwin": "probing-preview-r10-original/probing-flow/twin/probing-preview-r10-original",+  "collisionEvidence": "probing-preview-r10-original/probing-flow/collide.json",+  "fan": "Authored off/on/off, 7000 RPM nominal with presentationScale 0.01; verified in actual Hydrogen R10 scene. Not measured fan dynamics.",+  "limits": [+    "No hardware actuation or physical qualification",+    "Synthetic startup expectations and unscored off-state observations are not full circuit validation",+    "Wire-on-heatsink rest needs wear qualification"+  ],+  "dashboard": {+    "port": 4896,+    "surface": "one Hydrogen Probing Workcell tab"+  },+  "history": "probing-flow/progress-history-pre-r10.json"+}
probing-preview-r10-original/probing-flow/twin/probing-preview-r10-original/board.jsonadded+6
@@ -0,0 +1,6 @@+{+  "board": "electronic-load-probing-candidate",+  "boardFrame": "electronic-load-probing-candidate · layout frame",+  "id": "probing-preview-r10-original",+  "name": "electronic-load-probing-candidate probing"+}\ No newline at end of file
probing-preview-r10-original/probing-flow/twin/probing-preview-r10-original/probe-registration.jsonadded+180
@@ -0,0 +1,180 @@+{+  "boardInstance": "electronic-load-probing-candidate",+  "componentMotion": [+    {+      "animation": "Fan.Rotor.Revolution",+      "instance": "electronic-load-probing-candidate",+      "maxRpm": 10000,+      "node": "Fan.Rotor",+      "presentationScale": 0.01,+      "ref": "FAN1",+      "source": "Authored 3s startup /4s stop for demonstration, not measured inertia. 7000rpm nominal; no airflow credit. Hardware fan has no PWM speed command.",+      "timeline": [+        {+          "rpm": 0,+          "source": "simulated",+          "state": "off",+          "time": 0+        },+        {+          "interpolation": "linear",+          "rpm": 0,+          "source": "simulated",+          "state": "on",+          "time": 22.255+        },+        {+          "rpm": 7000,+          "source": "simulated",+          "state": "on",+          "time": 25.255+        },+        {+          "interpolation": "linear",+          "rpm": 7000,+          "source": "simulated",+          "state": "on",+          "time": 179.458+        },+        {+          "rpm": 0,+          "source": "simulated",+          "state": "off",+          "time": 183.458+        }+      ]+    }+  ],+  "ground": {+    "clip_above_tip_mm": 12.0,+    "glb": "viewer/machine-pin-medium-short.glb",+    "method": "pin",+    "note": "the probe's ground tether MPin sits in this free GND contact for the whole run",+    "pin": "adom/machinepinmediumshort",+    "seat_mm": 2.883,+    "seat_why": "the shoulder sits on the contact's lip; the 2.15 mm tail goes through the contact and the board, its tip in the air under the board (the board hangs on its own machine pins, 5.65 mm of contact, board and air under the lip)",+    "tether_mm": 75.0,+    "tip_in_mm": 2.15,+    "tp": "J7",+    "x": 434.0,+    "y": 352.0+  },+  "points": [+    {+      "name": "DUT_POS",+      "pad_mm": 1,+      "tp": "TP1",+      "x": 412.0,+      "y": 340.0+    },+    {+      "name": "LATCH_Q",+      "pad_mm": 1,+      "tp": "TP10",+      "x": 417.2,+      "y": 342.8+    },+    {+      "name": "GND",+      "pad_mm": 1,+      "tp": "TP11",+      "x": 424.0,+      "y": 336.0+    },+    {+      "name": "FAN_TACH",+      "pad_mm": 1,+      "tp": "TP12",+      "x": 398.0,+      "y": 340.0+    },+    {+      "name": "SHUNT_N_SENSE",+      "pad_mm": 1,+      "tp": "TP13",+      "x": 398.0,+      "y": 344.0+    },+    {+      "name": "5V_AUX",+      "pad_mm": 1,+      "tp": "TP14",+      "x": 434.5,+      "y": 355.75+    },+    {+      "name": "VREF_2V5",+      "pad_mm": 1,+      "tp": "TP15",+      "x": 394.75,+      "y": 340.5+    },+    {+      "name": "BOOST_SW",+      "pad_mm": 1,+      "tp": "TP16",+      "x": 429.0,+      "y": 384.7+    },+    {+      "name": "LOAD_POS",+      "pad_mm": 1,+      "tp": "TP2",+      "x": 412.0,+      "y": 342.8+    },+    {+      "name": "SHUNT_P_SENSE",+      "pad_mm": 1,+      "tp": "TP3",+      "x": 418.0,+      "y": 336.0+    },+    {+      "name": "I_SET",+      "pad_mm": 1,+      "tp": "TP4",+      "x": 409.2,+      "y": 336.8+    },+    {+      "name": "GATE",+      "pad_mm": 1,+      "tp": "TP5",+      "x": 414.6,+      "y": 340.0+    },+    {+      "name": "V_GATE",+      "pad_mm": 1,+      "tp": "TP6",+      "x": 414.6,+      "y": 342.8+    },+    {+      "name": "3V3",+      "pad_mm": 1,+      "tp": "TP7",+      "x": 421.0,+      "y": 336.0+    },+    {+      "name": "TEMP_SENSE",+      "pad_mm": 1,+      "tp": "TP8",+      "x": 412.0,+      "y": 336.8+    },+    {+      "name": "HW_OK",+      "pad_mm": 1,+      "tp": "TP9",+      "x": 417.2,+      "y": 340.0+    }+  ],+  "profile": "probing-preview-r10-original",+  "states": [],+  "surfaceZmm": 5.605,+  "toleranceMm": 0.25+}\ No newline at end of file
probing-preview-r10-original/probing-flow/twin/probing-preview-r10-original/viewer/base-scaffold-black.glbadded
⋯ 1 unchanged line ⋯
probing-preview-r10-original/probing-flow/twin/probing-preview-r10-original/viewer/control-panel-mount.glbadded
⋯ 1 unchanged line ⋯
probing-preview-r10-original/probing-flow/twin/probing-preview-r10-original/viewer/control-panel-scaffold.glbadded
⋯ 1 unchanged line ⋯
probing-preview-r10-original/probing-flow/twin/probing-preview-r10-original/viewer/layout-scene.jsonadded+315
@@ -0,0 +1,315 @@+{+  "$shape": "adom/probe-twin-layout-scene@1",+  "baseScaffold": {+    "_source": "Hydrogen 3D Editor V2 (WorkcellBuilder): Base Scaffold 5 HOLES - black, 3 x 3 at 16 + 192 n, z -1.44",+    "glb": "viewer/base-scaffold-black.glb",+    "scale": 1,+    "tiles": [+      [+        16,+        16+      ],+      [+        16,+        208+      ],+      [+        16,+        400+      ],+      [+        208,+        16+      ],+      [+        208,+        208+      ],+      [+        208,+        400+      ],+      [+        400,+        16+      ],+      [+        400,+        208+      ],+      [+        400,+        400+      ]+    ],+    "z": -1.44+  },+  "controlPanel": {+    "_derivation": "Hydrogen 3D Editor V2 profile: V2.1.0 GLB in KiCad coordinates, contact (x, y) -> layout (169 + x, 683.8 - y), z 4.14; contact positions from control-panel_scaffold_v2.1.0.kicad_pcb (the editor's v2.0.1 table places MC15, MC20, MC29 and MC33 elsewhere)",+    "glb": "viewer/control-panel-scaffold.glb",+    "page": "https://wiki.adom.inc/adom/control-panel-scaffold",+    "position": [+      169.0,+      683.8,+      4.14+    ],+    "rotationZ": 0,+    "scale": 1000,+    "title": "Control panel (scaffold side) V2.1.0"+  },+  "fixtures": [+    {+      "_source": "Hydrogen 3D Editor V2 profile: ControlPanelMount_Scaffold.glb at assembly (287.78, 330.01, 0) + BSR offset (0, 283.316, -1.47), 180 deg about (0, 1, 1)",+      "glb": "viewer/control-panel-mount.glb",+      "instance": "Control panel mount",+      "position": [+        287.78,+        613.326,+        -1.47+      ],+      "rotationQuaternion": [+        0.0,+        0.7071067811865476,+        0.7071067811865476,+        0.0+      ],+      "scale": 1000,+      "title": "Control panel mount (scaffold side)"+    }+  ],+  "layout": "electronic-load-probing-candidate probing",+  "molecules": [+    {+      "anchored": true,+      "glb": "viewer/probing-preview-r10-original.glb",+      "instance": "electronic-load-probing-candidate",+      "molecule": "electronic-load-probing-candidate",+      "position": [+        432,+        336,+        0.05+      ],+      "rotationZ": 90.0,+      "sku": null,+      "title": "electronic-load-probing-candidate"+    }+  ],+  "plate": {+    "_source": "adom/base-scaffold-system (same plate as the DC_00 bundle)",+    "contactDiameter": 4.4,+    "frameHeight": 40,+    "grid": {+      "n": 18,+      "origin": 16,+      "pitch": 32+    },+    "panelThickness": 8,+    "panels": 3,+    "sheetSize": 600,+    "sheetThickness": 6.35,+    "size": [+      576,+      576+    ]+  },+  "units": "mm",+  "upAxis": "z",+  "wires": [+    {+      "color": [+        1.0,+        0.0,+        0.0+      ],+      "diameter": 0.51,+      "from": "electronic-load-probing-candidate J1",+      "gauge": "24 AWG",+      "name": "DUT input from PS1",+      "points": [+        [+          440.0,+          336.0,+          3.6499999999999995+        ],+        [+          440.0,+          336.0,+          11.2+        ],+        [+          441.0,+          336.0,+          11.2+        ],+        [+          441.0,+          587.8,+          11.2+        ],+        [+          219.0,+          587.8,+          11.2+        ],+        [+          219.0,+          593.8,+          11.2+        ],+        [+          219.0,+          593.8,+          3.5999999999999996+        ]+      ],+      "to": "Control panel MC2 (+PS1_SENS)"+    },+    {+      "color": [+        0.1,+        0.1,+        0.1+      ],+      "diameter": 0.51,+      "from": "electronic-load-probing-candidate J2",+      "gauge": "24 AWG",+      "name": "DUT return to PS1",+      "points": [+        [+          444.0,+          336.0,+          3.6499999999999995+        ],+        [+          444.0,+          336.0,+          11.2+        ],+        [+          443.0,+          336.0,+          11.2+        ],+        [+          443.0,+          585.8,+          11.2+        ],+        [+          231.0,+          585.8,+          11.2+        ],+        [+          231.0,+          593.8,+          11.2+        ],+        [+          231.0,+          593.8,+          3.5999999999999996+        ]+      ],+      "to": "Control panel MC20 (-PS1)"+    },+    {+      "color": [+        1.0,+        0.6,+        0.0+      ],+      "diameter": 0.51,+      "from": "electronic-load-probing-candidate J3",+      "gauge": "24 AWG",+      "name": "Auxiliary 5V from switched PS2",+      "points": [+        [+          452.0,+          336.0,+          3.6499999999999995+        ],+        [+          452.0,+          336.0,+          11.2+        ],+        [+          445.0,+          336.0,+          11.2+        ],+        [+          445.0,+          583.8,+          11.2+        ],+        [+          239.0,+          583.8,+          11.2+        ],+        [+          239.0,+          593.8,+          11.2+        ],+        [+          239.0,+          593.8,+          3.5999999999999996+        ]+      ],+      "to": "Control panel MC5 (+PS2_RLY)"+    },+    {+      "color": [+        0.1,+        0.1,+        0.1+      ],+      "diameter": 0.51,+      "from": "electronic-load-probing-candidate J4",+      "gauge": "24 AWG",+      "name": "Auxiliary return to PS2",+      "points": [+        [+          456.0,+          336.0,+          3.6499999999999995+        ],+        [+          456.0,+          336.0,+          11.2+        ],+        [+          447.0,+          336.0,+          11.2+        ],+        [+          447.0,+          581.8,+          11.2+        ],+        [+          247.0,+          581.8,+          11.2+        ],+        [+          247.0,+          593.8,+          11.2+        ],+        [+          247.0,+          593.8,+          3.5999999999999996+        ]+      ],+      "to": "Control panel MC23 (-PS2)"+    }+  ]+}\ No newline at end of file
probing-preview-r10-original/probing-flow/twin/probing-preview-r10-original/viewer/machine-pin-medium-short.glbadded
⋯ 1 unchanged line ⋯
probing-preview-r10-original/probing-flow/twin/probing-preview-r10-original/viewer/probing-preview-r10-original.glbadded
⋯ 1 unchanged line ⋯
tools/assemble_r10_review_video.pyadded+36
@@ -0,0 +1,36 @@+"""Update the authorized review draft after Board34/R10 design finish; preserve history."""+from pathlib import Path+import json,subprocess,hashlib+R=Path(__file__).resolve().parents[1];O=R/'videos/full-edit-r10';S=O/'segments';S.mkdir(exist_ok=True)+B=Path('/home/adom/project/video-tools/brand/adom-video-brand/media')+def run(a):subprocess.run(['ffmpeg','-v','error','-y',*a],check=True)+def dur(p):return float(subprocess.check_output(['ffprobe','-v','error','-show_entries','format=duration','-of','default=nw=1:nk=1',str(p)],text=True))+def sha(p):return hashlib.sha256(p.read_bytes()).hexdigest()+def new_scene(name,a,b,alen,blen,voice,delay,tag,offset=0):+ out=S/(name+'.mp4');label=O/(name+'-label.txt');label.write_text(tag)+ vf='scale=1920:1000:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:60:color=0x151923,setsar=1,fps=30'+ f=f'[0:v]trim=duration={alen},setpts=PTS-STARTPTS,{vf}[a];[1:v]trim=start={offset}:duration={blen},setpts=PTS-STARTPTS,{vf}[b];[a][b]concat=n=2:v=1:a=0,drawtext=fontfile=/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf:textfile={label}:fontcolor=white:fontsize=24:x=30:y=18[v];[2:a]adelay={delay}|{delay},apad[n]'+ run(['-i',str(a),'-i',str(b),'-i',str(voice),'-filter_complex',f,'-map','[v]','-map','[n]','-t',str(alen+blen),'-c:v','libx264','-preset','veryfast','-threads','2','-crf','21','-pix_fmt','yuv420p','-c:a','aac','-b:a','128k','-ar','48000','-ac','2',str(out)])+ return {'id':name,'source':str(a),'sourceSha256':sha(a),'additionalSource':str(b),'additionalSourceSha256':sha(b),'audio':str(voice),'audioSha256':sha(voice),'output':str(out.relative_to(R)),'duration':dur(out),'tag':tag,'narration':voice.with_suffix('.txt').read_text().strip()}+old=json.loads((R/'videos/full-edit-r9/edit-report.json').read_text())+opening=new_scene('opening-r10',B/'dark-intro-16x9.mp4',O/'r10-assembly-hero.mp4',5,12,O/'narration/opening.mp3',1500,'ADOM ELECTRONIC LOAD | Board34 / R10 | rendered nominal assembly')+# A 0.02 s narration tail is retained by the segment audio padding; opening audio ends before 17s.+closing=new_scene('closing-r10',R/'aiflow/run/window-16461108-20261013-075012-10x.mp4',B/'dark-outro-16x9.mp4',15.8,5,O/'narration/closing.mp3',0,'BOARD34 / R10 | DESIGN SCREENS PASS | PHYSICAL QUALIFICATION NEXT')+records=[opening,*old['scenes'][1:-1],closing]+for i,x in enumerate(records):+ if x['id']=='r9-simulated-fan':+  p=S/'r10-simulated-fan.mp4'+  records[i]={**x,'id':'r10-simulated-fan','source':str(p.relative_to(R)),'sourceSha256':sha(p),'output':str(p.relative_to(R)),'duration':dur(p),'tag':'R10 PROBING SIMULATION | authored RPM | blade motion x0.01','revisionScope':'Exact verified R10 model; two native Hydrogen takes cropped to the workcell pane'}++# R9 takes remain useful recorded history and are labelled as such.+for x in records:+ if x['id'].startswith('r9-'):x['revisionScope']='Historical R9 footage; superseded geometry, same authored fan behavior'+p=O/'concat.txt';p.write_text(''.join("file '"+str(R/x['output'])+"'\n" for x in records))+f=O/'electronic-load-r10-review-1080p.mp4';run(['-f','concat','-safe','0','-i',str(p),'-c','copy','-movflags','+faststart',str(f)])+assert 240<=dur(f)<=300+report={'status':'narrated-review-draft-human-editorial-review-pending','board':'Board34/R10','designFinishPassed':True,'physicalQualified':False,'youtubePublished':False,'file':str(f.relative_to(R)),'sha256':sha(f),'durationSeconds':dur(f),'scenes':records,'limitations':['Historical takes retain revision labels and original limitations.','No complete AI-token or hardware purchase cost claim.','Brand footage included; final audio/editorial polish remains review work.']}+(O/'edit-report.json').write_text(json.dumps(report,indent=2)+'\n')+t=0;chapters=[];vtt=['WEBVTT\n']+def stamp(s):m=round(s*1000);return f'{m//3600000:02}:{m//60000%60:02}:{m//1000%60:02}.{m%1000:03}'+for x in records:chapters.append({'t':round(t,3),'title':x['id'].replace('-',' ')});vtt.append(f"{stamp(t)} --> {stamp(t+x['duration'])}\n{x['narration']}\n");t+=x['duration']+(O/'chapters.json').write_text(json.dumps(chapters,indent=2)+'\n');(O/'captions.vtt').write_text('\n'.join(vtt));print(json.dumps({k:v for k,v in report.items() if k!='scenes'},indent=2))
tools/build_project_datasheet.py+2−2
@@ -14,14 +14,14 @@ p('PROTOTYPE — NOT RELEASED FOR FABRICATION. Values below are design limits or p('Digitally controlled constant-current sink for testing DC modules in an Adom probing workcell. Q1 converts DUT power to heat. Auxiliary 5 V independently powers logic and a tachometer-equipped fan.','BodyText') table([['Parameter','Design / policy'],['DUT operating voltage','4.5–24 V DC; not an absolute-maximum or transient rating'],['Load mode','Constant current; no qualified constant-resistance or constant-power mode'],['Allowed setpoint','0 to min(3 A, 5 W / DUT voltage). Examples: 5 V → 1 A; 12 V → 0.417 A; 24 V → 0.208 A. The 3 A ceiling is not attainable within this 5 W voltage envelope.'],['Power ceiling','5 W initial operating target; not a measured continuous dissipation rating'],['Cooling review conditions','5.5 W Q1 screening allowance, 40 °C ambient, 55 °C case upper-bound ceiling; no fan cooling credit'],['Accuracy / dynamics','Unspecified pending calibration and physical load-step tests'],['Hardware status','Unbuilt / unflashed; STM32 bring-up firmware intentionally output-locked OFF']]) story.append(PageBreak());p('Interfaces and protection','Title')-table([['Connection','Assignment / behavior'],['J1 / J2','DUT positive / ground'],['J3 / J4','5V_AUX / ground. Regulated external auxiliary supply; supply-current requirement remains unqualified.'],['J8 USB-C','USB CDC control; VBUS detection only, not fan/logic power. No galvanic isolation claimed.'],['J5 / J6','3.3 V UART TX / RX alternative; not 5 V tolerant control wiring'],['J7','Probe ground contact J7 at native PCB (116, 102) mm; current full motion review remains open'],['J9 fan','1 = 5V_AUX; 2 = GND; 3 = FAN_TACH. Confirm assembly polarity before energizing.']])+table([['Connection','Assignment / behavior'],['J1 / J2','DUT positive / ground'],['J3 / J4','5V_AUX / ground. Regulated external auxiliary supply; supply-current requirement remains unqualified.'],['J8 USB-C','USB CDC control; VBUS detection only, not fan/logic power. No galvanic isolation claimed.'],['J5 / J6','3.3 V UART TX / RX alternative; not 5 V tolerant control wiring'],['J7','Probe ground contact J7 at native PCB (116, 102) mm; full modeled motion review passes; physical contact qualification remains open'],['J9 fan','1 = 5V_AUX; 2 = GND; 3 = FAN_TACH. Confirm assembly polarity before energizing.']]) p('Control protocol','Heading2');p('Draft adom.load/1 newline-delimited JSON: identify, claim, status, set_current, arm, off, clear_fault and heartbeat. One controlling owner, boot identity and increasing request IDs. Request/applied current are separate. Firmware qualification cannot be enabled by a serial command.') p('Telemetry and interlocks','Heading2');p('Telemetry includes DUT voltage/current/power, case-temperature estimate and qualified upper bound, fan RPM and validity, setpoint, applied current, faults and sample age. Missing/stale values remain unknown. Hardware comparator/latch/watchdog protection and software lease/sensor checks require physical verification. Fault clearing does not automatically re-arm.') p('Fan','Heading2');p('Sunon MF40200V1-1000U-G99: 5 V, nominal 7000 RPM ±15%, two tach pulses/revolution; 3.3 V / 10 kΩ tach pull-up. The fan runs with auxiliary power; there is no independent PWM speed command. Software requires qualified 5000–10000 RPM, eight valid periods, and rejects tach history older than 15 ms. These are policy values, not measured shutdown timings. RPM does not establish airflow.') story.append(PageBreak());p('Mechanical, fabrication and qualification','Title') p('Revision identity','Heading2');p('Board34 is the adopted electrical design (SHA256 74f8ac20cba6b95db26c40f5369156efec80cb80e35388fe064f6891ff78ff11). The displayed R10 cooling assembly uses its 72 x 104 mm, nominal 1.6 mm PCB: four large corner pins on a 64 x 96 mm span, USB-C at the edge, and routed TP14/TP15/TP16. Native DRC is clean, 107 live footprint poses match, and all 276 connected pins match the schematic. Do not manufacture from the hero model.') p('Manufacturing intent','Heading2');p('Two copper layers using 3rdPartyFab. Standard finished copper: 1 oz; 2 oz available on request and requires corresponding rule/analysis updates. Assembly retention, fan clearance, wire routing, probe approach and tether clearance remain validation items. R10 has an outboard tach fan, reinforced carrier with 6 mm fan plate, and a Wakefield 125319 heatsink cut to 76.2 mm, through nominal AlN insulation and a copper spacer. Overall assembly is approximately 151 x 120 x 69 mm. The public fin model is an original simplified render; machining, print tolerances and retention require prototype review. The exact Board34/R10 thermal screen passes using catalog passive resistance with no heatsink fan credit.')-p('Evidence and open acceptance','Heading2');p('Board34 passes native routing DRC, exact-input current screening and schematic parity. R10 mechanical screening finds no unexpected intersections against fitted component bounds or in the fastener/support check, and the carrier is one connected solid; this is not structural qualification. The previous front support interfered with probing and has been replaced. The exact supplier-profile R10 model passes the full 20-touch replay with zero head collisions and zero snags; the original public-render model has a separate input-bound replay. Wire-on-heatsink wear, exact fin geometry, installed cooling, manufacturing release, firmware integration and physical calibration remain open. Fresh 0.1 mm screening predicts nominal Q1 case 52.07 C and junction 54.38 C at 40 C ambient and 5.5 W; margin is narrow and catalog/contact assumptions require later physical qualification. Simulated fan motion is not hardware evidence.')+p('Evidence and open acceptance','Heading2');p('Board34 passes native routing DRC, exact-input current screening and schematic parity. R10 mechanical screening finds no unexpected intersections against fitted component bounds or in the fastener/support check, and the carrier is one connected solid; this is not structural qualification. The previous front support interfered with probing and has been replaced. The exact supplier-profile R10 model passes the full 20-touch replay with zero head collisions and zero snags; the original public-render model also passes its separate input-bound replay. Wire-on-heatsink wear, exact fin geometry, installed cooling, manufacturing release, firmware integration and physical calibration remain open. Fresh 0.1 mm screening predicts nominal Q1 case 52.07 C and junction 54.38 C at 40 C ambient and 5.5 W; margin is narrow and catalog/contact assumptions require later physical qualification. Simulated fan motion is not hardware evidence.') p('Design sources','Heading2');p('Project source: https://wiki.adom.inc/adom/adom-custom-electronic-load<br/>docs/firmware-contract.md — protocol, limits and qualification locks<br/>docs/fan-feedback.md — fan and tach implementation/provenance<br/>docs/completion-plan.md — current revision boundaries<br/>probing-flow/progress.json — probing status (consult newest evidence)<br/>docs/cost/README.md — partial pricing, exclusions and unknowns') p('Document control','Heading2');p('Engineering datasheet revision R0-20261013-BOARD34-R10. This is a project-authored specification, not a component manufacturer datasheet. Design values may change following prototype qualification. Refresh this document whenever board identity, limits, connectors or acceptance status changes.') def footer(c,doc):c.setFont('Helvetica',8);c.drawString(45,25,'ADOM electronic load | Engineering prototype | R0-20261013');c.drawRightString(550,25,str(doc.page))
tools/render_r10_hero_video.mjsadded+10
@@ -0,0 +1,10 @@+// Deterministic canonical-viewer render, not a live recording or measured fan motion.+import puppeteer from '/home/adom/project/adom-video-brand/node_modules/puppeteer-core/lib/esm/puppeteer/puppeteer-core.js';+import fs from 'node:fs';+const out='videos/full-edit-r10/hero-frames';fs.mkdirSync(out,{recursive:true});+const b=await puppeteer.launch({executablePath:'/home/adom/.cache/ms-playwright/chromium-1243/chrome-linux64/chrome',headless:true,args:['--no-sandbox','--use-angle=swiftshader','--enable-unsafe-swiftshader']});+try{const p=await b.newPage();await p.setViewport({width:1600,height:900,deviceScaleFactor:1});await p.goto('http://127.0.0.1:8902/mechanical/side-fan-r10/review.html',{waitUntil:'networkidle0'});await p.waitForFunction(()=>window.review?.ready,{timeout:90000});+await p.evaluate(()=>{document.querySelector('header').style.display='none';document.querySelector('#viewer').style.height='100vh';const s=review.viewer.getScene();s.getEngine().resize();s.getEngine().stopRenderLoop();s.animationGroups.forEach(g=>g.stop());});+for(let i=0;i<360;i++){await p.evaluate(({i})=>{const s=review.viewer.getScene(),c=review.viewer.getCamera(),t=i/30,u=i/359,e=u*u*(3-2*u);c.alpha=.2+1.1*e;c.beta=.95;c.radius=.245;[...s.meshes,...s.transformNodes].filter(n=>n.name.startsWith('Heatsink.')).forEach(n=>n.setEnabled(!(t>=6&&t<9)));s.render();}, {i});await p.screenshot({path:`${out}/${String(i).padStart(4,'0')}.png`});if(i%60===0)console.log(i);}+fs.writeFileSync('videos/full-edit-r10/hero-render.json',JSON.stringify({frames:360,fps:30,durationSeconds:12,source:'mechanical/side-fan-r10/side-fan-assembly.glb',scope:'Frame-rendered orbit and heatsink visibility reveal. Fan remains off. Not native live footage.'},null,2));+}finally{await b.close();}
videos/full-edit-r10/captions.vttadded+97
@@ -0,0 +1,97 @@+WEBVTT++00:00:00.000 --> 00:00:17.000+We're building a digitally controlled electronic load with Adom AI Flow. A side-mounted fan and a heatsink handle the heat while keeping test points accessible. Follow the real sourcing, circuit, layout and probing iterations that shaped this prototype.++00:00:17.000 --> 00:00:23.800+AI Flow opens its dashboard automatically, keeping the design stages visible.++00:00:23.800 --> 00:00:26.800+Mouser blocks this browser request.++00:00:26.800 --> 00:00:30.800+The native browser reaches the same fan.++00:00:30.800 --> 00:00:35.800+Its product page also links to manufacturer CAD.++00:00:35.800 --> 00:00:49.267+The fan's digital twin gently starts, changes speed, and stops. This is a slowed visual simulation, with the housing held still.++00:00:49.267 --> 00:00:55.267+KiCad moves three capacitors to correct the placement collisions.++00:00:55.267 --> 00:00:58.967+The top ground pour appears in KiCad.++00:00:58.967 --> 00:01:05.967+A parallel shunt via and bottom connection strengthen this current path. Analysis still comes next.++00:01:05.967 --> 00:01:17.367+Nine checked vias are added around the rectifier. This accelerated view shows the geometry change; cooling performance needs its own analysis.++00:01:17.367 --> 00:01:24.167+Simulated tach feedback disappears, and the controller latches off. This is a software replay.++00:01:24.167 --> 00:01:41.167+The corrected current model exposes three failing paths. We inspect where the current concentrates before accepting any layout. This is a diagnostic candidate, with the thermal gate still open.++00:01:41.167 --> 00:01:58.234+This iteration compares the bottom copper and assumed airflow. The rectifier still exceeds its still air budget. A better looking heat map is not enough; the numerical limit must pass too.++00:01:58.234 --> 00:02:05.234+These three main current paths now fall below the screening limit. Full board acceptance is still pending.++00:02:05.234 --> 00:02:11.301+The rectifier passes its still air screen. Transistor cooling remains open.++00:02:11.301 --> 00:02:17.001+The rectifier model distinguishes its cathode plate and two anodes.++00:02:17.001 --> 00:02:24.901+The new rectifier is checked on the native board, including its underside. Cooling hardware is not fitted yet.++00:02:24.901 --> 00:02:32.901+The dashboard advances from current analysis to thermal. That progress leaves the unresolved cooling gate visible.++00:02:32.901 --> 00:02:39.468+Two layer manufacturing outputs get a review. This package is not released for fabrication.++00:02:39.468 --> 00:02:50.468+KiCad highlights each complete power net for inspection. This accelerated tour checks the saved routing; it does not show the routes being created.++00:02:50.468 --> 00:02:56.768+This labeled replay shows the solver placing candidate text. It is not a live KiCad edit.++00:02:56.768 --> 00:03:01.268+The saved reference labels get a native visual check.++00:03:01.268 --> 00:03:08.068+KiCad adds the labels and contact frames. The copper stays unchanged.++00:03:08.068 --> 00:03:13.535+Opaque ink makes the labels readable.++00:03:13.535 --> 00:03:18.902+Both faces now identify the contacts.++00:03:18.902 --> 00:03:25.335+One dashboard updates live, without reloading.++00:03:25.335 --> 00:03:28.902+We inspect the revised component geometry.++00:03:28.902 --> 00:03:32.969+Every chip carries a readable identity.++00:03:32.969 --> 00:03:44.849+In this software test, the temperature allowance triggers shutdown. Cooling back down does not restart the load.++00:03:44.849 --> 00:03:58.349+The probe simulation caught a real obstruction. We moved the heatsink support behind the board, cleared the corner pin, and checked the revised assembly again. These are design checks, not a tested hardware rating.++00:03:58.349 --> 00:04:12.949+In the probing simulator, auxiliary power starts the fan. Its simulated speed rises to seven thousand RPM, then falls to zero at shutdown. The blades are slowed for viewing; the housing stays still.++00:04:12.949 --> 00:04:33.749+The final board now passes current and thermal design screening with the larger passive heatsink. The complete probing replay clears twenty touches without collisions or wire snags. The thermal margin is small, so physical cooling and calibration come next. This is a checked prototype design, not a tested industrial product.
videos/full-edit-r10/chapters.jsonadded+130
@@ -0,0 +1,130 @@+[+  {+    "t": 0,+    "title": "opening r10"+  },+  {+    "t": 17.0,+    "title": "aiflow dashboard auto open"+  },+  {+    "t": 23.8,+    "title": "mouser pup denied"+  },+  {+    "t": 26.8,+    "title": "mouser native product"+  },+  {+    "t": 30.8,+    "title": "mouser native cad"+  },+  {+    "t": 35.8,+    "title": "fan motion states"+  },+  {+    "t": 49.267,+    "title": "placement correction"+  },+  {+    "t": 55.267,+    "title": "top ground creation"+  },+  {+    "t": 58.967,+    "title": "shunt via landing"+  },+  {+    "t": 65.967,+    "title": "diode thermal landing 2x"+  },+  {+    "t": 77.367,+    "title": "fan latch stall replay"+  },+  {+    "t": 84.167,+    "title": "corrected current review"+  },+  {+    "t": 101.167,+    "title": "copper cooling refinement"+  },+  {+    "t": 118.234,+    "title": "current screen milestone"+  },+  {+    "t": 125.234,+    "title": "diode thermal screen"+  },+  {+    "t": 131.301,+    "title": "rectifier digital twin"+  },+  {+    "t": 137.001,+    "title": "sbr native board review"+  },+  {+    "t": 144.901,+    "title": "current gate transition"+  },+  {+    "t": 152.901,+    "title": "gerber review"+  },+  {+    "t": 159.468,+    "title": "power net review"+  },+  {+    "t": 170.468,+    "title": "silkscreen candidate replay"+  },+  {+    "t": 176.768,+    "title": "silkscreen native review"+  },+  {+    "t": 181.268,+    "title": "bottom silkscreen native"+  },+  {+    "t": 188.068,+    "title": "opaque silkscreen"+  },+  {+    "t": 193.535,+    "title": "two sided contacts native"+  },+  {+    "t": 198.902,+    "title": "dashboard live sse"+  },+  {+    "t": 205.335,+    "title": "library candidate native"+  },+  {+    "t": 208.902,+    "title": "marked ic native"+  },+  {+    "t": 212.969,+    "title": "temperature bound replay"+  },+  {+    "t": 224.849,+    "title": "r9 carrier"+  },+  {+    "t": 238.349,+    "title": "r10 simulated fan"+  },+  {+    "t": 252.949,+    "title": "closing r10"+  }+]
videos/full-edit-r10/contact-sheet.jpgadded
⋯ 1 unchanged line ⋯
videos/full-edit-r10/edit-report.jsonadded+353
@@ -0,0 +1,353 @@+{+  "status": "narrated-review-draft-human-editorial-review-pending",+  "board": "Board34/R10",+  "designFinishPassed": true,+  "physicalQualified": false,+  "youtubePublished": false,+  "file": "videos/full-edit-r10/electronic-load-r10-review-1080p.mp4",+  "sha256": "27be7fbe6ec9b95e014447446a689a7a1c51fc364692d392137bd52023fa781f",+  "durationSeconds": 273.770667,+  "scenes": [+    {+      "id": "opening-r10",+      "source": "/home/adom/project/video-tools/brand/adom-video-brand/media/dark-intro-16x9.mp4",+      "sourceSha256": "5511fc001f0dfd04a1cbe1a5df3b4478dcbd97094e47bc0cd0e96f4f5859d97d",+      "additionalSource": "/home/adom/project/adom-custom-electronic-load/videos/full-edit-r10/r10-assembly-hero.mp4",+      "additionalSourceSha256": "6061c1734ffecbf1c7254dae14d8942b632b951b44d1e663c31e40c645dc10c1",+      "audio": "/home/adom/project/adom-custom-electronic-load/videos/full-edit-r10/narration/opening.mp3",+      "audioSha256": "00026ff568574bb09f552a7c3b5a3e5e4f8df48f9a8f8b0b8a52a08e29f61c90",+      "output": "videos/full-edit-r10/segments/opening-r10.mp4",+      "duration": 17.0,+      "tag": "ADOM ELECTRONIC LOAD | Board34 / R10 | rendered nominal assembly",+      "narration": "We're building a digitally controlled electronic load with Adom AI Flow. A side-mounted fan and a heatsink handle the heat while keeping test points accessible. Follow the real sourcing, circuit, layout and probing iterations that shaped this prototype."+    },+    {+      "id": "aiflow-dashboard-auto-open",+      "source": "videos/narrated-review/aiflow-dashboard-auto-open.mp4",+      "narration": "AI Flow opens its dashboard automatically, keeping the design stages visible.",+      "tag": "RECORDED DESIGN ITERATION | historical checkpoint",+      "sourceSha256": "f10cb5e3990d93e96476374bf5c48a0c0ae865844dea90b20f8f1245136c37c8",+      "audioSha256": "f10cb5e3990d93e96476374bf5c48a0c0ae865844dea90b20f8f1245136c37c8",+      "output": "videos/full-edit-r9/segments/001.mp4",+      "duration": 6.8+    },+    {+      "id": "mouser-pup-denied",+      "source": "videos/narrated-review/mouser-pup-denied.mp4",+      "narration": "Mouser blocks this browser request.",+      "tag": "RECORDED DESIGN ITERATION | historical checkpoint",+      "sourceSha256": "526a157e508e561f7f30e9a382c54cd24ea03e14ee490bce6de6e0f8be3af08f",+      "audioSha256": "526a157e508e561f7f30e9a382c54cd24ea03e14ee490bce6de6e0f8be3af08f",+      "output": "videos/full-edit-r9/segments/002.mp4",+      "duration": 3.0+    },+    {+      "id": "mouser-native-product",+      "source": "videos/narrated-review/mouser-native-product.mp4",+      "narration": "The native browser reaches the same fan.",+      "tag": "RECORDED DESIGN ITERATION | historical checkpoint",+      "sourceSha256": "630034ecaa197ddb886ec93723f5ceacb41080c27271ba80994e53fc326363e9",+      "audioSha256": "630034ecaa197ddb886ec93723f5ceacb41080c27271ba80994e53fc326363e9",+      "output": "videos/full-edit-r9/segments/003.mp4",+      "duration": 4.0+    },+    {+      "id": "mouser-native-cad",+      "source": "videos/narrated-review/mouser-native-cad.mp4",+      "narration": "Its product page also links to manufacturer CAD.",+      "tag": "RECORDED DESIGN ITERATION | historical checkpoint",+      "sourceSha256": "e64c77a428df35c9128dfeaa3a968746d72708c64c8b8ecde3f90339fd48bfb0",+      "audioSha256": "e64c77a428df35c9128dfeaa3a968746d72708c64c8b8ecde3f90339fd48bfb0",+      "output": "videos/full-edit-r9/segments/004.mp4",+      "duration": 5.0+    },+    {+      "id": "fan-motion-states",+      "source": "videos/narrated-review/fan-motion-states.mp4",+      "narration": "The fan's digital twin gently starts, changes speed, and stops. This is a slowed visual simulation, with the housing held still.",+      "tag": "RECORDED DESIGN ITERATION | historical checkpoint",+      "sourceSha256": "2e6ae5cd76b3dbe7aa96edeb8975143de8a8271eb422a4bb41ec46152657cf77",+      "audioSha256": "2e6ae5cd76b3dbe7aa96edeb8975143de8a8271eb422a4bb41ec46152657cf77",+      "output": "videos/full-edit-r9/segments/005.mp4",+      "duration": 13.467+    },+    {+      "id": "placement-correction",+      "source": "videos/narrated-review/placement-correction.mp4",+      "narration": "KiCad moves three capacitors to correct the placement collisions.",+      "tag": "RECORDED DESIGN ITERATION | historical checkpoint",+      "sourceSha256": "8c4caa0c269aed55997a9dd8d3054ab411a0bb850978542b829668d3802baf40",+      "audioSha256": "8c4caa0c269aed55997a9dd8d3054ab411a0bb850978542b829668d3802baf40",+      "output": "videos/full-edit-r9/segments/006.mp4",+      "duration": 6.0+    },+    {+      "id": "top-ground-creation",+      "source": "videos/narrated-review/top-ground-creation.mp4",+      "narration": "The top ground pour appears in KiCad.",+      "tag": "RECORDED DESIGN ITERATION | historical checkpoint",+      "sourceSha256": "c548af12271ed4965e237055eab52883b68e8381d18f71b075fcd887b464795a",+      "audioSha256": "c548af12271ed4965e237055eab52883b68e8381d18f71b075fcd887b464795a",+      "output": "videos/full-edit-r9/segments/007.mp4",+      "duration": 3.7+    },+    {+      "id": "shunt-via-landing",+      "source": "videos/narrated-review/shunt-via-landing.mp4",+      "narration": "A parallel shunt via and bottom connection strengthen this current path. Analysis still comes next.",+      "tag": "RECORDED DESIGN ITERATION | historical checkpoint",+      "sourceSha256": "6ea6f7b80e02044a98202bf531506bca69c3564f955000282ba0734e96a7a220",+      "audioSha256": "6ea6f7b80e02044a98202bf531506bca69c3564f955000282ba0734e96a7a220",+      "output": "videos/full-edit-r9/segments/008.mp4",+      "duration": 7.0+    },+    {+      "id": "diode-thermal-landing-2x",+      "source": "videos/narrated-review/diode-thermal-landing-2x.mp4",+      "narration": "Nine checked vias are added around the rectifier. This accelerated view shows the geometry change; cooling performance needs its own analysis.",+      "tag": "RECORDED DESIGN ITERATION | historical checkpoint",+      "sourceSha256": "e02fcab31d7591a07d32216176fe4861861f5b9a7365fbed33011f2cbd1e8080",+      "audioSha256": "e02fcab31d7591a07d32216176fe4861861f5b9a7365fbed33011f2cbd1e8080",+      "output": "videos/full-edit-r9/segments/009.mp4",+      "duration": 11.4+    },+    {+      "id": "fan-latch-stall-replay",+      "source": "videos/narrated-review/fan-latch-stall-replay.mp4",+      "narration": "Simulated tach feedback disappears, and the controller latches off. This is a software replay.",+      "tag": "RECORDED DESIGN ITERATION | historical checkpoint",+      "sourceSha256": "625b274641f837dd805e48e56bd420119557f5d9b5bdb54c69ec6c41d159cc6a",+      "audioSha256": "625b274641f837dd805e48e56bd420119557f5d9b5bdb54c69ec6c41d159cc6a",+      "output": "videos/full-edit-r9/segments/010.mp4",+      "duration": 6.8+    },+    {+      "id": "corrected-current-review",+      "source": "videos/narrated-review/corrected-current-review.mp4",+      "narration": "The corrected current model exposes three failing paths. We inspect where the current concentrates before accepting any layout. This is a diagnostic candidate, with the thermal gate still open.",+      "tag": "RECORDED DESIGN ITERATION | historical checkpoint",+      "sourceSha256": "78c5f87e8324847ef7176154512927d3a970325e74373ecace175320d3599693",+      "audioSha256": "78c5f87e8324847ef7176154512927d3a970325e74373ecace175320d3599693",+      "output": "videos/full-edit-r9/segments/011.mp4",+      "duration": 17.0+    },+    {+      "id": "copper-cooling-refinement",+      "source": "videos/narrated-review/copper-cooling-refinement.mp4",+      "narration": "This iteration compares the bottom copper and assumed airflow. The rectifier still exceeds its still air budget. A better looking heat map is not enough; the numerical limit must pass too.",+      "tag": "RECORDED DESIGN ITERATION | historical checkpoint",+      "sourceSha256": "685f3e458bcdc3be9189aec72cb1c93421dfdf796c7f3180b47b646f8bf1bd4a",+      "audioSha256": "685f3e458bcdc3be9189aec72cb1c93421dfdf796c7f3180b47b646f8bf1bd4a",+      "output": "videos/full-edit-r9/segments/012.mp4",+      "duration": 17.067+    },+    {+      "id": "current-screen-milestone",+      "source": "videos/narrated-review/current-screen-milestone.mp4",+      "narration": "These three main current paths now fall below the screening limit. Full board acceptance is still pending.",+      "tag": "RECORDED DESIGN ITERATION | historical checkpoint",+      "sourceSha256": "77cb1dfe1d9757454ded2bd3170072ad7a6c08ed081dfed6e61d1a073c2fb94f",+      "audioSha256": "77cb1dfe1d9757454ded2bd3170072ad7a6c08ed081dfed6e61d1a073c2fb94f",+      "output": "videos/full-edit-r9/segments/013.mp4",+      "duration": 7.0+    },+    {+      "id": "diode-thermal-screen",+      "source": "videos/narrated-review/diode-thermal-screen.mp4",+      "narration": "The rectifier passes its still air screen. Transistor cooling remains open.",+      "tag": "RECORDED DESIGN ITERATION | historical checkpoint",+      "sourceSha256": "caa45de524088bfea071bcfe87e95197941220a5e546dcc50a4ca446cada608f",+      "audioSha256": "caa45de524088bfea071bcfe87e95197941220a5e546dcc50a4ca446cada608f",+      "output": "videos/full-edit-r9/segments/014.mp4",+      "duration": 6.067+    },+    {+      "id": "rectifier-digital-twin",+      "source": "videos/narrated-review/rectifier-digital-twin.mp4",+      "narration": "The rectifier model distinguishes its cathode plate and two anodes.",+      "tag": "RECORDED DESIGN ITERATION | historical checkpoint",+      "sourceSha256": "124fbdd05f0ba75ec8d14c3f629f4b68a5aa14d91b91ca79245f7194459d1afc",+      "audioSha256": "124fbdd05f0ba75ec8d14c3f629f4b68a5aa14d91b91ca79245f7194459d1afc",+      "output": "videos/full-edit-r9/segments/015.mp4",+      "duration": 5.7+    },+    {+      "id": "sbr-native-board-review",+      "source": "videos/narrated-review/sbr-native-board-review.mp4",+      "narration": "The new rectifier is checked on the native board, including its underside. Cooling hardware is not fitted yet.",+      "tag": "RECORDED DESIGN ITERATION | historical checkpoint",+      "sourceSha256": "ed2a189c2d401a8bd8e1b52f68ce49a413f72fd6c1c92cb017513107a21ccc87",+      "audioSha256": "ed2a189c2d401a8bd8e1b52f68ce49a413f72fd6c1c92cb017513107a21ccc87",+      "output": "videos/full-edit-r9/segments/016.mp4",+      "duration": 7.9+    },+    {+      "id": "current-gate-transition",+      "source": "videos/narrated-review/current-gate-transition.mp4",+      "narration": "The dashboard advances from current analysis to thermal. That progress leaves the unresolved cooling gate visible.",+      "tag": "RECORDED DESIGN ITERATION | historical checkpoint",+      "sourceSha256": "41335180e17d46fdf2d5930e7a00e0432bf9dd0aacf68363d6d0641dbccda4d4",+      "audioSha256": "41335180e17d46fdf2d5930e7a00e0432bf9dd0aacf68363d6d0641dbccda4d4",+      "output": "videos/full-edit-r9/segments/017.mp4",+      "duration": 8.0+    },+    {+      "id": "gerber-review",+      "source": "videos/narrated-review/gerber-review.mp4",+      "narration": "Two layer manufacturing outputs get a review. This package is not released for fabrication.",+      "tag": "RECORDED DESIGN ITERATION | historical checkpoint",+      "sourceSha256": "871d7ecbc8984506ded2415ce61ccdde8408fc7adf0fa4af1681a5b3a4daa9d7",+      "audioSha256": "871d7ecbc8984506ded2415ce61ccdde8408fc7adf0fa4af1681a5b3a4daa9d7",+      "output": "videos/full-edit-r9/segments/018.mp4",+      "duration": 6.567+    },+    {+      "id": "power-net-review",+      "source": "videos/narrated-review/power-net-review.mp4",+      "narration": "KiCad highlights each complete power net for inspection. This accelerated tour checks the saved routing; it does not show the routes being created.",+      "tag": "RECORDED DESIGN ITERATION | historical checkpoint",+      "sourceSha256": "8d4ab80a2326de01f4bf01a7ee8a3aef3cf6a1a9591613c695fd9af537282617",+      "audioSha256": "8d4ab80a2326de01f4bf01a7ee8a3aef3cf6a1a9591613c695fd9af537282617",+      "output": "videos/full-edit-r9/segments/019.mp4",+      "duration": 11.0+    },+    {+      "id": "silkscreen-candidate-replay",+      "source": "videos/narrated-review/silkscreen-candidate-replay.mp4",+      "narration": "This labeled replay shows the solver placing candidate text. It is not a live KiCad edit.",+      "tag": "RECORDED DESIGN ITERATION | historical checkpoint",+      "sourceSha256": "04a65344d76a866bfd39cc141f67f82f778d843ee7244e9a7ee5a67eda36e747",+      "audioSha256": "04a65344d76a866bfd39cc141f67f82f778d843ee7244e9a7ee5a67eda36e747",+      "output": "videos/full-edit-r9/segments/020.mp4",+      "duration": 6.3+    },+    {+      "id": "silkscreen-native-review",+      "source": "videos/narrated-review/silkscreen-native-review.mp4",+      "narration": "The saved reference labels get a native visual check.",+      "tag": "RECORDED DESIGN ITERATION | historical checkpoint",+      "sourceSha256": "975f769a5501fd9c126b6deb1c260a68a5d44e640c7623eec99168737267246a",+      "audioSha256": "975f769a5501fd9c126b6deb1c260a68a5d44e640c7623eec99168737267246a",+      "output": "videos/full-edit-r9/segments/021.mp4",+      "duration": 4.5+    },+    {+      "id": "bottom-silkscreen-native",+      "source": "videos/narrated-review/bottom-silkscreen-native.mp4",+      "narration": "KiCad adds the labels and contact frames. The copper stays unchanged.",+      "tag": "RECORDED DESIGN ITERATION | historical checkpoint",+      "sourceSha256": "2aca659387b54a0da75f79afac070bcf626a48aef9013fc3d3df8e982c524bd0",+      "audioSha256": "2aca659387b54a0da75f79afac070bcf626a48aef9013fc3d3df8e982c524bd0",+      "output": "videos/full-edit-r9/segments/022.mp4",+      "duration": 6.8+    },+    {+      "id": "opaque-silkscreen",+      "source": "videos/narrated-review/opaque-silkscreen.mp4",+      "narration": "Opaque ink makes the labels readable.",+      "tag": "RECORDED DESIGN ITERATION | historical checkpoint",+      "sourceSha256": "87f703536c77104b1ef60a191e3ee01bd77478f871c15bd2bb52d31406d2f2d5",+      "audioSha256": "87f703536c77104b1ef60a191e3ee01bd77478f871c15bd2bb52d31406d2f2d5",+      "output": "videos/full-edit-r9/segments/023.mp4",+      "duration": 5.467+    },+    {+      "id": "two-sided-contacts-native",+      "source": "videos/narrated-review/two-sided-contacts-native.mp4",+      "narration": "Both faces now identify the contacts.",+      "tag": "RECORDED DESIGN ITERATION | historical checkpoint",+      "sourceSha256": "742d0ba0284254b53f8054db09b18dfa8be530165fb6c4b6005c2092d3f8e2b9",+      "audioSha256": "742d0ba0284254b53f8054db09b18dfa8be530165fb6c4b6005c2092d3f8e2b9",+      "output": "videos/full-edit-r9/segments/024.mp4",+      "duration": 5.367+    },+    {+      "id": "dashboard-live-sse",+      "source": "videos/narrated-review/dashboard-live-sse.mp4",+      "narration": "One dashboard updates live, without reloading.",+      "tag": "RECORDED DESIGN ITERATION | historical checkpoint",+      "sourceSha256": "41c378e716d38f9843bf4d03f370411aa0897dfa9f720e17ff9dfadcc3987efd",+      "audioSha256": "41c378e716d38f9843bf4d03f370411aa0897dfa9f720e17ff9dfadcc3987efd",+      "output": "videos/full-edit-r9/segments/025.mp4",+      "duration": 6.433333+    },+    {+      "id": "library-candidate-native",+      "source": "videos/narrated-review/library-candidate-native.mp4",+      "narration": "We inspect the revised component geometry.",+      "tag": "RECORDED DESIGN ITERATION | historical checkpoint",+      "sourceSha256": "3e23bbd6b8849bdda2237103dec6fa25869464cf6a5a0308c1561359b096c110",+      "audioSha256": "3e23bbd6b8849bdda2237103dec6fa25869464cf6a5a0308c1561359b096c110",+      "output": "videos/full-edit-r9/segments/026.mp4",+      "duration": 3.567+    },+    {+      "id": "marked-ic-native",+      "source": "videos/narrated-review/marked-ic-native.mp4",+      "narration": "Every chip carries a readable identity.",+      "tag": "RECORDED DESIGN ITERATION | historical checkpoint",+      "sourceSha256": "3320c51411aaee595bb26c79667b3b1dbe4dad2fe34c9b187d98dc3e91bbb105",+      "audioSha256": "3320c51411aaee595bb26c79667b3b1dbe4dad2fe34c9b187d98dc3e91bbb105",+      "output": "videos/full-edit-r9/segments/027.mp4",+      "duration": 4.067+    },+    {+      "id": "temperature-bound-replay",+      "source": "videos/temperature-safety/narrated-replay.mp4",+      "narration": "In this software test, the temperature allowance triggers shutdown. Cooling back down does not restart the load.",+      "tag": "RECORDED DESIGN ITERATION | historical checkpoint",+      "sourceSha256": "2b06191a5fe56f1e5ec3f2f2c0408a2a3437cfb792629d86c959ff69e924035b",+      "audioSha256": "2b06191a5fe56f1e5ec3f2f2c0408a2a3437cfb792629d86c959ff69e924035b",+      "output": "videos/full-edit-r9/segments/028.mp4",+      "duration": 11.88+    },+    {+      "id": "r9-carrier",+      "source": "docs/clips/board34-r9-carrier-narrated-review.mp4",+      "narration": "The probe simulation caught a real obstruction. We moved the heatsink support behind the board, cleared the corner pin, and checked the revised assembly again. These are design checks, not a tested hardware rating.",+      "tag": "BOARD34 / R9 | connected carrier and fastener clearance | CAD inspection 1.5x",+      "sourceSha256": "067b4bfe1091966892ff88fafa6023bde286cf0f4819e562142654eb4a269495",+      "audioSha256": "067b4bfe1091966892ff88fafa6023bde286cf0f4819e562142654eb4a269495",+      "output": "videos/full-edit-r9/segments/029.mp4",+      "duration": 13.5,+      "revisionScope": "Historical R9 footage; superseded geometry, same authored fan behavior"+    },+    {+      "id": "r10-simulated-fan",+      "source": "videos/full-edit-r10/segments/r10-simulated-fan.mp4",+      "audio": "videos/full-edit-r9/narration/fan.mp3",+      "narration": "In the probing simulator, auxiliary power starts the fan. Its simulated speed rises to seven thousand RPM, then falls to zero at shutdown. The blades are slowed for viewing; the housing stays still.",+      "tag": "R10 PROBING SIMULATION | authored RPM | blade motion x0.01",+      "sourceSha256": "4c039e4e6ec9820bdf8171fe0b919c8b63f4e59d3715a2069657df03e74b5175",+      "audioSha256": "20fe6245bf21b115c14ebac331126e68f5959f5b625281fe3abbc8a487b1d37d",+      "output": "videos/full-edit-r10/segments/r10-simulated-fan.mp4",+      "duration": 14.6,+      "revisionScope": "Exact verified R10 model; two native Hydrogen takes cropped to the workcell pane"+    },+    {+      "id": "closing-r10",+      "source": "/home/adom/project/adom-custom-electronic-load/aiflow/run/window-16461108-20261013-075012-10x.mp4",+      "sourceSha256": "0c3e1ea1d94c2acea5aa79de26f487d2b2dbf6f949de0bbf0878fa6bed517912",+      "additionalSource": "/home/adom/project/video-tools/brand/adom-video-brand/media/dark-outro-16x9.mp4",+      "additionalSourceSha256": "b401ee80bcfa63d81432c78b590656700f8257401c18b0b3527539107795f12a",+      "audio": "/home/adom/project/adom-custom-electronic-load/videos/full-edit-r10/narration/closing.mp3",+      "audioSha256": "5096fc7fedc698d5f4c948e9dbcb10af52a2c942d5b0d8c3e8b88b721a974b51",+      "output": "videos/full-edit-r10/segments/closing-r10.mp4",+      "duration": 20.8,+      "tag": "BOARD34 / R10 | DESIGN SCREENS PASS | PHYSICAL QUALIFICATION NEXT",+      "narration": "The final board now passes current and thermal design screening with the larger passive heatsink. The complete probing replay clears twenty touches without collisions or wire snags. The thermal margin is small, so physical cooling and calibration come next. This is a checked prototype design, not a tested industrial product."+    }+  ],+  "limitations": [+    "Historical takes retain revision labels and original limitations.",+    "No complete AI-token or hardware purchase cost claim.",+    "Brand footage included; final audio/editorial polish remains review work."+  ],+  "web": {+    "file": "videos/full-edit-r10/electronic-load-r10-review-web.mp4",+    "bytes": 12522377,+    "sha256": "3b8a5cca798f6093a3a3862b78f7bfd5307b993548a0f4e607ef06c1758c2965",+    "fullDecodePassed": true+  },+  "contactSheetReviewed": true+}
videos/full-edit-r10/electronic-load-r10-review-1080p.mp4added
⋯ 1 unchanged line ⋯
videos/full-edit-r10/electronic-load-r10-review-web.mp4added
⋯ 1 unchanged line ⋯
videos/full-edit-r10/hero-render.jsonadded+7
@@ -0,0 +1,7 @@+{+  "frames": 360,+  "fps": 30,+  "durationSeconds": 12,+  "source": "mechanical/side-fan-r10/side-fan-assembly.glb",+  "scope": "Frame-rendered orbit and heatsink visibility reveal. Fan remains off. Not native live footage."+}\ No newline at end of file
videos/full-edit-r10/narration/closing.mp3added
⋯ 1 unchanged line ⋯
videos/full-edit-r10/narration/closing.txtadded+1
@@ -0,0 +1 @@+The final board now passes current and thermal design screening with the larger passive heatsink. The complete probing replay clears twenty touches without collisions or wire snags. The thermal margin is small, so physical cooling and calibration come next. This is a checked prototype design, not a tested industrial product.
videos/full-edit-r10/narration/opening.mp3added
⋯ 1 unchanged line ⋯
videos/full-edit-r10/narration/opening.txtadded+1
@@ -0,0 +1 @@+We're building a digitally controlled electronic load with Adom AI Flow. A side-mounted fan and a heatsink handle the heat while keeping test points accessible. Follow the real sourcing, circuit, layout and probing iterations that shaped this prototype.
videos/full-edit-r10/r10-assembly-hero.mp4added
⋯ 1 unchanged line ⋯
videos/full-edit-r10/segments/r10-simulated-fan.mp4added
⋯ 1 unchanged line ⋯
videos/full-edit-r10/storyboard.jsonadded+325
@@ -0,0 +1,325 @@+{+  "title": "Electronic load Board34 / R10 — narrated review",+  "clips": [+    {+      "id": "opening-r10",+      "title": "opening r10",+      "description": "ADOM ELECTRONIC LOAD | Board34 / R10 | rendered nominal assembly",+      "raw_path": "/home/adom/project/adom-custom-electronic-load/videos/full-edit-r10/segments/opening-r10.mp4",+      "warnings": [+        "Review draft; human editorial review pending. Historical scenes retain their recorded revision."+      ],+      "narration": "We're building a digitally controlled electronic load with Adom AI Flow. A side-mounted fan and a heatsink handle the heat while keeping test points accessible. Follow the real sourcing, circuit, layout and probing iterations that shaped this prototype."+    },+    {+      "id": "aiflow-dashboard-auto-open",+      "title": "aiflow dashboard auto open",+      "description": "RECORDED DESIGN ITERATION | historical checkpoint",+      "raw_path": "/home/adom/project/adom-custom-electronic-load/videos/full-edit-r9/segments/001.mp4",+      "warnings": [+        "Review draft; human editorial review pending. Historical scenes retain their recorded revision."+      ],+      "narration": "AI Flow opens its dashboard automatically, keeping the design stages visible."+    },+    {+      "id": "mouser-pup-denied",+      "title": "mouser pup denied",+      "description": "RECORDED DESIGN ITERATION | historical checkpoint",+      "raw_path": "/home/adom/project/adom-custom-electronic-load/videos/full-edit-r9/segments/002.mp4",+      "warnings": [+        "Review draft; human editorial review pending. Historical scenes retain their recorded revision."+      ],+      "narration": "Mouser blocks this browser request."+    },+    {+      "id": "mouser-native-product",+      "title": "mouser native product",+      "description": "RECORDED DESIGN ITERATION | historical checkpoint",+      "raw_path": "/home/adom/project/adom-custom-electronic-load/videos/full-edit-r9/segments/003.mp4",+      "warnings": [+        "Review draft; human editorial review pending. Historical scenes retain their recorded revision."+      ],+      "narration": "The native browser reaches the same fan."+    },+    {+      "id": "mouser-native-cad",+      "title": "mouser native cad",+      "description": "RECORDED DESIGN ITERATION | historical checkpoint",+      "raw_path": "/home/adom/project/adom-custom-electronic-load/videos/full-edit-r9/segments/004.mp4",+      "warnings": [+        "Review draft; human editorial review pending. Historical scenes retain their recorded revision."+      ],+      "narration": "Its product page also links to manufacturer CAD."+    },+    {+      "id": "fan-motion-states",+      "title": "fan motion states",+      "description": "RECORDED DESIGN ITERATION | historical checkpoint",+      "raw_path": "/home/adom/project/adom-custom-electronic-load/videos/full-edit-r9/segments/005.mp4",+      "warnings": [+        "Review draft; human editorial review pending. Historical scenes retain their recorded revision."+      ],+      "narration": "The fan's digital twin gently starts, changes speed, and stops. This is a slowed visual simulation, with the housing held still."+    },+    {+      "id": "placement-correction",+      "title": "placement correction",+      "description": "RECORDED DESIGN ITERATION | historical checkpoint",+      "raw_path": "/home/adom/project/adom-custom-electronic-load/videos/full-edit-r9/segments/006.mp4",+      "warnings": [+        "Review draft; human editorial review pending. Historical scenes retain their recorded revision."+      ],+      "narration": "KiCad moves three capacitors to correct the placement collisions."+    },+    {+      "id": "top-ground-creation",+      "title": "top ground creation",+      "description": "RECORDED DESIGN ITERATION | historical checkpoint",+      "raw_path": "/home/adom/project/adom-custom-electronic-load/videos/full-edit-r9/segments/007.mp4",+      "warnings": [+        "Review draft; human editorial review pending. Historical scenes retain their recorded revision."+      ],+      "narration": "The top ground pour appears in KiCad."+    },+    {+      "id": "shunt-via-landing",+      "title": "shunt via landing",+      "description": "RECORDED DESIGN ITERATION | historical checkpoint",+      "raw_path": "/home/adom/project/adom-custom-electronic-load/videos/full-edit-r9/segments/008.mp4",+      "warnings": [+        "Review draft; human editorial review pending. Historical scenes retain their recorded revision."+      ],+      "narration": "A parallel shunt via and bottom connection strengthen this current path. Analysis still comes next."+    },+    {+      "id": "diode-thermal-landing-2x",+      "title": "diode thermal landing 2x",+      "description": "RECORDED DESIGN ITERATION | historical checkpoint",+      "raw_path": "/home/adom/project/adom-custom-electronic-load/videos/full-edit-r9/segments/009.mp4",+      "warnings": [+        "Review draft; human editorial review pending. Historical scenes retain their recorded revision."+      ],+      "narration": "Nine checked vias are added around the rectifier. This accelerated view shows the geometry change; cooling performance needs its own analysis."+    },+    {+      "id": "fan-latch-stall-replay",+      "title": "fan latch stall replay",+      "description": "RECORDED DESIGN ITERATION | historical checkpoint",+      "raw_path": "/home/adom/project/adom-custom-electronic-load/videos/full-edit-r9/segments/010.mp4",+      "warnings": [+        "Review draft; human editorial review pending. Historical scenes retain their recorded revision."+      ],+      "narration": "Simulated tach feedback disappears, and the controller latches off. This is a software replay."+    },+    {+      "id": "corrected-current-review",+      "title": "corrected current review",+      "description": "RECORDED DESIGN ITERATION | historical checkpoint",+      "raw_path": "/home/adom/project/adom-custom-electronic-load/videos/full-edit-r9/segments/011.mp4",+      "warnings": [+        "Review draft; human editorial review pending. Historical scenes retain their recorded revision."+      ],+      "narration": "The corrected current model exposes three failing paths. We inspect where the current concentrates before accepting any layout. This is a diagnostic candidate, with the thermal gate still open."+    },+    {+      "id": "copper-cooling-refinement",+      "title": "copper cooling refinement",+      "description": "RECORDED DESIGN ITERATION | historical checkpoint",+      "raw_path": "/home/adom/project/adom-custom-electronic-load/videos/full-edit-r9/segments/012.mp4",+      "warnings": [+        "Review draft; human editorial review pending. Historical scenes retain their recorded revision."+      ],+      "narration": "This iteration compares the bottom copper and assumed airflow. The rectifier still exceeds its still air budget. A better looking heat map is not enough; the numerical limit must pass too."+    },+    {+      "id": "current-screen-milestone",+      "title": "current screen milestone",+      "description": "RECORDED DESIGN ITERATION | historical checkpoint",+      "raw_path": "/home/adom/project/adom-custom-electronic-load/videos/full-edit-r9/segments/013.mp4",+      "warnings": [+        "Review draft; human editorial review pending. Historical scenes retain their recorded revision."+      ],+      "narration": "These three main current paths now fall below the screening limit. Full board acceptance is still pending."+    },+    {+      "id": "diode-thermal-screen",+      "title": "diode thermal screen",+      "description": "RECORDED DESIGN ITERATION | historical checkpoint",+      "raw_path": "/home/adom/project/adom-custom-electronic-load/videos/full-edit-r9/segments/014.mp4",+      "warnings": [+        "Review draft; human editorial review pending. Historical scenes retain their recorded revision."+      ],+      "narration": "The rectifier passes its still air screen. Transistor cooling remains open."+    },+    {+      "id": "rectifier-digital-twin",+      "title": "rectifier digital twin",+      "description": "RECORDED DESIGN ITERATION | historical checkpoint",+      "raw_path": "/home/adom/project/adom-custom-electronic-load/videos/full-edit-r9/segments/015.mp4",+      "warnings": [+        "Review draft; human editorial review pending. Historical scenes retain their recorded revision."+      ],+      "narration": "The rectifier model distinguishes its cathode plate and two anodes."+    },+    {+      "id": "sbr-native-board-review",+      "title": "sbr native board review",+      "description": "RECORDED DESIGN ITERATION | historical checkpoint",+      "raw_path": "/home/adom/project/adom-custom-electronic-load/videos/full-edit-r9/segments/016.mp4",+      "warnings": [+        "Review draft; human editorial review pending. Historical scenes retain their recorded revision."+      ],+      "narration": "The new rectifier is checked on the native board, including its underside. Cooling hardware is not fitted yet."+    },+    {+      "id": "current-gate-transition",+      "title": "current gate transition",+      "description": "RECORDED DESIGN ITERATION | historical checkpoint",+      "raw_path": "/home/adom/project/adom-custom-electronic-load/videos/full-edit-r9/segments/017.mp4",+      "warnings": [+        "Review draft; human editorial review pending. Historical scenes retain their recorded revision."+      ],+      "narration": "The dashboard advances from current analysis to thermal. That progress leaves the unresolved cooling gate visible."+    },+    {+      "id": "gerber-review",+      "title": "gerber review",+      "description": "RECORDED DESIGN ITERATION | historical checkpoint",+      "raw_path": "/home/adom/project/adom-custom-electronic-load/videos/full-edit-r9/segments/018.mp4",+      "warnings": [+        "Review draft; human editorial review pending. Historical scenes retain their recorded revision."+      ],+      "narration": "Two layer manufacturing outputs get a review. This package is not released for fabrication."+    },+    {+      "id": "power-net-review",+      "title": "power net review",+      "description": "RECORDED DESIGN ITERATION | historical checkpoint",+      "raw_path": "/home/adom/project/adom-custom-electronic-load/videos/full-edit-r9/segments/019.mp4",+      "warnings": [+        "Review draft; human editorial review pending. Historical scenes retain their recorded revision."+      ],+      "narration": "KiCad highlights each complete power net for inspection. This accelerated tour checks the saved routing; it does not show the routes being created."+    },+    {+      "id": "silkscreen-candidate-replay",+      "title": "silkscreen candidate replay",+      "description": "RECORDED DESIGN ITERATION | historical checkpoint",+      "raw_path": "/home/adom/project/adom-custom-electronic-load/videos/full-edit-r9/segments/020.mp4",+      "warnings": [+        "Review draft; human editorial review pending. Historical scenes retain their recorded revision."+      ],+      "narration": "This labeled replay shows the solver placing candidate text. It is not a live KiCad edit."+    },+    {+      "id": "silkscreen-native-review",+      "title": "silkscreen native review",+      "description": "RECORDED DESIGN ITERATION | historical checkpoint",+      "raw_path": "/home/adom/project/adom-custom-electronic-load/videos/full-edit-r9/segments/021.mp4",+      "warnings": [+        "Review draft; human editorial review pending. Historical scenes retain their recorded revision."+      ],+      "narration": "The saved reference labels get a native visual check."+    },+    {+      "id": "bottom-silkscreen-native",+      "title": "bottom silkscreen native",+      "description": "RECORDED DESIGN ITERATION | historical checkpoint",+      "raw_path": "/home/adom/project/adom-custom-electronic-load/videos/full-edit-r9/segments/022.mp4",+      "warnings": [+        "Review draft; human editorial review pending. Historical scenes retain their recorded revision."+      ],+      "narration": "KiCad adds the labels and contact frames. The copper stays unchanged."+    },+    {+      "id": "opaque-silkscreen",+      "title": "opaque silkscreen",+      "description": "RECORDED DESIGN ITERATION | historical checkpoint",+      "raw_path": "/home/adom/project/adom-custom-electronic-load/videos/full-edit-r9/segments/023.mp4",+      "warnings": [+        "Review draft; human editorial review pending. Historical scenes retain their recorded revision."+      ],+      "narration": "Opaque ink makes the labels readable."+    },+    {+      "id": "two-sided-contacts-native",+      "title": "two sided contacts native",+      "description": "RECORDED DESIGN ITERATION | historical checkpoint",+      "raw_path": "/home/adom/project/adom-custom-electronic-load/videos/full-edit-r9/segments/024.mp4",+      "warnings": [+        "Review draft; human editorial review pending. Historical scenes retain their recorded revision."+      ],+      "narration": "Both faces now identify the contacts."+    },+    {+      "id": "dashboard-live-sse",+      "title": "dashboard live sse",+      "description": "RECORDED DESIGN ITERATION | historical checkpoint",+      "raw_path": "/home/adom/project/adom-custom-electronic-load/videos/full-edit-r9/segments/025.mp4",+      "warnings": [+        "Review draft; human editorial review pending. Historical scenes retain their recorded revision."+      ],+      "narration": "One dashboard updates live, without reloading."+    },+    {+      "id": "library-candidate-native",+      "title": "library candidate native",+      "description": "RECORDED DESIGN ITERATION | historical checkpoint",+      "raw_path": "/home/adom/project/adom-custom-electronic-load/videos/full-edit-r9/segments/026.mp4",+      "warnings": [+        "Review draft; human editorial review pending. Historical scenes retain their recorded revision."+      ],+      "narration": "We inspect the revised component geometry."+    },+    {+      "id": "marked-ic-native",+      "title": "marked ic native",+      "description": "RECORDED DESIGN ITERATION | historical checkpoint",+      "raw_path": "/home/adom/project/adom-custom-electronic-load/videos/full-edit-r9/segments/027.mp4",+      "warnings": [+        "Review draft; human editorial review pending. Historical scenes retain their recorded revision."+      ],+      "narration": "Every chip carries a readable identity."+    },+    {+      "id": "temperature-bound-replay",+      "title": "temperature bound replay",+      "description": "RECORDED DESIGN ITERATION | historical checkpoint",+      "raw_path": "/home/adom/project/adom-custom-electronic-load/videos/full-edit-r9/segments/028.mp4",+      "warnings": [+        "Review draft; human editorial review pending. Historical scenes retain their recorded revision."+      ],+      "narration": "In this software test, the temperature allowance triggers shutdown. Cooling back down does not restart the load."+    },+    {+      "id": "r9-carrier",+      "title": "r9 carrier",+      "description": "BOARD34 / R9 | connected carrier and fastener clearance | CAD inspection 1.5x",+      "raw_path": "/home/adom/project/adom-custom-electronic-load/videos/full-edit-r9/segments/029.mp4",+      "warnings": [+        "Review draft; human editorial review pending. Historical scenes retain their recorded revision."+      ],+      "narration": "The probe simulation caught a real obstruction. We moved the heatsink support behind the board, cleared the corner pin, and checked the revised assembly again. These are design checks, not a tested hardware rating."+    },+    {+      "id": "r10-simulated-fan",+      "title": "r10 simulated fan",+      "description": "R10 PROBING SIMULATION | authored RPM | blade motion x0.01",+      "raw_path": "/home/adom/project/adom-custom-electronic-load/videos/full-edit-r10/segments/r10-simulated-fan.mp4",+      "warnings": [+        "Review draft; human editorial review pending. Historical scenes retain their recorded revision."+      ],+      "narration": "In the probing simulator, auxiliary power starts the fan. Its simulated speed rises to seven thousand RPM, then falls to zero at shutdown. The blades are slowed for viewing; the housing stays still."+    },+    {+      "id": "closing-r10",+      "title": "closing r10",+      "description": "BOARD34 / R10 | DESIGN SCREENS PASS | PHYSICAL QUALIFICATION NEXT",+      "raw_path": "/home/adom/project/adom-custom-electronic-load/videos/full-edit-r10/segments/closing-r10.mp4",+      "warnings": [+        "Review draft; human editorial review pending. Historical scenes retain their recorded revision."+      ],+      "narration": "The final board now passes current and thermal design screening with the larger passive heatsink. The complete probing replay clears twenty touches without collisions or wire snags. The thermal margin is small, so physical cooling and calibration come next. This is a checked prototype design, not a tested industrial product."+    }+  ]+}\ No newline at end of file