Backend-Agnostic vs Honua-Server-Enhanced Capability Matrix

This is the generated, evidence-linked line between capabilities that work against raw standards-speaking endpoints and capabilities that require the Honua facade. The source of truth is config/support-manifest.v1.json. See the standalone quickstart for the runnable path.

Capability tiers

Tier answers the one question a matrix of statuses does not: what do you have to run yourself before this works? It is not authored per capability — it is each claim's environment read through the manifest's own tier partition, so a new environment cannot enter the vocabulary untiered.

Tier Honua Server Environments Claims What it means
Open endpoint (open-endpoint) not required build-time, client-only, protocol-adapter, standalone 28 Works against any standards-speaking endpoint you already run, or entirely inside the client and build. Zero Honua infrastructure, no Honua account.
Server attach (server-attach) required honua-facade 7 Executes only after attaching to a Honua Server facade. Every claim in this tier names either a roadmap issue for an open-endpoint path or the reason the server dependency is inherent.

Server-attach capabilities and their open-endpoint path

Every server-attach claim names either a roadmap issue for an open-endpoint path or the reason the dependency is inherent. Inherent is a product statement, not a scheduling excuse: it means no third-party endpoint can answer that surface at all, so there is nothing to implement against.

Capability Status Open-endpoint path Why it attaches to a server
Honua gRPC FeatureServer discovery supported Inherent — none possible The Honua gRPC FeatureService is Honua Server's own wire protocol, so there is no third-party endpoint to speak it to. The open-endpoint path to the same reads is the GeoServices, OGC API Features, WFS, STAC, and OData discovery claims, which return the identical Dataset/Source/Query/Result contract.
PMTiles managed publish lifecycle experimental Inherent — none possible Archive and publish jobs create artifacts through Honua Server tile operations and configured cloud storage. Direct archive discovery remains the open-endpoint alternative and does not require server attach.
Honua Arrow and Parquet feature-query results experimental Inherent — none possible The f=arrow and f=parquet result formats are Honua FeatureServer extensions. The direct-object equivalent is the separate client-only GeoParquet claim, while this claim intentionally requires a deployment that advertises the response contract.
Server compatibility gate facade-required Inherent — none possible The gate reads Honua Server's own administrative capabilities contract; a third-party endpoint publishes nothing equivalent to check. Open-endpoint reads skip the gate entirely rather than degrade.
Authored MapPackage runtime facade-required Inherent — none possible A MapPackage is a server-authored artifact by design: the styles, layer order, and metadata are produced by Honua Server's authoring surface, so loading one presupposes a server that authored it. The open-endpoint equivalent is connect() plus mountSource(), which styles a raw endpoint with no MapPackage.
Realtime subscriptions facade-required Roadmap: #393 Subscriptions bind to the transports Honua Server advertises today, but OData delta and other standards feeds are open-endpoint transports; the unified snapshot-plus-delta epic owns adapting them to the same cursor contract.
Collaboration and saved maps compatibility shim deprecated Inherent — none possible Shared saved maps and presence are hosted, multi-writer state; a read-only third-party endpoint has nowhere to store them. The SDK entrypoint is a deprecated shim and the surface itself moves to @honua/app-platform.

Surface tiers

A subpath is one lifecycle row, but a barrel can mix tiers. Every export below is classified explicitly in config/support-manifest.v1.json and the generated config/public-surface.json projection; an unclassified export fails the support gate rather than inheriting a tier from the directory it lives in.

Surface Status Tier exports Held back SDK forwarder Evidence
@honua/app-platform/scene-workspace beta 205 82 experimental @honua/sdk-js/scene-workspace fixture: scene-workspace-fixtures
fixture: scene-state-sync-fixtures
fixture: scene-primitive-diagnostics-fixtures
fixture: cesium-scene-adapter-fixtures
fixture: cesium-scene-mount-fixtures
integration: cesium-scene-adapter-browser
fixture: scene-bundle-isolation

@honua/app-platform/scene-workspace

The renderer-neutral workspace state, the scene primitive contract, and the Cesium primitive adapter keep their shape through @honua/app-platform 0.1.x: exports are not renamed or removed, primitive discriminants and diagnostic codes are additive only, and Cesium stays a lazily imported optional peer. Breaking one of those requires a minor bump and a called-out change, not a silent edit.

