Print pack + photo ingest: the Phase 4b field battery#5
Merged
Conversation
- battery/printpack.py: six A4 300dpi print sheets (3 surfaces per grammar), labels provably outside the pattern area, INSTRUCTIONS.md with the photo condition matrix, manifest template - battery/ingest: full implementation — identical recognise pipeline over a photo folder, per-row robustness, raw_results.csv with the two-path ink detail (implied gain answers the is-real-WB-diagonal question), summary.md auto-answering the three Phase 4b questions - print-pack/ committed as the experiment's fixed input - SI-023 (pipeline runs unmodified on raw photos; margin labels are bookkeeping) and SI-024 (field coverage requirements are feature-dependent) - 10 new tests (2 old structure-seam tests replaced); 133 total green
This was referenced Jul 6, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Milestone 3, Phase 8 — everything needed for print-and-photograph L3 testing except the physical part.
battery/printpack.py: six deterministic A4 print sheets at 300 dpi (three surfaces per grammar, 002 with per-seed ink subsets), pattern centred, human-readable label provably disjoint from the pattern area (bookkeeping in the page margin, not a fiducial — spec forbids code regions inside the surface). PlusINSTRUCTIONS.md(print settings, 3 lightings × 3 angles × 2 distances condition matrix, manifest how-to) andphotos/manifest.template.yaml.battery/ingest/: full implementation of the field path. Photos run through the identical recognise pipeline with no photo-special preprocessing — a raw-photo failure is a reported result, not something to be silently fixed. Outputsraw_results.csv(per photo: conditions + verdicts + the 002 two-path ink detail incl. implied applied gain — the data that answers whether real camera white balance stays inside the diagonal model) and an auto-generatedsummary.mdaddressing the three questions exp-002 §6 posed for Phase 4b, each from data or marked insufficient.Tests
10 new (printpack determinism/A4/label-disjoint, end-to-end ingest over synthetic stand-in photos with perspective+WB+JPEG, implied-gain recovery, never-crash robustness); 2 obsolete structure-seam tests replaced. Full suite: 133 passed.
After merge
The physical part: print
print-pack/*.pngat 100%, photograph per the instructions, fillphotos/manifest.yaml, thenuv run python -m battery.ingest photos/ photos/manifest.yaml --out experiments/exp-003-print-photo/.