{
  "$schema": "https://ai.torch.tel/docs/capability.schema.json",
  "id": "gnss.position",
  "version": "0.1.0",
  "kind": "sensor",
  "summary": "Current GNSS fix and low-power breadcrumb stream.",
  "availability": {"state": "degraded", "reason": "Engineering contract; receiver not yet validated."},
  "power": {"class": "medium", "typical_mw": 85},
  "permissions": ["location.read"],
  "operations": {
    "state": {
      "mode": "read",
      "summary": "Read the latest cached fix without forcing a new acquisition.",
      "timeout_ms": 100,
      "input_schema": {"type": "object", "additionalProperties": false},
      "output_schema": {"type": "object", "required": ["fix", "age_ms"], "properties": {"fix": {"enum": ["none", "2d", "3d"]}, "age_ms": {"type": "integer"}}},
      "errors": ["capability_offline", "permission_denied"]
    },
    "subscribe": {
      "mode": "subscribe",
      "summary": "Subscribe to fixes at a caller-selected energy budget.",
      "timeout_ms": 1000,
      "input_schema": {"type": "object", "properties": {"interval_s": {"type": "integer", "minimum": 1}, "accuracy": {"enum": ["coarse", "balanced", "best"]}}},
      "output_schema": {"type": "object", "required": ["lat", "lon", "timestamp"], "properties": {"lat": {"type": "number"}, "lon": {"type": "number"}, "timestamp": {"type": "string", "format": "date-time"}}},
      "errors": ["energy_budget_exceeded", "no_fix", "permission_denied"]
    }
  }
}
