{"schemaVersion":"mappls.capability-qualification.v1","id":"routes-navigation--cordova--qualification","matrixCellId":"routes-navigation--cordova","product":{"slug":"routes-navigation","name":"Routes & Navigation","summary":"Routes, matrices, optimization, map matching, predictive ETAs, and turn-by-turn navigation.","category":"Mobility","accent":"#ff7a45"},"platform":{"slug":"cordova","name":"Cordova","headline":"Maintain hybrid location experiences with explicit native ownership and a migration path."},"status":"not-listed","stateModel":"hybrid","integrationLane":"native-client","decision":{"availability":"not-listed","evidenceStatus":"not-listed","exactEvidence":[],"supportingEvidence":[{"kind":"quickstart","fidelity":"platform-adjacent","slug":"cordova-maintenance","title":"Stabilize a Cordova map before migration","href":"/quickstart/cordova-maintenance"},{"kind":"starter-kit","fidelity":"platform-adjacent","slug":"cordova-maintenance-starter","title":"Cordova stabilization starter","href":"/starter-kits/cordova-maintenance-starter"},{"kind":"sample-app","fidelity":"product-adjacent","slug":"store-locator","title":"Store Locator","href":"/samples/store-locator"},{"kind":"sample-app","fidelity":"product-adjacent","slug":"delivery-control-tower","title":"Delivery Control Tower","href":"/samples/delivery-control-tower"},{"kind":"sample-app","fidelity":"product-adjacent","slug":"grid-restoration-desk","title":"Grid Restoration Desk","href":"/samples/grid-restoration-desk"},{"kind":"sample-app","fidelity":"product-adjacent","slug":"care-transfer-desk","title":"Care Transfer Desk","href":"/samples/care-transfer-desk"},{"kind":"sample-app","fidelity":"product-adjacent","slug":"field-service","title":"Field Service Console","href":"/samples/field-service"},{"kind":"sample-app","fidelity":"product-adjacent","slug":"trip-planner","title":"Weekend Trip Planner","href":"/samples/trip-planner"},{"kind":"sample-app","fidelity":"product-adjacent","slug":"incident-dispatch","title":"Incident Dispatch","href":"/samples/incident-dispatch"},{"kind":"sample-app","fidelity":"product-adjacent","slug":"spatial-agent","title":"Spatial Operations Agent","href":"/samples/spatial-agent"},{"kind":"sample-app","fidelity":"product-adjacent","slug":"a2a-solution-studio","title":"A2A Solution Studio","href":"/samples/a2a-solution-studio"},{"kind":"sample-app","fidelity":"product-adjacent","slug":"deep-link-journey-host","title":"Deep-link & Native UI Journey Host","href":"/samples/deep-link-journey-host"},{"kind":"sample-app","fidelity":"product-adjacent","slug":"offline-release-control","title":"Offline Release Control","href":"/samples/offline-release-control"},{"kind":"journey","fidelity":"product-adjacent","slug":"emergency-incident-response","title":"Coordinated incident response","href":"/journeys/emergency-incident-response"},{"kind":"journey","fidelity":"product-adjacent","slug":"navigation-session","title":"Recoverable navigation session","href":"/journeys/navigation-session"},{"kind":"journey","fidelity":"product-adjacent","slug":"durable-weekend-itinerary","title":"Durable multi-stop itinerary","href":"/journeys/durable-weekend-itinerary"},{"kind":"journey","fidelity":"product-adjacent","slug":"ios-direction-planning-handoff","title":"iOS direction planning and navigation handoff","href":"/journeys/ios-direction-planning-handoff"}],"boundary":"This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."},"authenticationCandidates":[],"identityLock":["Product and platform decision ID","Account and environment reference","Region and data-residency decision","Package or bundle identity and signing owner","SDK/wrapper version plus build-tool matrix","Permission, lifecycle, device, and release-artifact identity","Source/distribution fingerprint and release owner","Quota, support, incident, rollback, and retirement owners"],"scenarios":[{"id":"clean-build","title":"Clean build and identity lock","purpose":"Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.","expectedEvidence":"Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.","recovery":"Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."},{"id":"fixture-success","title":"Deterministic fixture success","purpose":"Exercise the application adapter without credentials or provider traffic.","expectedEvidence":"The fixture produces the documented application contract and retains source identity plus state ownership.","recovery":"Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."},{"id":"authentication-denied","title":"Missing, denied, expired, and revoked access","purpose":"Prove least-privilege failure without logging, reflecting, or weakening credential controls.","expectedEvidence":"Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.","recovery":"Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."},{"id":"quota-unavailable","title":"Quota, timeout, offline, and service unavailability","purpose":"Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.","expectedEvidence":"Retry-After is honored where present; uncertain state changes never become blind retries.","recovery":"Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."},{"id":"upgrade-rollback","title":"Upgrade, downgrade, and rollback","purpose":"Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.","expectedEvidence":"Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.","recovery":"Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."},{"id":"idempotent-replay","title":"Idempotent command replay","purpose":"Repeat one stable command identity after a committed or uncertain result.","expectedEvidence":"The aggregate version and application event identity do not duplicate.","recovery":"Reconcile by stable business and provider identity before any new command."},{"id":"stale-version","title":"Stale version and concurrent actor","purpose":"Prevent an older actor or callback from overwriting newer durable truth.","expectedEvidence":"The stale transition is rejected without state mutation or event emission.","recovery":"Reload the current aggregate, re-evaluate policy, and require a new attributable decision."},{"id":"unknown-outcome","title":"Unknown provider outcome","purpose":"Separate timeout from failure and preserve a recoverable pending state.","expectedEvidence":"The application records the attempt, reconciles provider truth, and completes or retries without duplication.","recovery":"Do not infer success or failure; reconcile using the exact issued operation and durable identity."},{"id":"restart-recovery","title":"Restart and delayed evidence","purpose":"Recover application-owned state after process restart and reject late or superseded callbacks.","expectedEvidence":"The journey resumes from durable records and preserves generation, actor, and event ordering.","recovery":"Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."}],"phases":[{"id":"select-authority","title":"Lock source and product authority","owner":"Product owner + application technical owner","state":"actionable","objective":"Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.","activities":["Review exact evidence separately from adjacent learning material.","Record every unresolved package, endpoint, callback, entitlement, and version question.","Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."],"exitEvidence":["Immutable product-platform decision","Exact source/distribution identities and fingerprints","Named product, security, application, and release owners"],"blockedBy":["The canonical product catalog does not list this platform.","A product owner must establish availability before implementation qualification."]},{"id":"lock-runtime","title":"Lock runtime and authentication","owner":"Application owner + security","state":"blocked","objective":"Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.","activities":["Record the runtime identity fields for this integration lane.","Choose one issued authentication path and document forbidden placement.","Define non-production restrictions, rotation, redaction, and incident ownership."],"exitEvidence":["Runtime compatibility decision","Credential class and restriction record","Secret/public-value placement review"],"blockedBy":["The canonical product catalog does not list this platform.","A product owner must establish availability before implementation qualification."]},{"id":"prove-fixture","title":"Prove the application contract offline","owner":"Application team","state":"blocked","objective":"Exercise a deterministic adapter and every application-owned invariant before provider access.","activities":["Run the clean-build and fixture-success scenarios.","Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.","Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."],"exitEvidence":["Fixture results tied to the source lock","Application contract/schema","Failure and rollback evidence"],"blockedBy":["The canonical product catalog does not list this platform.","A product owner must establish availability before implementation qualification."]},{"id":"qualify-nonproduction","title":"Qualify issued non-production access","owner":"Product owner + application team","state":"blocked","objective":"Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.","activities":["Confirm account, entitlement, host, region, quota, and exact operation/distribution.","Capture credential-free conformance results and safe request identities.","Compare live shape and failure classification to the locked application contract."],"exitEvidence":["Signed or attributable product-owner decision","Credential-free conformance report","Account/region/quota/entitlement reference","Observed compatibility and divergence record"],"blockedBy":["The canonical product catalog does not list this platform.","A product owner must establish availability before implementation qualification.","Issued non-production account and approved provider contract are external requirements."]},{"id":"exercise-journey","title":"Exercise lifecycle and hostile paths","owner":"Application team + operations","state":"blocked","objective":"Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.","activities":["Execute every published qualification scenario.","For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.","Verify telemetry, quota alarms, support evidence, cleanup, and rollback."],"exitEvidence":["Scenario-by-scenario result ledger","State/reconciliation evidence where applicable","Alert, runbook, support, cleanup, and rollback evidence"],"blockedBy":["The canonical product catalog does not list this platform.","A product owner must establish availability before implementation qualification.","Operational telemetry and provider-degradation exercises require an approved environment."]},{"id":"approve-release","title":"Independent release and deployment","owner":"Independent security + operations + product release owners","state":"blocked","objective":"Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.","activities":["Attach exact artifacts to the governed release workflow.","Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.","Use progressive deployment and independently reconcile production health."],"exitEvidence":["Immutable release artifact and evidence digests","Independent approvals","Progressive deployment, rollback, and post-release reconciliation evidence"],"blockedBy":["The canonical product catalog does not list this platform.","A product owner must establish availability before implementation qualification.","This catalog never grants entitlement, support, production release, or deployment authority."]}],"releaseEvidence":["Exact source, package/distribution, contract generation, and runtime identity","Issued account, entitlement, region, quota, and credential-class reference without secret values","Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results","Security, privacy, accessibility, operational, legal/content, and product-owner decisions","Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"],"handoff":{"websitePath":"/platforms/qualify?product=routes-navigation&platform=cordova","apiPath":"/api/capability-qualifications?product=routes-navigation&platform=cordova","downloadPath":"/api/capability-qualifications?product=routes-navigation&platform=cordova&download=1","matrixPath":"/platforms/matrix?product=routes-navigation&platform=cordova","productPath":"/docs/routes-navigation","platformPath":"/platforms/cordova"},"safety":{"providerCalls":0,"credentialsAccepted":false,"providerPayloadsAccepted":false,"writesExposed":false,"productionApprovalGranted":false}}