- 01Evidence
- 02Known limits
- 03One extension
- 04Regression tests
Ship the smallest useful version
Keep the tests, the two source modules and a README containing one working command. Include your tested hardware and capture adapter. State that the program recognizes printed markers; it does not identify people or guarantee every marker will decode.
The event policy is intentionally small. It has a bounded recent-label set, no database and no network service. A restart forgets cooldown state. A new run appends to the same log unless you choose a different path.
Choose one extension
A useful next experiment is a report that counts accepted events by label. Read the JSONL file using Python's json module and count the label field. Keep report generation separate from capture so malformed historical lines can be reported without disrupting the camera loop.
Another extension is a different camera adapter. Preserve the policy's accept(payload, now) interface. Validate the new adapter with the same held-marker and missing-frame experiments.
Completion check
You should be able to explain why frame rate is not event count, why wall time does not measure cooldown, where camera ownership ends and which data is written to disk. Run the desktop tests once more after your changes, then demonstrate the physical cases from the previous lesson.
For more free preparation, return to Python files, exceptions and JSON handling. For filesystem durability, follow the Unix/Linux course. No paid cloud API or subscription is required for this project.