{
  "schemaVersion": "2.0.0",
  "generator": "scripts/aggregate.py",
  "trackingIssue": "honua-io/honua-evidence#1",
  "generatedAt": "2026-07-18T01:37:31Z",
  "description": "Phase-B enriched capability evidence matrix. Ingests honua-server's Phase-A capability-matrix.v1.json as a producer snapshot (does not re-derive it) and joins SDK coverage, executable-sample coverage, and a known-gaps preview, keyed to honua-server's canonical capability vocabulary. See freshness for per-producer pull status.",
  "sourceArtifacts": {
    "server-keys": "https://raw.githubusercontent.com/honua-io/honua-server/trunk/docs/gis/data/capability-keys.v1.json",
    "server-matrix": "https://raw.githubusercontent.com/honua-io/honua-server/trunk/docs/gis/data/capability-matrix.v1.json",
    "sdk-js": "https://raw.githubusercontent.com/honua-io/honua-sdk-js/trunk/config/sdk-coverage.v1.json",
    "sdk-dotnet": "https://raw.githubusercontent.com/honua-io/honua-sdk-dotnet/trunk/contracts/sdk-coverage.v1.json",
    "sdk-python": "https://raw.githubusercontent.com/honua-io/honua-sdk-python/trunk/compatibility/sdk-coverage.v1.json",
    "samples": "https://github.com/honua-io/honua-samples/actions/workflows/run-samples.yml",
    "open-issues": "https://github.com/honua-io/honua-server/issues?q=is%3Aopen+label%3Acap%2F%2A"
  },
  "unjoinedCiteSuites": [
    "GML 3.2",
    "GeoPackage 1.2",
    "KML 2.2"
  ],
  "freshness": {
    "server-keys": {
      "fetchedAt": "2026-07-18T01:37:29Z",
      "sourceVersion": "e0df679127fe@2026-07-17T09:50:30Z",
      "ageDays": 0,
      "status": "fresh"
    },
    "server-matrix": {
      "fetchedAt": "2026-07-18T01:37:29Z",
      "sourceVersion": "91d61202decf@2026-07-18T00:22:45Z",
      "ageDays": 0,
      "status": "fresh"
    },
    "sdk-js": {
      "fetchedAt": "2026-07-18T01:37:29Z",
      "sourceVersion": "7524ca5c871a@2026-07-17T21:08:47Z",
      "ageDays": 0,
      "status": "fresh"
    },
    "sdk-dotnet": {
      "fetchedAt": "2026-07-18T01:37:30Z",
      "sourceVersion": "677372ebfad2@2026-07-17T20:35:43Z",
      "ageDays": 0,
      "status": "fresh"
    },
    "sdk-python": {
      "fetchedAt": "2026-07-18T01:37:30Z",
      "sourceVersion": "7af4dd8ca654@2026-07-17T20:39:55Z",
      "ageDays": 0,
      "status": "fresh"
    },
    "samples": {
      "fetchedAt": "2026-07-18T01:37:31Z",
      "sourceVersion": null,
      "status": "missing",
      "detail": "fetch failed: HTTP Error 401: Unauthorized"
    },
    "open-issues": {
      "fetchedAt": "2026-07-18T01:37:31Z",
      "sourceVersion": null,
      "status": "missing",
      "detail": "no GitHub token available for issue lookup (set HONUA_EVIDENCE_TOKEN)"
    }
  },
  "capabilities": [
    {
      "key": "admin.control-plane",
      "displayName": "Admin Control Plane",
      "category": "ControlPlane",
      "edition": "Community",
      "entryCount": 365,
      "provingTestCount": 947,
      "maturity": {
        "implemented": 365
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [
        {
          "clientLane": "cli",
          "protocol": "admin-api"
        }
      ],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "covered",
          "sinceVersion": "unreleased",
          "entrypoints": [
            "Honua.Sdk.Admin.IHonuaAdminConnectionsClient",
            "Honua.Sdk.Admin.IHonuaAdminServicesClient",
            "Honua.Sdk.Admin.IHonuaAdminUsersClient",
            "Honua.Sdk.Admin.IHonuaAdminRolesClient",
            "Honua.Sdk.Admin.IHonuaAdminConfigClient",
            "Honua.Sdk.Admin.IHonuaAdminMetadataClient"
          ]
        },
        "python": {
          "status": "covered",
          "sinceVersion": "unreleased (source preview; not yet published to PyPI)",
          "entrypoints": [
            "honua_admin.AsyncHonuaAdminClient",
            "honua_admin.HonuaAdminClient"
          ]
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/control-plane"
      }
    },
    {
      "key": "ai.agent-operations",
      "displayName": "Agent Operations (Validation Layer)",
      "category": "AI",
      "edition": "Pro",
      "entryCount": 0,
      "provingTestCount": 0,
      "maturity": {},
      "noSurface": {
        "capability": "ai.agent-operations",
        "reasonCode": "cross-cutting-gate",
        "reason": "Validation-layer gate applied across several existing MCP/spec routes rather than a distinct route of its own; see ai.spec-apply, ai.grounding, ai.workflow-generation for the gated route surfaces.",
        "category": "Ai",
        "edition": "Pro"
      },
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "partial",
          "sinceVersion": "0.1.0-beta.0",
          "entrypoints": [
            "dryRunAgentPlan",
            "executeAgentPlanStep",
            "verifyAgentStepAuthorization (src/agent-safety)"
          ],
          "evidence": [
            "test/agent-safety-performance.test.ts",
            "test/agent-safety-semantic-eval.test.ts",
            "test/agent-safety.test.ts"
          ],
          "note": "Agent dry-run, execution, and approval-consumption authorization are implemented in src/agent-safety and proven by dedicated tests. The MCP tool-discovery/execution facade (agent-tools-facade in config/support-manifest.v1.json) additionally requires a Honua Server for tool execution against live data, so this key stops short of a fully standalone claim."
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/ai"
      }
    },
    {
      "key": "ai.approval-workflows",
      "displayName": "Agent Approval Workflows",
      "category": "AI",
      "edition": "Enterprise",
      "entryCount": 0,
      "provingTestCount": 0,
      "maturity": {},
      "noSurface": {
        "capability": "ai.approval-workflows",
        "reasonCode": "cross-cutting-gate",
        "reason": "Human-in-the-loop approval policy layered over ai.agent-operations routes; no distinct route of its own.",
        "category": "Ai",
        "edition": "Enterprise"
      },
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "covered",
          "sinceVersion": "0.1.0-beta.0",
          "entrypoints": [
            "issueAgentApproval",
            "issueAgentExecutionReceipt",
            "verifyAgentApproval",
            "verifyAgentExecutionReceipt (src/agent-safety)"
          ],
          "evidence": [
            "test/agent-execution.test.ts",
            "test/agent-safety-evidence.test.ts",
            "test/agent-safety.test.ts"
          ]
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/ai"
      }
    },
    {
      "key": "ai.grounding",
      "displayName": "Spec Grounding Mutations",
      "category": "AI",
      "edition": "Pro",
      "entryCount": 2,
      "provingTestCount": 11,
      "maturity": {
        "implemented": 2
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/ai"
      }
    },
    {
      "key": "ai.mcp-discovery",
      "displayName": "MCP Discovery & Query",
      "category": "AI",
      "edition": "Community",
      "entryCount": 4,
      "provingTestCount": 65,
      "maturity": {
        "implemented": 4
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "partial",
          "sinceVersion": "0.1.0-beta.0",
          "entrypoints": [
            "HONUA_AGENT_TOOL_NAMES",
            "HonuaAgentToolDefinition (src/agent-tools/index.ts)"
          ],
          "evidence": [
            "test/agent-tools.test.ts"
          ],
          "note": "Tool definitions and JSON schemas (HONUA_AGENT_TOOL_NAMES) are local and discoverable client-side; discovery and execution against a live Honua MCP server requires the Honua facade (agent-tools-facade in config/support-manifest.v1.json)."
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/ai"
      }
    },
    {
      "key": "ai.spec-apply",
      "displayName": "Spec Apply Execution",
      "category": "AI",
      "edition": "Pro",
      "entryCount": 0,
      "provingTestCount": 0,
      "maturity": {},
      "noSurface": {
        "capability": "ai.spec-apply",
        "reasonCode": "sdk-only",
        "reason": "Spec-apply execution is invoked via MCP tool call and internal job submission, not a distinct catalogued HTTP route in this slice.",
        "category": "Ai",
        "edition": "Pro"
      },
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "covered",
          "sinceVersion": "unreleased",
          "entrypoints": [
            "Honua.Sdk.Spec.IHonuaSpecClient.ApplyAsync",
            "Honua.Sdk.Spec.IHonuaSpecClient.CancelAsync"
          ]
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/ai"
      }
    },
    {
      "key": "ai.spec-artifacts",
      "displayName": "Spec Artifact Retrieval",
      "category": "AI",
      "edition": "Community",
      "entryCount": 5,
      "provingTestCount": 36,
      "maturity": {
        "implemented": 5
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "covered",
          "sinceVersion": "unreleased",
          "entrypoints": [
            "Honua.Sdk.Spec.IHonuaSpecClient.GetArtifactAsync"
          ]
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/ai"
      }
    },
    {
      "key": "ai.workflow-generation",
      "displayName": "AI Workflow and Content Generation",
      "category": "AI",
      "edition": "Pro",
      "entryCount": 0,
      "provingTestCount": 0,
      "maturity": {},
      "noSurface": {
        "capability": "ai.workflow-generation",
        "reasonCode": "sdk-only",
        "reason": "Workflow/content generation is invoked via MCP tool call, not a distinct catalogued HTTP route in this slice.",
        "category": "Ai",
        "edition": "Pro"
      },
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/ai"
      }
    },
    {
      "key": "alerts.dwell",
      "displayName": "Dwell Trigger",
      "category": "Alerts",
      "edition": "Enterprise",
      "entryCount": 0,
      "provingTestCount": 0,
      "maturity": {},
      "noSurface": {
        "capability": "alerts.dwell",
        "reasonCode": "config-flag",
        "reason": "Dwell is a trigger-type value on the same alert-rule admin routes as alerts.enter-exit (admin.control-plane), not a distinct route.",
        "category": "Alerts",
        "edition": "Enterprise"
      },
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "partial",
          "sinceVersion": "unreleased",
          "entrypoints": [
            "Honua.Sdk.Admin.IHonuaAdminAlertsClient"
          ],
          "note": "Same generic AlertRuleRequest.TriggerType/Channels passthrough as alerts.threshold; no dwell-duration-specific typed fields or client-side dwell evaluation ships in this SDK."
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/alerts"
      }
    },
    {
      "key": "alerts.enter-exit",
      "displayName": "Enter/Exit Geofence Triggers",
      "category": "Alerts",
      "edition": "Pro",
      "entryCount": 0,
      "provingTestCount": 0,
      "maturity": {},
      "noSurface": {
        "capability": "alerts.enter-exit",
        "reasonCode": "config-flag",
        "reason": "Enter/exit is a trigger-type value on the same alert-rule admin routes as alerts.evaluation, not a distinct route.",
        "category": "Alerts",
        "edition": "Pro"
      },
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "partial",
          "sinceVersion": "unreleased",
          "entrypoints": [
            "Honua.Sdk.Admin.IHonuaAdminAlertsClient"
          ],
          "note": "Alert-zone CRUD (ListAlertZonesAsync/CreateAlertZoneAsync/etc.) plus generic rule CRUD supports configuring enter/exit zones, but TriggerType remains an opaque string -- the SDK has no typed enter-exit request shape or client-side geofence evaluation for alerting."
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/alerts"
      }
    },
    {
      "key": "alerts.evaluation",
      "displayName": "Alert Evaluation Engine",
      "category": "Alerts",
      "edition": "Pro",
      "entryCount": 18,
      "provingTestCount": 39,
      "maturity": {
        "implemented": 18
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/alerts"
      }
    },
    {
      "key": "alerts.threshold",
      "displayName": "Threshold Trigger",
      "category": "Alerts",
      "edition": "Enterprise",
      "entryCount": 0,
      "provingTestCount": 0,
      "maturity": {},
      "noSurface": {
        "capability": "alerts.threshold",
        "reasonCode": "config-flag",
        "reason": "Threshold is a trigger-type value on the same alert-rule admin routes as alerts.evaluation, not a distinct route.",
        "category": "Alerts",
        "edition": "Enterprise"
      },
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "partial",
          "sinceVersion": "unreleased",
          "entrypoints": [
            "Honua.Sdk.Admin.IHonuaAdminAlertsClient"
          ],
          "note": "Generic alert-rule CRUD (CreateAlertRuleAsync/UpdateAlertRuleAsync) passes AlertRuleRequest.TriggerType and Channels through as opaque strings. The SDK ships no typed threshold-specific request/response shape and does not validate threshold semantics client-side."
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/alerts"
      }
    },
    {
      "key": "analytics.buffer-aggregate",
      "displayName": "Buffer Aggregate",
      "category": "Analytics",
      "edition": "Pro",
      "entryCount": 1,
      "provingTestCount": 10,
      "maturity": {
        "implemented": 1
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/analytics"
      }
    },
    {
      "key": "analytics.clustering",
      "displayName": "Spatial Clustering",
      "category": "Analytics",
      "edition": "Pro",
      "entryCount": 1,
      "provingTestCount": 16,
      "maturity": {
        "implemented": 1
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/analytics"
      }
    },
    {
      "key": "analytics.content",
      "displayName": "Analysis Artifact Content",
      "category": "Analytics",
      "edition": "Community",
      "entryCount": 15,
      "provingTestCount": 23,
      "maturity": {
        "implemented": 15
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/analytics"
      }
    },
    {
      "key": "analytics.density",
      "displayName": "Density Binning",
      "category": "Analytics",
      "edition": "Pro",
      "entryCount": 1,
      "provingTestCount": 8,
      "maturity": {
        "implemented": 1
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/analytics"
      }
    },
    {
      "key": "analytics.line-of-sight",
      "displayName": "Line of Sight",
      "category": "Analytics",
      "edition": "Pro",
      "entryCount": 1,
      "provingTestCount": 4,
      "maturity": {
        "implemented": 1
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/analytics"
      }
    },
    {
      "key": "analytics.reporting",
      "displayName": "Analysis Reporting",
      "category": "Analytics",
      "edition": "Community",
      "entryCount": 2,
      "provingTestCount": 3,
      "maturity": {
        "implemented": 2
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "partial",
          "sinceVersion": "unreleased",
          "entrypoints": [
            "Honua.Sdk.Studio.IHonuaStudioReportsClient.GetReportAsync",
            "Honua.Sdk.Studio.IHonuaStudioReportsClient.RenderReportAsync"
          ],
          "note": "Read/render only: retrieves and renders (Markdown/HTML) a structured analysis report for an already-completed job. The SDK does not submit or configure the analytics/report-generating job itself -- that goes through the generic IHonuaProcessesClient/IHonuaProcessGrpcClient job submission, not a typed analytics wrapper."
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/analytics"
      }
    },
    {
      "key": "analytics.slice",
      "displayName": "Slice/Volumetric Analysis",
      "category": "Analytics",
      "edition": "Pro",
      "entryCount": 1,
      "provingTestCount": 3,
      "maturity": {
        "implemented": 1
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/analytics"
      }
    },
    {
      "key": "analytics.spatial-join",
      "displayName": "Spatial Join",
      "category": "Analytics",
      "edition": "Pro",
      "entryCount": 1,
      "provingTestCount": 10,
      "maturity": {
        "implemented": 1
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/analytics"
      }
    },
    {
      "key": "analytics.sun-shadow",
      "displayName": "Sun/Shadow Analysis",
      "category": "Analytics",
      "edition": "Pro",
      "entryCount": 1,
      "provingTestCount": 4,
      "maturity": {
        "implemented": 1
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/analytics"
      }
    },
    {
      "key": "analytics.viewshed",
      "displayName": "Viewshed",
      "category": "Analytics",
      "edition": "Pro",
      "entryCount": 1,
      "provingTestCount": 3,
      "maturity": {
        "implemented": 1
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/analytics"
      }
    },
    {
      "key": "caching.output-cache",
      "displayName": "Output Caching",
      "category": "Caching",
      "edition": "Pro",
      "entryCount": 0,
      "provingTestCount": 0,
      "maturity": {},
      "noSurface": {
        "capability": "caching.output-cache",
        "reasonCode": "config-flag",
        "reason": "Output caching is a server configuration setting (Cache:ResponseCachingEnabled), not a distinct route.",
        "category": "Caching",
        "edition": "Pro"
      },
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/caching"
      }
    },
    {
      "key": "caching.redis",
      "displayName": "Redis Distributed Cache",
      "category": "Caching",
      "edition": "Pro",
      "entryCount": 0,
      "provingTestCount": 0,
      "maturity": {},
      "noSurface": {
        "capability": "caching.redis",
        "reasonCode": "config-flag",
        "reason": "Redis distributed cache is a deployment configuration setting, not a distinct route.",
        "category": "Caching",
        "edition": "Pro"
      },
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/caching"
      }
    },
    {
      "key": "channels.aws-sns",
      "displayName": "AWS SNS Delivery",
      "category": "Channels",
      "edition": "Enterprise",
      "entryCount": 0,
      "provingTestCount": 0,
      "maturity": {},
      "noSurface": {
        "capability": "channels.aws-sns",
        "reasonCode": "config-flag",
        "reason": "Delivery channel selection under the generic alerts/channels admin routes (admin.control-plane); no per-channel route.",
        "category": "Channels",
        "edition": "Enterprise"
      },
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/channels"
      }
    },
    {
      "key": "channels.azure-eventgrid",
      "displayName": "Azure Event Grid Delivery",
      "category": "Channels",
      "edition": "Enterprise",
      "entryCount": 0,
      "provingTestCount": 0,
      "maturity": {},
      "noSurface": {
        "capability": "channels.azure-eventgrid",
        "reasonCode": "config-flag",
        "reason": "Delivery channel selection under the generic alerts/channels admin routes (admin.control-plane); no per-channel route.",
        "category": "Channels",
        "edition": "Enterprise"
      },
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/channels"
      }
    },
    {
      "key": "channels.digest",
      "displayName": "Digest Delivery",
      "category": "Channels",
      "edition": "Enterprise",
      "entryCount": 0,
      "provingTestCount": 0,
      "maturity": {},
      "noSurface": {
        "capability": "channels.digest",
        "reasonCode": "config-flag",
        "reason": "Delivery channel selection under the generic alerts/channels admin routes (admin.control-plane); no per-channel route.",
        "category": "Channels",
        "edition": "Enterprise"
      },
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/channels"
      }
    },
    {
      "key": "channels.email",
      "displayName": "Email Delivery",
      "category": "Channels",
      "edition": "Enterprise",
      "entryCount": 0,
      "provingTestCount": 0,
      "maturity": {},
      "noSurface": {
        "capability": "channels.email",
        "reasonCode": "config-flag",
        "reason": "Delivery channel selection under the generic alerts/channels admin routes (admin.control-plane); no per-channel route.",
        "category": "Channels",
        "edition": "Enterprise"
      },
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/channels"
      }
    },
    {
      "key": "channels.slack",
      "displayName": "Slack Delivery",
      "category": "Channels",
      "edition": "Enterprise",
      "entryCount": 0,
      "provingTestCount": 0,
      "maturity": {},
      "noSurface": {
        "capability": "channels.slack",
        "reasonCode": "config-flag",
        "reason": "Delivery channel selection under the generic alerts/channels admin routes (admin.control-plane); no per-channel route.",
        "category": "Channels",
        "edition": "Enterprise"
      },
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/channels"
      }
    },
    {
      "key": "channels.teams",
      "displayName": "Microsoft Teams Delivery",
      "category": "Channels",
      "edition": "Enterprise",
      "entryCount": 0,
      "provingTestCount": 0,
      "maturity": {},
      "noSurface": {
        "capability": "channels.teams",
        "reasonCode": "config-flag",
        "reason": "Delivery channel selection under the generic alerts/channels admin routes (admin.control-plane); no per-channel route.",
        "category": "Channels",
        "edition": "Enterprise"
      },
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/channels"
      }
    },
    {
      "key": "channels.webhook",
      "displayName": "Webhook Delivery",
      "category": "Channels",
      "edition": "Pro",
      "entryCount": 0,
      "provingTestCount": 0,
      "maturity": {},
      "noSurface": {
        "capability": "channels.webhook",
        "reasonCode": "config-flag",
        "reason": "Delivery channel selection under the generic alerts/channels admin routes (admin.control-plane); no per-channel route.",
        "category": "Channels",
        "edition": "Pro"
      },
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/channels"
      }
    },
    {
      "key": "collaboration.map-sessions",
      "displayName": "Map Collaboration Sessions",
      "category": "Collaboration",
      "edition": "Community",
      "entryCount": 7,
      "provingTestCount": 17,
      "maturity": {
        "implemented": 7
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [
        "dashboards-apps"
      ],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "partial",
          "sinceVersion": "0.1.0-beta.0",
          "entrypoints": [
            "@honua/sdk-js/collaboration"
          ],
          "evidence": [
            "test/collaboration.test.ts"
          ],
          "note": "The SDK entrypoint is a temporary shim; new code imports @honua/app-platform/collaboration."
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/collaboration"
      }
    },
    {
      "key": "demo.showcase",
      "displayName": "Demo Showcase Surfaces",
      "category": "Demo",
      "edition": "Community",
      "entryCount": 2,
      "provingTestCount": 3,
      "maturity": {
        "implemented": 2
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/demo"
      }
    },
    {
      "key": "discovery.capability-manifest",
      "displayName": "Capability Manifest",
      "category": "Discovery",
      "edition": "Community",
      "entryCount": 2,
      "provingTestCount": 11,
      "maturity": {
        "implemented": 2
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "partial",
          "sinceVersion": "0.1.0-beta.0",
          "entrypoints": [
            "HonuaClient.checkCompatibility()"
          ],
          "evidence": [
            "test/server-compatibility.test.ts"
          ],
          "note": "Reads the Honua administrative capabilities contract and should be skipped for standalone reads."
        },
        "dotnet": {
          "status": "covered",
          "sinceVersion": "unreleased",
          "entrypoints": [
            "Honua.Sdk.Studio.Capabilities.IHonuaCapabilityManifestClient.GetManifestAsync"
          ]
        },
        "python": {
          "status": "covered",
          "sinceVersion": "unreleased (source preview; not yet published to PyPI)",
          "entrypoints": [
            "honua_sdk.AsyncHonuaClient.capabilities",
            "honua_admin.AsyncHonuaAdminClient.get_capabilities",
            "honua_admin.AsyncHonuaAdminClient.get_capability_flags",
            "honua_admin.AsyncHonuaAdminClient.check_compatibility"
          ]
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/discovery"
      }
    },
    {
      "key": "dr.backup-automation",
      "displayName": "Backup Automation",
      "category": "DisasterRecovery",
      "edition": "Enterprise",
      "entryCount": 0,
      "provingTestCount": 0,
      "maturity": {},
      "noSurface": {
        "capability": "dr.backup-automation",
        "reasonCode": "ops-background-job",
        "reason": "Scheduled backup automation is an operational background job, not an HTTP route.",
        "category": "DisasterRecovery",
        "edition": "Enterprise"
      },
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/disaster-recovery"
      }
    },
    {
      "key": "dr.cache-backup",
      "displayName": "Cache State Backup",
      "category": "DisasterRecovery",
      "edition": "Enterprise",
      "entryCount": 0,
      "provingTestCount": 0,
      "maturity": {},
      "noSurface": {
        "capability": "dr.cache-backup",
        "reasonCode": "ops-background-job",
        "reason": "Cache-state backup/restore is an operational background job, not an HTTP route.",
        "category": "DisasterRecovery",
        "edition": "Enterprise"
      },
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/disaster-recovery"
      }
    },
    {
      "key": "dr.failover",
      "displayName": "Failover Playbooks",
      "category": "DisasterRecovery",
      "edition": "Enterprise",
      "entryCount": 0,
      "provingTestCount": 0,
      "maturity": {},
      "noSurface": {
        "capability": "dr.failover",
        "reasonCode": "ops-background-job",
        "reason": "Failover playbooks are operational health-check-driven automation, not an HTTP route.",
        "category": "DisasterRecovery",
        "edition": "Enterprise"
      },
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/disaster-recovery"
      }
    },
    {
      "key": "dr.rto-rpo-reporting",
      "displayName": "RTO/RPO Reporting",
      "category": "DisasterRecovery",
      "edition": "Enterprise",
      "entryCount": 0,
      "provingTestCount": 0,
      "maturity": {},
      "noSurface": {
        "capability": "dr.rto-rpo-reporting",
        "reasonCode": "ops-background-job",
        "reason": "RTO/RPO objective tracking is a reporting computation surfaced through the operational status surface (ops.observability), not a distinct route.",
        "category": "DisasterRecovery",
        "edition": "Enterprise"
      },
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/disaster-recovery"
      }
    },
    {
      "key": "editing.branch-versioning",
      "displayName": "Branch Versioning",
      "category": "Editing",
      "edition": "Enterprise",
      "entryCount": 15,
      "provingTestCount": 27,
      "maturity": {
        "experimental": 15
      },
      "noSurface": null,
      "cite": [],
      "parity": [
        {
          "serviceId": "version-management-server",
          "displayName": "VersionManagementServer (branch versioning)",
          "parity": "partial"
        }
      ],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/editing"
      }
    },
    {
      "key": "editing.featureserver-edits",
      "displayName": "FeatureServer Editing",
      "category": "Editing",
      "edition": "Pro",
      "entryCount": 7,
      "provingTestCount": 82,
      "maturity": {
        "implemented": 7
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [
        "editing"
      ],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "covered",
          "sinceVersion": "0.1.0-beta.0",
          "entrypoints": [
            "@honua/sdk-js/esri-compat",
            "HonuaClient.queryFeatures",
            "Source",
            "connect()"
          ],
          "evidence": [
            "scripts/first-map-live-evidence.mjs",
            "test/connect.test.ts",
            "test/contract/conformance.test.ts",
            "test/contract/geoservices-conformance.test.ts",
            "test/feature-layer-compat.test.ts"
          ]
        },
        "dotnet": {
          "status": "covered",
          "sinceVersion": "unreleased",
          "entrypoints": [
            "Honua.Sdk.GeoServices.FeatureServer.IHonuaFeatureServerEditClient.ApplyEditsAsync"
          ]
        },
        "python": {
          "status": "covered",
          "sinceVersion": "unreleased (source preview; not yet published to PyPI)",
          "entrypoints": [
            "honua_sdk.protocols.GeoServicesFeatureServerClient.apply_edits",
            "honua_sdk.AsyncHonuaClient.apply_edits",
            "honua_sdk.AsyncHonuaClient.apply_edits_result"
          ]
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/editing"
      }
    },
    {
      "key": "enrichment.datasets",
      "displayName": "Data Enrichment Datasets",
      "category": "Enrichment",
      "edition": "Community",
      "entryCount": 7,
      "provingTestCount": 22,
      "maturity": {
        "implemented": 7
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "partial",
          "sinceVersion": "unreleased",
          "entrypoints": [
            "Honua.Sdk.Abstractions.Data.IHonuaEnrichmentDataClient"
          ],
          "note": "Honua.Sdk.Abstractions ships IHonuaEnrichmentDataClient as a provider-neutral contract (GetEnrichmentMetadataAsync/EnrichAsync), but this SDK contains no concrete HTTP-backed implementation of it -- no HonuaEnrichmentDataClient class exists in src/ yet."
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/enrichment"
      }
    },
    {
      "key": "fieldops.forms",
      "displayName": "Field Collection Forms",
      "category": "FieldOps",
      "edition": "Community",
      "entryCount": 22,
      "provingTestCount": 37,
      "maturity": {
        "implemented": 22
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [
        "survey123"
      ],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "covered",
          "sinceVersion": "unreleased",
          "entrypoints": [
            "Honua.Sdk.Field.Forms.FormValidator",
            "Honua.Sdk.Field.Forms.FieldFormSchemaMapper",
            "Honua.Sdk.Field.Forms.CalculatedFieldEvaluator",
            "Honua.Sdk.Field.Records.RecordWorkflow",
            "Honua.Sdk.Field.Records.DuplicateDetector"
          ]
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/field-ops"
      }
    },
    {
      "key": "fieldops.offline-sync",
      "displayName": "Offline/Field Sync",
      "category": "FieldOps",
      "edition": "Pro",
      "entryCount": 18,
      "provingTestCount": 126,
      "maturity": {
        "experimental": 5,
        "implemented": 13
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "partial",
          "sinceVersion": "0.1.0-beta.0",
          "entrypoints": [
            "HonuaOfflineRegion (src/offline/region.ts)",
            "downloadOfflineRegion"
          ],
          "evidence": [
            "test/offline-error-envelope.test.ts",
            "test/offline-region.test.ts"
          ],
          "note": "SDK implements client-side offline map-region download and session tracking (src/offline/region.ts); it does not implement field-form data collection or bidirectional field-data sync, which is the fieldops.forms capability the SDK does not touch."
        },
        "dotnet": {
          "status": "covered",
          "sinceVersion": "unreleased",
          "entrypoints": [
            "Honua.Sdk.Offline.OfflineSyncEngine",
            "Honua.Sdk.Offline.OfflineDownloadPlanner",
            "Honua.Sdk.Offline.ReplicaSyncClient"
          ]
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/field-ops"
      }
    },
    {
      "key": "geocoding.batch",
      "displayName": "Batch Geocoding",
      "category": "Geocoding",
      "edition": "Enterprise",
      "entryCount": 3,
      "provingTestCount": 14,
      "maturity": {
        "implemented": 3
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "covered",
          "sinceVersion": "unreleased",
          "entrypoints": [
            "Honua.Sdk.Admin.Geocoding.IHonuaGeocodingClient.BatchGeocodeAsync",
            "Honua.Sdk.Admin.Geocoding.IHonuaBatchGeocodingClient.BatchGeocodeDetailedAsync"
          ]
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/geocoding"
      }
    },
    {
      "key": "geocoding.failover",
      "displayName": "Provider Failover",
      "category": "Geocoding",
      "edition": "Pro",
      "entryCount": 0,
      "provingTestCount": 0,
      "maturity": {},
      "noSurface": {
        "capability": "geocoding.failover",
        "reasonCode": "config-flag",
        "reason": "Provider failover is a configuration behavior of the geocoding.forward/reverse routes, not a distinct route.",
        "category": "Geocoding",
        "edition": "Pro"
      },
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/geocoding"
      }
    },
    {
      "key": "geocoding.forward",
      "displayName": "Forward Geocoding",
      "category": "Geocoding",
      "edition": "Pro",
      "entryCount": 9,
      "provingTestCount": 45,
      "maturity": {
        "implemented": 9
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [
        "geocoding"
      ],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "covered",
          "sinceVersion": "0.1.0-beta.0",
          "entrypoints": [
            "HonuaGeocoder.forward",
            "connect()",
            "geocodingProvider (honua/nominatim/pelias/photon)"
          ],
          "evidence": [
            "test/geocoding-providers.test.ts",
            "test/geocoding.test.ts"
          ]
        },
        "dotnet": {
          "status": "covered",
          "sinceVersion": "unreleased",
          "entrypoints": [
            "Honua.Sdk.Admin.Geocoding.IHonuaGeocodingClient.ForwardGeocodeAsync"
          ]
        },
        "python": {
          "status": "covered",
          "sinceVersion": "unreleased (source preview; not yet published to PyPI)",
          "entrypoints": [
            "honua_sdk.geocoding.HonuaGeocodingClient.forward_geocode",
            "honua_sdk.async_geocoding.AsyncHonuaGeocodingClient.forward_geocode"
          ]
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/geocoding"
      }
    },
    {
      "key": "geocoding.reverse",
      "displayName": "Reverse Geocoding",
      "category": "Geocoding",
      "edition": "Pro",
      "entryCount": 3,
      "provingTestCount": 12,
      "maturity": {
        "implemented": 3
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "covered",
          "sinceVersion": "0.1.0-beta.0",
          "entrypoints": [
            "HonuaGeocoder.reverse",
            "connect()",
            "geocodingProvider (honua/nominatim/pelias/photon)"
          ],
          "evidence": [
            "test/geocoding-providers.test.ts",
            "test/geocoding.test.ts"
          ]
        },
        "dotnet": {
          "status": "covered",
          "sinceVersion": "unreleased",
          "entrypoints": [
            "Honua.Sdk.Admin.Geocoding.IHonuaGeocodingClient.ReverseGeocodeAsync"
          ]
        },
        "python": {
          "status": "covered",
          "sinceVersion": "unreleased (source preview; not yet published to PyPI)",
          "entrypoints": [
            "honua_sdk.geocoding.HonuaGeocodingClient.reverse_geocode",
            "honua_sdk.async_geocoding.AsyncHonuaGeocodingClient.reverse_geocode"
          ]
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/geocoding"
      }
    },
    {
      "key": "identity.claims-mapping",
      "displayName": "Claims Mapping",
      "category": "Identity",
      "edition": "Enterprise",
      "entryCount": 0,
      "provingTestCount": 0,
      "maturity": {},
      "noSurface": {
        "capability": "identity.claims-mapping",
        "reasonCode": "config-flag",
        "reason": "Claims-to-role mapping is an OIDC configuration setting under identity.oidc admin routes, not a distinct route.",
        "category": "Identity",
        "edition": "Enterprise"
      },
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/identity"
      }
    },
    {
      "key": "identity.mtls-client-certificate",
      "displayName": "mTLS Client-Certificate Authentication",
      "category": "Identity",
      "edition": "Enterprise",
      "entryCount": 13,
      "provingTestCount": 23,
      "maturity": {
        "implemented": 13
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/identity"
      }
    },
    {
      "key": "identity.oidc",
      "displayName": "OIDC Authentication",
      "category": "Identity",
      "edition": "Pro",
      "entryCount": 6,
      "provingTestCount": 7,
      "maturity": {
        "implemented": 6
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "covered",
          "sinceVersion": "0.1.0-beta.0",
          "entrypoints": [
            "HonuaOAuth2Provider (src/core/auth/oauth2-provider.ts)"
          ],
          "evidence": [
            "test/auth-client-credentials.test.ts",
            "test/auth-client-integration.test.ts",
            "test/auth-oauth2-provider.test.ts",
            "test/oauth-identity-compat.test.ts"
          ]
        },
        "dotnet": {
          "status": "covered",
          "sinceVersion": "unreleased",
          "entrypoints": [
            "Honua.Sdk.Admin.IHonuaAdminIdentityClient.CreateOidcProviderAsync",
            "Honua.Sdk.Admin.IHonuaAdminIdentityClient.TestOidcProviderAsync"
          ]
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/identity"
      }
    },
    {
      "key": "identity.oidc-multi-provider",
      "displayName": "OIDC Multi-Provider SSO",
      "category": "Identity",
      "edition": "Enterprise",
      "entryCount": 0,
      "provingTestCount": 0,
      "maturity": {},
      "noSurface": {
        "capability": "identity.oidc-multi-provider",
        "reasonCode": "config-flag",
        "reason": "Multi-provider configuration is a setting on the identity.oidc admin routes, not a distinct route.",
        "category": "Identity",
        "edition": "Enterprise"
      },
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "covered",
          "sinceVersion": "unreleased",
          "entrypoints": [
            "Honua.Sdk.Admin.IHonuaAdminIdentityClient.ListOidcProvidersAsync",
            "Honua.Sdk.Admin.IHonuaAdminIdentityClient.GetIdentityProvidersAsync"
          ]
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/identity"
      }
    },
    {
      "key": "identity.portal-sharing",
      "displayName": "ArcGIS Portal Sharing Read Surface",
      "category": "Identity",
      "edition": "Community",
      "entryCount": 18,
      "provingTestCount": 58,
      "maturity": {
        "implemented": 18
      },
      "noSurface": null,
      "cite": [],
      "parity": [
        {
          "serviceId": "portal-sharing",
          "displayName": "Portal Sharing",
          "parity": "partial"
        }
      ],
      "esriAssess": [
        "web-map"
      ],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "covered",
          "sinceVersion": "0.1.0-beta.0",
          "entrypoints": [
            "PortalCompat.getItem (src/esri-compat/portal.ts)",
            "PortalCompat.search"
          ],
          "evidence": [
            "test/portal-compat.test.ts"
          ]
        },
        "dotnet": {
          "status": "covered",
          "sinceVersion": "unreleased",
          "entrypoints": [
            "Honua.Sdk.ConsoleShare.IHonuaConsoleShareClient.UpdateAccessAsync",
            "Honua.Sdk.ConsoleShare.IHonuaConsoleShareClient.CreatePublicLinkAsync"
          ]
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/identity"
      }
    },
    {
      "key": "identity.portal-token",
      "displayName": "ArcGIS Portal Token Issuance",
      "category": "Identity",
      "edition": "Community",
      "entryCount": 2,
      "provingTestCount": 14,
      "maturity": {
        "implemented": 2
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "covered",
          "sinceVersion": "0.1.0-beta.0",
          "entrypoints": [
            "PortalCompat.generateToken (src/esri-compat/portal.ts)"
          ],
          "evidence": [
            "test/portal-compat.test.ts"
          ]
        },
        "dotnet": {
          "status": "covered",
          "sinceVersion": "unreleased",
          "entrypoints": [
            "Honua.Sdk.ConsoleShare.IHonuaConsoleShareClient.CreateEmbedTokenAsync",
            "Honua.Sdk.ConsoleShare.IHonuaConsoleShareClient.RevokeEmbedTokenAsync"
          ]
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/identity"
      }
    },
    {
      "key": "identity.saml",
      "displayName": "SAML 2.0 Authentication",
      "category": "Identity",
      "edition": "Community",
      "entryCount": 3,
      "provingTestCount": 10,
      "maturity": {
        "implemented": 3
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/identity"
      }
    },
    {
      "key": "identity.scim",
      "displayName": "SCIM 2.0 Provisioning",
      "category": "Identity",
      "edition": "Community",
      "entryCount": 17,
      "provingTestCount": 22,
      "maturity": {
        "implemented": 17
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/identity"
      }
    },
    {
      "key": "import.file",
      "displayName": "File Import",
      "category": "Import",
      "edition": "Community",
      "entryCount": 73,
      "provingTestCount": 181,
      "maturity": {
        "implemented": 73
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/import"
      }
    },
    {
      "key": "import.geoserver",
      "displayName": "GeoServer Import",
      "category": "Import",
      "edition": "Enterprise",
      "entryCount": 5,
      "provingTestCount": 16,
      "maturity": {
        "implemented": 5
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "partial",
          "sinceVersion": "unreleased",
          "entrypoints": [
            "Honua.Sdk.Admin.HonuaAdminMigrationClientExtensions.ScanMigrationSourceAsync"
          ],
          "note": "Covers migration-source scanning and inventory/manifest/parity-evidence/readiness-attestation generation only (sourceKind: \"geoserver\"), producing MigrationSourceInventoryArtifact / MigrationManifestArtifact / MigrationParityEvidenceArtifact / MigrationReadinessAttestation. The SDK has no apply/cutover call that loads a scanned GeoServer source's data or config into Honua."
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/import"
      }
    },
    {
      "key": "import.geoservices",
      "displayName": "GeoServices Import",
      "category": "Import",
      "edition": "Enterprise",
      "entryCount": 10,
      "provingTestCount": 41,
      "maturity": {
        "implemented": 10
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "partial",
          "sinceVersion": "unreleased",
          "entrypoints": [
            "Honua.Sdk.Admin.HonuaAdminMigrationClientExtensions.ScanMigrationSourceAsync"
          ],
          "note": "Same as import.geoserver: scan/manifest/parity-evidence/readiness-attestation generation only (sourceKind: \"geoservices\"), no apply/execute call."
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/import"
      }
    },
    {
      "key": "ops.health",
      "displayName": "Health Checks",
      "category": "Ops",
      "edition": "Community",
      "entryCount": 15,
      "provingTestCount": 54,
      "maturity": {
        "implemented": 15
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "covered",
          "sinceVersion": "unreleased (source preview; not yet published to PyPI)",
          "entrypoints": [
            "honua_sdk.AsyncHonuaClient.readiness"
          ]
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/ops"
      }
    },
    {
      "key": "ops.observability",
      "displayName": "Observability",
      "category": "Ops",
      "edition": "Community",
      "entryCount": 16,
      "provingTestCount": 33,
      "maturity": {
        "implemented": 16
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "partial",
          "sinceVersion": "0.1.0-beta.0",
          "entrypoints": [
            "replayDiagnosticBundle (src/diagnostics/replay.ts)"
          ],
          "evidence": [
            "test/diagnostic-bundle.test.ts",
            "test/integration-diagnostics.test.ts"
          ],
          "note": "SDK implements client-side diagnostic bundle capture and replay (src/diagnostics) for support escalation; it does not implement server-side metrics/tracing endpoints, which are honua-server's ops.observability surface."
        },
        "dotnet": {
          "status": "covered",
          "sinceVersion": "unreleased",
          "entrypoints": [
            "Honua.Sdk.Admin.IHonuaAdminObservabilityClient"
          ]
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/ops"
      }
    },
    {
      "key": "plugin.sdk",
      "displayName": "Plugin/Extension SDK",
      "category": "Extensibility",
      "edition": "Enterprise",
      "entryCount": 0,
      "provingTestCount": 0,
      "maturity": {},
      "noSurface": {
        "capability": "plugin.sdk",
        "reasonCode": "sdk-only",
        "reason": "Server plugin/extension SDK is a compile-time, AOT-safe registration surface, not an HTTP route.",
        "category": "Extensibility",
        "edition": "Enterprise"
      },
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "covered",
          "sinceVersion": "0.1.0-beta.0",
          "entrypoints": [
            "HonuaPluginRegistry",
            "honua-plugin-certify CLI",
            "runHonuaPluginConformance"
          ],
          "evidence": [
            "test/plugin-certification-cli.test.ts",
            "test/plugin-certification.test.ts",
            "test/plugin-conformance.test.ts",
            "test/plugin-registry.test.ts"
          ]
        },
        "dotnet": {
          "status": "covered",
          "sinceVersion": "unreleased",
          "entrypoints": [
            "Honua.Sdk.Abstractions.Plugins.HonuaPluginManifest"
          ]
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/extensibility"
      }
    },
    {
      "key": "printing.layout-templates",
      "displayName": "Print Layout Templates",
      "category": "Printing",
      "edition": "Pro",
      "entryCount": 0,
      "provingTestCount": 0,
      "maturity": {},
      "noSurface": {
        "capability": "printing.layout-templates",
        "reasonCode": "config-flag",
        "reason": "Layout template selection is a parameter on the printing.pdf-output GPServer route, not a distinct route.",
        "category": "Printing",
        "edition": "Pro"
      },
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/printing"
      }
    },
    {
      "key": "printing.pdf-output",
      "displayName": "PDF Print Output",
      "category": "Printing",
      "edition": "Pro",
      "entryCount": 8,
      "provingTestCount": 22,
      "maturity": {
        "implemented": 8
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/printing"
      }
    },
    {
      "key": "process.geoprocessing",
      "displayName": "Geoprocessing Task Execution",
      "category": "Process",
      "edition": "Community",
      "entryCount": 13,
      "provingTestCount": 75,
      "maturity": {
        "implemented": 13
      },
      "noSurface": null,
      "cite": [],
      "parity": [
        {
          "serviceId": "gp-server",
          "displayName": "GPServer",
          "parity": "partial"
        }
      ],
      "esriAssess": [
        "geoprocessing"
      ],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "partial",
          "sinceVersion": "0.1.0-beta.0",
          "entrypoints": [
            "discoverGeoServices()"
          ],
          "evidence": [
            "test/geoservices-discovery.test.ts"
          ],
          "note": "Returns task execution and job-lifecycle metadata without starting a job or inventing a queryable Source."
        },
        "dotnet": {
          "status": "partial",
          "sinceVersion": "unreleased",
          "entrypoints": [
            "Honua.Sdk.Processes.IHonuaProcessesClient.SubmitJobAsync",
            "Honua.Sdk.Grpc.IHonuaProcessGrpcClient.SubmitJobAsync"
          ],
          "note": "Generic job submission/poll/cancel by processId works against any registered geoprocessing tool -- this is also the only path this SDK offers for GP-backed analytics.* operations; it has no typed per-tool wrappers. IHonuaProcessGrpcClient's own doc comments flag that its synchronous ExecutePlanAsync/ExecutePlanStreamAsync methods may return Unimplemented on current Honua Server deployments -- the reliable path is async submit-then-poll."
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/process"
      }
    },
    {
      "key": "process.ogc-api-processes",
      "displayName": "OGC API Processes",
      "category": "Process",
      "edition": "Community",
      "entryCount": 10,
      "provingTestCount": 108,
      "maturity": {
        "implemented": 10
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "covered",
          "sinceVersion": "unreleased",
          "entrypoints": [
            "Honua.Sdk.Processes.IHonuaProcessesClient"
          ]
        },
        "python": {
          "status": "covered",
          "sinceVersion": "unreleased (source preview; not yet published to PyPI)",
          "entrypoints": [
            "honua_sdk.geoprocessing.HonuaGeoprocessing",
            "honua_sdk.geoprocessing.AsyncHonuaGeoprocessing"
          ]
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/process"
      }
    },
    {
      "key": "raster.cloud-cog-serving",
      "displayName": "COG Serving",
      "category": "Raster",
      "edition": "Pro",
      "entryCount": 5,
      "provingTestCount": 11,
      "maturity": {
        "implemented": 5
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "partial",
          "sinceVersion": "0.1.0-beta.0",
          "entrypoints": [
            "StacCogAssetSession",
            "openStacCogAsset (src/cog/session.ts)"
          ],
          "evidence": [
            "test/cog-maplibre.test.ts",
            "test/cog-session.test.ts",
            "test/imagery-cog-quickstart.test.ts"
          ],
          "note": "SDK provides client-side COG range-read session and MapLibre integration for consuming Cloud-Optimized GeoTIFFs (StacCogAssetSession); it does not serve or tile COGs server-side, which remains honua-server's responsibility."
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/raster"
      }
    },
    {
      "key": "raster.cloud-storage-config",
      "displayName": "Cloud Storage Configuration",
      "category": "Raster",
      "edition": "Pro",
      "entryCount": 0,
      "provingTestCount": 0,
      "maturity": {},
      "noSurface": {
        "capability": "raster.cloud-storage-config",
        "reasonCode": "config-flag",
        "reason": "Cloud storage connection configuration is an admin setting under raster.cloud-cog-serving, not a distinct route.",
        "category": "Raster",
        "edition": "Pro"
      },
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/raster"
      }
    },
    {
      "key": "raster.multidim-coverage",
      "displayName": "Multidimensional Coverage (NetCDF/HDF5/Zarr)",
      "category": "Raster",
      "edition": "Pro",
      "entryCount": 12,
      "provingTestCount": 22,
      "maturity": {
        "implemented": 12
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "partial",
          "sinceVersion": "unreleased (source preview; not yet published to PyPI)",
          "entrypoints": [
            "honua_sdk.protocols.GeoServicesImageServerClient.multidimensional_info"
          ],
          "note": "Read-only: the client can query dimension/variable metadata for an already-registered multidimensional ImageServer via multidimensionalInfo. There is no client surface to register or configure a NetCDF4/HDF5/Zarr multidimensional coverage -- that is server-admin configuration this SDK's control-plane client does not expose."
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/raster"
      }
    },
    {
      "key": "raster.temporal-mosaic",
      "displayName": "Temporal Raster Mosaic",
      "category": "Raster",
      "edition": "Pro",
      "entryCount": 0,
      "provingTestCount": 0,
      "maturity": {},
      "noSurface": {
        "capability": "raster.temporal-mosaic",
        "reasonCode": "config-flag",
        "reason": "Temporal mosaic selection is a query parameter on ImageServer/raster serve routes (serve.geoservices-imageserver), not a distinct route.",
        "category": "Raster",
        "edition": "Pro"
      },
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "partial",
          "sinceVersion": "unreleased (source preview; not yet published to PyPI)",
          "entrypoints": [
            "honua_sdk.protocols.GeoServicesImageServerClient.compute_histograms",
            "honua_sdk.protocols.GeoServicesImageServerClient.compute_statistics_histograms",
            "honua_sdk.protocols.GeoServicesImageServerClient.get_samples"
          ],
          "note": "mosaic_rule + a single ISO-8601 time instant select a raster temporal mosaic on the ImageServer histogram/statistics/sample analysis operations only. export_image, tile, identify, and query do not accept a typed time/mosaic_rule parameter (only generic extra_params passthrough), so temporal mosaic selection does not extend to raster rendering/export."
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/raster"
      }
    },
    {
      "key": "raster.terrain-rgb",
      "displayName": "Terrain-RGB Tiles",
      "category": "Raster",
      "edition": "Community",
      "entryCount": 2,
      "provingTestCount": 14,
      "maturity": {
        "implemented": 2
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/raster"
      }
    },
    {
      "key": "routing.solve",
      "displayName": "Network Routing",
      "category": "Routing",
      "edition": "Pro",
      "entryCount": 19,
      "provingTestCount": 75,
      "maturity": {
        "implemented": 19
      },
      "noSurface": null,
      "cite": [],
      "parity": [
        {
          "serviceId": "na-server",
          "displayName": "NAServer",
          "parity": "partial"
        }
      ],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "covered",
          "sinceVersion": "0.1.0-beta.0",
          "entrypoints": [
            "assertRoutingCapability",
            "honua routing provider",
            "osrmRoutingProvider",
            "supportsRoutingCapability",
            "valhallaRoutingProvider"
          ],
          "evidence": [
            "test/routing-providers.test.ts"
          ]
        },
        "dotnet": {
          "status": "covered",
          "sinceVersion": "unreleased",
          "entrypoints": [
            "Honua.Sdk.GeoServices.Routing.HonuaRoutingClient"
          ]
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/routing"
      }
    },
    {
      "key": "scene.bim-ingest",
      "displayName": "CityGML/BIM Scene Ingest",
      "category": "Scene",
      "edition": "Enterprise",
      "entryCount": 1,
      "provingTestCount": 6,
      "maturity": {
        "implemented": 1
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/scene"
      }
    },
    {
      "key": "scene.catalog",
      "displayName": "Scene Catalog",
      "category": "Scene",
      "edition": "Community",
      "entryCount": 3,
      "provingTestCount": 4,
      "maturity": {
        "implemented": 3
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "covered",
          "sinceVersion": "unreleased",
          "entrypoints": [
            "Honua.Sdk.Scenes.HonuaSceneClient.ListScenesAsync"
          ]
        },
        "python": {
          "status": "covered",
          "sinceVersion": "unreleased (source preview; not yet published to PyPI)",
          "entrypoints": [
            "honua_sdk.protocols.SceneClient.list_scenes",
            "honua_sdk.protocols.SceneClient.get_scene"
          ]
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/scene"
      }
    },
    {
      "key": "scene.pointcloud-ingest",
      "displayName": "Point Cloud Scene Ingest",
      "category": "Scene",
      "edition": "Enterprise",
      "entryCount": 1,
      "provingTestCount": 10,
      "maturity": {
        "implemented": 1
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/scene"
      }
    },
    {
      "key": "serve.3d-tiles-scene",
      "displayName": "3D Tiles Scene Serving",
      "category": "Serve",
      "edition": "Community",
      "entryCount": 12,
      "provingTestCount": 76,
      "maturity": {
        "implemented": 12
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "partial",
          "sinceVersion": "unreleased",
          "entrypoints": [
            "Honua.Sdk.Scenes.HonuaSceneClient"
          ],
          "note": "The scene client discovers and resolves a scene's 3D Tiles endpoint URL and capability tag (HonuaSceneCapabilities.ThreeDimensionalTiles); it does not parse or serve the 3D Tiles/Cesium tileset protocol itself. Renderer/display code is explicitly out of scope for this SDK (see AGENTS.md 'Does Not Belong Here')."
        },
        "python": {
          "status": "covered",
          "sinceVersion": "unreleased (source preview; not yet published to PyPI)",
          "entrypoints": [
            "honua_sdk.protocols.SceneClient",
            "honua_sdk.protocols.AsyncSceneClient",
            "honua_sdk.protocols.enumerate_tileset_contents",
            "honua_sdk.protocols.parse_scene_package_manifest"
          ]
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/serve"
      }
    },
    {
      "key": "serve.elevation",
      "displayName": "Elevation Query",
      "category": "Serve",
      "edition": "Community",
      "entryCount": 2,
      "provingTestCount": 28,
      "maturity": {
        "implemented": 2
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "partial",
          "sinceVersion": "unreleased",
          "entrypoints": [
            "Honua.Sdk.Abstractions.Data.IHonuaElevationDataClient"
          ],
          "note": "Same contract-only situation as enrichment.datasets: IHonuaElevationDataClient (SampleElevationAsync) is a shipped abstraction with no concrete implementing class in this SDK yet."
        },
        "python": {
          "status": "covered",
          "sinceVersion": "unreleased (source preview; not yet published to PyPI)",
          "entrypoints": [
            "honua_sdk.protocols.ElevationClient",
            "honua_sdk.protocols.AsyncElevationClient"
          ]
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/serve"
      }
    },
    {
      "key": "serve.geoservices-featureserver",
      "displayName": "FeatureServer Query",
      "category": "Serve",
      "edition": "Community",
      "entryCount": 49,
      "provingTestCount": 415,
      "maturity": {
        "implemented": 49
      },
      "noSurface": null,
      "cite": [],
      "parity": [
        {
          "serviceId": "feature-server",
          "displayName": "FeatureServer",
          "parity": "partial"
        }
      ],
      "esriAssess": [
        "feature-service"
      ],
      "interop": [
        {
          "clientLane": "js",
          "protocol": "featureserver"
        },
        {
          "clientLane": "desktop-arcgis",
          "protocol": "featureserver"
        },
        {
          "clientLane": "arcgis-stub",
          "protocol": "featureserver"
        },
        {
          "clientLane": "cli",
          "protocol": "featureserver"
        },
        {
          "clientLane": "ci-desktop",
          "protocol": "featureserver"
        }
      ],
      "geobench": [
        "geoservices-query",
        "geoservices-query-diagnostics"
      ],
      "sdks": {
        "js": {
          "status": "covered",
          "sinceVersion": "0.1.0-beta.0",
          "entrypoints": [
            "@honua/sdk-js/esri-compat",
            "HonuaClient.queryFeatures",
            "Source",
            "connect()"
          ],
          "evidence": [
            "scripts/first-map-live-evidence.mjs",
            "test/connect.test.ts",
            "test/contract/conformance.test.ts",
            "test/contract/geoservices-conformance.test.ts",
            "test/feature-layer-compat.test.ts"
          ]
        },
        "dotnet": {
          "status": "covered",
          "sinceVersion": "unreleased",
          "entrypoints": [
            "Honua.Sdk.GeoServices.FeatureServer.HonuaFeatureServerClient"
          ]
        },
        "python": {
          "status": "covered",
          "sinceVersion": "unreleased (source preview; not yet published to PyPI)",
          "entrypoints": [
            "honua_sdk.protocols.GeoServicesFeatureServerClient",
            "honua_sdk.protocols.AsyncGeoServicesFeatureServerClient",
            "honua_sdk.AsyncHonuaClient.feature_server"
          ]
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/serve"
      }
    },
    {
      "key": "serve.geoservices-geocodeserver",
      "displayName": "GeocodeServer Discovery",
      "category": "Serve",
      "edition": "Community",
      "entryCount": 4,
      "provingTestCount": 10,
      "maturity": {
        "implemented": 4
      },
      "noSurface": null,
      "cite": [],
      "parity": [
        {
          "serviceId": "geocode-server",
          "displayName": "GeocodeServer",
          "parity": "partial"
        }
      ],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "covered",
          "sinceVersion": "unreleased",
          "entrypoints": [
            "Honua.Sdk.Admin.Geocoding.IHonuaGeocodingClient"
          ]
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/serve"
      }
    },
    {
      "key": "serve.geoservices-geometry-service",
      "displayName": "Geometry Service",
      "category": "Serve",
      "edition": "Community",
      "entryCount": 48,
      "provingTestCount": 115,
      "maturity": {
        "implemented": 48
      },
      "noSurface": null,
      "cite": [],
      "parity": [
        {
          "serviceId": "geometry-service",
          "displayName": "Geometry Service",
          "parity": "complete"
        }
      ],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "partial",
          "sinceVersion": "0.1.0-beta.0",
          "entrypoints": [
            "discoverGeoServices()"
          ],
          "evidence": [
            "test/geoservices-discovery.test.ts"
          ],
          "note": "Returns advertised geometry operations as metadata-only descriptors; it never invents a queryable Source."
        },
        "dotnet": {
          "status": "covered",
          "sinceVersion": "unreleased",
          "entrypoints": [
            "Honua.Sdk.GeoServices.GeometryServer.HonuaGeometryServerClient"
          ]
        },
        "python": {
          "status": "covered",
          "sinceVersion": "unreleased (source preview; not yet published to PyPI)",
          "entrypoints": [
            "honua_sdk.protocols.GeoServicesGeometryServerClient",
            "honua_sdk.protocols.AsyncGeoServicesGeometryServerClient",
            "honua_sdk.AsyncHonuaClient.geometry_server"
          ]
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/serve"
      }
    },
    {
      "key": "serve.geoservices-imageserver",
      "displayName": "ImageServer",
      "category": "Serve",
      "edition": "Community",
      "entryCount": 141,
      "provingTestCount": 336,
      "maturity": {
        "implemented": 141
      },
      "noSurface": null,
      "cite": [],
      "parity": [
        {
          "serviceId": "image-server",
          "displayName": "ImageServer",
          "parity": "partial"
        }
      ],
      "esriAssess": [
        "image-service"
      ],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "partial",
          "sinceVersion": "0.1.0-beta.0",
          "entrypoints": [
            "HonuaClient.imageService",
            "Source.protocol()",
            "connect()",
            "discoverGeoServices()"
          ],
          "evidence": [
            "test/contract/geoservices-conformance.test.ts",
            "test/geoservices-discovery.test.ts",
            "test/integration/surfaces/image-server.integration.ts"
          ],
          "note": "Discovers ImageServer metadata and creates a Source only when catalog query and pagination support are advertised; export-only imagery remains an operation descriptor."
        },
        "dotnet": {
          "status": "covered",
          "sinceVersion": "unreleased",
          "entrypoints": [
            "Honua.Sdk.GeoServices.ImageServer.HonuaImageServerClient",
            "Honua.Sdk.GeoServices.ImageServer.HonuaImageServerRasterDataClient"
          ]
        },
        "python": {
          "status": "covered",
          "sinceVersion": "unreleased (source preview; not yet published to PyPI)",
          "entrypoints": [
            "honua_sdk.protocols.GeoServicesImageServerClient",
            "honua_sdk.protocols.AsyncGeoServicesImageServerClient",
            "honua_sdk.AsyncHonuaClient.image_server"
          ]
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/serve"
      }
    },
    {
      "key": "serve.geoservices-mapserver",
      "displayName": "MapServer",
      "category": "Serve",
      "edition": "Community",
      "entryCount": 45,
      "provingTestCount": 307,
      "maturity": {
        "implemented": 45
      },
      "noSurface": null,
      "cite": [],
      "parity": [
        {
          "serviceId": "map-server",
          "displayName": "MapServer",
          "parity": "partial"
        }
      ],
      "esriAssess": [
        "map-service"
      ],
      "interop": [
        {
          "clientLane": "js",
          "protocol": "mapserver"
        },
        {
          "clientLane": "desktop-arcgis",
          "protocol": "mapserver"
        },
        {
          "clientLane": "arcgis-stub",
          "protocol": "mapserver"
        },
        {
          "clientLane": "ci-desktop",
          "protocol": "mapserver"
        }
      ],
      "geobench": [
        "geoservices-export",
        "geoservices-identify"
      ],
      "sdks": {
        "js": {
          "status": "covered",
          "sinceVersion": "0.1.0-beta.0",
          "entrypoints": [
            "HonuaClient.mapService",
            "Source",
            "connect()"
          ],
          "evidence": [
            "test/connect.test.ts",
            "test/honua-surface.test.ts",
            "test/integration/surfaces/map-server.integration.ts",
            "test/tile-layer-compat.test.ts"
          ]
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "covered",
          "sinceVersion": "unreleased (source preview; not yet published to PyPI)",
          "entrypoints": [
            "honua_sdk.protocols.GeoServicesMapServerClient",
            "honua_sdk.protocols.AsyncGeoServicesMapServerClient",
            "honua_sdk.AsyncHonuaClient.map_server",
            "honua_sdk.AsyncHonuaClient.export_map"
          ]
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/serve"
      }
    },
    {
      "key": "serve.geoservices-root",
      "displayName": "GeoServices REST Root",
      "category": "Serve",
      "edition": "Community",
      "entryCount": 2,
      "provingTestCount": 14,
      "maturity": {
        "implemented": 2
      },
      "noSurface": null,
      "cite": [],
      "parity": [
        {
          "serviceId": "geoservices-catalog",
          "displayName": "Catalog / REST Info",
          "parity": "partial"
        }
      ],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "covered",
          "sinceVersion": "unreleased (source preview; not yet published to PyPI)",
          "entrypoints": [
            "honua_sdk.AsyncHonuaClient.list_services",
            "honua_sdk.AsyncHonuaClient.list_service_summaries"
          ]
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/serve"
      }
    },
    {
      "key": "serve.geoservices-vectortileserver",
      "displayName": "VectorTileServer",
      "category": "Serve",
      "edition": "Community",
      "entryCount": 9,
      "provingTestCount": 25,
      "maturity": {
        "implemented": 9
      },
      "noSurface": null,
      "cite": [],
      "parity": [
        {
          "serviceId": "vector-tile-server",
          "displayName": "VectorTileServer",
          "parity": "partial"
        }
      ],
      "esriAssess": [
        "vector-tiles"
      ],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/serve"
      }
    },
    {
      "key": "serve.i3s-scene",
      "displayName": "I3S Scene Serving",
      "category": "Serve",
      "edition": "Community",
      "entryCount": 6,
      "provingTestCount": 25,
      "maturity": {
        "implemented": 6
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [
        "scene-service"
      ],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "partial",
          "sinceVersion": "unreleased",
          "entrypoints": [
            "Honua.Sdk.Scenes.HonuaSceneClient"
          ],
          "note": "Same as serve.3d-tiles-scene: the scene client resolves the I3S endpoint URL and capability tag (HonuaSceneCapabilities.I3s) only; it does not parse or serve the I3S scene-layer protocol itself."
        },
        "python": {
          "status": "partial",
          "sinceVersion": "unreleased (source preview; not yet published to PyPI)",
          "entrypoints": [
            "honua_sdk.protocols.SceneClient.resolve_scene",
            "honua_sdk.protocols.SceneClient.fetch_tile"
          ],
          "note": "I3S-tagged scene endpoints resolve and fetch as opaque bytes through the same generic scene-endpoint resolution used for 3D Tiles, but there is no I3S-specific scene-layer-package (.slpk) node/resource-tree parsing -- only the 3D Tiles tileset.json walker (enumerate_tileset_contents) is implemented."
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/serve"
      }
    },
    {
      "key": "serve.odata",
      "displayName": "OData v4",
      "category": "Serve",
      "edition": "Community",
      "entryCount": 30,
      "provingTestCount": 181,
      "maturity": {
        "implemented": 30
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [
        {
          "clientLane": "cli",
          "protocol": "odata"
        },
        {
          "clientLane": "ci-bi",
          "protocol": "odata"
        },
        {
          "clientLane": "bi-powerbi",
          "protocol": "odata"
        },
        {
          "clientLane": "bi-excel",
          "protocol": "odata"
        }
      ],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "covered",
          "sinceVersion": "0.1.0-beta.0",
          "entrypoints": [
            "HonuaOdataEntitySet",
            "Source",
            "connect()"
          ],
          "evidence": [
            "test/contract/odata-backend-agnostic.test.ts"
          ]
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "partial",
          "sinceVersion": "unreleased (source preview; not yet published to PyPI)",
          "entrypoints": [
            "honua_sdk.protocols.ODataClient",
            "honua_sdk.protocols.AsyncODataClient"
          ],
          "note": "Read/query only (service_document, metadata, layers, features, and pagination helpers). No create/update/delete entity-set operations are implemented, so the write half of 'query and edit features through OData v4' is not covered."
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/serve"
      }
    },
    {
      "key": "serve.ogc-api-coverages",
      "displayName": "OGC API Coverages",
      "category": "Serve",
      "edition": "Community",
      "entryCount": 8,
      "provingTestCount": 13,
      "maturity": {
        "implemented": 8
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "covered",
          "sinceVersion": "unreleased (source preview; not yet published to PyPI)",
          "entrypoints": [
            "honua_sdk.protocols.OgcCoveragesClient",
            "honua_sdk.protocols.AsyncOgcCoveragesClient"
          ]
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/serve"
      }
    },
    {
      "key": "serve.ogc-api-edr",
      "displayName": "OGC API - EDR",
      "category": "Serve",
      "edition": "Community",
      "entryCount": 6,
      "provingTestCount": 9,
      "maturity": {
        "implemented": 6
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/serve"
      }
    },
    {
      "key": "serve.ogc-api-features",
      "displayName": "OGC API Features",
      "category": "Serve",
      "edition": "Community",
      "entryCount": 21,
      "provingTestCount": 242,
      "maturity": {
        "implemented": 21
      },
      "noSurface": null,
      "cite": [
        {
          "suite": "OGC API Features 1.0",
          "profile": "default",
          "passed": 137,
          "total": 137,
          "passRate": 100.0
        }
      ],
      "parity": [],
      "esriAssess": [],
      "interop": [
        {
          "clientLane": "js",
          "protocol": "ogc-features"
        },
        {
          "clientLane": "desktop-qgis",
          "protocol": "ogc-features"
        },
        {
          "clientLane": "cli",
          "protocol": "ogc-features"
        },
        {
          "clientLane": "ci-desktop",
          "protocol": "ogc-features"
        }
      ],
      "geobench": [
        "attribute-filter",
        "spatial-bbox",
        "concurrent"
      ],
      "sdks": {
        "js": {
          "status": "covered",
          "sinceVersion": "0.1.0-beta.0",
          "entrypoints": [
            "Source with locator.layout=ogc-api or auto",
            "connect()"
          ],
          "evidence": [
            "test/contract/ogc-features-backend-agnostic.test.ts"
          ]
        },
        "dotnet": {
          "status": "covered",
          "sinceVersion": "unreleased",
          "entrypoints": [
            "Honua.Sdk.OgcFeatures.HonuaOgcFeaturesClient",
            "Honua.Sdk.OgcFeatures.IHonuaOgcFeaturesEditClient",
            "Honua.Sdk.OgcFeatures.IHonuaOgcFeaturesPatchClient"
          ]
        },
        "python": {
          "status": "covered",
          "sinceVersion": "unreleased (source preview; not yet published to PyPI)",
          "entrypoints": [
            "honua_sdk.ogc.HonuaOgcFeatures",
            "honua_sdk.ogc.HonuaOgcFeatureCollection",
            "honua_sdk.ogc.AsyncHonuaOgcFeatures",
            "honua_sdk.ogc.AsyncHonuaOgcFeatureCollection"
          ]
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/serve"
      }
    },
    {
      "key": "serve.ogc-api-maps",
      "displayName": "OGC API Maps",
      "category": "Serve",
      "edition": "Community",
      "entryCount": 10,
      "provingTestCount": 116,
      "maturity": {
        "implemented": 10
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [
        {
          "clientLane": "js",
          "protocol": "ogc-maps"
        },
        {
          "clientLane": "js-cesium",
          "protocol": "ogc-maps"
        }
      ],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "partial",
          "sinceVersion": "0.1.0-beta.0",
          "entrypoints": [
            "Source protocol ogc-maps",
            "connect()"
          ],
          "evidence": [
            "test/connect-ogc-maps.test.ts"
          ],
          "note": "Discovers and renders from the raw map path advertised by the service; does not require /ogc/maps."
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "covered",
          "sinceVersion": "unreleased (source preview; not yet published to PyPI)",
          "entrypoints": [
            "honua_sdk.protocols.OgcMapsClient",
            "honua_sdk.protocols.AsyncOgcMapsClient"
          ]
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/serve"
      }
    },
    {
      "key": "serve.ogc-api-records",
      "displayName": "OGC API Records",
      "category": "Serve",
      "edition": "Community",
      "entryCount": 6,
      "provingTestCount": 11,
      "maturity": {
        "implemented": 6
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "partial",
          "sinceVersion": "0.1.0-beta.0",
          "entrypoints": [
            "Source protocol ogc-records",
            "connect()"
          ],
          "evidence": [
            "test/connect-ogc.test.ts"
          ],
          "note": "Discovers and queries the raw records path advertised by the service; does not require /ogc/records."
        },
        "dotnet": {
          "status": "covered",
          "sinceVersion": "unreleased",
          "entrypoints": [
            "Honua.Sdk.Catalogs.Records.HonuaOgcRecordsClient"
          ]
        },
        "python": {
          "status": "covered",
          "sinceVersion": "unreleased (source preview; not yet published to PyPI)",
          "entrypoints": [
            "honua_sdk.protocols.OgcRecordsClient",
            "honua_sdk.protocols.OgcRecordsCollectionClient",
            "honua_sdk.protocols.AsyncOgcRecordsClient",
            "honua_sdk.protocols.AsyncOgcRecordsCollectionClient"
          ]
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/serve"
      }
    },
    {
      "key": "serve.ogc-api-tiles",
      "displayName": "OGC API Tiles",
      "category": "Serve",
      "edition": "Community",
      "entryCount": 13,
      "provingTestCount": 61,
      "maturity": {
        "implemented": 13
      },
      "noSurface": null,
      "cite": [
        {
          "suite": "OGC API Tiles 1.0",
          "profile": "default",
          "passed": 16,
          "total": 16,
          "passRate": 100.0
        }
      ],
      "parity": [],
      "esriAssess": [],
      "interop": [
        {
          "clientLane": "js-cesium",
          "protocol": "ogc-tiles"
        }
      ],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "partial",
          "sinceVersion": "0.1.0-beta.0",
          "entrypoints": [
            "Source protocol ogc-tiles",
            "connect()"
          ],
          "evidence": [
            "test/connect-ogc-tiles.test.ts"
          ],
          "note": "Discovers raw landing, conformance, collection, tileset, and tile links; does not rewrite them to /ogc/tiles."
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "covered",
          "sinceVersion": "unreleased (source preview; not yet published to PyPI)",
          "entrypoints": [
            "honua_sdk.protocols.OgcTilesClient",
            "honua_sdk.protocols.AsyncOgcTilesClient"
          ]
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/serve"
      }
    },
    {
      "key": "serve.sensorthings",
      "displayName": "OGC SensorThings API",
      "category": "Serve",
      "edition": "Community",
      "entryCount": 15,
      "provingTestCount": 29,
      "maturity": {
        "implemented": 15
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/serve"
      }
    },
    {
      "key": "serve.stac",
      "displayName": "STAC API",
      "category": "Serve",
      "edition": "Community",
      "entryCount": 12,
      "provingTestCount": 79,
      "maturity": {
        "implemented": 12
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "covered",
          "sinceVersion": "0.1.0-beta.0",
          "entrypoints": [
            "Source with locator.layout=stac-api or stac-static",
            "connect()"
          ],
          "evidence": [
            "test/contract/stac-backend-agnostic.test.ts"
          ]
        },
        "dotnet": {
          "status": "covered",
          "sinceVersion": "unreleased",
          "entrypoints": [
            "Honua.Sdk.Catalogs.Stac.HonuaStacClient"
          ]
        },
        "python": {
          "status": "covered",
          "sinceVersion": "unreleased (source preview; not yet published to PyPI)",
          "entrypoints": [
            "honua_sdk.protocols.StacClient",
            "honua_sdk.protocols.AsyncStacClient"
          ]
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/serve"
      }
    },
    {
      "key": "serve.vector-tiles",
      "displayName": "Vector Tiles (MVT/TileJSON/PMTiles)",
      "category": "Serve",
      "edition": "Community",
      "entryCount": 7,
      "provingTestCount": 35,
      "maturity": {
        "implemented": 7
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [
        {
          "clientLane": "js",
          "protocol": "mvt"
        }
      ],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "covered",
          "sinceVersion": "0.1.0-beta.0",
          "entrypoints": [
            "connect(), Source (protocol: \"pmtiles\")"
          ],
          "evidence": [
            "test/pmtiles-contract.test.ts"
          ]
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/serve"
      }
    },
    {
      "key": "serve.wcs",
      "displayName": "WCS 2.0.1",
      "category": "Serve",
      "edition": "Community",
      "entryCount": 1,
      "provingTestCount": 5,
      "maturity": {
        "implemented": 1
      },
      "noSurface": null,
      "cite": [
        {
          "suite": "WCS 2.0",
          "profile": "core",
          "passed": 82,
          "total": 82,
          "passRate": 100.0
        }
      ],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [
        "wcs"
      ],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/serve"
      }
    },
    {
      "key": "serve.wfs",
      "displayName": "WFS 2.0",
      "category": "Serve",
      "edition": "Community",
      "entryCount": 2,
      "provingTestCount": 109,
      "maturity": {
        "implemented": 2
      },
      "noSurface": null,
      "cite": [
        {
          "suite": "WFS 1.0",
          "profile": "basic",
          "passed": 162,
          "total": 162,
          "passRate": 100.0
        },
        {
          "suite": "WFS 1.1",
          "profile": "basic",
          "passed": 39,
          "total": 39,
          "passRate": 100.0
        },
        {
          "suite": "WFS 2.0",
          "profile": "basic",
          "passed": 167,
          "total": 167,
          "passRate": 100.0
        }
      ],
      "parity": [],
      "esriAssess": [],
      "interop": [
        {
          "clientLane": "js",
          "protocol": "wfs"
        },
        {
          "clientLane": "desktop-qgis",
          "protocol": "wfs"
        },
        {
          "clientLane": "cli",
          "protocol": "wfs"
        }
      ],
      "geobench": [
        "wfs-getfeature",
        "wfs-filtered"
      ],
      "sdks": {
        "js": {
          "status": "covered",
          "sinceVersion": "0.1.0-beta.0",
          "entrypoints": [
            "HonuaWfs",
            "Source",
            "connect()"
          ],
          "evidence": [
            "test/contract/wfs-backend-agnostic.test.ts"
          ]
        },
        "dotnet": {
          "status": "partial",
          "sinceVersion": "unreleased",
          "entrypoints": [
            "Honua.Sdk.OgcFeatures.Wfs.IHonuaWfsClient"
          ],
          "note": "WFS 2.0 read/query only (GetCapabilitiesAsync, DescribeFeatureTypeAsync, GetFeaturesAsync, hits-only count, auto-paging). No WFS-T Transaction (insert/update/delete) support ships in this SDK."
        },
        "python": {
          "status": "covered",
          "sinceVersion": "unreleased (source preview; not yet published to PyPI)",
          "entrypoints": [
            "honua_sdk.protocols.WfsClient",
            "honua_sdk.protocols.AsyncWfsClient"
          ]
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/serve"
      }
    },
    {
      "key": "serve.wms",
      "displayName": "WMS 1.3",
      "category": "Serve",
      "edition": "Community",
      "entryCount": 1,
      "provingTestCount": 4,
      "maturity": {
        "implemented": 1
      },
      "noSurface": null,
      "cite": [
        {
          "suite": "WMS 1.3",
          "profile": "default",
          "passed": 199,
          "total": 199,
          "passRate": 100.0
        }
      ],
      "parity": [],
      "esriAssess": [],
      "interop": [
        {
          "clientLane": "js",
          "protocol": "wms"
        },
        {
          "clientLane": "js-cesium",
          "protocol": "wms"
        },
        {
          "clientLane": "desktop-qgis",
          "protocol": "wms"
        }
      ],
      "geobench": [
        "wms-getmap",
        "wms-reprojection",
        "wms-getfeatureinfo",
        "wms-filtered"
      ],
      "sdks": {
        "js": {
          "status": "covered",
          "sinceVersion": "0.1.0-beta.0",
          "entrypoints": [
            "connect(), Source (protocol: \"wms\")"
          ],
          "evidence": [
            "test/contract/wms.test.ts"
          ]
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "covered",
          "sinceVersion": "unreleased (source preview; not yet published to PyPI)",
          "entrypoints": [
            "honua_sdk.protocols.WmsClient",
            "honua_sdk.protocols.AsyncWmsClient"
          ]
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/serve"
      }
    },
    {
      "key": "serve.wmts",
      "displayName": "WMTS 1.0",
      "category": "Serve",
      "edition": "Community",
      "entryCount": 1,
      "provingTestCount": 3,
      "maturity": {
        "implemented": 1
      },
      "noSurface": null,
      "cite": [
        {
          "suite": "WMTS 1.0",
          "profile": "default",
          "passed": 60,
          "total": 60,
          "passRate": 100.0
        }
      ],
      "parity": [],
      "esriAssess": [],
      "interop": [
        {
          "clientLane": "js",
          "protocol": "wmts"
        },
        {
          "clientLane": "js-cesium",
          "protocol": "wmts"
        },
        {
          "clientLane": "desktop-qgis",
          "protocol": "wmts"
        }
      ],
      "geobench": [
        "wmts"
      ],
      "sdks": {
        "js": {
          "status": "covered",
          "sinceVersion": "0.1.0-beta.0",
          "entrypoints": [
            "connect(), Source (protocol: \"wmts\")"
          ],
          "evidence": [
            "test/contract/wmts.test.ts"
          ]
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "covered",
          "sinceVersion": "unreleased (source preview; not yet published to PyPI)",
          "entrypoints": [
            "honua_sdk.protocols.WmtsClient",
            "honua_sdk.protocols.AsyncWmtsClient"
          ]
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/serve"
      }
    },
    {
      "key": "staticmap.high-dpi",
      "displayName": "High-DPI Static Maps",
      "category": "StaticMap",
      "edition": "Pro",
      "entryCount": 0,
      "provingTestCount": 0,
      "maturity": {},
      "noSurface": {
        "capability": "staticmap.high-dpi",
        "reasonCode": "config-flag",
        "reason": "DPI is a request parameter on the static-map export route, not a distinct route.",
        "category": "StaticMap",
        "edition": "Pro"
      },
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/static-map"
      }
    },
    {
      "key": "staticmap.large-dimensions",
      "displayName": "Large Static Maps",
      "category": "StaticMap",
      "edition": "Pro",
      "entryCount": 0,
      "provingTestCount": 0,
      "maturity": {},
      "noSurface": {
        "capability": "staticmap.large-dimensions",
        "reasonCode": "config-flag",
        "reason": "Image dimensions are a request parameter on the static-map export route, not a distinct route.",
        "category": "StaticMap",
        "edition": "Pro"
      },
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/static-map"
      }
    },
    {
      "key": "staticmap.rich-overlays",
      "displayName": "Rich Static Map Overlays",
      "category": "StaticMap",
      "edition": "Pro",
      "entryCount": 0,
      "provingTestCount": 0,
      "maturity": {},
      "noSurface": {
        "capability": "staticmap.rich-overlays",
        "reasonCode": "config-flag",
        "reason": "Marker/path overlay counts are a request parameter on the static-map export route, not a distinct route.",
        "category": "StaticMap",
        "edition": "Pro"
      },
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/static-map"
      }
    },
    {
      "key": "streaming.feature-subscriptions",
      "displayName": "Real-Time Feature Streams",
      "category": "Streaming",
      "edition": "Pro",
      "entryCount": 2,
      "provingTestCount": 43,
      "maturity": {
        "implemented": 2
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "partial",
          "sinceVersion": "0.1.0-beta.0",
          "entrypoints": [
            "@honua/sdk-js/realtime"
          ],
          "evidence": [
            "test/integration/surfaces/realtime.integration.ts"
          ],
          "note": "Subscription-backed live updates depend on the Honua realtime contract."
        },
        "dotnet": {
          "status": "covered",
          "sinceVersion": "unreleased",
          "entrypoints": [
            "Honua.Sdk.Abstractions.Features.IHonuaFeatureStreamClient.SubscribeAsync",
            "Honua.Sdk.Admin.IHonuaAdminStreamingOperationsClient"
          ]
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/streaming"
      }
    },
    {
      "key": "styling.auto-suggest",
      "displayName": "Auto-Cartographic Styling",
      "category": "Styling",
      "edition": "Pro",
      "entryCount": 2,
      "provingTestCount": 7,
      "maturity": {
        "implemented": 2
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/styling"
      }
    },
    {
      "key": "styling.defaults",
      "displayName": "Smart Style Defaults",
      "category": "Styling",
      "edition": "Community",
      "entryCount": 0,
      "provingTestCount": 0,
      "maturity": {},
      "noSurface": {
        "capability": "styling.defaults",
        "reasonCode": "cross-cutting-default",
        "reason": "Smart style defaults apply automatically when a layer publishes; not a distinct route of their own.",
        "category": "Styling",
        "edition": "Community"
      },
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "partial",
          "sinceVersion": "unreleased",
          "entrypoints": [
            "Honua.Sdk.OgcFeatures.Styles.IHonuaOgcStylesClient.ListStylesAsync"
          ],
          "note": "Read-only: the OgcStylesList.Default field surfaces which style is the server-declared default. The SDK has no call to designate or change the default style."
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/styling"
      }
    },
    {
      "key": "styling.ogc-api-styles",
      "displayName": "OGC API Styles",
      "category": "Styling",
      "edition": "Community",
      "entryCount": 8,
      "provingTestCount": 14,
      "maturity": {
        "implemented": 8
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "covered",
          "sinceVersion": "0.1.0-beta.0",
          "entrypoints": [
            "OGC API Styles resolvers",
            "createSources (src/style/factory.ts)"
          ],
          "evidence": [
            "test/runtime/ogc-styles.test.ts",
            "test/style.test.ts"
          ]
        },
        "dotnet": {
          "status": "covered",
          "sinceVersion": "unreleased",
          "entrypoints": [
            "Honua.Sdk.OgcFeatures.Styles.IHonuaOgcStylesClient"
          ]
        },
        "python": {
          "status": "covered",
          "sinceVersion": "unreleased (source preview; not yet published to PyPI)",
          "entrypoints": [
            "honua_admin.AsyncHonuaAdminClient.list_styles",
            "honua_admin.AsyncHonuaAdminClient.get_stylesheet",
            "honua_admin.AsyncHonuaAdminClient.get_style_metadata",
            "honua_admin.AsyncHonuaAdminClient.update_style"
          ]
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/styling"
      }
    },
    {
      "key": "temporal.animation-api",
      "displayName": "Animation API Contract",
      "category": "Temporal",
      "edition": "Pro",
      "entryCount": 0,
      "provingTestCount": 0,
      "maturity": {},
      "noSurface": {
        "capability": "temporal.animation-api",
        "reasonCode": "sdk-only",
        "reason": "Capability flag advertised for SDK/admin TimeSlider integration; no server-side route of its own.",
        "category": "Temporal",
        "edition": "Pro"
      },
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/temporal"
      }
    },
    {
      "key": "temporal.extent-discovery",
      "displayName": "Temporal Extent Discovery",
      "category": "Temporal",
      "edition": "Community",
      "entryCount": 1,
      "provingTestCount": 7,
      "maturity": {
        "implemented": 1
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/temporal"
      }
    },
    {
      "key": "temporal.filtering",
      "displayName": "Temporal Query Filtering",
      "category": "Temporal",
      "edition": "Community",
      "entryCount": 6,
      "provingTestCount": 16,
      "maturity": {
        "implemented": 6
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/temporal"
      }
    },
    {
      "key": "temporal.histogram",
      "displayName": "Temporal Histogram (Date Bins)",
      "category": "Temporal",
      "edition": "Pro",
      "entryCount": 2,
      "provingTestCount": 5,
      "maturity": {
        "implemented": 2
      },
      "noSurface": null,
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/temporal"
      }
    },
    {
      "key": "temporal.time-series-tiles",
      "displayName": "Time-Series Tile Filtering",
      "category": "Temporal",
      "edition": "Pro",
      "entryCount": 0,
      "provingTestCount": 0,
      "maturity": {},
      "noSurface": {
        "capability": "temporal.time-series-tiles",
        "reasonCode": "config-flag",
        "reason": "Time-range filtering is a query parameter (time) on tile routes (serve.vector-tiles / serve.ogc-api-tiles), not a distinct route.",
        "category": "Temporal",
        "edition": "Pro"
      },
      "cite": [],
      "parity": [],
      "esriAssess": [],
      "interop": [],
      "geobench": [],
      "sdks": {
        "js": {
          "status": "not-covered"
        },
        "dotnet": {
          "status": "not-covered"
        },
        "python": {
          "status": "not-covered"
        }
      },
      "samples": [],
      "openIssues": {
        "count": 0,
        "refs": [],
        "categoryLevel": true,
        "label": "cap/temporal"
      }
    }
  ]
}
