WebODM bounded licensed-sample API runner (2026-09-28)

Use a fresh disposable directory. Extract these scripts there. Requires Python3,
RTK, Docker and the exact cached image digests embedded in the runner. Redis is
pinned by local image ID sha256:286bd4264adb303147270bb2d735352497e950f7b73b2ca42364d63d7daf61ee.
The runner performs no package or image installations.

Download once (69,433,504 bytes, under100MB hard download bound):
rtk curl.exe -L --fail --max-time 180 --max-filesize 100000000 https://codeload.github.com/pierotofy/drone_dataset_brighton_beach/zip/refs/heads/master -o brighton-beach.zip

Verify SHA256 before running; expected:
1c16cb6532760b2ecad1f787e48e88f8033d7e8d7177656f8578e115c16d6dd4
rtk python -c "import hashlib; from pathlib import Path; print(hashlib.sha256(Path('brighton-beach.zip').read_bytes()).hexdigest())"
If it differs, stop and review the dataset revision/license first.

Run one attempt:
rtk python webodm-fullflow.py

The dummy fixture principal exists only in the isolated temporary database.
Four uniquely named containers share a network-none loopback namespace; no host
mounts or public ports. Aggregate cap5440MiB and2CPU. Node lifetime is900seconds.
Private outputs/logs go to webodm-fullflow next to the scripts. It removes only
containers it successfully creates. Existing colliding names cause failure.
Do not run concurrent copies. Do not run more than two justified attempts.

Success requires client.final.status40 AND downloaded raster metadata/hash, not
merely a ready server. Browser UI/static assets and survey accuracy are unverified.
See the research guide for the exact successful run and warning/timeout limits.
Dataset license is included as BRIGHTON-LICENSE.txt (Piero Toffanin, BSD-2-Clause).
Source photographs and output raster are intentionally not included.
