Source commit: 1714a9eedd5b1e30c6c9aceb7a999f2f695ba83c Public tree identity: sha256:e5daffad23fa7c7f1822adccd3c3b4ee0bc7f1a45e0d321eb9a6fb8282b269db
236 lines
7.5 KiB
JavaScript
Executable file
236 lines
7.5 KiB
JavaScript
Executable file
#!/usr/bin/env node
|
|
|
|
const assert = require("assert");
|
|
const fs = require("fs");
|
|
const path = require("path");
|
|
|
|
const repo = path.resolve(__dirname, "..");
|
|
|
|
function read(relativePath) {
|
|
return fs.readFileSync(path.join(repo, relativePath), "utf8");
|
|
}
|
|
|
|
function expect(source, name, pattern) {
|
|
assert.match(source, pattern, `missing acceptance evidence guard: ${name}`);
|
|
}
|
|
|
|
function expectGate(script, gateName) {
|
|
assert(
|
|
script.includes("node scripts/acceptance-evidence-contract-smoke.js"),
|
|
`${gateName} must run acceptance-evidence-contract-smoke.js`
|
|
);
|
|
}
|
|
|
|
const phase2 = read("acceptance_criteria_phase2.md");
|
|
const publicAcceptance = read("scripts/acceptance-public.sh");
|
|
const privateAcceptance = read("scripts/acceptance-private.sh");
|
|
const publicSplit = read("scripts/verify-public-split.sh");
|
|
const localServicesSmoke = read("scripts/local-services-smoke.js");
|
|
const nodeAttachSmoke = read("scripts/node-attach-smoke.js");
|
|
const cliLocalRunSmoke = read("scripts/cli-local-run-smoke.js");
|
|
const vscodeF5Smoke = read("scripts/vscode-f5-smoke.js");
|
|
const dapSmoke = read("scripts/dap-smoke.js");
|
|
const artifactDownloadSmoke = read("scripts/artifact-download-smoke.js");
|
|
const artifactExportSmoke = read("scripts/artifact-export-smoke.js");
|
|
const selfHostedCoordinatorSmoke = read("scripts/self-hosted-coordinator-smoke.js");
|
|
const publicLocalDemoMatrix = read("scripts/public-local-demo-matrix-smoke.js");
|
|
const publicOperatorCompatSmoke = fs.existsSync(
|
|
path.join(repo, "private/hosted-policy/scripts/public-operator-compat-smoke.js")
|
|
)
|
|
? read("private/hosted-policy/scripts/public-operator-compat-smoke.js")
|
|
: null;
|
|
const publicDryrunE2e = read("scripts/public-release-dryrun-e2e.js");
|
|
const finalDryrunEvidence = read("scripts/public-release-dryrun-final-evidence.js");
|
|
|
|
expect(
|
|
phase2,
|
|
"phase 2 rejects type-only acceptance",
|
|
/- \[x\] \*\*Passed:\*\* A criterion cannot be accepted solely because a type, trait, schema, mock, or unit-level model exists\./
|
|
);
|
|
|
|
for (const [gateName, script] of [
|
|
["public acceptance", publicAcceptance],
|
|
["private acceptance", privateAcceptance],
|
|
["public split", publicSplit],
|
|
]) {
|
|
expectGate(script, gateName);
|
|
}
|
|
|
|
expect(publicAcceptance, "public gate includes unit coverage", /cargo test --workspace/);
|
|
expect(publicAcceptance, "public gate includes binary build coverage", /cargo build --workspace --bins/);
|
|
expect(privateAcceptance, "private gate includes hosted unit coverage", /cargo test --manifest-path private\/hosted-policy\/Cargo\.toml/);
|
|
expect(publicSplit, "public split includes copied-tree unit coverage", /cargo test --workspace --manifest-path "\$tmp_dir\/Cargo\.toml"/);
|
|
expect(publicSplit, "public split includes copied-tree binary build coverage", /cargo build --workspace --bins --manifest-path "\$tmp_dir\/Cargo\.toml"/);
|
|
|
|
for (const [gateName, script] of [
|
|
["public acceptance", publicAcceptance],
|
|
["public split", publicSplit],
|
|
]) {
|
|
for (const smoke of [
|
|
"scripts/local-services-smoke.js",
|
|
"scripts/node-attach-smoke.js",
|
|
"scripts/cli-local-run-smoke.js",
|
|
"scripts/vscode-f5-smoke.js",
|
|
"scripts/dap-smoke.js",
|
|
"scripts/artifact-download-smoke.js",
|
|
"scripts/artifact-export-smoke.js",
|
|
"scripts/public-local-demo-matrix-smoke.js",
|
|
]) {
|
|
assert(script.includes(`node ${smoke}`), `${gateName} must run boundary smoke ${smoke}`);
|
|
}
|
|
}
|
|
|
|
for (const smoke of [
|
|
"private/hosted-policy/scripts/hosted-deployment-smoke.js",
|
|
"private/hosted-policy/scripts/hosted-community-smoke.js",
|
|
"private/hosted-policy/scripts/public-operator-compat-smoke.js",
|
|
"private/hosted-policy/scripts/postgres-durable-smoke.js",
|
|
]) {
|
|
assert(
|
|
privateAcceptance.includes(`node ${smoke}`),
|
|
`private acceptance must run hosted boundary smoke ${smoke}`
|
|
);
|
|
}
|
|
assert(
|
|
privateAcceptance.includes("node scripts/self-hosted-coordinator-smoke.js"),
|
|
"private acceptance must run standalone public coordinator smoke"
|
|
);
|
|
|
|
for (const [name, source, patterns] of [
|
|
[
|
|
"local services",
|
|
localServicesSmoke,
|
|
[/cp\.spawn/, /disasmer-coordinator/, /type: "create_node_enrollment_grant"/, /disasmer-node/],
|
|
],
|
|
[
|
|
"node attach",
|
|
nodeAttachSmoke,
|
|
[/cp\.spawn/, /"node"[\s\S]*"attach"/, /used_enrollment_exchange/, /runAttachedNodeWork/],
|
|
],
|
|
[
|
|
"CLI local run",
|
|
cliLocalRunSmoke,
|
|
[/cp\.spawn/, /disasmer[\s\S]*run/, /cli_process_started_node_process[\s\S]*true/],
|
|
],
|
|
[
|
|
"VS Code F5",
|
|
vscodeF5Smoke,
|
|
[
|
|
/runtimeBackend[\s\S]*local-services/,
|
|
/coordinator_task_events[\s\S]*value === 1/,
|
|
/Source Locals/,
|
|
/Task Args and Handles/,
|
|
/unavailable-local-diagnostic/,
|
|
/TaskHandle/,
|
|
/linux_thread/,
|
|
/linux_artifact/,
|
|
/command_spec/,
|
|
/stdout_tail/,
|
|
/stderr_tail/,
|
|
],
|
|
],
|
|
[
|
|
"DAP",
|
|
dapSmoke,
|
|
[
|
|
/runtimeBackend: "local-services"/,
|
|
/threads[\s\S]*compile linux/,
|
|
/send\("attach"/,
|
|
/Source Locals/,
|
|
/return_value/,
|
|
/TaskHandle/,
|
|
/linux_thread/,
|
|
/linux_artifact/,
|
|
/vfs_mounts/,
|
|
/command_spec/,
|
|
/stdout_tail/,
|
|
/stderr_tail/,
|
|
],
|
|
],
|
|
[
|
|
"artifact download",
|
|
artifactDownloadSmoke,
|
|
[/create_artifact_download_link/, /open_artifact_download_stream/, /crossTenantOpen/],
|
|
],
|
|
[
|
|
"artifact export",
|
|
artifactExportSmoke,
|
|
[/export_artifact_to_node/, /node-export-receiver/, /coordinator_bulk_relay_allowed[\s\S]*false/],
|
|
],
|
|
[
|
|
"standalone public coordinator",
|
|
selfHostedCoordinatorSmoke,
|
|
[/disasmer-coordinator/, /standalone-public-coordinator/, /public-coordinator-compat\.json/],
|
|
],
|
|
[
|
|
"public local demo matrix",
|
|
publicLocalDemoMatrix,
|
|
[/scripts\/cli-install-smoke\.js/, /scripts\/node-attach-smoke\.js/, /scripts\/vscode-f5-smoke\.js/],
|
|
],
|
|
]) {
|
|
for (const pattern of patterns) {
|
|
expect(source, name, pattern);
|
|
}
|
|
}
|
|
|
|
if (publicOperatorCompatSmoke) {
|
|
for (const pattern of [
|
|
/disasmer-hosted-service/,
|
|
/"disasmer-cli"[\s\S]*"node"[\s\S]*"attach"/,
|
|
/node_enrollment_exchanged/,
|
|
/"disasmer-node"/,
|
|
/node_capabilities_recorded/,
|
|
/task_launched/,
|
|
/poll_task_assignment/,
|
|
/debug_command/,
|
|
/task_log_recorded/,
|
|
/vfs_metadata_recorded/,
|
|
/public-operator-compat\.json/,
|
|
]) {
|
|
expect(publicOperatorCompatSmoke, "public operator compatibility", pattern);
|
|
}
|
|
}
|
|
|
|
for (const pattern of [
|
|
/DISASMER_PUBLIC_RELEASE_DRYRUN_E2E/,
|
|
/downloadReleaseAssets/,
|
|
/verifyChecksums/,
|
|
/git"[\s\S]*"clone"/,
|
|
/defaultLoginPlan\.coordinator/,
|
|
/--complete-browser-code/,
|
|
/node_enrollment_exchanged/,
|
|
/disasmerNode/,
|
|
/launch_task/,
|
|
/worker_assignment_poll_verified/,
|
|
/validateStandalonePublicCoordinator/,
|
|
/public_coordinator_validated/,
|
|
/standalone-public-coordinator/,
|
|
/task_recorded/,
|
|
/list_task_events/,
|
|
/create_artifact_download_link/,
|
|
/vscode-f5-smoke\.js/,
|
|
/downloaded_release_assets: true/,
|
|
/vscode_debugger_verified: true/,
|
|
/artifact_download_or_export_verified: true/,
|
|
/public-release-dryrun-e2e\.json/,
|
|
]) {
|
|
expect(publicDryrunE2e, "public release e2e evidence", pattern);
|
|
}
|
|
|
|
for (const pattern of [
|
|
/public-release-dryrun-forgejo-release\.json/,
|
|
/deployment-manifest\.json/,
|
|
/public-release-dryrun-service\.json/,
|
|
/public-operator-compat\.json/,
|
|
/public-coordinator-compat\.json/,
|
|
/public-release-dryrun-e2e\.json/,
|
|
/coordinator_validation/,
|
|
/downloaded_release_assets/,
|
|
/vscode_debugger_verified/,
|
|
/artifact_download_or_export_verified/,
|
|
/public-release-dryrun-final\.json/,
|
|
]) {
|
|
expect(finalDryrunEvidence, "public release final evidence", pattern);
|
|
}
|
|
|
|
console.log("Acceptance evidence contract smoke passed");
|