What may still change inside the tier:

Held back at experimental — Honua Server scene discovery, the SceneView container, and the elevation/analysis widgets execute against a Honua facade, so they sit outside the open-endpoint evidence behind the beta promotion.

CesiumEntityCollectionLike, ElevationProfileRequest, ElevationProfileResult, ElevationProfileSample, HonuaScene, LineOfSightRequest, LineOfSightResult, SceneAnalysisCesiumModule, SceneAnalysisOverlay, SceneAnalysisPosition, SceneAnalysisRequestExecutor, SceneDiscoveryRequestExecutor, SceneExtent3D, SceneMeasurement, SceneView, SceneViewEvent, SceneViewEventListener, SceneViewOptions, SceneViewRequestExecutor, SceneViewpoint, ViewshedRequest, ViewshedResult, ViewshedSample, buildElevationProfilePath, buildLineOfSightBody, buildViewshedBody, formatMeasurementLabel, getScene, haversineMeters, listScenes, measureScenePositions, normalizeScene, pathLengthMeters, positionsToWktLineString, renderElevationProfilePolyline, renderLineOfSight, renderMeasurement, renderViewshed, requestElevationProfile, requestLineOfSight, requestViewshed, resolveSceneTilesetUrl, sceneCameraPrimitive, sceneLayerStates, sceneTerrainPrimitive, sceneTilesetPrimitive, sceneToRuntimePrimitives, sceneViewpointBookmarks, slantDistanceMeters, sphericalPolygonAreaSquareMeters

Held back at experimental — The accepted-plan Source to Cesium entity lifecycle carries real-Cesium browser evidence since issue #1050 — entities materialize onto a live Viewer through the public path, Cesium's own availability decides what is drawn, the entity ceiling fails closed, and disposal returns the collection to baseline inside the primitive lane's measured budgets. Two of the three named promotion blockers are now cleared: refresh() is a real diff (identity is the projected entity id qualified by geometry kind, configuration is an order-independent fingerprint, unfingerprintable means changed), so a byte-identical feature keeps the same live Entity and a viewer.selectedEntity set on it survives — asserted by object identity on a live collection — and mountCesiumScene is the single owner that composes the entity mount with the primitive mount so one dispose() releases both in a measured order. The slice stays experimental for the life of 0.1.x for the remaining blocker: there is no symbology surface, and adding one means new required shapes rather than purely additive ones. See docs/cesium-entity-adapter.md#tier-decision-issue-1050.

CESIUM_ENTITY_REBUILD_BOUNDARIES, CesiumEntityAdapterErrorCode, CesiumEntityCollectionTarget, CesiumEntityDiagnostic, CesiumEntityDiagnosticCode, CesiumEntityGeometry, CesiumEntityInterval, CesiumEntityPositionSample, CesiumEntityProjection, CesiumEntityProjectionItem, CesiumEntityRebuildBoundary, CesiumEntityRebuildBoundaryReport, CesiumEntityRefreshResult, CesiumEntityRuntimeLoader, CesiumEntityRuntimeModule, CesiumEntityTimeOptions, CesiumEntityWorkflowState, CesiumSceneOwnerErrorCode, CesiumSceneOwnerState, CesiumSceneOwnerTarget, DEFAULT_CESIUM_ENTITY_LIMIT, DEFAULT_CESIUM_SCENE_SOURCE_LIMIT, HonuaCesiumEntityAdapterError, HonuaCesiumSceneOwnerError, MountCesiumSceneOptions, MountSourceToCesiumOptions, MountedCesiumEntitySource, MountedCesiumScene, ProjectSourceToCesiumOptions, mountCesiumScene, mountSourceToCesium, projectSourceToCesium

Status vocabulary

Environment and execution mode are separate from status: standalone tells you where a claim works, while discovery, native, client-fallback, and facade tell you how it works.

Matrix

