Skip to content

experiments: panel label reading stopped at the gate; field-day photo list - #17

Closed
SamGu-NRX wants to merge 4 commits into
mainfrom
t3/panel-label
Closed

SamGu-NRX wants to merge 4 commits into
mainfrom
t3/panel-label

Conversation

@SamGu-NRX

@SamGu-NRX SamGu-NRX commented Sep 26, 2026 •

Copy link
Copy Markdown
Owner

What changed

We asked whether one phone photo of the main panel's label could replace the installer's form. The form asks for the manufacturer, the model, the main breaker amperage, and whether the panel is a known-hazard line such as Federal Pacific Stab-Lok or Zinsco. This PR adds experiments/panel-label/. Its pass criteria and a stop condition were committed before any result: fewer than about 40 usable openly licensed photos ends the experiment.

Final answer: stopped at the gate

Unique photos Count
Examined at full resolution 67
Any of manufacturer, model or amperage legible 19
Manufacturer and a model or amperage legible 9
All three legible 6

Of the 9, two show the same panel and one is an Indian moulded-case breaker, leaving 7 distinct US panels. The hazard lines barely appear: one Stab-Lok panel and no Zinsco. So reading accuracy, manufacturer naming and the transfer of the meter's retake thresholds were not measured. As an anecdote, not a rate: Vision read the manufacturer or line name on 6 of the 8 legible US photos, and the amperage on 4.

What was searched

Filtered to CC0, public domain, CC BY and CC BY-SA:

  • Wikimedia Commons: 20 file-search queries, from "breaker panel" and "load center" to "Stab-Lok", "Zinsco" and brand names, plus the Square D categories. Commons has no category for US residential panels.
  • Openverse, which indexes Flickr and other openly licensed sources: the same 20 queries, then every page the anonymous API allows (240 results) for 11 core queries.
  • Screening: about 2,800 unique results. About 850 were checked by thumbnail, 78 were downloaded at full resolution, and 67 remained after removing duplicates.
  • What turns up: mostly aircraft and ship panels, European consumer units, switchgear and car fuse boxes. US home-panel photos are mostly wide shots of wiring with no legible label.

screened.csv lists every examined photo with its URL, license, author and per-field call. uv run python -m panel_eval.screen prints the counts above.

Photos to take on field day

The experiment can run as written on the team's own photos, kept in ~/house-scanning-data/panel and never committed. The pre-set bar needs about 40 panels. For each panel, with the homeowner's permission:

  1. Door label: the label inside the panel door, filling the frame, straight on. Gives manufacturer, model or catalogue number, and rated amperage.
  2. Main breaker: the main breaker handle and its rating, from about 20 cm. Gives main amperage.
  3. Deadfront: the whole cover with the door open, including any brand badge or series name. Gives manufacturer and line; hazard lines show their name here.
  4. Context: the panel from about 1 m, so a reader can match the close-ups to the panel.

Shoot handheld with the phone's own camera; the threshold question degrades these photos under control, so no deliberately bad shots are needed. Include several homes built between about 1950 and 1985 to catch Stab-Lok and Zinsco panels. Frame out or cover addresses on inspection stickers, names in the circuit directory, and the meter's serial number. The README has the same list.

Verification

  • uv run pytest -q: 3 tests pass. They cover the tally, the license filter, and EXIF rotation with the width cap. ruff check and ruff format --check are clean.
  • CI's "Panel label checks" runs lint, tests and a check that no photo files are committed. The job is path-filtered, SHA-pinned and contents: read. This PR commits no transcribed labels, so it carries no meter-style leak check; port it from experiments: meter close-up reading, tap-to-confirm and two retake checks #16 when the experiment resumes with labels.

Risk

  • Unconfirmed counts. One AI reader (Claude Opus) made the per-field legibility calls, with no second reader, so the counts are approximate. Even the lenient count is under half the bar.
  • Unreachable results. Openverse's anonymous API stops at 240 results per query, so the long tails of the broadest queries went unsearched. Unsplash and Pexels, which are free to use but not CC-licensed, were not searched; including them is the team's call.

