{"ok":true,"data":{"schemaVersion":"browserops.demo_readiness.v1","generatedAt":"2026-06-02T01:01:25.561Z","live":false,"summary":"Demo lanes are declared from the canonical BrowserOps suite registry. Use live=true for bounded public probes.","counts":{"lanes":6,"ready":0,"degraded":0,"failed":0,"declared":6},"runtime":{"browser":{"provider":"browserbase","browserbase":{"status":"configured","configured":true,"projectConfigured":true,"credentialSource":"prefixed","apiUrl":"https://api.browserbase.com"}},"aiGateway":{"schemaVersion":"browserops.ai_gateway_diagnostics.v1","generatedAt":"2026-06-02T01:01:25.562Z","status":"degraded","summary":"AI Gateway is partially configured; BrowserOps can show diagnosis but should not depend on model calls yet.","docs":{"aiGateway":"https://vercel.com/docs/ai-gateway","providersAndModels":"https://ai-sdk.dev/docs/foundations/providers-and-models"},"runtime":{"aiSdk":{"installed":true,"version":"^6.0.193","gatewayCompatible":true},"gatewayPackage":{"installedTransitively":true,"expected":"@ai-sdk/gateway is bundled transitively by ai v6; explicit installation is optional unless BrowserOps needs providerOptions.gateway helpers."},"vercel":{"runningOnVercel":true,"environment":"production","urlConfigured":true}},"auth":{"mode":"vercel_oidc_runtime","oidcTokenPresent":false,"aiGatewayApiKeyPresent":false,"directProviderKeyCount":0,"directProviderKeyNames":[],"message":"The app is running on Vercel; AI Gateway can use Vercel-managed OIDC at runtime if the project has AI Gateway enabled."},"modelPolicy":{"configuredModel":null,"configuredModelSource":null,"providerModelFormat":"missing","message":"No default AI Gateway model is configured. BrowserOps will require callers to provide an explicit provider/model id before making model calls."},"checks":[{"id":"ai-sdk-version","label":"AI SDK gateway compatibility","status":"passed","message":"ai ^6.0.193 is installed and compatible with provider/model gateway routing.","evidence":{"installed":true,"version":"^6.0.193","expectedMajor":6}},{"id":"gateway-auth","label":"Gateway authentication","status":"passed","message":"The app is running on Vercel; AI Gateway can use Vercel-managed OIDC at runtime if the project has AI Gateway enabled.","evidence":{"mode":"vercel_oidc_runtime","oidcTokenPresent":false,"aiGatewayApiKeyPresent":false,"runningOnVercel":true}},{"id":"direct-provider-keys","label":"Direct provider key bypass","status":"passed","message":"No direct provider API keys were detected in the BrowserOps environment.","evidence":{"directProviderKeyCount":0,"directProviderKeyNames":[]}},{"id":"model-format","label":"Provider/model string","status":"warning","message":"No default AI Gateway model is configured. BrowserOps will require callers to provide an explicit provider/model id before making model calls.","evidence":{"configured":false,"source":null}}],"recommendedActions":["Choose a supported provider/model id from the Vercel AI Gateway model catalog before enabling model-backed remediation."],"publicSafeLog":{"schemaVersion":"browserops.log.v1","level":"warn","event":"browserops.ai_gateway.diagnosis","message":"AI Gateway is partially configured; BrowserOps can show diagnosis but should not depend on model calls yet.","service":"browserops","generatedAt":"2026-06-02T01:01:25.562Z","data":{"status":"degraded","aiSdkInstalled":true,"aiVersion":"^6.0.193","gatewayCompatible":true,"authMode":"vercel_oidc_runtime","directProviderKeyCount":0,"modelFormat":"missing"}}}},"lanes":[{"id":"root","name":"PlatPhorm Root","canonicalUrl":"https://platphormnews.com","role":"Root network graph, public platform manifest, and canonical topology source for the PlatPhormNews mesh.","targetService":"root","traceId":"3c0427b7e30263afb412df6cc0db0ad1","status":"declared","probes":[{"name":"health","path":"/api/health","url":"https://platphormnews.com/api/health","required":true,"fetched":false,"status":"declared","httpStatus":null,"durationMs":0,"traceAccepted":false,"message":"Declared demo dependency. Add live=true to fetch this route."},{"name":"networkGraph","path":"/api/network/graph","url":"https://platphormnews.com/api/network/graph","required":true,"fetched":false,"status":"declared","httpStatus":null,"durationMs":0,"traceAccepted":false,"message":"Declared demo dependency. Add live=true to fetch this route."},{"name":"llms","path":"/llms.txt","url":"https://platphormnews.com/llms.txt","required":false,"fetched":false,"status":"declared","httpStatus":null,"durationMs":0,"traceAccepted":false,"message":"Declared demo dependency. Add live=true to fetch this route."}],"browserOpsContract":"Root provides topology; BrowserOps turns public network facts into browser journeys and route evidence.","requestedCapability":"read_network_graph","authorizationState":"public_read","nextAction":"Use root graph and base sitemap as the demo source of truth for discovered journeys."},{"id":"agentui","name":"AgentUI","canonicalUrl":"https://agentui.platphormnews.com","role":"Visual workflow orchestration and tool UI rendering.","targetService":"agentui","traceId":"90dc612180e76761a1147afb1de53d16","status":"declared","probes":[{"name":"health","path":"/api/health","url":"https://agentui.platphormnews.com/api/health","required":true,"fetched":false,"status":"declared","httpStatus":null,"durationMs":0,"traceAccepted":false,"message":"Declared demo dependency. Add live=true to fetch this route."},{"name":"apiDocs","path":"/api/docs","url":"https://agentui.platphormnews.com/api/docs","required":true,"fetched":false,"status":"declared","httpStatus":null,"durationMs":0,"traceAccepted":false,"message":"Declared demo dependency. Add live=true to fetch this route."},{"name":"llms","path":"/llms.txt","url":"https://agentui.platphormnews.com/llms.txt","required":true,"fetched":false,"status":"declared","httpStatus":null,"durationMs":0,"traceAccepted":false,"message":"Declared demo dependency. Add live=true to fetch this route."},{"name":"handoffReceiver","path":"/api/browserops/receive-handoff","url":"https://agentui.platphormnews.com/api/browserops/receive-handoff","required":true,"fetched":false,"status":"declared","httpStatus":null,"durationMs":0,"traceAccepted":false,"message":"Declared demo dependency. Add live=true to fetch this route."}],"browserOpsContract":"AgentUI asks for rendered workflow UI validation; BrowserOps returns screenshot, accessibility, labels, and navigation evidence.","requestedCapability":"validate_rendered_workflow_ui","authorizationState":"server_managed","nextAction":"Open AgentUI lane, preview a journey, and dispatch only after a confirmed receiver response."},{"id":"spec","name":"Spec","canonicalUrl":"https://spec.platphormnews.com","role":"Contract validation, diff, repair, and generation for OpenAPI, AsyncAPI, JSON Schema, MCP, webhook, event, policy, and envelope contracts.","targetService":"spec","traceId":"280df016e311c913cf9838ffdd042578","status":"declared","probes":[{"name":"health","path":"/api/health","url":"https://spec.platphormnews.com/api/health","required":true,"fetched":false,"status":"declared","httpStatus":null,"durationMs":0,"traceAccepted":false,"message":"Declared demo dependency. Add live=true to fetch this route."},{"name":"apiDocs","path":"/api/docs","url":"https://spec.platphormnews.com/api/docs","required":true,"fetched":false,"status":"declared","httpStatus":null,"durationMs":0,"traceAccepted":false,"message":"Declared demo dependency. Add live=true to fetch this route."},{"name":"llms","path":"/llms.txt","url":"https://spec.platphormnews.com/llms.txt","required":true,"fetched":false,"status":"declared","httpStatus":null,"durationMs":0,"traceAccepted":false,"message":"Declared demo dependency. Add live=true to fetch this route."}],"browserOpsContract":"Spec generates contract-backed journey plans; BrowserOps dry-runs and proves browser behavior for acceptance.","requestedCapability":"dry_run_contract_journey","authorizationState":"public_read","nextAction":"Use Spec contracts to seed journey templates, then run BrowserOps against trusted public targets."},{"id":"mcp","name":"MCP","canonicalUrl":"https://mcp.platphormnews.com","role":"Canonical MCP gateway, tool registry, capability graph, and integration broker.","targetService":"mcp","traceId":"b72f37836f8bdf41269e4cf8a9fa5fbf","status":"declared","probes":[{"name":"health","path":"/api/health","url":"https://mcp.platphormnews.com/api/health","required":true,"fetched":false,"status":"declared","httpStatus":null,"durationMs":0,"traceAccepted":false,"message":"Declared demo dependency. Add live=true to fetch this route."},{"name":"mcpManifest","path":"/.well-known/mcp.json","url":"https://mcp.platphormnews.com/.well-known/mcp.json","required":true,"fetched":false,"status":"declared","httpStatus":null,"durationMs":0,"traceAccepted":false,"message":"Declared demo dependency. Add live=true to fetch this route."},{"name":"apiDocs","path":"/api/docs","url":"https://mcp.platphormnews.com/api/docs","required":false,"fetched":false,"status":"declared","httpStatus":null,"durationMs":0,"traceAccepted":false,"message":"Declared demo dependency. Add live=true to fetch this route."}],"browserOpsContract":"MCP remains the tool registry; BrowserOps exposes and validates BrowserOps-owned tools through the gateway.","requestedCapability":"discover_browserops_tools","authorizationState":"public_read","nextAction":"Show MCP manifest and BrowserOps MCP tools before launching any protected browser run."},{"id":"sandbox","name":"Sandbox","canonicalUrl":"https://sandbox.platphormnews.com","role":"Bounded command execution, file writing, logs, artifacts, and public-safe reports.","targetService":"sandbox","traceId":"40d6d51c851d16f9d12ed6fa85faf0bf","status":"declared","probes":[{"name":"health","path":"/api/health","url":"https://sandbox.platphormnews.com/api/health","required":true,"fetched":false,"status":"declared","httpStatus":null,"durationMs":0,"traceAccepted":false,"message":"Declared demo dependency. Add live=true to fetch this route."},{"name":"apiDocs","path":"/api/docs","url":"https://sandbox.platphormnews.com/api/docs","required":true,"fetched":false,"status":"declared","httpStatus":null,"durationMs":0,"traceAccepted":false,"message":"Declared demo dependency. Add live=true to fetch this route."},{"name":"llms","path":"/llms.txt","url":"https://sandbox.platphormnews.com/llms.txt","required":true,"fetched":false,"status":"declared","httpStatus":null,"durationMs":0,"traceAccepted":false,"message":"Declared demo dependency. Add live=true to fetch this route."},{"name":"handoffReceiver","path":"/api/sandbox/receive-handoff","url":"https://sandbox.platphormnews.com/api/sandbox/receive-handoff","required":false,"fetched":false,"status":"declared","httpStatus":null,"durationMs":0,"traceAccepted":false,"message":"Declared demo dependency. Add live=true to fetch this route."}],"browserOpsContract":"Sandbox produces bounded previews; BrowserOps validates the resulting public page in a real browser.","requestedCapability":"validate_public_preview_url","authorizationState":"server_managed","nextAction":"Send a Sandbox preview URL to BrowserOps and capture public-safe artifacts."},{"id":"evals","name":"Evals","canonicalUrl":"https://evals.platphormnews.com","role":"Evidence-backed QA, scorecards, release gates, suites, and decisions.","targetService":"evals","traceId":"c2a2acb66a745c0697acea9a5e7b2612","status":"declared","probes":[{"name":"health","path":"/api/health","url":"https://evals.platphormnews.com/api/health","required":true,"fetched":false,"status":"declared","httpStatus":null,"durationMs":0,"traceAccepted":false,"message":"Declared demo dependency. Add live=true to fetch this route."},{"name":"apiDocs","path":"/api/docs","url":"https://evals.platphormnews.com/api/docs","required":true,"fetched":false,"status":"declared","httpStatus":null,"durationMs":0,"traceAccepted":false,"message":"Declared demo dependency. Add live=true to fetch this route."},{"name":"llms","path":"/llms.txt","url":"https://evals.platphormnews.com/llms.txt","required":true,"fetched":false,"status":"declared","httpStatus":null,"durationMs":0,"traceAccepted":false,"message":"Declared demo dependency. Add live=true to fetch this route."},{"name":"handoffReceiver","path":"/api/evals/receive-handoff","url":"https://evals.platphormnews.com/api/evals/receive-handoff","required":true,"fetched":false,"status":"declared","httpStatus":null,"durationMs":0,"traceAccepted":false,"message":"Declared demo dependency. Add live=true to fetch this route."}],"browserOpsContract":"Evals remains the release gate; BrowserOps supplies run summaries and artifacts for evidence-backed scorecards.","requestedCapability":"submit_browser_run_evidence","authorizationState":"server_managed","nextAction":"Submit a real BrowserOps run to Evals and keep the lane degraded if completed artifacts are missing."}],"workflows":[{"id":"spec-browserops-evals","label":"Spec to BrowserOps to Evals","from":"spec","to":"evals","capability":"contract_journey_to_release_gate_evidence","status":"preview_ready","explanation":"Spec creates the plan, BrowserOps proves browser behavior, and Evals scores only confirmed evidence.","nextAction":"Preview a Spec journey, run BrowserOps on a trusted target, then send the real run to Evals."},{"id":"agentui-browserops","label":"AgentUI to BrowserOps","from":"agentui","to":"browserops","capability":"validate_rendered_workflow_ui","status":"preview_ready","explanation":"AgentUI remains the workflow UI; BrowserOps returns browser-visible proof for labels, navigation, accessibility, and screenshots.","nextAction":"Launch an AgentUI workflow validation and open the BrowserOps run detail."},{"id":"sandbox-browserops","label":"Sandbox to BrowserOps","from":"sandbox","to":"browserops","capability":"validate_public_preview_url","status":"planned","explanation":"Sandbox builds or replays; BrowserOps validates the public preview in a real browser.","nextAction":"Send a Sandbox preview URL and keep artifacts public-safe unless explicitly protected."},{"id":"mcp-browserops","label":"MCP to BrowserOps","from":"mcp","to":"browserops","capability":"discover_and_call_browserops_tools","status":"planned","explanation":"MCP remains the tool registry; BrowserOps exposes browser evidence tools with protected execution boundaries.","nextAction":"Show MCP manifest and public BrowserOps tools before any protected tool call."}]},"meta":{"generatedAt":"2026-06-02T01:01:25.562Z","traceId":"browserops-public-read","degraded":false,"source":"generated"},"warnings":[],"errors":[]}