Capability Tier Status Environment Execution Backend needed API Evidence Notes
Honua gRPC FeatureServer discovery server-attach supported honua-facade native A Honua Server FeatureService endpoint reachable over gRPC-Web connect(), HonuaClient.queryFeatures, Source fixture: connect-grpc-fixtures
fixture: contract-conformance
conformance: grpc-conformance
Discovers a canonical FeatureServer URL through the same REST service/layer metadata geoservices-feature-service discovery uses, deriving capabilities through the identical algorithm, then verifies query/stream through one bounded live QueryFeatures parity probe per layer over the gRPC-Web transport before advertising them; a schema disagreement between the probe and REST metadata fails discovery rather than silently trusting either side.
GeoServices FeatureServer query open-endpoint supported standalone native Any ArcGIS Server or ArcGIS Online endpoint connect(), HonuaClient.queryFeatures, Source fixture: connect-fixtures
fixture: contract-conformance
fixture: geoservices-conformance
live: first-map-live
live: live-conformance
Discovers and uses the raw FeatureServer query path; fixture-proven with scheduled anonymous live verification that needs no Honua account or server.
GeoServices MapServer reads open-endpoint supported standalone native Any ArcGIS Server or ArcGIS Online endpoint connect(), HonuaClient.mapService, Source fixture: connect-fixtures
fixture: honua-surface-fixtures
fixture: tile-layer-fixtures
integration: map-service-integration
Discovers and uses raw MapServer paths for layer queries, export, identify, legend, find, and cached tiles.
GeoServices ImageServer reads open-endpoint supported standalone native Any ArcGIS Server or ArcGIS Online endpoint connect(), discoverGeoServices(), HonuaClient.imageService, Source.protocol(), @honua/sdk-js/raster fixture: geoservices-discovery-fixtures
fixture: geoservices-conformance
integration: image-service-integration
fixture: unified-raster-fixtures
Discovers ImageServer metadata and creates a Source only when catalog query and pagination support are advertised; the experimental raster facade adds bounded bbox rendering, explicit one-based band selection, identify, and presentation handoffs without inventing statistics endpoints.
Unified bounded direct COG operations open-endpoint experimental client-only native A static host with exact HTTP Range and readable CORS headers plus a caller-injected structural COG decoder @honua/sdk-js/raster fixture: unified-raster-fixtures Consumes the dynamic STAC COG handoff or an explicit COG media type, structurally validates the object, enforces byte/range/pixel budgets, and provides bounded windows, one-based bands, statistics, histograms, value inspection, progress, cancellation, and MapLibre mounting.
GeoServices GeometryServer discovery open-endpoint supported standalone discovery Any ArcGIS Server GeometryServer endpoint discoverGeoServices() fixture: geoservices-discovery-fixtures Returns advertised geometry operations as metadata-only descriptors; it never invents a queryable Source.
GeoServices GPServer discovery and asynchronous execution open-endpoint supported standalone native Any ArcGIS Server GPServer endpoint for discovery; execution additionally requires the task to be published for asynchronous submission (submitJob) discoverGeoServices(), HonuaClient.geoprocessing(), HonuaClient.geoprocessingRunner(), Source.protocol() fixture: geoservices-discovery-fixtures
fixture: geoservices-conformance
fixture: geoprocessing-job-run-fixtures
fixture: process-runner-fixtures
Discovery returns task and job-lifecycle metadata for every task without starting work. Execution is asynchronous only: the typed GP service and the unified process runner submit, poll, cancel, and fetch results over submitJob/jobs/cancel, so a synchronous task that advertises only execute is discovered and reported with sdkSupported false rather than run.
Esri compatibility layer open-endpoint supported standalone native Any ArcGIS Server or ArcGIS Online endpoint @honua/sdk-js/esri-compat fixture: esri-compat-fixtures Compatibility classes parse public GeoServices URLs and create their own client.
ArcGIS scanner and migration codemod open-endpoint supported build-time static None @honua/sdk-js/migration, honua-migrate fixture: migration-fixtures Static analysis and rewrites run locally; no service is involved.
Geometry operations open-endpoint supported client-only native None @honua/sdk-js/geometry fixture: geometry-fixtures Buffer, area, simplify, measure, and reprojection run in the client through optional peers.
OGC API Features open-endpoint supported standalone discovery Any OGC API Features server connect(), Source with locator.layout=ogc-api or auto fixture: ogc-features-fixtures
live: live-conformance
Discovers collections and item links from a raw landing page; the Honua facade remains a zero-round-trip fast path.
WFS 2.0 open-endpoint supported standalone discovery Any WFS 2.0 server connect(), Source, HonuaWfs fixture: wfs-fixtures
live: live-conformance
Uses the DCP operation URLs advertised by GetCapabilities instead of assuming a server path.
WMS 1.3 discovery, raster rendering, and GetFeatureInfo open-endpoint supported standalone discovery Any WMS 1.3.0 server with a MapLibre-compatible GetMap binding; canonical query additionally needs a queryable layer advertising a GeoJSON, JSON, or GML GetFeatureInfo format connect(), Source descriptor, Source.query(), @honua/sdk-js/map fixture: wms-wmts-connect-fixtures
fixture: maplibre-raster-source-fixtures
live: live-conformance
Discovers layers, styles, dimensions, CRS/axis order, formats, and same-origin operation URLs. Raw sources render through the reviewed GetMap binding and answer canonical point query() through the capabilities-advertised GetFeatureInfo URL, preferring GeoJSON/JSON and falling back to GML. Query stays disabled when the layer is not queryable, no same-origin GetFeatureInfo GET URL is advertised, the only advertised info formats are unstructured (text/plain, text/html), or no advertised CRS has a provable WMS 1.3 axis order.
WMTS 1.0 discovery and raster tiles open-endpoint supported standalone discovery Any WMTS 1.0.0 server with a Web Mercator, z-addressable tile matrix set connect(), Source descriptor, @honua/sdk-js/map fixture: wms-wmts-connect-fixtures
fixture: maplibre-raster-source-fixtures
live: live-conformance
Discovers layers, styles, dimensions, formats, ResourceURL/KVP bindings, and tile matrices. Rendering uses the reviewed binding and fails closed when matrix identifiers cannot map exactly to MapLibre zooms.
STAC API and static catalogs open-endpoint supported standalone discovery Any STAC API or static catalog connect(), Source with locator.layout=stac-api or stac-static fixture: stac-fixtures
live: live-conformance
Searches a raw STAC API or walks static catalog links with client-side filtering.
Dynamic STAC search and cloud-native asset selection open-endpoint experimental client-only native Any STAC API; executable assets additionally require the compatible PMTiles, COG, columnar, or runtime client surface @honua/sdk-js/stac fixture: stac-workflow-fixtures
fixture: stac-browser-product-fixtures
integration: stac-browser-product-playwright
Adds bounded GET/POST search, server-driven pagination, cancellation, signed URL refresh, and typed asset selection without changing the supported connect() STAC protocol claim. The walkthrough executes authenticated, byte-bounded PMTiles v3 inspection with redacted range evidence, but does not mount the archive as a tile source; pmtiles-static remains renderer proof. Asset maturity and handoff remain explicit; GeoArrow is metadata-only and Zarr/NetCDF are unavailable.
OData v4 open-endpoint supported standalone discovery Any OData v4 service connect(), Source, HonuaOdataEntitySet fixture: odata-fixtures
live: live-conformance
Reads $metadata, intersects advertised capabilities, and uses the raw service root.
PMTiles direct asset discovery open-endpoint supported client-only discovery Any static host with exact HTTP Range and readable CORS headers connect({ protocol: 'pmtiles' }), Source.protocol('pmtiles') fixture: pmtiles-connect-fixtures
fixture: pmtiles-fixtures
Reads only a bounded PMTiles v3 header and metadata range through the authenticated client pipeline; pmtiles:// is the sole direct auto marker, while filename-only and spoofed inputs fail closed without alternate-protocol probing.
PMTiles managed publish lifecycle server-attach experimental honua-facade facade Honua Server tile operations with configured cloud file storage @honua/sdk-js/pmtiles inspectPmtilesArchive(), createHonuaPmtilesLifecycle(), registerPmtilesSource() fixture: pmtiles-lifecycle-fixtures Submits archive/publish jobs, bounds typed status polling, cancels work, validates public/signed/range-proxy access semantics, and exposes direct versus managed descriptors. Evidence is contract-only; no pinned managed live canary is claimed, and manual managed artifact deletion is unavailable.
GeoParquet asset discovery open-endpoint experimental client-only discovery None; caller provides a GeoParquet profiler connect({ protocol: 'geoparquet', geoparquet: { profiler } }) fixture: geoparquet-connect-fixtures Profiles one or more assets and returns reviewed Source descriptors; query execution remains injected through the optional GeoParquet resolver.
Bounded direct GeoParquet columnar workflow open-endpoint experimental client-only native None; a range-readable GeoParquet object and optional DuckDB-WASM peer @honua/sdk-js/columnar-workflow fixture: geoparquet-fixtures
fixture: columnar-workflow-contract
Inspects and queries a structurally validated GeoParquet source with explicit row, batch, transfer-byte, and backing-memory ceilings; worker, render, table, and download boundaries remain explicit.
Honua Arrow and Parquet feature-query results server-attach experimental honua-facade facade Honua Server deployment that advertises Arrow or Parquet FeatureServer query output @honua/sdk-js/columnar-workflow fixture: columnar-workflow-contract
fixture: columnar-workflow-honua-arrow-interop
Builds bounded GET or POST queries through the normal request pipeline. The built-in Arrow decoder is fixture-proven against an exact Honua Server geoarrow.wkb artifact for a Binary/LargeBinary Point/LineString/Polygon XY/XYZ subset plus object-id, UTF-8/dictionary, and timestamp fields. BinaryView, broader Arrow schemas, and all Parquet responses require an injected decoder. No live status is claimed without a demo-manifest target.
OGC API Tiles open-endpoint beta standalone discovery Any link-driven OGC API Tiles server connect(), Source protocol ogc-tiles fixture: ogc-tiles-fixtures
live: live-conformance
Discovers raw landing, conformance, collection, tileset, and tile links; does not rewrite them to /ogc/tiles. Fixture-proven with scheduled anonymous live verification of one bounded vector tile.
OGC API Maps open-endpoint beta standalone discovery Any link-driven OGC API Maps server connect(), Source protocol ogc-maps fixture: ogc-maps-fixtures
live: live-conformance
Discovers and renders from the raw map path advertised by the service; does not require /ogc/maps. Fixture-proven with scheduled anonymous live verification of one bounded PNG render.
OGC API Coverages discovery and bounded retrieval open-endpoint experimental standalone native Any compatible OGC API Coverages server @honua/sdk-js/coverages createCoverageClient(), CoverageSource, @honua/sdk-js/raster fixture: coverages-wcs-fixtures
integration: coverages-wcs-browser
fixture: unified-raster-fixtures
Discovers landing, conformance, collections, domain/grid and range schema metadata, then retrieves explicitly bounded TIFF/PNG coverage bodies through the shared authenticated request pipeline. A strict standalone browser fixture proves named properties, cancellation, degradation, zero external requests, and the shared MapLibre image handoff. The support claim remains experimental because no anonymous live canary exists.
WCS 2.0.1 discovery and bounded retrieval open-endpoint experimental standalone native Any compatible WCS 2.0.1 KVP endpoint @honua/sdk-js/coverages createWcsClient(), @honua/sdk-js/raster fixture: coverages-wcs-fixtures
integration: coverages-wcs-browser
fixture: unified-raster-fixtures
Supports GetCapabilities, DescribeCoverage, bounded GetCoverage, CRS/range/scaling/axis/temporal parameters, content negotiation, and structured OWS exceptions. A strict standalone browser fixture proves named RANGESUBSET, cancellation, degradation, zero external requests, and the shared MapLibre image handoff. The support claim remains experimental because no anonymous live canary exists.
OGC API Records open-endpoint beta standalone discovery Any link-driven OGC API Records server connect(), Source protocol ogc-records fixture: ogc-records-fixtures
live: live-conformance
Discovers and queries the raw records path advertised by the service; does not require /ogc/records. Fixture-proven with scheduled anonymous live verification of one bounded record page.
Cesium 3D scene workspace open-endpoint beta client-only native None (optional cesium peer) @honua/app-platform/scene-workspace fixture: scene-workspace-fixtures
fixture: scene-state-sync-fixtures
fixture: scene-primitive-diagnostics-fixtures
fixture: cesium-scene-adapter-fixtures
fixture: cesium-scene-mount-fixtures
integration: cesium-scene-adapter-browser
fixture: scene-bundle-isolation
Renderer-neutral scene state plus the Cesium primitive adapter and its bounded mount lifecycle for quantized-mesh terrain, imagery, 3D Tiles, and glTF/GLB model layers. Cesium is a lazily imported optional peer, so core and 2D consumers never load it. Beyond the unit fixtures, the adapter is proven against the real cesium package in headless Chromium with bounded teardown budgets; that browser matrix covers camera, quantized-mesh terrain (the adapter's only materialized terrain protocol), every declared imagery protocol (url-template, WMS, WMTS, single-tile, and both ArcGIS endpoint shapes) with the request each provider puts on the wire, glTF/GLB models, 3D-Tiles tilesets including a .pnts point cloud and the honua_style sidecar, an undeclared imagery protocol, and an unmaterialized model format. Unit fixtures additionally cover the fail-closed Terrain-RGB, raster DEM, ImageServer, and custom terrain rows. The browser lane also records a documented final-canvas GC floor whose listener budget is itself proven by an injected per-cycle leak (#928, #1055). Honua Server scene discovery, the elevation/analysis widgets, and the bounded Source-to-entity slice stay experimental — the entity slice now with its own real-Cesium browser evidence, a refresh that diffs instead of rebuilding (an unchanged feature keeps the same live Entity), the mountCesiumScene single owner over both mounts, and a recorded tier decision naming symbology as the one remaining blocker (#1050), not for want of proof — see the surface tiers table.
OGC API Processes discovery open-endpoint supported standalone discovery Any link-driven OGC API Processes server discoverOgcProcesses() fixture: ogc-processes-fixtures
live: live-conformance
Discovers conformance and process metadata at raw paths. Processes are not a protocol-neutral Source; scheduled anonymous live verification proves operation-only discovery and a zero-request connect() rejection.
OGC API Processes execution open-endpoint experimental standalone native Any conformant OGC API Processes Part 1 (Core) server client.ogcProcesses({ basePath, conformance }).execute() fixture: ogc-processes-fixtures
integration: ogc-processes-integration
Executes at the discovered service root in both Core response shapes (no Prefer header for the Requirement 25 synchronous default, or Prefer: respond-async for asynchronous negotiation), then follows advertised Location and results links through the job lifecycle. Undeclared sync-execute / async-execute / dismiss fails closed with HonuaCapabilityNotSupportedError; polling is always bounded and abortable. Fixture and integration-contract proven, but not yet governed-live executed; the anonymous geometry.buffer live step remains explicitly blocked on honua-server#3268 and honua-demo-infra#68.
Server compatibility gate server-attach facade-required honua-facade facade Honua Server HonuaClient.checkCompatibility() fixture: server-compatibility-fixtures Reads the Honua administrative capabilities contract and should be skipped for standalone reads.
Authored MapPackage runtime server-attach facade-required honua-facade facade Honua Server @honua/sdk-js/runtime fixture: map-package-fixtures Loads server-authored styles, layer order, and metadata.
Realtime subscriptions server-attach facade-required honua-facade transport Honua Server @honua/sdk-js/realtime fixture: realtime-cross-transport-fixtures
integration: realtime-integration
live: realtime-live-conformance
SSE, WebSocket, and OData polling share a release-gated fixture corpus; scheduled evidence executes each transport that Honua Server advertises and classifies unsupported or degraded capability separately.
Collaboration and saved maps compatibility shim server-attach deprecated honua-facade facade Honua Server and @honua/app-platform @honua/sdk-js/collaboration Lifecycle-only claim The SDK entrypoint is a temporary shim; new code imports @honua/app-platform/collaboration.
MCP tools and agent operations open-endpoint beta standalone native Any GeoServices, OGC API Features, WFS, STAC, or OData endpoint the SDK's protocol clients support mcp/, @honua/sdk-js/agent-tools fixture: agent-tools-fixtures Tool definitions are local and the tool contract is the SDK's protocol-neutral one: honua-mcp addresses sources as :
, filters with the typed semantic filter, and returns GeoJSON geometry against any supported open endpoint — no Honua server. A Honua deployment's richer /mcp operator catalog remains the upgrade path via honua-mcp-proxy.

Current OGC line

Raw OGC API Tiles, Maps, and Records discovery/use is beta and fixture-proven. Raw OGC API Processes discovery and raw Processes execution are both experimental and both standalone. They stay deliberately separate claims so discovery evidence can never be mistaken for execution support: discovery carries a scheduled anonymous live lane, while execution is fixture-proven only because no public Processes endpoint permits anonymous execution.