import assert from 'node:assert/strict' import { createHash } from 'node:crypto' import { readFile } from 'node:fs/promises' import { basename, join } from 'node:path' import test from 'node:test' const root = new URL('..', import.meta.url).pathname const contract = JSON.parse(await readFile(join(root, 'contracts/online-marketplace.json'), 'utf8')) const registry = JSON.parse(await readFile(join(root, 'contracts/numbered-ipc-registry.json'), 'utf8')) const frontend = await readFile(join(root, 'src/main.tsx'), 'utf8') const runtime = await readFile(join(root, 'src-tauri/src/online_marketplace.rs'), 'utf8') function canonical(value) { if (Array.isArray(value)) return value.map(canonical) if (value && typeof value === 'object') { return Object.fromEntries(Object.keys(value).sort().map((key) => [key, canonical(value[key])])) } return value } test('one online marketplace keeps physical modules and cognitive skills on separate trust chains', () => { assert.equal(contract.humanExperience.oneMarketplaceTwoSections, true) assert.equal(contract.artifactKinds.PHYSICAL_MODULE.installation, 'DOWNLOAD_VERIFY_INSTALL_MOUNT_SELF_TEST') assert.equal(contract.artifactKinds.COGNITIVE_SKILL.installation, 'DOWNLOAD_VERIFY_STORE_ACTIVE_READONLY') assert.equal(contract.artifactKinds.COGNITIVE_SKILL.executionAuthority, false) assert.deepEqual(contract.artifactKinds.COGNITIVE_SKILL.systemPermissions, []) assert.equal(contract.sourceRepositoryBoundary.clientClonesRepository, false) assert.equal(contract.sourceRepositoryBoundary.clientExecutesRepository, false) assert.match(runtime, /entry\.artifact_kind == "PHYSICAL_MODULE"/) assert.match(runtime, /install_skill_at/) }) test('marketplace lifecycle is reachable only through exact numbered operations', () => { const aliases = registry.operations.filter((operation) => operation.module_number === 'HLP-NIPC-MOD-0033').map((operation) => operation.alias) assert.deepEqual(aliases, [ 'get_marketplace_snapshot', 'sync_marketplace_catalog', 'install_marketplace_item', 'uninstall_marketplace_item', 'rollback_marketplace_item', 'get_active_cognitive_skills', ]) for (const alias of aliases.slice(0, 5)) assert.match(frontend, new RegExp(`['"]${alias}['"]`)) assert.match(frontend, /只有零点原核与企业发布双签同时通过/) }) for (const file of [ 'HLP-SKILL-OFFICIAL-DELIVERY-VERIFICATION-0001-0.1.0.ghskill', 'HLP-SKILL-OFFICIAL-MODULE-BOUNDARY-REVIEW-0001-0.1.0.ghskill', ]) { test(`${basename(file)} is a read-only skill with an exact canonical payload digest`, async () => { const skill = JSON.parse(await readFile(join(root, 'marketplace/skills', file), 'utf8')) const digest = createHash('sha256').update(JSON.stringify(canonical(skill.payload))).digest('hex') assert.equal(skill.schema, 'hololake.cognitive-skill-package/v1') assert.equal(skill.manifest.executionAuthority, false) assert.equal(skill.manifest.skillReadonlyGuarantee, true) assert.deepEqual(skill.manifest.permissions, []) assert.equal(skill.manifest.contentDigest, digest) }) }