{
  "id": "uptime",
  "name": "Uptime",
  "version": "0.3.0",
  "maturity": "local-installer-and-owner-deploy-implemented-hosted-unverified",
  "category": "monitoring",
  "spine": {
    "id": "monitor",
    "record": "Immutable scheduled slot observations and explained private alert outbox"
  },
  "replaces": [
    {
      "name": "UptimeRobot",
      "edition": null
    },
    {
      "name": "Pingdom",
      "edition": null
    },
    {
      "name": "Better Stack",
      "edition": null
    }
  ],
  "description": "Private uptime console for scheduled HTTP(S), keyword, and heartbeat probes, with Base owner sign-in, installation-wide incident notifications, and portable product archives.",
  "capabilities": [
    {
      "id": "scheduled-monitoring",
      "description": "Run signed HTTP(S), keyword, and heartbeat checks with immutable observations and explicit Unknown state.",
      "clauses": [
        "HTTP-001",
        "EVIDENCE-001",
        "STATE-001",
        "NETWORK-001",
        "HEARTBEAT-001"
      ]
    },
    {
      "id": "portable-archives",
      "description": "Export and restore versioned product archives with paused definitions, portable notification definitions and histories, and preserved original state.",
      "clauses": [
        "ARCHIVE-001",
        "RETENTION-001"
      ]
    },
    {
      "id": "notification-delivery",
      "description": "Send scheduled incident email, signed JSON, and Slack notifications to installation-wide destinations.",
      "clauses": [
        "NOTIFY-001",
        "DELIVERY-001"
      ]
    }
  ],
  "nonGoals": [
    "Real provider or production target actions before explicit authority and verification",
    "Public communication, people paging, and independent geographic monitoring",
    "Fresh-account hosted operation and recipient acceptance remain unverified"
  ],
  "externals": [
    {
      "id": "cloudflare",
      "required": false,
      "requiredWhen": "When deploying a hosted Worker",
      "why": "An owner-directed deployment sends the application, migrations, configured Worker bindings and secrets, resource settings, and health requests to the owner's Cloudflare account; Cloudflare hosts the Worker, D1 database, and scheduled Cron.",
      "data": [
        "Cloudflare API account and resource identities, deployment-token authorization, the Worker program and static assets, D1 schema and migrations, Cron settings, bindings, and configured deployment secret values",
        "Deployment readiness requests and responses for the hosted Worker",
        "Hosted Worker requests and responses carrying monitor definitions and target URLs, observations, owner identities and sessions, authentication mail state, notification events and delivery state, runner contact, and audit records",
        "Product and installation records stored in the owner's Cloudflare D1 database, scheduled execution metadata, and configured secret bindings"
      ],
      "adapters": []
    },
    {
      "id": "sendgrid-mail",
      "required": false,
      "requiredWhen": "MAIL_PROVIDER selects sendgrid",
      "why": "SendGrid sends hosted sign-in, incident email and monitoring watch mail when selected as the Base mail adapter.",
      "data": [
        "SendGrid API-key authorization, sender and recipient/operator email addresses, message subject and text/HTML body, and single-use sign-in links",
        "Delivery ID in the rer_delivery_id custom argument; click, open and analytics tracking are disabled in the submitted provider settings",
        "Incident/test title, target URL, state, monitor and incident identity when present, probe names/outcomes/reasons, explanation, observation time, and private console URL as rendered in message content",
        "For an owner-run drill, the one-time recipient confirmation link and drill time",
        "Owner stale-runner identity/network-label notice or all-healthy digest text, including any monitoring-configuration warning"
      ],
      "adapters": []
    },
    {
      "id": "incident-webhook",
      "required": false,
      "requiredWhen": "An owner enables a signed JSON webhook destination",
      "why": "Owner-configured webhook (custom-webhook) sends to custom destination owner-configured-json-receiver: deliver scheduled incident events to the owner's public HTTPS endpoint. The endpoint runs outside this installation.",
      "data": [
        "The configured endpoint receives the signed JSON request, signature and timestamp headers, source address, and delivery time",
        "Event ID, type, incident key, monitor ID and revision, name, target URL, scheduled slot, state, observation time, probe outcomes and reasons, explanation, and private console URL",
        "A drill event additionally carries the one-time recipient confirmation URL, start time, and expiry; ordinary incident and test events do not",
        "The endpoint's bounded HTTP status, headers, and response body return to the runner for delivery classification"
      ],
      "adapters": []
    },
    {
      "id": "slack-incoming-webhook",
      "required": false,
      "requiredWhen": "An owner enables a Slack incoming-webhook destination",
      "why": "Slack (slack) sends to provider destination slack-incoming-webhook: post escaped notification content to the owner's incoming webhook. Slack runs outside this installation and accepts the configured remote request.",
      "data": [
        "The configured Slack webhook receives the escaped message body, source address, and delivery time",
        "Incident title and state, monitor identity and target URL, probe outcomes and reasons, explanation, observation time, and console URL",
        "A drill message additionally carries the one-time recipient confirmation URL and drill time",
        "The endpoint's bounded HTTP status, headers, and response body return to the runner for delivery classification"
      ],
      "adapters": []
    },
    {
      "id": "external-heartbeat",
      "required": false,
      "why": "Owner-selected independent HTTPS heartbeat service; optional empty GET while self-check passes. The configured URL is a capability and its path is sent to that service.",
      "data": [
        "HTTPS host and capability path from the owner-configured URL, request time, and source network address; no request body or product record",
        "The heartbeat service's response status is read and its response body is canceled rather than retained"
      ],
      "adapters": []
    },
    {
      "id": "runner-watch",
      "required": false,
      "why": "Independent webhook or Slack notice configured only in the runner environment.",
      "data": [
        "Owner-configured webhook receives only unreachable/restored state and times; owner-configured Slack receives the same short notice text",
        "Notification URL capability, runner source address, and request time; no monitor name, target URL, probe result, or product event",
        "The destination's bounded status, response headers, and response body are read for transport classification"
      ],
      "adapters": []
    },
    {
      "id": "owner-app-readiness",
      "required": false,
      "requiredWhen": "The shared local lifecycle checks a selected application origin before starting its runner",
      "why": "The local setup/dev/preview lifecycle checks the selected Uptime application readiness endpoint; it may be local loopback or an owner-selected remote origin.",
      "data": [
        "A GET request for the selected application's readiness URL and any HTTP redirect destinations followed by the CLI; no request body or configured authorization header is sent",
        "The destination sees the CLI source address and request timing; the CLI reads only the returned health status and JSON readiness value"
      ],
      "adapters": []
    },
    {
      "id": "configured-dns-resolver",
      "required": false,
      "requiredWhen": "A target, discovery page, flow subresource, notification endpoint, heartbeat, runner control plane, or configured provider hostname needs DNS resolution",
      "why": "Private runners and owner tools use their configured DNS resolver. Hosted public checks validate A/AAAA answers through Cloudflare DNS over HTTPS; Workers fetch uses Cloudflare\u2019s public Internet resolver and transport.",
      "data": [
        "Queried hostnames for A/AAAA or system address lookup, resolver source address, and lookup timing; DNS carries no URL path, request body, or HTTP credential",
        "Hosted checks send the target and canary hostnames as A/AAAA queries to https://cloudflare-dns.com/dns-query; no target URL path, body or credential is included."
      ],
      "adapters": []
    },
    {
      "id": "public-monitor-targets",
      "required": false,
      "requiredWhen": "An owner enables a public HTTP(S) monitor or assigns an external canary",
      "why": "The hosted Worker or an explicitly assigned private runner sends scheduled requests to the owner\u2019s public target and optional canary URLs.",
      "data": [
        "Target hostname, path and query, method, request time and runner source address; configured headers and request body where the monitor has them",
        "An owner-held request credential is sent only to its exact authorized target origin and monitor; credentials, custom headers and body are stripped on a cross-origin redirect",
        "The target returns status and headers plus a bounded response body used for assertions; raw response bodies are not retained in observations",
        "An external canary is a status-only GET: it sends no request credential, custom header or body and reads zero response-body bytes; validated public redirect hops may also be contacted"
      ],
      "adapters": []
    },
    {
      "id": "site-discovery",
      "required": false,
      "requiredWhen": "An owner asks to check a public website or configures UPTIME_START_URL",
      "why": "The runner performs bounded read-only discovery of the owner's chosen site, following its public redirects and crawling permitted pages and related API/status hosts.",
      "data": [
        "The owner-selected URL, request host/path/query, GET or HEAD method, discovery User-Agent and other headers, request time, and runner source address",
        "The initial URL's public redirect chain, then robots files, pages, JSON/spec documents and redirect destinations on its permitted registrable domains and linked status hosts are read with bounded bodies in runner memory",
        "Only the input/final URL, contacted hostnames, request count and duration, short notes, and validated proposed monitor definitions return to the console; raw target HTML, JSON and response headers are not returned, stored, logged, or rendered as console HTML"
      ],
      "adapters": []
    },
    {
      "id": "isolated-browser-flow-targets",
      "required": false,
      "requiredWhen": "An owner enables a browser-flow monitor on a runner with a browser",
      "why": "A fresh runner browser follows owner-defined flows through the filtering proxy; target pages and their public network dependencies receive ordinary browser requests.",
      "data": [
        "Owner-defined top-level URLs and paths, redirects that remain within the declared origins, and requests to public subresources and WebSocket destinations initiated by those pages; DNS names, source address, and request timing are visible at the relevant destinations",
        "Browser-generated request headers, referrer/origin information, and cookies a destination sets may be sent to the relevant public destination; page content is processed locally in the runner to execute steps, while no raw page body or screenshot returns in the control-plane result or observation",
        "A named owner-held flow credential is filled only at its exact configured origin and may be sent by that site-form submission; the secret itself remains in runner-local custody and is redacted from traces",
        "Private, loopback, link-local and metadata addresses are blocked; top-level navigation is limited to declared origins, while public subresources and WebSockets are individually passed through the filtering proxy"
      ],
      "adapters": []
    },
    {
      "id": "runner-control-plane",
      "required": false,
      "requiredWhen": "A private runner is enrolled and polls the owner's configured UPTIME_CONTROL_ORIGIN",
      "why": "The separately operated runner uses signed HTTPS requests to the configured Uptime Worker control plane for enrolment, claims, results, discovery, notification custody, and contact.",
      "data": [
        "Runner key authentication and signature, runner identity, declared network label, browser capability, request times, and claimed task identifiers",
        "Assigned monitor and flow definitions, canary URLs, retry and lease data, and signed attempt evidence, including status, assertions, timings, and bounded flow trace",
        "Discovery input URLs and derived host/proposal results",
        "For notification delivery, the claimed endpoint URL, signing credential and event payload are returned to the runner for the one configured send; signed outcome and bounded provider response details return to the Worker"
      ],
      "adapters": []
    },
    {
      "id": "optional-identity-provider-setup",
      "required": false,
      "requiredWhen": "Only when the owner selects an optional identity-provider address during setup; no provider sign-in is enabled by that selection",
      "why": "The shared setup CLI can read selected provider discovery documents. The completed local probe read dependency metadata, then failed at unmounted application dependency approval (404) before owner creation or any provider link request. Uptime does not mount linked-provider routes; runtime OIDC callback, token, JWKS and dependency exchange are unsupported.",
      "data": [
        "Selected issuer hostname and read-only setup requests for its OIDC configuration, RER provider document, and dependency-interface metadata",
        "A setup approval request to the Uptime origin carries issuer/interface and the configured setup token; the current unmounted route returns 404 before owner creation. The measured probe made no one-time provider link request. A future shared linking path may send app origin, interface and a temporary link capability, requiring separate adoption and evidence.",
        "No linked sign-in, authorization-code callback, runtime token/JWKS exchange or user-profile exchange is implemented by the current Uptime server; do not infer an operational provider integration from the optional declaration"
      ],
      "adapters": []
    },
    {
      "id": "optional-management-editor",
      "required": false,
      "requiredWhen": "Only when the owner configures the exact RER_MANAGEMENT_ORIGIN and installation ID for the private management editor",
      "why": "An authenticated owner page may create the configured management editor iframe while the editor is hidden. This is an explicit private management integration, not a public embeddable widget. This is the explicit BASE-DATA-005 exception: the configured origin may belong to the author and receive opted-in requests; the native product has no operational dependency on this integration.",
      "data": [
        "The exact configured management origin receives an iframe request containing the installation ID, parent page origin, and editor surface; after handshake it also receives the current page path",
        "Rendered page title and up to 60 visible text/element descriptors are sent only after the owner opens the editor and explicitly enables context sharing; form values and private-marked elements are excluded",
        "Editor protocol messages, live-edit requests and results are exchanged with the configured management origin"
      ],
      "adapters": []
    },
    {
      "id": "resend-mail",
      "required": false,
      "requiredWhen": "MAIL_PROVIDER selects resend",
      "why": "Resend sends hosted sign-in, incident email and monitoring watch mail when selected as the Base mail adapter.",
      "data": [
        "Resend API-key authorization, sender and recipient/operator email addresses, message subject and text/HTML body, and single-use sign-in links",
        "Delivery ID in the Idempotency-Key request header",
        "Incident/test title, target URL, state, monitor and incident identity when present, probe names/outcomes/reasons, explanation, observation time, and private console URL as rendered in message content",
        "For an owner-run drill, the one-time recipient confirmation link and drill time",
        "Owner stale-runner identity/network-label notice or all-healthy digest text, including any monitoring-configuration warning"
      ],
      "adapters": []
    },
    {
      "id": "cloudflare-mail",
      "required": false,
      "requiredWhen": "MAIL_PROVIDER selects cloudflare",
      "why": "Cloudflare Email Sending sends hosted sign-in, incident email and monitoring watch mail when selected as the Base mail adapter.",
      "data": [
        "Cloudflare API-key authorization and configured account identity, sender and recipient/operator email addresses, message subject and text/HTML body, and single-use sign-in links",
        "Account-scoped email-sending API request with no Uptime attachment payload",
        "Incident/test title, target URL, state, monitor and incident identity when present, probe names/outcomes/reasons, explanation, observation time, and private console URL as rendered in message content",
        "For an owner-run drill, the one-time recipient confirmation link and drill time",
        "Owner stale-runner identity/network-label notice or all-healthy digest text, including any monitoring-configuration warning"
      ],
      "adapters": []
    }
  ],
  "env": [
    {
      "name": "SENDGRID_API_KEY",
      "required": false,
      "requiredWhen": "When hosted sign-in or an email notification destination is enabled",
      "secret": true,
      "why": "Authenticates Base mail sending through SendGrid; load it from server-side secret storage and never expose it to browser code or logs."
    },
    {
      "name": "UPTIME_HEARTBEAT_URL",
      "required": false,
      "secret": true,
      "why": "External public HTTPS heartbeat capability URL; off when absent."
    },
    {
      "name": "UPTIME_START_URL",
      "required": false,
      "secret": false,
      "why": "Website the owner chose at setup; first-run setup asks the owner's runner to look at it. Off when absent."
    },
    {
      "name": "IDENTITY_PROVIDER",
      "required": false,
      "secret": false,
      "why": "Optional setup-only identity-provider address. Omitted uses native email-link setup; selecting a provider currently fails at unmounted dependency approval before owner creation and does not enable linked OIDC sign-in."
    },
    {
      "name": "MAIL_PROVIDER_API_KEY",
      "required": false,
      "secret": true,
      "why": "Resend API key selected at setup."
    },
    {
      "name": "CLOUDFLARE_MAIL_API_KEY",
      "required": false,
      "secret": true,
      "why": "Cloudflare Email Sending API key selected at setup."
    },
    {
      "name": "MAIL_ACCOUNT_ID",
      "required": false,
      "secret": false,
      "why": "Cloudflare Email Sending account selected at setup."
    },
    {
      "name": "UPTIME_RUNNER_ID",
      "required": false,
      "secret": false,
      "why": "Per-runner identity returned at enrolment or provisioning; legacy runner may omit it."
    },
    {
      "name": "UPTIME_NETWORK_LABEL",
      "required": false,
      "secret": false,
      "why": "Runner-local declared network label; must match its provisioned identity."
    },
    {
      "name": "UPTIME_WATCH_WEBHOOK_URL",
      "required": false,
      "secret": true,
      "why": "Independent HTTPS notice capability URL, kept only in the runner environment."
    },
    {
      "name": "UPTIME_WATCH_SLACK_URL",
      "required": false,
      "secret": true,
      "why": "Independent Slack notice capability URL, kept only in the runner environment."
    },
    {
      "name": "UPTIME_WATCH_AFTER_MS",
      "required": false,
      "secret": false,
      "why": "Runner-local failed-poll notice interval; defaults to three minutes."
    },
    {
      "name": "UPTIME_WATCH_REPEAT_MS",
      "required": false,
      "secret": false,
      "why": "Notice repeat interval on the runner or Worker; defaults to one hour."
    },
    {
      "name": "UPTIME_RUNNER_STALE_MS",
      "required": false,
      "secret": false,
      "why": "Worker stale-contact interval; defaults to two minutes."
    },
    {
      "name": "UPTIME_HEARTBEAT_INTERVAL_MS",
      "required": false,
      "secret": false,
      "why": "Worker external heartbeat interval; defaults to five minutes."
    },
    {
      "name": "UPTIME_DIGEST_INTERVAL_MS",
      "required": false,
      "secret": false,
      "why": "Worker healthy digest interval; defaults to one week."
    }
  ],
  "deploy": {
    "healthPath": "/health",
    "publicPaths": [
      {
        "path": "/",
        "match": "exact",
        "kind": "document",
        "class": "documents",
        "authentication": "None; public product information.",
        "environment": "all"
      },
      {
        "path": "/docs",
        "match": "exact",
        "kind": "document",
        "class": "documents",
        "authentication": "None; public product information.",
        "environment": "all"
      },
      {
        "path": "/docs/",
        "match": "prefix",
        "kind": "document",
        "class": "documents",
        "authentication": "None; public product documentation.",
        "environment": "all"
      },
      {
        "path": "/health",
        "match": "exact",
        "kind": "health",
        "class": "health",
        "authentication": "None; deployment and database readiness only.",
        "environment": "all"
      },
      {
        "path": "/signin",
        "match": "exact",
        "kind": "document",
        "class": "authentication",
        "authentication": "None; admission form only, credentials checked on submission.",
        "environment": "all"
      },
      {
        "path": "/login",
        "match": "exact",
        "kind": "document",
        "class": "authentication",
        "authentication": "None; admission form only, credentials checked on submission.",
        "environment": "all"
      },
      {
        "path": "/claim",
        "match": "exact",
        "kind": "document",
        "class": "authentication",
        "authentication": "None; admission form only, credentials checked on submission.",
        "environment": "all"
      },
      {
        "path": "/auth/bootstrap",
        "match": "exact",
        "kind": "authentication",
        "class": "authentication",
        "authentication": "Installation setup token; first owner only.",
        "environment": "all"
      },
      {
        "path": "/auth/magic-link",
        "match": "exact",
        "kind": "authentication",
        "class": "authentication",
        "authentication": "None to request a link; allow-listed email and one-use token admit the operator.",
        "environment": "all"
      },
      {
        "path": "/auth/confirm",
        "match": "exact",
        "kind": "authentication",
        "class": "authentication",
        "authentication": "One-use magic-link or invitation token.",
        "environment": "all"
      },
      {
        "path": "/auth/owner-signin",
        "match": "exact",
        "kind": "authentication",
        "class": "authentication",
        "authentication": "One-use owner sign-in grant minted with this deployment\u2019s Cloudflare credentials.",
        "environment": "all"
      },
      {
        "path": "/auth/owner-claim",
        "match": "exact",
        "kind": "authentication",
        "class": "authentication",
        "authentication": "Signed installation-bound owner claim.",
        "environment": "all"
      },
      {
        "path": "/auth/session",
        "match": "exact",
        "kind": "authentication",
        "class": "authentication",
        "authentication": "Base operator session; privileged account operations additionally require owner authority.",
        "environment": "all"
      },
      {
        "path": "/auth/operators",
        "match": "exact",
        "kind": "authentication",
        "class": "authentication",
        "authentication": "Base operator session; privileged account operations additionally require owner authority.",
        "environment": "all"
      },
      {
        "path": "/auth/sessions",
        "match": "exact",
        "kind": "authentication",
        "class": "authentication",
        "authentication": "Base operator session; privileged account operations additionally require owner authority.",
        "environment": "all"
      },
      {
        "path": "/auth/signout",
        "match": "exact",
        "kind": "authentication",
        "class": "authentication",
        "authentication": "Base operator session; privileged account operations additionally require owner authority.",
        "environment": "all"
      },
      {
        "path": "/auth/invite",
        "match": "exact",
        "kind": "authentication",
        "class": "authentication",
        "authentication": "Base operator session; privileged account operations additionally require owner authority.",
        "environment": "all"
      },
      {
        "path": "/auth/invite/cancel",
        "match": "exact",
        "kind": "authentication",
        "class": "authentication",
        "authentication": "Base operator session; privileged account operations additionally require owner authority.",
        "environment": "all"
      },
      {
        "path": "/auth/operator/status",
        "match": "exact",
        "kind": "authentication",
        "class": "authentication",
        "authentication": "Base operator session; privileged account operations additionally require owner authority.",
        "environment": "all"
      },
      {
        "path": "/auth/operator/role",
        "match": "exact",
        "kind": "authentication",
        "class": "authentication",
        "authentication": "Base operator session; privileged account operations additionally require owner authority.",
        "environment": "all"
      },
      {
        "path": "/auth/session/revoke",
        "match": "exact",
        "kind": "authentication",
        "class": "authentication",
        "authentication": "Base operator session; privileged account operations additionally require owner authority.",
        "environment": "all"
      },
      {
        "path": "/auth/setup-complete",
        "match": "exact",
        "kind": "authentication",
        "class": "authentication",
        "authentication": "Local CLI proof derived from the installation session secret, after the first owner exists; hosted mode refuses.",
        "environment": "local"
      },
      {
        "path": "/setup",
        "match": "exact",
        "kind": "setup",
        "class": "setup",
        "authentication": "Owner session required; unauthenticated requests redirect to login.",
        "environment": "all"
      },
      {
        "path": "/setup/state",
        "match": "exact",
        "kind": "setup",
        "class": "setup",
        "authentication": "None; answers only whether the owner has claimed this installation.",
        "environment": "all"
      },
      {
        "path": "/alert-drill",
        "match": "exact",
        "kind": "recipient-confirmation",
        "class": "drills",
        "authentication": "One-use alert drill capability in the link; GET only shows the page, a same-origin POST confirms. Unknown, used, expired or foreign capabilities answer 404.",
        "environment": "all"
      },
      {
        "path": "/api/editor/config",
        "match": "exact",
        "kind": "editor",
        "class": "editor",
        "authentication": "Owner session required; unauthenticated requests are denied.",
        "environment": "all"
      },
      {
        "path": "/monitor",
        "match": "exact",
        "kind": "redirect",
        "class": "redirects",
        "authentication": "None; redirect to session-gated monitor editor.",
        "environment": "all"
      },
      {
        "path": "/monitor/",
        "match": "exact",
        "kind": "redirect",
        "class": "redirects",
        "authentication": "None; redirect to session-gated monitor editor.",
        "environment": "all"
      },
      {
        "path": "/api/heartbeats/",
        "match": "prefix",
        "kind": "credentialed",
        "class": "heartbeats",
        "authentication": "Revision-scoped bearer token and increasing sequence.",
        "environment": "all"
      },
      {
        "path": "/api/runner/",
        "match": "prefix",
        "kind": "credentialed",
        "class": "runner",
        "authentication": "Installation runner key; scoped runner identity and signed enrolment/results where required.",
        "environment": "all"
      },
      {
        "path": "/app.js",
        "match": "exact",
        "kind": "asset",
        "class": "assets",
        "authentication": "None; emitted static resource only.",
        "environment": "all"
      },
      {
        "path": "/console-format.js",
        "match": "exact",
        "kind": "asset",
        "class": "assets",
        "authentication": "None; emitted static resource only.",
        "environment": "all"
      },
      {
        "path": "/monitor-coverage.js",
        "match": "exact",
        "kind": "asset",
        "class": "assets",
        "authentication": "None; emitted static resource only.",
        "environment": "all"
      },
      {
        "path": "/monitor-page.js",
        "match": "exact",
        "kind": "asset",
        "class": "assets",
        "authentication": "None; emitted static resource only.",
        "environment": "all"
      },
      {
        "path": "/monitor-timeline.js",
        "match": "exact",
        "kind": "asset",
        "class": "assets",
        "authentication": "None; emitted static resource only.",
        "environment": "all"
      },
      {
        "path": "/notifications.js",
        "match": "exact",
        "kind": "asset",
        "class": "assets",
        "authentication": "None; emitted static resource only.",
        "environment": "all"
      },
      {
        "path": "/notification-dialogs.js",
        "match": "exact",
        "kind": "asset",
        "class": "assets",
        "authentication": "None; emitted static resource only.",
        "environment": "all"
      },
      {
        "path": "/alert-drills.js",
        "match": "exact",
        "kind": "asset",
        "class": "assets",
        "authentication": "None; emitted static resource only.",
        "environment": "all"
      },
      {
        "path": "/editor-units.mjs",
        "match": "exact",
        "kind": "asset",
        "class": "assets",
        "authentication": "None; emitted static resource only.",
        "environment": "all"
      },
      {
        "path": "/editor.js",
        "match": "exact",
        "kind": "asset",
        "class": "assets",
        "authentication": "None; emitted static resource only.",
        "environment": "all"
      },
      {
        "path": "/app-theme.css",
        "match": "exact",
        "kind": "asset",
        "class": "assets",
        "authentication": "None; emitted static resource only.",
        "environment": "all"
      },
      {
        "path": "/style.css",
        "match": "exact",
        "kind": "asset",
        "class": "assets",
        "authentication": "None; emitted static resource only.",
        "environment": "all"
      },
      {
        "path": "/notifications.css",
        "match": "exact",
        "kind": "asset",
        "class": "assets",
        "authentication": "None; emitted static resource only.",
        "environment": "all"
      },
      {
        "path": "/editor/",
        "match": "prefix",
        "kind": "asset",
        "class": "assets",
        "authentication": "None; emitted static resources only.",
        "environment": "all"
      },
      {
        "path": "/editor.css",
        "match": "exact",
        "kind": "asset",
        "class": "assets",
        "authentication": "None; emitted static resource only.",
        "environment": "all"
      },
      {
        "path": "/action-feedback.mjs",
        "match": "exact",
        "kind": "asset",
        "class": "assets",
        "authentication": "None; emitted static resource only.",
        "environment": "all"
      },
      {
        "path": "/editor-definition.mjs",
        "match": "exact",
        "kind": "asset",
        "class": "assets",
        "authentication": "None; emitted static resource only.",
        "environment": "all"
      },
      {
        "path": "/favicon.svg",
        "match": "exact",
        "kind": "asset",
        "class": "assets",
        "authentication": "None; emitted static resource only.",
        "environment": "all"
      },
      {
        "path": "/assets/",
        "match": "prefix",
        "kind": "asset",
        "class": "assets",
        "authentication": "None; emitted static resources only.",
        "environment": "all"
      },
      {
        "path": "/design-assets/",
        "match": "prefix",
        "kind": "asset",
        "class": "assets",
        "authentication": "None; emitted static resources only.",
        "environment": "all"
      },
      {
        "path": "/rer-theme.css",
        "match": "exact",
        "kind": "asset",
        "class": "assets",
        "authentication": "None; emitted static resource only.",
        "environment": "all"
      },
      {
        "path": "/brand/",
        "match": "prefix",
        "kind": "asset",
        "class": "assets",
        "authentication": "None; emitted static resources only.",
        "environment": "all"
      },
      {
        "path": "/__dev/key",
        "match": "exact",
        "kind": "development",
        "class": "development",
        "authentication": "Local runtime only; private RER_DEV_KEY header or gate cookie, or key in exchange POST body. Hosted mode returns 404.",
        "environment": "local"
      },
      {
        "path": "/__dev/personas",
        "match": "exact",
        "kind": "development",
        "class": "development",
        "authentication": "Local runtime only; private RER_DEV_KEY header or gate cookie, or key in exchange POST body. Hosted mode returns 404.",
        "environment": "local"
      },
      {
        "path": "/auth/dev/enter",
        "match": "exact",
        "kind": "development",
        "class": "development",
        "authentication": "Local runtime only; private RER_DEV_KEY header or gate cookie, or key in exchange POST body. Hosted mode returns 404.",
        "environment": "local"
      },
      {
        "path": "/@vite/client",
        "match": "exact",
        "kind": "development-asset",
        "class": "development-assets",
        "authentication": "None; local Vite HMR runtime only. The filesystem allowlist and private-file denies still apply. Hosted mode returns 404.",
        "environment": "local"
      },
      {
        "path": "/@id/virtual:tanstack-start-dev-client-entry",
        "match": "exact",
        "kind": "development-asset",
        "class": "development-assets",
        "authentication": "None; local TanStack Vite client entry only. Filesystem allowlist and private-file denies still apply. Hosted mode returns 404.",
        "environment": "local"
      },
      {
        "path": "/@react-refresh",
        "match": "exact",
        "kind": "development-asset",
        "class": "development-assets",
        "authentication": "None; local Vite compiler transport only. Vite filesystem allowlist and private-file denies remain authoritative. Hosted mode returns 404.",
        "environment": "local"
      },
      {
        "path": "/@tanstack-start/styles.css",
        "match": "exact",
        "kind": "development-asset",
        "class": "development-assets",
        "authentication": "None; local Vite compiler transport only. Vite filesystem allowlist and private-file denies remain authoritative. Hosted mode returns 404.",
        "environment": "local"
      },
      {
        "path": "/@fs/",
        "match": "prefix",
        "kind": "development-asset",
        "class": "development-assets",
        "authentication": "None; local dependency compiler transport only, restricted to a node_modules path segment and unencoded separators. Vite filesystem allowlist and private-file denies remain authoritative. Hosted mode returns 404.",
        "environment": "local",
        "withinDirectory": "node_modules"
      },
      {
        "path": "/node_modules/.pnpm/",
        "match": "prefix",
        "kind": "development-asset",
        "class": "development-assets",
        "authentication": "None; local Vite client runtime and dependency files imported by their package-store path, restricted to a node_modules path segment and unencoded separators. Vite filesystem allowlist and private-file denies remain authoritative. Hosted mode returns 404.",
        "environment": "local",
        "withinDirectory": "node_modules"
      },
      {
        "path": "/node_modules/.vite/",
        "match": "prefix",
        "kind": "development-asset",
        "class": "development-assets",
        "authentication": "None; local Vite optimized browser dependency files only. Filesystem allowlist and private-file denies remain authoritative. Hosted mode returns 404.",
        "environment": "local"
      },
      {
        "path": "/src/client.tsx",
        "match": "exact",
        "kind": "development-asset",
        "class": "development-assets",
        "authentication": "None; local Vite application client entry only. Filesystem allowlist and private-file denies still apply. Hosted mode returns 404.",
        "environment": "local"
      },
      {
        "path": "/src/base/hydration/report.ts",
        "match": "exact",
        "kind": "development-asset",
        "class": "development-assets",
        "authentication": "None; local Vite browser hydration reporter imported by the client entry only. Filesystem allowlist and private-file denies still apply. Hosted mode returns 404.",
        "environment": "local"
      },
      {
        "path": "/src/base/hydration/intro-guard.ts",
        "match": "exact",
        "kind": "development-asset",
        "class": "development-assets",
        "authentication": "None; local Vite browser hydration guard imported by the root route only. Filesystem allowlist and private-file denies still apply. Hosted mode returns 404.",
        "environment": "local"
      },
      {
        "path": "/src/base/hydration/unit.tsx",
        "match": "exact",
        "kind": "development-asset",
        "class": "development-assets",
        "authentication": "None; local Vite browser hydration boundary imported by the documentation routes only. Filesystem allowlist and private-file denies still apply. Hosted mode returns 404.",
        "environment": "local"
      },
      {
        "path": "/src/router.tsx",
        "match": "exact",
        "kind": "development-asset",
        "class": "development-assets",
        "authentication": "None; local Vite application client module graph from src/router.tsx only. Private domain/server modules are not declared. Filesystem allowlist and private-file denies still apply. Hosted mode returns 404.",
        "environment": "local"
      },
      {
        "path": "/src/routeTree.gen.ts",
        "match": "exact",
        "kind": "development-asset",
        "class": "development-assets",
        "authentication": "None; local Vite application client module graph from src/router.tsx only. Private domain/server modules are not declared. Filesystem allowlist and private-file denies still apply. Hosted mode returns 404.",
        "environment": "local"
      },
      {
        "path": "/src/routes/",
        "match": "prefix",
        "kind": "development-asset",
        "class": "development-assets",
        "authentication": "None; local Vite application client module graph from src/router.tsx only. Private domain/server modules are not declared. Filesystem allowlist and private-file denies still apply. Hosted mode returns 404.",
        "environment": "local"
      },
      {
        "path": "/src/base/modules/editor/",
        "match": "prefix",
        "kind": "development-asset",
        "class": "development-assets",
        "authentication": "None; local Vite application client module graph from src/router.tsx only. Private domain/server modules are not declared. Filesystem allowlist and private-file denies still apply. Hosted mode returns 404.",
        "environment": "local"
      },
      {
        "path": "/src/editor/",
        "match": "prefix",
        "kind": "development-asset",
        "class": "development-assets",
        "authentication": "None; local Vite application client module graph from src/router.tsx only. Private domain/server modules are not declared. Filesystem allowlist and private-file denies still apply. Hosted mode returns 404.",
        "environment": "local"
      },
      {
        "path": "/src/site/",
        "match": "prefix",
        "kind": "development-asset",
        "class": "development-assets",
        "authentication": "None; local Vite application client module graph from src/router.tsx only. Private domain/server modules are not declared. Filesystem allowlist and private-file denies still apply. Hosted mode returns 404.",
        "environment": "local"
      },
      {
        "path": "/src/ui/",
        "match": "prefix",
        "kind": "development-asset",
        "class": "development-assets",
        "authentication": "None; local Vite application client module graph from src/router.tsx only. Private domain/server modules are not declared. Filesystem allowlist and private-file denies still apply. Hosted mode returns 404.",
        "environment": "local"
      },
      {
        "path": "/@id/__x00__virtual:uptime-docs",
        "match": "exact",
        "kind": "development-asset",
        "class": "development-assets",
        "authentication": "None; local Vite virtual module containing published product documentation only. Hosted mode returns 404.",
        "environment": "local"
      },
      {
        "path": "/runner-settings.js",
        "match": "exact",
        "kind": "asset",
        "class": "assets",
        "authentication": "None; emitted static resource only.",
        "environment": "all"
      },
      {
        "path": "/external-check.js",
        "match": "exact",
        "kind": "asset",
        "class": "assets",
        "authentication": "None; emitted static resource only.",
        "environment": "all"
      },
      {
        "path": "/definitions.js",
        "match": "exact",
        "kind": "asset",
        "class": "assets",
        "authentication": "None; emitted static resource only.",
        "environment": "all"
      },
      {
        "path": "/flow-panel.js",
        "match": "exact",
        "kind": "asset",
        "class": "assets",
        "authentication": "None; emitted static resource only.",
        "environment": "all"
      },
      {
        "path": "/monitor-incidents.js",
        "match": "exact",
        "kind": "asset",
        "class": "assets",
        "authentication": "None; emitted static resource only.",
        "environment": "all"
      },
      {
        "path": "/heartbeat-key.js",
        "match": "exact",
        "kind": "asset",
        "class": "assets",
        "authentication": "None; emitted static resource only.",
        "environment": "all"
      }
    ],
    "notes": "Console documents and APIs require a Base owner session; runner and heartbeat APIs use separately scoped credentials."
  },
  "extensionPoints": {
    "contributions": [],
    "policies": [],
    "events": [],
    "slots": [],
    "adapters": []
  },
  "limits": {
    "status": "estimated-not-tested",
    "publicRequestsPerMinutePerIp": {
      "documents": 180,
      "health": 180,
      "authentication": 120,
      "setup": 180,
      "editor": 180,
      "redirects": 180,
      "heartbeats": 600,
      "runner": 1800,
      "assets": 600,
      "development": 600,
      "drills": 30,
      "development-assets": 1800
    },
    "notes": "Owner-tunable source settings; each class shares one fixed 60-second D1 window per client. Production assets retain their own budget. Local Vite compiler assets use a separate budget for the unbundled browser graph: about 140 module requests per console load, with room for twelve loads per minute. These defaults are estimated, not load tested. Hosted CF-Connecting-IP must be a valid single IP; missing/malformed values share an unknown-client bucket. Local mode ignores all forwarding headers and uses one loopback bucket. Only keyed hashes of client identities are stored."
  },
  "accessibility": {
    "level": "WCAG 2.2 AA",
    "status": "target; unaudited"
  },
  "operatingCost": {
    "status": "unmeasured"
  },
  "composition": {
    "base": "base",
    "family": "uptime",
    "edition": "uptime",
    "modules": [
      "operator-auth",
      "mail",
      "integrations",
      "deploy-kit",
      "onboarding"
    ]
  }
}
