{
  "schema_version": "wheelie_public_launch_hostname_matrix/v1",
  "updated_at": "2026-06-01",
  "source": "public launch hostname audit plus canonical hostname contract and control-plane IA readback",
  "canonical_ga_urls": {
    "wheelie_product": "https://wheelie.dev/",
    "continua_company": "https://continua.ai/"
  },
  "routes": [
    {
      "host": "wheelie.dev",
      "route": "/",
      "owner": "website/public via wheelie_public_release",
      "deploy_path": "gs://wheelie-dev-public-distribution/index.html",
      "posture": "canonical_public_marketing",
      "auth_class": "public_unauthenticated",
      "expected": {
        "title": "Wheelie private preview",
        "canonical": "https://wheelie.dev/",
        "robots": "index,follow",
        "primary_cta": "https://wheelie.dev/waitlist"
      },
      "validation_readback": [
        "curl -fsSLI https://wheelie.dev/",
        "Playwright desktop+mobile: h1=Coding agents that keep going.; first CTA=Request access; page is not docs index"
      ]
    },
    {
      "host": "www.wheelie.dev",
      "route": "/",
      "owner": "cloud_config/infra/wheelie_dns.tf",
      "deploy_path": "Google Cloud HTTPS load balancer redirect host rule",
      "posture": "redirect_to_canonical",
      "auth_class": "public_unauthenticated",
      "expected": {
        "redirect": "https://wheelie.dev/",
        "status": 301
      },
      "validation_readback": [
        "dig +short A www.wheelie.dev",
        "curl -sSI -L https://www.wheelie.dev/"
      ]
    },
    {
      "host": "docs.wheelie.dev",
      "route": "/",
      "owner": "cloud_config/infra/wheelie_dns.tf",
      "deploy_path": "Google Cloud HTTPS load balancer redirect host rule",
      "posture": "redirect_to_docs_index",
      "auth_class": "public_unauthenticated",
      "expected": {
        "redirect": "https://wheelie.dev/docs/wheelie/index.html",
        "status": 301
      },
      "validation_readback": [
        "dig +short A docs.wheelie.dev",
        "curl -sSI -L https://docs.wheelie.dev/"
      ]
    },
    {
      "host": "wheelie.dev",
      "route": "/waitlist",
      "owner": "website/public via wheelie_public_release",
      "deploy_path": "gs://wheelie-dev-public-distribution/waitlist",
      "posture": "public_waitlist",
      "auth_class": "public_unauthenticated_rate_limited",
      "expected": {
        "title": "Wheelie capacity waitlist",
        "canonical": "https://wheelie.dev/waitlist",
        "robots": "index,follow",
        "form_endpoint_support_state": "mediated_public_waitlist_endpoint"
      },
      "validation_readback": [
        "curl -fsSLI https://wheelie.dev/waitlist",
        "Playwright desktop+mobile: email form visible; invalid/empty email does not submit; mocked valid submit emits redacted telemetry"
      ]
    },
    {
      "host": "wheelie.dev",
      "route": "/docs/wheelie/",
      "owner": "website/public docs via wheelie_public_release",
      "deploy_path": "gs://wheelie-dev-public-distribution/docs/wheelie/index.html",
      "posture": "docs_route_only",
      "auth_class": "public_unauthenticated",
      "expected": {
        "redirect": "https://wheelie.dev/docs/wheelie/index.html",
        "title": "Wheelie private-preview docs",
        "robots": "index,follow"
      },
      "validation_readback": [
        "curl -fsSLI https://wheelie.dev/docs/wheelie/",
        "curl -fsSL https://wheelie.dev/docs/wheelie/quickstart.md"
      ]
    },
    {
      "host": "continua.ai",
      "route": "/",
      "owner": "website React app via Firebase Hosting continua-marketing-website",
      "deploy_path": "website/src/main.tsx + website/src/NewApp.tsx",
      "posture": "canonical_company_marketing",
      "auth_class": "public_unauthenticated",
      "expected": {
        "title": "Continua \u2014 Wheelie private preview",
        "canonical": "https://continua.ai",
        "robots": "index,follow",
        "wheelie_cta": "https://wheelie.dev/"
      },
      "validation_readback": [
        "curl -fsSLI https://continua.ai/",
        "Playwright desktop+mobile: Continua h1 visible; Wheelie CTA points to wheelie.dev"
      ]
    },
    {
      "host": "www.continua.ai",
      "route": "/",
      "owner": "cloud_config/infra/dns_apex_zone.tf + Firebase Hosting custom domain",
      "deploy_path": "continua-marketing-website.web.app",
      "posture": "redirect_to_canonical",
      "auth_class": "public_unauthenticated",
      "expected": {
        "redirect": "https://continua.ai/",
        "status": 301
      },
      "validation_readback": [
        "dig +short www.continua.ai",
        "curl -sSI -L https://www.continua.ai/"
      ]
    },
    {
      "host": "continua.ai",
      "route": "/wheelie",
      "owner": "website/firebase.json",
      "deploy_path": "Firebase Hosting redirect",
      "posture": "redirect_to_wheelie_product",
      "auth_class": "public_unauthenticated",
      "expected": {
        "redirect": "https://wheelie.dev/",
        "status": 301
      },
      "validation_readback": [
        "curl -sSI -L https://continua.ai/wheelie"
      ]
    },
    {
      "host": "get.wheelie.dev",
      "route": "/",
      "owner": "cloud_config/infra/wheelie_dns.tf + wheelie public release",
      "deploy_path": "gs://wheelie-dev-public-distribution/install.sh",
      "posture": "installer_handoff_not_marketing",
      "auth_class": "public_unauthenticated",
      "expected": {
        "redirect": "https://get.wheelie.dev/install.sh",
        "status": 301
      },
      "validation_readback": [
        "curl -fsSLI https://get.wheelie.dev/"
      ]
    },
    {
      "host": "source.wheelie.dev",
      "route": "/",
      "owner": "cloud_config/infra/wheelie_dns.tf + Gravity runtime source projection",
      "deploy_path": "Cloud Run gravity service behind wheelie-source-runtime-backend",
      "posture": "source_readback_not_marketing",
      "auth_class": "route_dependent_public_readback_or_capability",
      "expected": {
        "support_state": "public_read_route_live_runtime_reconcile_pending"
      },
      "validation_readback": [
        "curl -fsSLI https://source.wheelie.dev/"
      ]
    },
    {
      "host": "search.wheelie.dev",
      "route": "/",
      "owner": "cloud_config/infra/wheelie_dns.tf + Wheelie public distribution CapSearch bundle",
      "deploy_path": "Wheelie public static distribution search host rewrite",
      "posture": "capsearch_discovery_not_control_plane",
      "auth_class": "public_unauthenticated",
      "expected": {
        "support_state": "public_capability_discovery",
        "canonical_gallery": "https://wheelie.dev/capabilities",
        "normal_api_origin": false
      },
      "validation_readback": [
        "curl -fsSLI https://search.wheelie.dev/"
      ]
    },
    {
      "host": "wheelie.dev",
      "route": "/device",
      "owner": "cloud_config/infra/wheelie_dns.tf + hosted Wheelie auth handoff",
      "deploy_path": "Wheelie-branded device-code handoff; current implementation may redirect to agent.continua.ai/device",
      "posture": "wheelie_device_handoff_to_current_auth_backing_origin",
      "auth_class": "device_code_browser_session",
      "expected": {
        "support_state": "allowlist_or_authenticated",
        "may_redirect_to": "https://agent.continua.ai/device",
        "browser_ux": "Wheelie-branded device pairing handoff that explains the current Continua-hosted auth origin"
      },
      "validation_readback": [
        "curl -sSI -L https://wheelie.dev/device",
        "ssh wheelie.dev auth status --json"
      ]
    },
    {
      "host": "status.continua.ai",
      "route": "/",
      "owner": "public status provider",
      "deploy_path": "status.continua.ai external status surface",
      "posture": "public_status_not_marketing",
      "auth_class": "public_unauthenticated",
      "expected": {
        "support_state": "public_status_surface"
      },
      "validation_readback": [
        "curl -fsSLI https://status.continua.ai/"
      ]
    },
    {
      "host": "agent.continua.ai",
      "route": "/coding",
      "owner": "Gravity PWA Firebase Hosting",
      "deploy_path": "continua-gravity-agent prod hosting",
      "posture": "authenticated_gravity_workbench_not_marketing",
      "auth_class": "verified_user_session",
      "expected": {
        "support_state": "gravity_runtime_surface"
      },
      "validation_readback": [
        "curl -fsSLI https://agent.continua.ai/coding"
      ]
    },
    {
      "host": "api.agent.continua.ai",
      "route": "/healthz",
      "owner": "Gravity/Wheelie runtime control plane",
      "deploy_path": "Gravity runtime public API host",
      "posture": "current_wheelie_control_plane_backing_api_not_new_product_origin",
      "auth_class": "route_dependent_public_health_or_authenticated_runtime",
      "expected": {
        "support_state": "hosted_control_plane_current_backing_host",
        "receipt_label": "backing_host",
        "wheelie_app_api_alias_added": false
      },
      "validation_readback": [
        "curl -fsSLI https://api.agent.continua.ai/healthz",
        "wheelie auth status --json"
      ]
    },
    {
      "host": "c.continua-ai.wheelie.dev",
      "route": "/",
      "owner": "cloud_config/infra/wheelie_dns.tf + Gravity workbench hosting",
      "deploy_path": "Google Cloud HTTPS load balancer redirect host rule to agent.continua.ai/coding/workbench",
      "posture": "workspace_alias_redirect_only",
      "auth_class": "public_unauthenticated_redirect_only_no_cookie",
      "expected": {
        "dns": "resolves",
        "tls": "ready",
        "routing": "redirect_to_path_first_workbench",
        "redirect": "https://agent.continua.ai/coding/workbench",
        "support_state": "redirect_only_workspace_alias",
        "normal_ui_href_allowed": false,
        "browser_ux": "redirects to the path-first authenticated workbench without introducing a wheelie.dev session origin"
      },
      "validation_readback": [
        "dig +short A c.continua-ai.wheelie.dev",
        "curl -sSI -L https://c.continua-ai.wheelie.dev/"
      ]
    },
    {
      "host": "sample-task.task.c.continua-ai.wheelie.dev",
      "route": "/",
      "owner": "Gravity workbench object-alias route registry",
      "deploy_path": "reserved wildcard route family; no normal product href until registry-auth admission",
      "posture": "reserved_object_alias_route_not_found",
      "auth_class": "fail_closed_until_registry_auth_route",
      "expected": {
        "dns": "resolves",
        "tls": "ready",
        "routing": "typed_route_not_found_json",
        "error": "wheelie_route_resolution_failed",
        "route_status": "route_not_found",
        "support_state": "alias_pending_path_fallback",
        "normal_ui_href_allowed": false,
        "browser_ux": "browser receives redacted support-state JSON; product surfaces should link to the path-first workbench route instead"
      },
      "validation_readback": [
        "dig +short A sample-task.task.c.continua-ai.wheelie.dev",
        "curl -sS -D - -o - https://sample-task.task.c.continua-ai.wheelie.dev/"
      ]
    },
    {
      "host": "sample-agent.agent.c.continua-ai.wheelie.dev",
      "route": "/",
      "owner": "Gravity workbench object-alias route registry",
      "deploy_path": "reserved wildcard route family; no normal product href until registry-auth admission",
      "posture": "reserved_object_alias_route_not_found",
      "auth_class": "fail_closed_until_registry_auth_route",
      "expected": {
        "dns": "resolves",
        "tls": "ready",
        "routing": "typed_route_not_found_json",
        "error": "wheelie_route_resolution_failed",
        "route_status": "route_not_found",
        "support_state": "alias_pending_path_fallback",
        "normal_ui_href_allowed": false,
        "browser_ux": "browser receives redacted support-state JSON; product surfaces should link to the path-first workbench route instead"
      },
      "validation_readback": [
        "dig +short A sample-agent.agent.c.continua-ai.wheelie.dev",
        "curl -sS -D - -o - https://sample-agent.agent.c.continua-ai.wheelie.dev/"
      ]
    },
    {
      "host": "sample-host.host.c.continua-ai.wheelie.dev",
      "route": "/",
      "owner": "Gravity workbench object-alias route registry",
      "deploy_path": "reserved wildcard route family; no normal product href until registry-auth admission",
      "posture": "reserved_object_alias_route_not_found",
      "auth_class": "fail_closed_until_registry_auth_route",
      "expected": {
        "dns": "resolves",
        "tls": "ready",
        "routing": "typed_route_not_found_json",
        "error": "wheelie_route_resolution_failed",
        "route_status": "route_not_found",
        "support_state": "alias_pending_path_fallback",
        "normal_ui_href_allowed": false,
        "browser_ux": "browser receives redacted support-state JSON; product surfaces should link to the path-first workbench route instead"
      },
      "validation_readback": [
        "dig +short A sample-host.host.c.continua-ai.wheelie.dev",
        "curl -sS -D - -o - https://sample-host.host.c.continua-ai.wheelie.dev/"
      ]
    },
    {
      "host": "agent.continua-ai.wheelie.run",
      "route": "/",
      "owner": "Gravity hosted-runtime route registry",
      "deploy_path": "canonical service host family under wheelie.run; route binding required before serving",
      "posture": "canonical_service_route_not_found_until_bound",
      "auth_class": "fail_closed_until_service_route_binding",
      "expected": {
        "dns": "resolves",
        "tls": "ready",
        "routing": "typed_route_not_found_json",
        "error": "wheelie_route_resolution_failed",
        "route_status": "route_not_found",
        "support_state": "reserved_canonical_service_pending_route_binding",
        "normal_ui_href_allowed": false,
        "browser_ux": "browser receives redacted support-state JSON until the service route is bound"
      },
      "validation_readback": [
        "dig +short A agent.continua-ai.wheelie.run",
        "curl -sS -D - -o - https://agent.continua-ai.wheelie.run/"
      ]
    },
    {
      "host": "sample-generated.wheelie.run",
      "route": "/",
      "owner": "Gravity hosted-runtime generated hostname registry",
      "deploy_path": "generated wheelie.run runtime host family; route binding required before serving",
      "posture": "generated_runtime_route_not_found_until_bound",
      "auth_class": "fail_closed_until_generated_route_binding",
      "expected": {
        "dns": "resolves",
        "tls": "ready",
        "routing": "typed_route_not_found_json",
        "error": "wheelie_route_resolution_failed",
        "route_status": "route_not_found",
        "support_state": "generated_runtime_pending_route_binding",
        "normal_ui_href_allowed": false,
        "browser_ux": "browser receives redacted support-state JSON; generated runtime hosts are not marketing or docs routes"
      },
      "validation_readback": [
        "dig +short A sample-generated.wheelie.run",
        "curl -sS -D - -o - https://sample-generated.wheelie.run/"
      ]
    }
  ],
  "guardrails": {
    "wheelie_apex_must_not_be_docs_index": true,
    "continua_ai_wheelie_must_not_serve_ambiguous_spa_shell": true,
    "no_self_serve_ga_claim_on_private_preview_pages": true,
    "browser_validation_required_for_marketing_changes": true,
    "object_aliases_must_not_be_normal_product_hrefs": true,
    "runtime_aliases_must_not_be_marketing_or_docs_routes": true,
    "route_not_found_responses_must_be_typed_and_redacted": true,
    "object_alias_kinds_not_normal_product_hrefs": [
      "task",
      "agent",
      "session",
      "host",
      "source",
      "evidence",
      "change"
    ],
    "no_new_authenticated_wheelie_dev_app_or_api_origin_without_alias_admission": true,
    "control_plane_receipts_must_label_continua_hosts_as_backing_hosts": true
  },
  "control_plane_ia": {
    "decision": "retain_existing_continua_control_plane_hosts_with_wheelie_labeled_receipts",
    "no_new_authenticated_wheelie_dev_aliases": true,
    "canonical_device_entry": "https://wheelie.dev/device",
    "current_browser_workbench": "https://agent.continua.ai/coding",
    "current_api_backing_host": "https://api.agent.continua.ai",
    "receipt_logical_refs": [
      "wheelie://work-items",
      "wheelie://working-copies",
      "wheelie://agent-runs",
      "wheelie://vms",
      "wheelie://validation-runs",
      "wheelie://evidence",
      "wheelie://source-roots",
      "wheelie://changes",
      "wheelie://checkpoints"
    ],
    "future_alias_admission_requires": [
      "auth_class_review",
      "cookie_domain_csrf_cors_negative_tests",
      "host_header_spoof_negative_tests",
      "route_admission_receipt"
    ],
    "direct_agent_run_api_surface": "wheelie agent-run ... with private-preview API support-state receipts"
  }
}
