The field surface as a signed Android app, built as a Trusted Web Activity over the same
PWA the site serves. There is no separate mobile codebase: the app and the website are
the same code, so they cannot drift.
Install: download curtail-field.apk and open it on an Android device. You will need
to allow installation from this source once.
iOS: there is no build here on purpose. Open
https://curtail-console-api-672785135387.us-central1.run.app/field in Safari and use
Add to Home Screen. That produces a standalone app with no review queue and no expiry,
and a native wrapper around a website would add no capability.
What it does
Captures an attested field measurement (discharge, observer, instrument, optional
location and photo), queues it offline in IndexedDB, and syncs it as append-only
evidence. Three states are shown in words, because only the third means the evidence
entered the record: Saved on device, Syncing, Recorded in ledger.
The photograph is hashed, not uploaded. The device sends a SHA-256 and a byte count and
keeps the image.
What it deliberately cannot do
The device submits evidence and never holds authority. It does not curtail, restore,
sign or serve anything. That is enforced by a test that parses the field module and
searches its executable code for signing verbs as whole identifiers, plus a second test
asserting the approval queue is unchanged after a submission.
Verification
Signing certificate SHA-256:
53:EE:54:60:32:3F:7B:80:8C:B9:FF:9D:28:08:9D:CE:89:57:95:D1:2B:56:BA:37:3E:4C:14:4C:1A:15:9F:2B
Package app.run.us_central1.curtail_console_api_672785135387.twa. Both are served at
https://curtail-console-api-672785135387.us-central1.run.app/.well-known/assetlinks.json,
so Android verifies the app against the origin and the URL bar stays hidden. Check the
apk you downloaded matches:
keytool -printcert -jarfile curtail-field.apk | grep SHA256