{ "$schema": "./contract/v2/schemas/sample-catalog.schema.json", "format": "honua.sdk.sample-catalog.v2", "schemaVersion": 2, "migratedFrom": { "format": "honua.sdk.sample-catalog.v1", "path": "samples/catalog.v1.json" }, "sdk": { "package": "@honua/sdk-js" }, "configuration": { "endpointValuePolicy": "environment-name-only", "allowedSchemes": [ "http", "https" ], "browserSecretPolicy": "Approved browser configuration may name public endpoints and asset identifiers but never credential values or signed URLs; observed legacy-unsafe names remain inventoried.", "credentialQueryParameters": [ "access_key", "access_key_id", "access_token", "api_key", "apikey", "auth_token", "authorization", "aws_access_key_id", "awsaccesskeyid", "bearer_token", "client_secret", "credential", "id_token", "key", "password", "private_key", "refresh_token", "sas", "secret", "sig", "signature", "subscription_key", "token", "x_amz_credential", "x_amz_signature", "x_api_key", "x_goog_signature" ], "evidenceExpiry": { "executedMaxDays": 31, "nonExecutedMaxDays": 90, "maxFutureSkewSeconds": 300 }, "environmentReadExemptions": [ { "name": "GITHUB_SHA", "provider": "github-actions", "reason": "GitHub Actions supplies the commit identity used only for evidence provenance." }, { "name": "MODE", "provider": "vite", "reason": "Vite supplies its built-in execution mode metadata." } ] }, "goldenJourneys": [ { "id": "first-map", "title": "First Map", "status": "qualified", "candidateSampleId": "maplibre-quickstart" }, { "id": "service-explorer", "title": "Universal Service Explorer", "status": "qualified", "candidateSampleId": "service-explorer" }, { "id": "planning-permitting", "title": "Planning and Permitting", "status": "planned", "candidateSampleId": "planning-permitting-workbench" }, { "id": "incident-operations", "title": "Realtime Incident Operations", "status": "planned", "candidateSampleId": "realtime-incident-dashboard" }, { "id": "imagery-terrain", "title": "Imagery and Terrain", "status": "qualified", "candidateSampleId": "imagery-cog-quickstart" }, { "id": "cloud-native-analysis", "title": "Cloud-Native Spatial Analysis", "status": "planned", "candidateSampleId": "spatial-analytics-workbench" }, { "id": "arcgis-migration", "title": "ArcGIS Migration Workbench", "status": "qualified", "candidateSampleId": "migration-workbench" } ], "qualityProfiles": [ { "id": "browser-fixture", "description": "Internal browser conformance fixture with deterministic browser and console checks.", "gates": { "packedBuild": false, "browser": true, "accessibility": false, "console": true, "responsive": false, "screenshot": false, "performance": false, "liveEvidence": false } }, { "id": "browser-lab", "description": "Exploratory browser integration with packed, browser, accessibility, console, and responsive gates.", "gates": { "packedBuild": true, "browser": true, "accessibility": true, "console": true, "responsive": true, "screenshot": false, "performance": false, "liveEvidence": false } }, { "id": "browser-recipe", "description": "Copyable browser recipe with packed, browser, accessibility, console, and responsive gates.", "gates": { "packedBuild": true, "browser": true, "accessibility": true, "console": true, "responsive": true, "screenshot": false, "performance": false, "liveEvidence": false } }, { "id": "golden-browser", "description": "Canonical browser journey requiring the complete packed, browser, visual, performance, and live-evidence matrix.", "gates": { "packedBuild": true, "browser": true, "accessibility": true, "console": true, "responsive": true, "screenshot": true, "performance": true, "liveEvidence": true } }, { "id": "headless-recipe", "description": "Copyable Node or headless recipe requiring packed-package validation without browser presentation gates.", "gates": { "packedBuild": true, "browser": false, "accessibility": false, "console": false, "responsive": false, "screenshot": false, "performance": false, "liveEvidence": false } }, { "id": "internal-fixture", "description": "Internal input or conformance fixture; public presentation and packed-application gates do not apply.", "gates": { "packedBuild": false, "browser": false, "accessibility": false, "console": false, "responsive": false, "screenshot": false, "performance": false, "liveEvidence": false } } ], "externalReplacements": [ { "id": "honua-app-platform", "title": "@honua/app-platform", "url": "https://www.npmjs.com/package/@honua/app-platform" } ], "samples": [ { "id": "ai-spatial-app-builder", "title": "Safe Agent Workbench", "summary": "Proves typed proposals, shared policy validation, signed single-use approval, bounded execution, refusal, and verified receipt states.", "sourceKind": "root-example", "track": "lab", "supportTier": "experimental", "lifecycle": { "state": "active", "reason": "North-star safe-agent flagship rebuilt around plan-bound approval and receipts." }, "sourcePath": "examples/ai-spatial-app-builder", "docsPath": "examples/ai-spatial-app-builder/README.md", "playground": { "projectPath": "playgrounds/ai-spatial-app-builder", "providers": [ { "id": "stackblitz", "title": "StackBlitz", "url": "https://stackblitz.com/github/honua-io/honua-sdk-js/tree/trunk/playgrounds/ai-spatial-app-builder" }, { "id": "codesandbox", "title": "CodeSandbox", "url": "https://codesandbox.io/s/github/honua-io/honua-sdk-js/tree/trunk/playgrounds/ai-spatial-app-builder" } ] }, "capabilities": [ "agent-approval", "agent-planning", "atomic-authorization", "query-planning", "receipts", "typed-agent-tools" ], "capabilityKeys": [ "ai.agent-operations", "ai.approval-workflows", "ai.mcp-discovery" ], "protocols": [ "geoservices", "honua" ], "renderers": [ "none" ], "data": { "mode": "hybrid", "authMode": "host-mediated", "config": [ "HONUA_AGENT_HOST_URL", "HONUA_LIVE_DATA_URL" ], "provenance": "Committed parcel fixture plus optional host-mediated proposal and live-data endpoints.", "attribution": "City and County of Honolulu — deterministic demonstration fixture.", "freshness": "Fixture snapshot 2026-07-10; optional live lane records its observation time.", "configurationStatus": "approved", "configClassifications": [ { "name": "HONUA_AGENT_HOST_URL", "exposure": "server-only", "valueKind": "non-secret" }, { "name": "HONUA_LIVE_DATA_URL", "exposure": "server-only", "valueKind": "non-secret" } ] }, "evidence": { "fixture": { "mode": "fixture", "status": "executed", "commands": [ "npm run demo:ai-spatial-builder:build", "npm run demo:ai-spatial-builder:evidence" ] }, "live": { "mode": "unavailable", "targetMode": "authenticated", "status": "skipped", "commands": [ "npm run demo:ai-spatial-builder:live-evidence" ], "evidencePath": "examples/ai-spatial-app-builder/evidence/live-skipped.v1.json", "expiresAt": "2026-10-08T18:00:00.000Z" } }, "expectedDegradation": "Missing host endpoints produce a structured skip; mutation, realtime, and generated-app effects stay disabled without separate host policy.", "validationProfile": "browser-lab", "validation": [ "npm run demo:ai-spatial-builder:typecheck", "npm run demo:ai-spatial-builder:build", "npm run demo:ai-spatial-builder:evidence", "npm run test:playwright:ai-spatial-builder" ] }, { "id": "app-bootstrap-basic", "title": "Application bootstrap basic", "summary": "Bootstraps a minimal application through the legacy app-platform compatibility surface.", "sourceKind": "root-example", "track": "lab", "supportTier": "deprecated", "lifecycle": { "state": "retire", "reason": "The app-platform split supersedes this SDK-owned compatibility demonstration.", "targetRelease": "0.2.0-beta.0", "replacement": { "kind": "external", "id": "honua-app-platform" } }, "sourcePath": "examples/app-bootstrap-basic", "docsPath": "examples/app-bootstrap-basic/README.md", "capabilities": [ "app-bootstrap" ], "capabilityKeys": [], "protocols": [ "honua" ], "renderers": [ "maplibre" ], "data": { "mode": "fixture", "authMode": "none", "config": [], "provenance": "Committed bootstrap fixture.", "attribution": "Honua fixture data.", "freshness": "Deterministic replay.", "configurationStatus": "not-required", "configClassifications": [] }, "evidence": { "fixture": { "mode": "fixture", "status": "executed", "commands": [ "npm run demo:app-bootstrap:build" ] }, "live": { "mode": "unavailable", "status": "not-applicable", "commands": [] } }, "expectedDegradation": "Compatibility APIs are removed when the package advances to 0.2.0.", "validationProfile": "browser-lab", "validation": [ "npm run demo:app-bootstrap:typecheck", "npm run demo:app-bootstrap:build" ] }, { "id": "arcgis-source-app", "title": "ArcGIS source migration fixture", "summary": "Provides the ArcGIS JavaScript source application used by the migration end-to-end harness.", "sourceKind": "root-example", "track": "fixture", "supportTier": "internal", "lifecycle": { "state": "active", "reason": "Retain as a test input, not as a public Honua application." }, "sourcePath": "examples/arcgis-source-app", "docsPath": "examples/arcgis-source-app/README.md", "capabilities": [ "arcgis", "migration" ], "capabilityKeys": [], "protocols": [ "geoservices" ], "renderers": [ "arcgis" ], "data": { "mode": "fixture", "authMode": "none", "config": [], "provenance": "Committed migration input fixture.", "attribution": "Synthetic parcel fixture.", "freshness": "Versioned with the repository.", "configurationStatus": "not-required", "configClassifications": [] }, "evidence": { "fixture": { "mode": "fixture", "status": "executed", "commands": [ "npm run test:migration:real-samples" ] }, "live": { "mode": "unavailable", "status": "not-applicable", "commands": [] } }, "expectedDegradation": "This is intentionally an ArcGIS input and does not load Honua at runtime.", "validationProfile": "internal-fixture", "validation": [ "npm run test:migration:real-samples" ] }, { "id": "automatic-source-workflow", "title": "Automatic source-to-map workflow fixture", "summary": "Exercises automatic MapLibre strategy selection, interaction state, refresh, and disposal against deterministic browser fixtures.", "sourceKind": "docs-example", "track": "fixture", "supportTier": "internal", "lifecycle": { "state": "active", "reason": "Retain as the browser conformance fixture for the automatic source workflow." }, "sourcePath": "docs/examples/automatic-source-workflow", "docsPath": "docs/examples/automatic-source-workflow/README.md", "capabilities": [ "interaction-state", "map", "strategy-selection" ], "protocols": [ "geoservices", "pmtiles", "wms", "wmts" ], "renderers": [ "maplibre" ], "data": { "mode": "fixture", "authMode": "none", "configurationStatus": "not-required", "config": [], "provenance": "In-memory feature and tile fixtures served from the local test origin.", "attribution": "Honua deterministic browser fixtures.", "freshness": "Versioned with the repository.", "configClassifications": [] }, "evidence": { "fixture": { "mode": "fixture", "status": "executed", "commands": [ "npx playwright test test/playwright/automatic-source-workflow.spec.mjs" ] }, "live": { "mode": "unavailable", "status": "not-applicable", "commands": [] } }, "expectedDegradation": "Unsupported strategies and interaction operations remain explicit test failures.", "validationProfile": "browser-fixture", "validation": [ "npx playwright test test/playwright/automatic-source-workflow.spec.mjs" ], "capabilityKeys": [] }, { "id": "cesium-route-playback", "title": "Cesium route playback lab", "summary": "Explores bounded route playback and elevation context through an optional Cesium consumer integration.", "sourceKind": "docs-example", "track": "lab", "supportTier": "experimental", "lifecycle": { "state": "rework", "reason": "Replace URL-query endpoint and ion-token configuration with the approved secret-safe configuration surface before promotion.", "targetRelease": "0.2.0-beta.0" }, "sourcePath": "docs/examples/cesium-route-playback", "docsPath": "docs/examples/cesium-route-playback/README.md", "capabilities": [ "route-playback", "terrain", "three-dimensional" ], "protocols": [ "geoservices" ], "renderers": [ "cesium" ], "data": { "mode": "hybrid", "authMode": "api-key", "configurationStatus": "legacy-unsafe", "configurationGap": "Live mode reads baseUrl and ionToken from URL query parameters; no configuration name is approved until the sample is reworked.", "config": [], "provenance": "Committed route query fixture or an explicitly configured Honua feature layer.", "attribution": "Route and terrain providers remain visible in diagnostics.", "freshness": "Fixture version or live query observation time.", "configClassifications": [] }, "evidence": { "fixture": { "mode": "fixture", "status": "executed", "commands": [ "npx playwright test test/playwright/cesium-route-playback.spec.mjs", "npx vitest run test/cesium-route-playback.test.ts" ] }, "live": { "mode": "authenticated", "status": "planned", "commands": [] } }, "expectedDegradation": "Terrain, source Z, and 3D contract gaps are reported rather than promoted as production support.", "validationProfile": "browser-lab", "validation": [ "npx playwright test test/playwright/cesium-route-playback.spec.mjs", "npx vitest run test/cesium-route-playback.test.ts" ], "capabilityKeys": [ "raster.terrain-rgb", "routing.solve", "serve.3d-tiles-scene" ] }, { "id": "edit-workflow-demo", "title": "Conflict-aware editing workflow", "summary": "Demonstrates optimistic edits, attachments, conflicts, and safe recovery.", "sourceKind": "root-example", "track": "recipe", "supportTier": "supported", "lifecycle": { "state": "replace", "reason": "The planning and permitting journey now owns the complete metadata-backed search, bounded analysis, edit, attachment, conflict, recovery, and export workflow.", "targetRelease": "0.2.0-beta.0", "replacement": { "kind": "journey", "id": "planning-permitting" } }, "sourcePath": "examples/edit-workflow-demo", "docsPath": "examples/edit-workflow-demo/README.md", "capabilities": [ "attachments", "editing", "optimistic-updates" ], "capabilityKeys": [ "editing.featureserver-edits" ], "protocols": [ "geoservices", "honua" ], "renderers": [ "maplibre" ], "data": { "mode": "fixture", "authMode": "none", "config": [], "provenance": "Committed deterministic edit fixture.", "attribution": "Honua synthetic operations data.", "freshness": "Deterministic fixture replay time.", "configurationStatus": "not-required", "configClassifications": [] }, "evidence": { "fixture": { "mode": "fixture", "status": "executed", "commands": [ "npm run demo:edit-workflow:mock" ] }, "live": { "mode": "demo-live", "status": "planned", "commands": [] } }, "expectedDegradation": "Editing is read-only when the service does not advertise mutation capability.", "validationProfile": "browser-recipe", "validation": [ "npm run demo:edit-workflow:typecheck", "npm run demo:edit-workflow:build" ] }, { "id": "geocoding-quickstart", "title": "Geocoding quickstart", "summary": "Runs forward, reverse, and suggestion workflows with map feedback.", "sourceKind": "root-example", "track": "recipe", "supportTier": "supported", "lifecycle": { "state": "rework", "reason": "Retain as the focused forward, reverse, and suggestion recipe; move browser credential inputs behind a host-mediated flow before maintained promotion.", "targetRelease": "0.2.0-beta.0" }, "sourcePath": "examples/geocoding-quickstart", "docsPath": "examples/geocoding-quickstart/README.md", "capabilities": [ "forward-geocode", "reverse-geocode", "suggest" ], "capabilityKeys": [ "geocoding.forward", "geocoding.reverse" ], "protocols": [ "geoservices" ], "renderers": [ "maplibre" ], "data": { "mode": "hybrid", "authMode": "api-key", "config": [ "VITE_HONUA_ALLOW_BROWSER_BEARER_TOKEN", "VITE_HONUA_GEOCODING_API_KEY", "VITE_HONUA_GEOCODING_BASE_URL", "VITE_HONUA_GEOCODING_BEARER_TOKEN", "VITE_HONUA_GEOCODING_COUNTRY_CODES", "VITE_HONUA_GEOCODING_INITIAL_QUERY", "VITE_HONUA_GEOCODING_LOCATOR_NAME", "VITE_HONUA_GEOCODING_MAX_RESULTS", "VITE_HONUA_GEOCODING_MAX_SUGGESTIONS" ], "provenance": "Committed gazetteer responses or configured Honua GeocodeServer.", "attribution": "Gazetteer attribution supplied by the endpoint.", "freshness": "Fixture capture metadata or live response time.", "configurationStatus": "legacy-unsafe", "configurationGap": "The browser bundle currently reads Honua API-key and bearer-token variables.", "configClassifications": [ { "name": "VITE_HONUA_ALLOW_BROWSER_BEARER_TOKEN", "exposure": "browser-public", "valueKind": "non-secret" }, { "name": "VITE_HONUA_GEOCODING_API_KEY", "exposure": "browser-public", "valueKind": "credential", "credentialScope": "secret" }, { "name": "VITE_HONUA_GEOCODING_BASE_URL", "exposure": "browser-public", "valueKind": "non-secret" }, { "name": "VITE_HONUA_GEOCODING_BEARER_TOKEN", "exposure": "browser-public", "valueKind": "credential", "credentialScope": "secret" }, { "name": "VITE_HONUA_GEOCODING_COUNTRY_CODES", "exposure": "browser-public", "valueKind": "non-secret" }, { "name": "VITE_HONUA_GEOCODING_INITIAL_QUERY", "exposure": "browser-public", "valueKind": "non-secret" }, { "name": "VITE_HONUA_GEOCODING_LOCATOR_NAME", "exposure": "browser-public", "valueKind": "non-secret" }, { "name": "VITE_HONUA_GEOCODING_MAX_RESULTS", "exposure": "browser-public", "valueKind": "non-secret" }, { "name": "VITE_HONUA_GEOCODING_MAX_SUGGESTIONS", "exposure": "browser-public", "valueKind": "non-secret" } ] }, "evidence": { "fixture": { "mode": "fixture", "status": "executed", "commands": [ "npm run demo:geocoding:mock" ] }, "live": { "mode": "authenticated", "status": "planned", "commands": [] } }, "expectedDegradation": "The UI identifies fixture fallback when the live endpoint is unavailable.", "validationProfile": "browser-recipe", "validation": [ "npm run demo:geocoding:typecheck", "npm run demo:geocoding:build" ] }, { "id": "geoprocessing-job-runner", "title": "Geoprocessing job runner", "summary": "Submits, polls, cancels, and inspects asynchronous geoprocessing jobs.", "sourceKind": "root-example", "track": "recipe", "supportTier": "supported", "lifecycle": { "state": "merge", "reason": "Fold into the analysis journey while retaining this focused recipe.", "targetRelease": "0.2.0-beta.0", "replacement": { "kind": "journey", "id": "cloud-native-analysis" } }, "sourcePath": "examples/geoprocessing-job-runner", "docsPath": "examples/geoprocessing-job-runner/README.md", "capabilities": [ "async-jobs", "cancel", "geoprocessing" ], "capabilityKeys": [ "process.geoprocessing" ], "protocols": [ "geoservices", "ogc-processes" ], "renderers": [ "none" ], "data": { "mode": "hybrid", "authMode": "bearer", "config": [ "VITE_HONUA_PROCESS_SERVICE_TOKEN", "VITE_HONUA_PROCESS_SERVICE_URL" ], "provenance": "Committed job-state fixture or configured process endpoint.", "attribution": "Process-owner attribution from service metadata.", "freshness": "Job receipt and poll observation times.", "configurationStatus": "legacy-unsafe", "configurationGap": "The browser bundle currently reads a process-service token variable.", "configClassifications": [ { "name": "VITE_HONUA_PROCESS_SERVICE_TOKEN", "exposure": "browser-public", "valueKind": "credential", "credentialScope": "secret" }, { "name": "VITE_HONUA_PROCESS_SERVICE_URL", "exposure": "browser-public", "valueKind": "non-secret" } ] }, "evidence": { "fixture": { "mode": "fixture", "status": "executed", "commands": [ "npm run demo:gp-runner:mock" ] }, "live": { "mode": "authenticated", "status": "planned", "commands": [] } }, "expectedDegradation": "Unavailable or unlicensed processes are shown as structured capability gaps.", "validationProfile": "browser-recipe", "validation": [ "npm run demo:gp-runner:typecheck", "npm run demo:gp-runner:build" ] }, { "id": "imagery-cog-quickstart", "title": "Imagery and Terrain journey", "summary": "Searches STAC, renders a bounded direct COG window in MapLibre, compares published imagery, and samples terrain elevation profiles.", "sourceKind": "root-example", "track": "golden", "journeyId": "imagery-terrain", "supportTier": "supported", "lifecycle": { "state": "active", "reason": "Qualified Imagery and Terrain journey with current packed-build, browser, accessibility, console, responsive, screenshot, performance, fixture, and pinned public STAC/COG live receipts." }, "sourcePath": "examples/imagery-cog-quickstart", "docsPath": "examples/imagery-cog-quickstart/README.md", "capabilities": [ "cog", "elevation", "imagery", "profile", "range-requests", "raster", "stac", "terrain" ], "capabilityKeys": [ "raster.cloud-cog-serving", "raster.terrain-rgb", "serve.elevation", "serve.stac" ], "protocols": [ "geoservices", "stac", "terrain-rgb", "wms" ], "renderers": [ "maplibre" ], "data": { "mode": "hybrid", "authMode": "host-mediated", "config": [ "VITE_HONUA_IMAGERY_BASE_URL" ], "provenance": "Committed STAC, bounded COG range/decoded-window, imagery, and terrain fixtures; a configured same-origin Honua service; or the scheduled pinned Element 84 Earth Search Sentinel-2 item.", "attribution": "STAC and elevation provider attribution, license, version, checksum, and ETag remain visible in workflow receipts; the pinned lane records ESA, Sinergise, AWS, and Element 84 attribution from its reviewed contract.", "freshness": "Fixture acquisition/version metadata, configured-service response observation time, or the scheduled pinned-item observation time.", "configurationStatus": "approved", "configClassifications": [ { "name": "VITE_HONUA_IMAGERY_BASE_URL", "exposure": "browser-public", "valueKind": "non-secret" } ] }, "evidence": { "fixture": { "mode": "fixture", "status": "executed", "commands": [ "npm run demo:imagery-cog:mock" ] }, "live": { "mode": "public-live", "status": "executed", "commands": [ "npm run evidence:cog:live" ], "evidencePath": "samples/evidence/imagery-cog-quickstart/live.v1.json", "expiresAt": "2026-09-05T13:39:53.733Z" } }, "expectedDegradation": "Credential-bearing URLs, CORS, missing or oversized range responses, unsupported CRS/format, and nodata return structured outcomes while published imagery remains usable. Public live proof covers classified COG inspection and a bounded decoded window in EPSG:32621; browser-side UTM reprojection and a georeferenced live MapLibre mount remain explicitly unclaimed.", "validationProfile": "golden-browser", "validation": [ "npm run demo:imagery-cog:typecheck", "npm run demo:imagery-cog:build", "npx vitest run test/imagery-cog-quickstart.test.ts", "npx vitest run test/cog-live-evidence.test.ts", "npx vitest run test/cog-session.test.ts", "npx vitest run test/cog-maplibre.test.ts", "npx vitest run test/imagery-terrain-journey.test.ts", "npm run test:playwright:imagery-cog" ] }, { "id": "kepler-analytics", "title": "Kepler operations analytics", "summary": "Replays operations data through kepler.gl with linked filters and KPI evidence.", "sourceKind": "root-example", "track": "lab", "supportTier": "experimental", "lifecycle": { "state": "rework", "reason": "Retain as a renderer recipe and align it with the columnar large-data journey.", "targetRelease": "0.2.0-beta.0" }, "sourcePath": "examples/kepler-analytics", "docsPath": "examples/kepler-analytics/README.md", "capabilities": [ "analytics", "linked-filters", "replay" ], "capabilityKeys": [], "protocols": [ "geojson", "honua" ], "renderers": [ "kepler" ], "data": { "mode": "hybrid", "authMode": "api-key", "config": [ "HONUA_DEMO_API_KEY", "HONUA_DEMO_BASE_URL", "HONUA_DEMO_BEARER_TOKEN", "HONUA_DEMO_COVERAGE_ZONES_LAYER_ID", "HONUA_DEMO_COVERAGE_ZONES_SERVICE_ID", "HONUA_DEMO_ENV_LABEL", "HONUA_DEMO_INCIDENTS_LAYER_ID", "HONUA_DEMO_INCIDENTS_SERVICE_ID", "HONUA_DEMO_UNIT_TRACKS_LAYER_ID", "HONUA_DEMO_UNIT_TRACKS_SERVICE_ID", "VITE_KEPLER_STYLE_URL", "VITE_KEPLER_USE_MAPBOX_DEFAULTS", "VITE_MAPBOX_TOKEN" ], "provenance": "Committed Honua export with refresh metadata.", "attribution": "Synthetic Honua operations fixture.", "freshness": "Fixture metadata records the source retrieval time.", "configurationStatus": "legacy-unsafe", "configurationGap": "The browser bundle reads a public Mapbox token; it is explicitly classified as public, but the current browser policy does not approve credential values.", "configClassifications": [ { "name": "HONUA_DEMO_API_KEY", "exposure": "server-only", "valueKind": "credential", "credentialScope": "secret" }, { "name": "HONUA_DEMO_BASE_URL", "exposure": "server-only", "valueKind": "non-secret" }, { "name": "HONUA_DEMO_BEARER_TOKEN", "exposure": "server-only", "valueKind": "credential", "credentialScope": "secret" }, { "name": "HONUA_DEMO_COVERAGE_ZONES_LAYER_ID", "exposure": "server-only", "valueKind": "non-secret" }, { "name": "HONUA_DEMO_COVERAGE_ZONES_SERVICE_ID", "exposure": "server-only", "valueKind": "non-secret" }, { "name": "HONUA_DEMO_ENV_LABEL", "exposure": "server-only", "valueKind": "non-secret" }, { "name": "HONUA_DEMO_INCIDENTS_LAYER_ID", "exposure": "server-only", "valueKind": "non-secret" }, { "name": "HONUA_DEMO_INCIDENTS_SERVICE_ID", "exposure": "server-only", "valueKind": "non-secret" }, { "name": "HONUA_DEMO_UNIT_TRACKS_LAYER_ID", "exposure": "server-only", "valueKind": "non-secret" }, { "name": "HONUA_DEMO_UNIT_TRACKS_SERVICE_ID", "exposure": "server-only", "valueKind": "non-secret" }, { "name": "VITE_KEPLER_STYLE_URL", "exposure": "browser-public", "valueKind": "non-secret" }, { "name": "VITE_KEPLER_USE_MAPBOX_DEFAULTS", "exposure": "browser-public", "valueKind": "non-secret" }, { "name": "VITE_MAPBOX_TOKEN", "exposure": "browser-public", "valueKind": "credential", "credentialScope": "public-token" } ] }, "evidence": { "fixture": { "mode": "fixture", "status": "executed", "commands": [ "npm run demo:kepler:smoke" ] }, "live": { "mode": "public-live", "status": "planned", "commands": [] } }, "expectedDegradation": "The committed export is labeled replayed rather than live.", "validationProfile": "browser-lab", "validation": [ "npm run demo:kepler:build", "npm run demo:kepler:smoke" ] }, { "id": "maplibre-quickstart", "title": "First Map: endpoint to inspected MapLibre map", "summary": "Pastes a public GeoServices or OGC Features endpoint, then connects, explains, queries, mounts, filters, and inspects one bounded result.", "sourceKind": "root-example", "track": "golden", "journeyId": "first-map", "supportTier": "supported", "lifecycle": { "state": "active", "reason": "Qualified First Map journey with immutable packed-build, browser, accessibility, console, responsive, screenshot, performance, fixture, and anonymous live receipts." }, "sourcePath": "examples/maplibre-quickstart", "docsPath": "examples/maplibre-quickstart/README.md", "capabilities": [ "direct-connect", "discovery", "explain-plan", "linked-views", "map", "provenance", "query" ], "capabilityKeys": [ "discovery.capability-manifest" ], "protocols": [ "geoservices", "ogc-features" ], "renderers": [ "maplibre" ], "data": { "mode": "hybrid", "authMode": "anonymous", "config": [ "VITE_HONUA_QUICKSTART_BASEMAP_STYLE", "VITE_HONUA_QUICKSTART_ENDPOINT", "VITE_HONUA_QUICKSTART_PROTOCOL", "VITE_HONUA_QUICKSTART_RESULT_RECORD_COUNT", "VITE_HONUA_QUICKSTART_WHERE" ], "provenance": "Versioned First Map fixture scenarios or one configured anonymous public endpoint, with protocol and source identity recorded at runtime.", "attribution": "Endpoint-advertised attribution is shown and preserved; unavailable attribution is stated explicitly.", "freshness": "SDK observation time and cache status are shown; unavailable source validity time is stated explicitly.", "configurationStatus": "approved", "configClassifications": [ { "name": "VITE_HONUA_QUICKSTART_BASEMAP_STYLE", "exposure": "browser-public", "valueKind": "non-secret" }, { "name": "VITE_HONUA_QUICKSTART_ENDPOINT", "exposure": "browser-public", "valueKind": "non-secret" }, { "name": "VITE_HONUA_QUICKSTART_PROTOCOL", "exposure": "browser-public", "valueKind": "non-secret" }, { "name": "VITE_HONUA_QUICKSTART_RESULT_RECORD_COUNT", "exposure": "browser-public", "valueKind": "non-secret" }, { "name": "VITE_HONUA_QUICKSTART_WHERE", "exposure": "browser-public", "valueKind": "non-secret" } ] }, "evidence": { "fixture": { "mode": "fixture", "status": "executed", "commands": [ "npm run demo:quickstart:mock" ] }, "live": { "mode": "public-live", "status": "executed", "commands": [ "npm run evidence:first-map:live" ], "evidencePath": "samples/evidence/maplibre-quickstart/live.v1.json", "expiresAt": "2026-09-05T13:37:48.259Z" } }, "expectedDegradation": "Capability misses, plan warnings, and bounded fallback are shown rather than silently returning an empty map.", "validationProfile": "golden-browser", "validation": [ "npm run demo:quickstart:typecheck", "npm run demo:quickstart:build", "npm run test:playwright:quickstart" ] }, { "id": "mcp-gis-assistant", "title": "MCP GIS assistant", "summary": "Demonstrates assistant tool discovery and safe SDK-backed spatial operations.", "sourceKind": "root-example", "track": "lab", "supportTier": "experimental", "lifecycle": { "state": "rework", "reason": "Use the same plan, provenance, approval, and evidence contracts as the agent journey.", "targetRelease": "0.2.0-beta.0" }, "sourcePath": "examples/mcp-gis-assistant", "docsPath": "examples/mcp-gis-assistant/README.md", "capabilities": [ "agent-tools", "mcp", "query" ], "capabilityKeys": [ "ai.mcp-discovery" ], "protocols": [ "honua", "mcp" ], "renderers": [ "maplibre" ], "data": { "mode": "fixture", "authMode": "none", "config": [], "provenance": "Committed MCP response fixture.", "attribution": "Tool results preserve source attribution.", "freshness": "Deterministic fixture replay time.", "configurationStatus": "not-required", "configClassifications": [] }, "evidence": { "fixture": { "mode": "fixture", "status": "executed", "commands": [ "npm run demo:mcp-gis-assistant:build" ] }, "live": { "mode": "demo-live", "status": "planned", "commands": [] } }, "expectedDegradation": "Write tools are unavailable without host policy and explicit approval.", "validationProfile": "browser-lab", "validation": [ "npm run demo:mcp-gis-assistant:typecheck", "npm run demo:mcp-gis-assistant:build" ] }, { "id": "migration-workbench", "title": "ArcGIS migration workbench", "summary": "Scans and transforms ArcGIS application source with auditable compatibility results.", "sourceKind": "root-example", "track": "golden", "journeyId": "arcgis-migration", "supportTier": "supported", "lifecycle": { "state": "active", "reason": "Qualified ArcGIS Migration Workbench journey with immutable packed-build, browser, accessibility, console, responsive, screenshot, performance, fixture, and deterministic-CLI live receipts." }, "sourcePath": "examples/migration-workbench", "docsPath": "docs/migration-honua-maplibre.md", "capabilities": [ "codemod", "compatibility", "migration" ], "capabilityKeys": [], "protocols": [ "geoservices" ], "renderers": [ "maplibre" ], "data": { "mode": "fixture", "authMode": "none", "config": [], "provenance": "Committed ArcGIS source fixtures and migration reports.", "attribution": "Fixture source attribution is preserved in output.", "freshness": "Versioned with the migration corpus.", "configurationStatus": "not-required", "configClassifications": [] }, "evidence": { "fixture": { "mode": "fixture", "status": "executed", "commands": [ "npm run demo:migration-workbench:mock" ] }, "live": { "mode": "demo-live", "status": "executed", "commands": [ "npm run evidence:migration-workbench:live" ], "evidencePath": "samples/evidence/migration-workbench/live.v1.json", "expiresAt": "2026-09-05T13:40:16.879Z" } }, "expectedDegradation": "Unsupported ArcGIS modules are reported as manual work, never silently removed.", "validationProfile": "golden-browser", "validation": [ "npm run demo:migration-workbench:typecheck", "npm run demo:migration-workbench:build", "npm run test:playwright:migration-workbench" ] }, { "id": "nl-map-control", "title": "Natural-language map control", "summary": "A recorded fixture LLM compiles a canned instruction into an inspectable plan; read-only plans auto-execute, mutating plans require a signed agent-safety approval, and every execution emits a receipt beside the live map effects.", "sourceKind": "root-example", "track": "lab", "supportTier": "experimental", "lifecycle": { "state": "active", "reason": "Headline proof of the plan-first NL map-control layer (#500): BYO LLM, approval envelopes, and execution receipts on a live MapLibre map." }, "sourcePath": "examples/nl-map-control", "docsPath": "examples/nl-map-control/README.md", "capabilities": [ "agent-approval", "agent-planning", "agent-tools", "map", "receipts" ], "capabilityKeys": [ "ai.agent-operations", "ai.approval-workflows", "ai.mcp-discovery" ], "protocols": [ "honua" ], "renderers": [ "maplibre" ], "data": { "mode": "fixture", "authMode": "none", "config": [], "provenance": "Committed recorded LLM completions and incident fixtures from test/fixtures/nl-map-control/.", "attribution": "Honua demo fixture attribution is shown in the sample.", "freshness": "Deterministic fixture replay time.", "configurationStatus": "not-required", "configClassifications": [] }, "evidence": { "fixture": { "mode": "fixture", "status": "executed", "commands": [ "npm run demo:nl-map-control:build" ] }, "live": { "mode": "demo-live", "status": "planned", "commands": [] } }, "expectedDegradation": "Viewport and mutation plans refuse to execute without a verified approval envelope and report approval-required; the recorded LLM answers only the canned demo instructions.", "validationProfile": "browser-lab", "validation": [ "npm run demo:nl-map-control:typecheck", "npm run demo:nl-map-control:build" ] }, { "id": "node-backend-quickstart", "title": "Node backend quickstart", "summary": "Uses the protocol-neutral client from a Node service without browser dependencies.", "sourceKind": "root-example", "track": "recipe", "supportTier": "supported", "lifecycle": { "state": "active", "reason": "Preserve the focused server-side installation and lifecycle path." }, "sourcePath": "examples/node-backend-quickstart", "docsPath": "examples/node-backend-quickstart/README.md", "capabilities": [ "node", "query", "server" ], "capabilityKeys": [], "protocols": [ "honua" ], "renderers": [ "none" ], "data": { "mode": "hybrid", "authMode": "api-key", "config": [ "HONUA_API_KEY", "HONUA_BASE_URL", "HONUA_DEFAULT_FEATURE_LIMIT", "HONUA_LAYER_ID", "HONUA_MAX_FEATURE_LIMIT", "HONUA_MOCK_EXPECT_API_KEY", "HONUA_MOCK_EXPECT_BEARER_TOKEN", "HONUA_MOCK_PORT", "HONUA_NODE_BACKEND_HOST", "HONUA_NODE_BACKEND_PORT", "HONUA_OGC_COLLECTION_ID", "HONUA_RETRY_BASE_DELAY_MS", "HONUA_RETRY_MAX_DELAY_MS", "HONUA_RETRY_MAX_RETRIES", "HONUA_SERVICE_ACCOUNT_API_KEY", "HONUA_SERVICE_ACCOUNT_TOKEN", "HONUA_SERVICE_ACCOUNT_TOKEN_TTL_MS", "HONUA_SERVICE_ID", "HONUA_TIMEOUT_MS", "HOST", "PORT" ], "provenance": "Committed mock responses or configured Honua endpoint.", "attribution": "Response provenance is returned by the service.", "freshness": "Fixture replay or live query observation time.", "configurationStatus": "approved", "configClassifications": [ { "name": "HONUA_API_KEY", "exposure": "server-only", "valueKind": "credential", "credentialScope": "secret" }, { "name": "HONUA_BASE_URL", "exposure": "server-only", "valueKind": "non-secret" }, { "name": "HONUA_DEFAULT_FEATURE_LIMIT", "exposure": "server-only", "valueKind": "non-secret" }, { "name": "HONUA_LAYER_ID", "exposure": "server-only", "valueKind": "non-secret" }, { "name": "HONUA_MAX_FEATURE_LIMIT", "exposure": "server-only", "valueKind": "non-secret" }, { "name": "HONUA_MOCK_EXPECT_API_KEY", "exposure": "server-only", "valueKind": "credential", "credentialScope": "secret" }, { "name": "HONUA_MOCK_EXPECT_BEARER_TOKEN", "exposure": "server-only", "valueKind": "credential", "credentialScope": "secret" }, { "name": "HONUA_MOCK_PORT", "exposure": "server-only", "valueKind": "non-secret" }, { "name": "HONUA_NODE_BACKEND_HOST", "exposure": "server-only", "valueKind": "non-secret" }, { "name": "HONUA_NODE_BACKEND_PORT", "exposure": "server-only", "valueKind": "non-secret" }, { "name": "HONUA_OGC_COLLECTION_ID", "exposure": "server-only", "valueKind": "non-secret" }, { "name": "HONUA_RETRY_BASE_DELAY_MS", "exposure": "server-only", "valueKind": "non-secret" }, { "name": "HONUA_RETRY_MAX_DELAY_MS", "exposure": "server-only", "valueKind": "non-secret" }, { "name": "HONUA_RETRY_MAX_RETRIES", "exposure": "server-only", "valueKind": "non-secret" }, { "name": "HONUA_SERVICE_ACCOUNT_API_KEY", "exposure": "server-only", "valueKind": "credential", "credentialScope": "secret" }, { "name": "HONUA_SERVICE_ACCOUNT_TOKEN", "exposure": "server-only", "valueKind": "credential", "credentialScope": "secret" }, { "name": "HONUA_SERVICE_ACCOUNT_TOKEN_TTL_MS", "exposure": "server-only", "valueKind": "non-secret" }, { "name": "HONUA_SERVICE_ID", "exposure": "server-only", "valueKind": "non-secret" }, { "name": "HONUA_TIMEOUT_MS", "exposure": "server-only", "valueKind": "non-secret" }, { "name": "HOST", "exposure": "server-only", "valueKind": "non-secret" }, { "name": "PORT", "exposure": "server-only", "valueKind": "non-secret" } ] }, "evidence": { "fixture": { "mode": "fixture", "status": "executed", "commands": [ "npm run demo:node-backend:smoke" ] }, "live": { "mode": "authenticated", "status": "planned", "commands": [] } }, "expectedDegradation": "The recipe fails explicitly when required server capabilities are absent.", "validationProfile": "headless-recipe", "validation": [ "npm run demo:node-backend:typecheck", "npm run demo:node-backend:smoke" ] }, { "id": "oauth-signin", "title": "OAuth sign-in", "summary": "Demonstrates browser authentication and session lifecycle without embedding credentials.", "sourceKind": "root-example", "track": "recipe", "supportTier": "supported", "lifecycle": { "state": "active", "reason": "Retain as the focused browser authentication recipe." }, "sourcePath": "examples/oauth-signin", "docsPath": "examples/oauth-signin/README.md", "capabilities": [ "authentication", "oauth", "session" ], "capabilityKeys": [ "identity.oidc" ], "protocols": [ "oauth" ], "renderers": [ "none" ], "data": { "mode": "fixture", "authMode": "oauth", "config": [], "provenance": "Self-hosted deterministic OAuth identity-provider fixture.", "attribution": "No spatial data is rendered.", "freshness": "Fixture session issuance and expiry times.", "configurationStatus": "not-required", "configClassifications": [] }, "evidence": { "fixture": { "mode": "fixture", "status": "executed", "commands": [ "npm run demo:oauth-signin:mock" ] }, "live": { "mode": "authenticated", "status": "planned", "commands": [] } }, "expectedDegradation": "Live sign-in is unavailable until the host supplies an OAuth configuration.", "validationProfile": "browser-recipe", "validation": [ "npm run demo:oauth-signin:typecheck", "npm run demo:oauth-signin:build" ] }, { "id": "offline-region-reference", "title": "Network-disabled offline region reference", "summary": "Proves that a persisted IndexedDB region, a durable queued edit, and a bounded host-owned application shell survive reload after browser networking is disabled, then replays that edit exactly once against a loopback fixture transport on reconnect and reports one composed local-first state.", "sourceKind": "docs-example", "track": "fixture", "supportTier": "experimental", "lifecycle": { "state": "active", "reason": "Retain as browser evidence for the disconnected-read, offline edit capture and reconnect replay, and composed local-first state acceptance slices of the experimental offline region contract." }, "sourcePath": "docs/examples/offline-region-reference", "docsPath": "docs/examples/offline-region-reference/README.md", "capabilities": [ "offline", "provenance" ], "protocols": [ "honua" ], "renderers": [ "none" ], "data": { "mode": "fixture", "authMode": "none", "configurationStatus": "not-required", "config": [], "provenance": "One committed integrity-, length-, and version-pinned fixture served from an isolated loopback origin and persisted through the public IndexedDB offline contract; edit replay is bound to a loopback fixture endpoint that mirrors the documented acknowledgement shape and keeps no replica, upload cursor, or conflict store.", "attribution": "Honua deterministic incident fixture.", "freshness": "Explicit online observation time and stale disconnected diagnostic time.", "configClassifications": [] }, "evidence": { "fixture": { "mode": "fixture", "status": "executed", "commands": [ "npx playwright test test/playwright/offline-indexeddb.spec.mjs" ] }, "live": { "mode": "unavailable", "status": "not-applicable", "commands": [] } }, "expectedDegradation": "A missing persisted region renders an explicit offline cache miss and a partial/missing-regions local-first state that a queued edit cannot mask, and a conflicted, mismatched, or retryable acknowledgement leaves durable typed queue state instead of a silent drop; the fixture does not synthesize an empty success and its loopback replay endpoint does not claim replica synchronization or end-to-end exactly-once server semantics.", "validationProfile": "browser-fixture", "validation": [ "npx playwright test test/playwright/offline-indexeddb.spec.mjs" ], "capabilityKeys": [] }, { "id": "overture-geoparquet", "title": "Overture GeoParquet", "summary": "Plans and executes bounded Overture GeoParquet queries with truthful worker, range, memory, and pruning evidence.", "sourceKind": "root-example", "track": "lab", "supportTier": "experimental", "lifecycle": { "state": "active", "reason": "Large-data flagship now shares one bounded semantic workflow across deterministic fixture and pinned AWS lanes." }, "sourcePath": "examples/overture-geoparquet", "docsPath": "examples/overture-geoparquet/README.md", "capabilities": [ "cancellation", "columnar", "geoparquet", "large-data", "progressive-rendering", "range-reads" ], "capabilityKeys": [], "protocols": [ "geoparquet", "s3" ], "renderers": [ "svg" ], "data": { "mode": "hybrid", "authMode": "anonymous", "config": [], "provenance": "Committed deterministic GeoParquet fixture or pinned Overture STAC item 2026-06-17.0/places/place/00000 on public AWS Open Data.", "attribution": "Overture Maps Foundation Open Map Data with per-feature upstream sources preserved by the live schema.", "freshness": "Pinned release, schema, object ETag, last modification, and execution observation time are shown separately.", "configurationStatus": "not-required", "configClassifications": [] }, "evidence": { "fixture": { "mode": "fixture", "status": "executed", "commands": [ "npm run test:playwright:overture" ] }, "live": { "mode": "public-live", "status": "planned", "commands": [ "npm run evidence:overture:live" ] } }, "expectedDegradation": "Unsupported or malformed ranges, expired objects, unsafe plans, worker failures, the 10-second source-probe deadline, and the 30-second engine budget stop explicitly. DuckDB full-HTTP fallback is disabled; scheduled evidence rejects un-ranged GETs and measures browser range bytes, while rows scanned and row groups pruned remain unverified.", "validationProfile": "browser-lab", "validation": [ "npm run demo:overture:typecheck", "npm run demo:overture:build", "npx vitest run test/overture-large-data.test.ts", "npm run test:playwright:overture" ] }, { "id": "planning-permitting-workbench", "title": "Planning and Permitting journey", "summary": "Runs public SDK geocoding, metadata-backed queries, bounded geometry analysis, edit and attachment recovery, and review export against deterministic same-origin services.", "sourceKind": "root-example", "track": "lab", "journeyId": "planning-permitting", "supportTier": "supported", "lifecycle": { "state": "active", "reason": "Maintain the fixture-first public SDK workflow and source/packed browser gates as the planned planning candidate; golden qualification and live evidence remain explicitly unclaimed." }, "sourcePath": "examples/planning-permitting-workbench", "docsPath": "examples/planning-permitting-workbench/README.md", "capabilities": [ "attachments", "editing", "forward-geocode", "geometry", "linked-views", "planning", "provenance", "query" ], "capabilityKeys": [ "editing.featureserver-edits", "geocoding.forward" ], "protocols": [ "geoservices", "honua" ], "renderers": [ "none" ], "data": { "mode": "fixture", "authMode": "none", "config": [], "provenance": "Committed versioned same-origin Maui planning metadata, geocoding, feature, edit, attachment, and deterministic failure fixtures.", "attribution": "Honua synthetic Maui planning data; not a current regulatory determination.", "freshness": "Fixture version and generated-at values are committed with the repository; no live freshness claim is made.", "configurationStatus": "not-required", "configClassifications": [] }, "evidence": { "fixture": { "mode": "fixture", "status": "executed", "commands": [ "npm run demo:planning-workbench:mock" ] }, "live": { "mode": "public-live", "status": "planned", "commands": [ "npm run evidence:planning:live" ] } }, "expectedDegradation": "Metadata or capability discovery failure disables search, analysis, review export, and mutation without a local success fallback; the fixture hazard result is not a regulatory determination.", "validationProfile": "browser-lab", "validation": [ "npm run demo:planning-workbench:typecheck", "npm run demo:planning-workbench:build", "npm run test:playwright:planning-workbench" ] }, { "id": "pmtiles-static", "title": "PMTiles static map", "summary": "Loads a static PMTiles archive without a Honua server.", "sourceKind": "root-example", "track": "recipe", "supportTier": "supported", "lifecycle": { "state": "active", "reason": "Preserve the smallest server-optional vector-tile recipe." }, "sourcePath": "examples/pmtiles-static", "docsPath": "examples/pmtiles-static/README.md", "capabilities": [ "offline", "pmtiles", "vector-tiles" ], "capabilityKeys": [ "serve.vector-tiles" ], "protocols": [ "pmtiles" ], "renderers": [ "maplibre" ], "data": { "mode": "fixture", "authMode": "none", "config": [], "provenance": "Committed fixture-sized PMTiles archive.", "attribution": "Archive attribution must be supplied by the host.", "freshness": "Fixture version committed with the repository.", "configurationStatus": "not-required", "configClassifications": [] }, "evidence": { "fixture": { "mode": "fixture", "status": "executed", "commands": [ "npm run demo:pmtiles-static:mock" ] }, "live": { "mode": "public-live", "status": "planned", "commands": [] } }, "expectedDegradation": "The sample reports missing range-request support instead of fetching an unbounded archive.", "validationProfile": "browser-recipe", "validation": [ "npm run demo:pmtiles-static:typecheck", "npm run demo:pmtiles-static:build" ] }, { "id": "react-quickstart", "title": "React quickstart", "summary": "Focused React provider, hooks, and map-component recipe alongside the framework-neutral First Map journey.", "sourceKind": "root-example", "track": "recipe", "supportTier": "supported", "lifecycle": { "state": "active", "reason": "Keep one focused React integration recipe without duplicating or redesigning First Map." }, "sourcePath": "examples/react-quickstart", "docsPath": "examples/react-quickstart/README.md", "playground": { "projectPath": "playgrounds/react-quickstart", "providers": [ { "id": "stackblitz", "title": "StackBlitz", "url": "https://stackblitz.com/github/honua-io/honua-sdk-js/tree/trunk/playgrounds/react-quickstart" }, { "id": "codesandbox", "title": "CodeSandbox", "url": "https://codesandbox.io/s/github/honua-io/honua-sdk-js/tree/trunk/playgrounds/react-quickstart" } ] }, "capabilities": [ "map", "query", "react" ], "capabilityKeys": [], "protocols": [ "honua" ], "renderers": [ "maplibre" ], "data": { "mode": "hybrid", "authMode": "api-key", "config": [ "VITE_HONUA_REACT_BASE_URL", "VITE_HONUA_REACT_LAYER_ID", "VITE_HONUA_REACT_SERVICE_ID", "VITE_HONUA_REACT_WHERE" ], "provenance": "Committed quickstart fixture or configured Honua service.", "attribution": "Service attribution shown in the map runtime.", "freshness": "Fixture capture metadata or live observation time.", "configurationStatus": "approved", "configClassifications": [ { "name": "VITE_HONUA_REACT_BASE_URL", "exposure": "browser-public", "valueKind": "non-secret" }, { "name": "VITE_HONUA_REACT_LAYER_ID", "exposure": "browser-public", "valueKind": "non-secret" }, { "name": "VITE_HONUA_REACT_SERVICE_ID", "exposure": "browser-public", "valueKind": "non-secret" }, { "name": "VITE_HONUA_REACT_WHERE", "exposure": "browser-public", "valueKind": "non-secret" } ] }, "evidence": { "fixture": { "mode": "fixture", "status": "executed", "commands": [ "npm run demo:react-quickstart:mock" ] }, "live": { "mode": "authenticated", "status": "planned", "commands": [] } }, "expectedDegradation": "The component exposes connection and capability errors through React state.", "validationProfile": "browser-recipe", "validation": [ "npm run demo:react-quickstart:typecheck", "npm run demo:react-quickstart:build" ] }, { "id": "realtime-incident-dashboard", "title": "Realtime incident operations", "summary": "Runs live-first incident command with observable reconciliation and a guarded, resettable edit lab.", "sourceKind": "root-example", "track": "lab", "journeyId": "incident-operations", "supportTier": "supported", "lifecycle": { "state": "active", "reason": "Flagship realtime journey now proves authority, diagnostics, degradation, concurrency, idempotency, and safe reset." }, "sourcePath": "examples/realtime-incident-dashboard", "docsPath": "examples/realtime-incident-dashboard/README.md", "capabilities": [ "idempotency", "optimistic-concurrency", "realtime", "reconciliation", "safe-editing", "sse" ], "capabilityKeys": [ "editing.featureserver-edits", "streaming.feature-subscriptions" ], "protocols": [ "geoservices", "sse" ], "renderers": [ "maplibre" ], "data": { "mode": "hybrid", "authMode": "anonymous", "config": [ "VITE_HONUA_INCIDENT_BASE_URL", "VITE_HONUA_INCIDENT_CAPABILITIES_URL", "VITE_HONUA_INCIDENT_LAYER_ID", "VITE_HONUA_INCIDENT_SOURCE_ID", "VITE_HONUA_INCIDENT_STREAM_URL", "VITE_HONUA_INCIDENT_TRANSPORT" ], "provenance": "Deployed demo stream when advertised; otherwise visibly labeled deterministic replay. Edits are limited to an isolated resettable fixture profile.", "attribution": "Synthetic incident operations data.", "freshness": "Snapshot, observation, and event times plus cursor, sequence, lag, reconnect, deduplication, and reconciliation outcomes.", "configurationStatus": "approved", "configClassifications": [ { "name": "VITE_HONUA_INCIDENT_BASE_URL", "exposure": "browser-public", "valueKind": "non-secret" }, { "name": "VITE_HONUA_INCIDENT_CAPABILITIES_URL", "exposure": "browser-public", "valueKind": "non-secret" }, { "name": "VITE_HONUA_INCIDENT_LAYER_ID", "exposure": "browser-public", "valueKind": "non-secret" }, { "name": "VITE_HONUA_INCIDENT_SOURCE_ID", "exposure": "browser-public", "valueKind": "non-secret" }, { "name": "VITE_HONUA_INCIDENT_STREAM_URL", "exposure": "browser-public", "valueKind": "non-secret" }, { "name": "VITE_HONUA_INCIDENT_TRANSPORT", "exposure": "browser-public", "valueKind": "non-secret" } ] }, "evidence": { "fixture": { "mode": "fixture", "status": "executed", "commands": [ "npm run demo:incident:mock", "npm run test:playwright:incident" ] }, "live": { "mode": "unavailable", "targetMode": "demo-live", "status": "skipped", "commands": [ "npm run bench:live" ], "evidencePath": "examples/realtime-incident-dashboard/evidence/live-skipped.v1.json", "expiresAt": "2026-10-10T02:18:02.730Z" } }, "expectedDegradation": "Unavailable live capability becomes a visibly labeled read-only replay; stale/offline state disables mutation, and live writes fail closed without an isolated resettable profile.", "validationProfile": "browser-lab", "validation": [ "npm run demo:incident:typecheck", "npm run demo:incident:build", "npx vitest run test/realtime-incident-dashboard.test.ts", "npm run test:playwright:incident" ] }, { "id": "runtime-parity-showcase", "title": "Runtime parity showcase", "summary": "Compares supported rendering paths and makes fidelity differences explicit.", "sourceKind": "root-example", "track": "lab", "supportTier": "experimental", "lifecycle": { "state": "replace", "reason": "Replace parity claims with renderer-specific execution and fidelity reports.", "targetRelease": "0.2.0-beta.0", "replacement": { "kind": "journey", "id": "service-explorer" } }, "sourcePath": "examples/runtime-parity-showcase", "docsPath": "examples/runtime-parity-showcase/README.md", "capabilities": [ "fidelity", "renderer-adapters", "runtime" ], "capabilityKeys": [], "protocols": [ "honua" ], "renderers": [ "cesium", "kepler", "maplibre" ], "data": { "mode": "fixture", "authMode": "none", "config": [], "provenance": "Committed renderer comparison fixtures.", "attribution": "Honua synthetic fixtures.", "freshness": "Versioned with the repository.", "configurationStatus": "not-required", "configClassifications": [] }, "evidence": { "fixture": { "mode": "fixture", "status": "executed", "commands": [ "npm run demo:runtime-parity:mock" ] }, "live": { "mode": "unavailable", "status": "not-applicable", "commands": [] } }, "expectedDegradation": "Unsupported renderer operations are reported as fidelity differences.", "validationProfile": "browser-lab", "validation": [ "npm run demo:runtime-parity:typecheck", "npm run demo:runtime-parity:build" ] }, { "id": "service-explorer", "title": "Universal service explorer", "summary": "Turns a service URL into inspected protocol truth, accepted plans, a bounded query, and copyable map code.", "sourceKind": "root-example", "track": "golden", "journeyId": "service-explorer", "supportTier": "supported", "lifecycle": { "state": "active", "reason": "Qualified Universal Service Explorer journey with immutable packed-build, browser, accessibility, console, responsive, screenshot, performance, fixture, and anonymous dual-protocol live receipts." }, "sourcePath": "examples/service-explorer", "docsPath": "examples/service-explorer/README.md", "capabilities": [ "cancellation", "capability-discovery", "explain-plan", "fidelity", "map", "protocols", "provenance", "query" ], "capabilityKeys": [ "discovery.capability-manifest" ], "protocols": [ "geoservices", "odata", "ogc", "stac", "wfs", "wms", "wmts" ], "renderers": [ "maplibre" ], "data": { "mode": "hybrid", "authMode": "anonymous", "config": [ "HONUA_SERVICE_EXPLORER_LIVE_ENABLED" ], "provenance": "Same-origin deterministic GeoServices and OGC fixtures, or a reviewed credential-free dual-protocol public producer when explicitly enabled.", "attribution": "Inspected source attribution remains visible; fixtures are Honua synthetic data and the scheduled defaults credit Esri and pygeoapi.", "freshness": "Fixture replay is deterministic; a future scheduled public envelope records its observation time without changing feature-cache semantics.", "configurationStatus": "approved", "configClassifications": [ { "name": "HONUA_SERVICE_EXPLORER_LIVE_ENABLED", "exposure": "server-only", "valueKind": "non-secret" } ] }, "evidence": { "fixture": { "mode": "fixture", "status": "executed", "commands": [ "npm run demo:service-explorer:mock" ] }, "live": { "mode": "public-live", "status": "executed", "commands": [ "npm run demo:service-explorer:live-evidence" ], "evidencePath": "samples/evidence/service-explorer/live.v1.json", "expiresAt": "2026-09-05T13:41:16.616Z" } }, "expectedDegradation": "Partial discovery and unsupported source actions remain visible with structured state, code, and reason; the sample does not synthesize success.", "validationProfile": "golden-browser", "validation": [ "npm run demo:service-explorer:typecheck", "npm run demo:service-explorer:build", "npx vitest run test/service-explorer-truth-model.test.ts", "npx vitest run test/service-explorer-operation-model.test.ts", "npx vitest run test/service-explorer-live-evidence.test.ts", "npm run test:playwright:service-explorer" ] }, { "id": "shared-renderer-state", "title": "Shared renderer state lab", "summary": "Exercises loop-safe camera, selection, filter, and time synchronization across MapLibre and Cesium.", "sourceKind": "docs-example", "track": "lab", "supportTier": "experimental", "lifecycle": { "state": "active", "reason": "Retain as an integration lab for the renderer-neutral state synchronizer." }, "sourcePath": "docs/examples/shared-renderer-state", "docsPath": "docs/examples/shared-renderer-state/README.md", "capabilities": [ "camera", "filtering", "selection", "temporal" ], "protocols": [ "honua" ], "renderers": [ "cesium", "maplibre" ], "data": { "mode": "fixture", "authMode": "none", "configurationStatus": "not-required", "config": [], "provenance": "Deterministic renderer-neutral state fixture.", "attribution": "Honua synthetic state fixture.", "freshness": "Versioned with the repository.", "configClassifications": [] }, "evidence": { "fixture": { "mode": "fixture", "status": "executed", "commands": [ "npx playwright test test/playwright/shared-renderer-state.spec.mjs" ] }, "live": { "mode": "unavailable", "status": "not-applicable", "commands": [] } }, "expectedDegradation": "Missing optional renderers fail their own lane without changing shared state semantics.", "validationProfile": "browser-lab", "validation": [ "npx playwright test test/playwright/shared-renderer-state.spec.mjs" ], "capabilityKeys": [ "temporal.filtering" ] }, { "id": "sketch-editing", "title": "Interactive sketch editing with terra-draw", "summary": "terra-draw draw modes drive the edit-sketch workflow: undo/redo, snapping, and applyEdits submission.", "sourceKind": "root-example", "track": "recipe", "supportTier": "experimental", "lifecycle": { "state": "active", "reason": "Retain as the focused terra-draw drawing, snapping, undo, and edit-submission recipe; the planning journey owns the end-to-end planning workflow." }, "sourcePath": "examples/sketch-editing", "docsPath": "examples/sketch-editing/README.md", "playground": { "projectPath": "playgrounds/sketch-editing", "providers": [ { "id": "stackblitz", "title": "StackBlitz", "url": "https://stackblitz.com/github/honua-io/honua-sdk-js/tree/trunk/playgrounds/sketch-editing" }, { "id": "codesandbox", "title": "CodeSandbox", "url": "https://codesandbox.io/s/github/honua-io/honua-sdk-js/tree/trunk/playgrounds/sketch-editing" } ] }, "capabilities": [ "editing", "sketch", "snapping" ], "capabilityKeys": [ "editing.featureserver-edits" ], "protocols": [ "geoservices" ], "renderers": [ "maplibre" ], "data": { "mode": "fixture", "authMode": "none", "config": [], "provenance": "Committed deterministic harbor-parcel fixture.", "attribution": "Honua synthetic operations data.", "freshness": "Deterministic fixture replay time.", "configurationStatus": "not-required", "configClassifications": [] }, "evidence": { "fixture": { "mode": "fixture", "status": "executed", "commands": [ "npm run demo:sketch-editing:mock" ] }, "live": { "mode": "public-live", "status": "planned", "commands": [] } }, "expectedDegradation": "Sketch tools report unsupported capabilities when terra-draw is not installed; the SDK works without the optional peer.", "validationProfile": "browser-recipe", "validation": [ "npm run demo:sketch-editing:typecheck", "npm run demo:sketch-editing:build", "npm run test:playwright:sketch-editing" ] }, { "id": "spatial-analytics-workbench", "title": "Spatial analytics workbench", "summary": "Explains and accepts one plan linking AOI, map, table, chart, provenance, and reusable output.", "sourceKind": "root-example", "track": "lab", "journeyId": "cloud-native-analysis", "supportTier": "experimental", "lifecycle": { "state": "rework", "reason": "Join the large-data journey and distinguish fixture estimates from executed plans.", "targetRelease": "0.2.0-beta.0" }, "sourcePath": "examples/spatial-analytics-workbench", "docsPath": "examples/spatial-analytics-workbench/README.md", "capabilities": [ "aggregation", "analysis", "bounded-local", "explain-plan", "linked-views", "provenance" ], "capabilityKeys": [ "analytics.buffer-aggregate" ], "protocols": [ "geoservices", "ogc" ], "renderers": [ "none" ], "data": { "mode": "hybrid", "authMode": "anonymous", "config": [ "HONUA_SPATIAL_ANALYTICS_ATTRIBUTION", "HONUA_SPATIAL_ANALYTICS_BASE_URL", "HONUA_SPATIAL_ANALYTICS_DEPLOYMENT_VERSION", "HONUA_SPATIAL_ANALYTICS_GROUP_FIELD", "HONUA_SPATIAL_ANALYTICS_ID_FIELD", "HONUA_SPATIAL_ANALYTICS_LAYER_ID", "HONUA_SPATIAL_ANALYTICS_PROTOCOL", "HONUA_SPATIAL_ANALYTICS_SCHEMA_VERSION", "HONUA_SPATIAL_ANALYTICS_SERVICE_ID", "HONUA_SPATIAL_ANALYTICS_SOURCE_VERSION", "HONUA_SPATIAL_ANALYTICS_VALUE_FIELD", "HONUA_SPATIAL_ANALYTICS_WHERE", "VITE_HONUA_SPATIAL_ANALYTICS_BASE_URL", "VITE_HONUA_SPATIAL_ANALYTICS_LAYER_ID", "VITE_HONUA_SPATIAL_ANALYTICS_SCHEMA_VERSION", "VITE_HONUA_SPATIAL_ANALYTICS_SERVICE_ID", "VITE_HONUA_SPATIAL_ANALYTICS_SOURCE_VERSION" ], "provenance": "Committed analysis fixtures or a configured public GeoServices source.", "attribution": "Input/output attribution, source/schema versions, observation time, cache decision, and plan fingerprint are retained.", "freshness": "Fixture replay uses a fixed observation; configured live execution records its observation time.", "configurationStatus": "approved", "configClassifications": [ { "name": "HONUA_SPATIAL_ANALYTICS_ATTRIBUTION", "exposure": "server-only", "valueKind": "non-secret" }, { "name": "HONUA_SPATIAL_ANALYTICS_BASE_URL", "exposure": "server-only", "valueKind": "non-secret" }, { "name": "HONUA_SPATIAL_ANALYTICS_DEPLOYMENT_VERSION", "exposure": "server-only", "valueKind": "non-secret" }, { "name": "HONUA_SPATIAL_ANALYTICS_GROUP_FIELD", "exposure": "server-only", "valueKind": "non-secret" }, { "name": "HONUA_SPATIAL_ANALYTICS_ID_FIELD", "exposure": "server-only", "valueKind": "non-secret" }, { "name": "HONUA_SPATIAL_ANALYTICS_LAYER_ID", "exposure": "server-only", "valueKind": "non-secret" }, { "name": "HONUA_SPATIAL_ANALYTICS_PROTOCOL", "exposure": "server-only", "valueKind": "non-secret" }, { "name": "HONUA_SPATIAL_ANALYTICS_SCHEMA_VERSION", "exposure": "server-only", "valueKind": "non-secret" }, { "name": "HONUA_SPATIAL_ANALYTICS_SERVICE_ID", "exposure": "server-only", "valueKind": "non-secret" }, { "name": "HONUA_SPATIAL_ANALYTICS_SOURCE_VERSION", "exposure": "server-only", "valueKind": "non-secret" }, { "name": "HONUA_SPATIAL_ANALYTICS_VALUE_FIELD", "exposure": "server-only", "valueKind": "non-secret" }, { "name": "HONUA_SPATIAL_ANALYTICS_WHERE", "exposure": "server-only", "valueKind": "non-secret" }, { "name": "VITE_HONUA_SPATIAL_ANALYTICS_BASE_URL", "exposure": "browser-public", "valueKind": "non-secret" }, { "name": "VITE_HONUA_SPATIAL_ANALYTICS_LAYER_ID", "exposure": "browser-public", "valueKind": "non-secret" }, { "name": "VITE_HONUA_SPATIAL_ANALYTICS_SCHEMA_VERSION", "exposure": "browser-public", "valueKind": "non-secret" }, { "name": "VITE_HONUA_SPATIAL_ANALYTICS_SERVICE_ID", "exposure": "browser-public", "valueKind": "non-secret" }, { "name": "VITE_HONUA_SPATIAL_ANALYTICS_SOURCE_VERSION", "exposure": "browser-public", "valueKind": "non-secret" } ] }, "evidence": { "fixture": { "mode": "fixture", "status": "executed", "commands": [ "npm run demo:spatial-analytics:build", "npm run demo:spatial-analytics:evidence" ] }, "live": { "mode": "unavailable", "targetMode": "public-live", "status": "skipped", "commands": [ "npm run demo:spatial-analytics:live-evidence" ], "evidencePath": "examples/spatial-analytics-workbench/evidence/live-skipped.v1.json", "expiresAt": "2026-11-01T08:34:51.355Z" } }, "expectedDegradation": "Remote fixtures are labeled replayed, bounded-local execution is capped, unsafe materialization is rejected, and OGC/DuckDB planner execution is a structured #389 follow-on.", "validationProfile": "browser-lab", "validation": [ "npm run demo:spatial-analytics:typecheck", "npm run demo:spatial-analytics:build", "npm run demo:spatial-analytics:evidence", "npm run test:playwright:spatial-analytics" ] }, { "id": "stac-imagery-browser", "title": "STAC imagery browser", "summary": "Discovers STAC collections and previews supported imagery assets.", "sourceKind": "root-example", "track": "recipe", "supportTier": "supported", "lifecycle": { "state": "active", "reason": "Retain as the small credential-free STAC discovery recipe; the imagery journey owns full range, comparison, elevation, and terrain qualification." }, "sourcePath": "examples/stac-imagery-browser", "docsPath": "examples/stac-imagery-browser/README.md", "playground": { "projectPath": "playgrounds/stac-imagery-browser", "providers": [ { "id": "stackblitz", "title": "StackBlitz", "url": "https://stackblitz.com/github/honua-io/honua-sdk-js/tree/trunk/playgrounds/stac-imagery-browser" }, { "id": "codesandbox", "title": "CodeSandbox", "url": "https://codesandbox.io/s/github/honua-io/honua-sdk-js/tree/trunk/playgrounds/stac-imagery-browser" } ] }, "capabilities": [ "cog", "imagery", "stac" ], "capabilityKeys": [ "raster.cloud-cog-serving", "serve.stac" ], "protocols": [ "stac" ], "renderers": [ "maplibre" ], "data": { "mode": "fixture", "authMode": "none", "config": [], "provenance": "Committed deterministic STAC catalog.", "attribution": "Asset-provider attribution from STAC metadata.", "freshness": "Fixture item datetime and catalog version.", "configurationStatus": "not-required", "configClassifications": [] }, "evidence": { "fixture": { "mode": "fixture", "status": "executed", "commands": [ "npm run demo:stac-browser:build" ] }, "live": { "mode": "public-live", "status": "planned", "commands": [] } }, "expectedDegradation": "Unsupported asset types retain metadata but disable rendering with a reason.", "validationProfile": "browser-recipe", "validation": [ "npm run demo:stac-browser:typecheck", "npm run demo:stac-browser:build" ] }, { "id": "storytelling-25d-map", "title": "2.5D storytelling map", "summary": "Combines terrain, extrusion, OGC overlays, and route playback in a guided story.", "sourceKind": "root-example", "track": "lab", "supportTier": "supported", "lifecycle": { "state": "merge", "reason": "Use its strongest interactions inside the imagery and 3D journey.", "targetRelease": "0.2.0-beta.0", "replacement": { "kind": "journey", "id": "imagery-terrain" } }, "sourcePath": "examples/storytelling-25d-map", "docsPath": "examples/storytelling-25d-map/README.md", "capabilities": [ "storytelling", "terrain", "three-dimensional" ], "capabilityKeys": [ "raster.terrain-rgb", "serve.3d-tiles-scene" ], "protocols": [ "honua", "ogc-features" ], "renderers": [ "maplibre" ], "data": { "mode": "hybrid", "authMode": "api-key", "config": [ "VITE_HONUA_25D_API_KEY", "VITE_HONUA_25D_ASSETS_COLLECTION", "VITE_HONUA_25D_BASEMAP_STYLE", "VITE_HONUA_25D_BASE_URL", "VITE_HONUA_25D_ROUTE_COLLECTION", "VITE_HONUA_25D_STOPS_COLLECTION" ], "provenance": "Committed Oahu story fixtures or configured Honua services.", "attribution": "Basemap, terrain, and thematic source attribution is displayed.", "freshness": "Fixture capture or live layer observation time.", "configurationStatus": "legacy-unsafe", "configurationGap": "The browser bundle currently reads a Honua API-key variable.", "configClassifications": [ { "name": "VITE_HONUA_25D_API_KEY", "exposure": "browser-public", "valueKind": "credential", "credentialScope": "secret" }, { "name": "VITE_HONUA_25D_ASSETS_COLLECTION", "exposure": "browser-public", "valueKind": "non-secret" }, { "name": "VITE_HONUA_25D_BASEMAP_STYLE", "exposure": "browser-public", "valueKind": "non-secret" }, { "name": "VITE_HONUA_25D_BASE_URL", "exposure": "browser-public", "valueKind": "non-secret" }, { "name": "VITE_HONUA_25D_ROUTE_COLLECTION", "exposure": "browser-public", "valueKind": "non-secret" }, { "name": "VITE_HONUA_25D_STOPS_COLLECTION", "exposure": "browser-public", "valueKind": "non-secret" } ] }, "evidence": { "fixture": { "mode": "fixture", "status": "executed", "commands": [ "npm run demo:25d:mock" ] }, "live": { "mode": "authenticated", "status": "planned", "commands": [] } }, "expectedDegradation": "Terrain and live overlays fail independently with structured status.", "validationProfile": "browser-lab", "validation": [ "npm run demo:25d:typecheck", "npm run demo:25d:build" ] }, { "id": "temporal-playback", "title": "Temporal playback", "summary": "Animates a month of seeded synthetic seismic events with createTemporalPlayback, styled by a first-class classBreaksRenderer whose legend derives from renderer.legendItems().", "sourceKind": "root-example", "track": "recipe", "supportTier": "experimental", "lifecycle": { "state": "active", "reason": "Canonical demo for first-class renderer objects + temporal playback (#497): renderer-driven styling, legend contracts, and filter-composed time windows." }, "sourcePath": "examples/temporal-playback", "docsPath": "examples/temporal-playback/README.md", "playground": { "projectPath": "playgrounds/temporal-playback", "providers": [ { "id": "stackblitz", "title": "StackBlitz", "url": "https://stackblitz.com/github/honua-io/honua-sdk-js/tree/trunk/playgrounds/temporal-playback" }, { "id": "codesandbox", "title": "CodeSandbox", "url": "https://codesandbox.io/s/github/honua-io/honua-sdk-js/tree/trunk/playgrounds/temporal-playback" } ] }, "capabilities": [ "map", "realtime", "renderer-adapters" ], "capabilityKeys": [ "streaming.feature-subscriptions" ], "protocols": [ "geojson" ], "renderers": [ "maplibre" ], "data": { "mode": "fixture", "authMode": "none", "config": [], "provenance": "Synthetic seismic events generated in the browser from a seeded PRNG; no network access.", "attribution": "Honua synthetic demo data.", "freshness": "Deterministic seeded generation per load.", "configurationStatus": "not-required", "configClassifications": [] }, "evidence": { "fixture": { "mode": "fixture", "status": "executed", "commands": [ "npm run demo:temporal-playback:build" ] }, "live": { "mode": "unavailable", "status": "not-applicable", "commands": [] } }, "expectedDegradation": "Playback filters compose with bind-time layer filters; when MapLibre is unavailable the renderer objects still serialize and expose legend metadata headlessly.", "validationProfile": "browser-recipe", "validation": [ "npm run demo:temporal-playback:typecheck", "npm run demo:temporal-playback:build" ] }, { "id": "terrain-rgb-elevation", "title": "Terrain RGB elevation", "summary": "Reads Terrain-RGB tiles for point elevation and route profiles.", "sourceKind": "root-example", "track": "recipe", "supportTier": "supported", "lifecycle": { "state": "merge", "reason": "Combine point/profile proof with the imagery and 3D flagship.", "targetRelease": "0.2.0-beta.0", "replacement": { "kind": "journey", "id": "imagery-terrain" } }, "sourcePath": "examples/terrain-rgb-elevation", "docsPath": "examples/terrain-rgb-elevation/README.md", "capabilities": [ "elevation", "profile", "terrain" ], "capabilityKeys": [ "raster.terrain-rgb", "serve.elevation" ], "protocols": [ "terrain-rgb" ], "renderers": [ "maplibre" ], "data": { "mode": "hybrid", "authMode": "api-key", "config": [ "VITE_HONUA_ALLOW_BROWSER_BEARER_TOKEN", "VITE_HONUA_TERRAIN_API_KEY", "VITE_HONUA_TERRAIN_BASE_URL", "VITE_HONUA_TERRAIN_BEARER_TOKEN", "VITE_HONUA_TERRAIN_SERVICE_ID" ], "provenance": "Committed Oahu DEM fixture or configured terrain service.", "attribution": "Elevation-source attribution displayed with results.", "freshness": "Fixture asset version or live response time.", "configurationStatus": "legacy-unsafe", "configurationGap": "The browser bundle currently reads Honua API-key and bearer-token variables.", "configClassifications": [ { "name": "VITE_HONUA_ALLOW_BROWSER_BEARER_TOKEN", "exposure": "browser-public", "valueKind": "non-secret" }, { "name": "VITE_HONUA_TERRAIN_API_KEY", "exposure": "browser-public", "valueKind": "credential", "credentialScope": "secret" }, { "name": "VITE_HONUA_TERRAIN_BASE_URL", "exposure": "browser-public", "valueKind": "non-secret" }, { "name": "VITE_HONUA_TERRAIN_BEARER_TOKEN", "exposure": "browser-public", "valueKind": "credential", "credentialScope": "secret" }, { "name": "VITE_HONUA_TERRAIN_SERVICE_ID", "exposure": "browser-public", "valueKind": "non-secret" } ] }, "evidence": { "fixture": { "mode": "fixture", "status": "executed", "commands": [ "npm run demo:terrain-elevation:mock" ] }, "live": { "mode": "authenticated", "status": "planned", "commands": [] } }, "expectedDegradation": "Profile and map terrain expose independent capability failures.", "validationProfile": "browser-recipe", "validation": [ "npm run demo:terrain-elevation:typecheck", "npm run demo:terrain-elevation:build" ] }, { "id": "unified-ops-workspace", "title": "Unified operations workspace", "summary": "Composes incident command, analysis, and shared workspace state.", "sourceKind": "root-example", "track": "lab", "supportTier": "deprecated", "lifecycle": { "state": "retire", "reason": "Application-shell ownership moves to app-platform; preserve the realtime SDK journey separately.", "targetRelease": "0.2.0-beta.0", "replacement": { "kind": "journey", "id": "incident-operations" } }, "sourcePath": "examples/unified-ops-workspace", "docsPath": "examples/unified-ops-workspace/README.md", "capabilities": [ "analysis", "realtime", "workspace" ], "capabilityKeys": [ "streaming.feature-subscriptions" ], "protocols": [ "honua", "sse" ], "renderers": [ "maplibre" ], "data": { "mode": "fixture", "authMode": "none", "config": [], "provenance": "Committed operations workspace fixture.", "attribution": "Synthetic Honua operations data.", "freshness": "Deterministic snapshot and delta replay.", "configurationStatus": "not-required", "configClassifications": [] }, "evidence": { "fixture": { "mode": "fixture", "status": "executed", "commands": [ "npm run demo:unified-ops:mock" ] }, "live": { "mode": "unavailable", "status": "not-applicable", "commands": [] } }, "expectedDegradation": "Deprecated app-shell APIs remain available only through their transition window.", "validationProfile": "browser-lab", "validation": [ "npm run demo:unified-ops:typecheck", "npm run demo:unified-ops:build" ] }, { "id": "web-components-basic", "title": "Web components basic", "summary": "Demonstrates the SDK custom-element controls against a map.", "sourceKind": "root-example", "track": "lab", "supportTier": "deprecated", "lifecycle": { "state": "retire", "reason": "Controls move with app-platform rather than remaining in the core SDK gallery.", "targetRelease": "0.2.0-beta.0", "replacement": { "kind": "external", "id": "honua-app-platform" } }, "sourcePath": "examples/web-components-basic", "docsPath": "examples/web-components-basic/README.md", "capabilities": [ "controls", "custom-elements", "map" ], "capabilityKeys": [], "protocols": [ "honua" ], "renderers": [ "maplibre" ], "data": { "mode": "fixture", "authMode": "none", "config": [], "provenance": "Committed control-gallery fixture.", "attribution": "Honua fixture data.", "freshness": "Versioned with the repository.", "configurationStatus": "not-required", "configClassifications": [] }, "evidence": { "fixture": { "mode": "fixture", "status": "executed", "commands": [ "npm run demo:web-components:mock" ] }, "live": { "mode": "unavailable", "status": "not-applicable", "commands": [] } }, "expectedDegradation": "Deprecated controls are linked to their app-platform replacements.", "validationProfile": "browser-lab", "validation": [ "npm run demo:web-components:typecheck", "npm run demo:web-components:build" ] } ], "siteMappings": [ { "id": "analyst-workbench", "route": "demo-analyst-workbench.html", "ownership": "sdk-projection", "sampleId": "spatial-analytics-workbench" }, { "id": "codemod", "route": "sample-codemod.html", "ownership": "sdk-projection", "sampleId": "migration-workbench" }, { "id": "control-legend", "route": "sample-control-legend.html", "ownership": "site-exception", "exceptionReason": "Site-owned focused presentation route until app-platform owns a replacement executable.", "title": "Legend control", "summary": "Presents one control extracted from the site controls gallery.", "capabilities": [ "legend", "web-components" ], "track": "lab", "supportTier": "deprecated" }, { "id": "control-search", "route": "sample-control-search.html", "ownership": "site-exception", "exceptionReason": "Site-owned focused presentation route until app-platform owns a replacement executable.", "title": "Search control", "summary": "Presents one control extracted from the site controls gallery.", "capabilities": [ "search", "web-components" ], "track": "lab", "supportTier": "deprecated" }, { "id": "controls-kit", "route": "demo-sdk-controls.html", "ownership": "sdk-projection", "sampleId": "web-components-basic" }, { "id": "editing", "route": "demo-editing.html", "ownership": "sdk-projection", "sampleId": "planning-permitting-workbench" }, { "id": "esri-leaflet", "route": "demo-esri-leaflet.html", "ownership": "sdk-projection", "sampleId": "arcgis-source-app" }, { "id": "expr-builder", "route": "sample-expr-builder.html", "ownership": "sdk-projection", "sampleId": "maplibre-quickstart" }, { "id": "geocoding", "route": "sample-geocoding.html", "ownership": "sdk-projection", "sampleId": "geocoding-quickstart" }, { "id": "gp-runner", "route": "demo-geoprocessing.html", "ownership": "sdk-projection", "sampleId": "geoprocessing-job-runner" }, { "id": "hello-webmap", "route": "sample-hello-webmap.html", "ownership": "sdk-projection", "sampleId": "app-bootstrap-basic" }, { "id": "imagery-terrain", "route": "demo-imagery-terrain.html", "ownership": "sdk-projection", "sampleId": "imagery-cog-quickstart" }, { "id": "maui-3d", "route": "demo-maui-3d.html", "ownership": "sdk-projection", "sampleId": "imagery-cog-quickstart" }, { "id": "maui-explorer", "route": "demo.html", "ownership": "sdk-projection", "sampleId": "maplibre-quickstart" }, { "id": "planning-permitting", "route": "demo-planning-permitting.html", "ownership": "sdk-projection", "sampleId": "planning-permitting-workbench" }, { "id": "public-safety", "route": "demo-public-safety.html", "ownership": "sdk-projection", "sampleId": "realtime-incident-dashboard" }, { "id": "quickstart-map", "route": "demo.html", "ownership": "sdk-projection", "sampleId": "maplibre-quickstart" }, { "id": "service-explorer", "route": "sample-service-explorer.html", "ownership": "sdk-projection", "sampleId": "service-explorer" }, { "id": "spatial-analytics", "route": "sample-spatial-analytics.html", "ownership": "sdk-projection", "sampleId": "spatial-analytics-workbench" }, { "id": "two-protocols", "route": "demo-two-protocols.html", "ownership": "sdk-projection", "sampleId": "service-explorer" }, { "id": "wms-overlay", "route": "sample-raster-overlay.html", "ownership": "sdk-projection", "sampleId": "imagery-cog-quickstart" } ] }