feat: admit signed dynamic world surface module
This commit is contained in:
parent
292889f934
commit
2b1f5d47fd
18 changed files with 584 additions and 14 deletions
|
|
@ -0,0 +1,43 @@
|
|||
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')
|
||||
const contract = JSON.parse(read('contracts/dynamic-language-world-visual-system.json'))
|
||||
const registry = JSON.parse(read('contracts/numbered-ipc-registry.json'))
|
||||
const modulePackage = JSON.parse(read('fixtures/module-packages/HLP-MOD-OFFICIAL-DYNAMIC-WORLD-SURFACE-0001-0.1.0.ghmod'))
|
||||
const rust = read('src-tauri/src/world_climate.rs')
|
||||
const frontend = read('src/main.tsx')
|
||||
const styles = read('src/styles.css')
|
||||
|
||||
test('dynamic world surface is signed, opt-in and cannot mutate world facts', () => {
|
||||
assert.equal(modulePackage.manifest.moduleNumber, 'HLP-MOD-OFFICIAL-DYNAMIC-WORLD-SURFACE-0001')
|
||||
assert.equal(modulePackage.manifest.registrationClass, 'OFFICIAL_LIGHTHOUSE')
|
||||
assert.equal(modulePackage.manifest.adapter, 'dynamic-language-world-surface-v1')
|
||||
assert.deepEqual(modulePackage.manifest.permissions, ['REALITY_TIME_READ', 'PUBLIC_WEATHER_QUERY'])
|
||||
assert.equal(modulePackage.payload.adapterConfig.routingPermissionOrFactMutation, false)
|
||||
assert.equal(contract.visual_lock.climate_changes_routing_permission_or_fact, false)
|
||||
assert.equal(contract.visual_lock.daily_sampling_domain_changes_open_domain, false)
|
||||
})
|
||||
|
||||
test('climate query crosses the unique numbered route and fails closed before activation', () => {
|
||||
const route = registry.operations.find((item) => item.alias === 'get_world_climate')
|
||||
assert.equal(route.operation_number, 'HLP-NIPC-OP-0147')
|
||||
assert.equal(route.module_number, 'HLP-NIPC-MOD-0031')
|
||||
assert.equal(route.target_number, 'HLP-NIPC-TGT-0031')
|
||||
assert.equal(route.admission, 'VERIFIED_HUMAN_ROUTE')
|
||||
assert.match(rust, /require_active_module_adapter/)
|
||||
assert.doesNotMatch(rust, /#\[tauri::command\]/)
|
||||
assert.doesNotMatch(frontend, /from ['"]@tauri-apps\/api\/core['"]/)
|
||||
})
|
||||
|
||||
test('official shell and five lake themes remain the only admitted layout', () => {
|
||||
assert.equal(contract.visual_lock.layout, 'EXISTING_OFFICIAL_FIVE_LAKE_SHELL_UNCHANGED')
|
||||
assert.equal(contract.visual_lock.themes.length, 5)
|
||||
assert.equal(contract.donor_disposition.traditional_surface, 'REJECTED_DUPLICATE_SHELL_EIGHT_THEMES_AND_SIMULATED_STATUS')
|
||||
assert.match(frontend, /夜湖星光/)
|
||||
assert.match(frontend, /天气源暂不可用;湖面只使用北京时间,不生成假天气。/)
|
||||
assert.match(styles, /\.world-climate-veil/)
|
||||
assert.doesNotMatch(frontend, /语料库新增 217 条/)
|
||||
assert.doesNotMatch(frontend, /频道活动 · 七日/)
|
||||
})
|
||||
|
|
@ -6,7 +6,7 @@ const catalog = JSON.parse(readFileSync(new URL('../contracts/module-donor-admis
|
|||
const numbered = JSON.parse(readFileSync(new URL('../contracts/numbered-ipc-registry.json', import.meta.url), 'utf8'))
|
||||
|
||||
test('chaotic donors are read-only candidates and never a bulk merge source', () => {
|
||||
assert.match(catalog.state, /^[A-Z]+_CANDIDATES_ADMITTED_REMAINING_DONORS_QUARANTINED$/)
|
||||
assert.equal(catalog.state, 'SEVEN_CANDIDATES_ADMITTED_DONOR_SOURCES_REMAIN_READ_ONLY')
|
||||
assert.equal(catalog.root_rule.repair_old_application_in_place, false)
|
||||
assert.equal(catalog.root_rule.bulk_merge_or_wholesale_copy_allowed, false)
|
||||
assert.equal(catalog.root_rule.one_candidate_per_admission_cycle, true)
|
||||
|
|
@ -19,7 +19,7 @@ test('candidate coordinates are unique but are not permanent runtime module numb
|
|||
const pending = catalog.candidates.filter((candidate) => candidate.state.startsWith('QUARANTINED'))
|
||||
assert.equal(new Set(coordinates).size, coordinates.length)
|
||||
assert.ok(admitted.length > 0)
|
||||
assert.ok(pending.length > 0)
|
||||
assert.equal(pending.length, 0)
|
||||
assert.deepEqual(catalog.candidates.slice(0, admitted.length), admitted)
|
||||
assert.deepEqual(catalog.candidates.slice(admitted.length), pending)
|
||||
assert.equal(catalog.root_rule.candidate_number_is_runtime_module_number, false)
|
||||
|
|
|
|||
|
|
@ -7,8 +7,8 @@ test('identity, webview and direct broker numbers compile into one unique eviden
|
|||
const generated = JSON.parse(readFileSync(new URL('../generated/unified-number-coordinate-tree.json', import.meta.url), 'utf8'))
|
||||
assert.deepEqual(generated, compileUnifiedNumberTree())
|
||||
assert.equal(generated.recordId, 'HLP-UNIFIED-NUMBER-TREE-001')
|
||||
assert.equal(generated.routeCount, 168)
|
||||
assert.equal(new Set(generated.routes.map((route) => route.path)).size, 168)
|
||||
assert.equal(generated.routeCount, 169)
|
||||
assert.equal(new Set(generated.routes.map((route) => route.path)).size, 169)
|
||||
assert.equal(generated.invariants.everyPhysicalCallHasNumberedRoute, true)
|
||||
assert.equal(generated.invariants.everyAcceptedCallHasEvidenceClass, true)
|
||||
assert.ok(generated.routes.every((route) => route.admission && route.evidence))
|
||||
|
|
|
|||
Loading…
Reference in a new issue