refactor: converge hwpod node-ops channel
This commit is contained in:
@@ -34,7 +34,6 @@ export const checkProfiles = Object.freeze({
|
||||
{ id: "check-013-repo-index", group: "repo", command: ["node","--check","internal/audit/index.mjs"] },
|
||||
{ id: "check-014-cloud-api-run-bun", group: "cloud-api", command: ["node","scripts/run-bun.mjs","build","internal/db/runtime-store.ts","--target=bun","--packages=external","--outdir=/tmp/hwlab-ts-check"] },
|
||||
{ id: "check-015-cloud-api-run-bun", group: "cloud-api", command: ["node","scripts/run-bun.mjs","build","internal/db/runtime-store.test.ts","--target=bun","--packages=external","--outdir=/tmp/hwlab-ts-check"] },
|
||||
{ id: "check-016-smoke-summary", group: "smoke", command: ["node","--check","internal/mvp-gate/summary.mjs"] },
|
||||
{ id: "check-017-cloud-api-run-bun", group: "cloud-api", command: ["node","scripts/run-bun.mjs","build","internal/cloud/db-contract.ts","--target=bun","--packages=external","--outdir=/tmp/hwlab-ts-check"] },
|
||||
{ id: "check-018-repo-cloud-web-routes", group: "repo", command: ["node","--check","internal/dev-entrypoint/cloud-web-routes.mjs"] },
|
||||
{ id: "check-019-repo-cloud-web-proxy", group: "repo", command: ["node","--check","internal/dev-entrypoint/cloud-web-proxy.mjs"] },
|
||||
@@ -58,7 +57,6 @@ export const checkProfiles = Object.freeze({
|
||||
{ id: "check-035-cloud-api-run-bun", group: "cloud-api", command: ["node","scripts/run-bun.mjs","build","internal/cloud/server-health.test.ts","--target=bun","--packages=external","--outdir=/tmp/hwlab-ts-check"] },
|
||||
{ id: "check-036-cloud-api-run-bun", group: "cloud-api", command: ["node","scripts/run-bun.mjs","build","internal/cloud/server-agent-chat.test.ts","--target=bun","--packages=external","--outdir=/tmp/hwlab-ts-check"] },
|
||||
{ id: "check-037-cloud-api-run-bun", group: "cloud-api", command: ["node","scripts/run-bun.mjs","build","internal/cloud/server-m3-http.test.ts","--target=bun","--packages=external","--outdir=/tmp/hwlab-ts-check"] },
|
||||
{ id: "check-038-repo-fake-data", group: "repo", command: ["node","--check","internal/device-pod/fake-data.mjs"] },
|
||||
{ id: "check-039-repo-model", group: "repo", command: ["node","--check","internal/sim/model.mjs"] },
|
||||
{ id: "check-040-repo-model-test", group: "repo", command: ["node","--check","internal/sim/model.test.mjs"] },
|
||||
{ id: "check-041-repo-http", group: "repo", command: ["node","--check","internal/sim/http.mjs"] },
|
||||
@@ -68,17 +66,14 @@ export const checkProfiles = Object.freeze({
|
||||
{ id: "check-045-cloud-api-run-bun", group: "cloud-api", command: ["node","scripts/run-bun.mjs","build","cmd/hwlab-cloud-api/main.ts","--target=bun","--packages=external","--outdir=/tmp/hwlab-ts-check"] },
|
||||
{ id: "check-046-cloud-api-run-bun", group: "cloud-api", command: ["node","scripts/run-bun.mjs","build","cmd/hwlab-cloud-api/provision.ts","--target=bun","--packages=external","--outdir=/tmp/hwlab-ts-check"] },
|
||||
{ id: "check-047-cloud-api-run-bun", group: "cloud-api", command: ["node","scripts/run-bun.mjs","build","cmd/hwlab-cloud-api/migrate.ts","--target=bun","--packages=external","--outdir=/tmp/hwlab-ts-check"] },
|
||||
{ id: "check-048-runtime-services-run-bun", group: "runtime-services", command: ["node","scripts/run-bun.mjs","test","cmd/hwlab-edge-proxy/main.test.ts","cmd/hwlab-device-pod/main.test.ts","cmd/hwlab-gateway/main.test.ts","cmd/hwlab-codex-api-responses-forwarder/main.test.ts","cmd/hwlab-deepseek-responses-bridge/main.test.ts"] },
|
||||
{ id: "check-048-runtime-services-run-bun", group: "runtime-services", command: ["node","scripts/run-bun.mjs","test","cmd/hwlab-edge-proxy/main.test.ts","cmd/hwlab-gateway/main.test.ts","cmd/hwlab-codex-api-responses-forwarder/main.test.ts","cmd/hwlab-deepseek-responses-bridge/main.test.ts"] },
|
||||
{ id: "check-056-repo-main", group: "repo", command: ["node","scripts/run-bun.mjs","build","cmd/hwlab-gateway/main.ts","cmd/hwlab-gateway/main.test.ts","--target=bun","--packages=external","--outdir=/tmp/hwlab-ts-check"] },
|
||||
{ id: "check-058-tools-hwlab-gateway-shell", group: "tools", command: ["node","--check","tools/hwlab-gateway-shell.mjs"] },
|
||||
{ id: "check-059-tools-hwlab-gateway-tran", group: "tools", command: ["node","--check","tools/hwlab-gateway-tran.mjs"] },
|
||||
{ id: "check-060-tools-tran", group: "tools", command: ["node","--check","tools/tran.mjs"] },
|
||||
{ id: "check-060a-tools-unidesk-ssh", group: "tools", command: ["node","--check","tools/unidesk-ssh.mjs"] },
|
||||
{ id: "check-061-tools-device-pod-cli", group: "tools", command: ["node","scripts/run-bun.mjs","build","tools/device-pod-cli.ts","tools/device-pod-cli.test.ts","--target=bun","--packages=external","--outdir=/tmp/hwlab-ts-check"] },
|
||||
{ id: "check-061a-tools-device-pod-cli-test", group: "tools", command: ["node","scripts/run-bun.mjs","test","tools/device-pod-cli.test.ts"] },
|
||||
{ id: "check-062-tools-device-pod-cli", group: "tools", command: ["node","--check","tools/device-pod-cli.mjs"] },
|
||||
{ id: "check-062a-tools-device-pod-cli-skill-wrapper", group: "tools", command: ["node","--check","skills/device-pod-cli/scripts/device-pod-cli.mjs"] },
|
||||
{ id: "check-063-tools-device-host-cli", group: "tools", command: ["node","--check","skills/device-pod-cli/assets/device-host-cli.mjs"] },
|
||||
{ id: "check-061-tools-hwpod-cli", group: "tools", command: ["node","scripts/run-bun.mjs","build","tools/hwpod-cli.ts","tools/hwpod-ctl.ts","tools/hwpod-compiler-cli.ts","tools/hwpod-node.ts","tools/hwpod-harness.test.ts","tools/hwpod-node.test.ts","--target=bun","--packages=external","--outdir=/tmp/hwlab-ts-check"] },
|
||||
{ id: "check-061a-tools-hwpod-cli-test", group: "tools", command: ["node","scripts/run-bun.mjs","test","tools/hwpod-harness.test.ts","tools/hwpod-node.test.ts"] },
|
||||
{ id: "check-064-cloud-api-run-bun", group: "cloud-api", command: ["node","scripts/run-bun.mjs","build","scripts/cloud-api-runtime-smoke.mjs","--target=bun","--packages=external","--outdir=/tmp/hwlab-ts-check"] },
|
||||
{ id: "check-065-cloud-api-run-bun", group: "cloud-api", command: ["node","scripts/run-bun.mjs","build","scripts/code-agent-chat-smoke.mjs","--target=bun","--packages=external","--outdir=/tmp/hwlab-ts-check"] },
|
||||
{ id: "check-066-dev-runtime-dev-edge-health-smoke", group: "dev-runtime", command: ["node","--check","scripts/dev-edge-health-smoke.mjs"] },
|
||||
@@ -97,7 +92,6 @@ export const checkProfiles = Object.freeze({
|
||||
{ id: "check-079-smoke-m3-io-control-e2e", group: "smoke", command: ["node","--check","scripts/m3-io-control-e2e.mjs"] },
|
||||
{ id: "check-080-smoke-run-bun", group: "smoke", command: ["node","scripts/run-bun.mjs","build","scripts/src/m3-io-control-e2e.mjs","--target=bun","--packages=external","--outdir=/tmp/hwlab-ts-check"] },
|
||||
{ id: "check-081-smoke-m3-io-control-e2e-test", group: "smoke", command: ["node","--check","scripts/m3-io-control-e2e.test.mjs"] },
|
||||
{ id: "check-082-cloud-web-dev-cloud-workbench-smoke-test", group: "cloud-web", command: ["node","--check","scripts/dev-cloud-workbench-smoke.test.mjs"] },
|
||||
{ id: "check-083-cloud-web-browser-launcher", group: "cloud-web", command: ["node","--check","scripts/src/browser-launcher.mjs"] },
|
||||
{ id: "check-084-cloud-web-playwright-launch-guard", group: "cloud-web", command: ["node","--check","scripts/src/playwright-launch-guard.mjs"] },
|
||||
{ id: "check-085-cloud-web-playwright-launch-guard-cli", group: "cloud-web", command: ["node","--check","scripts/playwright-launch-guard.mjs"] },
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -45,10 +45,16 @@ export const DEFAULT_RUNTIME_PACKAGE_FIELDS = Object.freeze([
|
||||
export const DEFAULT_SHARED_RUNTIME_PATHS = Object.freeze([
|
||||
"internal/protocol/",
|
||||
"internal/build-metadata.mjs",
|
||||
"tools/device-pod-cli.mjs",
|
||||
"tools/device-pod-cli.ts",
|
||||
"tools/src/device-pod-cli-lib.ts",
|
||||
"skills/device-pod-cli/"
|
||||
"tools/hwpod-cli.ts",
|
||||
"tools/hwpod-ctl.ts",
|
||||
"tools/hwpod-compiler-cli.ts",
|
||||
"tools/hwpod-node.ts",
|
||||
"tools/src/hwpod-harness-lib.ts",
|
||||
"tools/src/hwpod-node-lib.ts",
|
||||
"tools/src/hwpod-node-ops-contract.ts",
|
||||
"tools/src/runtime-endpoint-resolver.ts",
|
||||
"skills/hwpod-cli/",
|
||||
"skills/hwpod-ctl/"
|
||||
]);
|
||||
|
||||
export const DEFAULT_DOCS_ONLY_PATHS = Object.freeze([
|
||||
@@ -81,7 +87,6 @@ const serviceSpecificPaths = Object.freeze({
|
||||
"internal/dev-entrypoint/cloud-web-proxy.mjs",
|
||||
"internal/dev-entrypoint/cloud-web-routes.mjs"
|
||||
],
|
||||
"hwlab-device-pod": ["cmd/hwlab-device-pod/", "internal/device-pod/"],
|
||||
"hwlab-gateway": ["cmd/hwlab-gateway/"],
|
||||
"hwlab-edge-proxy": ["cmd/hwlab-edge-proxy/", "internal/dev-entrypoint/http.mjs"],
|
||||
"hwlab-agent-skills": ["skills/"]
|
||||
@@ -91,7 +96,6 @@ const bunCommandServices = new Set([
|
||||
"hwlab-cloud-api",
|
||||
"hwlab-codex-api-responses-forwarder",
|
||||
"hwlab-deepseek-responses-bridge",
|
||||
"hwlab-device-pod",
|
||||
"hwlab-gateway",
|
||||
"hwlab-edge-proxy"
|
||||
]);
|
||||
|
||||
@@ -19,7 +19,6 @@ import {
|
||||
buildM3IoControlSourceReport,
|
||||
runM3IoControlLiveReport
|
||||
} from "./m3-io-control-e2e.mjs";
|
||||
import { runDevCloudWorkbenchLayoutSmoke } from "./dev-cloud-workbench-smoke-lib.mjs";
|
||||
import { classifyCodexRunnerCapability } from "./code-agent-response-contract.mjs";
|
||||
import {
|
||||
HWLAB_AGENT_RUNTIME_SKILL_CLI_VERSION,
|
||||
@@ -157,10 +156,6 @@ export async function buildRpt004Report(args = {}, options = {}) {
|
||||
return finalizeReport(report);
|
||||
}
|
||||
|
||||
const layoutCheck = await runLayoutDimension(parsed, options);
|
||||
report.dimensions.layout = layoutCheck;
|
||||
addCheck(report, layoutCheck);
|
||||
|
||||
const codeAgentReport = await runCodeAgentSessionDimension(parsed, options);
|
||||
report.live.codeAgent = codeAgentReport.summary;
|
||||
report.dimensions.codeAgentSession = codeAgentReport.sessionCheck;
|
||||
@@ -259,8 +254,8 @@ export function classifyRpt004Conclusion(checks = [], options = {}) {
|
||||
classification: "MVP_PASS",
|
||||
mvpPass: true,
|
||||
summary: options.allowM3Write === true
|
||||
? "RPT-004 MVP PASS: current live revision, default Chinese workbench, layout smoke, Code Agent session, Skill CLI HWLAB API route, M3 trusted IO loop, and durable evidence are green."
|
||||
: "RPT-004 MVP PASS: current live revision, default Chinese workbench, layout smoke, Code Agent session, Skill CLI HWLAB API route, and default read-only M3 route verification are green; no M3 write was attempted."
|
||||
? "RPT-004 MVP PASS: current live revision, default Chinese workbench, Code Agent session, Skill CLI HWLAB API route, M3 trusted IO loop, and durable evidence are green."
|
||||
: "RPT-004 MVP PASS: current live revision, default Chinese workbench, Code Agent session, Skill CLI HWLAB API route, and default read-only M3 route verification are green; no M3 write was attempted."
|
||||
};
|
||||
}
|
||||
|
||||
@@ -668,7 +663,7 @@ function baseReport({ parsed, now, root }) {
|
||||
"docs/reference/code-agent-chat-readiness.md",
|
||||
"skills/hwlab-agent-runtime/SKILL.md"
|
||||
],
|
||||
summary: "RPT-004 keeps layout, live revision, M3 trusted IO, durable evidence, and Code Agent skill-path checks in one repo-owned entrypoint."
|
||||
summary: "RPT-004 keeps live revision, M3 trusted IO, durable evidence, and Code Agent skill-path checks in one repo-owned entrypoint."
|
||||
},
|
||||
validationCommands: [
|
||||
"node --check scripts/rpt004-mvp-e2e-harness.mjs",
|
||||
@@ -707,7 +702,6 @@ function baseReport({ parsed, now, root }) {
|
||||
revision: null,
|
||||
health: null,
|
||||
workbench: null,
|
||||
layout: null,
|
||||
m3TrustedLoop: null,
|
||||
durableEvidence: null,
|
||||
codeAgentSkillPath: null,
|
||||
@@ -730,8 +724,8 @@ function baseReport({ parsed, now, root }) {
|
||||
m3WritesLimitedToSimulatorDoDiResetLoop: true,
|
||||
openAiFallbackCountsAsPass: false,
|
||||
statement: liveMutationUsed
|
||||
? "This harness performs public DEV HTTP checks, browser layout smoke, Code Agent session/Skill CLI checks, and an explicit DEV-only bounded M3 simulator DO/DI loop after current+healthy preconditions. It never applies deploys or starts rollouts."
|
||||
: "Default live mode performs public DEV HTTP checks, browser layout smoke, Code Agent session/Skill CLI checks, and read-only M3 route payload classification only. It never writes DO1, applies deploys, starts rollouts, reads secrets, or touches PROD."
|
||||
? "This harness performs public DEV HTTP checks, Code Agent session/Skill CLI checks, and an explicit DEV-only bounded M3 simulator DO/DI loop after current+healthy preconditions. It never applies deploys or starts rollouts."
|
||||
: "Default live mode performs public DEV HTTP checks, Code Agent session/Skill CLI checks, and read-only M3 route payload classification only. It never writes DO1, applies deploys, starts rollouts, reads secrets, or touches PROD."
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -813,7 +807,6 @@ function sourceHarnessCheck(root) {
|
||||
"scripts/rpt004-mvp-e2e-harness.mjs",
|
||||
"scripts/src/rpt004-mvp-e2e-harness.mjs",
|
||||
"scripts/src/rpt004-mvp-e2e-harness.test.mjs",
|
||||
"scripts/dev-cloud-workbench-layout-smoke.mjs",
|
||||
"scripts/m3-io-control-e2e.mjs",
|
||||
"scripts/code-agent-chat-smoke.mjs",
|
||||
"skills/hwlab-agent-runtime/SKILL.md"
|
||||
@@ -940,35 +933,6 @@ function classifyDefaultChineseWorkbench(html) {
|
||||
};
|
||||
}
|
||||
|
||||
async function runLayoutDimension(parsed, options) {
|
||||
const layoutRunner = options.layoutRunner ?? runDevCloudWorkbenchLayoutSmoke;
|
||||
const layout = await layoutRunner({
|
||||
live: true,
|
||||
urlExplicit: true,
|
||||
url: parsed.url,
|
||||
timeoutMs: parsed.timeoutMs,
|
||||
artifactDir: path.join("tmp", "rpt004-layout", safeTimestamp())
|
||||
});
|
||||
const pass = layout.status === "pass";
|
||||
return {
|
||||
id: "layout-smoke-hit-target",
|
||||
status: pass ? "pass" : "blocked",
|
||||
summary: pass
|
||||
? "Live layout smoke passed across desktop/mobile hit target, overflow, and route checks."
|
||||
: `Live layout smoke is blocked: ${layout.summary ?? layout.status}.`,
|
||||
evidenceLevel: pass ? "DEV-LIVE-LAYOUT" : "BLOCKED",
|
||||
observations: {
|
||||
status: layout.status,
|
||||
sourceMode: layout.sourceMode,
|
||||
url: layout.url,
|
||||
failureCount: Array.isArray(layout.failures) ? layout.failures.length : 0,
|
||||
blockers: layout.blockers ?? [],
|
||||
screenshotDir: layout.artifacts?.screenshotDir ?? null,
|
||||
screenshotCount: Array.isArray(layout.artifacts?.screenshots) ? layout.artifacts.screenshots.length : 0
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
async function runCodeAgentSkillPathDimension(parsed, options) {
|
||||
const endpoint = joinBasePath(parsed.apiUrl, "/v1/agent/chat");
|
||||
const response = options.codeAgentRunner
|
||||
@@ -1180,7 +1144,6 @@ async function defaultM3Runner(parsed) {
|
||||
|
||||
function addNotRunDimensions(report, reason) {
|
||||
for (const [key, id] of [
|
||||
["layout", "layout-smoke-hit-target"],
|
||||
["codeAgentSession", "code-agent-session-thread"],
|
||||
["codeAgentSkillPath", "code-agent-skill-path"],
|
||||
["skillCliM3Route", "skill-cli-hwlab-api-m3-route"],
|
||||
@@ -1782,7 +1745,7 @@ function usage() {
|
||||
"Usage: node scripts/rpt004-mvp-e2e-harness.mjs --live --url http://74.48.78.17:16666/ --api-url http://74.48.78.17:16667/",
|
||||
"",
|
||||
"Default --check/source mode validates the harness only and does not claim MVP PASS.",
|
||||
"--live reads DEV health and the 16666 workbench, then runs layout, Code Agent same-session checks, and Skill CLI /v1/m3/io route classification after current+healthy preconditions pass.",
|
||||
"--live reads DEV health and the 16666 workbench, then runs Code Agent same-session checks and Skill CLI /v1/m3/io route classification after current+healthy preconditions pass.",
|
||||
"--allow-m3-write is required for the bounded DEV-only M3 DO/DI write loop; default live mode does not write DO1.",
|
||||
"The command writes JSON and Markdown reports by default in --live mode. It never deploys, rolls out, reads secrets, or touches PROD."
|
||||
].join("\n");
|
||||
|
||||
@@ -96,7 +96,6 @@ test("RPT-004 reports MVP_PASS only when every required live dimension passes",
|
||||
check("live-revision-current", "pass"),
|
||||
check("live-health-ready", "pass"),
|
||||
check("16666-default-chinese-workbench", "pass"),
|
||||
check("layout-smoke-hit-target", "pass"),
|
||||
check("code-agent-skill-path", "pass"),
|
||||
check("code-agent-session-thread", "pass"),
|
||||
check("skill-cli-hwlab-api-m3-route", "pass"),
|
||||
|
||||
Reference in New Issue
Block a user