// Controlul negativ al SBOM-ului Go (sbom-go.test.mjs, Proof of Software 1.4.0), prin mecanismul comun din _control.mjs: fiecare // paznic scos intr-o copie a lui pos.mjs trebuie sa inroseasca EXACT proba lui, cu suita chiar rulata. // node aerenew/tools/proof-of-software/test/sbom-go-control-negativ.mjs import { controleaza } from './_control.mjs'; process.exitCode = await controleaza('sbom-go.test.mjs', [ ['hash-ul h1 scos din forma semantica', 'props: aere(c.properties) });', 'props: [] });', 'CONTROL: un hash h1 schimbat'], // 1.5.0 (B-21): felul se ia din tabla FEL (numele fisierului numit, verificat in arbore); fara intrarea go.sum, SBOM-ul Go cade pe npm ['SBOM-ul Go judecat ca unul npm', "const FEL = { 'go.sum': 'go', ", 'const FEL = { ', 'verify --rebuild-from: arborele e cel atestat'], ['o atestare fara npm pack declarata falsa la reconstructie (forma 1.3.0)', "checks.push({ name: 'rebuild: artifacts', pass: null, detail:", "checks.push({ name: 'rebuild: artifacts', pass: false, detail:", 'verify --rebuild-from: arborele e cel atestat'], ['modulele fixate numai prin go.mod listate drept componente', '.filter((e) => e.h1).map((e) => {', '.filter((e) => true).map((e) => {', 'gomock: numai modulele cu continut'], ['un arbore fara go.sum trecut drept re-derivat', "const goSum = blob('go.sum'); if (goSum == null) return { lipsa:", "const goSum = blob('go.sum') ?? ''; if (false) return { lipsa:", 'un arbore fara go.sum'], // B-21 (2026-09-30): un SBOM care nu isi numeste fisierul, intr-un arbore fara package-lock.json, trebuie sa spuna din ce se putea judeca ['motivul nejudecarii nu mai numeste fisierele arborelui (B-21)', "if (fel === 'npm' && !prezente.includes('package-lock.json') && prezente.length) {", 'if (false) {', 'B-21: un SBOM Go editat'], ['numarul de serie aleator (SBOM-ul nu mai e determinist)', 'const b = crypto.createHash(\'sha256\').update(JSON.stringify({ metadata, components })).digest();', 'const b = crypto.randomBytes(32);', 'determinist'], ['radacina scoasa din comparatie', 'return { radacina: radacina && radacina.purl, meta:', 'return { radacina: null, meta:', 'CONTROL: SBOM-ul spune alt modul radacina'], ]);