{ "$schema": "https://hwlab.pikastech.local/schemas/dev-gate-report.schema.json", "$id": "https://hwlab.pikastech.local/reports/dev-gate/dev-cloud-workbench-live.json", "reportVersion": "v1", "status": "pass", "issue": "pikasTech/HWLAB#7", "taskId": "dev-cloud-workbench-live", "commitId": "unknown", "acceptanceLevel": "dev_cloud_workbench_live", "devOnly": true, "prodDisabled": true, "reportLifecycle": { "version": "v1", "state": "active", "activeEndpoint": "http://74.48.78.17:16667", "activeBrowserEndpoint": "http://74.48.78.17:16666", "deprecatedEndpoint": null, "summary": "Current deployed browser user journey report for the 16666 Cloud Workbench; it does not substitute for M3/M4/M5 hardware acceptance." }, "task": "DC-DCSN-P0-2026-003", "refs": [ "pikasTech/HWLAB#7", "pikasTech/HWLAB#108", "pikasTech/HWLAB#99", "pikasTech/HWLAB#78", "pikasTech/HWLAB#117", "pikasTech/HWLAB#118", "pikasTech/HWLAB#119", "pikasTech/HWLAB#120", "pikasTech/HWLAB#131", "pikasTech/HWLAB#164" ], "mode": "live", "url": "http://74.48.78.17:16666/", "generatedAt": "2026-05-22T18:11:35.955Z", "evidenceLevel": "DEV-LIVE-BROWSER", "devLive": true, "sourceIdentity": { "status": "observed", "source": "git-head", "commitId": "ee9d60f00b1bc47c1d99b7edb8746623333fe544", "shortCommitId": "ee9d60f00b1b", "ref": "test/deployed-workbench-journey-evidence", "worktreeState": "dirty", "dirty": true, "reportCommitId": "unknown", "summary": "Source HEAD was observed, but the worktree was not cleanly attributable when the report was generated; top-level commitId is unknown rather than pretending to identify uncommitted source." }, "runtimeIdentity": { "status": "observed", "source": "health-live", "endpoint": "http://74.48.78.17:16667/health/live", "serviceId": "hwlab-cloud-api", "environment": "dev", "healthStatus": "degraded", "commitId": "c7de474", "commitSource": "runtime-env", "imageTag": "c7de474", "observedAt": "2026-05-22T18:11:24.844Z", "summary": "Live runtime identity was observed through the existing read-only health endpoint and is not inferred from source git HEAD." }, "sourceContract": { "status": "pass", "documents": [ "docs/cloud-web-workbench.md", "docs/reference/cloud-workbench.md", "docs/reference/code-agent-chat-readiness.md" ], "summary": "The deployed browser journey is anchored to the Cloud Workbench and Code Agent readiness contracts." }, "validationCommands": [ "node --check scripts/dev-cloud-workbench-smoke.mjs", "node --check scripts/src/dev-cloud-workbench-smoke-lib.mjs", "node scripts/dev-cloud-workbench-smoke.mjs --static", "node scripts/dev-cloud-workbench-smoke.mjs --live --url http://74.48.78.17:16666/ --report reports/dev-gate/dev-cloud-workbench-live.json", "node scripts/validate-dev-gate-report.mjs reports/dev-gate/dev-cloud-workbench-live.json", "node scripts/validate-dev-gate-report.mjs" ], "localSmoke": { "status": "not_run", "commands": [ "node scripts/dev-cloud-workbench-smoke.mjs --static" ], "evidence": [ "Static mode verifies the source contract and same-origin Code Agent wiring only." ], "summary": "Static workbench smoke is SOURCE-level evidence and does not prove the deployed browser journey." }, "dryRun": { "status": "not_applicable", "commands": [ "node scripts/dev-cloud-workbench-smoke.mjs --static" ], "evidence": [ "No dry-run substitute is accepted for the deployed browser journey." ], "summary": "The journey evidence is collected from the real DEV browser endpoint, not a dry-run fixture." }, "devPreconditions": { "status": "pass", "requirements": [ "GET http://74.48.78.17:16666/ serves the Cloud Workbench HTML.", "Browser DOM exposes the default workbench and core controls.", "A controlled same-origin POST /v1/agent/chat returns completed UI-visible evidence or reports a blocker.", "No hardware write API, service restart, PROD access, or secret read is performed." ], "commands": [ "node scripts/dev-cloud-workbench-smoke.mjs --live --url http://74.48.78.17:16666/ --report reports/dev-gate/dev-cloud-workbench-live.json" ], "summary": "Deployed 16666 browser journey and same-origin Code Agent chat completed." }, "endpoints": { "frontend": "http://74.48.78.17:16666", "api": "http://74.48.78.17:16667", "edge": "http://74.48.78.17:16667" }, "checks": [ { "id": "live-http-html", "status": "pass", "summary": "Live URL serves the Cloud Workbench HTML.", "evidence": [ "http://74.48.78.17:16666/", "HTTP 200", "text/html; charset=utf-8" ] }, { "id": "live-browser-dom", "status": "pass", "summary": "Browser DOM confirms the default workbench, core controls, and outer scroll lock.", "evidence": [ "title=HWLAB 云工作台", "bodyOverflow=hidden", "htmlOverflow=hidden" ], "observations": { "title": "HWLAB 云工作台", "bodyOverflow": "hidden", "htmlOverflow": "hidden", "workspaceHidden": false, "gateHidden": true, "helpHidden": true, "outerScrollLocked": true, "labelsPresent": true, "coreControlsVisible": { "commandInput": true, "commandSend": true, "agentChatStatus": true, "conversationList": true, "hardwareList": true, "wiringTab": true, "recordsTab": true } } }, { "id": "live-code-agent-browser-journey", "status": "pass", "summary": "Deployed browser journey opened the workbench, sent a Code Agent message, and observed a completed UI response.", "evidence": [ "POST /v1/agent/chat HTTP 200", "status=completed", "provider=openai-responses", "model=gpt-5.5", "traceId=trc_cloud-web-workbench-1779473490624-11", "uiStatus=已回复" ], "observations": { "controls": { "appShell": true, "workspace": true, "commandInput": true, "commandSend": true, "agentChatStatus": true, "conversationList": true, "hardwareList": true, "wiringTab": true, "recordsTab": true }, "request": { "method": "POST", "status": 200, "urlPath": "/v1/agent/chat" }, "response": { "status": "completed", "provider": "openai-responses", "model": "gpt-5.5", "backend": "hwlab-cloud-api/openai-responses", "traceId": "trc_cloud-web-workbench-1779473490624-11", "hasReply": true, "error": null }, "ui": { "title": "HWLAB 云工作台", "workspaceHidden": false, "gateHidden": true, "helpHidden": true, "agentChatStatus": "已回复", "inputCleared": true, "completedMessageVisible": true, "failedMessageVisible": false, "messageCount": 4, "completedMessageHasNonSensitiveMeta": true }, "networkEvents": [ { "method": "POST", "status": 200, "urlPath": "/v1/agent/chat", "body": { "status": "completed", "provider": "openai-responses", "model": "gpt-5.5", "backend": "hwlab-cloud-api/openai-responses", "traceId": "trc_cloud-web-workbench-1779473490624-11", "hasReply": true, "error": null } } ] } } ], "blockers": [], "safety": { "prodTouched": false, "servicesRestarted": false, "heavyE2E": false, "hardwareWriteApis": false, "sourceIsDevLive": false, "liveMode": "browser-user-journey-with-code-agent-post", "retainedApiFields": [ "status", "provider", "model", "backend", "traceId", "hasReply", "error.code", "error.missingEnv" ], "statement": "Live smoke opens the deployed workbench and sends one controlled Code Agent message; it does not call hardware write APIs and must not be used to infer M3 DEV-LIVE hardware-loop acceptance." }, "artifacts": { "reportPath": "/workspace/hwlab/.worktrees/deployed-workbench-journey-evidence/reports/dev-gate/dev-cloud-workbench-live.json" } }