0
mirror of https://github.com/bbenchoff/OrthoRoute.git synced 2026-08-22 14:19:15 +00:00
Files
OrthoRoute/tests/regression/smoke_metrics.json
OpenFixture Developer e836eb1eaf Add automated optimization workflow with smoke test validation
- Create scripts/analyze_log.py: Standalone log parser for routing metrics extraction and golden comparison
- Create scripts/optimize_and_validate.ps1: PowerShell automation wrapper for full optimization cycle
- Create scripts/README.md: Comprehensive documentation for automation scripts
- Create tests/regression/smoke_metrics.json: Golden thresholds for smoke test (100 nets, 4 layers)
- Create docs/optimization/optimization_workflow.md: Complete optimization workflow guide (800+ lines)
- Create docs/optimization/baseline_template.md: Standardized template for future optimization baselines
- Extend launch_kicad_debug.ps1: Add -RunValidation flag for post-KiCad smoke test
- Extend copy_to_kicad.ps1: Add -Validate switch for deployment validation
- Update optimization docs: Add workflow references to QUICK_REF, README, golden_result_2026-04-10
- Update historical baselines: Add workflow tool references to 2026-04-03, 04-05, 04-08

Workflow enables fast iterative optimization: make change → sync → smoke test (30s) → analyze → commit
Exit codes: 0=PASS, 1=FAIL routing, 2=WARN regression, 3=ERROR environment
Smoke test becomes primary validation checkpoint (middle complexity: 100 nets vs 512 backplane)
2026-04-12 20:10:06 +02:00

49 lines
2.0 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"_comment": "Smoke test baselines for 100-net synthetic board. Fast validation checkpoint for optimization cycles.",
"_board": "Synthetic smoke board — 100 nets, 4-8 layers (generated in conftest.py), ~30s routing time",
"_note": "These are conservative thresholds with headroom. Update after establishing actual smoke test baselines.",
"nets_routed": 100,
"total_nets": 100,
"gpu": {
"_source": "Smoke test baseline — to be measured, currently estimated",
"_note": "Expected: ~10-20 iterations, <60s total, converged with zero overuse. Thresholds = estimated × 1.50 headroom for safety.",
"converged": true,
"iterations_max": 30,
"total_time_s_max": 90,
"iter_avg_time_s_max": 5.0,
"iter_1_time_s_max": 15.0,
"overuse_final_max": 0,
"tracks_delta_min": 100,
"vias_delta_min": 50,
"barrel_conflicts_max": 100
},
"cpu": {
"_source": "CPU-only smoke baseline — to be measured",
"_note": "Run: pytest tests/regression/test_smoke.py -v (with CPU-only mode if available)",
"converged": true,
"iterations_max": 40,
"total_time_s_max": 180,
"iter_avg_time_s_max": 10.0,
"iter_1_time_s_max": 30.0,
"overuse_final_max": 0,
"tracks_delta_min": 100,
"vias_delta_min": 50,
"barrel_conflicts_max": 150
},
"_thresholds_note": "All *_max/*_min values are soft warnings unless noted HARD FAIL. Tests auto-detect GPU=YES/NO from log. Update these values after running actual smoke test baselines.",
"iterations_max": 30,
"total_time_s_max": 90,
"iter_avg_time_s_max": 5.0,
"iter_1_time_s_max": 15.0,
"overuse_final_max": 0,
"tracks_delta_min": 100,
"vias_delta_min": 50,
"barrel_conflicts_max": 100,
"_update_instructions": "To update with actual baselines: 1) Run smoke test with ORTHO_DEBUG=1, 2) Parse logs/latest.log with scripts/analyze_log.py --json, 3) Set thresholds to actual_value × 1.50 for headroom, 4) Update this file, 5) Re-run scripts/optimize_and_validate.ps1 --compare to validate"
}