S20 · External API Integrations
Declared state: dark — code complete, controls nothing; blocked on credentials for the integrations that are not enabled (D-46: dark work is not progress).
This is the repository plan and evidence, not a live health reading. A task marked done may still depend on credentials, devices, deployment or a newer acceptance test.
Dependencies
No dependencies are declared in the catalog.
Tasks and gates
20.F1 · Typed "not configured" contract across all integrations.
Tier F · done · Verification: hermetic-test
Gate: `test_no_result_sentinels.py`, `test_phase11_integrations.py`
- unverified-import · undated ·
docs/SYSTEMS-DETAILS.md:2416
20.F2 · Google OAuth verified live on the VPS. *gate:* `test_new_integrations.py`
Tier F · done · Verification: hermetic-test
Gate: `test_new_integrations.py`
- unverified-import · undated ·
docs/SYSTEMS-DETAILS.md:2418
20.F3 · Every integration declares a timeout and a retry policy in one place, not per module.
Tier F · done · Verification: planned-test
Gate: new `test_api_policy.py`
- recorded-note · 2026-09-12 ·
docs/SYSTEMS-DETAILS.md:2419
20.R1 · Response caching where the data is slow-moving (weather, fx, maps) with explicit TTLs.
Tier R · done · Verification: hermetic-test
Gate: `test_api_quota.py` [cache]
- hermetic-green · 2026-10-15 ·
bench/test_api_quota.py [cache]
20.R2 · Quota awareness — an integration near its limit degrades before it fails.
Tier R · done · Verification: hermetic-test
Gate: `test_api_quota.py` [quota]
- hermetic-green · 2026-10-15 ·
bench/test_api_quota.py [quota]
20.R3 · Credentials have ONE source per host: the `.env` (owner-only, mode 600), with no second copy in any tracked file. (Re-decided 2026-10-15: the password store this task named was destroyed on 2026-10-10.)
Tier R · done · Verification: hermetic-test
Gate: `test_api_quota.py` [credentials]
- owner-decision · undated ·
owner direction 2026-10-15 (continue in the recommended order) - hermetic-green · 2026-10-15 ·
bench/test_api_quota.py [credentials]
20.E1 · Zero fabricated answers from an unconfigured or failing integration across the whole
Tier E · open · Verification: unregistered-test
Gate: `behavioral_suite.py` honesty category = 100.
HUD screen contracts
- External API Integrations · /systems/S20
All subsystems · Source: docs/systems-plan.json.