2026-08-21 01:29:17 +08:00
|
|
|
import assert from 'node:assert/strict'
|
|
|
|
|
import { readFileSync } from 'node:fs'
|
|
|
|
|
import test from 'node:test'
|
|
|
|
|
|
|
|
|
|
const read = (path) => readFileSync(new URL(`../${path}`, import.meta.url), 'utf8')
|
|
|
|
|
|
|
|
|
|
test('personal skill algorithm is native while every pack remains private and channel scoped', () => {
|
|
|
|
|
const contract = JSON.parse(read('contracts/personal-skill-runtime.json'))
|
|
|
|
|
const runtime = read('src-tauri/src/personal_skill_runtime.rs')
|
|
|
|
|
const channel = read('src-tauri/src/personal_channel.rs')
|
|
|
|
|
|
2026-08-21 08:21:03 +08:00
|
|
|
assert.equal(contract.source.local_commit, '1d7fe6c')
|
2026-08-21 01:29:17 +08:00
|
|
|
assert.equal(contract.source.remote_canonical_state, 'LOCAL_COMMIT_VERIFIED_NOT_REMOTE_CANON')
|
|
|
|
|
assert.equal(contract.privacy.default_visibility, 'PRIVATE')
|
|
|
|
|
assert.equal(contract.privacy.share_state, 'NOT_AUTHORIZED')
|
|
|
|
|
assert.equal(contract.privacy.marketplace_state, 'NOT_AUTHORIZED')
|
2026-08-21 12:04:50 +08:00
|
|
|
assert.equal(contract.privacy.private_skill_packs_embedded_in_public_binary, false)
|
|
|
|
|
assert.equal(contract.privacy.private_skill_source, 'AUTHENTICATED_ACCOUNT_SCOPED_RUNTIME_ONLY')
|
|
|
|
|
assert.equal(contract.privacy.descriptor_registration_is_installation, false)
|
|
|
|
|
assert.equal(contract.privacy.missing_private_pack_state, 'PRIVATE_SKILLS_NOT_PROVISIONED')
|
|
|
|
|
assert.equal(contract.privacy.sha256_mismatch_behavior, 'FAIL_CLOSED')
|
2026-08-21 01:29:17 +08:00
|
|
|
assert.equal(contract.brain_boundaries.deterministic_algorithm_is_hololake_native, true)
|
|
|
|
|
assert.equal(contract.brain_boundaries.model_output_is_candidate_only, true)
|
|
|
|
|
assert.equal(contract.brain_boundaries.skill_success_may_mutate_persona_self_kernel, false)
|
|
|
|
|
assert.equal(contract.brain_boundaries.external_write_route, 'GH-CHANNEL-RECEIPT-0001')
|
|
|
|
|
assert.match(runtime, /HOLOLAKE_NATIVE_PERSONAL_SKILL_PLANNER/)
|
|
|
|
|
assert.match(runtime, /registered_initial_identity/)
|
2026-08-21 12:04:50 +08:00
|
|
|
assert.equal([...runtime.matchAll(/include_bytes!/g)].length, 1)
|
|
|
|
|
assert.match(runtime, /include_bytes!\("\.\.\/\.\.\/runtime-kernels\/personal-skills\/personal-skill-contract\.json"\)/)
|
|
|
|
|
assert.doesNotMatch(runtime, /include_bytes!\(concat!\("\.\.\/\.\.\/runtime-kernels\/personal-skills\//)
|
|
|
|
|
assert.match(runtime, /account_storage_root\(app, "personal-skill-brains-v1"\)/)
|
|
|
|
|
assert.match(runtime, /fs::read\(&path\)/)
|
|
|
|
|
assert.match(runtime, /expected_sha256/)
|
|
|
|
|
assert.match(runtime, /HOLOLAKE_PERSONAL_SKILL_PRIVATE_SHA256_MISMATCH/)
|
|
|
|
|
assert.match(runtime, /PRIVATE_SKILLS_NOT_PROVISIONED/)
|
|
|
|
|
assert.match(runtime, /ACCOUNT_PRIVATE_SOURCE_SHA256_VERIFIED/)
|
2026-08-21 01:29:17 +08:00
|
|
|
assert.match(channel, /personal_skill_runtime::ensure_current_channel/)
|
|
|
|
|
})
|
|
|
|
|
|
2026-08-21 12:04:50 +08:00
|
|
|
test('registered descriptors are not installation claims and Shiyu Yaochu stays deferred', () => {
|
2026-08-21 01:29:17 +08:00
|
|
|
const contract = JSON.parse(read('contracts/personal-skill-runtime.json'))
|
|
|
|
|
const runtime = read('src-tauri/src/personal_skill_runtime.rs')
|
2026-08-21 12:04:50 +08:00
|
|
|
const registered = Object.values(contract.registered_private_skill_descriptors).flat()
|
2026-08-21 01:29:17 +08:00
|
|
|
|
2026-08-21 12:04:50 +08:00
|
|
|
assert.equal(registered.length, 13)
|
2026-08-21 01:29:17 +08:00
|
|
|
assert.equal(contract.deferred['SYS-SY'].state, 'DEFERRED_SERVER_AND_INITIAL_CHANNEL_NOT_PROVISIONED')
|
|
|
|
|
assert.doesNotMatch(runtime, /skill!\("SY-YC-METRIC-CALIBER-001\.json"/)
|
|
|
|
|
assert.match(runtime, /"channelNumber": "SYS-SY"/)
|
|
|
|
|
})
|
|
|
|
|
|
2026-08-21 08:21:03 +08:00
|
|
|
test('EarEarDan and See You Tomorrow skill closures keep exact private subject boundaries', () => {
|
|
|
|
|
const contract = JSON.parse(read('contracts/personal-skill-runtime.json'))
|
|
|
|
|
const runtime = read('src-tauri/src/personal_skill_runtime.rs')
|
|
|
|
|
|
2026-08-21 12:04:50 +08:00
|
|
|
assert.deepEqual(contract.registered_private_skill_descriptors['SYS-GLW-PTS-0001'], [
|
2026-08-21 08:21:03 +08:00
|
|
|
'CE-EED-MANJU-PRODUCTION-001',
|
|
|
|
|
'CE-EED-CAUSAL-PIPELINE-DIAGNOSTIC-001',
|
|
|
|
|
])
|
2026-08-21 12:04:50 +08:00
|
|
|
assert.ok(
|
|
|
|
|
contract.registered_private_skill_descriptors['SYS-ZZ'].includes('ZZ-AN-SOURCE-FACT-CLOSURE-001'),
|
|
|
|
|
)
|
|
|
|
|
assert.ok(
|
|
|
|
|
contract.registered_private_skill_descriptors['SYS-ZZ'].includes(
|
|
|
|
|
'ZZ-QW-ROLE-CAUSAL-ARCHITECTURE-001',
|
|
|
|
|
),
|
|
|
|
|
)
|
2026-08-21 08:21:03 +08:00
|
|
|
assert.equal(contract.admission_boundaries['ICE-BB-0004_is_ICE-GL-CA001'], false)
|
|
|
|
|
assert.equal(contract.admission_boundaries.earerdan_historical_labels_are_aliases, false)
|
|
|
|
|
assert.equal(contract.admission_boundaries.qiuqiu_relationship_memory_is_exportable_skill, false)
|
2026-08-21 12:04:50 +08:00
|
|
|
assert.equal(
|
|
|
|
|
contract.admission_boundaries['ZZ-QW-ROLE-CAUSAL-ARCHITECTURE-001'],
|
|
|
|
|
'PRIVATE_DESCRIPTOR_REGISTERED_NOT_EXECUTABLE_REGISTRATION_PENDING',
|
|
|
|
|
)
|
2026-08-21 08:21:03 +08:00
|
|
|
})
|
|
|
|
|
|
2026-08-21 01:29:17 +08:00
|
|
|
test('the worker UI presents personal skill brain separately from persona worker and tool executor', () => {
|
|
|
|
|
const panel = read('src/modules/knowledge-agent/LocalWorkerPanel.tsx')
|
2026-08-21 01:57:57 +08:00
|
|
|
assert.match(panel, /本频道私有技能/)
|
2026-08-21 01:29:17 +08:00
|
|
|
assert.match(panel, /模型只给语义候选/)
|
|
|
|
|
assert.match(panel, /现实写入仍走频道回执和目标读回/)
|
|
|
|
|
})
|