Skip to content

2026-07-07 review: safety-loop findings, test portability, preview panel#4

Open
jacobson30-bot wants to merge 1 commit into
mainfrom
review-2026-07-07
Open

2026-07-07 review: safety-loop findings, test portability, preview panel#4
jacobson30-bot wants to merge 1 commit into
mainfrom
review-2026-07-07

Conversation

@jacobson30-bot

Copy link
Copy Markdown
Contributor

Read-only review of main at b27a4c2 — the deliverable is one document, docs/reviews/2026-07-07-review.md. No functional code was touched. The full suite was run on macOS in mock mode (292 passing once the sibling-checkout fixture assumption was satisfied — that assumption is itself finding 4).

Findings, severity-ordered:

  1. HIGH — Pause suspends safety polling while the scan keeps running (_wait_if_paused sleeps without _check_safety; Pause is reachable mid-scan from the Sweep/Mosaic panels). Worth fixing before the next overnight campaign.
  2. MED — Tunneling-loss detection is blind on the fallback current path (frame max includes rows from before the tip left the surface).
  3. MED — A tunnel-lost halt terminates in RunnerState.FINISHED, contradicting the emitted error.
  4. MEDtests/test_preview_panel.py hard-requires a ProbeFlow git checkout next to ScanFlow (10 failures on any other layout, no skip guard).
  5. LOWint(getp(...)) or 9 turns a legitimate preamp exponent 0 into 9; a never-started scan is treated as a completed step.
  6. Structural — preview_panel.py (4,157 lines) bypasses the §13 detector contract with six direct probeflow imports; the ProbeFlowFeatureDetector slot is still empty.

The doc also calls out what's genuinely strong (fail-closed safety monitor, closed-loop XY motion, runner lifecycle hygiene, the import-boundary tests) so the findings land with context.

Follow-up on the ProbeFlow side (not in this PR): a pinning test for the six probeflow surfaces ScanFlow imports, so ProbeFlow refactors break our CI instead of ScanFlow.

🤖 Generated with Claude Code

…w panel

Read-only review at b27a4c2 (full suite run in mock mode, 292 passing).
Headline findings:
- HIGH: Pause suspends safety polling while the scan keeps running
  (_wait_if_paused sleeps without _check_safety; Pause is reachable
  mid-scan from Sweep/Mosaic).
- MED: tunneling-loss detection cannot fire on the fallback current path
  (frame max includes historical rows); tunnel-lost halts end in
  RunnerState.FINISHED; tests hard-require a sibling ProbeFlow checkout
  (10 failures on any other layout).
- Plus two LOW items and a structural note on preview_panel.py (4,157
  lines, bypasses the detector contract).

Strengths called out explicitly: fail-closed safety monitor, closed-loop
XY motion, runner lifecycle hygiene, import-boundary tests.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant