From 6ba0857d8132151961c90687f2ea1931a349f0bc Mon Sep 17 00:00:00 2001 From: midiakiasat Date: Tue, 7 Jul 2026 23:53:05 +0200 Subject: [PATCH] Close Move 87 public surface backlink fanout --- README.md | 16 +++++ ...OVE88_SURFACE_BACKLINK_FANOUT_CLOSURE.json | 44 +++++++++++++ package.json | 9 ++- ...8-surface-backlink-fanout-closure-audit.sh | 64 +++++++++++++++++++ ...move88-surface-backlink-fanout-closure.mjs | 57 +++++++++++++++++ ...8-surface-backlink-fanout-closure.test.mjs | 9 +++ 6 files changed, 196 insertions(+), 3 deletions(-) create mode 100644 control/ANTIMATTERIUM_CONTROL_MOVE88_SURFACE_BACKLINK_FANOUT_CLOSURE.json create mode 100755 scripts/move88-surface-backlink-fanout-closure-audit.sh create mode 100644 scripts/verify-move88-surface-backlink-fanout-closure.mjs create mode 100644 tests/move88-surface-backlink-fanout-closure.test.mjs diff --git a/README.md b/README.md index 942be02..f5aa548 100644 --- a/README.md +++ b/README.md @@ -982,3 +982,19 @@ CONTROL 0.2.41 closes the Move 85 public surface backlink fanout from CONTROL v0 - NO_CURRENT_PRODUCTION_CLAIM=true - NO_STARSHIP_CLAIM=true - NO_PHYSICAL_PRODUCTION_INSTRUCTIONS=true + +## Move 88 — CONTROL closes Move 87 public surface backlink fanout + +CONTROL v0.2.42 closes the Move 87 public surface backlink fanout from CONTROL v0.2.41. + +- Source CONTROL release: https://github.com/ANTIMATTERIUM/CONTROL/releases/tag/v0.2.41-antimatterium-control-move85-surface-closure +- Source CONTROL CI: https://github.com/ANTIMATTERIUM/CONTROL/actions/runs/28900560674 +- Source CONTROL closure ID: 448a8074d76baf5d958c6069dbf3d7a9057f86b17aa5d2c74aee76167afc7542 +- Core release: https://github.com/ANTIMATTERIUM/ANTIMATTERIUM/releases/tag/v0.2.56-antimatterium-control-v0241-backlink +- WWW release: https://github.com/ANTIMATTERIUM/WWW/releases/tag/v0.1.52-antimatterium-www-control-v0241-backlink +- Org profile release: https://github.com/ANTIMATTERIUM/.github/releases/tag/v0.0.50-antimatterium-org-profile-control-v0241-backlink +- Short public tag required: true +- No local root required: true +- NO_CURRENT_PRODUCTION_CLAIM=true +- NO_STARSHIP_CLAIM=true +- NO_PHYSICAL_PRODUCTION_INSTRUCTIONS=true diff --git a/control/ANTIMATTERIUM_CONTROL_MOVE88_SURFACE_BACKLINK_FANOUT_CLOSURE.json b/control/ANTIMATTERIUM_CONTROL_MOVE88_SURFACE_BACKLINK_FANOUT_CLOSURE.json new file mode 100644 index 0000000..6e1a0f4 --- /dev/null +++ b/control/ANTIMATTERIUM_CONTROL_MOVE88_SURFACE_BACKLINK_FANOUT_CLOSURE.json @@ -0,0 +1,44 @@ +{ + "schema": "antimatterium.control.move88.surface_backlink_fanout_closure.v1", + "move": 88, + "control_version": "0.2.42", + "closes_move": 87, + "source_control": { + "version": "0.2.41", + "tag": "v0.2.41-antimatterium-control-move85-surface-closure", + "release": "https://github.com/ANTIMATTERIUM/CONTROL/releases/tag/v0.2.41-antimatterium-control-move85-surface-closure", + "ci_run": "https://github.com/ANTIMATTERIUM/CONTROL/actions/runs/28900560674", + "closure_id": "448a8074d76baf5d958c6069dbf3d7a9057f86b17aa5d2c74aee76167afc7542" + }, + "surface_backlinks": { + "core": { + "version": "0.2.56", + "tag": "v0.2.56-antimatterium-control-v0241-backlink", + "release": "https://github.com/ANTIMATTERIUM/ANTIMATTERIUM/releases/tag/v0.2.56-antimatterium-control-v0241-backlink", + "backlink_id": "4622bd6ad3a04a2808e7d35584d7862c3f14f02ab716206ea743d3611c6e7a57" + }, + "www": { + "version": "0.1.52", + "tag": "v0.1.52-antimatterium-www-control-v0241-backlink", + "release": "https://github.com/ANTIMATTERIUM/WWW/releases/tag/v0.1.52-antimatterium-www-control-v0241-backlink", + "backlink_id": "19d230a33c603d7e211e35746da61423e9a54fcf9dba4961e28c785060b94b2e" + }, + "org_profile": { + "version": "0.0.50", + "tag": "v0.0.50-antimatterium-org-profile-control-v0241-backlink", + "release": "https://github.com/ANTIMATTERIUM/.github/releases/tag/v0.0.50-antimatterium-org-profile-control-v0241-backlink", + "backlink_id": "12a9a1874bfbb2c74162766daebb6eda020409f41285ceeab962ed9c14c7c163" + } + }, + "closure": { + "short_public_tag_required": true, + "no_local_root_required": true, + "move87_surface_backlinks_replayed": true, + "id": "280a205f6631f33300cfd7d5c25c791877823bd52fbcc9d7544d85d561401d4b" + }, + "safety": { + "no_current_production_claim": true, + "no_starship_claim": true, + "no_physical_production_instructions": true + } +} diff --git a/package.json b/package.json index 82bc7dd..de10ab9 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "audit:rootless-reconstruction": "bash scripts/public-rootless-reconstruction-audit.sh", "replay": "bash scripts/cold-replay.sh", "scan": "node scripts/scan-public-safety.mjs", - "verify": "node scripts/verify-control.mjs && node scripts/scan-public-safety.mjs && node scripts/verify-ci-gate.mjs && node scripts/verify-ci-evidence-seal.mjs && node scripts/verify-bidirectional-public-closure.mjs && node scripts/verify-stranger-final-audit.mjs && node scripts/verify-public-release-matrix.mjs && node scripts/verify-public-stranger-ci.mjs && node scripts/verify-second-order-public-stranger-ci-closure.mjs && node scripts/verify-public-ecosystem-index.mjs && node scripts/verify-public-ecosystem-index-echo-closure.mjs && node scripts/verify-public-rootless-reconstruction-index.mjs && node scripts/verify-rootless-fanout-echo-closure.mjs && node scripts/verify-rootless-fanout-backlink-closure.mjs && node scripts/verify-rootless-fanout-backpropagation-echo-closure.mjs && node scripts/verify-rootless-fanout-backpropagation-echo-fanout-closure.mjs && node scripts/verify-rootless-fanout-backpropagation-echo-fanout-backlink-closure.mjs && node scripts/verify-rootless-fanout-backpropagation-echo-fanout-backlink-closure-backpropagation-closure.mjs && node scripts/verify-rootless-fanout-backlink-closure-backpropagation-closure-fanout-closure.mjs && node scripts/verify-rootless-fanout-backlink-closure-backpropagation-closure-fanout-backlink-closure.mjs && node scripts/verify-rootless-fanout-backlink-closure-backpropagation-closure-fanout-backlink-closure-fanout-closure.mjs && node scripts/verify-rootless-fanout-backlink-closure-backpropagation-closure-fanout-backlink-closure-fanout-closure-backlink-closure.mjs && node scripts/verify-rootless-fanout-backlink-closure-backpropagation-closure-fanout-backlink-closure-fanout-closure-backlink-closure-fanout-closure.mjs && node scripts/verify-rootless-fanout-backlink-closure-backpropagation-closure-fanout-backlink-closure-fanout-closure-backlink-closure-fanout-closure-backlink-closure.mjs && node scripts/verify-rootless-fanout-backlink-closure-backpropagation-closure-fanout-backlink-closure-fanout-closure-backlink-closure-fanout-closure-backlink-closure-backlink-closure.mjs && node scripts/verify-rootless-fanout-backlink-closure-backpropagation-closure-fanout-backlink-closure-fanout-closure-backlink-closure-fanout-closure-backlink-closure-backlink-closure-backlink-closure.mjs && node scripts/verify-rootless-fanout-backlink-closure-backpropagation-closure-fanout-backlink-closure-fanout-closure-backlink-closure-fanout-closure-backlink-closure-backlink-closure-backlink-closure-backlink-closure.mjs && node scripts/verify-rootless-fanout-backlink-closure-backpropagation-closure-fanout-backlink-closure-fanout-closure-backlink-closure-fanout-closure-backlink-closure-backlink-closure-backlink-closure-backlink-closure-backlink-closure.mjs && node scripts/verify-move38-surface-backlink-fanout-closure.mjs && node scripts/verify-move40-surface-backlink-fanout-closure.mjs && node scripts/verify-move42-surface-backlink-fanout-closure.mjs && node scripts/verify-move44-surface-backlink-fanout-closure.mjs && node scripts/verify-move46-surface-backlink-fanout-closure.mjs && node scripts/verify-move48-surface-backlink-fanout-closure.mjs && node scripts/verify-move50-surface-backlink-fanout-closure.mjs && node scripts/verify-move52-surface-backlink-fanout-closure.mjs && node scripts/verify-move54-surface-backlink-fanout-closure.mjs && node scripts/verify-move56-surface-backlink-fanout-closure.mjs && node scripts/verify-move58-surface-backlink-fanout-closure.mjs && node scripts/verify-move60-surface-backlink-fanout-closure.mjs && node scripts/verify-move62-surface-backlink-fanout-closure.mjs && node scripts/verify-move64-surface-backlink-fanout-closure.mjs && node scripts/verify-move66-surface-backlink-fanout-closure.mjs && node scripts/verify-move68-surface-backlink-fanout-closure.mjs && node scripts/verify-move70-surface-backlink-fanout-closure.mjs && node scripts/verify-move72-surface-backlink-fanout-closure.mjs && node scripts/verify-move74-surface-backlink-fanout-closure.mjs && node scripts/verify-move76-surface-backlink-fanout-closure.mjs && node scripts/verify-move78-surface-backlink-fanout-closure.mjs && node scripts/verify-move80-surface-backlink-fanout-closure.mjs && node scripts/verify-move82-surface-backlink-fanout-closure.mjs && node scripts/verify-move84-surface-backlink-fanout-closure.mjs && node scripts/verify-move86-surface-backlink-fanout-closure.mjs", + "verify": "node scripts/verify-control.mjs && node scripts/scan-public-safety.mjs && node scripts/verify-ci-gate.mjs && node scripts/verify-ci-evidence-seal.mjs && node scripts/verify-bidirectional-public-closure.mjs && node scripts/verify-stranger-final-audit.mjs && node scripts/verify-public-release-matrix.mjs && node scripts/verify-public-stranger-ci.mjs && node scripts/verify-second-order-public-stranger-ci-closure.mjs && node scripts/verify-public-ecosystem-index.mjs && node scripts/verify-public-ecosystem-index-echo-closure.mjs && node scripts/verify-public-rootless-reconstruction-index.mjs && node scripts/verify-rootless-fanout-echo-closure.mjs && node scripts/verify-rootless-fanout-backlink-closure.mjs && node scripts/verify-rootless-fanout-backpropagation-echo-closure.mjs && node scripts/verify-rootless-fanout-backpropagation-echo-fanout-closure.mjs && node scripts/verify-rootless-fanout-backpropagation-echo-fanout-backlink-closure.mjs && node scripts/verify-rootless-fanout-backpropagation-echo-fanout-backlink-closure-backpropagation-closure.mjs && node scripts/verify-rootless-fanout-backlink-closure-backpropagation-closure-fanout-closure.mjs && node scripts/verify-rootless-fanout-backlink-closure-backpropagation-closure-fanout-backlink-closure.mjs && node scripts/verify-rootless-fanout-backlink-closure-backpropagation-closure-fanout-backlink-closure-fanout-closure.mjs && node scripts/verify-rootless-fanout-backlink-closure-backpropagation-closure-fanout-backlink-closure-fanout-closure-backlink-closure.mjs && node scripts/verify-rootless-fanout-backlink-closure-backpropagation-closure-fanout-backlink-closure-fanout-closure-backlink-closure-fanout-closure.mjs && node scripts/verify-rootless-fanout-backlink-closure-backpropagation-closure-fanout-backlink-closure-fanout-closure-backlink-closure-fanout-closure-backlink-closure.mjs && node scripts/verify-rootless-fanout-backlink-closure-backpropagation-closure-fanout-backlink-closure-fanout-closure-backlink-closure-fanout-closure-backlink-closure-backlink-closure.mjs && node scripts/verify-rootless-fanout-backlink-closure-backpropagation-closure-fanout-backlink-closure-fanout-closure-backlink-closure-fanout-closure-backlink-closure-backlink-closure-backlink-closure.mjs && node scripts/verify-rootless-fanout-backlink-closure-backpropagation-closure-fanout-backlink-closure-fanout-closure-backlink-closure-fanout-closure-backlink-closure-backlink-closure-backlink-closure-backlink-closure.mjs && node scripts/verify-rootless-fanout-backlink-closure-backpropagation-closure-fanout-backlink-closure-fanout-closure-backlink-closure-fanout-closure-backlink-closure-backlink-closure-backlink-closure-backlink-closure-backlink-closure.mjs && node scripts/verify-move38-surface-backlink-fanout-closure.mjs && node scripts/verify-move40-surface-backlink-fanout-closure.mjs && node scripts/verify-move42-surface-backlink-fanout-closure.mjs && node scripts/verify-move44-surface-backlink-fanout-closure.mjs && node scripts/verify-move46-surface-backlink-fanout-closure.mjs && node scripts/verify-move48-surface-backlink-fanout-closure.mjs && node scripts/verify-move50-surface-backlink-fanout-closure.mjs && node scripts/verify-move52-surface-backlink-fanout-closure.mjs && node scripts/verify-move54-surface-backlink-fanout-closure.mjs && node scripts/verify-move56-surface-backlink-fanout-closure.mjs && node scripts/verify-move58-surface-backlink-fanout-closure.mjs && node scripts/verify-move60-surface-backlink-fanout-closure.mjs && node scripts/verify-move62-surface-backlink-fanout-closure.mjs && node scripts/verify-move64-surface-backlink-fanout-closure.mjs && node scripts/verify-move66-surface-backlink-fanout-closure.mjs && node scripts/verify-move68-surface-backlink-fanout-closure.mjs && node scripts/verify-move70-surface-backlink-fanout-closure.mjs && node scripts/verify-move72-surface-backlink-fanout-closure.mjs && node scripts/verify-move74-surface-backlink-fanout-closure.mjs && node scripts/verify-move76-surface-backlink-fanout-closure.mjs && node scripts/verify-move78-surface-backlink-fanout-closure.mjs && node scripts/verify-move80-surface-backlink-fanout-closure.mjs && node scripts/verify-move82-surface-backlink-fanout-closure.mjs && node scripts/verify-move84-surface-backlink-fanout-closure.mjs && node scripts/verify-move86-surface-backlink-fanout-closure.mjs && node scripts/verify-move88-surface-backlink-fanout-closure.mjs", "verify:bidirectional-closure": "node scripts/verify-bidirectional-public-closure.mjs", "verify:ci": "node scripts/verify-ci-gate.mjs", "verify:ci-evidence": "node scripts/verify-ci-evidence-seal.mjs", @@ -126,8 +126,11 @@ "test:move84-surface-backlink-fanout-closure": "node --test tests/move84-surface-backlink-fanout-closure.test.mjs", "verify:move86-surface-backlink-fanout-closure": "node scripts/verify-move86-surface-backlink-fanout-closure.mjs", "audit:move86-surface-backlink-fanout-closure": "bash scripts/move86-surface-backlink-fanout-closure-audit.sh", - "test:move86-surface-backlink-fanout-closure": "node --test tests/move86-surface-backlink-fanout-closure.test.mjs" + "test:move86-surface-backlink-fanout-closure": "node --test tests/move86-surface-backlink-fanout-closure.test.mjs", + "verify:move88-surface-backlink-fanout-closure": "node scripts/verify-move88-surface-backlink-fanout-closure.mjs", + "audit:move88-surface-backlink-fanout-closure": "bash scripts/move88-surface-backlink-fanout-closure-audit.sh", + "test:move88-surface-backlink-fanout-closure": "node --test tests/move88-surface-backlink-fanout-closure.test.mjs" }, "type": "module", - "version": "0.2.41" + "version": "0.2.42" } diff --git a/scripts/move88-surface-backlink-fanout-closure-audit.sh b/scripts/move88-surface-backlink-fanout-closure-audit.sh new file mode 100755 index 0000000..a59879c --- /dev/null +++ b/scripts/move88-surface-backlink-fanout-closure-audit.sh @@ -0,0 +1,64 @@ +#!/usr/bin/env bash +set -euo pipefail + +echo "=== ANTIMATTERIUM MOVE 88 PUBLIC SURFACE BACKLINK FANOUT CLOSURE AUDIT ===" + +WORK="$(mktemp -d)" +trap 'rm -rf "$WORK"' EXIT + +clone_tag() { + local repo="$1" + local tag="$2" + local dir="$3" + git clone --depth 1 --branch "$tag" "$repo" "$WORK/$dir" >/dev/null 2>&1 +} + +run_if_script() { + local script="$1" + if node -e 'const fs=require("fs"); const pkg=JSON.parse(fs.readFileSync("package.json","utf8")); process.exit(pkg.scripts && pkg.scripts[process.argv[1]] ? 0 : 1)' "$script"; then + npm run "$script" + else + echo "SKIP_MISSING_SCRIPT=$script" + fi +} + +echo "=== CLONE control-v0241 ===" +clone_tag "https://github.com/ANTIMATTERIUM/CONTROL.git" "v0.2.41-antimatterium-control-move85-surface-closure" "control-v0241" +cd "$WORK/control-v0241" +echo "=== VERIFY CONTROL v0.2.41 ===" +npm run verify:move86-surface-backlink-fanout-closure + +echo "=== CLONE core-v0256 ===" +clone_tag "https://github.com/ANTIMATTERIUM/ANTIMATTERIUM.git" "v0.2.56-antimatterium-control-v0241-backlink" "core-v0256" +cd "$WORK/core-v0256" +echo "=== VERIFY CORE v0.2.56 ===" +npm run verify:move87-control-v0241-backlink +npm run test:move87-control-v0241-backlink +run_if_script verify:privacy +run_if_script verify:claims + +echo "=== CLONE www-v0152 ===" +clone_tag "https://github.com/ANTIMATTERIUM/WWW.git" "v0.1.52-antimatterium-www-control-v0241-backlink" "www-v0152" +cd "$WORK/www-v0152" +echo "=== VERIFY WWW v0.1.52 ===" +npm run verify:move87-control-v0241-backlink +npm run test:move87-control-v0241-backlink +run_if_script verify:privacy +run_if_script verify:claims + +echo "=== CLONE org-profile-v0050 ===" +clone_tag "https://github.com/ANTIMATTERIUM/.github.git" "v0.0.50-antimatterium-org-profile-control-v0241-backlink" "org-profile-v0050" +cd "$WORK/org-profile-v0050" +echo "=== VERIFY ORG PROFILE v0.0.50 ===" +npm run verify:move87-control-v0241-backlink +npm run test:move87-control-v0241-backlink +run_if_script verify:privacy +run_if_script verify:claims + +echo "ANTIMATTERIUM_MOVE88_SURFACE_BACKLINK_FANOUT_CLOSURE_AUDIT_PASS=true" +echo "ANTIMATTERIUM_MOVE87_SURFACE_BACKLINKS_REPLAYED=true" +echo "ANTIMATTERIUM_SHORT_PUBLIC_TAG_REQUIRED=true" +echo "ANTIMATTERIUM_NO_LOCAL_ROOT_REQUIRED=true" +echo "NO_CURRENT_PRODUCTION_CLAIM=true" +echo "NO_STARSHIP_CLAIM=true" +echo "NO_PHYSICAL_PRODUCTION_INSTRUCTIONS=true" diff --git a/scripts/verify-move88-surface-backlink-fanout-closure.mjs b/scripts/verify-move88-surface-backlink-fanout-closure.mjs new file mode 100644 index 0000000..9585ce8 --- /dev/null +++ b/scripts/verify-move88-surface-backlink-fanout-closure.mjs @@ -0,0 +1,57 @@ +import fs from 'node:fs'; +import assert from 'node:assert/strict'; +import crypto from 'node:crypto'; + +const receipt = JSON.parse(fs.readFileSync('control/ANTIMATTERIUM_CONTROL_MOVE88_SURFACE_BACKLINK_FANOUT_CLOSURE.json', 'utf8')); + +assert.equal(receipt.schema, 'antimatterium.control.move88.surface_backlink_fanout_closure.v1'); +assert.equal(receipt.move, 88); +assert.equal(receipt.control_version, '0.2.42'); +assert.equal(receipt.closes_move, 87); + +assert.equal(receipt.source_control.version, '0.2.41'); +assert.equal(receipt.source_control.tag, 'v0.2.41-antimatterium-control-move85-surface-closure'); +assert.equal(receipt.source_control.release, 'https://github.com/ANTIMATTERIUM/CONTROL/releases/tag/v0.2.41-antimatterium-control-move85-surface-closure'); +assert.equal(receipt.source_control.ci_run, 'https://github.com/ANTIMATTERIUM/CONTROL/actions/runs/28900560674'); +assert.equal(receipt.source_control.closure_id, '448a8074d76baf5d958c6069dbf3d7a9057f86b17aa5d2c74aee76167afc7542'); + +assert.equal(receipt.surface_backlinks.core.version, '0.2.56'); +assert.equal(receipt.surface_backlinks.core.tag, 'v0.2.56-antimatterium-control-v0241-backlink'); +assert.equal(receipt.surface_backlinks.core.release, 'https://github.com/ANTIMATTERIUM/ANTIMATTERIUM/releases/tag/v0.2.56-antimatterium-control-v0241-backlink'); +assert.equal(receipt.surface_backlinks.core.backlink_id, '4622bd6ad3a04a2808e7d35584d7862c3f14f02ab716206ea743d3611c6e7a57'); + +assert.equal(receipt.surface_backlinks.www.version, '0.1.52'); +assert.equal(receipt.surface_backlinks.www.tag, 'v0.1.52-antimatterium-www-control-v0241-backlink'); +assert.equal(receipt.surface_backlinks.www.release, 'https://github.com/ANTIMATTERIUM/WWW/releases/tag/v0.1.52-antimatterium-www-control-v0241-backlink'); +assert.equal(receipt.surface_backlinks.www.backlink_id, '19d230a33c603d7e211e35746da61423e9a54fcf9dba4961e28c785060b94b2e'); + +assert.equal(receipt.surface_backlinks.org_profile.version, '0.0.50'); +assert.equal(receipt.surface_backlinks.org_profile.tag, 'v0.0.50-antimatterium-org-profile-control-v0241-backlink'); +assert.equal(receipt.surface_backlinks.org_profile.release, 'https://github.com/ANTIMATTERIUM/.github/releases/tag/v0.0.50-antimatterium-org-profile-control-v0241-backlink'); +assert.equal(receipt.surface_backlinks.org_profile.backlink_id, '12a9a1874bfbb2c74162766daebb6eda020409f41285ceeab962ed9c14c7c163'); + +assert.equal(receipt.closure.short_public_tag_required, true); +assert.equal(receipt.closure.no_local_root_required, true); +assert.equal(receipt.closure.move87_surface_backlinks_replayed, true); + +assert.equal(receipt.safety.no_current_production_claim, true); +assert.equal(receipt.safety.no_starship_claim, true); +assert.equal(receipt.safety.no_physical_production_instructions, true); + +const clone = structuredClone(receipt); +delete clone.closure.id; +const expectedId = crypto.createHash('sha256').update(JSON.stringify(clone)).digest('hex'); +assert.equal(receipt.closure.id, expectedId); + +console.log('ANTIMATTERIUM_CONTROL_MOVE88_SURFACE_BACKLINK_FANOUT_CLOSURE_VERIFY_PASS=true'); +console.log('ANTIMATTERIUM_MOVE87_SURFACE_BACKLINKS_BOUND=true'); +console.log('ANTIMATTERIUM_CONTROL_V0241_BOUND=true'); +console.log('ANTIMATTERIUM_CORE_V0256_BOUND=true'); +console.log('ANTIMATTERIUM_WWW_V0152_BOUND=true'); +console.log('ANTIMATTERIUM_ORG_PROFILE_V0050_BOUND=true'); +console.log('ANTIMATTERIUM_SHORT_PUBLIC_TAG_REQUIRED=true'); +console.log('ANTIMATTERIUM_NO_LOCAL_ROOT_REQUIRED=true'); +console.log('MOVE88_SURFACE_BACKLINK_FANOUT_CLOSURE_ID=' + receipt.closure.id); +console.log('NO_CURRENT_PRODUCTION_CLAIM=true'); +console.log('NO_STARSHIP_CLAIM=true'); +console.log('NO_PHYSICAL_PRODUCTION_INSTRUCTIONS=true'); diff --git a/tests/move88-surface-backlink-fanout-closure.test.mjs b/tests/move88-surface-backlink-fanout-closure.test.mjs new file mode 100644 index 0000000..091ff15 --- /dev/null +++ b/tests/move88-surface-backlink-fanout-closure.test.mjs @@ -0,0 +1,9 @@ +import test from 'node:test'; +import assert from 'node:assert/strict'; +import { execFileSync } from 'node:child_process'; + +test('Move 88 CONTROL closure verifier exits cleanly', () => { + const out = execFileSync(process.execPath, ['scripts/verify-move88-surface-backlink-fanout-closure.mjs'], { encoding: 'utf8' }); + assert.match(out, /ANTIMATTERIUM_CONTROL_MOVE88_SURFACE_BACKLINK_FANOUT_CLOSURE_VERIFY_PASS=true/); + assert.match(out, /ANTIMATTERIUM_MOVE87_SURFACE_BACKLINKS_BOUND=true/); +});