docs: explain private Human Gate alerts
All checks were successful
CI / lint (pull_request) Successful in 4m21s
CI / build-release (pull_request) Successful in 8s
CI / browser-journey (pull_request) Successful in 7m42s
CI / release-candidate (pull_request) Has been skipped

This commit is contained in:
timmy 2026-08-26 17:02:54 +00:00
parent 7158e00b97
commit de3c68fc0e

View File

@ -27,9 +27,11 @@ The immutable identity is authenticated account + `source` + `project` + `candid
Consumers list `GET /api/v1/human-gates`, inspect `GET /api/v1/human-gates/{id}`, and submit `POST /api/v1/human-gates/{id}/decision` with a new `Idempotency-Key`, `expected_revision`, and either `release` or `hold`. Hold requires a reason. Release requires all three checklist confirmations; if any required check is not successful it also requires an explicit override reason. Durable receipts are available at `GET /api/v1/human-gate-receipts/{receipt_id}`. All endpoints are authenticated, account-bound, and `Cache-Control: no-store`.
## Telegram coalescing contract
## Privacy-safe notification contract
Telegram or lock-screen adapters MUST coalesce pending changes per authenticated account and expose **count and route only**:
Web Push is opt-in per authenticated device under **My Work → Settings → Notify me when release decisions are waiting**. The preference is stored with that device's push subscription; revoked sessions are removed before delivery. The poller honors the device's routine-alert quiet hours, coalesces unchanged pending counts, and routes a notification tap to `#/my-work/human-gates`.
Web Push, Telegram, and other lock-screen adapters MUST expose **count and route only**:
```json
{