# GridPulse + SkySprout staged-provider readiness

Status: **staged and disabled**. This document is the activation record for the
two provider lanes selected for the next review pass. A provider flag alone is
never enough to make a request: each lane also needs an explicit review flag,
an owner and second-approver record, and a signed staging check.

## Terms review (2026-09-12)

- **OpenStreetMap / Overpass:** OSM data is under the Open Database License
  (ODbL), which requires attribution and makes share-alike obligations relevant
  when distributing a derived database. The public Overpass instance documents
  fair-use limits, identifiable `User-Agent`/`Referer` headers, caching, and
  self-hosted or paid infrastructure for regular commercial use. We therefore
  keep the public connector disabled until a commercial/self-hosted endpoint is
  selected. Sources: [OSM copyright and license](https://www.openstreetmap.org/copyright),
  [Overpass usage guidance](https://wiki.openstreetmap.org/wiki/Overpass_API).
- **Open-Meteo:** the API data is CC BY 4.0 and needs visible attribution. The
  free endpoint is for evaluation/non-commercial use; commercial traffic needs
  a commercial plan and customer endpoint. We keep SkySprout disabled until
  that decision is recorded. Sources: [Open-Meteo license](https://open-meteo.com/en/license),
  [Open-Meteo pricing and commercial-use terms](https://open-meteo.com/en/pricing).
- **OpenAQ (reference only for this packet):** programmatic access requires an
  account/API key, attribution, and considerate use. Its terms prohibit using
  the hosted API to substantially duplicate or directly compete with OpenAQ’s
  core offerings. The existing EcoEcho path remains separately allowlisted and
  aggregate-only. Sources: [OpenAQ Terms of Use](https://docs.openaq.org/about/terms),
  [OpenAQ rate limits](https://docs.openaq.org/using-the-api/rate-limits).

This is an internal technical/legal review record, not acceptance of any
provider agreement. Chris Quinn and Corrida Quinn have read the terms as of
2026-09-12, but no Qurmmius account has clicked “accept” on a third-party
commercial plan in this pass.

## GridPulse

- **Source contract:** OpenStreetMap Overpass for coarse roadwork features and
  Open-Meteo for bounded weather context.
- **Accepted scope:** a named corridor or bounded aggregate area; no live GPS,
  driver IDs, device IDs, or turn-by-turn safety decisions.
- **Controls:** server-side proxy, conservative cache and rate limit, OSM
  attribution, bounded request windows, metadata-only audit, and a human
  review before a signal is published.

## SkySprout

- **Source contract:** Open-Meteo historical weather/soil variables plus an
  approved garden gateway or CSV batch for on-site readings.
- **Accepted scope:** a coarse plot or neighborhood aggregate with at least
  three contributing stations; no home coordinates, operator IDs, device IDs,
  raw frames, or individual-level conclusions.
- **Controls:** unit/range validation, station aggregation, consent and
  stewardship review, server-side proxy, conservative cache/rate limits, and a
  metadata-only audit.

## Activation gates

Keep these values in Netlify **Functions** scope. Provider enablement remains
off until every gate is complete:

```text
GRIDPULSE_PROVIDER_ENABLED=false
GRIDPULSE_PROVIDER_REVIEWED=true
GRIDPULSE_TERMS_REVIEWED=true
GRIDPULSE_STEWARD_APPROVED=true
SKYSPROUT_PROVIDER_ENABLED=false
SKYSPROUT_PROVIDER_REVIEWED=true
SKYSPROUT_TERMS_REVIEWED=true
SKYSPROUT_STEWARD_APPROVED=true
```

The review, terms, and steward flags are intentional independent switches. Set
them to `true` only after:

1. provider terms, attribution, rate limits, and licensing are recorded;
2. a data steward has approved the aggregation boundary and retention period;
3. synthetic fixtures pass SchemaForge and `/api/qi/product-pilot`;
4. one signed staging request is reviewed by the owner and a second approver;
5. rollback is tested by setting `*_PROVIDER_ENABLED=false` and confirming the
   endpoint returns `provider_disabled_pending_review` without contacting the
   upstream provider.

The production fetch adapter never returns raw upstream payloads. It rejects
precise identifiers and requires a signed QI workspace. It also caches
aggregate summaries and enforces per-product request budgets.

## What is still needed from the team

- Select the exact Overpass/Open-Meteo service endpoints and record their terms.
- Name the GridPulse and SkySprout data steward and second approver. Proposed
  internal roles for this review: **Chris Quinn — owner/data steward** and
  **Corrida Quinn — second approver (CFO)**. Both people have now explicitly
  confirmed the recorded internal terms review and scope on 2026-09-12. The
  provider-enabled switches remain `false` until a separate commercial or
  self-hosted provider decision is authorized.
- Supply a synthetic staging fixture for each lane and review its request ID.
- Only then enable the two switches for a time-boxed pilot; do not invite pilot
  users until the first staging run and rollback check are signed off.
