Demo Capability Matrix
Status vocabulary:
demoed: exercised by a sample app or browser smoke lane.tested-only: covered by fixtures or unit/integration tests, but not yet surfaced in a user-facing sample.blocked: coverage depends on follow-up work outside this PR-sized slice.not-in-scope: intentionally excluded from the current demo harness, usually because it is platform/tooling behavior rather than app UX.
This matrix tracks demo coverage for issue #70. The implementation-level
protocol defaults stay in docs/protocol-capability-matrix.md; this document
answers where a reviewer can see or smoke each capability.
Seeded Honua Cloud demo service promotion for issue #128 is tracked in
docs/honua-cloud-demo-services.md and the
shared manifest at
examples/cloud-demo-services.json.
Matrix
| Capability | Sample app(s) | Fixture/test(s) | Smoke command(s) | Status | Gaps / notes |
|---|---|---|---|---|---|
| Service discovery | examples/maplibre-quickstart, examples/realtime-incident-dashboard, examples/node-backend-quickstart, examples/service-explorer |
test/server-compatibility.test.ts, test/node-backend-quickstart.test.ts, test/service-explorer-truth-model.test.ts, test/service-explorer-operation-model.test.ts, test/service-explorer-live-evidence.test.ts, test/integration-harness.test.ts, test/integration/surfaces/*.integration.ts |
npm run demo:node-backend:smoke; npm run test:playwright:service-explorer; npm run test:integration |
demoed | Service explorer accepts an HTTP(S) service root plus an explicit protocol hint, displays immutable discovery evidence, and keeps adapters the public kernel does not implement in a structured unsupported state. Deterministic substitutes validate the reviewed GeoServices and OGC public producer; scheduled execution and qualification remain pending. |
| Cloud-native capability discovery | None | test/cloud-native-discovery.test.ts |
npx vitest run test/cloud-native-discovery.test.ts; npm run sdk-coverage:check |
tested-only | @honua/sdk-js/cloud-native-discovery normalizes a Honua base URL or direct cloud object into stable COG/STAC/PMTiles/GeoParquet/GeoArrow/Coverages/WCS/Zarr/NetCDF descriptors, preserves authoritative manifest links, reports client/server/end-to-end maturity separately, and gates unavailable or experimental operations locally. The focused walkthrough is docs/cloud-native-source-discovery.md; gallery publication is intentionally deferred to the sample IA handoff in #1111. |
| Metadata | examples/maplibre-quickstart, examples/realtime-incident-dashboard, examples/kepler-analytics, examples/service-explorer |
test/quickstart-data.test.ts, test/kepler-analytics-refresh-fixture.test.ts, test/service-explorer-truth-model.test.ts, test/integration/surfaces/feature-server.integration.ts |
npm run test:playwright:service-explorer; npx vitest run test/service-explorer-truth-model.test.ts |
demoed | Service explorer renders schema, CRS/extent, conformance provenance, authorization scope, pagination evidence, capability decisions, and metadata-cache status without manufacturing absent values. |
| FeatureServer | examples/maplibre-quickstart, examples/realtime-incident-dashboard, examples/node-backend-quickstart |
test/feature-layer-compat.test.ts, test/query-compat.test.ts, test/node-backend-quickstart.test.ts, test/integration/surfaces/feature-server.integration.ts |
npm run demo:quickstart:build; npm run demo:node-backend:smoke; npm run test:integration; npm run test:cloud-demo:config |
demoed | Feature query, counts, object ids, edits-adjacent fixtures, and metadata are represented. Issue #128 adds a seeded cloud manifest for read-only FeatureServer samples and a guarded writable service contract. |
| MapServer | examples/service-explorer, test/fixtures/esri-map-image-layer-app, test/fixtures/esri-dynamic-map-app |
test/map-image-layer-compat.test.ts, test/service-explorer-truth-model.test.ts, test/service-explorer-operation-model.test.ts, test/integration/surfaces/map-server.integration.ts |
npx vitest run test/service-explorer-truth-model.test.ts; npm test -- test/map-image-layer-compat.test.ts |
tested-only | The explorer truth matrix projects MapServer evidence and planner-gated actions, but the maintained browser lane does not claim a MapServer rendering journey yet. |
| ImageServer | examples/imagery-cog-quickstart, examples/terrain-rgb-elevation, test/fixtures/esri-map-image-layer-app |
test/imagery-cog-quickstart.test.ts, test/terrain-rgb-elevation.test.ts, test/playwright/imagery-cog-quickstart.spec.mjs, test/playwright/terrain-rgb-elevation.spec.mjs, test/integration/surfaces/image-server.integration.ts, test/contract/geoservices-conformance.test.ts |
npm run demo:imagery-cog:build; npm run demo:terrain-elevation:build; npm run test:playwright:terrain-elevation |
demoed | COG-backed ImageServer tile and exportImage paths are visible in the imagery quickstart; Terrain-RGB tiles plus elevation value/profile proof are visible in the terrain sample. Live seeded coverage can be promoted through #70. |
| Direct COG and terrain elevation | examples/imagery-cog-quickstart |
test/cog-session.test.ts, test/cog-maplibre.test.ts, test/cog-live-evidence.test.ts, test/imagery-terrain-journey.test.ts, test/playwright/imagery-cog-quickstart.spec.mjs |
npm run demo:imagery-cog:mock; npm run test:playwright:imagery-cog; HONUA_COG_LIVE_ENABLED=true npm run evidence:cog:live |
demoed | The deterministic browser lane proves classified STAC-to-COG decoding, exact bounded range accounting, a MapLibre mount, comparison, cancellation, point/profile elevation, and resource release. The scheduled anonymous lane pins a real Earth Search Sentinel-2 COG and proves semantic inspection plus a bounded decoded window; browser-side UTM reprojection remains unclaimed. |
| Geometry Service | examples/storytelling-25d-map, examples/geoprocessing-job-runner, test/fixtures/esri-geometry-primitives-app |
test/geometry-primitives-compat.test.ts, test/geometry-symbol-compat.test.ts, test/geoprocessing-job-runner.test.ts, test/integration/surfaces/gp-server.integration.ts |
npm run demo:25d:build; npm run demo:gp-runner:build; npm test -- test/geometry-primitives-compat.test.ts test/geoprocessing-job-runner.test.ts |
demoed | The job runner builds geometry buffer/intersect steps into a geospatial-grpc execution plan and materializes linked result layers; live GeometryServer seed coverage remains #128/#66 follow-up. |
| GP/OGC Processes | examples/geoprocessing-job-runner |
test/process-runner.test.ts, test/geoprocessing-job-runner.test.ts, test/contract/ogc-processes.test.ts, test/contract/geoprocessing-job-run.test.ts, test/integration/surfaces/ogc-processes.integration.ts, test/integration/surfaces/gp-server.integration.ts |
npm run demo:gp-runner:build; npm run test:playwright:gp-runner; npm test -- test/process-runner.test.ts test/geoprocessing-job-runner.test.ts test/contract/ogc-processes.test.ts test/contract/geoprocessing-job-run.test.ts |
demoed | HonuaProcessRunner now normalizes OGC API Processes, GeoServices REST GPServer, and honua-io/geospatial-grpc ProcessService clients onto IJobRun; the sample covers progress, cancellation, unsupported capability, materialized output, and linked workspace sync. |
| OGC Features | examples/maplibre-quickstart, examples/node-backend-quickstart, examples/service-explorer |
test/contract/ogc-conformance.test.ts, test/contract/exploration.test.ts, test/service-explorer-truth-model.test.ts, test/service-explorer-live-evidence.test.ts, test/playwright/service-explorer.spec.mjs, test/integration/surfaces/ogc-features.integration.ts |
npm run test:playwright:service-explorer; npm run test:integration |
demoed | The explorer's same-origin OGC service drives the complete inspect → strict plan → bounded query → table/map path. The credential-safe public producer is reviewed but has not yet supplied qualification evidence. |
| OGC Tiles | examples/maplibre-quickstart, examples/storytelling-25d-map |
test/contract/ogc-tiles.test.ts, test/integration/surfaces/ogc-tiles.integration.ts, test/tile-layer-compat.test.ts |
npm run demo:quickstart:build; npm run demo:25d:build |
demoed | Tile rendering is visible through MapLibre/Cesium lanes; styled OGC tile variants remain weak and should be tracked under #60. |
| PMTiles | examples/pmtiles-static, docs/examples/pmtiles-managed-lifecycle |
test/pmtiles-contract.test.ts, test/connect-pmtiles.test.ts, test/pmtiles-lifecycle.test.ts, test/playwright/pmtiles-static.spec.mjs |
npm run demo:pmtiles-static:build; npm run demo:pmtiles-managed:typecheck; npx vitest run test/pmtiles-lifecycle.test.ts; npm run test:playwright:pmtiles-static |
tested-only | Direct inspection is demoed by the deterministic, server-optional atomic Example. Managed lifecycle remains contract-only: the separate Node Walkthrough submits archive/publish jobs, validates status/cancellation and public/signed/range-proxy access, and exposes renderer descriptors. No managed end-to-end claim exists without a pinned deployment canary. |
| OGC Maps | examples/maplibre-quickstart, examples/service-explorer |
test/contract/ogc-maps.test.ts, test/service-explorer-truth-model.test.ts, test/service-explorer-operation-model.test.ts, test/integration/surfaces/ogc-maps.integration.ts |
npm test -- test/contract/ogc-maps.test.ts; npx vitest run test/service-explorer-truth-model.test.ts; npm run test:integration |
tested-only | The explorer truth matrix retains OGC Maps discovery/capability facts and disables operations the public planners cannot accept; a runnable OGC Maps fixture remains future work. |
| WFS | examples/service-explorer |
test/contract/wfs.test.ts, test/service-explorer-truth-model.test.ts, test/service-explorer-operation-model.test.ts |
npm test -- test/contract/wfs.test.ts; npx vitest run test/service-explorer-truth-model.test.ts |
tested-only | WFS metadata and capability truth are covered by the fixture matrix; no WFS browser execution is claimed by the current maintained path. |
| WMS | examples/imagery-cog-quickstart, test/fixtures/esri-map-image-layer-app |
test/imagery-cog-quickstart.test.ts, test/playwright/imagery-cog-quickstart.spec.mjs, test/contract/wms.test.ts, test/wms-capabilities.test.ts, test/integration/surfaces/wms.integration.ts |
npm run demo:imagery-cog:build; npm run test:playwright:imagery-cog |
demoed | WMS GetMap is rendered through the runtime raster source helper; broader standards source picking remains in #62 and #70. |
| WMTS | examples/service-explorer, test/fixtures/esri-tile-layer-app |
test/contract/wmts.test.ts, test/service-explorer-truth-model.test.ts, test/service-explorer-operation-model.test.ts, test/integration/surfaces/wmts.integration.ts, test/tile-layer-compat.test.ts |
npm test -- test/contract/wmts.test.ts test/tile-layer-compat.test.ts; npx vitest run test/service-explorer-truth-model.test.ts; npm run test:integration |
tested-only | WMTS truth projection and structured unsupported planner decisions are covered; the current browser fixture does not claim a mounted WMTS layer. |
| STAC | examples/kepler-analytics |
test/contract/stac.test.ts, test/kepler-analytics-refresh-fixture.test.ts, test/playwright/kepler-analytics-fixture.spec.mjs |
npm run demo:kepler:build; npm run demo:kepler:smoke |
demoed | Kepler fixtures represent materialized STAC-like analytics outputs; live STAC source discovery remains a #63 follow-up. |
| OData | examples/service-explorer |
test/contract/odata-conformance.test.ts, test/composition.test.ts, test/service-explorer-truth-model.test.ts, test/service-explorer-operation-model.test.ts |
npm test -- test/contract/odata-conformance.test.ts test/composition.test.ts; npx vitest run test/service-explorer-truth-model.test.ts |
tested-only | OData metadata, schema, cache, and capability decisions are represented in the explorer truth matrix; a runnable OData browser fixture is not yet claimed. |
| MCP | None | mcp/package.json, test/split-packages.test.ts |
npm run verify:split-packages |
blocked | MCP packaging exists, but there is no demo harness command in the root scripts. A sample MCP workflow is a follow-up for #65 and #70. |
| Migration | examples/migration-workbench |
examples/arcgis-source-app, test/migration-workbench-artifacts.test.ts, test/migration-workbench-model.test.ts, test/playwright/migration-workbench.spec.mjs |
npm run demo:migration-workbench:artifacts:check; npm run test:playwright:migration-workbench; npm run samples:run -- verify --sample migration-workbench --sdk-mode source; npm run samples:run -- verify --sample migration-workbench --sdk-mode packed |
demoed | The qualified arcgis-migration golden journey projects byte-deterministic honua-migrate CLI artifacts from the Honua-authored fixture, re-hashes every download, executes the generated compat target, and preserves automated, manual, blocked, and MapLibre-alternative findings. It accepts no upload or browser credential and makes no non-loopback request; its live-evidence lane instead re-runs the real CLI and proves byte-identical reproduction of the committed artifacts (#549). Gallery projection is tracked by #550. |
| Auth/interceptors | examples/node-backend-quickstart, test/fixtures/esri-request-app, test/fixtures/esri-oauth-app |
test/node-backend-quickstart.test.ts, test/request-interceptors.test.ts, test/oauth-identity-compat.test.ts, test/esri-request-compat.test.ts, test/esri-config-compat.test.ts |
npm run demo:node-backend:smoke; npm test -- test/request-interceptors.test.ts test/oauth-identity-compat.test.ts |
demoed | Node backend quickstart keeps API key and service-account credentials in the server process and logs SDK request interceptor spans without exposing secrets. |
| Retries/timeouts | examples/node-backend-quickstart |
test/node-backend-quickstart.test.ts, test/retry-jitter.test.ts, test/abort-signal.test.ts, test/response-timing.test.ts, test/integration-diagnostics.test.ts |
npm run demo:node-backend:smoke; npm test -- test/retry-jitter.test.ts test/abort-signal.test.ts test/response-timing.test.ts |
demoed | Node backend quickstart configures SDK timeout and retry options, and its fixture test forces a transient upstream 503 through the retry lane. |
| Attachments | examples/edit-workflow-demo, test/fixtures/esri-demo-feature-table-relates-app |
test/edit-workflow-demo.test.ts, test/playwright/edit-workflow-demo.spec.mjs, test/feature-table-compat.test.ts, test/feature-form-compat.test.ts, test/migration-feature-table-demo-runtime.test.ts |
npm run demo:edit-workflow:build; npm run test:playwright:edit-workflow; npm run demo:migration:featuretable |
demoed | The edit workflow sample stages attachment add/delete mutations in the same edit session and surfaces partial attachment failures; live upload/download coverage still depends on seeded writable Honua Cloud services in #55 and #73. |
| Related records | test/fixtures/esri-demo-feature-table-relates-app, test/fixtures/esri-related-features-app, test/fixtures/esri-feature-table-relates-app |
test/feature-table-compat.test.ts, test/table-list-compat.test.ts, test/migration-feature-table-demo-runtime.test.ts |
npm run demo:migration:featuretable; npm test -- test/table-list-compat.test.ts |
demoed | Related-record navigation is the primary FeatureTable migration demo path; issue #74 should broaden real-sample scenarios. |
| Edits | examples/edit-workflow-demo, test/fixtures/esri-real-sample-editing-app, test/fixtures/esri-feature-form-app |
test/edit-workflow-demo.test.ts, test/contract/edit-session.test.ts, test/playwright/edit-workflow-demo.spec.mjs, test/editor-compat.test.ts, test/feature-form-compat.test.ts, test/contract/wfs.test.ts |
npm run demo:edit-workflow:build; npm run test:playwright:edit-workflow; npm test -- test/edit-workflow-demo.test.ts test/contract/edit-session.test.ts; npm run test:cloud-demo:config |
demoed | The edit workflow sample demonstrates metadata-backed forms, create/update/delete, sketch dirty state and undo/redo, annotation persistence hooks, optimistic UI apply/commit/rollback hooks, normalized conflict errors, version hints, unsupported capability states, and attachment lifecycle staging. Issue #128 defines the guarded writable cloud service env, write-token, and reset-token contract while live write wiring remains #73 follow-up. |
| Style/runtime | examples/maplibre-quickstart, examples/storytelling-25d-map, examples/kepler-analytics |
test/style.test.ts, test/runtime/runtime.test.ts, test/storytelling-25d-map.test.ts, test/kepler-analytics-refresh-fixture.test.ts |
npm run demo:quickstart:build; npm run demo:25d:build; npm run demo:kepler:build |
demoed | Runtime styles, layer projections, and app-specific theming are covered across all three first-party demos. |
| Generated app preview runtime | None | test/generated-app-runtime.test.ts, test/fixtures/generated-app/operations-dashboard-app-package.v1.json, test/fixtures/generated-app/operations-dashboard-map-package.v1.json, test/fixtures/generated-app/operations-dashboard-features.v1.json |
npm test -- test/generated-app-runtime.test.ts |
tested-only | @honua/sdk-js/generated-app covers the versioned manifest/profile, BuildSpec / AppPackage / MapPackage projections, map/table/count/chart/filter render models, linked interactions, manifest-level map layerId fallback, partial-load map disposal, and structured preview diagnostics. Lifecycle telemetry events are documented in docs/generated-app-runtime.md; promotion to demoed needs a Portal or browser host harness. |
| Studio package contracts | None | test/studio/studio-contracts.test.ts |
npm test -- test/studio/studio-contracts.test.ts; npm run verify:split-packages |
tested-only | @honua/sdk-js/studio projects the query/analysis/map/dashboard/report/form/app/workflow/GP/ETL package families and unifies them behind the { valid, diagnostics, pkg? } StudioPackageValidationResponse<T> envelope (fromMapPackageValidation bridges the existing ValidateMapPackageResult unchanged), a capability manifest, and publish/share/embed contracts. The barrel is MCP/QGIS-safe — a source scan asserts it never imports MapLibre/DOM or Console-coupled modules. Map/dashboard/app reuse the established SDK-native shapes; the other families are experimental stubs pending server contracts. See docs/studio-package-contracts.md; promotion to demoed needs a Console/MCP host harness. |
| Webmap conversion | test/fixtures/esri-webmap-app |
test/webmap-parse.test.ts, test/webmap-convert-renderer.test.ts, test/webmap-convert-symbol.test.ts, test/webmap-convert-extent.test.ts, test/web-map-compat.test.ts |
npm test -- test/webmap-parse.test.ts test/web-map-compat.test.ts |
tested-only | Conversion coverage is fixture-heavy; a before/after browser sample remains a #74 follow-up. |
| Geocoding | examples/geocoding-quickstart, test/fixtures/esri-route-task-app |
test/geocoding.test.ts, test/geocoding-quickstart.test.ts, test/search-compat.test.ts, test/route-task-compat.test.ts, test/playwright/geocoding-quickstart.spec.mjs |
npm run demo:geocoding:build; npm run test:playwright:geocoding; npm test -- test/geocoding.test.ts test/geocoding-quickstart.test.ts test/search-compat.test.ts |
demoed | The geocoding quickstart demonstrates forward geocoding, reverse lookup from a clicked map point, and typeahead through first-class HonuaGeocodingClient methods with a same-origin fixture lane. |
| Telemetry/diagnostics | examples/maplibre-quickstart, examples/storytelling-25d-map, examples/realtime-incident-dashboard, examples/node-backend-quickstart |
test/node-backend-quickstart.test.ts, test/integration-diagnostics.test.ts, test/integration-reporter.test.ts, test/response-timing.test.ts |
npm run demo:node-backend:smoke; npm test -- test/integration-diagnostics.test.ts test/integration-reporter.test.ts |
demoed | Demo apps emit local telemetry modules, the Node backend emits structured JSON request logs, and integration diagnostics persist failures for CI triage. |
| Metadata caching | examples/maplibre-quickstart, examples/kepler-analytics, examples/imagery-cog-quickstart, examples/edit-workflow-demo, examples/service-explorer |
test/quickstart-config.test.ts, test/kepler-analytics-refresh-fixture.test.ts, test/imagery-cog-quickstart.test.ts, test/edit-workflow-demo.test.ts, test/service-explorer-workspace.test.ts, test/contract/odata-conformance.test.ts, test/cloud-demo-services.test.ts |
npm run demo:edit-workflow:build; npm run test:playwright:service-explorer; npm test -- test/quickstart-config.test.ts test/kepler-analytics-refresh-fixture.test.ts test/imagery-cog-quickstart.test.ts test/edit-workflow-demo.test.ts test/service-explorer-workspace.test.ts; npm run test:cloud-demo:config |
demoed | Cache note: metadata should be cached per source/config version for app startup, source picking, form/domain rendering, WFS/WMTS/OGC/OData metadata negotiation, and MapServer style/legend discovery. Issue #128's cloud demo manifest preserves that metadata boundary while realtime state, edit submissions, writable resets, and ad hoc spatial requests stay uncached. Weak cross-protocol cache invalidation remains under #63, #64, and #70. |
| Realtime/live data | examples/realtime-incident-dashboard |
test/realtime.test.ts, test/realtime-incident-dashboard.test.ts, test/playwright/realtime-incident-dashboard.spec.mjs, test/cloud-demo-services.test.ts |
npm run demo:incident:build; npm run test:playwright:incident; npm run samples:run -- build --sample realtime-incident-dashboard --sdk-mode packed; npm run test:cloud-demo:config |
demoed | Realtime note: the incident operations dashboard is live-data by default and must not be treated as a static dashboard. Deterministic fixture evidence now passes snapshot/delta delivery through the public resumable gate, distinguishes duplicate from reordered events, requires a replacement snapshot after cursor expiry, and proves cancellation; replay remains visibly non-live. Issue #128 records the seeded SSE stream URL env and states that the realtime stream is the feature-state authority. Terminal live qualification remains blocked by #393 and the deployed stream/edit-profile work tracked in the server backlog; follow #70 for harness-level status badges. |
| Unified operational workspace | examples/unified-ops-workspace |
test/unified-ops-workspace.test.ts, test/playwright/unified-ops-workspace.spec.mjs |
npm run demo:unified-ops:build; npm run test:playwright:unified-ops |
demoed | Composition note: incident command and analysis review share one app workspace, linked-view context, realtime record store, reviewable AI/MCP drafts, and saved snapshot diagnostics with fixture-backed data. |
| Materialized outputs | examples/kepler-analytics, test/fixtures/honua-25d-demo |
test/kepler-analytics-refresh-fixture.test.ts, test/storytelling-25d-data.test.ts |
npm run demo:kepler:refresh-fixture; npm run demo:kepler:build |
demoed | Materialized note: analytics and 2.5D fixtures are generated snapshots used for deterministic demos; provenance refresh belongs with #63 and #74. |
| Indexed spatial aggregation | examples/spatial-analytics-workbench |
test/spatial-aggregation-contract.test.ts, test/spatial-analytics-workbench.test.ts, test/fixtures/spatial-aggregation/indexed-summary.v1.json, test/playwright/spatial-analytics-workbench.spec.mjs |
npm run demo:spatial-analytics:build; npm run test:playwright:spatial-analytics; npm test -- test/spatial-aggregation-contract.test.ts test/spatial-analytics-workbench.test.ts |
demoed | Contract and browser coverage include category, histogram, count, sum, avg, grouped summaries, viewport/spatial filters, zoom/index resolution, opaque H3/Quadbin-style index metadata, widget metadata, heat/grid cells, and progressive loading. Live Honua Cloud execution remains a #66 server/platform follow-up. |
| Warehouse analytics sources | examples/spatial-analytics-workbench |
test/contract/analytics-sources.test.ts, test/contract/query-tiles.test.ts, test/runtime/query-tiles.test.ts, test/fixtures/spatial-aggregation/indexed-summary.v1.json |
npm test -- test/contract/analytics-sources.test.ts test/contract/query-tiles.test.ts test/runtime/query-tiles.test.ts test/spatial-aggregation-contract.test.ts |
tested-only | Provider-neutral table/query/tileset and H3/Quadbin descriptors are covered with cache keys, pushdown/degraded reasons, widget cache identity, query-tile integration, and spatial aggregation metadata. Production warehouse execution remains a server/platform follow-up under #66. |
| Uncached ad hoc spatial requests | examples/maplibre-quickstart, examples/storytelling-25d-map |
test/spatial-filter.test.ts, test/query-builder.test.ts, test/query-builder-variants.test.ts, test/batch-query.test.ts |
npm test -- test/spatial-filter.test.ts test/query-builder.test.ts test/query-builder-variants.test.ts |
tested-only | Ad-hoc note: bbox, intersects, and user-driven spatial filters must execute uncached because they depend on viewport and interaction state. Browser smoke expansion is tracked in #70. |
Follow-up Index
- #55: seeded live FeatureServer and writable service coverage.
- #56: browser sample controls for service choice, auth, search, and MapServer/WMS/WMTS surfacing.
- #57: ImageServer imagery seed and demo affordances.
- #58: Geometry Service and GPServer live fixtures.
- #59: OGC Processes job-run sample.
- #60: OGC render surface polish for Tiles and Maps.
- #62: WFS/WMS/WMTS standards source picker.
- #63: STAC and materialized analytics provenance.
- #64: OData metadata and cache demo.
- #65: MCP sample harness command.
- #68: edit workflow, form, conflict, and attachment lifecycle coverage.
- #70: coordinating demo capability matrix and sample harness.
- #73: real editing, attachments, and writable fixture coverage.
- #74: migrated real-sample breadth, webmap conversion sample, and related-record scenarios.
- #128: seeded Honua Cloud demo services, realtime stream authority, guarded writable reset safeguards, and cloud smoke env.