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

    All subsystems · Source: docs/systems-plan.json.