diff --git a/README.md b/README.md index 448613a..65b00da 100644 --- a/README.md +++ b/README.md @@ -735,3 +735,19 @@ Org profile binds CONTROL v0.2.48 as a public surface backlink. - No current production claim: true - No starship claim: true - No physical production instructions: true + + +## Move 103 — Org profile binds CONTROL v0.2.49 + +Org profile 0.0.58 binds the CONTROL v0.2.49 public closure. + +- CONTROL release: https://github.com/ANTIMATTERIUM/CONTROL/releases/tag/v0.2.49-antimatterium-control-move101-surface-closure +- CONTROL CI: https://github.com/ANTIMATTERIUM/CONTROL/actions/runs/29123896960 +- CONTROL closure ID: fb8753876826c2273ea40e7e28e4a1570b3f06e1085820b83b84921905398073 +- Surface release tag: v0.0.58-antimatterium-org-profile-control-v0249-backlink +- Backlink ID: 9138f0c926065906b07dec873f74ee00bd5c787e5cfbd0ffaaec104814bf565f +- 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/package.json b/package.json index 10e2403..5a05091 100644 --- a/package.json +++ b/package.json @@ -91,8 +91,10 @@ "verify:move99-control-v0247-backlink": "node scripts/verify-org-profile-move99-control-v0247-backlink.mjs", "test:move99-control-v0247-backlink": "node --test tests/org-profile-move99-control-v0247-backlink.test.mjs", "verify:move101-control-v0248-backlink": "node scripts/verify-org-profile-move101-control-v0248-backlink.mjs", - "test:move101-control-v0248-backlink": "node --test tests/org-profile-move101-control-v0248-backlink.test.mjs" + "test:move101-control-v0248-backlink": "node --test tests/org-profile-move101-control-v0248-backlink.test.mjs", + "verify:move103-control-v0249-backlink": "node scripts/verify-org-profile-move103-control-v0249-backlink.mjs", + "test:move103-control-v0249-backlink": "node --test tests/org-profile-move103-control-v0249-backlink.test.mjs" }, "type": "module", - "version": "0.0.57" + "version": "0.0.58" } diff --git a/public/receipts/ANTIMATTERIUM_ORG_PROFILE_MOVE103_CONTROL_V0249_BACKLINK.json b/public/receipts/ANTIMATTERIUM_ORG_PROFILE_MOVE103_CONTROL_V0249_BACKLINK.json new file mode 100644 index 0000000..cabcbe0 --- /dev/null +++ b/public/receipts/ANTIMATTERIUM_ORG_PROFILE_MOVE103_CONTROL_V0249_BACKLINK.json @@ -0,0 +1,36 @@ +{ + "protocol": "ANTIMATTERIUM_ORG_PROFILE_MOVE103_CONTROL_V0249_BACKLINK", + "move": 103, + "surface": "Org profile", + "repository": "ANTIMATTERIUM/.github", + "package": { + "name": "@antimatterium/org-profile", + "version": "0.0.58", + "release_tag": "v0.0.58-antimatterium-org-profile-control-v0249-backlink", + "release": "https://github.com/ANTIMATTERIUM/.github/releases/tag/v0.0.58-antimatterium-org-profile-control-v0249-backlink", + "receipt_path": "public/receipts/ANTIMATTERIUM_ORG_PROFILE_MOVE103_CONTROL_V0249_BACKLINK.json", + "verifier": "scripts/verify-org-profile-move103-control-v0249-backlink.mjs", + "test": "tests/org-profile-move103-control-v0249-backlink.test.mjs" + }, + "source_control": { + "version": "0.2.49", + "release_tag": "v0.2.49-antimatterium-control-move101-surface-closure", + "release": "https://github.com/ANTIMATTERIUM/CONTROL/releases/tag/v0.2.49-antimatterium-control-move101-surface-closure", + "ci_run": "https://github.com/ANTIMATTERIUM/CONTROL/actions/runs/29123896960", + "closure_id": "fb8753876826c2273ea40e7e28e4a1570b3f06e1085820b83b84921905398073", + "main_sha": "c475e2c8478fb384c6b350f1a62d063c57ee2b06" + }, + "constraints": { + "short_public_tag_required": true, + "no_local_root_required": true, + "no_current_production_claim": true, + "no_starship_claim": true, + "no_physical_production_instructions": true + }, + "backlink": { + "id": "9138f0c926065906b07dec873f74ee00bd5c787e5cfbd0ffaaec104814bf565f", + "kind": "move103_control_v0249_surface_backlink", + "binds_control_release": "https://github.com/ANTIMATTERIUM/CONTROL/releases/tag/v0.2.49-antimatterium-control-move101-surface-closure", + "binds_control_closure_id": "fb8753876826c2273ea40e7e28e4a1570b3f06e1085820b83b84921905398073" + } +} diff --git a/scripts/verify-org-profile-move103-control-v0249-backlink.mjs b/scripts/verify-org-profile-move103-control-v0249-backlink.mjs new file mode 100755 index 0000000..c0f6e32 --- /dev/null +++ b/scripts/verify-org-profile-move103-control-v0249-backlink.mjs @@ -0,0 +1,55 @@ +#!/usr/bin/env node +import fs from "node:fs"; +import crypto from "node:crypto"; +import assert from "node:assert/strict"; + +const receiptPath = "public/receipts/ANTIMATTERIUM_ORG_PROFILE_MOVE103_CONTROL_V0249_BACKLINK.json"; +const receipt = JSON.parse(fs.readFileSync(receiptPath, "utf8")); + +assert.equal(receipt.protocol, "ANTIMATTERIUM_ORG_PROFILE_MOVE103_CONTROL_V0249_BACKLINK"); +assert.equal(receipt.move, 103); +assert.equal(receipt.surface, "Org profile"); +assert.equal(receipt.repository, "ANTIMATTERIUM/.github"); + +assert.equal(receipt.package.name, "@antimatterium/org-profile"); +assert.equal(receipt.package.version, "0.0.58"); +assert.equal(receipt.package.release_tag, "v0.0.58-antimatterium-org-profile-control-v0249-backlink"); +assert.equal(receipt.package.release, "https://github.com/ANTIMATTERIUM/.github/releases/tag/v0.0.58-antimatterium-org-profile-control-v0249-backlink"); + +assert.equal(receipt.source_control.version, "0.2.49"); +assert.equal(receipt.source_control.release_tag, "v0.2.49-antimatterium-control-move101-surface-closure"); +assert.equal(receipt.source_control.release, "https://github.com/ANTIMATTERIUM/CONTROL/releases/tag/v0.2.49-antimatterium-control-move101-surface-closure"); +assert.equal(receipt.source_control.ci_run, "https://github.com/ANTIMATTERIUM/CONTROL/actions/runs/29123896960"); +assert.equal(receipt.source_control.closure_id, "fb8753876826c2273ea40e7e28e4a1570b3f06e1085820b83b84921905398073"); +assert.equal(receipt.source_control.main_sha, "c475e2c8478fb384c6b350f1a62d063c57ee2b06"); + +assert.equal(receipt.constraints.short_public_tag_required, true); +assert.equal(receipt.constraints.no_local_root_required, true); +assert.equal(receipt.constraints.no_current_production_claim, true); +assert.equal(receipt.constraints.no_starship_claim, true); +assert.equal(receipt.constraints.no_physical_production_instructions, true); + +const { backlink, ...canonical } = receipt; +const computed = crypto.createHash("sha256").update(JSON.stringify(canonical)).digest("hex"); + +assert.equal(backlink.kind, "move103_control_v0249_surface_backlink"); +assert.equal(backlink.binds_control_release, receipt.source_control.release); +assert.equal(backlink.binds_control_closure_id, receipt.source_control.closure_id); +assert.equal(backlink.id, computed); +assert.equal(backlink.id, "9138f0c926065906b07dec873f74ee00bd5c787e5cfbd0ffaaec104814bf565f"); + +const serialized = JSON.stringify(receipt); +const localUserRootToken = ["/", "Users", "/"].join(""); +const localDownloadsAppsToken = ["Downloads", "Apps"].join("/"); +assert.equal(serialized.includes(localUserRootToken), false); +assert.equal(serialized.includes(localDownloadsAppsToken), false); + +console.log("ANTIMATTERIUM_ORG_PROFILE_MOVE103_CONTROL_V0249_BACKLINK" + "_VERIFY_PASS=true"); +console.log("ANTIMATTERIUM_ORG_PROFILE_MOVE103_CONTROL_V0249_BACKLINK" + "_CONTROL_V0249_RELEASE_BOUND=true"); +console.log("ANTIMATTERIUM_ORG_PROFILE_MOVE103_CONTROL_V0249_BACKLINK" + "_CONTROL_V0249_MEMBER=true"); +console.log("ANTIMATTERIUM_SHORT_PUBLIC_TAG_REQUIRED=true"); +console.log("ANTIMATTERIUM_NO_LOCAL_ROOT_REQUIRED=true"); +console.log("ANTIMATTERIUM_ORG_PROFILE_MOVE103_CONTROL_V0249_BACKLINK" + "_ID=" + backlink.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/org-profile-move103-control-v0249-backlink.test.mjs b/tests/org-profile-move103-control-v0249-backlink.test.mjs new file mode 100644 index 0000000..f7b6b69 --- /dev/null +++ b/tests/org-profile-move103-control-v0249-backlink.test.mjs @@ -0,0 +1,10 @@ +import test from "node:test"; +import assert from "node:assert/strict"; +import { spawnSync } from "node:child_process"; + +test("Org profile Move 103 verifier receipt is stable", () => { + const result = spawnSync(process.execPath, ["scripts/verify-org-profile-move103-control-v0249-backlink.mjs"], { encoding: "utf8" }); + assert.equal(result.status, 0, result.stderr || result.stdout); + assert.match(result.stdout, /VERIFY_PASS=true/); + assert.match(result.stdout, /9138f0c926065906b07dec873f74ee00bd5c787e5cfbd0ffaaec104814bf565f/); +});