A dependency-free Python 3.11+ demonstration of two constraints from an anonymized field-engineering deployment in a business-owned legacy Windows restaurant environment:
- Passive capture must never create terminal or PowerShell popups. This repository defines the boundary but intentionally ships no screen-capture or machine-access implementation.
- Visual alerts follow visible ticket identity, not one global red flag. Sparse red glyphs are ignored; broad panel coverage opens the identity gate; one currently visible identity alerts once; a replacement in the same slot alerts without needing an all-clear frame; and cleared keys are forgotten so a later occurrence can alert.
Everything here was written from first principles for this showcase. Fixtures, identities, locations, and the SVG are synthetic. No client source, history, screenshot, order data, private topology, messaging identity, credential, or commercial detail is included.
Status: public clean-room showcase; not the production watcher. License: Apache License 2.0.
python3 -m kds_watch fixtures/demo_sequence.jsonExpected location-minimized output:
{"event":"visual-ticket","location":"demo-line"}
{"event":"visual-ticket","location":"demo-line"}The two lines represent the first qualifying identity and its same-slot replacement. The sparse first frame and repeated identity produce no output. Additional tests cover clear-and-reuse behavior and isolated state per location.
python3 -m unittest discover -s tests -v
python3 -m compileall -q kds_watch tests scripts
python3 scripts/privacy_scan.pyThe core uses only the Python standard library and makes no network calls. See the case study, security boundary, and security policy.
This is an independent educational artifact, not an official client for any KDS or point-of-sale product and not endorsed by any vendor. It models decisions from already-derived observations. It does not capture screens, inspect another process, send notifications, access payment systems, or connect to a restaurant.
Contributions intentionally submitted for inclusion are accepted under the same Apache-2.0 license.