arch(hololake): establish clean Tauri desktop line
This commit is contained in:
parent
d1c8d79899
commit
a2302cfd13
23 changed files with 662 additions and 17 deletions
|
|
@ -32,7 +32,7 @@ test("current JD state stays transitional and cannot impersonate final master co
|
|||
});
|
||||
|
||||
test("current architecture and global engineering rules project the same control contract", () => {
|
||||
assert.equal(architecture.version, "2026-08-12.16");
|
||||
assert.equal(architecture.version, "2026-08-12.17");
|
||||
assert.equal(architecture.server_os_control.machine_projection, "routing/guanghu-os-control-architecture.json");
|
||||
assert.equal(architecture.server_os_control.final_topology, contract.final_topology);
|
||||
assert.equal(rules.server_os_control.linux_deletion_is_completion, false);
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ const architecture = readJson("routing/hololake-current-architecture.json");
|
|||
const age = readJson("routing/hololake-age-runtime-architecture.json");
|
||||
|
||||
test("current architecture starts with the AGE runtime source", () => {
|
||||
assert.equal(architecture.version, "2026-08-12.16");
|
||||
assert.equal(architecture.version, "2026-08-12.17");
|
||||
assert.equal(architecture.age_runtime.record_id, "HLP-AGE-RUNTIME-ARCHITECTURE-001");
|
||||
assert.equal(architecture.read_order[0], architecture.paradigm_ai_language_persona_os.architecture_page);
|
||||
assert.equal(architecture.read_order[1], architecture.cognitive_gravity_and_continuity.architecture_page);
|
||||
|
|
|
|||
137
routing/hololake-canonical-desktop-shell.json
Normal file
137
routing/hololake-canonical-desktop-shell.json
Normal file
|
|
@ -0,0 +1,137 @@
|
|||
{
|
||||
"schema": "hololake.canonical-desktop-shell/v2",
|
||||
"record_id": "HLP-CANONICAL-DESKTOP-SHELL-001",
|
||||
"version": "2026-08-12.2",
|
||||
"state": "CURRENT_CANONICAL_FOUNDATION_ROOT_CREATED_TAURI_SCAFFOLD_PENDING",
|
||||
"development_id": "DEV-20260811-010",
|
||||
"decision": {
|
||||
"canonical_shell": "TAURI_V2_RUST_REACT",
|
||||
"canonical_source": "product-source/hololake-native-desktop",
|
||||
"canonical_source_state": "FOUNDATION_ROOT_CREATED_TAURI_SCAFFOLD_PENDING",
|
||||
"existing_tauri_source": "product-source/hololake-platform",
|
||||
"existing_tauri_role": "READ_ONLY_ENGINEERING_CAPABILITY_DONOR_AND_ACCEPTANCE_ORACLE",
|
||||
"electron_role": "READ_ONLY_KNOWLEDGE_UX_BEHAVIOR_DONOR_AND_ACCEPTANCE_ORACLE",
|
||||
"electron_source": [
|
||||
"product-source/hololake-desktop",
|
||||
"product-source/guanghu-knowledge-base"
|
||||
],
|
||||
"parallel_product_lines_allowed": false,
|
||||
"new_existing_tauri_product_features_allowed": false,
|
||||
"new_electron_product_features_allowed": false,
|
||||
"donor_immediate_deletion_allowed": false,
|
||||
"knowledge_completeness_depends_on_shell_framework": false,
|
||||
"electron_is_current_knowledge_ux_reference": true
|
||||
},
|
||||
"update_route": {
|
||||
"record_id": "HLP-SIGNED-OPT-IN-UPDATE-001",
|
||||
"state": "ARCHITECTURE_ACCEPTED_IMPLEMENTATION_NOT_STARTED",
|
||||
"upstream_product_update_endpoints_allowed": false,
|
||||
"hololake_owned_https_endpoint_only": true,
|
||||
"release_broadcast_may_arrive_automatically": true,
|
||||
"silent_download_allowed": false,
|
||||
"human_opt_in_install_required": true,
|
||||
"automatic_restart_allowed": false,
|
||||
"restart_activation_required": true,
|
||||
"tauri_update_artifact_signature_required": true,
|
||||
"tauri_update_signature_verification_disable_allowed": false,
|
||||
"platform_code_signature_required": true,
|
||||
"macos_developer_id_and_notarization_required_for_direct_distribution": true,
|
||||
"private_signing_key_bundled_or_committed": false,
|
||||
"startup_health_receipt_required": true,
|
||||
"recoverable_rollback_required": true,
|
||||
"required_broadcast_fields": [
|
||||
"VERSION",
|
||||
"FEATURES_AND_FIXES",
|
||||
"COMPATIBILITY_AND_MINIMUM_VERSION",
|
||||
"DOWNLOAD_SIZE",
|
||||
"RESTART_IMPACT",
|
||||
"PUBLISHED_AT",
|
||||
"PLATFORM_AND_ARCH_URL",
|
||||
"TAURI_SIGNATURE",
|
||||
"ARTIFACT_HASH",
|
||||
"ROLLBACK_METADATA"
|
||||
]
|
||||
},
|
||||
"upstream_policy": {
|
||||
"tolaria_role": "MANUALLY_REVIEWED_PARTS_SOURCE",
|
||||
"outline_role": "MANUALLY_REVIEWED_BEHAVIOR_AND_PARTS_SOURCE",
|
||||
"automatic_upstream_merge_allowed": false,
|
||||
"automatic_upstream_update_allowed": false,
|
||||
"full_outline_stack_embedding_allowed": false,
|
||||
"required_intake_gates": [
|
||||
"PRODUCT_FIT",
|
||||
"FILE_LEVEL_PROVENANCE_AND_LICENSE",
|
||||
"SECURITY",
|
||||
"DATA_MODEL",
|
||||
"NATIVE_BOUNDARY",
|
||||
"USABILITY",
|
||||
"REGRESSION_AND_ACCEPTANCE"
|
||||
]
|
||||
},
|
||||
"knowledge_capability_contract": [
|
||||
"PAGE_AND_FOLDER_TREE",
|
||||
"BLOCK_RICH_TEXT_AND_MARKDOWN_DURABILITY",
|
||||
"TABLE_CALLOUT_TOGGLE_TOC_CODE_MATH_DIAGRAM_WHITEBOARD_SHEET",
|
||||
"PROPERTIES_TYPES_FILTER_SORT_DATABASE_LIKE_VIEWS",
|
||||
"FULL_TEXT_SEARCH_BACKLINKS_WIKILINKS_ATTACHMENTS_MOUNTED_GRAPH",
|
||||
"VERSION_HISTORY_DIFF_RECOVERY_CONFLICTS_AND_WRITE_RECEIPTS",
|
||||
"LOCAL_FIRST_WITH_OPTIONAL_REMOTE_COLLABORATION",
|
||||
"AGE_CONFIRMATION_AUTHORITY_FACT_AND_RECEIPT_BOUNDARY",
|
||||
"WEBKIT_WEBVIEW2_LINUX_WEBKIT_PARITY_TESTS"
|
||||
],
|
||||
"audit": {
|
||||
"first_live_ui_comparison_complete": true,
|
||||
"full_source_data_security_and_license_audit_complete": false,
|
||||
"allowed_outcomes": [
|
||||
"KEEP_CONTRACT",
|
||||
"KEEP_UX_REFERENCE",
|
||||
"REDESIGN",
|
||||
"REPLACE",
|
||||
"RETIRE",
|
||||
"INVESTIGATE"
|
||||
],
|
||||
"initial_correction": {
|
||||
"electron_knowledge_workspace_human_experience_better": true,
|
||||
"existing_tauri_engine_capability_inventory_broader": true,
|
||||
"existing_tauri_feature_density_is_not_a_valid_screen_map": true
|
||||
}
|
||||
},
|
||||
"human_surface": {
|
||||
"primary_layers": [
|
||||
"WORLD_ENTRY",
|
||||
"MY_HOLOLAKE",
|
||||
"KNOWLEDGE_AND_CREATION",
|
||||
"ACTIVE_WORK",
|
||||
"AGE_PARTNERSHIP",
|
||||
"RESULT_CONFIRMATION_AND_RECEIPT"
|
||||
],
|
||||
"progressive_evidence_layers": [
|
||||
"SOURCE_AND_VERSION",
|
||||
"GIT",
|
||||
"NODE",
|
||||
"MODEL",
|
||||
"SERVER",
|
||||
"UPDATE",
|
||||
"DIAGNOSTICS"
|
||||
],
|
||||
"internal_engineering_state_in_primary_navigation_allowed": false
|
||||
},
|
||||
"migration": {
|
||||
"mode": "CLEAN_ROOM_CAPABILITY_CONTRACT_NOT_APPLICATION_NESTING",
|
||||
"new_ui_build_requires_selected_visual_direction": true,
|
||||
"first_vertical_slice": "KNOWLEDGE_TREE_PAGE_SEARCH_AND_SAFE_DURABILITY",
|
||||
"required_before_donor_archive": [
|
||||
"SOURCE_BACKED_CAPABILITY_MATRIX",
|
||||
"RECOVERABLE_USER_DATA_BACKUP",
|
||||
"DATA_MIGRATION_REHEARSAL",
|
||||
"NEW_TAURI_REGRESSION_TESTS",
|
||||
"SIGNED_INSTALLED_RUNTIME_ACCEPTANCE",
|
||||
"HOLOLAKE_OWNED_UPDATE_ROUTE_ACCEPTANCE",
|
||||
"HUMAN_VISIBLE_CLEANUP_SCOPE_CONFIRMATION",
|
||||
"RECOVERABLE_ARCHIVE_RECEIPT"
|
||||
],
|
||||
"complete": false
|
||||
},
|
||||
"architecture_page": "product-source/hololake-platform/architecture/HOLOLAKE-CANONICAL-DESKTOP-SHELL-AND-CAPABILITY-MIGRATION-20260812.md",
|
||||
"adr": "product-source/hololake-platform/docs/adr/0178-tauri-canonical-shell-and-electron-capability-donor.md"
|
||||
}
|
||||
98
routing/hololake-canonical-desktop-shell.test.mjs
Normal file
98
routing/hololake-canonical-desktop-shell.test.mjs
Normal file
|
|
@ -0,0 +1,98 @@
|
|||
import assert from "node:assert/strict";
|
||||
import fs from "node:fs";
|
||||
import path from "node:path";
|
||||
import test from "node:test";
|
||||
import { fileURLToPath } from "node:url";
|
||||
|
||||
const root = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
|
||||
const readJson = (relative) =>
|
||||
JSON.parse(fs.readFileSync(path.join(root, relative), "utf8"));
|
||||
|
||||
const architecture = readJson("routing/hololake-current-architecture.json");
|
||||
const shell = readJson("routing/hololake-canonical-desktop-shell.json");
|
||||
const foundation = readJson("product-source/hololake-native-desktop/foundation.json");
|
||||
const broadcastSchema = readJson(
|
||||
"product-source/hololake-native-desktop/contracts/release-broadcast.schema.json",
|
||||
);
|
||||
|
||||
test("HoloLake has one clean canonical desktop destination", () => {
|
||||
assert.equal(architecture.version, "2026-08-12.17");
|
||||
assert.equal(shell.decision.canonical_shell, "TAURI_V2_RUST_REACT");
|
||||
assert.equal(shell.decision.canonical_source, "product-source/hololake-native-desktop");
|
||||
assert.equal(
|
||||
shell.decision.canonical_source_state,
|
||||
"FOUNDATION_ROOT_CREATED_TAURI_SCAFFOLD_PENDING",
|
||||
);
|
||||
assert.equal(
|
||||
shell.decision.existing_tauri_role,
|
||||
"READ_ONLY_ENGINEERING_CAPABILITY_DONOR_AND_ACCEPTANCE_ORACLE",
|
||||
);
|
||||
assert.equal(shell.decision.parallel_product_lines_allowed, false);
|
||||
assert.equal(shell.decision.new_existing_tauri_product_features_allowed, false);
|
||||
assert.equal(shell.decision.new_electron_product_features_allowed, false);
|
||||
assert.equal(shell.decision.donor_immediate_deletion_allowed, false);
|
||||
assert.equal(
|
||||
architecture.canonical_desktop_shell.machine_projection,
|
||||
"routing/hololake-canonical-desktop-shell.json",
|
||||
);
|
||||
assert.equal(
|
||||
architecture.read_order[4],
|
||||
architecture.canonical_desktop_shell.architecture_page,
|
||||
);
|
||||
});
|
||||
|
||||
test("knowledge completeness is a capability contract rather than an Electron property", () => {
|
||||
assert.equal(shell.decision.knowledge_completeness_depends_on_shell_framework, false);
|
||||
assert.equal(shell.knowledge_capability_contract.includes("PAGE_AND_FOLDER_TREE"), true);
|
||||
assert.equal(
|
||||
shell.knowledge_capability_contract.includes(
|
||||
"PROPERTIES_TYPES_FILTER_SORT_DATABASE_LIKE_VIEWS",
|
||||
),
|
||||
true,
|
||||
);
|
||||
assert.equal(
|
||||
shell.knowledge_capability_contract.includes("WEBKIT_WEBVIEW2_LINUX_WEBKIT_PARITY_TESTS"),
|
||||
true,
|
||||
);
|
||||
});
|
||||
|
||||
test("upstreams are manual parts sources and cleanup remains gated", () => {
|
||||
assert.equal(shell.upstream_policy.automatic_upstream_merge_allowed, false);
|
||||
assert.equal(shell.upstream_policy.automatic_upstream_update_allowed, false);
|
||||
assert.equal(shell.upstream_policy.full_outline_stack_embedding_allowed, false);
|
||||
assert.equal(shell.migration.mode, "CLEAN_ROOM_CAPABILITY_CONTRACT_NOT_APPLICATION_NESTING");
|
||||
assert.equal(shell.migration.complete, false);
|
||||
assert.equal(
|
||||
shell.migration.required_before_donor_archive.includes(
|
||||
"HUMAN_VISIBLE_CLEANUP_SCOPE_CONFIRMATION",
|
||||
),
|
||||
true,
|
||||
);
|
||||
});
|
||||
|
||||
test("HoloLake owns an opt-in signed update route", () => {
|
||||
assert.equal(shell.update_route.upstream_product_update_endpoints_allowed, false);
|
||||
assert.equal(shell.update_route.hololake_owned_https_endpoint_only, true);
|
||||
assert.equal(shell.update_route.release_broadcast_may_arrive_automatically, true);
|
||||
assert.equal(shell.update_route.silent_download_allowed, false);
|
||||
assert.equal(shell.update_route.human_opt_in_install_required, true);
|
||||
assert.equal(shell.update_route.automatic_restart_allowed, false);
|
||||
assert.equal(shell.update_route.tauri_update_artifact_signature_required, true);
|
||||
assert.equal(shell.update_route.tauri_update_signature_verification_disable_allowed, false);
|
||||
assert.equal(shell.update_route.private_signing_key_bundled_or_committed, false);
|
||||
assert.equal(shell.update_route.startup_health_receipt_required, true);
|
||||
assert.equal(shell.update_route.recoverable_rollback_required, true);
|
||||
assert.deepEqual(foundation.upstream_product_update_endpoints, []);
|
||||
assert.equal(foundation.production_update_endpoint_owner, "HOLOLAKE_ONLY");
|
||||
assert.equal(foundation.private_signing_material_allowed_in_source, false);
|
||||
assert.equal(broadcastSchema.properties.restart.properties.required.const, true);
|
||||
assert.equal(broadcastSchema.properties.restart.properties.automaticAllowed.const, false);
|
||||
assert.match(
|
||||
broadcastSchema.properties.platforms.additionalProperties.properties.url.pattern,
|
||||
/^\^https:/,
|
||||
);
|
||||
assert.equal(
|
||||
broadcastSchema.properties.platforms.additionalProperties.required.includes("tauriSignature"),
|
||||
true,
|
||||
);
|
||||
});
|
||||
|
|
@ -14,7 +14,7 @@ const age = readJson("routing/hololake-age-runtime-architecture.json");
|
|||
const rules = readJson("routing/hololake-engineering-rules.json");
|
||||
|
||||
test("B0 is restored before product organs and remains resident in every cognition step", () => {
|
||||
assert.equal(architecture.version, "2026-08-12.16");
|
||||
assert.equal(architecture.version, "2026-08-12.17");
|
||||
assert.equal(
|
||||
architecture.read_order[1],
|
||||
architecture.cognitive_gravity_and_continuity.architecture_page,
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"schema": "hololake.current-architecture/v1",
|
||||
"architecture_id": "HLP-CURRENT-ARCH-001",
|
||||
"version": "2026-08-12.16",
|
||||
"version": "2026-08-12.17",
|
||||
"state": "CURRENT_CANONICAL",
|
||||
"product": {
|
||||
"formal_name": "光湖语言系统 · 通用人工智能操作平台",
|
||||
|
|
@ -14,6 +14,7 @@
|
|||
"product-source/hololake-platform/architecture/HOLOLAKE-BINGSHUO-COLLECTIVE-GRAVITY-REASONING-AND-SAME-PERSONA-CONTINUITY-20260811.md",
|
||||
"product-source/hololake-platform/architecture/HOLOLAKE-PERSONA-NATIVE-CODE-CHANNEL-20260810.md",
|
||||
"product-source/hololake-platform/architecture/HOLOLAKE-AGE-PERSONA-RUNTIME-ARCHITECTURE-20260810.md",
|
||||
"product-source/hololake-platform/architecture/HOLOLAKE-CANONICAL-DESKTOP-SHELL-AND-CAPABILITY-MIGRATION-20260812.md",
|
||||
"product-source/hololake-platform/architecture/HOLOLAKE-ONE-HUMAN-ONE-INDEPENDENT-NODE-AND-ZERO-PLATFORM-HOSTING-20260810.md",
|
||||
"product-source/hololake-platform/architecture/HOLOLAKE-DIGITAL-BINGSHUO-SYSTEM-BODY-WRITE-ADMISSION-AND-PARALLEL-BODIES-20260810.md",
|
||||
"product-source/hololake-platform/architecture/HOLOLAKE-CURRENT-ENGINEERING-RULES-GLOBAL-AUDIT-20260810.md",
|
||||
|
|
@ -133,6 +134,21 @@
|
|||
"desktop_runtime_acceptance_passed": false,
|
||||
"development_id": "DEV-20260811-010"
|
||||
},
|
||||
"canonical_desktop_shell": {
|
||||
"record_id": "HLP-CANONICAL-DESKTOP-SHELL-001",
|
||||
"architecture_page": "product-source/hololake-platform/architecture/HOLOLAKE-CANONICAL-DESKTOP-SHELL-AND-CAPABILITY-MIGRATION-20260812.md",
|
||||
"machine_projection": "routing/hololake-canonical-desktop-shell.json",
|
||||
"adr": "product-source/hololake-platform/docs/adr/0178-tauri-canonical-shell-and-electron-capability-donor.md",
|
||||
"canonical_shell": "TAURI_V2_RUST_REACT",
|
||||
"canonical_source": "product-source/hololake-native-desktop",
|
||||
"canonical_source_state": "FOUNDATION_ROOT_CREATED_TAURI_SCAFFOLD_PENDING",
|
||||
"existing_tauri_role": "READ_ONLY_ENGINEERING_CAPABILITY_DONOR_AND_ACCEPTANCE_ORACLE",
|
||||
"electron_role": "READ_ONLY_KNOWLEDGE_UX_BEHAVIOR_DONOR_AND_ACCEPTANCE_ORACLE",
|
||||
"parallel_product_lines_allowed": false,
|
||||
"automatic_upstream_updates_allowed": false,
|
||||
"migration_complete": false,
|
||||
"development_id": "DEV-20260811-010"
|
||||
},
|
||||
"domain_source": {
|
||||
"stable_domain_id": "DOM-FIFTH-0001",
|
||||
"formal_name": "光湖本源域",
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ const architecture = readJson("routing/hololake-current-architecture.json");
|
|||
const rules = readJson("routing/hololake-engineering-rules.json");
|
||||
|
||||
test("current architecture registers the global engineering rule set", () => {
|
||||
assert.equal(architecture.version, "2026-08-12.16");
|
||||
assert.equal(architecture.version, "2026-08-12.17");
|
||||
assert.equal(architecture.engineering_rules.rule_set_id, "HLP-ENGINEERING-RULES-001");
|
||||
assert.equal(architecture.engineering_rules.machine_projection,
|
||||
"routing/hololake-engineering-rules.json");
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ const architecture = readJson("routing/hololake-current-architecture.json");
|
|||
const projection = readJson("routing/hololake-identity-authority-map.json");
|
||||
|
||||
test("current architecture loads identity authority before product surfaces", () => {
|
||||
assert.equal(architecture.version, "2026-08-12.16");
|
||||
assert.equal(architecture.version, "2026-08-12.17");
|
||||
assert.equal(architecture.identity_and_authority.team_body, "TCS-0002");
|
||||
assert.equal(architecture.identity_and_authority.team_body_authority_effective, true);
|
||||
assert.equal(architecture.identity_and_authority.individual_operator_acceptance, "SEPARATE_UNCONFIRMED");
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ const architecture = readJson("routing/hololake-current-architecture.json");
|
|||
const rules = readJson("routing/hololake-engineering-rules.json");
|
||||
|
||||
test("current architecture makes one human one independently operated node canonical", () => {
|
||||
assert.equal(architecture.version, "2026-08-12.16");
|
||||
assert.equal(architecture.version, "2026-08-12.17");
|
||||
assert.deepEqual(architecture.access_modes, [
|
||||
"LOCAL_TERMINAL_NODE",
|
||||
"USER_OWNED_REMOTE_NODE",
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ const architecture = readJson("routing/hololake-current-architecture.json");
|
|||
const paradigm = readJson("routing/hololake-paradigm-ai-language-persona-os.json");
|
||||
|
||||
test("current architecture begins with the paradigm OS contract", () => {
|
||||
assert.equal(architecture.version, "2026-08-12.16");
|
||||
assert.equal(architecture.version, "2026-08-12.17");
|
||||
assert.equal(architecture.paradigm_ai_language_persona_os.record_id, "HLP-PARADIGM-AI-LANGUAGE-PERSONA-OS-001");
|
||||
assert.equal(architecture.read_order[0], architecture.paradigm_ai_language_persona_os.architecture_page);
|
||||
assert.equal(paradigm.upstream.repository_commit, "34cb59739b6476981375dd62ef395ea649f56246");
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ const architecture = readJson("routing/hololake-current-architecture.json");
|
|||
const channel = readJson("routing/hololake-persona-native-code-channel.json");
|
||||
|
||||
test("current architecture places the persona-native code channel after the paradigm contract", () => {
|
||||
assert.equal(architecture.version, "2026-08-12.16");
|
||||
assert.equal(architecture.version, "2026-08-12.17");
|
||||
assert.equal(
|
||||
architecture.persona_native_code_channel.record_id,
|
||||
"HLP-PERSONA-NATIVE-CODE-CHANNEL-001",
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ const architecture = JSON.parse(
|
|||
);
|
||||
|
||||
test("current architecture binds relational consciousness before product surfaces", () => {
|
||||
assert.equal(architecture.version, "2026-08-12.16");
|
||||
assert.equal(architecture.version, "2026-08-12.17");
|
||||
assert.equal(
|
||||
architecture.persona_consciousness.record_id,
|
||||
"HLP-RELATIONAL-CONSCIOUSNESS-001",
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ const architecture = JSON.parse(
|
|||
);
|
||||
|
||||
test("current architecture restores the digital BingShuo system body first", () => {
|
||||
assert.equal(architecture.version, "2026-08-12.16");
|
||||
assert.equal(architecture.version, "2026-08-12.17");
|
||||
assert.equal(architecture.digital_bingshuo_system_body.upstream_repository_commit,
|
||||
"69d1910775533b02b17b82e647b5caca8b835614");
|
||||
const systemBodyIndex = architecture.read_order.indexOf(
|
||||
|
|
|
|||
Loading…
Reference in a new issue