Checklist

  • The scope is focused; related changes belong together
  • I explained what changed and why
  • N/A: before/after images and video. The PR adds an experiment folder only.

🤖 Generated with Claude Code

…reader

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Sep 26, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 38 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: cc27016e-5251-4710-b857-7025ca5e7642

📥 Commits

Reviewing files that changed from the base of the PR and between 4d01494 and cf6e6e1.

⛔ Files ignored due to path filters (2)
  • experiments/panel-label/screened.csv is excluded by !**/*.csv
  • experiments/panel-label/uv.lock is excluded by !**/*.lock
📒 Files selected for processing (11)
  • .github/workflows/panel-label.yml
  • experiments/panel-label/.gitignore
  • experiments/panel-label/README.md
  • experiments/panel-label/meterocr/Package.swift
  • experiments/panel-label/meterocr/Sources/meterocr/main.swift
  • experiments/panel-label/pyproject.toml
  • experiments/panel-label/src/panel_eval/__init__.py
  • experiments/panel-label/src/panel_eval/paths.py
  • experiments/panel-label/src/panel_eval/screen.py
  • experiments/panel-label/src/panel_eval/sources.py
  • experiments/panel-label/tests/test_panel.py

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added the size:XL 500-999 effective changed lines. label Sep 26, 2026
… record the search

Screens about 2,000 Commons and Openverse results; 67 photos examined at
full resolution have 19 with any label field legible, against a pre-set
bar of about 40, so the reading, naming and transfer questions are not
measured. Adds the screening record, a tally command, tests and a
path-filtered CI job.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@github-actions github-actions Bot added size:XXL 1,000+ effective changed lines. and removed size:XL 500-999 effective changed lines. labels Sep 26, 2026
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@SamGu-NRX SamGu-NRX changed the title experiments: can the phone read the main panel's label? experiments: panel label reading — stopped, too few openly licensed photos Sep 26, 2026
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@SamGu-NRX SamGu-NRX changed the title experiments: panel label reading — stopped, too few openly licensed photos experiments: panel label reading stopped at the gate; field-day photo list Sep 26, 2026
@SamGu-NRX
SamGu-NRX marked this pull request as ready for review September 26, 2026 13:15
@codemetrics-ai

Copy link
Copy Markdown

Note

Review skipped

Codemetrics is installed on this repository, but it hasn't been added to your team yet.

To enable AI code reviews for this repo, go to your dashboard and add house-scanning to your team's repositories.

@SamGu-NRX SamGu-NRX mentioned this pull request Sep 26, 2026
2 tasks done
SamGu-NRX added a commit that referenced this pull request Sep 26, 2026
- docs/00 reports the first TestFlight run on a real wall (PR #23),
  says rules.yaml marks every value without a public source as a
  placeholder, and calls Gemini the planned box detector, since no
  branch uses it yet.
- docs/04 notes that the demo has no 1 ft wall-distance rule because
  the solver places the battery flush.
- AGENTS.md and README point to PR #23, PR #17 and the exact docs/00
  section, following the rewritten prompt-writing skill.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
AidenJohnston added a commit that referenced this pull request Sep 26, 2026
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@SamGu-NRX

Copy link
Copy Markdown
Owner Author

Closing without merging. The experiment stopped at its gate: a search found 7 usable openly licensed photos of US panels, and the test needs 40. docs/00 records that in one line. The screening code and the search record stay on the branch if the photo supply changes.

@SamGu-NRX SamGu-NRX closed this Sep 26, 2026
SamGu-NRX pushed a commit that referenced this pull request Oct 15, 2026
The store folder is a9-no-tape and the repo folder is recon/a9-no-tape-scale. Widen the breadth ruff ignore so that folder is linted the same way as A1 through A8.
@SamGu-NRX
SamGu-NRX deleted the t3/panel-label branch October 15, 2026 11:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL 1,000+ effective changed lines.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant