正向合并正律化(2026-08-20): - 语言人格频道与执行手脚训练按编号 IPC 正律接入(MOD-0035/0036,OP-0158..0163), 剥离直连 tauri::command,恢复单一 numbered 网关铁律 - 教育模块按冰朔谕与 2026-08-19 隔离回执整体移出(证据归隔离区),留空模块占位 - 光湖主域门户挂公告与版本中心(冰朔要求的公告与版本更新主阵地) - 知识工作台内嵌共同工作频道(PersonaChannelBody embedded + knowledgeFocus) - foundation/stage-one 合同补聊天运行时验收声明;版本对齐 0.9.1 - 测试名册计数与断言更新至合并后现实:JS 180/180,Rust 194/194
40 lines
2.3 KiB
JavaScript
40 lines
2.3 KiB
JavaScript
import assert from 'node:assert/strict'
|
|
import fs from 'node:fs'
|
|
import test from 'node:test'
|
|
|
|
const read = (path) => fs.readFileSync(new URL('../' + path, import.meta.url), 'utf8')
|
|
const contract = JSON.parse(read('contracts/native-composition-runtime.json'))
|
|
const rust = read('src-tauri/src/native_composition.rs')
|
|
const knowledge = read('src-tauri/src/knowledge_base.rs')
|
|
const ui = read('src/modules/native-composition/index.tsx')
|
|
const lib = read('src-tauri/src/lib.rs')
|
|
|
|
test('native objects and composition recipes are bounded system contracts', () => {
|
|
assert.equal(contract.internal_object.schema, 'hololake.native-object/v1')
|
|
assert.equal(contract.internal_object.script_allowed, false)
|
|
assert.equal(contract.internal_object.html_allowed, false)
|
|
assert.equal(contract.recipe.registered_modules_only, true)
|
|
assert.equal(contract.recipe.directed_acyclic_graph_required, true)
|
|
assert.equal(contract.recipe.current_account_only, true)
|
|
assert.match(rust, /HOLOLAKE_COMPOSITION_MODULE_NOT_REGISTERED/)
|
|
assert.match(rust, /HOLOLAKE_COMPOSITION_PORT_TYPE_MISMATCH/)
|
|
assert.match(rust, /HOLOLAKE_COMPOSITION_CYCLE_REJECTED/)
|
|
})
|
|
|
|
test('the native core reads only the authenticated HoloLake knowledge snapshot', () => {
|
|
assert.match(knowledge, /get_knowledge_snapshot/)
|
|
assert.match(knowledge, /account_storage_root\(app, "knowledge-v1"\)/)
|
|
assert.match(rust, /execute_knowledge_native_composition/)
|
|
assert.match(rust, /source_is_real_account_data: true/)
|
|
assert.match(fs.readFileSync(new URL('../src-tauri/src/numbered_ipc_dispatch.rs', import.meta.url), 'utf8'), /native_composition::execute_knowledge_native_composition/)
|
|
})
|
|
|
|
test('one execution result can be rendered through every stage-one human projection', () => {
|
|
assert.deepEqual(contract.human_projection.views, ['DASHBOARD', 'COMPARISON', 'VERTICAL_BAR', 'CLASSIFICATION', 'TABLE'])
|
|
assert.equal(contract.human_projection.shares_one_execution_result, true)
|
|
assert.equal(contract.human_projection.owns_source_data, false)
|
|
assert.equal(contract.human_projection.direct_write_authority, false)
|
|
for (const label of ['仪表盘', '对比', '柱状图', '分类', '明细表']) assert.match(ui, new RegExp(label))
|
|
assert.match(ui, /projection\.nativeObject\.rows/)
|
|
assert.match(ui, /projection\?\.groups/)
|
|
})
|