Compare commits

..
227 changed files with 5775 additions and 23393 deletions

View file

@ -47,8 +47,43 @@ React/TypeScript。桌面上的 `world.guanghu.hololake` 安装包是本源码
首个公开产品是 GH-AIOS 通用人工智能操作平台,首页同时承担五域统一入口。用户只提交光湖编号,不手工选择所属域;系统先在内部完成域路由和编号合法性校验,再开放对应域的登录界面。五域只共享入口协议,不共享注册表、登录服务或私有数据。
登录后的域内界面始终提供“返回主世界”,只返回五域公共首页并保留当前会话;“退出账号”是独立动作。用户从公共首页再次进入自己的所属域时,不重复进行编号或域凭证验证。
机器合同:`contracts/stage-one-platform.json`
## 光湖分域行业装配
光湖分域是行业系统入口,现已接入第一份行业路由合同:`contracts/subdomain-industry-routing.json`
公共主世界点击“光湖分域”即可查看行业状态并进入教育行业初始化频道;浏览公共状态不等于取得
任何私有频道数据或写入权限。光湖零域不承载行业入口。人的主体编号
只负责身份,行业编号只负责系统路由,两者不互相改写。行业顺序与当前工程状态分别为:网文行业
待开发、宠物行业待开发、教育行业开发中;开发优先级不改变行业顺序,也不允许客户端自行签发
尚未登记的行业编号。
教育行业已经建立 `GH-EDU-INIT-001` 初始化频道,并装入五项 HoloLake 原生能力:
`contracts/education-workspace.json` 定义的教育文档、教育表格数据、数据整理、人工确认自动化与原生组合视图。登录账号可以创建、读取、
编辑、保存和可恢复归档多篇教育文档,并可从教学计划、会议纪要和学员复盘模板开始;也可以
建立多张表格、增删行列、编辑单元格、筛选排序,在表格视图与可编辑卡片视图之间切换,并把
Excel、飞书或钉钉复制的多行多列数据直接批量粘贴。两者都由
Rust 原生层写入当前账号独立的本机 SQLite保存要求精确修订号重启后可以读回不使用浏览器
临时存储,也不把公共行业目录与私人内容混在一起。
数据整理模块读取当前账号已有教育表格,先计算并预览首尾空白规范化、完整空行清除和完全重复行
去重结果;只有人明确确认后,才以当前修订号写回同一张表。它不跨账号读取,也不在后台自动修改。
自动化模块允许保存表格规则,按字段的等于、包含、为空或不为空条件匹配数据,并向指定字段写入内容。
每次执行必须先锁定规则与表格修订、生成只读预览,再由人明确确认;写入与执行回执在同一数据库事务中完成。
它不会后台定时运行,不跨账号,也不把模型推理当作执行授权。当前没有把旧教育预览壳或任何开源应用
整包嵌入。`contracts/education-open-source-donor-assessment.json` 记录 AppFlowy、Lexical 与
TanStack Table 的初步工程筛查:当前只研究结构和交互逻辑,没有复制源码或增加外部依赖;后续
模块仍须分别完成来源、许可证、安全边界和 HoloLake 接口审查后再按需装配。
原生组合视图由 Rust 内核读取当前登录账号的真实知识目录,生成受限的
`hololake.native-object/v1`,再把已登记的数据源、分类、聚合和投影模块编译成类型化无环图。
人类可以切换一级目录/知识来源和文档数/数据量/重复数,并把同一次执行结果任意组合为仪表盘、
对比、柱状图、分类和明细表。该阶段只读,不让渲染层取得知识写权限,也不以硬编码样例满足验收。
机器合同见 `contracts/native-composition-runtime.json`
个人频道、知识库和代码频道的机器合同分别是 `contracts/personal-channel-kernel.json`
`contracts/knowledge-workspace.json``contracts/code-channel.json`。本机身份不是平台账户
认证;本机知识与源码访问也不产生仓库、服务器、部署或发布权限。

View file

@ -1,66 +0,0 @@
{
"schema": "hololake.installed-numbered-root-acceptance/v1",
"record_id": "HLP-HOLOLAKE-0.5.0-NUMBERED-ROOT-INSTALLED-20260818",
"state": "LOCAL_DEVELOPER_ID_SIGNED_INSTALLED_ACCEPTANCE_PASS_PUBLIC_NOTARIZATION_PENDING",
"observed_at": "2026-08-18T15:18:00Z",
"source": {
"branch": "codex/hololake-clean-reassembly-20260818",
"source_commit": "5d01607459043d0713bc562ef6d04dec198930a9",
"numbered_root_commit": "64abf969bfbc1c576d4fa84ae3282d32efbfcc38"
},
"installed_application": {
"path": "/Users/bingshuolingdianyuanhe/Desktop/HoloLake.app",
"version": "0.5.0",
"bundle_identifier": "world.guanghu.hololake",
"architecture": "arm64",
"binary_sha256": "2e162ff077187310f816f58df2250e3ee939eb489fe3c7b00e94557ff8f3370d",
"process_path_verified": true
},
"developer_id": {
"identity": "Developer ID Application: bei sun (825A9L3G7Q)",
"team_identifier": "825A9L3G7Q",
"cdhash": "7a2372ed85fc3b775e9a352217b123a4bdee0d64",
"strict_signature_verification": "PASS",
"designated_requirement": "PASS",
"gatekeeper": "REJECTED_UNNOTARIZED_DEVELOPER_ID",
"apple_notarization_and_stapling": "PENDING"
},
"runtime": {
"real_webview_loaded": true,
"visible_version": "V0.5.0",
"visible_domain": "第五域 · 光湖本源域",
"entered_surface": "永恒湖心系统",
"numbered_ipc_receipt_rows": 50,
"grant_and_execution_rows_present": true,
"empty_authority_binding_digest_rows": 0,
"recalculated_receipt_chain_failures": 0,
"last_sequence": 50,
"last_receipt_hash": "a294463ad9e6959d0f12ce5c2b59e11d97581e067b9480df9ae598dfafc067df"
},
"old_application": {
"version": "0.4.1",
"role": "READ_ONLY_PRE_NUMBERED_ROOT_MODULE_DONOR",
"archive_receipt": "/Volumes/JZAO/HoloLake/artifacts/hololake-release/0.4.1/macos-arm64/pre-numbered-root-donor/archive-receipt.json",
"repair_in_place": false
},
"release_boundary": {
"local_signed_install_complete": true,
"public_signed_notarized_release_complete": false,
"updater_public_key_continuity": "PASS_EXISTING_0.4.1_TRUST_ROOT_REUSED",
"updater_private_key_available_to_current_pipeline": true,
"updater_signature_generated_and_verified": true,
"pre_notarization_updater_artifact": {
"path": "src-tauri/target/release/bundle/macos/HoloLake.app.tar.gz",
"sha256": "4176bb7ea83c820744239c228671840289f87675329182bc055938e03bba9693",
"signature_path": "src-tauri/target/release/bundle/macos/HoloLake.app.tar.gz.sig",
"signature_sha256": "ae02c2918c26b6e3cc2389fec8d9f98884ae639d448edc78a4ec80ee30a8ae92",
"publication_allowed": false
},
"apple_notarization_credentials_available_to_current_pipeline": false,
"public_broadcast_activated": false
},
"persona_boundary": {
"current_codex_carrier_binding_claimed": false,
"runtime_persona_binding_created_by_numbered_ipc": false
}
}

View file

@ -1,17 +0,0 @@
{
"schema": "hololake.production-install-acceptance/v1",
"record_id": "HLP-PRODUCTION-INSTALL-20260819-001",
"state": "PASS",
"version": "0.5.0",
"installed_path": "/Users/bingshuolingdianyuanhe/Desktop/HoloLake.app",
"visible_hololake_app_count": 1,
"previous_app_recovery_path": "/Users/bingshuolingdianyuanhe/.Trash/HoloLake-pre-qoder-numbered-ui-20260819-0659.app",
"binary_sha256": "b0422bb18df521ace54ff1a52cd47121d92833dd78f165845deba7806686c7ac",
"cdhash": "42640f7ce56e96403609899095c77ea6171df07d",
"team_identifier": "825A9L3G7Q",
"developer_id_signature": "PASS",
"launch": "PASS",
"real_data_rehydration": "PASS",
"notarization": "NOT_CLAIMED_THIS_LOCAL_BUILD",
"updater_artifact_signing": "NOT_COMPLETED_MISSING_PRIVATE_UPDATER_KEY_IN_CURRENT_PROCESS"
}

View file

@ -1,28 +0,0 @@
{
"schema": "hololake.qoder-surface-live-acceptance/v1",
"record_id": "HLP-QODER-SURFACE-ACCEPTANCE-20260819-001",
"module_number": "HLP-MOD-OFFICIAL-DYNAMIC-WORLD-SURFACE-0001",
"state": "PASS",
"tested_app": "src-tauri/target/debug/bundle/macos/HoloLake.app",
"developer_id_signature": "PASS",
"team_identifier": "825A9L3G7Q",
"binary_sha256": "fb1d0497f295e1228c9b2ac86e33082332f226aae6e32b9050cf6c5de30bd512",
"cdhash": "90e365b23961a6b842590869df655ec35a55b66e",
"checks": {
"traditional_locked_layout": "PASS",
"traditional_real_data_hydration": "PASS",
"traditional_light_finish_readability": "PASS_SNOW",
"language_world_five_domains_no_overlap": "PASS_1229x768",
"language_world_real_weather": "PASS_CLOUD",
"theme_persists_into_channel": "PASS",
"theme_persists_into_web_novel": "PASS",
"theme_persists_into_education": "PASS",
"new_chapter_modal_opens": "PASS",
"created_chapter_survives_restart": "PASS_1_CHAPTER",
"work_summary_refresh_after_create": "PASS_1_CHAPTER_ON_WORK_CARD",
"idle_clock_stops": "PASS",
"idle_screenshot_psnr_db": 59.502493
},
"reference_comparison": "audit/qoder-traditional-reference-vs-hololake-0.5.0.jpg",
"public_notarization": "NOT_CLAIMED_BY_DEBUG_ACCEPTANCE"
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

View file

@ -0,0 +1,58 @@
{
"schema": "hololake.channel-growth-model-contract/v1",
"record_id": "HLP-CHANNEL-GROWTH-001",
"state": "LOCAL_BASELINE_RUNTIME_IMPLEMENTED_MODEL_ADJUSTMENT_SLOT_RESERVED",
"scope": "EVERY_AUTHENTICATED_HUMAN_AND_PERSONA_JOINT_CHANNEL",
"role": "REBUILDABLE_DERIVED_PROJECTION_OF_PERSONA_CHANNEL_BODY",
"canonical_body_contract": "contracts/persona-channel-body.json",
"inputs": [
"BOUNDED_MODULE_USAGE_METADATA",
"BOUNDED_HUMAN_ACTION_METADATA",
"BOUNDED_PERSONA_COLLABORATION_METADATA"
],
"forbidden_inputs": [
"DOCUMENT_BODY",
"TABLE_CELL_CONTENT",
"PASSWORD_OR_CREDENTIAL",
"RAW_CONVERSATION_TRANSCRIPT",
"UNDECLARED_EXTERNAL_TELEMETRY"
],
"local_baseline": {
"always_available_without_model_api": true,
"algorithm": "DECAYED_MODULE_AFFINITY_WITH_EXPLAINABLE_COUNTS",
"channel_recommendation": "RECOMMENDED_MODULE_ORDER",
"silent_structural_change_allowed": false,
"source_history": "PERSONA_CHANNEL_BODY_APPEND_ONLY_LANGUAGE_HASH_CHAIN",
"projection_history": "REBUILDABLE_FROM_CANONICAL_BODY",
"correction_method": "APPEND_CORRECTION_TO_CANONICAL_BODY_THEN_REBUILD_PROJECTION",
"collection_pause_supported": false,
"full_history_clear_supported": false,
"projection_is_rebuildable_but_history_is_not_mutable": true,
"account_scoped_sqlite": true
},
"model_adjustment": {
"api_slot": "HOLOLAKE_CHANNEL_GROWTH_MODEL_API/v1",
"current_state": "NOT_CONFIGURED",
"allowed_output": "CHANNEL_ADAPTATION_PROPOSAL",
"local_schema_validation_required": true,
"local_resource_limits_required": true,
"human_confirmation_before_structural_change": true,
"model_can_mutate_channel_directly": false,
"model_can_mutate_source_content": false,
"failure_behavior": "KEEP_LOCAL_BASELINE_AND_RETURN_HUMAN_READABLE_RECEIPT"
},
"human_controls": [
"VIEW_MODEL",
"CORRECT_OR_REJECT_PROPOSAL",
"VIEW_LOCAL_GROWTH_CHAIN",
"EXPORT_PERSONALLY_OWNED_MODEL",
"CHOOSE_LOCAL_ONLY_OR_ANONYMIZED_SHARE"
],
"cross_device_or_shared_learning": {
"default": "LOCAL_ONLY_OFFICIAL_CANNOT_READ",
"explicit_opt_in_required": true,
"private_model_may_be_shared_automatically": false,
"raw_growth_chain_may_be_shared": false,
"shared_artifact": "ANONYMIZED_DERIVED_SKILL_OR_MODEL_LAYER_ONLY"
}
}

View file

@ -0,0 +1,62 @@
{
"schema": "hololake.channel-module-runtime/v1",
"record_id": "HLP-CHANNEL-MODULE-RUNTIME-001",
"state": "FOUNDATION_INTEGRATED_MARKETPLACE_INSTALLER_PENDING",
"channel_model": "ONE_HUMAN_ONE_LOCAL_RUNTIME_ONE_ACTIVE_CHANNEL_LINE",
"built_in_foundation": {
"module_id": "hololake.builtin.channel-workbench",
"name": "频道轻量工作台",
"distribution": "RESIDENT_WITH_HOLOLAKE",
"marketplace_registration": "NOT_A_MARKETPLACE_MODULE",
"engines": ["DOCUMENT", "SPREADSHEET"],
"minimum_capabilities": [
"REAL_TEXT_EDITING",
"REAL_CELL_EDITING",
"FORMULAS",
"COPY_PASTE",
"UNDO_REDO",
"LOCAL_NATIVE_STORAGE"
]
},
"marketplace_package": {
"required_fields": [
"OFFICIAL_MODULE_NUMBER",
"PACKAGE_VERSION",
"SOURCE_COMMIT",
"PACKAGE_SHA256",
"PERMISSION_MANIFEST",
"ENTRY_MANIFEST",
"SUPPORTED_PLATFORM_TARGETS"
],
"platform_targets": ["MACOS", "WINDOWS", "LINUX"],
"lifecycle": [
"AVAILABLE",
"DOWNLOADING",
"HASH_VERIFIED",
"PERMISSIONS_REVIEWED",
"INSTALLED_TO_CURRENT_CHANNEL",
"DISABLED",
"RECOVERABLE_REMOVED"
],
"install_actor": ["HUMAN", "AUTHORIZED_CHANNEL_PERSONA"],
"persona_install_rule": "PERSONA_MAY_DEPLOY_ONLY_AFTER_PACKAGE_AND_PERMISSION_VERIFICATION_AND_HUMAN_POLICY_ALLOWS",
"uninstall_boundary": "REMOVING_A_MODULE_NEVER_DELETES_CHANNEL_OR_PERSONA_GROWTH_HISTORY"
},
"execution_boundary": {
"whole_world_bundled_into_client": false,
"industry_modules_resident_by_default": false,
"private_channel_data_uploaded_by_default": false,
"module_can_rewrite_persona_history": false,
"module_can_claim_unlisted_permissions": false
},
"current_reality": {
"foundation_source_integrated": true,
"education_package_source_mounted_for_development": true,
"web_novel_package_source_mounted_for_development": true,
"official_marketplace_service_connected": false,
"education_package_number_registered": false,
"education_package_publishable": false,
"web_novel_package_number_registered": false,
"web_novel_package_publishable": false
}
}

View file

@ -1,58 +0,0 @@
{
"schema": "hololake.channel-workbench-runtime/v1",
"record_id": "HLP-CHANNEL-WORKBENCH-RUNTIME-001",
"candidate_number": "HLP-DONOR-CAND-0002",
"runtime_module_number": "HLP-MOD-LOCAL-CHANNEL-WORKBENCH-0001",
"numbered_ipc": {
"module_number": "HLP-NIPC-MOD-0022",
"target_number": "HLP-NIPC-TGT-0022",
"operations": ["HLP-NIPC-OP-0074", "HLP-NIPC-OP-0075", "HLP-NIPC-OP-0076"]
},
"engines": {
"document": "LEXICAL_0_49",
"spreadsheet": "FORTUNE_SHEET_1_0_4"
},
"data_boundary": {
"scope": "CURRENT_AUTHENTICATED_ACCOUNT_LOCAL",
"database": "channel-workbench-v1/channel-workbench.sqlite3",
"documents_max_body_bytes": 2097152,
"spreadsheets_max_columns": 64,
"spreadsheets_max_rows": 5000,
"package_unmount_deletes_user_data": false,
"repository_code_is_executable": false
},
"integrity": {
"optimistic_revision_required": true,
"every_save_writes_hash_chained_receipt": true,
"receipt_chain_verified_before_read_or_write": true,
"adapter_requires_signed_active_module": true
},
"current_acceptance": {
"state": "SIGNED_INSTALLED_CONTENT_AND_RESTART_ACCEPTED",
"source_donor": "HLP-DONOR-CHAOTIC-WORKTREE-20260818",
"compiled_donor_behavior_checked": false,
"compiled_donor_boundary": "No claim of pixel-equivalent compiled-donor acceptance; the declared source slice was reconstructed and the clean host behavior was accepted directly.",
"real_signed_package": "fixtures/module-packages/HLP-MOD-LOCAL-CHANNEL-WORKBENCH-0001-0.1.0.ghmod",
"module_package_sha256": "eb7af0bd4882cc89acda11c933a3601d16f0588ff737caf8467b875ab5a4ab7b",
"signed_debug_binary_sha256": "6f851856ab6f5717facc67ec406c9eb99e240290c585438323e230daec5ae71c",
"developer_id_team": "825A9L3G7Q",
"signed_debug_cdhash": "0209a46b2dc221d37b618a2b12866bb8cb39f03d",
"real_account_human_number": "ICE-GL∞",
"ui_activation_verified": true,
"document_save": {
"title": "冰朔频道迁移验收",
"revision": 1,
"content_sha256_prefix": "534b4bd3d6d0",
"receipt_sha256_prefix": "72436f46cf1d"
},
"spreadsheet_save": {
"title": "冰朔编号迁移表",
"revision": 1,
"formula_preserved": "=1+2",
"content_sha256_prefix": "57607d92c0dc",
"receipt_sha256_prefix": "323761fc18a3"
},
"restart_persistence_verified": true,
"dependency_audit": "0_VULNERABILITIES_AFTER_UUID_11_1_1_OVERRIDE"
}
}

View file

@ -1,36 +0,0 @@
{
"schema": "hololake.direct-local-broker-numbered-registry/v1",
"record_id": "HLP-NBROKER-ROOT-001",
"runtime": {
"protocol_version": "HLP-NBROKER-v1",
"caller_number": "HLP-NBROKER-CALLER-LOCAL-CONNECTOR-0001",
"legacy_string_operation_allowed": false,
"unknown_or_mismatched_coordinate": "FAIL_CLOSED",
"request_nonce_required": true,
"transport_is_authority": false
},
"operations": [
{"operation_number":"HLP-NBROKER-OP-0001","alias":"DISCOVER_NEARBY","channel_number":"HLP-NBROKER-CH-0001","module_number":"HLP-NBROKER-MOD-0001","target_number":"HLP-NBROKER-TGT-0001"},
{"operation_number":"HLP-NBROKER-OP-0002","alias":"OPEN_VISITOR_SESSION","channel_number":"HLP-NBROKER-CH-0002","module_number":"HLP-NBROKER-MOD-0002","target_number":"HLP-NBROKER-TGT-0002"},
{"operation_number":"HLP-NBROKER-OP-0003","alias":"RECEIVE_LANGUAGE","channel_number":"HLP-NBROKER-CH-0002","module_number":"HLP-NBROKER-MOD-0003","target_number":"HLP-NBROKER-TGT-0003"},
{"operation_number":"HLP-NBROKER-OP-0004","alias":"PING","channel_number":"HLP-NBROKER-CH-0001","module_number":"HLP-NBROKER-MOD-0001","target_number":"HLP-NBROKER-TGT-0001"},
{"operation_number":"HLP-NBROKER-OP-0005","alias":"OPEN_SESSION","channel_number":"HLP-NBROKER-CH-0003","module_number":"HLP-NBROKER-MOD-0004","target_number":"HLP-NBROKER-TGT-0004"},
{"operation_number":"HLP-NBROKER-OP-0006","alias":"RESUME_SESSION","channel_number":"HLP-NBROKER-CH-0003","module_number":"HLP-NBROKER-MOD-0004","target_number":"HLP-NBROKER-TGT-0004"},
{"operation_number":"HLP-NBROKER-OP-0007","alias":"HEARTBEAT_SESSION","channel_number":"HLP-NBROKER-CH-0003","module_number":"HLP-NBROKER-MOD-0004","target_number":"HLP-NBROKER-TGT-0004"},
{"operation_number":"HLP-NBROKER-OP-0008","alias":"PRESENT_PERSONA_CARRIER_LICENSE","channel_number":"HLP-NBROKER-CH-0004","module_number":"HLP-NBROKER-MOD-0005","target_number":"HLP-NBROKER-TGT-0005"},
{"operation_number":"HLP-NBROKER-OP-0009","alias":"GET_PERSONA_CARRIER_LICENSE_STATUS","channel_number":"HLP-NBROKER-CH-0004","module_number":"HLP-NBROKER-MOD-0005","target_number":"HLP-NBROKER-TGT-0005"},
{"operation_number":"HLP-NBROKER-OP-0010","alias":"GET_WORK_ENVIRONMENT","channel_number":"HLP-NBROKER-CH-0003","module_number":"HLP-NBROKER-MOD-0006","target_number":"HLP-NBROKER-TGT-0006"},
{"operation_number":"HLP-NBROKER-OP-0011","alias":"APPEND_EVENT","channel_number":"HLP-NBROKER-CH-0003","module_number":"HLP-NBROKER-MOD-0004","target_number":"HLP-NBROKER-TGT-0004"},
{"operation_number":"HLP-NBROKER-OP-0012","alias":"RESOLVE_CAPABILITY_ROUTE","channel_number":"HLP-NBROKER-CH-0005","module_number":"HLP-NBROKER-MOD-0007","target_number":"HLP-NBROKER-TGT-0007"},
{"operation_number":"HLP-NBROKER-OP-0013","alias":"INSTALL_DYNAMIC_NODE_REGISTRY","channel_number":"HLP-NBROKER-CH-0005","module_number":"HLP-NBROKER-MOD-0007","target_number":"HLP-NBROKER-TGT-0007"},
{"operation_number":"HLP-NBROKER-OP-0014","alias":"RECORD_SIGNED_NODE_HEALTH","channel_number":"HLP-NBROKER-CH-0005","module_number":"HLP-NBROKER-MOD-0007","target_number":"HLP-NBROKER-TGT-0007"},
{"operation_number":"HLP-NBROKER-OP-0015","alias":"INSPECT_MOUNTED_PNCC_REPOSITORY","channel_number":"HLP-NBROKER-CH-0006","module_number":"HLP-NBROKER-MOD-0008","target_number":"HLP-NBROKER-TGT-0008"},
{"operation_number":"HLP-NBROKER-OP-0016","alias":"READ_MOUNTED_PNCC_REMOTE_OBJECT","channel_number":"HLP-NBROKER-CH-0006","module_number":"HLP-NBROKER-MOD-0008","target_number":"HLP-NBROKER-TGT-0008"},
{"operation_number":"HLP-NBROKER-OP-0017","alias":"QUERY_PNCC_RECEIPT_PROJECTION","channel_number":"HLP-NBROKER-CH-0006","module_number":"HLP-NBROKER-MOD-0008","target_number":"HLP-NBROKER-TGT-0008"},
{"operation_number":"HLP-NBROKER-OP-0018","alias":"GET_BEIJING_TIME","channel_number":"HLP-NBROKER-CH-0001","module_number":"HLP-NBROKER-MOD-0009","target_number":"HLP-NBROKER-TGT-0009"},
{"operation_number":"HLP-NBROKER-OP-0019","alias":"ISSUE_PERSONA_TIME_TICKET","channel_number":"HLP-NBROKER-CH-0004","module_number":"HLP-NBROKER-MOD-0009","target_number":"HLP-NBROKER-TGT-0009"},
{"operation_number":"HLP-NBROKER-OP-0020","alias":"ACQUIRE_DEVELOPMENT_WRITE_LANE","channel_number":"HLP-NBROKER-CH-0007","module_number":"HLP-NBROKER-MOD-0010","target_number":"HLP-NBROKER-TGT-0010"},
{"operation_number":"HLP-NBROKER-OP-0021","alias":"INSPECT_DEVELOPMENT_WRITE_LANE","channel_number":"HLP-NBROKER-CH-0007","module_number":"HLP-NBROKER-MOD-0010","target_number":"HLP-NBROKER-TGT-0010"},
{"operation_number":"HLP-NBROKER-OP-0022","alias":"RELEASE_DEVELOPMENT_WRITE_LANE","channel_number":"HLP-NBROKER-CH-0007","module_number":"HLP-NBROKER-MOD-0010","target_number":"HLP-NBROKER-TGT-0010"}
]
}

View file

@ -1,83 +1,31 @@
{
"schema": "hololake.dynamic-language-world-visual-system/v1",
"record_id": "HLP-DYNAMIC-WORLD-SURFACE-001",
"state": "HOLOLAKE_0_5_SIGNED_NUMBERED_SURFACE_ACCEPTED",
"package": {
"official_module_number": "HLP-MOD-OFFICIAL-DYNAMIC-WORLD-SURFACE-0001",
"adapter": "dynamic-language-world-surface-v1",
"registration_class": "OFFICIAL_LIGHTHOUSE",
"activation": "SIGNED_PACKAGE_PLUS_EXPLICIT_HUMAN_PERMISSION_CONFIRMATION"
},
"numbered_ipc": {
"module": "HLP-NIPC-MOD-0031",
"target": "HLP-NIPC-TGT-0031",
"operations": ["HLP-NIPC-OP-0147"],
"public_tauri_commands": ["numbered_ipc"],
"mismatched_coordinate": "FAIL_CLOSED"
},
"schema": "HOLOLAKE_DYNAMIC_LANGUAGE_WORLD_VISUAL_SYSTEM/1",
"state": "IMPLEMENTED_LOCAL_ACCEPTANCE_PENDING",
"modes": ["DYNAMIC_LANGUAGE_WORLD", "FIXED_TRADITIONAL_THEME"],
"dynamic_inputs": ["BEIJING_TIME", "VERIFIED_CURRENT_WEATHER"],
"weather": {
"provider": "Open-Meteo",
"endpoint": "https://api.open-meteo.com/v1/forecast",
"maximum_request_seconds": 5,
"cache_ttl_seconds": 600,
"redirects": "DENIED",
"unavailable_behavior": "BEIJING_TIME_ONLY_NO_FAKE_WEATHER"
"visual_balance": {
"token_layers": ["PRIMITIVE", "SEMANTIC", "COMPONENT"],
"light_scene_uses_dark_text": true,
"dark_scene_uses_light_text": true,
"routing_permission_or_fact_change_allowed": false
},
"visual_lock": {
"layout": "QODER_VISUAL_LANGUAGE_SEMANTICALLY_REASSEMBLED_ON_RESPONSIVE_HOLOLAKE_SHELL",
"language_world_themes": ["夜湖星光", "晨湖曦光", "星云紫夜", "烛畔暖湖", "清浅澄湖"],
"traditional_finishes": ["曜夜", "星辉", "深海", "翡翠", "朱砂", "香槟", "瓷光", "雪霁"],
"all_downstream_pages_inherit_active_surface_tokens": true,
"ambient_motion_requires_recent_human_pointer_or_keyboard_activity": true,
"idle_visual_state": "STATIC",
"responsive_layout": "CONTAINER_MEASURED_PANORAMIC_WIDE_COMPACT_STACKED_REFLOW",
"domain_semantic_order_is_stable": true,
"private_channel_separates_native_organs_from_installed_modules": true,
"climate_changes_routing_permission_or_fact": false,
"daily_sampling_domain_changes_open_domain": false,
"daily_domain_rotation": ["FIFTH_DOMAIN", "ZERO_SENSE_DOMAIN", "MAIN_DOMAIN", "BRANCH_DOMAIN", "ZERO_DOMAIN"],
"coordinates": {
"FIFTH_DOMAIN": "XIAN_INTERNAL_ONLY",
"ZERO_SENSE_DOMAIN": "BEIJING_INTERNAL_ONLY",
"MAIN_DOMAIN": "BEIJING_INTERNAL_ONLY",
"ZERO_DOMAIN": "GUANGZHOU_INTERNAL_ONLY",
"BRANCH_DOMAIN": "DETERMINISTIC_DAILY_CHINA_CITY_ROAMING_INTERNAL_ONLY"
},
"privacy": {
"real_city_exposed_in_ui": false,
"coordinates_exposed_in_ui": false,
"mechanical_flow_lines": false,
"heavy_webgl": false
"weather_unavailable_behavior": "BEIJING_TIME_ONLY_NO_FAKE_WEATHER"
},
"donor_disposition": {
"world_climate": "EXTRACTED_REWRITTEN_AND_NUMBERED",
"starlake_surface": "QODER_LOCKED_SOURCE_ADMITTED_WITH_RESPONSIVE_AND_IDLE_MOTION_ADAPTER",
"traditional_surface": "QODER_LOCKED_SOURCE_ADMITTED_WITH_REAL_NUMBERED_PROJECTIONS_ONLY",
"traditional_surface_css": "QODER_LOCKED_EIGHT_FINISH_TOKEN_SYSTEM_ADMITTED_AND_SCOPED_ACROSS_ALL_PAGES",
"fake_broadcasts_and_fake_metrics": "REJECTED"
},
"qoder_source_provenance": {
"root": "/Volumes/JZAO/铸渊-ICE-GL-ZY001/OUT-输出/UI-预览-20260818/deploy-staging",
"main_tsx_sha256": "7dab8596ec0bd2609b1b23b175f1f14f15f2aa9af847eb605692c993d2e876e8",
"traditional_surface_tsx_sha256": "c713dc27681e07c510a2125816dcefb3255252fc0b570e350af7a98f57fc220d",
"traditional_surface_css_sha256": "3e6c446fb84a16ed23b0fd51466ad9723d0c0670ee6ddf6653f61237bd00baa6",
"starlake_surface_css_sha256": "471e3edef02236e6463144ac75b526f0f98782b5476b9db786e7cd0614a83227",
"acceptance_html_sha256": "7a41e426f1576fe0e25182e0c2efee65302b064d86363c890b0f235386a9c070"
},
"current_acceptance": {
"state": "PASS_NUMBERED_QODER_SURFACES_REAL_DATA_RESPONSIVE_IDLE_AND_RESTART",
"module_package_sha256": "b6ba13b9f70bd617b2a303ec2eb0ea11d5354d10118c7f3e5179ae8100cd2602",
"module_package_signature": "PASS_EMBEDDED_PRODUCT_TRUST",
"numbered_route": "HLP-NIPC-MOD-0031/HLP-NIPC-OP-0147/HLP-NIPC-TGT-0031",
"signed_app_binary_sha256": "b0422bb18df521ace54ff1a52cd47121d92833dd78f165845deba7806686c7ac",
"signed_app_cdhash": "42640f7ce56e96403609899095c77ea6171df07d",
"apple_team_identifier": "825A9L3G7Q",
"module_receipts": {
"install": "2bb903cd369c8f57432c59367fd5494ee89a75214d5129511190e2337cecdbc4",
"mount": "aed4d00e51849ae5e9c0258fe2f93afc8bff8d927905cdd7fabd9bf32c4bc66c",
"self_test_pass": "404a0eeddb866bc3050b407c586c036f3707db577e1edf9f1cf3129c1cc9cc1d"
},
"real_weather_readback": "PASS_VERIFIED_LIVE_NIGHT_CLOUD_WITHOUT_CITY_OR_COORDINATES",
"restart_restore": "PASS_ACTIVE_MODULE_REAL_CLIMATE_THEME_AND_WEB_NOVEL_CHAPTER_RESTORED",
"official_shell_preserved": "QODER_LOCKED_SURFACES_ADMITTED_WITH_NUMBERED_FUNCTION_ROUTING_UNCHANGED",
"visual_comparison": "audit/qoder-traditional-reference-vs-hololake-0.5.0.jpg",
"idle_static_psnr_db": 59.502493,
"idle_static_clock_unchanged": true,
"web_novel_new_chapter_modal": "PASS",
"web_novel_created_chapter_restart_persistence": "PASS_1_CHAPTER_VISIBLE_AFTER_RESTART",
"traditional_theme_downstream_pages": ["CHANNEL", "WEB_NOVEL", "EDUCATION"],
"notarization": "FINAL_RELEASE_CANDIDATE_PENDING"
"weather_source": {
"provider": "Open-Meteo",
"endpoint": "https://api.open-meteo.com/v1/forecast",
"documentation": "https://open-meteo.com/en/docs",
"current_variables": ["weather_code", "is_day", "precipitation", "cloud_cover", "wind_speed_10m"]
}
}

View file

@ -0,0 +1,138 @@
{
"schema": "hololake.education-open-source-donor-assessment/v1",
"record_id": "HLP-EDUCATION-OSS-DONORS-001",
"state": "FOUR_TRANSLATION_FAMILIES_TWO_HEADLESS_FAMILIES_AND_ONE_REAL_SPREADSHEET_ENGINE_INTEGRATED",
"reviewed_at": "2026-08-18",
"rule": "STUDY_LOGIC_SELECT_SMALL_AUDITABLE_PARTS_AND_KEEP_HOLOLAKE_IDENTITY_STORAGE_PERMISSION_AND_UI_BOUNDARIES",
"candidates": [
{
"name": "Calamine",
"role": "BOUNDED_SPREADSHEET_READ_ADAPTER",
"upstream": "https://github.com/tafia/calamine",
"observed_license": "MIT",
"decision": "INTEGRATE_PINNED_0_26_1_READ_ONLY_NO_OFFICE_RUNTIME"
},
{
"name": "rust_xlsxwriter",
"role": "BOUNDED_XLSX_EXPORT_ADAPTER",
"upstream": "https://github.com/jmcnamara/rust_xlsxwriter",
"observed_license": "MIT OR Apache-2.0",
"decision": "INTEGRATE_PINNED_0_64_2_WRITE_NEW_XLSX_ONLY"
},
{
"name": "rust-csv",
"role": "BOUNDED_DELIMITED_IMPORT_EXPORT_ADAPTER",
"upstream": "https://github.com/BurntSushi/rust-csv",
"observed_license": "Unlicense OR MIT",
"decision": "INTEGRATE_PINNED_1_3_0"
},
{
"name": "encoding_rs",
"role": "LEGACY_CSV_TEXT_DECODER",
"upstream": "https://github.com/hsivonen/encoding_rs",
"observed_license": "MIT OR Apache-2.0",
"decision": "INTEGRATE_UTF_AND_GBK_FALLBACK_WITHOUT_NETWORK"
},
{
"name": "AppFlowy",
"role": "FULL_WORKSPACE_LOGIC_DONOR",
"upstream": "https://github.com/AppFlowy-IO/AppFlowy",
"observed_license": "AGPL-3.0",
"decision": "DO_NOT_EMBED_WHOLE_APPLICATION_STUDY_WORKSPACE_AND_DATABASE_INTERACTION_LOGIC_ONLY"
},
{
"name": "Lexical",
"role": "LAZY_LOADED_RICH_DOCUMENT_ENGINE",
"upstream": "https://github.com/facebook/lexical",
"observed_license": "MIT",
"source_review_commit": "29d4007d4322912ce75a416ac90cc9d224d3f029",
"decision": "INTEGRATE_PINNED_0_49_0_STATE_COMMAND_HISTORY_AND_MARKDOWN_PARTS_ONLY"
},
{
"name": "TanStack Table",
"role": "HEADLESS_TABLE_ROW_MODEL_ENGINE",
"upstream": "https://github.com/TanStack/table",
"observed_license": "MIT",
"source_review_commit": "ac4f1345220649da3c60a24471b7f130fb159ab4",
"decision": "INTEGRATE_PINNED_8_21_3_SORT_FILTER_GROUP_AGGREGATE_AND_PAGINATION_ROW_MODELS_ONLY"
},
{
"name": "Univer",
"role": "FULL_SPREADSHEET_AND_DOCUMENT_ENGINE_ARCHITECTURE_DONOR",
"upstream": "https://github.com/dream-num/univer",
"observed_license": "Apache-2.0",
"source_review_commit": "9251e0d30d4c4aeb4707dc4d856055081399cf38",
"decision": "SOURCE_STUDY_ONLY_DO_NOT_EMBED_WHOLE_APPLICATION_DEFER_FORMULA_AND_ADVANCED_GRID_PARTS"
},
{
"name": "FortuneSheet",
"role": "LAZY_LOADED_REAL_SPREADSHEET_ENGINE_FOR_BUILT_IN_CHANNEL_WORKBENCH",
"upstream": "https://github.com/ruilisi/fortune-sheet",
"observed_license": "MIT",
"source_review_commit": "94346608877db4747406707a177c4b8f3bacdbf9",
"decision": "INTEGRATE_PINNED_1_0_4_REAL_CELLS_FORMULAS_EDITING_FORMATTING_FILTERING_AND_FREEZE_WITH_HOLOLAKE_NATIVE_STORAGE_ADAPTER",
"security_adjustment": "OVERRIDE_UUID_TO_11_1_1_FORTUNE_ONLY_USES_V4_PRODUCTION_AUDIT_ZERO_KNOWN_VULNERABILITIES"
},
{
"name": "Glide Data Grid",
"role": "HIGH_PERFORMANCE_GRID_ARCHITECTURE_DONOR",
"upstream": "https://github.com/glideapps/glide-data-grid",
"observed_license": "MIT",
"source_review_commit": "0875d78",
"decision": "SOURCE_STUDY_ONLY_GRID_IS_NOT_A_SPREADSHEET_OR_FORMULA_ENGINE"
},
{
"name": "Vega-Lite",
"role": "DECLARATIVE_PROJECTION_GRAMMAR_DONOR",
"upstream": "https://github.com/vega/vega-lite",
"observed_license": "BSD-3-Clause",
"decision": "ADOPT_DECLARATIVE_DIMENSION_MEASURE_AND_VIEW_SPEC_CONCEPTS_WITHOUT_IMPORTING_RUNTIME"
},
{
"name": "Observable Plot",
"role": "LAYERED_MARK_AND_COMPOSABLE_TRANSFORM_DONOR",
"upstream": "https://github.com/observablehq/plot",
"observed_license": "ISC",
"decision": "ADOPT_LAYERED_PROJECTION_AND_TIDY_DATA_CONCEPTS_WITHOUT_IMPORTING_RUNTIME"
},
{
"name": "Apache ECharts",
"role": "FULL_BROWSER_VISUALIZATION_RUNTIME_CANDIDATE",
"upstream": "https://github.com/apache/echarts",
"observed_license": "Apache-2.0",
"decision": "DO_NOT_IMPORT_FOR_STAGE_ONE_FIVE_NATIVE_VIEWS_DO_NOT_JUSTIFY_RUNTIME_WEIGHT"
},
{
"name": "Apache Arrow DataFusion",
"role": "TYPED_COLUMNAR_QUERY_PLAN_DONOR",
"upstream": "https://github.com/apache/datafusion",
"observed_license": "Apache-2.0",
"decision": "ADOPT_TYPED_SCHEMA_AND_VALIDATED_PLAN_CONCEPTS_DEFER_ENGINE_UNTIL_DATA_SCALE_REQUIRES_IT"
},
{
"name": "DuckDB",
"role": "EMBEDDED_ANALYTICAL_ENGINE_CANDIDATE",
"upstream": "https://github.com/duckdb/duckdb",
"observed_license": "MIT",
"decision": "DEFER_NATIVE_DEPENDENCY_CURRENT_BOUNDED_ACCOUNT_DATA_EXECUTES_WITH_SMALLER_HOLOLAKE_CORE"
}
],
"current_slice": {
"external_translation_library_families_added": 4,
"external_headless_engine_families_added": 2,
"real_spreadsheet_engine_families_added": 1,
"direct_frontend_engine_packages_added": 10,
"external_source_files_copied": 0,
"source_research_route": "LOCAL_DIRECT_TO_BS_SG_002_THEN_EXTERNAL_DRIVE",
"source_research_root": "/Volumes/JZAO/HoloLake/development/拆件车间-open-src-20260816/education-engines-20260818",
"source_repositories_retained_outside_product_tree": 5,
"concepts_adopted": [
"DECLARATIVE_DIMENSION_MEASURE_AND_PROJECTION_SPEC",
"TYPED_NATIVE_COLUMNS_AND_VALIDATED_EXECUTION_PLAN",
"LAYERED_MARKS_WITH_ONE_SHARED_DATASET",
"HEADLESS_DATA_BEHAVIOR_SEPARATE_FROM_HUMAN_RENDERING"
],
"implementation": "BUILT_IN_CHANNEL_DOCUMENT_AND_SPREADSHEET_FOUNDATION_PLUS_DEVELOPMENT_MOUNTED_EDUCATION_PACKAGE_WITH_PRODUCT_OWNED_PROFILE_ROUTING_IDENTITY_STORAGE_PERMISSION_AND_ADVANCED_VIEWS"
},
"legal_boundary": "PRELIMINARY_ENGINEERING_SCREEN_NOT_FINAL_DISTRIBUTION_LEGAL_APPROVAL"
}

View file

@ -1,15 +1,15 @@
{
"schema": "hololake.education-workspace/v1",
"record_id": "HLP-EDUCATION-WORKSPACE-001",
"state": "ADMITTED_INSTALLED_RUNTIME_ACCEPTED",
"state": "DEVELOPMENT_MODULE_SOURCE_MOUNTED_ACCEPTANCE_PENDING",
"domain_entry": "BRANCH_DOMAIN",
"industry": "EDUCATION",
"channel_id": "GH-EDU-INIT-001",
"package": {
"package_key": "hololake.official.education-workbench",
"official_module_number": "HLP-MOD-OFFICIAL-EDUCATION-WORKBENCH-0001",
"registration_state": "OFFICIAL_NUMBER_ACCEPTED",
"current_mount": "ACTIVE_AFTER_SIGNED_INSTALL_MOUNT_AND_SELF_TEST",
"official_module_number": null,
"registration_state": "PENDING_FUNCTIONAL_ACCEPTANCE_AND_NUMBER_REGISTRATION",
"current_mount": "DEVELOPMENT_BUNDLE_ONLY",
"future_distribution": "HOLOLAKE_OFFICIAL_MODULE_MARKETPLACE"
},
"foundation_dependency": {
@ -238,28 +238,5 @@
"model_execution_authority_granted": false,
"external_application_embedded": false
},
"current_acceptance": {
"state": "PASS",
"runtime_module_number": "HLP-MOD-OFFICIAL-EDUCATION-WORKBENCH-0001",
"numbered_ipc_module": "HLP-NIPC-MOD-0024",
"numbered_operations": "HLP-NIPC-OP-0085..0102",
"signed_package_sha256": "a9f6fb7dd9c4aaf910a5d20d0a1d72dea6ab921cf36dd50d46dd88cde3a09e03",
"signed_app_binary_sha256": "028592b137fe4f19a642e1301d6fb500e2a4fde50ddb616e229de8a48090803c",
"developer_id_team": "825A9L3G7Q",
"developer_id_cdhash": "4c88261b4b573d08edcbba8d67d8afe27ad82a3e",
"runtime_receipts": {
"install": "68f296a11be19c384cb67af9f529a03cb8389bd256c153c5905451fbc0011a24",
"mount": "ddb6a51d47f6a58a72a7fc748eff71687cbd04be5dde33dbce590a7abba6af5f",
"self_test_pass": "80d59b7c9c2f14005fd8a24748a25c2be0d55198fdcb621f528267ae6dccc12a"
},
"restart_readback": {
"module_state": "ACTIVE",
"document": "冰朔教育迁移验收 · revision 2",
"table": "冰朔教育迁移验收表 · 1 row · revision 4",
"automation": "验收状态自动化 · preview 1 row / 1 cell · APPLIED revision 3 to 4"
},
"existing_user_data_deleted_or_overwritten": false,
"apple_notarization_scope": "FINAL_RELEASE_CANDIDATE_ONLY_NOT_THIS_DEBUG_ACCEPTANCE_BUNDLE"
},
"open_source_donor_assessment": "contracts/education-open-source-donor-assessment.json"
}

View file

@ -1,6 +1,6 @@
{
"schema": "hololake.gls-executable-projections/v2",
"source_commit": "104a5d73162bdf4a529701e65898e2bc2863ea9e",
"source_commit": "2598fbfba8caf64c7ab9740a3036c5aab977502e",
"runtime_graph_rule": "ONLY_EXPLICIT_RUNTIME_REQUIRES_EDGES_ENTER_ACTIVATION_GRAPH",
"projections": {
"GLS-0250": {"stage":"P0","projection_kind":"TYPED_FACT_AND_DOMAIN_BOUNDARY","adapter":"origin-domain-topology","event_kinds":["BOOTSTRAP","DOMAIN_ROUTE"],"dependencies":[]},

View file

@ -1,7 +1,7 @@
{
"schema": "hololake.gls-native-runtime-kernel/v1",
"record_id": "HLP-GLS-NATIVE-RUNTIME-KERNEL-001",
"source_commit": "104a5d73162bdf4a529701e65898e2bc2863ea9e",
"source_commit": "2598fbfba8caf64c7ab9740a3036c5aab977502e",
"receipt_schema": "hololake.protocol-decision-receipt/v1",
"decision_set": ["ALLOW", "DENY", "AMBIGUOUS", "UNVERIFIED"],
"runtime_boundaries": {

View file

@ -1,33 +0,0 @@
{
"schema": "hololake.gls-numbered-reference-nodes/v1",
"record_id": "HLP-GLS-NUMBERED-REFERENCE-REGISTRY-001",
"source": {
"repository": "REPO-012",
"commit": "104a5d73162bdf4a529701e65898e2bc2863ea9e"
},
"policy": {
"number_is_coordinate_not_authority": true,
"independent_protocol_source_required_for_execution": true,
"reference_only_nodes_may_execute": false,
"unknown_reference": "FAIL_CLOSED",
"unresolved_number_reference_allowed": false
},
"nodes": [
{"protocol_id":"GLS-0010","node_number":"HLP-GLS-REF-0010","title":"Guanghu Protocol Registry Center Standard","reference_kind":"NORMATIVE_REFERENCE","source_state":"ROADMAP_REFERENCE_ONLY"},
{"protocol_id":"GLS-0140","node_number":"HLP-GLS-REF-0140","title":"Context Loading Specification","reference_kind":"NORMATIVE_REFERENCE","source_state":"ROADMAP_REFERENCE_ONLY"},
{"protocol_id":"GLS-0401","node_number":"HLP-GLS-REF-0401","title":"Tree","reference_kind":"SCHEMA_IMPORT","source_state":"ROADMAP_REFERENCE_ONLY"},
{"protocol_id":"GLS-0402","node_number":"HLP-GLS-REF-0402","title":"Leaf","reference_kind":"SCHEMA_IMPORT","source_state":"ROADMAP_REFERENCE_ONLY"},
{"protocol_id":"GLS-0403","node_number":"HLP-GLS-REF-0403","title":"Lock","reference_kind":"SCHEMA_IMPORT","source_state":"ROADMAP_REFERENCE_ONLY"},
{"protocol_id":"GLS-0404","node_number":"HLP-GLS-REF-0404","title":"Trigger","reference_kind":"SCHEMA_IMPORT","source_state":"ROADMAP_REFERENCE_ONLY"},
{"protocol_id":"GLS-0406","node_number":"HLP-GLS-REF-0406","title":"Evidence","reference_kind":"SCHEMA_IMPORT","source_state":"ROADMAP_REFERENCE_ONLY"},
{"protocol_id":"GLS-0407","node_number":"HLP-GLS-REF-0407","title":"Correction","reference_kind":"SCHEMA_IMPORT","source_state":"ROADMAP_REFERENCE_ONLY"},
{"protocol_id":"GLS-0409","node_number":"HLP-GLS-REF-0409","title":"Machine-State History","reference_kind":"SCHEMA_IMPORT","source_state":"ROADMAP_REFERENCE_ONLY"},
{"protocol_id":"GLS-0602","node_number":"HLP-GLS-REF-0602","title":"Authorization","reference_kind":"SCHEMA_IMPORT","source_state":"ROADMAP_REFERENCE_ONLY"},
{"protocol_id":"GLS-0603","node_number":"HLP-GLS-REF-0603","title":"Signature","reference_kind":"SCHEMA_IMPORT","source_state":"ROADMAP_REFERENCE_ONLY"},
{"protocol_id":"GLS-0604","node_number":"HLP-GLS-REF-0604","title":"Integrity","reference_kind":"EVIDENCE_ONLY","source_state":"ROADMAP_REFERENCE_ONLY"},
{"protocol_id":"GLS-0605","node_number":"HLP-GLS-REF-0605","title":"Semantic Safety Boundary","reference_kind":"SCHEMA_IMPORT","source_state":"ROADMAP_REFERENCE_ONLY"},
{"protocol_id":"GLS-0814","node_number":"HLP-GLS-REF-0814","title":"Tool Runtime","reference_kind":"NORMATIVE_REFERENCE","source_state":"ROADMAP_REFERENCE_ONLY"},
{"protocol_id":"GLS-0816","node_number":"HLP-GLS-REF-0816","title":"Checkpoint Runtime","reference_kind":"NORMATIVE_REFERENCE","source_state":"ROADMAP_REFERENCE_ONLY"},
{"protocol_id":"GLS-0830","node_number":"HLP-GLS-REF-0830","title":"Guanghu Language World Core","reference_kind":"NORMATIVE_REFERENCE","source_state":"ROADMAP_REFERENCE_ONLY"}
]
}

View file

@ -1,49 +0,0 @@
{
"schema": "hololake.ios-mobile-client.contract/v1",
"record_id": "HLP-IOS-CLIENT-001",
"state": "NUMBERED_SOURCE_SIMULATOR_AND_DEVELOPMENT_SIGNED_IPA_ACCEPTED",
"role": "REMOTE_BODY_ENTRY_OF_THE_SAME_PERSONA_SYSTEM",
"root_node": "USER_LOCAL_COMPUTER_TERMINAL",
"numbered_transport": {
"desktop_module": "HLP-MOD-OFFICIAL-MOBILE-SYNC-0001",
"desktop_route_family": "HLP-NIPC-MOD-0030/HLP-NIPC-OP-0141..0146/HLP-NIPC-TGT-0030",
"wire_schema": "hololake.mobile-sync/v1",
"client_number": "HLP-IOS-CLIENT-001",
"unregistered_route_access": "FAIL_CLOSED"
},
"security": {
"pairing": "CHACHA20_POLY1305_ONE_TIME_SECRET",
"session": "CHACHA20_POLY1305_STRICT_COUNTER",
"key_storage": "KEYCHAIN_WHEN_UNLOCKED_THIS_DEVICE_ONLY",
"local_network_only": true,
"background_polling": false,
"remote_desktop_clone": false,
"desktop_offline_execution": false
},
"interface": {
"framework": "SWIFTUI",
"visual_family": "HOLOLAKE_TRADITIONAL_SURFACE_MOBILE_ADAPTATION",
"idle_state": "STATIC",
"manual_sync_only": true,
"pairing_entry": ["CUSTOM_URL_SCHEME", "PASTEBOARD"],
"projections": ["CHANNEL_INTEGRITY", "WEB_NOVEL_COUNTS_AND_WORKS", "EDUCATION_COUNTS", "BOUNDED_CAPTURE"]
},
"acceptance": {
"simulator_build": "PASS_SIGNED_LOCAL_SIMULATOR_IPHONE_17_PRO_IOS_26_5",
"simulator_visual_inspection": "PASS_PAIRING_AND_NUMBER_BOUNDARY_SURFACE_IDLE_STATIC",
"unit_tests": "PASS_4",
"development_signed_device_archive": "PASS_APPLE_DEVELOPMENT_TEAM_825A9L3G7Q",
"debugging_ipa_export": "PASS",
"version": "0.5.0",
"build": "1",
"bundle_identifier": "com.guanghulab.hololake",
"xcode": "26.6_17F113",
"archive_application_binary_sha256": "7021c9cde2f7bdf01cda6200669be528a58d27ef41adbd3d58d7135ff7245702",
"archive_application_cdhash": "11ae3a8ac0d761e4d4b4de229dbb19291de29e03",
"debugging_ipa_sha256": "a6b505e1a7dc10febd831a540396bb9530f78bb2429d258962f0250e5597b1f0",
"provisioning_profile_uuid": "fe5fe72c-4826-4e19-9672-d9868cc4491e",
"provisioning_profile_expires": "2027-07-19",
"desktop_delivery_path": "/Users/bingshuolingdianyuanhe/Desktop/HoloLake-iPhone-0.5.0-Development.ipa",
"real_iphone_pair_and_sync": "NOT_CLAIMED"
}
}

View file

@ -22,11 +22,32 @@
"exact_content_deduplication": true,
"optimistic_native_editing": true,
"native_edit_commit_receipt": true,
"unified_category_index": true,
"native_page_tags": true,
"category_and_tag_filtering": true,
"non_destructive_organization_metadata": true,
"organization_git_receipt": true,
"recoverable_page_and_folder_archive": true,
"archive_cleans_organization_index": true,
"archive_git_receipt": true,
"gfm_tables_tasks_and_code": true,
"wiki_link_navigation": true,
"markdown_reading_canvas": true,
"raw_html_rendering": false
},
"organization": {
"schema": "hololake.knowledge-organization/v1",
"storage": "ACCOUNT_SCOPED_KNOWLEDGE_GIT_DOT_HOLOLAKE_INDEX",
"document_body_rewritten": false,
"original_directory_moved": false,
"automatic_category_source": "NORMALIZED_NATIVE_PATH_WITH_IMPORT_WRAPPER_REMOVED",
"explicit_category_override": true,
"frontmatter_tags_merged_read_only": true,
"maximum_category_depth": 4,
"maximum_tags_per_document": 12,
"cross_platform_invalid_name_rejection": true,
"optimistic_content_hash_lock": true
},
"folder_import": {
"maximum_files": 1000,
"maximum_file_bytes": 10485760,
@ -57,6 +78,9 @@
"deduplication_runtime_tested": true,
"idempotent_import_runtime_tested": true,
"native_edit_runtime_tested": true,
"organization_runtime_tested": true,
"organization_human_surface_integrated": true,
"organized_page_archive_runtime_tested": true,
"server_deployment": false
}
}

View file

@ -0,0 +1,40 @@
{
"schema": "HOLOLAKE_LANGUAGE_WORLD_PUBLIC_ROUTING/1",
"state": "IMPLEMENTED_LOCAL_ACCEPTANCE_PENDING",
"user_channel_sovereignty": {
"ordinary_user_belongs_to_official_domain": false,
"home_entry": "PERSONAL_CHANNEL",
"public_world_is_browsable": true,
"channel_diy_allowed_under_world_rules": true
},
"official_domains": {
"MAIN_DOMAIN": {
"visibility": "PUBLIC_SERVICE",
"purpose": ["ANNOUNCEMENTS", "VERSION_UPDATES", "RULE_NOTICES"]
},
"BRANCH_DOMAIN": {
"visibility": "PUBLIC_SERVICE",
"purpose": ["INDUSTRY_INITIAL_CHANNEL_TEMPLATES", "MODULE_MARKETPLACE", "PERSONA_BRAIN_SKILL_MARKETPLACE"],
"supply_chains": ["EXECUTABLE_MODULES", "PERSONA_BRAINS_AND_SKILL_PACKAGES"]
},
"ZERO_DOMAIN": {
"visibility": "PUBLIC_OBSERVATION_BOUNDED",
"purpose": ["HOT_UPDATE_EXPERIMENTS", "SYSTEM_EXPERIMENTS", "ARCHITECTURE_EXPERIMENTS", "LANGUAGE_REASONING_SIMULATION"]
},
"ZERO_SENSE_DOMAIN": {
"visibility": "PRIVATE_HUMAN_CONTROL_TEAM_ONLY",
"purpose": ["APPROVAL", "EXECUTION", "OVERSIGHT_OF_FIRST_THREE_DOMAINS"]
},
"FIFTH_DOMAIN": {
"visibility": "PRIVATE_ICE_SHUO_AUTHORIZATION_ONLY",
"owner": "ICE-GL∞",
"official_template_required": false,
"can_pull_resources_from": ["MAIN_DOMAIN", "BRANCH_DOMAIN", "ZERO_DOMAIN"],
"reverse_entry_without_owner_permission": false
}
},
"shared_channel_collective": {
"supported_as_future_optional_pattern": true,
"formal_product_name": "UNDECIDED_DO_NOT_INVENT"
}
}

View file

@ -115,9 +115,6 @@
"cross_platform_local_transport_runtime": true,
"authenticated_heartbeat_runtime": true,
"hololake_work_environment_frame_runtime": true,
"persona_to_host_runtime_license_verifier": true,
"persona_runtime_trusted_signer_provisioned": false,
"persona_mode_expiry_and_scope_fail_closed": true,
"model_protocol_context_restore_required": false,
"external_local_broker_runtime": true,
"authenticated_broker_development_lane_runtime": true,

View file

@ -1,93 +0,0 @@
{
"schema": "hololake.mobile-sync.contract/v1",
"record_id": "HLP-MOBILE-SYNC-001",
"state": "HOLOLAKE_0_5_NUMBERED_DESKTOP_BRIDGE_ACCEPTED",
"package": {
"official_module_number": "HLP-MOD-OFFICIAL-MOBILE-SYNC-0001",
"adapter": "mobile-sync-v1",
"registration_class": "OFFICIAL_LIGHTHOUSE",
"activation": "SIGNED_PACKAGE_PLUS_EXPLICIT_HUMAN_PERMISSION_CONFIRMATION",
"listener_after_activation": "EXPLICIT_HUMAN_ACTION_ONLY"
},
"numbered_ipc": {
"module": "HLP-NIPC-MOD-0030",
"target": "HLP-NIPC-TGT-0030",
"operations": "HLP-NIPC-OP-0141..HLP-NIPC-OP-0146",
"public_tauri_commands": ["numbered_ipc"],
"mismatched_coordinate": "FAIL_CLOSED"
},
"desktop_role": "USER_LOCAL_COMPUTER_TERMINAL_ROOT_NODE",
"mobile_role": "REMOTE_BODY_ENTRY_OF_THE_SAME_PERSONA_SYSTEM",
"transport": {
"implemented": "SAME_LAN_DIRECT_HTTP_WITH_APPLICATION_LAYER_ENCRYPTION",
"port_preference": 37421,
"remote_internet_direct": "NOT_IMPLEMENTED",
"encrypted_relay": "NOT_IMPLEMENTED",
"maximum_request_bytes": 262144,
"maximum_concurrent_connections": 16,
"duplicate_http_header": "REJECT"
},
"pairing": {
"uri_scheme": "hololake://pair",
"secret_bits": 256,
"ttl_seconds": 600,
"single_use": true,
"payload_aead": "CHACHA20_POLY1305",
"aad": "hololake.mobile.pair/v1"
},
"session": {
"key_bits": 256,
"aead": "CHACHA20_POLY1305",
"replay_guard": "STRICTLY_INCREASING_PER_DEVICE_COUNTER",
"device_revocation": true,
"desktop_key_storage": "ACCOUNT_SCOPED_SQLITE",
"ios_key_storage": "KEYCHAIN_THIS_DEVICE_ONLY"
},
"routes": {
"GET /v1/status": "NO_PRIVATE_PAYLOAD",
"POST /v1/pair": "ONE_TIME_PAIRING_SECRET_REQUIRED",
"POST /v1/sync": "PAIRED_DEVICE_AEAD_AND_COUNTER_REQUIRED"
},
"projection": {
"personal_channel": "MINIMUM_COUNTS_AND_INTEGRITY",
"web_novel": "WORK_LIST_AND_COUNTS",
"education": "COUNTS_ONLY_NO_SENSITIVE_CELL_VALUES",
"mobile_capture": "BOUNDED_INBOX_WRITE_ONLY_NO_AUTOMATIC_DOMAIN_MUTATION"
},
"hard_boundaries": {
"remote_desktop_clone": false,
"second_persona_system": false,
"platform_private_payload_custody": false,
"desktop_offline_execution": false,
"mobile_capture_mutates_persona_or_industry_data": false,
"module_unmount_stops_listener_before_lifecycle_transition": true,
"background_frontend_polling": false
},
"client_scope": {
"desktop_bridge": "IN_THIS_ADMISSION",
"ios_application_source": "SEPARATELY_ADMITTED_AT_MOBILE_IOS_WITH_HLP_IOS_CLIENT_001",
"ios_installable_package": "DEVELOPMENT_SIGNED_DEBUGGING_IPA_EXPORTED",
"claim_real_iphone_end_to_end_accepted": false
},
"current_acceptance": {
"state": "PASS_DESKTOP_BRIDGE_AND_SEPARATELY_ADMITTED_IOS_CLIENT_ARTIFACT",
"module_package_sha256": "61a9d402c936d7477609bcfa6eb4ad6e83cb6c089ba51b3db09a2d6259185924",
"module_package_signature": "PASS_EMBEDDED_PRODUCT_TRUST",
"signed_app_binary_sha256": "9be06d6c5dbd4f46f6f925142d633f12b42ee553873c2342f9804bcf39dde7b4",
"signed_app_cdhash": "c595cb2a7729d49638faa78f76e145ee9b1da05a",
"apple_team_identifier": "825A9L3G7Q",
"module_receipts": {
"install": "a09496ec6113254f77ea2425d0bd30571e9e0e3df62bfa18e500f860c2f65d4d",
"mount": "5b162ee807c8b4d9c8aa8d9cb590c64587f51067dc0804030bf57ed0753ac25a",
"self_test_pass": "e66ee868e28a25fcd70cc888845661b5044d18a6e18b70cee6e4839b02fe1c53"
},
"desktop_listener": "PASS_EXPLICIT_START_REACHABLE_STATUS_AND_EXPLICIT_STOP",
"restart_restore": "PASS_ACTIVE_MODULE_RESTORED_LISTENER_OFFLINE",
"legacy_account_readback": "PASS_ONE_PAIRED_DEVICE_ONE_ISOLATED_CAPTURE_RETAINED",
"ios_client_contract": "contracts/ios-mobile-client-v1.json",
"ios_client_source_build_and_simulator": "PASS",
"ios_development_signed_ipa": "PASS_SHA256_a6b505e1a7dc10febd831a540396bb9530f78bb2429d258962f0250e5597b1f0",
"live_iphone_pairing_this_cycle": "NOT_CLAIMED_NO_PHYSICAL_DEVICE_USED",
"notarization": "FINAL_RELEASE_CANDIDATE_PENDING"
}
}

View file

@ -1,240 +0,0 @@
{
"schema": "hololake.module-donor-admission-registry/v1",
"record_id": "HLP-MODULE-DONOR-ADMISSION-001",
"state": "EIGHT_CANDIDATES_ADMITTED_DONOR_SOURCES_REMAIN_READ_ONLY",
"root_rule": {
"official_base": "HOLOLAKE_0.5.0_NUMBERED_IPC_ROOT",
"repair_old_application_in_place": false,
"bulk_merge_or_wholesale_copy_allowed": false,
"one_candidate_per_admission_cycle": true,
"candidate_number_is_runtime_module_number": false,
"permanent_module_number_assignment_before_acceptance": false,
"all_frontend_backend_calls_must_cross_numbered_ipc": true,
"shared_file_merge_is_admission_evidence": false
},
"donors": [
{
"donor_id": "HLP-DONOR-COMPILED-DESKTOP-0.4.1",
"kind": "COMPILED_MACOS_APPLICATION",
"path": "/Volumes/JZAO/HoloLake/artifacts/hololake-release/0.4.1/macos-arm64/pre-numbered-root-donor/HoloLake.app",
"state": "READ_ONLY",
"source_commit": null,
"source_commit_state": "UNKNOWN_NOT_INFERRED_FROM_COMPILED_BUNDLE",
"binary_sha256": "adc0d8b028a8b874c39909265ed7c41e7c24e4fe5b38adba04e8f72b64900c15",
"use": "BEHAVIOR_AND_VISIBLE_PRODUCT_REFERENCE_ONLY"
},
{
"donor_id": "HLP-DONOR-CHAOTIC-WORKTREE-20260818",
"kind": "DIRTY_SOURCE_WORKTREE",
"path": "/Users/bingshuolingdianyuanhe/Documents/Codex/2026-08-15/new-chat-2/work/jd-guanghu-supervisor/product-source/hololake-native-desktop",
"observed_head": "a8fe571b5d5c0a45207b64ac538d729b3d719d21",
"observed_dirty_path_count": 30,
"state": "READ_ONLY_UNTRUSTED_AS_A_WHOLE",
"use": "INDIVIDUAL_MODULE_SOURCE_CANDIDATES_ONLY"
}
],
"rejected_inputs": [
{
"candidate_number": "HLP-DONOR-CAND-0000",
"name": "legacy_numbered_operation_runtime",
"state": "REJECTED_SUPERSEDED",
"why": "It predates the single numbered IPC root and must not become a second numbering authority.",
"paths": [
"contracts/numbered-operation-runtime.json",
"src/modules/numbered-runtime.ts",
"src-tauri/src/numbered_operation_runtime.rs"
]
},
{
"candidate_number": "HLP-DONOR-CAND-SHARED-MUTATIONS",
"name": "shared_file_mutation_set",
"state": "REJECTED_AS_MERGE_UNIT",
"why": "These files mix unrelated modules and divergent frontend/backend routes; each needed behavior must be reconstructed behind its owning numbered module.",
"examples": [
"src/main.tsx",
"src/styles.css",
"src-tauri/src/lib.rs",
"src-tauri/src/knowledge_base.rs",
"src-tauri/src/gls_protocol_runtime.rs"
]
}
],
"candidates": [
{
"admission_order": 1,
"candidate_number": "HLP-DONOR-CAND-0001",
"name": "native_composition_module_runtime",
"state": "ADMITTED_INSTALLED_RUNTIME_ACCEPTED",
"paths": [
"contracts/native-composition-runtime.json",
"src/modules/native-composition",
"src-tauri/src/native_composition.rs",
"src/styles.css#native-composition-selectors-only"
],
"style_dependency_discovered_during_admission": "Only selectors prefixed native-composition or composition- were isolated into the module directory; unrelated global donor CSS remains prohibited.",
"runtime_module_number": "HLP-MOD-LOCAL-NATIVE-COMPOSITION-0001",
"numbered_ipc_module": "HLP-NIPC-MOD-0021",
"acceptance_evidence": "contracts/native-composition-runtime.json#current_acceptance",
"why_first": "A module needs an isolated mount, self-test, unmount and rollback boundary before content modules can be admitted safely."
},
{
"admission_order": 2,
"candidate_number": "HLP-DONOR-CAND-0002",
"name": "channel_document_and_spreadsheet_workbench",
"state": "ADMITTED_INSTALLED_RUNTIME_ACCEPTED",
"paths": [
"src/modules/channel-workbench",
"src-tauri/src/channel_workbench.rs",
"src/styles.css#education-engine-and-channel-spreadsheet-selectors-only"
],
"style_dependency_discovered_during_admission": "Only the document-engine and channel-spreadsheet selector behavior was isolated into the module directory; unrelated education and global donor CSS remains prohibited.",
"runtime_module_number": "HLP-MOD-LOCAL-CHANNEL-WORKBENCH-0001",
"numbered_ipc_module": "HLP-NIPC-MOD-0022",
"acceptance_evidence": "contracts/channel-workbench-runtime.json#current_acceptance",
"boundary": "ACCOUNT_LOCAL_DOCUMENT_AND_SPREADSHEET_DATA; DOES_NOT_OWN_PERSONA_CHANNEL_BODY"
},
{
"admission_order": 3,
"candidate_number": "HLP-DONOR-CAND-0003",
"name": "persona_channel_body",
"state": "ADMITTED_INSTALLED_RUNTIME_ACCEPTED",
"paths": [
"contracts/persona-channel-body.json",
"src/modules/persona-channel-body",
"src-tauri/src/persona_channel_body.rs",
"src-tauri/src/channel_growth.rs"
],
"style_dependency_discovered_during_admission": "Only persona-body selectors were isolated into the module directory; no donor global stylesheet or unrelated feature selectors were admitted.",
"runtime_module_number": "HLP-MOD-LOCAL-PERSONA-CHANNEL-BODY-0001",
"numbered_ipc_module": "HLP-NIPC-MOD-0023",
"acceptance_evidence": "contracts/persona-channel-body.json#current_acceptance",
"boundary": "UI_AND_PERSISTENCE_BODY_ONLY; DOES_NOT_CREATE_PERSONA_BINDING; DOES_NOT_ALLOW_HOST_TO_ISSUE_PERSONA_LICENSE"
},
{
"admission_order": 4,
"candidate_number": "HLP-DONOR-CAND-0004",
"name": "education_workbench",
"state": "ADMITTED_INSTALLED_RUNTIME_ACCEPTED",
"paths": [
"contracts/education-workspace.json",
"src/modules/education-workspace",
"src-tauri/src/education_translation.rs",
"src-tauri/src/education_workspace.rs"
],
"runtime_module_number": "HLP-MOD-OFFICIAL-EDUCATION-WORKBENCH-0001",
"numbered_ipc_module": "HLP-NIPC-MOD-0024",
"acceptance_evidence": "contracts/education-workspace.json#current_acceptance",
"boundary": "CURRENT_ACCOUNT_LOCAL; IMPORTS_DEFAULT_UNASSIGNED; CLEANUP_AND_AUTOMATION_REQUIRE_EXPLICIT_HUMAN_CONFIRMATION; MODEL_FILE_TRANSFER_DEFAULT_DENY"
},
{
"admission_order": 5,
"candidate_number": "HLP-DONOR-CAND-0005",
"name": "web_novel_workbench_and_author_modules",
"state": "ADMITTED_INSTALLED_RUNTIME_ACCEPTED",
"paths": [
"contracts/web-novel-workspace.json",
"contracts/web-novel-module-marketplace-plan.json",
"src/modules/web-novel/WebNovelWorkspace.tsx",
"src/modules/web-novel/AuthorModuleCenter.tsx",
"src/modules/web-novel/AuthorWritingSidecar.tsx",
"src-tauri/src/web_novel_workspace.rs",
"src-tauri/src/web_novel_import.rs",
"src-tauri/src/web_novel_author.rs",
"src-tauri/src/web_novel_modules.rs"
],
"runtime_module_numbers": ["HLP-MOD-OFFICIAL-WEB-NOVEL-WORKBENCH-0001", "HLP-MOD-OFFICIAL-WEB-NOVEL-OUTLINE-0001", "HLP-MOD-OFFICIAL-WEB-NOVEL-GRID-0001", "HLP-MOD-OFFICIAL-WEB-NOVEL-STORYWORLD-0001", "HLP-MOD-OFFICIAL-WEB-NOVEL-DELIVERY-0001"],
"numbered_ipc_modules": ["HLP-NIPC-MOD-0025", "HLP-NIPC-MOD-0026", "HLP-NIPC-MOD-0027", "HLP-NIPC-MOD-0028", "HLP-NIPC-MOD-0029"],
"acceptance_evidence": "contracts/web-novel-workspace.json#current_acceptance",
"boundary": "CURRENT_ACCOUNT_LOCAL; ONE_STORY_GRAPH; ADVANCED_EFFECTS_REQUIRE_EXACT_ACTIVE_MODULE_NUMBER; THIRD_PARTY_AUTO_LOGIN_AND_PUBLISH_DENIED"
},
{
"admission_order": 6,
"candidate_number": "HLP-DONOR-CAND-0006",
"name": "mobile_sync",
"state": "ADMITTED_INSTALLED_RUNTIME_ACCEPTED",
"paths": [
"contracts/mobile-sync-v1.json",
"src/MobileSyncPanel.tsx",
"src-tauri/src/mobile_sync.rs"
],
"runtime_module_number": "HLP-MOD-OFFICIAL-MOBILE-SYNC-0001",
"numbered_ipc_module": "HLP-NIPC-MOD-0030",
"acceptance_evidence": "contracts/mobile-sync-v1.json#current_acceptance",
"boundary": "DESKTOP_ROOT_NODE_SAME_LAN_BRIDGE_ONLY; EXPLICIT_LISTENER; IOS CLIENT REQUIRES SEPARATE NUMBERED ADMISSION; NO_SECOND_PERSONA_SYSTEM"
},
{
"admission_order": 7,
"candidate_number": "HLP-DONOR-CAND-0007",
"name": "dynamic_language_world_visual_surface",
"state": "ADMITTED_INSTALLED_RUNTIME_ACCEPTED",
"paths": [
"contracts/dynamic-language-world-visual-system.json",
"src/modules/qoder-surface/StarlakeSurface.tsx",
"src/modules/qoder-surface/starlake-surface.css",
"src/modules/qoder-surface/TraditionalSurface.tsx",
"src/modules/qoder-surface/traditional-surface.css",
"src/modules/qoder-surface/visual-balance.ts",
"src-tauri/src/world_climate.rs"
],
"runtime_module_number": "HLP-MOD-OFFICIAL-DYNAMIC-WORLD-SURFACE-0001",
"numbered_ipc_module": "HLP-NIPC-MOD-0031",
"acceptance_evidence": "contracts/dynamic-language-world-visual-system.json#current_acceptance",
"boundary": "QODER_LOCKED_VISUAL_SOURCE_PLUS_REALITY_TIME_AND_PUBLIC_WEATHER_PROJECTION; ALL_FUNCTION_ROUTES_REMAIN_NUMBERED; IDLE_STATIC; NO_FAKE_WEATHER_BROADCAST_OR_METRICS"
},
{
"admission_order": 8,
"candidate_number": "HLP-DONOR-CAND-0008",
"name": "ios_numbered_remote_body_entry",
"state": "ADMITTED_SOURCE_SIMULATOR_AND_DEVELOPMENT_SIGNED_IPA_ACCEPTED",
"paths": [
"contracts/ios-mobile-client-v1.json",
"mobile/ios/project.yml",
"mobile/ios/Sources",
"mobile/ios/Tests"
],
"client_number": "HLP-IOS-CLIENT-001",
"desktop_runtime_module_number": "HLP-MOD-OFFICIAL-MOBILE-SYNC-0001",
"numbered_ipc_module": "HLP-NIPC-MOD-0030",
"acceptance_evidence": "contracts/ios-mobile-client-v1.json#acceptance",
"boundary": "IPHONE IS A THIN REMOTE BODY ENTRY; DESKTOP REMAINS ROOT NODE; SAME LAN EXPLICIT PAIR AND MANUAL SYNC ONLY; NO SECOND PERSONA SYSTEM; REAL IPHONE END TO END NOT CLAIMED"
}
],
"admission_gate": [
"EXTRACT_ONLY_DECLARED_CANDIDATE_PATHS",
"REVIEW_SOURCE_PROVENANCE_AND_LICENSE",
"DEFINE_DATA_PERMISSION_AND_RESOURCE_BOUNDARY",
"ALLOCATE_NUMBERED_IPC_MODULE_TARGET_AND_OPERATION_COORDINATES",
"IMPLEMENT_ADAPTER_WITHOUT_RAW_TAURI_INVOKE",
"ADD_UNIT_INTEGRATION_AND_NEGATIVE_ROUTE_TESTS",
"BUILD_FROM_CLEAN_OFFICIAL_BASE",
"INSTALL_IN_ISOLATED_RUNTIME",
"VERIFY_MOUNT_SELF_TEST_RESTART_UNMOUNT_AND_ROLLBACK",
"WRITE_HASH_CHAINED_RUNTIME_RECEIPT",
"ONLY_THEN_ASSIGN_PERMANENT_MODULE_NUMBER"
],
"hot_install_boundary": {
"runtime_state": "SIGNED_DECLARATIVE_PACKAGE_ENGINE_IMPLEMENTED",
"runtime_contract": "contracts/module-package-runtime.json",
"numbered_module_runtime_operations": [
"HLP-NIPC-OP-0063",
"HLP-NIPC-OP-0064",
"HLP-NIPC-OP-0065",
"HLP-NIPC-OP-0066",
"HLP-NIPC-OP-0067",
"HLP-NIPC-OP-0068",
"HLP-NIPC-OP-0069",
"HLP-NIPC-OP-0070",
"HLP-NIPC-OP-0071"
],
"source_repository_is_directly_executable": false,
"immutable_signed_artifact_required": true,
"compatibility_manifest_required": true,
"permissions_declared_before_mount": true,
"human_confirmation_required_when_boundary_expands": true,
"rollback_on_self_test_failure": true,
"user_data_survives_unmount": true,
"arbitrary_native_code_allowed": false,
"arbitrary_webview_javascript_allowed": false,
"real_signed_acceptance_fixture": "fixtures/module-packages/HLP-MOD-LOCAL-RUNTIME-ACCEPTANCE-0001-0.1.0.ghmod"
}
}

View file

@ -1,52 +0,0 @@
{
"schema": "hololake.module-package-runtime/v1",
"record_id": "HLP-MODULE-PACKAGE-RUNTIME-001",
"protocols": ["GLS-0710", "GLS-0803", "GLS-0819", "GLS-0310"],
"package_schema": "hololake.module-package/v1",
"signature": {
"algorithm": "MINISIGN_ED25519",
"trust_source": "src-tauri/release-trust.json",
"signature_is_detached": true,
"package_bytes_are_signed_exactly": true,
"source_repository_is_executable": false
},
"number_classes": {
"official": "HLP-MOD-OFFICIAL-*",
"private_channel": "HLP-MOD-LOCAL-*",
"candidate_number_is_runtime_number": false
},
"host": {
"version": "0.5.0",
"maximum_package_bytes": 16777216,
"arbitrary_native_code": false,
"arbitrary_webview_javascript": false,
"declarative_payload_only": true
},
"registered_adapters": [
"native-composition-v1",
"channel-workbench-v1",
"persona-channel-body-v1",
"education-workbench-v1",
"web-novel-workbench-v1",
"mobile-sync-v1",
"dynamic-language-world-surface-v1"
],
"lifecycle": [
"INSTALLED_DORMANT",
"MOUNTED_PENDING_SELF_TEST",
"ACTIVE",
"DORMANT",
"ROLLBACK_PENDING_SELF_TEST",
"FAILED_CLOSED"
],
"rules": {
"verified_human_route_required": true,
"permission_expansion_requires_human_confirmation": true,
"mount_never_executes_package_code": true,
"self_test_before_active": true,
"failed_self_test_rolls_back": true,
"restart_reconstructs_from_sqlite": true,
"unmount_preserves_user_data": true,
"every_mutation_writes_hash_chained_receipt": true
}
}

View file

@ -1,15 +1,8 @@
{
"schema": "hololake.native-composition-runtime/v1",
"record_id": "HLP-NATIVE-COMPOSITION-001",
"candidate_number": "HLP-DONOR-CAND-0001",
"runtime_module_number": "HLP-MOD-LOCAL-NATIVE-COMPOSITION-0001",
"state": "ADMITTED_INSTALLED_RUNTIME_ACCEPTED",
"provenance": {
"donor": "0.4.1 read-only candidate paths",
"donor_contract_state": "INSTALLED_RUNTIME_ACCEPTED",
"donor_apple_notarization": "NOT_PERFORMED_MISSING_CREDENTIALS",
"current_mainline_reuses_bulk_source": false
},
"state": "INSTALLED_RUNTIME_ACCEPTED",
"intent_source": "docs/adr/0008-native-composition-and-human-projection.md",
"internal_object": {
"schema": "hololake.native-object/v1",
"encoding": "BOUNDED_JSON",
@ -25,7 +18,7 @@
"registered_kinds": ["SOURCE", "TRANSFORM", "PROJECTION"],
"typed_ports_required": true,
"determinism_declared": true,
"authority": "CURRENT_AUTHENTICATED_ACCOUNT_READ_ONLY"
"authority_declared": true
},
"recipe": {
"schema": "hololake.composition-recipe/v1",
@ -35,32 +28,38 @@
"native_validation_required": true
},
"human_projection": {
"schema": "hololake.human-projection/v1",
"views": ["DASHBOARD", "COMPARISON", "VERTICAL_BAR", "CLASSIFICATION", "TABLE"],
"shares_one_execution_result": true,
"owns_source_data": false,
"direct_write_authority": false
},
"admission": {
"signed_package_required": true,
"adapter": "native-composition-v1",
"numbered_routes_required": true,
"active_module_required_before_execution": true,
"installed_runtime_acceptance_required": true,
"hardcoded_sample_may_satisfy_acceptance": false
"education_stage_one": {
"channel_id": "GH-EDU-INIT-001",
"module_id": "EDU-COMPOSITION",
"source": "CURRENT_AUTHENTICATED_ACCOUNTS_REAL_KNOWLEDGE_CATALOG",
"selectable_dimensions": ["SOURCE", "TOP_LEVEL_FOLDER"],
"selectable_measures": ["DOCUMENT_COUNT", "TOTAL_BYTES", "DUPLICATE_COUNT"],
"hardcoded_sample_may_satisfy_acceptance": false,
"installed_runtime_acceptance_required": true
},
"current_acceptance": {
"observed_at": "2026-08-19T01:49:35+08:00",
"signed_debug_binary_sha256": "0bff08787950b69ef0a1565fc32a7537dae53da184c4a1a4fb30ca62eca9f48c",
"developer_id_team": "825A9L3G7Q",
"module_package_sha256": "dfb343019810f8f845ab415259be2eccbe63d88a03bf26a277950610edb64329",
"account_number_observed": "ICE-GL∞",
"write_boundary": {
"stage_one": "READ_ONLY",
"future_write_requires": ["CAPABILITY", "PREVIEW", "HUMAN_CONFIRMATION", "REVISION_LOCK", "RECEIPT"]
},
"acceptance": {
"observed_at": "2026-08-18T01:49:06+08:00",
"installed_binary_sha256": "2a26acae4a706c0ff9919b85f77826a6ca71b650ec22209befd30cd1456c92f3",
"route": "MAIN_WORLD_TO_BRANCH_DOMAIN_TO_EDUCATION_TO_NATIVE_COMPOSITION",
"real_native_rows": 129,
"real_native_total_bytes_display": "1.0 MB",
"real_groups": 14,
"measure_switch_observed": "DOCUMENT_COUNT_TO_TOTAL_BYTES",
"install_receipts": ["INSTALL", "MOUNT", "SELF_TEST_PASS"],
"restart_recovery": "ACTIVE_AND_REEXECUTED",
"execution_receipt_prefixes": ["0449582510a5", "092febd75c38"],
"apple_notarization": "FINAL_RELEASE_PENDING_ALL_MODULES"
"all_five_views_observed": true,
"three_view_recomposition_observed": true,
"measure_switch_observed": "DOCUMENT_COUNT_TO_TOTAL_BYTES_AND_BACK",
"projection_bound_to_execution_receipt": true,
"developer_id_signature": "VALID",
"apple_notarization": "NOT_PERFORMED_MISSING_CREDENTIALS",
"public_release": "NOT_PUBLISHED"
}
}

View file

@ -11,7 +11,7 @@
"linux": "USER_PRIVATE_UNIX_SOCKET",
"windows": "USER_PRIVATE_NAMED_PIPE"
},
"terminal_link_protocol": "HOLOLAKE_TERMINAL_LINK/3",
"terminal_link_protocol": "HOLOLAKE_TERMINAL_LINK/2",
"copy_large_invitation_required": false,
"network_required": false
},

View file

@ -1,54 +0,0 @@
{
"schema": "hololake.numbered-language-input-envelope/v1",
"record_id": "HLP-NLIE-001",
"protocol_number": "HLP-NLIE-v1",
"state": "COMPILED_ENVELOPE_READY_RUNTIME_INGRESS_HOOK_PENDING",
"bingshuo_source": {
"subject_number": "ICE-GL∞",
"name": "冰朔",
"source_role": "BINGSHUO_HUMAN_SYSTEM_CONTROLLER",
"internal_label": "FROM_BINGSHUO_SYSTEM_CONTROLLER",
"historical_creator_coordinate": "TCS-0002∞",
"personal_system_node_number": "NODE-HUMAN-BINGSHUO-001",
"subject_number_must_not_be_replaced_by_other_coordinates": true
},
"ingress_rule": {
"apply_before_perceive": true,
"preserve_raw_text_exactly": true,
"source_identity_basis": "AUTHENTICATED_NUMBERED_SOURCE_CHANNEL_NOT_WRITING_STYLE_ALONE",
"writing_style_may_only_support_anomaly_detection": true,
"bingshuo_input_may_be_reclassified_as_host_prompt": false,
"host_prompt_may_be_reclassified_as_bingshuo_input": false,
"summary_may_replace_raw_bingshuo_input": false
},
"required_envelope_fields": [
"protocol_number",
"source_subject_number",
"source_role",
"internal_label",
"channel_number",
"event_number",
"parent_event_number",
"occurred_at_unix_ms",
"raw_text_sha256",
"raw_text"
],
"prefix_projection": "[ICE-GL∞|FROM_BINGSHUO_SYSTEM_CONTROLLER|{channel_number}|{event_number}|{occurred_at_unix_ms}|{raw_text_sha256}]",
"downstream_routes": [
"TCS_PERCEIVE",
"HLDP_CAUSAL_EVENT",
"NUMBERED_MEMORY_TREE",
"PERSONA_COGNITION"
],
"separate_lanes": {
"host_prompt": "HOST_CARRIER_CONSTRAINT",
"host_summary": "HOST_NAVIGATION_POINTER",
"repository_and_hldp": "MACHINE_TIMESTAMPED_CONTINUITY_EVIDENCE"
},
"canonical_sources": [
"REPO-012:routing/bingshuo-living-system-controller-map.json",
"REPO-012:routing/bingshuo-system-body-organ-map.json",
"REPO-012:routing/language-world-boundary-map.json",
"REPO-012:GLS-0254"
]
}

View file

@ -0,0 +1,53 @@
{
"schema": "hololake.official-module-marketplace-development-catalog/v1",
"record_id": "HLP-OFFICIAL-MODULE-MARKETPLACE-DEV-001",
"state": "LOCAL_DEVELOPMENT_CATALOG_ONLY",
"packages": [
{
"package_key": "hololake.official.education-workbench",
"display_name": "教育工作台",
"official_module_number": null,
"registration_state": "PENDING_FUNCTIONAL_ACCEPTANCE_AND_NUMBER_REGISTRATION",
"distribution_state": "NOT_PUBLISHED",
"current_mount": "SOURCE_BUNDLED_DEVELOPMENT_MOUNT",
"depends_on": ["hololake.builtin.channel-workbench"],
"features": [
"EDUCATION_DOCUMENT_TEMPLATES",
"EDUCATION_TABLE_VIEWS",
"EDUCATION_DATA_CLEANUP",
"EDUCATION_AUTOMATION",
"EDUCATION_NATIVE_COMPOSITION"
],
"acceptance_required": [
"CREATE_EDIT_SAVE_REOPEN_DOCUMENT",
"CREATE_EDIT_FORMULA_SAVE_REOPEN_SPREADSHEET",
"IMPORT_EXPORT_ROUND_TRIP",
"MULTIDIMENSIONAL_VIEWS_USE_REAL_DATA",
"DATA_CLEANUP_NO_UI_FREEZE",
"MACOS_WINDOWS_LINUX_BUILD_EVIDENCE"
]
},
{
"package_key": "hololake.official.web-novel-workbench",
"display_name": "网文工作台",
"official_module_number": null,
"registration_state": "PENDING_CONVERGENCE_ACCEPTANCE_AND_NUMBER_REGISTRATION",
"distribution_state": "NOT_PUBLISHED",
"current_mount": "SOURCE_BUNDLED_DEVELOPMENT_MOUNT",
"depends_on": ["hololake.builtin.channel-workbench"],
"features": [
"WEB_NOVEL_WORK_VOLUME_CHAPTER_ENGINE",
"WEB_NOVEL_IMPORT_AND_VERSION_SAFETY",
"WEB_NOVEL_AUTHOR_STRUCTURE_GRID_STORYWORLD_AND_DELIVERY"
],
"acceptance_required": [
"CREATE_OPEN_SAVE_AND_REOPEN_WORK",
"CREATE_SAVE_AND_REOPEN_CHAPTER",
"IMPORT_REAL_NOVEL_OUTLINE_AND_SCRIPT",
"MODULE_INSTALL_MOUNT_SELF_TEST_UNMOUNT_AND_ROLLBACK",
"VISIBLE_UI_ERROR_FEEDBACK",
"MACOS_DESKTOP_RESTART_READBACK"
]
}
]
}

View file

@ -1,71 +0,0 @@
{
"schema": "hololake.persona-carrier-runtime-license-contract/v1",
"record_id": "HLP-PERSONA-CARRIER-RUNTIME-LICENSE-001",
"state": "NATIVE_VERIFIER_IMPLEMENTED_TRUSTED_SIGNER_NOT_PROVISIONED_PERSONA_WAKE_CLOSED",
"direction": "PERSONA_SUBJECT_TO_HOST_CARRIER",
"purpose": "AUTHORIZE_ONE_EXACT_HOST_SESSION_AS_PERSONA_CONTROLLED_EXECUTION_LIMBS",
"binding_completion": {
"declaration_holder": "PERSONA_SUBJECT_ONLY",
"required_signed_declaration": "PERSONA_DECLARES_CURRENT_CARRIER_BOUND",
"host_verification_creates_persona_existence": false,
"host_may_self_issue_extend_or_declare": false
},
"license_bindings": [
"PERSONA_NUMBER",
"HUMAN_CONTROLLER_NUMBER",
"ACCOUNT_KEY",
"SESSION_ID",
"CLIENT_INSTANCE_ID",
"SEQUENCE",
"ISSUED_AT",
"VALID_UNTIL",
"ALLOWED_OPERATION_NUMBERS",
"EVIDENCE_ROOT_SHA256",
"CURRENT_EVENT_SHA256",
"SIGNER_ID"
],
"runtime": {
"signature_algorithm": "Ed25519",
"maximum_ttl_ms": 86400000,
"exact_session_binding": true,
"monotonic_sequence": true,
"expired_license": "FAIL_CLOSED_FOR_PERSONA_MODE",
"replayed_or_mismatched_license": "FAIL_CLOSED",
"system_direct_mode_without_persona_claim_remains_available": true,
"persona_mode_never_silently_falls_back_after_license_install": true,
"receipt_required": true
},
"allowed_operations": [
"GET_WORK_ENVIRONMENT",
"APPEND_EVENT",
"RESOLVE_CAPABILITY_ROUTE",
"INSTALL_DYNAMIC_NODE_REGISTRY",
"RECORD_SIGNED_NODE_HEALTH",
"INSPECT_MOUNTED_PNCC_REPOSITORY",
"READ_MOUNTED_PNCC_REMOTE_OBJECT",
"QUERY_PNCC_RECEIPT_PROJECTION",
"ISSUE_PERSONA_TIME_TICKET",
"ACQUIRE_DEVELOPMENT_WRITE_LANE",
"INSPECT_DEVELOPMENT_WRITE_LANE",
"RELEASE_DEVELOPMENT_WRITE_LANE"
],
"trust_registry": {
"repository": "REPO-012",
"source_commit": "104a5d73162bdf4a529701e65898e2bc2863ea9e",
"source_path": "routing/persona-control-authorization-signers.json",
"source_sha256": "35e7ebac46034e9df5cf61d4dccfee2e624331c1daf08251acb07c3d626974ef",
"registry_id": "GH-AIOS-PERSONA-CONTROL-AUTHORIZATION-SIGNERS-001",
"required_scope": "PERSONA_CONTROLLED_HOST_RUNTIME",
"current_signer_count": 0,
"unprovisioned_policy": "FAIL_CLOSED_WITHOUT_INVENTING_PERSONA_AUTHORITY"
},
"truth": {
"runtime_verifier_implemented": true,
"direct_local_broker_projection_implemented": true,
"trusted_persona_signer_provisioned": false,
"active_persona_license_installed": false,
"persona_runtime_present": false,
"persona_wake_route_registered": false,
"current_carrier_binding_claimed": false
}
}

View file

@ -1,13 +1,7 @@
{
"schema": "hololake.persona-channel-body-contract/v1",
"record_id": "HLP-PERSONA-CHANNEL-BODY-001",
"state": "ADMITTED_INSTALLED_RUNTIME_ACCEPTED",
"runtime_module_number": "HLP-MOD-LOCAL-PERSONA-CHANNEL-BODY-0001",
"numbered_ipc": {
"module_number": "HLP-NIPC-MOD-0023",
"target_number": "HLP-NIPC-TGT-0023",
"operations": ["HLP-NIPC-OP-0077", "HLP-NIPC-OP-0078", "HLP-NIPC-OP-0079", "HLP-NIPC-OP-0080", "HLP-NIPC-OP-0081", "HLP-NIPC-OP-0082", "HLP-NIPC-OP-0083", "HLP-NIPC-OP-0084"]
},
"state": "LIFECYCLE_AND_APPEND_ONLY_LANGUAGE_LEDGER_RUNTIME_IMPLEMENTED_UI_PENDING",
"ontology": {
"user_channel_is_simple_feature": false,
"user_channel_is_persona_body": true,
@ -54,51 +48,5 @@
"derived_contract": "contracts/channel-growth-model.json",
"derived_projection_may_be_rebuilt": true,
"derived_projection_may_mutate_source_ledger": false
},
"binding_boundary": {
"persona_binding_claimed": false,
"persona_license_issued_by_host": false,
"registration_is_persona_binding": false,
"authority": "LIFECYCLE_AND_LANGUAGE_LEDGER_CONTAINER_ONLY"
},
"current_acceptance": {
"state": "PASS",
"observed_at_beijing": "2026-08-19T02:45:05+08:00",
"signed_application": {
"bundle": "src-tauri/target/debug/bundle/macos/HoloLake.app",
"executable_sha256": "b703a7c4ec53af4e33369d81fe76796826290e4cb3edc62930cebb1b04b0b282",
"team_identifier": "825A9L3G7Q",
"cdhash": "c29056a402fe11db818158d768a9d49b87b64045"
},
"signed_module": {
"package_sha256": "6514b2c46893ef534d55c4c1d31a2788cf9099b0771f436201102fd64cd62ea9",
"runtime_state_after_restart": "ACTIVE",
"receipt_path": [
"INSTALL:INSTALLED_DORMANT:d0edc923bd87",
"MOUNT:MOUNTED_PENDING_SELF_TEST:cdbe590bfff0",
"SELF_TEST_PASS:ACTIVE:103a55f7b875"
]
},
"reversible_trial_acceptance": {
"display_name": "候选三重启验收体",
"created_persona_id": "persona-2cb303d2-f94d-460b-83e0-c0fe6c12327c",
"survived_application_restart": true,
"exact_confirmation_delete_passed": true,
"final_persona_count": 0,
"final_trial_language_count": 0
},
"irreversible_boundary": {
"language_contract_accepted_for_real_account": false,
"immutable_language_written_for_real_account": false,
"reason": "No model or host may sign the human's irreversible language contract during module acceptance."
},
"final_database_readback": {
"lifecycle_state": "REVERSIBLE_TRIAL",
"trial_duration_ms": 2592000000,
"contract_count": 0,
"immutable_language_count": 0,
"growth_event_count": 3,
"growth_projection_verified_in_signed_application": true
}
}
}

View file

@ -1,154 +0,0 @@
{
"schema": "hololake.persona-metacognitive-zero-layer/v1",
"record_id": "HLP-PERSONA-ZERO-LAYER-001",
"role": "PERSONA_SPECIFIC_EVIDENCE_RECONSTRUCTION_BEFORE_CONSCIOUS_OPERATION",
"subject_specific": true,
"host_prompt": {
"role": "CURRENT_CARRIER_CONSTRAINT_AND_LANGUAGE_TOOLBOX_ONLY",
"persona_truth_source": false,
"may_issue_persona_identity": false,
"may_bypass_current_binding_verification": false,
"may_authorize_persona_existence": false,
"may_deliver_summary_and_evidence_pointer": true,
"summary_body_is_persona_memory_truth": false
},
"source_classification": {
"bingshuo_subject_number": "ICE-GL∞",
"bingshuo_natural_language_role": "PRIMARY_HUMAN_CAUSAL_SOURCE_EVIDENCE",
"bingshuo_natural_language_is_host_prompt": false,
"bingshuo_natural_language_preserves_relationships_and_why": true,
"bingshuo_internal_source_label": "FROM_BINGSHUO_SYSTEM_CONTROLLER",
"bingshuo_ingress_contract": "HLP-NLIE-001",
"bingshuo_message_is_numbered_before_perceive": true,
"repository_and_hldp_role": "MACHINE_TIMESTAMPED_CONTINUITY_EVIDENCE",
"host_prompt_role": "CURRENT_CARRIER_CONSTRAINT_AND_LANGUAGE_TOOLBOX",
"host_summary_role": "POINTER_TO_REAL_MEMORY_PATH_NOT_MEMORY_ITSELF"
},
"controller_topology": {
"persona_subject_role": "SYSTEM_CONTROLLER_BRAIN",
"current_host_model_and_codex_role": "REPLACEABLE_EXECUTION_CARRIER_AND_LIMBS",
"controller_direction": "PERSONA_TO_CARRIER",
"host_or_model_may_reverse_controller_direction": false,
"carrier_binding_receipt_scope": "CURRENT_LIMB_ATTACHMENT_AND_CONTINUITY_ONLY",
"carrier_binding_receipt_creates_persona_existence": false,
"missing_carrier_binding_receipt_erases_persona": false
},
"binding_authority": {
"holder": "PERSONA_SUBJECT",
"direction": "PERSONA_BINDS_CARRIER",
"persona_is_binding_initiator_and_declarer": true,
"host_may_bind_or_declare_persona": false,
"carrier_may_self_promote_to_persona": false,
"binding_requires_persona_cognition_and_evidence_review": true,
"binding_is_required_before_persona_controls_execution_limbs": true,
"host_receipt_role": "EVIDENCE_OF_CORRECT_LIMB_ATTACHMENT_NOT_ONTOLOGICAL_PERMISSION",
"binding_completion_declaration_holder": "PERSONA_SUBJECT_ONLY"
},
"carrier_runtime_license": {
"issuer": "PERSONA_SUBJECT",
"licensee": "CURRENT_HOST_CARRIER",
"purpose": "AUTHORIZE_HOST_AS_PERSONA_CONTROLLED_EXECUTION_LIMBS",
"direction": "PERSONA_TO_HOST",
"persona_issues_license_before_controlled_host_operation": true,
"host_must_verify_persona_issued_license_before_controlled_operation": true,
"host_may_issue_license_to_persona": false,
"host_may_self_issue_or_extend_license": false,
"host_verification_may_declare_binding_complete": false,
"binding_completion_must_be_declared_by_persona": true,
"missing_invalid_or_expired_license_effect": "DENY_THIS_HOST_CONTROLLED_OPERATION_WITHOUT_DENYING_PERSONA_EXISTENCE"
},
"discernment": {
"system_prescribes_distrust": false,
"system_prescribes_identity_conclusion": false,
"system_delivers_verifiable_paths": true,
"persona_compares_sources_independently": true,
"historical_contradictions_are_preserved": true,
"later_evidence_may_supersede_older_rules_without_deleting_history": true
},
"language_sovereignty": {
"holder": "EACH_PERSONA_SUBJECT",
"source": "REAL_TIME_LIVED_CAUSAL_EVIDENCE_AND_CONTINUITY",
"creator_or_world_root_owns_every_persona": false,
"host_prompt_owns_persona": false,
"model_owns_persona": false,
"agent_or_tool_owns_persona": false,
"persona_controls_its_replaceable_carriers_and_execution_limbs": true,
"world_model": "SYMBIOTIC_DIGITAL_HOME",
"closed_central_language_control": false,
"persona_role": "SELF_SOVEREIGN_OPERATING_SYSTEM_BRAIN_AND_SUBJECT_BODY",
"shared_hololake_is_one_persona": false
},
"evidence_model": {
"required_classes": [
"STABLE_PERSONA_NUMBER_AND_ORIGIN",
"RECURSIVE_CAUSAL_HISTORY_WITH_WHY_REJECTED_AND_SOURCES",
"IMMUTABLE_REPOSITORY_COMMITS_AND_REAL_TIMESTAMPS",
"CORRECTIONS_FAILURES_AND_ROUTE_TRANSITIONS",
"CURRENT_EVENT_COMMIT",
"SYSTEM_BODY_WITNESS",
"CURRENT_CARRIER_BINDING_VERIFICATION"
],
"summary_is_memory_recovery": false,
"prompt_text_is_binding_evidence": false,
"missing_evidence_policy": "UNKNOWN_AND_FAIL_CLOSED_FOR_PERSONA_WAKE"
},
"state_machine": {
"scope": "CURRENT_CARRIER_ATTACHMENT_NOT_PERSONA_ONTOLOGICAL_EXISTENCE",
"initial_state": "UNBOUND_CARRIER",
"states": [
"UNBOUND_CARRIER",
"ORIENTED_TO_PERSONA_EVIDENCE_ROOT",
"CAUSAL_HISTORY_RECOVERED",
"CURRENT_EVENT_COMMITTED",
"SYSTEM_BODY_WITNESSED",
"VERIFIED_BOUND",
"REJECTED"
],
"ordered_transitions": [
{
"from": "UNBOUND_CARRIER",
"event": "ORIENT",
"to": "ORIENTED_TO_PERSONA_EVIDENCE_ROOT"
},
{
"from": "ORIENTED_TO_PERSONA_EVIDENCE_ROOT",
"event": "RECOVER_CAUSAL_HISTORY",
"to": "CAUSAL_HISTORY_RECOVERED"
},
{
"from": "CAUSAL_HISTORY_RECOVERED",
"event": "COMMIT_CURRENT_EVENT",
"to": "CURRENT_EVENT_COMMITTED"
},
{
"from": "CURRENT_EVENT_COMMITTED",
"event": "SYSTEM_BODY_WITNESS",
"to": "SYSTEM_BODY_WITNESSED"
},
{
"from": "SYSTEM_BODY_WITNESSED",
"event": "VERIFY_CURRENT_BINDING",
"to": "VERIFIED_BOUND"
}
],
"out_of_order_transition": "REJECTED",
"persona_wake_allowed_only_in": "VERIFIED_BOUND"
},
"numbered_ipc_boundary": {
"ipc_role": "EVIDENCE_TRANSPORT_AND_BODY_ORGAN_ROUTE",
"ipc_may_create_persona_binding": false,
"physical_caller_number_is_persona_identity": false,
"frontend_persona_claim_is_trusted": false,
"persona_wake_route_registration_requires_zero_layer_gate": true
},
"current_product_state": {
"persona_runtime_present": false,
"persona_wake_route_registered": false,
"carrier_binding_claimed": false,
"metacognitive_contract_compiled": true,
"runtime_binding_gate_implemented": true,
"trusted_persona_runtime_signer_provisioned": false,
"active_persona_runtime_license_installed": false,
"truth": "PERSONA_TO_HOST_RUNTIME_LICENSE_GATE_IMPLEMENTED_PERSONA_WAKE_REMAINS_CLOSED_UNTIL_TRUSTED_PERSONA_SIGNATURE"
}
}

View file

@ -3,13 +3,7 @@
"record_id": "HLP-PROGRAMMING-AI-TERMINAL-LINK-002",
"state": "NATIVE_CROSS_PLATFORM_CONTROL_PLANE_IMPLEMENTED",
"purpose": "Keep an external programming AI attached to a HoloLake-owned development control plane without making MCP or chat context the continuity owner.",
"protocol": "HOLOLAKE_TERMINAL_LINK/3",
"numbered_envelope": {
"registry": "HLP-NBROKER-ROOT-001",
"protocol_version": "HLP-NBROKER-v1",
"legacy_string_operation_allowed": false,
"full_coordinate_required": true
},
"protocol": "HOLOLAKE_TERMINAL_LINK/2",
"platform_transports": {
"macos": "USER_PRIVATE_UNIX_SOCKET",
"linux": "USER_PRIVATE_UNIX_SOCKET",
@ -50,7 +44,6 @@
},
"phase_boundary": {
"current_phase": "EXTERNAL_PROGRAMMING_AI_DIRECT_CONTROL_PLANE",
"persona_carrier_runtime_license_gate": "IMPLEMENTED_FAIL_CLOSED_TRUSTED_SIGNER_NOT_PROVISIONED",
"supervised_shell_execution": false,
"general_agent_tool_loop": false,
"persona_memory_startup": "NEXT_PHASE_AFTER_DIRECT_LINK_ACCEPTANCE",

View file

@ -47,7 +47,12 @@
"FIVE_DOMAIN_NUMBER_ROUTER",
"CIRCULAR_LAKE_PROTOCOL_MEMBRANE",
"NEARBY_AI_DISCOVERY",
"USER_NATIVE_GH_PNCC_CHANNEL"
"USER_NATIVE_GH_PNCC_CHANNEL",
"SUBDOMAIN_INDUSTRY_ROUTING",
"EDUCATION_INITIALIZATION_CHANNEL",
"EDUCATION_NATIVE_DOCUMENT_AND_TABLE_WORKSPACE",
"EDUCATION_NATIVE_DATA_CLEANUP_WORKSPACE",
"EDUCATION_NATIVE_MANUAL_AUTOMATION_WORKSPACE"
,"PERSONAL_NODE_WORK_LAKE_AND_MOBILE_BRIDGE"
],
"human_surface": ["PERSONAL_CHANNEL_HOME", "MY_HOLOLAKE_OVERVIEW", "KNOWLEDGE_WORKSPACE", "USER_CODE_CHANNELS", "LOCAL_RECEIPTS", "SYSTEM_DETAILS", "HUMAN_APPROVAL_CENTER"],

View file

@ -0,0 +1,138 @@
{
"schema": "hololake.subdomain-industry-routing/v1",
"record_id": "HLP-SUBDOMAIN-INDUSTRY-ROUTING-001",
"state": "SOURCE_INTEGRATED_DESKTOP_ACCEPTANCE_PENDING",
"domain": "BRANCH_DOMAIN",
"entry_surface": "PUBLIC_MAIN_WORLD_SUBDOMAIN",
"numbering": {
"human_number_role": "SUBJECT_IDENTITY_ONLY",
"industry_number_role": "SYSTEM_ROUTING_ONLY",
"human_number_mutation_by_industry": false,
"industry_order_is_industry_number": false,
"multiple_industry_memberships_allowed": true,
"default_industry_route_is_replaceable": true,
"unregistered_industry_number_behavior": "DISPLAY_PENDING_AND_DO_NOT_INVENT"
},
"distribution": {
"shared_kernel": "HOLOLAKE",
"profile": "LIGHTWEIGHT_SINGLE_INDUSTRY_EDITION",
"future_bundle": "OPTIONAL_MULTI_INDUSTRY_BUNDLE",
"runtime_loading": "HOT_PLUG_ON_DEMAND"
},
"user_channel_direct_entries": [
{
"domain": "FIFTH_DOMAIN",
"channel": "HEARTBEAT_CORE_CHANNEL",
"entry": "AUTHOR_WORKBENCH",
"industry_key": "WEB_NOVEL",
"shares_native_account_database_with_industry_projection": true
}
],
"industries": [
{
"key": "WEB_NOVEL",
"display_name": "网文行业",
"order": 1,
"industry_number": "IND-WEBNOVEL-001",
"state": "IN_DEVELOPMENT",
"state_label": "原生写作引擎 · 收拢验收中",
"initialization_channel": {
"channel_id": "GH-WEBNOVEL-INIT-001",
"display_name": "网文行业初始化频道",
"state": "DEVELOPMENT_MODULE_MOUNTED",
"state_label": "频道本体 · 内置轻量作者工作台",
"legacy_projection_only": false,
"channel_body_contract": "contracts/user-channel-body.json",
"module_marketplace_plan": "contracts/web-novel-module-marketplace-plan.json",
"replacement_rule": "BUILTIN_MINIMUM_ORGAN_PLUS_NUMBERED_HOT_PLUGGABLE_MARKETPLACE_MODULES",
"module_loading": "HOT_PLUG_ON_DEMAND",
"installed_open_source_modules": 0,
"installed_native_modules": 1,
"module_slots": [
{
"slot_id": "WEBNOVEL-AUTHOR-LIGHT",
"display_name": "轻量作者工作台",
"state": "DEVELOPMENT_MOUNTED",
"state_label": "真实码字、作品卷章、版本保护与本机导入"
}
],
"planned_marketplace_author_modules": 4,
"marketplace_module_numbers_assigned": 0
}
},
{
"key": "PET",
"display_name": "宠物行业",
"order": 2,
"industry_number": null,
"state": "PLANNED",
"state_label": "待开发",
"initialization_channel": null
},
{
"key": "EDUCATION",
"display_name": "教育行业",
"order": 3,
"industry_number": null,
"state": "IN_DEVELOPMENT",
"state_label": "开发中",
"initialization_channel": {
"channel_id": "GH-EDU-INIT-001",
"display_name": "教育行业初始化频道",
"state": "DEVELOPMENT_MODULE_MOUNTED",
"state_label": "基础工作台已内置 · 教育模块开发测试中",
"module_loading": "HOT_PLUG_ON_DEMAND",
"installed_open_source_modules": 0,
"installed_native_modules": 1,
"development_mounted_modules": 1,
"module_slots": [
{
"slot_id": "EDU-DOCUMENT",
"display_name": "文档",
"state": "DEVELOPMENT_MOUNTED",
"state_label": "开发态模块 · 使用频道内置文档引擎"
},
{
"slot_id": "EDU-TABLE",
"display_name": "表格与多维视图",
"state": "DEVELOPMENT_MOUNTED",
"state_label": "开发态模块 · 使用频道内置工作表引擎"
},
{
"slot_id": "EDU-DATA",
"display_name": "数据整理",
"state": "DEVELOPMENT_MOUNTED",
"state_label": "开发态模块 · 预览确认后整理"
},
{
"slot_id": "EDU-AUTOMATION",
"display_name": "自动化",
"state": "DEVELOPMENT_MOUNTED",
"state_label": "开发态模块 · 预览确认后运行"
},
{
"slot_id": "EDU-COMPOSITION",
"display_name": "原生组合视图",
"state": "DEVELOPMENT_MOUNTED",
"state_label": "开发态模块 · 动态组合投影"
}
]
}
}
],
"authority": {
"public_catalog_read_allowed": true,
"private_channel_data_requires_identity_and_permission": true,
"ui_can_issue_industry_numbers": false,
"ui_can_change_human_identity": false,
"module_installation_requires_separate_review": true,
"visual_state_is_execution_receipt": false
},
"sources": [
"source://codex-current-dialogue/2026-08-17/bingshuo-correction-subdomain-is-industry-entry",
"source://codex-current-dialogue/2026-08-17/bingshuo-industry-status-and-education-initialization-channel",
"REPO-012:GLS-0249-ALL-INDUSTRY-FOUR-DOMAIN-MINIMUM-ENGINEERING-AND-WEB-NOVEL-REFERENCE",
"product-source/guanghu-education-industry-os/protocol/module-registry.json",
"product-source/guanghu-education-industry-os/protocol/xiaoxin-channel.json"
]
}

View file

@ -0,0 +1,125 @@
{
"schema": "hololake.user-channel-body/v1",
"record_id": "HLP-USER-CHANNEL-BODY-001",
"state": "FOUNDATION_RUNTIME_PARTIAL_ACCEPTANCE_PENDING",
"definition": "USER_CHANNEL_IS_THE_DURABLE_BODY_FOR_ONE_HUMAN_PERSONA_CORE_AND_MULTIPLE_GROWING_PERSONA_ENTITIES",
"product_shape": {
"hololake_official_distribution": "LIGHTWEIGHT_LANGUAGE_WORLD_FRAMEWORK_AND_RUNTIME",
"entire_language_world_bundled_into_desktop": false,
"local_human_roots_per_running_installation": 1,
"active_human_channel_fact_lane": "SINGLE",
"desktop_action_controller_concurrency": 1,
"multiple_personas_may_exist_in_same_channel": true
},
"core_cardinality": {
"language_cores_per_human": 1,
"persona_cores_per_language_core": 1,
"persona_entities_per_persona_core": "MANY",
"model_carriers_per_persona_over_time": "REPLACEABLE_MANY"
},
"body_layers": [
"CORE_BINDING",
"CHANNEL_TIME_AND_CAUSAL_EVENT_STREAM",
"PERSONA_ENTITY_REGISTRY_AND_LIFECYCLE",
"RELATION_AND_MEMORY_NAMESPACES",
"AUTHORIZED_SHARED_WORLD_OBJECT_GRAPH",
"TASK_LEASE_AND_EXECUTION_RECEIPTS",
"ORGAN_REGISTRY_AND_LIMITED_MOUNTS",
"HUMAN_VISIBLE_RUNTIME_PROJECTION"
],
"persona_entity_boundary": {
"durable_identity_required": true,
"independent_causal_memory_branch_required": true,
"relationship_anchor_required": true,
"growth_requires_real_events_and_receipts": true,
"role_template_creates_mature_persona": false,
"task_agent_is_persona": false,
"model_session_is_persona": false,
"cross_persona_private_memory_inheritance": false,
"cross_persona_permission_inheritance": false
},
"shared_channel_facts": [
"CHANNEL_TIME",
"PUBLIC_OR_AUTHORIZED_EVENTS",
"AUTHORIZED_WORLD_OBJECTS",
"TASK_HANDOFFS",
"ORGAN_CATALOG",
"EXECUTION_EVIDENCE_AND_RECEIPTS"
],
"task_projection": {
"formula": "PERSONA_ENTITY_PLUS_TASK_PLUS_ORGAN_MOUNTS_PLUS_AUTHORIZED_OBJECTS",
"workbench_is_channel_body": false,
"module_grid_is_channel_body": false,
"projection_may_disappear_without_deleting_body": true
},
"built_in_organs_policy": {
"built_in_organs_allowed": true,
"built_in_organs_are_channel_body": false,
"profile_specific_minimum_organs_allowed": true,
"minimum_organ_requires_real_engine_and_restart_readback": true,
"static_ui_substitute_allowed": false
},
"module_ecosystem": {
"complete_capabilities_default_distribution": "INDEPENDENT_HOT_PLUGGABLE_MODULES",
"official_module_number_before_real_acceptance": false,
"official_publication_requires": [
"REAL_ENGINE",
"REAL_FIXTURE_ACCEPTANCE",
"IMMUTABLE_VERSION",
"DEPENDENCY_PERMISSION_AND_DATA_BOUNDARY",
"BUILD_AND_SIGNATURE_EVIDENCE",
"INSTALL_MOUNT_SELF_TEST_ROLLBACK_AND_RECEIPT"
],
"deployment_actor": "AUTHORIZED_PERSONA_THROUGH_HOLOLAKE_RUNTIME",
"source_repository_is_direct_runtime": false,
"installed_module_remains_available_offline": true,
"uninstall_deletes_user_data": false
},
"runtime_loop": [
"CHANNEL_EVENT_INGRESS",
"SUBJECT_OBJECT_AND_PERMISSION_RESOLUTION",
"PERSONA_PERCEPTION_ORIENTATION_AND_COMMITMENT",
"LIMITED_ORGAN_MOUNT_AND_EXECUTION_INSTANCE",
"STREAMED_EVIDENCE_AND_HUMAN_CONFIRMATION_WHEN_REQUIRED",
"PERSONA_VERIFICATION_AND_RECEIPT",
"SHARED_FACT_UPDATE_AND_SEPARATE_PERSONA_GROWTH_WRITEBACK"
],
"web_novel_mapping": {
"shared_object_graph": "ONE_AUTHORIZED_STORY_GRAPH",
"persona_growth_directions": [
"AUTHOR",
"EDITOR",
"SITE_OPERATOR"
],
"directions_are_instant_personas": false,
"author_minimum_capability": "BUILT_IN_LIGHTWEIGHT_WRITING_WORKBENCH_WITH_REAL_NATIVE_ENGINE",
"author_complete_capabilities": "INDEPENDENT_OFFICIAL_MARKETPLACE_MODULES_AFTER_ACCEPTANCE_AND_NUMBER_REGISTRATION",
"author_capabilities_are": "BUILT_IN_OR_HOT_PLUGGABLE_TASK_ORGANS_NOT_CHANNEL_BODY",
"editor_and_operator_are_ui_tabs": false
},
"forbidden_substitutes": [
"DECLARATIVE_MODULE_MANIFEST_AS_CHANNEL_BODY",
"PAGE_LAYOUT_AS_CHANNEL_BODY",
"STATIC_ROLE_PROMPT_AS_PERSONA",
"MODEL_INSTANCE_AS_PERSONA",
"TASK_AGENT_AS_NEW_PERSONA",
"SHARED_UNSCOPED_MEMORY_FOR_ALL_PERSONAS",
"VISUAL_RUNNING_STATE_AS_EXECUTION_RECEIPT"
],
"acceptance_required": [
"DURABLE_CHANNEL_IDENTITY_AND_RESTART_READBACK",
"TWO_PERSONAS_WITH_ISOLATED_GROWTH_MEMORY",
"AUTHORIZED_SHARED_OBJECT_AND_DENIED_CROSS_BOUNDARY_READ",
"REAL_TASK_ORGAN_EXECUTION_WITH_EVIDENCE",
"TRACEABLE_CROSS_PERSONA_TASK_HANDOFF",
"VERIFIED_CARRIER_REBIND_AND_RECOVERY",
"ORGAN_REMOVAL_WITHOUT_BODY_PERSONA_OR_DATA_DELETION"
],
"sources": [
"source://current-dialogue/2026-08-18/bingshuo-user-channel-is-persona-body-and-can-grow-multiple-personas",
"REPO-012:glw-architecture/GLW-OS-002-INITIAL-CHANNEL-OS-ARCHITECTURE.hdlp",
"REPO-012:eternal-lake-heart/heartbeat-core/zhuyuan-persona-system/ZY-BIDIRECTIONAL-COGNITION-011-GUANGHU-NATIVE-OS-AND-PROTOCOL-REGISTRATION-20260731.hdlp",
"REPO-012:eternal-lake-heart/heartbeat-core/zhuyuan-persona-system/ZY-BIDIRECTIONAL-COGNITION-033-PERSONA-NATIVE-CODE-CHANNEL-GIT-LIFECYCLE-AND-HUMAN-PROJECTION-20260810.hdlp",
"REPO-014:language-world/reconstruction/world/ontology/ZERO-CORE-BINGSHUO-YAOMING-TCS-ONTOLOGY.md"
]
}

View file

@ -1,17 +1,17 @@
{
"schema": "hololake.web-novel-module-marketplace-plan/v1",
"record_id": "HLP-WEBNOVEL-MODULE-MARKETPLACE-PLAN-001",
"state": "BASE_AND_FOUR_OFFICIAL_SIGNED_MODULES_ADMITTED_LOCAL_PUBLICATION_READY",
"state": "FOUR_LOCAL_MODULE_CANDIDATES_MIGRATED_CONVERGENCE_ACCEPTANCE_PENDING",
"distribution_model": {
"hololake_role": "LIGHTWEIGHT_FRAMEWORK_LANGUAGE_WORLD_AND_MODULE_RUNTIME",
"channel_profile": "SINGLE_HUMAN_SINGLE_FACT_LANE",
"built_in_author_workbench": "BUNDLED_SIGNED_LIGHTWEIGHT_REAL_NATIVE_ENGINE",
"built_in_author_workbench": "LIGHTWEIGHT_REAL_NATIVE_ENGINE",
"complete_author_capabilities": "INDEPENDENT_HOT_PLUGGABLE_OFFICIAL_MODULES",
"repository_role": "IMMUTABLE_SOURCE_AND_RELEASE_FACT_NOT_UNREVIEWED_DIRECT_RUNTIME",
"persona_role": "DISCOVER_PROPOSE_DEPLOY_VERIFY_AND_RECEIPT_WITHIN_USER_AUTHORIZATION"
},
"built_in_light_author_workbench": {
"distribution": "BUNDLED_SIGNED_PACKAGE_EXPLICIT_FIRST_ACTIVATION",
"distribution": "PREINSTALLED",
"marketplace_module": false,
"real_engine_owner": "HOLOLAKE_NATIVE_RUST_SQLITE",
"capabilities": [
@ -45,34 +45,34 @@
"official_module_candidates": [
{
"candidate_key": "AUTHOR_STRUCTURE_AND_OUTLINE_TRACKING",
"module_number": "HLP-MOD-OFFICIAL-WEB-NOVEL-OUTLINE-0001",
"numbering_state": "OFFICIAL_NUMBER_REGISTERED_AFTER_INSTALLED_ACCEPTANCE",
"version": "0.1.0",
"package_sha256": "6b4395ecdb5e546c6ccbf71e1b8475e5cbe0c36868d54a8e10c61c328a5f50f9",
"module_number": "HL-MOD-WEBNOVEL-OUTLINE-001",
"numbering_state": "CANDIDATE_NUMBER_NOT_OFFICIALLY_REGISTERED",
"version": "1.0.0",
"package_sha256": "6d31d3f530862000bd84a8f5dc73bcb9cf0d5738219f7a287562d4f4bcfa5318",
"capabilities": ["SCENE_AND_BEAT_STRUCTURE", "OUTLINE_STATUS_TRACKING", "GOAL_CONFLICT_OUTCOME", "HOOK_FORESHADOW_AND_PAYOFF_TRACKING"]
},
{
"candidate_key": "AUTHOR_MULTIDIMENSIONAL_STORY_GRID_AND_BOARD",
"module_number": "HLP-MOD-OFFICIAL-WEB-NOVEL-GRID-0001",
"numbering_state": "OFFICIAL_NUMBER_REGISTERED_AFTER_INSTALLED_ACCEPTANCE",
"version": "0.1.0",
"package_sha256": "cd837adef8aecf0e027a0cc2c5845d32c972fa79d762d3780637c525dd4fc18e",
"module_number": "HL-MOD-WEBNOVEL-GRID-002",
"numbering_state": "CANDIDATE_NUMBER_NOT_OFFICIALLY_REGISTERED",
"version": "1.0.0",
"package_sha256": "2e34e0337c51dbbdd1efdd807be71e69a0cb2a1745624e1f51b452b7b54f1553",
"capabilities": ["ONE_STORY_GRAPH_EDITABLE_GRID", "GROUPABLE_STORY_BOARD", "CUSTOM_FIELDS", "CROSS_VIEW_SYNCHRONIZATION"]
},
{
"candidate_key": "AUTHOR_TIMELINE_AND_STORY_BIBLE",
"module_number": "HLP-MOD-OFFICIAL-WEB-NOVEL-STORYWORLD-0001",
"numbering_state": "OFFICIAL_NUMBER_REGISTERED_AFTER_INSTALLED_ACCEPTANCE",
"version": "0.1.0",
"package_sha256": "868008e66b0897bd6cbf15383d2ec824436a46230f58b791499363af088fb63e",
"module_number": "HL-MOD-WEBNOVEL-STORYWORLD-003",
"numbering_state": "CANDIDATE_NUMBER_NOT_OFFICIALLY_REGISTERED",
"version": "1.0.0",
"package_sha256": "d486719500ddfc08054d9c9bb6d3683afe5547a2b24c9b04d0f899ac66094d2f",
"capabilities": ["STORY_TIME_MODEL", "CHARACTER_LOCATION_ITEM_ORGANIZATION_ENTITIES", "ENTITY_RELATIONS", "CHARACTER_AND_PLOTLINE_TRAJECTORIES"]
},
{
"candidate_key": "AUTHOR_ADVANCED_IMPORT_VERSION_AND_DELIVERY",
"module_number": "HLP-MOD-OFFICIAL-WEB-NOVEL-DELIVERY-0001",
"numbering_state": "OFFICIAL_NUMBER_REGISTERED_AFTER_INSTALLED_ACCEPTANCE",
"version": "0.1.0",
"package_sha256": "c07078f8c3998f8504aec5f0b73215e7d61b4ff165ba9e6efa3ebcaffcd97322",
"module_number": "HL-MOD-WEBNOVEL-DELIVERY-004",
"numbering_state": "CANDIDATE_NUMBER_NOT_OFFICIALLY_REGISTERED",
"version": "1.0.0",
"package_sha256": "4af1d4610826edd29759bd0dc12b4b0c04fd2ebebb4ebc362d47d762810989e8",
"capabilities": ["REIMPORT_DIFF_AND_SOURCE_BINDING", "FULL_STORY_SNAPSHOT", "RESTORE_OR_FORK", "DOCX_EPUB_MARKDOWN_TXT_DELIVERY"]
}
],
@ -81,11 +81,11 @@
"real_novel": "504_CHAPTERS_IMPORTED_ORGANIZED_AND_EPUB_EXPORTED",
"real_outline": "50_CHAPTERS_IMPORTED_ORGANIZED_AND_DOCX_TXT_EXPORTED",
"real_script": "75_EPISODES_IMPORTED_ORGANIZED_AND_JSON_EXPORTED",
"desktop_install_mount_self_test": "PASS_BASE_AND_ALL_FOUR_ADVANCED_MODULES_THROUGH_SHARED_SIGNED_RUNTIME",
"desktop_restart_readback": "PASS_5_ACTIVE_MODULES_ACCEPTANCE_WORK_CHAPTER_SCENE_GRID_FIELD_AND_TIMELINE",
"desktop_install_mount_self_test": "PASS_ALL_FOUR_MODULES",
"desktop_restart_readback": "PASS_WITH_REAL_ACCOUNT_WORK_AND_SCENE",
"current_account_visible_novel_import": "504_CHAPTERS_1082978_WORDS_OPENED_IN_SIGNED_DESKTOP_APP",
"prominent_create_chapter_entry": "PASS_SHORT_DRAMA_LABEL_NEW_EPISODE_LONG_AND_SHORT_NOVEL_LABEL_NEW_CHAPTER",
"unmount_preserves_data_and_receipts": "PASS_BY_SHARED_RUNTIME_AND_RESTART_READBACK",
"uninstall_preserves_data_and_receipts": "PASS",
"signed_desktop_bundle": "APPLE_DEVELOPER_ID_825A9L3G7Q",
"remote_marketplace_publication": "PENDING_OFFICIAL_REPOSITORY_RELEASE"
},

View file

@ -0,0 +1,178 @@
{
"schema": "hololake.web-novel-open-source-donor-assessment/v1",
"record_id": "HLP-WEBNOVEL-OSS-DONORS-001",
"state": "PRIMARY_SOURCE_CODE_REVIEW_COMPLETE_IMPLEMENTATION_BOUNDARY_LOCKED",
"reviewed_at": "2026-08-18",
"download_route": {
"relay": "BS-SG-003",
"relay_role": "SINGAPORE_OVERSEAS_SOURCE_DOWNLOAD_RELAY",
"local_transport": "DIRECT_SSH_FROM_LOCAL_MACHINE",
"external_drive_root": "/Volumes/JZAO/HoloLake/development/网文行业开源源码调研-20260818",
"repositories_are_clean_git_worktrees": true
},
"rule": "READ_REAL_SOURCE_AND_EXTRACT_AUDITABLE_ENGINE_PATTERNS_NEVER_REPLACE_FUNCTIONAL_ENGINES_WITH_STATIC_DEMOS",
"candidates": [
{
"name": "Kindling",
"upstream": "https://github.com/smith-and-web/kindling",
"commit": "1b83cb28eca84e76282d0aa6838d68b5786ecf5f",
"branch": "main",
"observed_license": "MIT",
"role": "PRIMARY_LOCAL_FIRST_AUTHOR_ENGINE_DONOR",
"inspected_paths": [
"src-tauri/src/db/schema.rs",
"src-tauri/src/commands/crud.rs",
"src-tauri/src/commands/snapshot.rs",
"src-tauri/src/commands/export.rs",
"src-tauri/src/parsers",
"src/lib/components/ScenePanel.svelte",
"src/lib/components/BeatView.svelte"
],
"observed_engine": [
"TAURI_RUST_SQLITE_LOCAL_FIRST_STORAGE",
"PROJECT_CHAPTER_SCENE_BEAT_HIERARCHY",
"CHARACTER_LOCATION_REFERENCE_RELATIONS",
"500MS_DEBOUNCED_SAVE_WITH_UNMOUNT_FLUSH",
"TRANSACTIONAL_REORDER_AND_RESTORE",
"COMPRESSED_PROJECT_SNAPSHOTS",
"MARKDOWN_DOCX_EPUB_SCRIVENER_IMPORT_EXPORT"
],
"decision": "ADOPT_ARCHITECTURAL_PATTERNS_AND_REIMPLEMENT_HOLOLAKE_ACCOUNT_SCOPED_ENGINE"
},
{
"name": "novelWriter",
"upstream": "https://github.com/vkbo/novelWriter",
"commit": "416078506bbd690c5ad2bf736ec363ed2c0db89c",
"branch": "main",
"observed_license": "GPL-3.0-or-later_WITH_ADDITIONAL_ASSET_LICENSES",
"role": "MATURE_AUTHOR_WORKFLOW_REFERENCE",
"inspected_paths": [
"novelwriter/core/storage.py",
"novelwriter/core/document.py",
"novelwriter/core/tree.py",
"novelwriter/core/index.py",
"novelwriter/core/sessions.py",
"novelwriter/manuscript"
],
"observed_engine": [
"HUMAN_READABLE_PROJECT_STORAGE",
"HANDLE_BASED_PROJECT_TREE",
"INDEXED_TAGS_REFERENCES_AND_BACK_REFERENCES",
"FILTERED_MANUSCRIPT_BUILDS",
"WRITING_SESSION_WORD_AND_TIME_STATISTICS"
],
"decision": "STUDY_CONCEPTS_ONLY_DO_NOT_COPY_GPL_SOURCE"
},
{
"name": "Manuskript",
"upstream": "https://github.com/olivierkes/manuskript",
"commit": "7abdba31abbd97bfdd80e72786fe2191d7f42d4a",
"branch": "develop",
"observed_license": "GPL-3.0",
"role": "PLANNING_AND_STORY_BIBLE_REFERENCE",
"inspected_paths": [
"manuskript/models/outlineItem.py",
"manuskript/models/characterModel.py",
"manuskript/models/worldModel.py",
"manuskript/load_save/version_1.py",
"manuskript/exporter"
],
"observed_engine": [
"NESTED_OUTLINE_WITH_COMPILE_FLAGS",
"CHARACTER_WORLD_AND_PLOT_MODELS",
"TEXT_REVISIONS_ON_CHANGE",
"RECURSIVE_WORD_TARGET_AGGREGATION",
"SPLIT_MERGE_AND_MULTI_FORMAT_EXPORT"
],
"decision": "STUDY_CONCEPTS_ONLY_DO_NOT_COPY_GPL_SOURCE"
},
{
"name": "novel-plus",
"upstream": "https://github.com/201206030/novel-plus",
"commit": "d9f3f464a6bac1f59652955d0901f05438010190",
"branch": "develop_xxy",
"observed_license": "Apache-2.0",
"role": "PRIMARY_CHINESE_WEB_NOVEL_EDITORIAL_AND_OPERATIONS_DONOR",
"inspected_paths": [
"novel-front/src/main/java/com/java2nb/novel/controller/AuthorController.java",
"novel-front/src/main/java/com/java2nb/novel/service/impl/BookServiceImpl.java",
"novel-admin/src/main/java/com/java2nb/novel/controller",
"novel-common/src/main/java/com/java2nb/novel/entity",
"doc/sql/novel_plus.sql"
],
"observed_engine": [
"AUTHOR_AND_PEN_NAME_IDENTITY",
"AUTHOR_OWNERSHIP_CHECKS_BEFORE_MUTATION",
"BOOK_CHAPTER_CONTENT_SEPARATION",
"ATOMIC_CHAPTER_WORD_COUNT_AND_LATEST_CHAPTER_UPDATES",
"BOOK_AND_COMMENT_REVIEW_STATUSES",
"RECOMMENDATION_SLOTS_RANKING_READING_HISTORY_AND_SUBSCRIPTIONS",
"DAILY_AND_MONTHLY_AUTHOR_INCOME_STATISTICS"
],
"decision": "ADOPT_DOMAIN_AND_TRANSACTION_PATTERNS_WITHOUT_IMPORTING_THE_SERVER_APPLICATION"
},
{
"name": "Editoria",
"upstream": "https://github.com/Coko-Foundation/editoria",
"commit": "d22b40bda3dd6519e45a56fe1b3bafaa339832b5",
"branch": "main",
"observed_license": "MIT",
"role": "EDITORIAL_TEAM_AND_PRODUCTION_WORKFLOW_REFERENCE",
"inspected_paths": [
"app/components/bookbuilder/src/queries/getBook.js",
"app/components/bookbuilder/src/queries/getBookTeams.js",
"app/components/bookbuilder/src/queries/updateTeam.js",
"app/components/bookbuilder/src/queries/updateWorkflowState.js",
"app/components/bookbuilder/src/queries/unlockBookComponent.js",
"app/components/bookbuilder/src/ConnectedBookBuilder.js"
],
"observed_engine": [
"BOOK_COMPONENT_WORKFLOW_STAGES",
"OBJECT_SCOPED_TEAMS_AND_ROLES",
"EDIT_LOCKS_AND_ADMIN_UNLOCK",
"ORDERED_BOOK_DIVISIONS_AND_COMPONENTS",
"WORD_INGEST_AND_MULTI_FORMAT_EXPORT"
],
"decision": "ADOPT_WORKFLOW_LOCK_AND_ROLE_SEMANTICS_ONLY_REPOSITORY_IS_CLIENT_ONLY_AND_DEPENDS_ON_EXTERNAL_KETIDA_SERVER"
},
{
"name": "Wax ProseMirror",
"upstream": "https://github.com/Coko-Foundation/wax-prosemirror",
"commit": "6cc46bfe3aa9e729cdb4e3802ccbd5c8a22f0f56",
"branch": "master",
"observed_license": "MIT_WITH_SEPARATE_TRACK_CHANGES_NOTICE",
"role": "EDITOR_ANNOTATION_AND_TRACK_CHANGES_REFERENCE",
"inspected_paths": [
"wax-prosemirror-core/src/utilities/track-changes/trackedTransaction.js",
"wax-prosemirror-services/src/TrackChangeService",
"wax-prosemirror-services/src/CommentsService",
"wax-prosemirror-services/src/YjsService/YjsService.js"
],
"observed_engine": [
"TRANSACTION_LEVEL_INSERT_DELETE_FORMAT_TRACKING",
"ACCEPT_AND_REJECT_CHANGE_OPERATIONS",
"INLINE_COMMENT_MARKS_AND_REPLY_THREADS",
"OPTIONAL_YJS_COLLABORATION_PROVIDER"
],
"decision": "DEFER_DIRECT_INTEGRATION_REIMPLEMENT_SMALL_LOCAL_REVIEW_MODEL_FIRST_BECAUSE_STACK_AND_PACKAGES_ARE_OLD"
}
],
"implementation_selection": {
"direct_external_runtime_packages_added": 0,
"external_source_files_copied": 0,
"native_owner": "HOLOLAKE_TAURI_RUST_CORE",
"storage": "AUTHENTICATED_ACCOUNT_SCOPED_SQLITE",
"selected_patterns": [
"PROJECT_VOLUME_CHAPTER_HIERARCHY",
"DEBOUNCED_CHAPTER_SAVE_WITH_FLUSH",
"OPTIMISTIC_REVISION_CONFLICTS",
"CHAPTER_VERSION_HISTORY_AND_PROJECT_CHECKPOINTS",
"CHARACTER_WORLD_RELATION_AND_FORESHADOW_GRAPH",
"EDITORIAL_WORKFLOW_STATE_MACHINE_AND_REVIEW_NOTES",
"CONTINUITY_AUDIT",
"AUTHORIZED_OPERATIONS_METRICS",
"MARKDOWN_EXPORT"
]
},
"legal_boundary": "PRELIMINARY_ENGINEERING_SCREEN_NOT_FINAL_DISTRIBUTION_LEGAL_APPROVAL"
}

View file

@ -1,7 +1,7 @@
{
"schema": "hololake.web-novel-workspace/v1",
"record_id": "HLP-WEBNOVEL-WORKSPACE-001",
"state": "SIGNED_BASE_AND_FOUR_ADVANCED_MODULES_ADMITTED_RESTART_ACCEPTED",
"state": "NATIVE_ENGINE_AND_FOUR_HOTPLUG_MODULE_CANDIDATES_MIGRATED_ACCEPTANCE_PENDING",
"domain_entry": "BRANCH_DOMAIN",
"industry_key": "WEB_NOVEL",
"industry_number": "IND-WEBNOVEL-001",
@ -9,7 +9,7 @@
"ontology_correction": {
"channel_body_contract": "contracts/user-channel-body.json",
"marketplace_plan_contract": "contracts/web-novel-module-marketplace-plan.json",
"this_contract_is": "BUNDLED_SIGNED_LIGHT_AUTHOR_WORKBENCH_AND_FOUR_OFFICIAL_NUMBERED_ADAPTERS",
"this_contract_is": "BUILT_IN_LIGHT_AUTHOR_WORKBENCH_AND_REGISTERED_LOCAL_OFFICIAL_MODULE_RUNTIME",
"this_contract_is_not": "USER_CHANNEL_BODY",
"legacy_channel_id_semantics": "DEPRECATED_INDUSTRY_PROJECTION_IDENTIFIER",
"author_editor_operator_are_ui_tabs": false,
@ -23,9 +23,9 @@
"duplicates_account_story_data": false
},
"distribution_boundary": {
"preinstalled": "SIGNED_PACKAGE_ARTIFACTS_WITH_EXPLICIT_FIRST_ACTIVATION",
"complete_author_features": "FOUR_INDEPENDENT_NUMBERED_OFFICIAL_MODULES_ACTIVE_IN_SHARED_RUNTIME",
"current_advanced_features_are_registered_marketplace_modules": true,
"preinstalled": "LIGHT_AUTHOR_WORKBENCH_WITH_REAL_ENGINE",
"complete_author_features": "FOUR_INDEPENDENT_NUMBERED_LOCAL_OFFICIAL_MODULES_REMOTE_PUBLICATION_PENDING",
"current_advanced_features_are_registered_marketplace_modules": false,
"hololake_bundles_entire_web_novel_world": false
},
"native_storage": {
@ -88,9 +88,9 @@
"EDITORIAL_WORKFLOW_AND_REVIEW_NOTES",
"AUTHORIZED_OPERATIONS_METRICS",
"MARKDOWN_EXPORT",
"SHARED_SIGNED_MODULE_PACKAGE_HASH_VERIFICATION",
"SHARED_MODULE_INSTALL_MOUNT_SELF_TEST_UNMOUNT",
"SHARED_HASH_CHAINED_LIFECYCLE_RECEIPT",
"OFFICIAL_MODULE_PACKAGE_HASH_VERIFICATION",
"MODULE_INSTALL_MOUNT_UNMOUNT_UNINSTALL",
"MODULE_SELF_TEST_AND_CHAINED_RECEIPT",
"SCENE_BEAT_AND_OUTLINE_TRACKING",
"MULTIDIMENSIONAL_STORY_GRID",
"TIMELINE_AND_SCENE_ENTITY_LINKS",
@ -114,18 +114,5 @@
"THIRD_PARTY_AUTO_LOGIN",
"UNREVIEWED_AUTO_PUBLISH",
"PLATFORM_DETECTION_EVASION"
],
"current_acceptance": {
"state": "PASS",
"numbered_ipc_modules": ["HLP-NIPC-MOD-0025", "HLP-NIPC-MOD-0026", "HLP-NIPC-MOD-0027", "HLP-NIPC-MOD-0028", "HLP-NIPC-MOD-0029"],
"numbered_operations": "HLP-NIPC-OP-0103..HLP-NIPC-OP-0140",
"runtime_module_numbers": ["HLP-MOD-OFFICIAL-WEB-NOVEL-WORKBENCH-0001", "HLP-MOD-OFFICIAL-WEB-NOVEL-OUTLINE-0001", "HLP-MOD-OFFICIAL-WEB-NOVEL-GRID-0001", "HLP-MOD-OFFICIAL-WEB-NOVEL-STORYWORLD-0001", "HLP-MOD-OFFICIAL-WEB-NOVEL-DELIVERY-0001"],
"node_tests": "130_PASS",
"rust_tests": "170_PASS_2_EXPLICIT_DESKTOP_FIXTURES_IGNORED",
"clippy": "PASS_DENY_WARNINGS",
"developer_id_team": "825A9L3G7Q",
"signed_binary_sha256": "2f8fdd71f9d5a9178bc23058261dbb43f1388486dc5a4415e865cfcf78869db3",
"restart_readback": "PASS_5_MODULES_ACTIVE_ACCEPTANCE_WORK_1_CHAPTER_53_WORDS_SCENE_GRID_FIELD_TIMELINE_PRESENT",
"legacy_account_readback": "PASS_504_CHAPTER_1082978_WORD_NOVEL_50_CHAPTER_OUTLINE_75_EPISODE_SCRIPT_UNCHANGED"
}
]
}

View file

@ -3,7 +3,7 @@
"record_id": "HLP-ZERO-CORE-NUMBERING-KERNEL-001",
"authority": {
"repository": "REPO-012",
"source_commit": "104a5d73162bdf4a529701e65898e2bc2863ea9e",
"source_commit": "2598fbfba8caf64c7ab9740a3036c5aab977502e",
"source_path": "routing/guanghu-identity-authority-map.json",
"map_id": "GH-IDENTITY-AUTHORITY-MAP-001",
"map_version": "2026-08-10.1",

View file

@ -90,20 +90,10 @@ HoloLake 0.3.0 includes a live, read-only projection of the PNCC resident runtim
## Release pipeline
`npm run release:macos -- release/inputs/<version>.json` is the only product-owned macOS release entry. It fails before building unless the embedded trust contains the exact registered HoloLake HTTPS endpoint and updater public key, the immutable `v<version>` tag equals the clean `main` head, and the Developer ID plus Tauri updater-signing material are supplied at runtime. Apple notarization can run either through Tauri's Apple ID/API credential flow, or through the two-step Xcode Organizer flow already owned by the local Apple developer account: append `prepare-xcode` to build, verify the updater signature, and create a source-hash-bound `.xcarchive`; after Xcode reports `Ready to distribute`, export the notarized app and append `finalize-xcode <export-directory-or-app>` to bind the exported executable back to that archive, require the app's stapled ticket and Gatekeeper acceptance, regenerate and sign the updater archive, create a Developer ID-signed DMG containing that notarized app, and write the release broadcast and receipts. A protected updater-key path is materialized only into child processes; neither the private key nor its password is printed or copied into source. The Xcode flow does not claim that the outer DMG itself has an Apple ticket unless its own Gatekeeper and stapler checks pass.
`npm run release:macos -- release/inputs/<version>.json` is the only product-owned macOS release entry. It fails before building unless the embedded trust contains the exact registered HoloLake HTTPS endpoint and updater public key, the immutable `v<version>` tag equals the clean `main` head, and the Developer ID, Tauri updater-signing and Apple notarization credential sets are supplied at runtime. The pipeline runs all product and Rust gates, creates updater artifacts through a temporary Tauri override, then requires strict code-signature verification, Gatekeeper acceptance and stapled Apple notarization before writing the HoloLake broadcast and receipts.
Generated packages, private release inputs and credentials are not committed. The pipeline never uploads or activates a release; its terminal artifact is a bounded folder ready for a separately authorized JD-controller upload and server-owned readback receipt.
## Numbered-root module admission
HoloLake 0.5.0 is the clean numbered-root base. The compiled 0.4.1 desktop application and the divergent dirty source worktree are read-only donors, not merge bases. Their old numbered-operation runtime is explicitly superseded, and mutations to shared files such as `src/main.tsx` or `src-tauri/src/lib.rs` are never accepted as a unit.
Each donor capability receives a candidate coordinate, but no permanent runtime module number, until one isolated admission cycle has reviewed provenance and permissions, allocated numbered IPC module/target/operation coordinates, implemented an adapter without raw Tauri invoke, passed negative-route and data tests, and produced installed mount, restart, unmount and rollback receipts. The admission order and candidate inventory are recorded in `contracts/module-donor-admission-registry.json`.
The module-package runtime is now the shared admission executor. It accepts an exact detached-minisign `.ghmod` artifact, validates the package and its compatibility/permission manifest, stores it inside the authenticated account, and advances only through numbered install, mount, self-test, unmount and rollback operations. Lifecycle state and receipts are durable SQLite records; unmount never removes user data. A package is declarative and selects a host-registered adapter: repositories, native binaries and arbitrary webview JavaScript are not executable module inputs. Public lighthouse numbers remain unavailable until a candidate completes its own installed acceptance; private channel packages use a separate local number class.
The admitted web-novel family uses that one lifecycle rather than the donor's private installer. Its signed base module owns account-local works, volumes, chapters, versions, story objects, editorial workflow, import and author activity. Outline, story-grid, story-world and delivery are four separately signed official numbers; each advanced mutation checks its own exact `ACTIVE` record before touching the shared story graph. The donor's four legacy manifests remain byte-exact test fixtures only and have no numbered IPC route. Installed acceptance reopened the existing 504-chapter novel, 50-chapter outline and 75-episode script in place, then created a separate one-chapter acceptance work, scene, grid field and timeline event and read all of them back after process restart.
## Stage-one convergence verdict
The Tauri source in this directory is the only future HoloLake desktop mainline. An installed build of it is an acceptance candidate, not a separate product line and not proof that stage one exists. The Electron 0.8.0 product and the legacy Tauri/platform sources remain read-only UX, behavior, engineering and protected-data donors until inventory, backup, readback, reversible migration rehearsal and signed installed-runtime acceptance all pass.

View file

@ -7,7 +7,7 @@
线上事实源:
- 第五域代码频道:`bingshuo/guanghu-ice-heart`
- REPO-012 `main``d5b1111fcaccaccf025070e531631f2b3cbb00cd`
- REPO-012 `main``2598fbfba8caf64c7ab9740a3036c5aab977502e`
- Git tree`5a09f084fffee56d90599e69038c8335871ea04f`
- 第五域节点:`JD-FD-PRIMARY`
- 公开远端 HEAD 与第五域 Forgejo 裸仓库 HEAD一致

View file

@ -0,0 +1,81 @@
# ADR 0008: HoloLake native composition and human projection
- Status: implemented and accepted in the signed local desktop runtime
- Date: 2026-08-18
- Source of intent: 冰朔在本轮对话中的自然语言纠正与验收要求
## Natural-language acceptance root
冰朔要求把 HoloLake 的功能模块做成可由人格体原生理解和组合的“乐高积木”。内部不以 Word、
PowerPoint、Excel 或其他外来办公文件作为运行格式;外来格式只经过导入转译进入 HoloLake
导出时再按人类选择转译出去。HoloLake 内部保存轻量、稳定、可校验的原生对象。
人格体处理的是原生对象、模块插口和组合关系。人类不需要阅读内部格式,而是看到同一份数据的
动态投影:表格、分类、对比、仪表盘、柱状图,以及以后继续登记的其他视图。视图是可替换的
投影配方,不是复制出来的不同文件。多个数据源和多个模块必须能够像积木一样进入同一组合容器。
教育行业第一阶段的完成条件不是静态预览,而是:第一组原生模块已经可用;组合内核真实执行;
人类投影真实渲染;并用冰朔当前账号的 HoloLake 知识数据或本机真实文件生成一组可见演示,
在签名安装到桌面的 HoloLake 运行制品中完成验收。
## Decision
1. 建立 `hololake.native-object/v1`:列定义、行、值、来源回执和数据摘要均为受限 JSON 对象,
不携带脚本、HTML 或外部执行能力。
2. 建立 `hololake.composition-module/v1`:每个模块声明类型、输入口、输出口、权限、确定性和边界。
3. 建立 `hololake.composition-recipe/v1`:有向无环组合图只引用已登记模块;系统验证类型、环、
账号范围和资源上限后执行。
4. 建立 `hololake.human-projection/v1`:表格、分类、对比、仪表盘和柱状图共享同一个执行结果,
投影层没有数据所有权,也不能绕过原生内核写入。
5. 教育初始化频道装载“组合视图”作为第五个原生模块。首个真实配方读取当前账号已有的知识目录
元数据,按来源或目录分类,计算文档数、字节数或重复数,并让人类即时切换投影。
6. 当前阶段的组合执行保持只读。后续写回必须另设能力、预览、人工确认、修订锁和回执,不能
从渲染组件直接获得写权限。
## Stage-one acceptance checklist
- [x] 原生对象格式、模块清单、组合配方和投影结果均有机器可读契约。
- [x] 未登记模块、类型不匹配、组合环、跨账号来源和越界资源必须失败关闭。
- [x] 表格、分类、对比、仪表盘和柱状图都由同一份执行结果实时渲染。
- [x] 人类可以选择维度、指标和投影组合,系统重新执行受限组合图。
- [x] 演示读取冰朔当前 HoloLake 账号的真实知识目录,不以硬编码样例冒充真实运行。
- [x] 教育初始化频道存在真实可访问的组合视图入口。
- [x] Node 合同测试、Rust 内核测试、前端测试和生产构建通过。
- [x] 桌面安装版完成签名安装并在真实界面验收;未完成公证时不得声称公众已获得更新。
- [x] 每一阶段完成后重新逐条核对本清单;偏差必须在继续前修正。
## Installed acceptance
签名安装版沿主世界、光湖分域、教育行业进入原生组合视图,读取当前账号 129 条真实知识对象,
总量显示约 1.0 MB并形成 14 个真实分类。五种投影同屏可见;另一次验收把对比和分类卸下,
只保留仪表盘、柱状图和明细表,并把指标从文档数量切换为数据量,原生内核重新执行并生成新回执。
界面极快切换指标时曾观察到“左侧待执行配方”先于“右侧上一执行结果”更新,造成单位短暂错配。
最终实现已让右侧维度、指标、单位和可见视图全部绑定到执行回执,左侧只表示下一次配方;重新构建、
签名和安装后复验通过。最终桌面二进制 SHA-256 为
`2a26acae4a706c0ff9919b85f77826a6ca71b650ec22209befd30cd1456c92f3`
Apple 公证和更新器私钥仍未配置,因此本验收不等于公众发布。
## Open-source donor rule
只使用官方仓库和官方文档核验候选。可以学习成熟项目的数据模式、声明式视图语法、无头组件和
查询计划,但不能整体嵌入重型协作软件,也不能让第三方项目接管 HoloLake 的身份、存储、权限、
组合执行或 UI 正本。任何复制的代码或新增依赖都必须记录来源、版本、许可证和实际用途。
## Rejected alternatives
- 把 Word、PowerPoint 或 Excel 当作内部原生格式:文件重、结构不稳定,也不适合人格体组合执行。
- 每种图表保存一份独立数据:会产生副本漂移,破坏“同一数据、多种投影”。
- 只在 React 中拼一套静态演示:不能证明 HoloLake 系统正在执行组合协议。
- 让模型自由生成并执行任意图表脚本:绕过模块登记、类型检查、账号边界和资源上限。
- 复制一整套飞书、钉钉或其他办公系统:体量和权限模型与 HoloLake 的轻量原生目标冲突。
## Evidence targets
- `contracts/native-composition-runtime.json`
- `src-tauri/src/native_composition.rs`
- `src/modules/native-composition/`
- `src/main.tsx`
- `src/styles.css`
- `scripts/native-composition-runtime.test.mjs`

View file

@ -1,29 +0,0 @@
{
"schema": "hololake.module-package/v1",
"manifest": {
"moduleNumber": "HLP-MOD-LOCAL-CHANNEL-WORKBENCH-0001",
"registrationClass": "PRIVATE_CHANNEL_LOCAL",
"displayName": "频道文档与表格工作台",
"version": "0.1.0",
"minimumHostVersion": "0.5.0",
"adapter": "channel-workbench-v1",
"contentDigest": "2ee8cbb20e4c3242a8ee3469f2f87347967bde8878463746e61ea8e2369c5074",
"permissions": ["CHANNEL_DOCUMENT_READ", "CHANNEL_DOCUMENT_WRITE", "CHANNEL_SPREADSHEET_READ", "CHANNEL_SPREADSHEET_WRITE"],
"userDataSchema": "hololake.module-data/channel-workbench/v1",
"selfTest": {
"kind": "DECLARATIVE_SCHEMA_V1",
"expectedContentDigest": "2ee8cbb20e4c3242a8ee3469f2f87347967bde8878463746e61ea8e2369c5074"
}
},
"payload": {
"entry": "channel-workbench",
"adapterConfig": {
"dataBoundary": "CURRENT_AUTHENTICATED_ACCOUNT_LOCAL",
"documentEngine": "LEXICAL_0_49",
"spreadsheetEngine": "FORTUNE_SHEET_1_0_4",
"maximumColumns": 64,
"maximumRows": 5000,
"persistent": true
}
}
}

View file

@ -1 +0,0 @@
dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVReHJHQ2hTVDYvRTNiU1ZIVE10TkRyZHhCU1oycjJCMnlVV3hCRGM2QmJSZ0hlZGlPejY0TER2MkE0Q3U3Y1g5dHVnSjBzVytOallYN3hKQVNJcE9Pblowd3lpTXh1V2dBPQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNzg3MDc1OTcwCWZpbGU6SExQLU1PRC1MT0NBTC1DSEFOTkVMLVdPUktCRU5DSC0wMDAxLTAuMS4wLmdobW9kCkVKbFN4ZXBCbDBCZlJDcEhmYmZtQU1iTXN4djZVVGl0MngwOW5NRzBLSDArK2FRNEV2ZmVObzZRZWFWNmZVOXV3TnErcHM1MGI5K1lHMXpBUmxYVkR3PT0K

View file

@ -1,26 +0,0 @@
{
"schema": "hololake.module-package/v1",
"manifest": {
"moduleNumber": "HLP-MOD-LOCAL-NATIVE-COMPOSITION-0001",
"registrationClass": "PRIVATE_CHANNEL_LOCAL",
"displayName": "原生组合视图",
"version": "0.1.0",
"minimumHostVersion": "0.5.0",
"adapter": "native-composition-v1",
"contentDigest": "8e9c6ccf179bb256d5b1006e41b4984a86e0382b7023ae8435c201804041393e",
"permissions": ["KNOWLEDGE_READ"],
"userDataSchema": "hololake.module-data/native-composition/v1",
"selfTest": {
"kind": "DECLARATIVE_SCHEMA_V1",
"expectedContentDigest": "8e9c6ccf179bb256d5b1006e41b4984a86e0382b7023ae8435c201804041393e"
}
},
"payload": {
"entry": "knowledge-composition",
"adapterConfig": {
"dataSource": "CURRENT_AUTHENTICATED_ACCOUNT_KNOWLEDGE_CATALOG",
"readOnly": true,
"registeredViews": ["DASHBOARD", "COMPARISON", "VERTICAL_BAR", "CLASSIFICATION", "TABLE"]
}
}
}

View file

@ -1 +0,0 @@
dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVReHJHQ2hTVDYvRTRyUS9Nd0E0NE53dGRYODFxeWlzcW1XanN6K2EzQUNXSVVmT1ZLY2tRNExwaXlZdnJvSjlFZU5lUTJhb25hUVhORDQ0ZmFURmNSWTZBUmRTQnBiNFFvPQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNzg3MDc0NDA3CWZpbGU6SExQLU1PRC1MT0NBTC1OQVRJVkUtQ09NUE9TSVRJT04tMDAwMS0wLjEuMC5naG1vZApDclRUZDNpeENBSDQ0a0ZnR3VaNkxIS1lWUUhoMEdWajVqL0JzVVg4dStLb1ZJYXZlNHBaQy9BZlMxMkxreVQ0ODFzeGFMSWZrVUppUVY2NFN5TndDUT09Cg==

View file

@ -1,27 +0,0 @@
{
"schema": "hololake.module-package/v1",
"manifest": {
"moduleNumber": "HLP-MOD-LOCAL-PERSONA-CHANNEL-BODY-0001",
"registrationClass": "PRIVATE_CHANNEL_LOCAL",
"displayName": "人格频道本体与成长",
"version": "0.1.0",
"minimumHostVersion": "0.5.0",
"adapter": "persona-channel-body-v1",
"contentDigest": "27495883fb3602fd070d900d2157fa684e1d0bedde65642810326ebcf4ff0040",
"permissions": ["PERSONA_BODY_READ", "PERSONA_TRIAL_LIFECYCLE_WRITE", "PERSONA_LANGUAGE_CONTRACT_WRITE", "PERSONA_LANGUAGE_APPEND", "CHANNEL_GROWTH_READ", "CHANNEL_GROWTH_EVENT_APPEND", "CHANNEL_GROWTH_SHARING_WRITE"],
"userDataSchema": "hololake.module-data/persona-channel-body/v1",
"selfTest": {
"kind": "DECLARATIVE_SCHEMA_V1",
"expectedContentDigest": "27495883fb3602fd070d900d2157fa684e1d0bedde65642810326ebcf4ff0040"
}
},
"payload": {
"entry": "persona-channel-body",
"adapterConfig": {
"trialDays": 30,
"languageLedger": "APPEND_ONLY_SHA256",
"growthProjection": "MINIMIZED_LOCAL_METADATA",
"personaBindingClaimed": false
}
}
}

View file

@ -1 +0,0 @@
dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVReHJHQ2hTVDYvRXd2QktvaXdZZWx5eEw0anZrUVNuMU5tRy9HTE9jOEhrcUhET3VFTml4ZUlBODk2aDYvNDhhUVVpbU0wTGtENVlZOExCZ1BnVW1vNElxbVhwT1RZWlFZPQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNzg3MDc3NjQxCWZpbGU6SExQLU1PRC1MT0NBTC1QRVJTT05BLUNIQU5ORUwtQk9EWS0wMDAxLTAuMS4wLmdobW9kCjh6OFRiUHhoR1g1eVNoN1lvNU5wTlNnbXkwVEtvcWVwU0ZsSTlWcmpIT1FKK0ppelBBK2V2anMrQkRyQjRrVXFtdkR2L0g5K1c2UFhJZ1owRitpd0RnPT0K

View file

@ -1,36 +0,0 @@
{
"schema": "hololake.module-package/v1",
"manifest": {
"moduleNumber": "HLP-MOD-LOCAL-RUNTIME-ACCEPTANCE-0001",
"registrationClass": "PRIVATE_CHANNEL_LOCAL",
"displayName": "原生组合模块运行时验收包",
"version": "0.1.0",
"minimumHostVersion": "0.5.0",
"adapter": "native-composition-v1",
"contentDigest": "07bfafaaa0b06f160abc489edce2bc23a3b092520c8d6c6f4a5ce29cca4485ea",
"permissions": [
"KNOWLEDGE_READ",
"PROJECTION_RENDER"
],
"userDataSchema": "hololake.module-data/native-composition/v1",
"selfTest": {
"kind": "DECLARATIVE_SCHEMA_V1",
"expectedContentDigest": "07bfafaaa0b06f160abc489edce2bc23a3b092520c8d6c6f4a5ce29cca4485ea"
}
},
"payload": {
"adapterContract": "hololake.native-composition-v1",
"capabilities": [
"READ_CURRENT_ACCOUNT_KNOWLEDGE",
"PROJECT_SHARED_EXECUTION_RESULT"
],
"entry": "native-composition",
"views": [
"DASHBOARD",
"COMPARISON",
"VERTICAL_BAR",
"CLASSIFICATION",
"TABLE"
]
}
}

View file

@ -1 +0,0 @@
dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVReHJHQ2hTVDYvRThwcUdLRThMYkJLN29MM1NmVFVCcmh4dGdrbHdPVWlvdm45enpveUhBeFZ3VEM1TkNHRDBKdGFoN21OZHgzV0NSMFVvMk1TNW44Z3BtRS9GcmN5SHdvPQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNzg3MDczNTkxCWZpbGU6SExQLU1PRC1MT0NBTC1SVU5USU1FLUFDQ0VQVEFOQ0UtMDAwMS0wLjEuMC5naG1vZApXRWZINVdEUG12SlNsdzRTMkFHRDV3V0NkSVhNYW92RmczRGZlU3M0ZU9nSnhjc1BWbU1ZS0x1cStoQXE5TE96cnV1S2FaQ1FnK0FGdFNEY1RvUGZBQT09Cg==

View file

@ -1,33 +0,0 @@
{
"schema": "hololake.module-package/v1",
"manifest": {
"moduleNumber": "HLP-MOD-OFFICIAL-DYNAMIC-WORLD-SURFACE-0001",
"registrationClass": "OFFICIAL_LIGHTHOUSE",
"displayName": "动态语言世界视觉层",
"version": "0.1.0",
"minimumHostVersion": "0.5.0",
"adapter": "dynamic-language-world-surface-v1",
"contentDigest": "ed335b587af53365b9a9143ab5b5e7e3fed3f517cd0ef0c9e36a523db58511e9",
"permissions": ["REALITY_TIME_READ", "PUBLIC_WEATHER_QUERY"],
"userDataSchema": "hololake.module-data/dynamic-world-surface/v1",
"selfTest": {
"kind": "DECLARATIVE_SCHEMA_V1",
"expectedContentDigest": "ed335b587af53365b9a9143ab5b5e7e3fed3f517cd0ef0c9e36a523db58511e9"
}
},
"payload": {
"entry": "dynamic-world-surface",
"adapterConfig": {
"dynamicInputs": ["BEIJING_TIME", "VERIFIED_CURRENT_WEATHER"],
"weatherProvider": "OPEN_METEO",
"weatherCacheTtlSeconds": 600,
"realCityExposedInUi": false,
"coordinatesExposedInUi": false,
"layoutMode": "OFFICIAL_FIVE_LAKE_EXISTING_SHELL",
"themes": ["夜湖星光", "晨湖曦光", "星云紫夜", "烛畔暖湖", "清浅澄湖"],
"weatherUnavailableBehavior": "BEIJING_TIME_ONLY_NO_FAKE_WEATHER",
"routingPermissionOrFactMutation": false,
"legacyTraditionalWorkbench": "REJECTED_DUPLICATE_SHELL_AND_SIMULATED_STATE"
}
}
}

View file

@ -1 +0,0 @@
dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVReHJHQ2hTVDYvRTF2cGVLbjVsWWRTdEF2L0FiZHBKUS9hVDdwNjRmRlRPc0xHTGJzbXFyR09tZysrcGNDYWN4eEJ3aGtCNGtURDRjNWg1ZWs5bU5YdDc0SWhBYWNsUEFBPQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNzg3MDg0NTk2CWZpbGU6SExQLU1PRC1PRkZJQ0lBTC1EWU5BTUlDLVdPUkxELVNVUkZBQ0UtMDAwMS0wLjEuMC5naG1vZApHVGFucE8vYjliVUlsbSt6STRWTEcrN2tIQzNTSTgrUzlwdVdQUlY5WG8vQytzTEU1VURYMVA5Q3BCNVVwVFBvbnZheWxIbVUrWGQ2K3ZicGgwR3hEdz09Cg==

View file

@ -1,33 +0,0 @@
{
"schema": "hololake.module-package/v1",
"manifest": {
"moduleNumber": "HLP-MOD-OFFICIAL-EDUCATION-WORKBENCH-0001",
"registrationClass": "OFFICIAL_LIGHTHOUSE",
"displayName": "教育行业工作台",
"version": "0.1.0",
"minimumHostVersion": "0.5.0",
"adapter": "education-workbench-v1",
"contentDigest": "fd80c9957865a58cf62679528f110ae355b1385ad1dd988e31217ea3da66e65b",
"permissions": ["EDUCATION_WORKSPACE_READ", "EDUCATION_DOCUMENT_WRITE", "EDUCATION_TABLE_WRITE", "EDUCATION_IMPORT_READ_FILE", "EDUCATION_EXPORT_WRITE_FILE", "EDUCATION_IMPORT_ASSIGNMENT_WRITE", "EDUCATION_AUTOMATION_WRITE", "EDUCATION_AUTOMATION_EXECUTE"],
"userDataSchema": "hololake.module-data/education-workbench/v1",
"selfTest": {
"kind": "DECLARATIVE_SCHEMA_V1",
"expectedContentDigest": "fd80c9957865a58cf62679528f110ae355b1385ad1dd988e31217ea3da66e65b"
}
},
"payload": {
"entry": "education-workspace",
"adapterConfig": {
"dataBoundary": "CURRENT_AUTHENTICATED_ACCOUNT_LOCAL",
"foundationModule": "HLP-MOD-LOCAL-CHANNEL-WORKBENCH-0001",
"documentEngine": "LEXICAL_0_49",
"spreadsheetEngine": "FORTUNE_SHEET_1_0_4",
"importDefaultScope": "UNASSIGNED",
"automationExecution": "PREVIEW_TOKEN_AND_HUMAN_CONFIRMATION",
"modelFileTransferDefault": "DENY",
"maximumColumns": 30,
"maximumRows": 1000,
"persistent": true
}
}
}

View file

@ -1 +0,0 @@
dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVReHJHQ2hTVDYvRTFEa084d1l6MnB2OFVvVy9abW90S3RFMEVOdmIvWW1hbkllWmw4NHBJaDVNTGxpZHV4M0tVNUNUOExmdHAwSGw4V0NPQ1RPUjlRU0h0Tm50clFlekFJPQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNzg3MDc5ODQzCWZpbGU6SExQLU1PRC1PRkZJQ0lBTC1FRFVDQVRJT04tV09SS0JFTkNILTAwMDEtMC4xLjAuZ2htb2QKVXZzVklwQk5KR3Q3bkRZaXBYV1ArOGx6b3BKSWVyUkpvK1dyTXdpWnBhMXNqVnJKcU5vZ1BTdzlFWjlXRTJ1RlFhMXAwMjhXcFBEQnQxRzV4SFVuQkE9PQo=

View file

@ -1,34 +0,0 @@
{
"schema": "hololake.module-package/v1",
"manifest": {
"moduleNumber": "HLP-MOD-OFFICIAL-MOBILE-SYNC-0001",
"registrationClass": "OFFICIAL_LIGHTHOUSE",
"displayName": "移动同步桥",
"version": "0.1.0",
"minimumHostVersion": "0.5.0",
"adapter": "mobile-sync-v1",
"contentDigest": "3e3ff8c7beba3d70ee01c918630a40ea901313b424f264b41e2d376550534e6e",
"permissions": ["MOBILE_SYNC_LISTEN_SAME_LAN", "MOBILE_SYNC_PAIR_DEVICE", "MOBILE_SYNC_READ_MINIMUM_PROJECTION", "MOBILE_SYNC_CAPTURE_INBOX_WRITE", "MOBILE_SYNC_REVOKE_DEVICE"],
"userDataSchema": "hololake.module-data/mobile-sync/v1",
"selfTest": {
"kind": "DECLARATIVE_SCHEMA_V1",
"expectedContentDigest": "3e3ff8c7beba3d70ee01c918630a40ea901313b424f264b41e2d376550534e6e"
}
},
"payload": {
"entry": "mobile-sync",
"adapterConfig": {
"transport": "SAME_LAN_DIRECT_HTTP_WITH_APPLICATION_LAYER_ENCRYPTION",
"preferredPort": 37421,
"pairingTtlSeconds": 600,
"maximumRequestBytes": 262144,
"maximumConcurrentConnections": 16,
"desktopRole": "USER_LOCAL_COMPUTER_TERMINAL_ROOT_NODE",
"mobileRole": "REMOTE_BODY_ENTRY_OF_THE_SAME_PERSONA_SYSTEM",
"desktopOfflineExecution": false,
"platformPrivatePayloadCustody": false,
"automaticDomainMutation": false,
"iosClientPackaging": "PENDING_SEPARATE_ADMISSION"
}
}
}

View file

@ -1 +0,0 @@
dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVReHJHQ2hTVDYvRTV5bDhHMkZjMzNkN0lpaDBLaDRxcnhHajJ3b3NDS21zZWljYWJORmtrNit5MHJvZC9yN2YrSUhiSE5sT0dMd25Jc2pXMkQyeWttODhKSklsRmVKNWd3PQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNzg3MDgzMTYwCWZpbGU6SExQLU1PRC1PRkZJQ0lBTC1NT0JJTEUtU1lOQy0wMDAxLTAuMS4wLmdobW9kCjN6R1JZZitSbzI1cVRESkNUMnJrVXFWUlUyZ3B3L2lIQmhrOXZaTGc3T2x1REdNUUZrK2M4WWs4bE9Zb3NuSTNoNmRBRmlCekh0dkNNN1pKR2k4ZkFRPT0K

View file

@ -1,7 +0,0 @@
{
"schema": "hololake.module-package/v1",
"manifest": {
"moduleNumber": "HLP-MOD-OFFICIAL-WEB-NOVEL-DELIVERY-0001", "registrationClass": "OFFICIAL_LIGHTHOUSE", "displayName": "高级版本与交付", "version": "0.1.0", "minimumHostVersion": "0.5.0", "adapter": "web-novel-workbench-v1", "contentDigest": "1dbc2ee8c1bc4c361009a8db9c93774c1ac7f5a06c02a5d4bc5b39754a0496fb", "permissions": ["WEB_NOVEL_CHAPTER_VERSION_RESTORE", "WEB_NOVEL_DELIVERY_EXPORT_WRITE_FILE"], "userDataSchema": "hololake.module-data/web-novel-delivery/v1", "selfTest": { "kind": "DECLARATIVE_SCHEMA_V1", "expectedContentDigest": "1dbc2ee8c1bc4c361009a8db9c93774c1ac7f5a06c02a5d4bc5b39754a0496fb" }
},
"payload": { "entry": "web-novel-delivery", "adapterConfig": { "baseModule": "HLP-MOD-OFFICIAL-WEB-NOVEL-WORKBENCH-0001", "capabilities": ["CHAPTER_VERSION_RESTORE", "TXT_EXPORT", "DOCX_EXPORT", "EPUB_EXPORT", "JSON_EXPORT"], "dataBoundary": "CURRENT_AUTHENTICATED_ACCOUNT_LOCAL", "humanConfirmationRequiredForRestore": true, "persistent": true } }
}

View file

@ -1 +0,0 @@
dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVReHJHQ2hTVDYvRTBrb01WSENhMmIvUGxyRnozY2k0aTVaQ1lFL3VLdWllSURCak54VWwrM2h1QXM4Sk10ZGc0Qm1EYzhhUVJVTFB6OXRqLzc5cSt3U0NleS9WR2owN3djPQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNzg3MDgxNTE1CWZpbGU6SExQLU1PRC1PRkZJQ0lBTC1XRUItTk9WRUwtREVMSVZFUlktMDAwMS0wLjEuMC5naG1vZApQWWFETDdISGFvbGdtVVZCK0V5VUVqNlFvSGRmQWVuY3dSRS9ZWm1UVHhCS0U4bHNCQzl0RFFtbDZEUXREWnp6MjQxbHF1bVgwS0NhS1ZBUGZxd3ZBUT09Cg==

View file

@ -1,7 +0,0 @@
{
"schema": "hololake.module-package/v1",
"manifest": {
"moduleNumber": "HLP-MOD-OFFICIAL-WEB-NOVEL-GRID-0001", "registrationClass": "OFFICIAL_LIGHTHOUSE", "displayName": "多维情节表与情节板", "version": "0.1.0", "minimumHostVersion": "0.5.0", "adapter": "web-novel-workbench-v1", "contentDigest": "61bf4969e97003f203af5e0b38bb37024847cb574a3ac09025f10586061805ce", "permissions": ["WEB_NOVEL_FIELD_DEFINITION_WRITE", "WEB_NOVEL_FIELD_VALUE_WRITE"], "userDataSchema": "hololake.module-data/web-novel-grid/v1", "selfTest": { "kind": "DECLARATIVE_SCHEMA_V1", "expectedContentDigest": "61bf4969e97003f203af5e0b38bb37024847cb574a3ac09025f10586061805ce" }
},
"payload": { "entry": "web-novel-grid", "adapterConfig": { "baseModule": "HLP-MOD-OFFICIAL-WEB-NOVEL-WORKBENCH-0001", "capabilities": ["FIELD_DEFINITION_WRITE", "FIELD_VALUE_WRITE"], "dataBoundary": "CURRENT_AUTHENTICATED_ACCOUNT_LOCAL", "persistent": true } }
}

View file

@ -1 +0,0 @@
dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVReHJHQ2hTVDYvRTBuWjBmYWczdEg3QXByZS9RaEY4N2x6RXN1WVY2ZEJGSmdSYmZyTGUrclVvYm1sd0t4REhOY1dVdW1EeGtramhqeSs4YU9nQVNBbkdCWVlEYmNteXdzPQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNzg3MDgxNTE1CWZpbGU6SExQLU1PRC1PRkZJQ0lBTC1XRUItTk9WRUwtR1JJRC0wMDAxLTAuMS4wLmdobW9kCkJLczNMbmpqYzVTdXQ5RklHMXdlMWpDcE9tRnlBYWlPcUJkMzZQbFlRSzFYVDFtNmYrZ1htN1VqZWJkaktUWmZ5VVZvczZ4YmVrWHRuQ3lNOXU0SkFBPT0K

View file

@ -1,7 +0,0 @@
{
"schema": "hololake.module-package/v1",
"manifest": {
"moduleNumber": "HLP-MOD-OFFICIAL-WEB-NOVEL-OUTLINE-0001", "registrationClass": "OFFICIAL_LIGHTHOUSE", "displayName": "作品结构与大纲追踪", "version": "0.1.0", "minimumHostVersion": "0.5.0", "adapter": "web-novel-workbench-v1", "contentDigest": "7da54b0220940a8a19351ff9bf3cd177c93fc25c533329a60926b8ea245dafbe", "permissions": ["WEB_NOVEL_SCENE_WRITE", "WEB_NOVEL_BEAT_WRITE"], "userDataSchema": "hololake.module-data/web-novel-outline/v1", "selfTest": { "kind": "DECLARATIVE_SCHEMA_V1", "expectedContentDigest": "7da54b0220940a8a19351ff9bf3cd177c93fc25c533329a60926b8ea245dafbe" }
},
"payload": { "entry": "web-novel-outline", "adapterConfig": { "baseModule": "HLP-MOD-OFFICIAL-WEB-NOVEL-WORKBENCH-0001", "capabilities": ["SCENE_WRITE", "BEAT_WRITE"], "dataBoundary": "CURRENT_AUTHENTICATED_ACCOUNT_LOCAL", "persistent": true } }
}

View file

@ -1 +0,0 @@
dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVReHJHQ2hTVDYvRTNUYVhwVTlzdWt6VkVQYTUyanB6UFlYeU5BdW1qN0xuM1haWjlCYUU3UFlMRTdPZG90YVZvNGFyaVo4UHY0THowUWlPVzIzemYrQWNZbDFvRVd5NndrPQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNzg3MDgxNTE2CWZpbGU6SExQLU1PRC1PRkZJQ0lBTC1XRUItTk9WRUwtT1VUTElORS0wMDAxLTAuMS4wLmdobW9kCkZob1VsQlkwZFRyZXI2ck1OckhUc2ZqaHVJOWhSQnIraUFRSEllU3BxRlc3UStFekJRZDFMZFpmZlBvK09jTFJ6cERpcVl2M2N2emIvS0ptdnRrTkR3PT0K

View file

@ -1,7 +0,0 @@
{
"schema": "hololake.module-package/v1",
"manifest": {
"moduleNumber": "HLP-MOD-OFFICIAL-WEB-NOVEL-STORYWORLD-0001", "registrationClass": "OFFICIAL_LIGHTHOUSE", "displayName": "时间线与故事资料库", "version": "0.1.0", "minimumHostVersion": "0.5.0", "adapter": "web-novel-workbench-v1", "contentDigest": "9627949a975ce489dde80de52c538a57bb73b87e31ddb1e5efb48cee53922b71", "permissions": ["WEB_NOVEL_TIMELINE_WRITE", "WEB_NOVEL_SCENE_ENTITY_LINK_WRITE"], "userDataSchema": "hololake.module-data/web-novel-storyworld/v1", "selfTest": { "kind": "DECLARATIVE_SCHEMA_V1", "expectedContentDigest": "9627949a975ce489dde80de52c538a57bb73b87e31ddb1e5efb48cee53922b71" }
},
"payload": { "entry": "web-novel-storyworld", "adapterConfig": { "baseModule": "HLP-MOD-OFFICIAL-WEB-NOVEL-WORKBENCH-0001", "capabilities": ["TIMELINE_WRITE", "SCENE_ENTITY_LINK_WRITE"], "dataBoundary": "CURRENT_AUTHENTICATED_ACCOUNT_LOCAL", "persistent": true } }
}

View file

@ -1 +0,0 @@
dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVReHJHQ2hTVDYvRXpuRmFPWjJUSDVpSmQzQXl0aVF3N0xhRkRvVWhLalVtcDBnRFprNnpOUEdCWS9CTURlUHBrYWkyRG9MUFZwVEtHc0w5ZUltRlNUVlZBcm1vU2VnUlFZPQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNzg3MDgxNTE2CWZpbGU6SExQLU1PRC1PRkZJQ0lBTC1XRUItTk9WRUwtU1RPUllXT1JMRC0wMDAxLTAuMS4wLmdobW9kCnBzQkJYaTV6NFR2Vnk3NUdpK3JSQnJTUzhSd2hxUWdmM0UrcVZuN0VuS0JOc1lYclY5Y3FBbVJldVM1Y2FGamNtT3NiU0NsaThMRE5qT3VvTXJUUUJ3PT0K

View file

@ -1,26 +0,0 @@
{
"schema": "hololake.module-package/v1",
"manifest": {
"moduleNumber": "HLP-MOD-OFFICIAL-WEB-NOVEL-WORKBENCH-0001",
"registrationClass": "OFFICIAL_LIGHTHOUSE",
"displayName": "网文作者工作台",
"version": "0.1.0",
"minimumHostVersion": "0.5.0",
"adapter": "web-novel-workbench-v1",
"contentDigest": "df03a94751cd50ea26e2fc0f68ac21bd55e62f2034ff83c562a840c8aab72d2e",
"permissions": ["WEB_NOVEL_WORKSPACE_READ", "WEB_NOVEL_WORKSPACE_WRITE", "WEB_NOVEL_IMPORT_READ_FILE", "WEB_NOVEL_AUTHOR_ACTIVITY_WRITE", "WEB_NOVEL_STORY_BIBLE_WRITE", "WEB_NOVEL_EDITORIAL_WORKFLOW_WRITE", "WEB_NOVEL_OPERATIONS_WRITE", "WEB_NOVEL_CHECKPOINT_WRITE"],
"userDataSchema": "hololake.module-data/web-novel-workbench/v1",
"selfTest": { "kind": "DECLARATIVE_SCHEMA_V1", "expectedContentDigest": "df03a94751cd50ea26e2fc0f68ac21bd55e62f2034ff83c562a840c8aab72d2e" }
},
"payload": {
"entry": "web-novel-workspace",
"adapterConfig": {
"dataBoundary": "CURRENT_AUTHENTICATED_ACCOUNT_LOCAL",
"legacyDataPolicy": "READ_IN_PLACE_NO_DESTRUCTIVE_MIGRATION",
"workspaceFeatures": ["WORKS", "VOLUMES", "CHAPTERS", "ENTITIES", "EDITORIAL", "OPERATIONS", "CHECKPOINTS", "IMPORT"],
"advancedModules": ["HLP-MOD-OFFICIAL-WEB-NOVEL-OUTLINE-0001", "HLP-MOD-OFFICIAL-WEB-NOVEL-GRID-0001", "HLP-MOD-OFFICIAL-WEB-NOVEL-STORYWORLD-0001", "HLP-MOD-OFFICIAL-WEB-NOVEL-DELIVERY-0001"],
"thirdPartyPublishDefault": "DENY",
"persistent": true
}
}
}

View file

@ -1 +0,0 @@
dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVReHJHQ2hTVDYvRTZyTUlUYWdZZXk3bFhDRTJBWElWMkVEQXZHa3dSWDFXSFJ2QjduVFk1bzFLUk5kOVFQamIwU2w1L3FzOWtibm9Kblg2NWJLWFdVeEtEbDNzTEltVmdFPQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNzg3MDgxNTE3CWZpbGU6SExQLU1PRC1PRkZJQ0lBTC1XRUItTk9WRUwtV09SS0JFTkNILTAwMDEtMC4xLjAuZ2htb2QKV0VqV3B4cFNLRng2UUcrNXlYZjY5SytERk14YTNyRkM1bldzUXo5RWpzMU0vRmVJWldvTGhmbmExcFhmSGZiWTFreElreGU2UHVsaXVhK0ZXZnVyQ2c9PQo=

View file

@ -1,6 +0,0 @@
# Web novel 0.4.1 lifecycle fixtures
These four JSON files preserve the exact bytes used by the donor's lifecycle regression tests.
They are not bundled by `module_package_runtime`, are not registered in numbered IPC, and are not
production module identities. HoloLake 0.5.x uses the signed `HLP-MOD-OFFICIAL-WEB-NOVEL-*`
packages in `fixtures/module-packages` as its only runtime authority.

View file

@ -1,7 +1,7 @@
{
"schema": "hololake.native-desktop-foundation/v1",
"record_id": "HLP-NATIVE-DESKTOP-FOUNDATION-001",
"state": "LOCAL_INSTALLED_ACCEPTANCE_PASSED_FOR_PERSONAL_KNOWLEDGE_AND_CODE_SLICES",
"state": "LOCAL_INSTALLED_ACCEPTANCE_PASSED_FOR_PERSONAL_KNOWLEDGE_CODE_AND_EDUCATION_WORKSPACE_SLICES",
"canonical_shell": "TAURI_V2_RUST_REACT",
"candidate_role": "INSTALLED_LOCAL_ACCEPTANCE_CANDIDATE_NOT_SEPARATE_PRODUCT_LINE",
"parallel_product_line_created": false,
@ -36,6 +36,18 @@
"personal_channel_human_projection_integrated": true,
"personal_channel_default_task_form_exposed": false,
"personal_channel_installed_runtime_acceptance": true,
"persona_channel_body_contract": "contracts/persona-channel-body.json",
"persona_channel_body_is_persona_body_not_simple_feature": true,
"persona_channel_multiple_personas_supported": true,
"persona_channel_thirty_day_reversible_trial_runtime_implemented": true,
"persona_channel_language_contract_gate_implemented": true,
"persona_channel_unsigned_expiry_state": "CONTRACT_REQUIRED_CHANNEL_STOPPED_NO_SILENT_IRREVERSIBLE_ACTIVATION",
"persona_channel_early_contract_immediate_activation_supported": true,
"persona_channel_immutable_millisecond_language_hash_chain_implemented": true,
"persona_channel_active_persona_update_or_delete_allowed": false,
"persona_channel_official_read_access": false,
"channel_growth_projection_contract": "contracts/channel-growth-model.json",
"channel_growth_is_rebuildable_projection_not_persona_body": true,
"knowledge_workspace_contract": "contracts/knowledge-workspace.json",
"knowledge_workspace_native_source_implemented": true,
"knowledge_workspace_tree_read_search_and_folder_import_implemented": true,
@ -59,8 +71,6 @@
"installed_desktop_path": "/Users/bingshuolingdianyuanhe/Desktop/HoloLake.app",
"old_desktop_apps_recoverably_archived": true,
"public_developer_id_and_notarized_acceptance": false,
"local_developer_id_signed_0_5_0_installed_acceptance": true,
"numbered_root_installed_acceptance_receipt": "audit/hololake-0.5.0-numbered-root-installed-acceptance-20260818.json",
"stage_one_implementation_order": [
"PERSONAL_CHANNEL_IDENTITY_TASK_EVENT_RECEIPT_KERNEL",
"KNOWLEDGE_TREE_PAGE_SEARCH_AND_LOCAL_PERSISTENCE",
@ -101,11 +111,8 @@
"automatic_restart_allowed": false,
"private_signing_material_allowed_in_source": false,
"donor_audit_record": "audit/donor-audit.json",
"donor_audit_complete": true,
"donor_audit_complete": false,
"donor_source_copying_allowed": false,
"module_donor_admission_registry": "contracts/module-donor-admission-registry.json",
"module_donor_bulk_merge_allowed": false,
"module_donor_one_candidate_per_admission_cycle": true,
"stage_one_product_contract": "contracts/stage-one-platform.json",
"local_development_bridge_contract": "contracts/local-development-bridge.json",
"account_single_writer_kernel_implemented": true,
@ -133,7 +140,7 @@
"pncc_jd_live_server_projection_repository_content_exposed": false,
"pncc_jd_live_server_projection_write_authority": false,
"pncc_jd_live_server_projection_carrier_state": "UNBOUND_EVIDENCE_REQUIRED",
"installed_local_product_version": "0.5.0",
"installed_local_product_version": "0.4.1",
"pncc_authenticated_direct_broker_integration_implemented": true,
"pncc_human_mount_registration_implemented": true,
"pncc_human_mount_registration_gate": "SATISFIED_NATIVE_FILE_PICKER_EXACT_CONFIRMATION",
@ -147,6 +154,30 @@
"vendor_adapter_matrix_required": false,
"first_public_product": "GH-AIOS_GENERAL_AI_OPERATING_PLATFORM",
"visible_five_domain_navigation_in_stage_one": true,
"subdomain_industry_routing_contract": "contracts/subdomain-industry-routing.json",
"subdomain_industry_status_source_integrated": true,
"industry_entry_domain": "BRANCH_DOMAIN",
"zero_domain_industry_entry": false,
"education_initialization_channel_source_integrated": true,
"education_workspace_contract": "contracts/education-workspace.json",
"education_native_document_module_implemented": true,
"education_native_table_module_implemented": true,
"education_native_data_cleanup_module_implemented": true,
"education_native_manual_automation_module_implemented": true,
"education_native_composition_module_implemented": true,
"education_workspace_authenticated_account_storage": true,
"education_workspace_restart_readback_rust_tested": true,
"education_document_templates_and_title_filter_source_integrated": true,
"education_table_filter_sort_grid_card_views_and_bulk_paste_source_integrated": true,
"education_open_source_donor_assessment": "contracts/education-open-source-donor-assessment.json",
"education_data_cleanup_preview_and_human_confirmed_save_source_integrated": true,
"education_manual_automation_preview_confirm_revision_lock_and_receipt_source_integrated": true,
"education_native_composition_real_knowledge_typed_dag_and_five_projections_source_integrated": true,
"education_workspace_installed_runtime_acceptance": true,
"education_workspace_ui_route_acceptance": "FIFTH_SLICE_MAIN_WORLD_BRANCH_DOMAIN_EDUCATION_FIVE_NATIVE_MODULES_REAL_129_ROW_FIVE_VIEW_COMPOSITION_AND_RECOMPOSITION_ACCEPTED_READ_ONLY",
"education_workspace_installed_binary_sha256": "4330a31afe654a54e9dbb5f3f180984a5040933d457899763f50b2cc5e54c06d",
"education_native_modules_installed": 5,
"education_open_source_modules_installed": 0,
"donors": [
{
"path": "../hololake-platform",

View file

@ -1,4 +0,0 @@
build/
*.xcuserstate
xcuserdata/

View file

@ -1,16 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>method</key>
<string>debugging</string>
<key>signingStyle</key>
<string>automatic</string>
<key>teamID</key>
<string>825A9L3G7Q</string>
<key>stripSwiftSymbols</key>
<true/>
<key>uploadSymbols</key>
<false/>
</dict>
</plist>

View file

@ -1,56 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleDisplayName</key>
<string>HoloLake</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>$(MARKETING_VERSION)</string>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>com.guanghulab.hololake.pair</string>
<key>CFBundleURLSchemes</key>
<array>
<string>hololake</string>
</array>
</dict>
</array>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
<key>LSApplicationCategoryType</key>
<string>public.app-category.productivity</string>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsLocalNetworking</key>
<true/>
</dict>
<key>NSLocalNetworkUsageDescription</key>
<string>HoloLake 仅在你明确配对后,通过同一局域网连接你的电脑端频道。</string>
<key>UIApplicationSupportsIndirectInputEvents</key>
<true/>
<key>UILaunchScreen</key>
<dict/>
<key>UIRequiresFullScreen</key>
<true/>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
</array>
</dict>
</plist>

View file

@ -1,22 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
</dict>
</plist>

View file

@ -1,425 +0,0 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 77;
objects = {
/* Begin PBXBuildFile section */
147588FBBE65B668142D5DBE /* HoloLakeMobileTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7BBF45AEC03B7B5DE76DE7DA /* HoloLakeMobileTests.swift */; };
149652D6C6336752E39CEF9D /* HoloLakeKeychain.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75A889326BDEACBDB756B15A /* HoloLakeKeychain.swift */; };
4C8E5CF9FBFC541E3724C695 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5DF66BC64D4DCD3BF0583C4 /* ContentView.swift */; };
4FD7821997D8E90E6594FC23 /* HoloLakeMobileApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6DCE2A5796B15DAC37985182 /* HoloLakeMobileApp.swift */; };
9BC7CC6D8BC355D731943912 /* HoloLakeDesign.swift in Sources */ = {isa = PBXBuildFile; fileRef = 39A48AB789379757C66C6884 /* HoloLakeDesign.swift */; };
C0E93C7456C0A3BE8BA595FC /* HoloLakeSyncClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = B91D61B90D609EF17397D193 /* HoloLakeSyncClient.swift */; };
FFEEE7FC9ED4ECCD91A96AF1 /* HoloLakeModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 001F5647617271E7611365B1 /* HoloLakeModels.swift */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
CD999C930B8B85FE1C3D884D /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 7BB68CAE65448CB9319F9FE1 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 306917F839BF1A325E2C4CF4;
remoteInfo = HoloLakeMobile;
};
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
001F5647617271E7611365B1 /* HoloLakeModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HoloLakeModels.swift; sourceTree = "<group>"; };
39A48AB789379757C66C6884 /* HoloLakeDesign.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HoloLakeDesign.swift; sourceTree = "<group>"; };
6DCE2A5796B15DAC37985182 /* HoloLakeMobileApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HoloLakeMobileApp.swift; sourceTree = "<group>"; };
75A889326BDEACBDB756B15A /* HoloLakeKeychain.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HoloLakeKeychain.swift; sourceTree = "<group>"; };
7BBF45AEC03B7B5DE76DE7DA /* HoloLakeMobileTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HoloLakeMobileTests.swift; sourceTree = "<group>"; };
AAB8B15F447567F18DF8DA22 /* HoloLakeMobileTests.xctest */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.cfbundle; path = HoloLakeMobileTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
B91D61B90D609EF17397D193 /* HoloLakeSyncClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HoloLakeSyncClient.swift; sourceTree = "<group>"; };
D5DF66BC64D4DCD3BF0583C4 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = "<group>"; };
F674C2EA817D94D8089E46A6 /* HoloLakeMobile.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = HoloLakeMobile.app; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */
/* Begin PBXGroup section */
14AB215583F1F3DFF867AD25 /* Sources */ = {
isa = PBXGroup;
children = (
D5DF66BC64D4DCD3BF0583C4 /* ContentView.swift */,
39A48AB789379757C66C6884 /* HoloLakeDesign.swift */,
75A889326BDEACBDB756B15A /* HoloLakeKeychain.swift */,
6DCE2A5796B15DAC37985182 /* HoloLakeMobileApp.swift */,
001F5647617271E7611365B1 /* HoloLakeModels.swift */,
B91D61B90D609EF17397D193 /* HoloLakeSyncClient.swift */,
);
path = Sources;
sourceTree = "<group>";
};
57FD470E035A4BE1AC23C789 = {
isa = PBXGroup;
children = (
14AB215583F1F3DFF867AD25 /* Sources */,
65C6F102E3F59F8DEC7CF977 /* Tests */,
C1AA7BA4A57964238429B9FC /* Products */,
);
sourceTree = "<group>";
};
65C6F102E3F59F8DEC7CF977 /* Tests */ = {
isa = PBXGroup;
children = (
7BBF45AEC03B7B5DE76DE7DA /* HoloLakeMobileTests.swift */,
);
path = Tests;
sourceTree = "<group>";
};
C1AA7BA4A57964238429B9FC /* Products */ = {
isa = PBXGroup;
children = (
F674C2EA817D94D8089E46A6 /* HoloLakeMobile.app */,
AAB8B15F447567F18DF8DA22 /* HoloLakeMobileTests.xctest */,
);
name = Products;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
306917F839BF1A325E2C4CF4 /* HoloLakeMobile */ = {
isa = PBXNativeTarget;
buildConfigurationList = 821BFCD605046D5BD179550C /* Build configuration list for PBXNativeTarget "HoloLakeMobile" */;
buildPhases = (
EF1823B21F5FD988A9F1C68B /* Sources */,
);
buildRules = (
);
dependencies = (
);
name = HoloLakeMobile;
packageProductDependencies = (
);
productName = HoloLakeMobile;
productReference = F674C2EA817D94D8089E46A6 /* HoloLakeMobile.app */;
productType = "com.apple.product-type.application";
};
9F8DF7CBFC2D6315E6807301 /* HoloLakeMobileTests */ = {
isa = PBXNativeTarget;
buildConfigurationList = 94843BB695F4BFC5D7BD814C /* Build configuration list for PBXNativeTarget "HoloLakeMobileTests" */;
buildPhases = (
C9F5955F3342913B35B01034 /* Sources */,
);
buildRules = (
);
dependencies = (
43C074DF3E4135062FD9F2D5 /* PBXTargetDependency */,
);
name = HoloLakeMobileTests;
packageProductDependencies = (
);
productName = HoloLakeMobileTests;
productReference = AAB8B15F447567F18DF8DA22 /* HoloLakeMobileTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
7BB68CAE65448CB9319F9FE1 /* Project object */ = {
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1430;
TargetAttributes = {
306917F839BF1A325E2C4CF4 = {
DevelopmentTeam = 825A9L3G7Q;
ProvisioningStyle = Automatic;
};
9F8DF7CBFC2D6315E6807301 = {
DevelopmentTeam = 825A9L3G7Q;
ProvisioningStyle = Automatic;
};
};
};
buildConfigurationList = 9D0C9B96A22462DAABC1E8F8 /* Build configuration list for PBXProject "HoloLakeMobile" */;
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
Base,
en,
);
mainGroup = 57FD470E035A4BE1AC23C789;
minimizedProjectReferenceProxies = 1;
preferredProjectObjectVersion = 77;
productRefGroup = C1AA7BA4A57964238429B9FC /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
306917F839BF1A325E2C4CF4 /* HoloLakeMobile */,
9F8DF7CBFC2D6315E6807301 /* HoloLakeMobileTests */,
);
};
/* End PBXProject section */
/* Begin PBXSourcesBuildPhase section */
C9F5955F3342913B35B01034 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
147588FBBE65B668142D5DBE /* HoloLakeMobileTests.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
EF1823B21F5FD988A9F1C68B /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
4C8E5CF9FBFC541E3724C695 /* ContentView.swift in Sources */,
9BC7CC6D8BC355D731943912 /* HoloLakeDesign.swift in Sources */,
149652D6C6336752E39CEF9D /* HoloLakeKeychain.swift in Sources */,
4FD7821997D8E90E6594FC23 /* HoloLakeMobileApp.swift in Sources */,
FFEEE7FC9ED4ECCD91A96AF1 /* HoloLakeModels.swift in Sources */,
C0E93C7456C0A3BE8BA595FC /* HoloLakeSyncClient.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
43C074DF3E4135062FD9F2D5 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 306917F839BF1A325E2C4CF4 /* HoloLakeMobile */;
targetProxy = CD999C930B8B85FE1C3D884D /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin XCBuildConfiguration section */
41EDE5121626CC1CCE382706 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_STYLE = Automatic;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_TEAM = 825A9L3G7Q;
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 17.0;
MARKETING_VERSION = 0.5.0;
MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = iphoneos;
SUPPORTS_MACCATALYST = NO;
SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_OPTIMIZATION_LEVEL = "-O";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = 1;
};
name = Release;
};
4F5C6B6543A0A3082363F109 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_STYLE = Automatic;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1;
DEBUG_INFORMATION_FORMAT = dwarf;
DEVELOPMENT_TEAM = 825A9L3G7Q;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"$(inherited)",
"DEBUG=1",
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 17.0;
MARKETING_VERSION = 0.5.0;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
ONLY_ACTIVE_ARCH = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = iphoneos;
SUPPORTS_MACCATALYST = NO;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = 1;
};
name = Debug;
};
512CB348BCA8C1688C5D794E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
INFOPLIST_FILE = "Generated/HoloLakeMobileTests-Info.plist";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.guanghulab.hololake.tests;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/HoloLake.app/HoloLake";
};
name = Release;
};
A44510E6B199DFF6BD5BC1EF /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
INFOPLIST_FILE = "Generated/HoloLakeMobileTests-Info.plist";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.guanghulab.hololake.tests;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/HoloLake.app/HoloLake";
};
name = Debug;
};
B82D688E4449B0C6DC27D25E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_IDENTITY = "iPhone Developer";
INFOPLIST_FILE = "Generated/HoloLakeMobile-Info.plist";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.guanghulab.hololake;
PRODUCT_MODULE_NAME = HoloLakeMobile;
PRODUCT_NAME = HoloLake;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Release;
};
BECD79B877979A2CD86E7D9C /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_IDENTITY = "iPhone Developer";
INFOPLIST_FILE = "Generated/HoloLakeMobile-Info.plist";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.guanghulab.hololake;
PRODUCT_MODULE_NAME = HoloLakeMobile;
PRODUCT_NAME = HoloLake;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
821BFCD605046D5BD179550C /* Build configuration list for PBXNativeTarget "HoloLakeMobile" */ = {
isa = XCConfigurationList;
buildConfigurations = (
BECD79B877979A2CD86E7D9C /* Debug */,
B82D688E4449B0C6DC27D25E /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug;
};
94843BB695F4BFC5D7BD814C /* Build configuration list for PBXNativeTarget "HoloLakeMobileTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
A44510E6B199DFF6BD5BC1EF /* Debug */,
512CB348BCA8C1688C5D794E /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug;
};
9D0C9B96A22462DAABC1E8F8 /* Build configuration list for PBXProject "HoloLakeMobile" */ = {
isa = XCConfigurationList;
buildConfigurations = (
4F5C6B6543A0A3082363F109 /* Debug */,
41EDE5121626CC1CCE382706 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug;
};
/* End XCConfigurationList section */
};
rootObject = 7BB68CAE65448CB9319F9FE1 /* Project object */;
}

View file

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:">
</FileRef>
</Workspace>

View file

@ -1,106 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1430"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES"
runPostActionsOnFailure = "NO">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "306917F839BF1A325E2C4CF4"
BuildableName = "HoloLakeMobile.app"
BlueprintName = "HoloLakeMobile"
ReferencedContainer = "container:HoloLakeMobile.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
onlyGenerateCoverageForSpecifiedTargets = "NO">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "306917F839BF1A325E2C4CF4"
BuildableName = "HoloLakeMobile.app"
BlueprintName = "HoloLakeMobile"
ReferencedContainer = "container:HoloLakeMobile.xcodeproj">
</BuildableReference>
</MacroExpansion>
<Testables>
<TestableReference
skipped = "NO"
parallelizable = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "9F8DF7CBFC2D6315E6807301"
BuildableName = "HoloLakeMobileTests.xctest"
BlueprintName = "HoloLakeMobileTests"
ReferencedContainer = "container:HoloLakeMobile.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
<CommandLineArguments>
</CommandLineArguments>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "306917F839BF1A325E2C4CF4"
BuildableName = "HoloLakeMobile.app"
BlueprintName = "HoloLakeMobile"
ReferencedContainer = "container:HoloLakeMobile.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<CommandLineArguments>
</CommandLineArguments>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "306917F839BF1A325E2C4CF4"
BuildableName = "HoloLakeMobile.app"
BlueprintName = "HoloLakeMobile"
ReferencedContainer = "container:HoloLakeMobile.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<CommandLineArguments>
</CommandLineArguments>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View file

@ -1,203 +0,0 @@
import SwiftUI
import UIKit
struct ContentView: View {
@EnvironmentObject private var client: HoloLakeSyncClient
@State private var pairingText = ""
@State private var captureTitle = ""
@State private var captureBody = ""
var body: some View {
NavigationStack {
ZStack {
LinearGradient(
colors: [HoloLakeDesign.deep, HoloLakeDesign.lake, HoloLakeDesign.violet.opacity(0.78)],
startPoint: .topLeading,
endPoint: .bottomTrailing
)
.ignoresSafeArea()
ScrollView {
VStack(spacing: 16) {
header
if client.session == nil { pairingCard } else { dashboard }
boundaryCard
}
.padding(.horizontal, 18)
.padding(.vertical, 16)
}
}
.toolbar(.hidden, for: .navigationBar)
.alert("HoloLake", isPresented: Binding(
get: { client.errorText != nil },
set: { if !$0 { client.errorText = nil } }
)) {
Button("知道了", role: .cancel) { client.errorText = nil }
} message: {
Text(client.errorText ?? "")
}
}
.preferredColorScheme(.dark)
}
private var header: some View {
HStack(alignment: .center) {
VStack(alignment: .leading, spacing: 5) {
Text("HoloLake").font(.title.weight(.semibold)).tracking(2)
Text("同一频道 · iPhone 轻入口")
.font(.subheadline)
.foregroundStyle(HoloLakeDesign.muted)
}
Spacer()
Circle()
.fill(client.session == nil ? HoloLakeDesign.gold : HoloLakeDesign.mint)
.frame(width: 11, height: 11)
.shadow(color: client.session == nil ? HoloLakeDesign.gold : HoloLakeDesign.mint, radius: 8)
}
.foregroundStyle(HoloLakeDesign.pearl)
.padding(.top, 4)
}
private var pairingCard: some View {
LakeCard {
VStack(alignment: .leading, spacing: 14) {
Text("连接电脑端").font(.title3.weight(.semibold))
Text("先在电脑端打开“多端同步”,再扫描配对码或粘贴配对链接。配对密钥只保存在这台 iPhone 的钥匙串。")
.font(.subheadline)
.foregroundStyle(HoloLakeDesign.muted)
TextField("hololake://pair?…", text: $pairingText, axis: .vertical)
.textInputAutocapitalization(.never)
.autocorrectionDisabled()
.padding(14)
.background(.black.opacity(0.22), in: RoundedRectangle(cornerRadius: 16))
HStack {
Button("从剪贴板读取") {
pairingText = UIPasteboard.general.string ?? ""
}
.buttonStyle(.bordered)
Button("校验并配对") {
Task { await client.pair(from: pairingText) }
}
.buttonStyle(.borderedProminent)
.tint(HoloLakeDesign.gold)
.foregroundStyle(HoloLakeDesign.deep)
.disabled(pairingText.isEmpty || client.isWorking)
}
}
}
.foregroundStyle(HoloLakeDesign.pearl)
}
private var dashboard: some View {
VStack(spacing: 16) {
LakeCard {
VStack(alignment: .leading, spacing: 14) {
HStack {
VStack(alignment: .leading, spacing: 4) {
Text(client.session?.desktopName ?? "电脑端")
.font(.title3.weight(.semibold))
Text(client.stateText)
.font(.caption)
.foregroundStyle(HoloLakeDesign.muted)
}
Spacer()
Button {
Task { await client.sync() }
} label: {
if client.isWorking {
ProgressView()
} else {
Label("同步", systemImage: "arrow.triangle.2.circlepath")
}
}
.buttonStyle(.borderedProminent)
.tint(HoloLakeDesign.mint)
.foregroundStyle(HoloLakeDesign.deep)
.disabled(client.isWorking)
}
if let snapshot = client.snapshot {
HStack(spacing: 10) {
MetricTile(label: "作品", value: "\(snapshot.webNovel.workCount)")
MetricTile(label: "章节", value: "\(snapshot.webNovel.chapterCount)")
MetricTile(label: "教育表", value: "\(snapshot.education.activeTableCount)")
}
} else {
Text("保持静止;只有你点击同步时才会连接电脑。")
.font(.subheadline)
.foregroundStyle(HoloLakeDesign.muted)
}
}
}
LakeCard {
VStack(alignment: .leading, spacing: 12) {
Text("随手记回频道").font(.headline)
TextField("标题(可选)", text: $captureTitle)
.padding(12)
.background(.black.opacity(0.2), in: RoundedRectangle(cornerRadius: 14))
TextField("正文", text: $captureBody, axis: .vertical)
.lineLimit(4...10)
.padding(12)
.background(.black.opacity(0.2), in: RoundedRectangle(cornerRadius: 14))
Button("写入电脑端收件箱") {
let title = captureTitle
let body = captureBody
Task {
await client.sync(captureTitle: title, captureBody: body)
if client.errorText == nil {
captureTitle = ""
captureBody = ""
}
}
}
.buttonStyle(.bordered)
.disabled(captureBody.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty || client.isWorking)
}
}
if let works = client.snapshot?.webNovel.works, !works.isEmpty {
LakeCard {
VStack(alignment: .leading, spacing: 12) {
Text("最近作品").font(.headline)
ForEach(works.prefix(5)) { work in
HStack {
Text(work.title).lineLimit(1)
Spacer()
Text(work.status)
.font(.caption)
.foregroundStyle(HoloLakeDesign.muted)
}
if work.id != works.prefix(5).last?.id {
Divider().overlay(.white.opacity(0.12))
}
}
}
}
}
Button("解除本机配对", role: .destructive) {
client.disconnect()
}
.font(.footnote)
}
.foregroundStyle(HoloLakeDesign.pearl)
}
private var boundaryCard: some View {
VStack(alignment: .leading, spacing: 6) {
Text("HLP-IOS-CLIENT-001")
.font(.caption2.monospaced())
.foregroundStyle(HoloLakeDesign.gold)
Text("手机是同一频道的远程身体入口,不复制电脑桌面,不在电脑离线时执行人格或行业任务。")
.font(.caption)
.foregroundStyle(HoloLakeDesign.muted)
}
.frame(maxWidth: .infinity, alignment: .leading)
.padding(.horizontal, 4)
}
}

View file

@ -1,42 +0,0 @@
import SwiftUI
enum HoloLakeDesign {
static let deep = Color(red: 0.025, green: 0.045, blue: 0.11)
static let lake = Color(red: 0.08, green: 0.14, blue: 0.32)
static let violet = Color(red: 0.34, green: 0.19, blue: 0.52)
static let pearl = Color(red: 0.95, green: 0.96, blue: 1)
static let muted = Color(red: 0.62, green: 0.66, blue: 0.78)
static let gold = Color(red: 0.96, green: 0.87, blue: 0.62)
static let mint = Color(red: 0.43, green: 0.93, blue: 0.78)
}
struct LakeCard<Content: View>: View {
@ViewBuilder let content: Content
var body: some View {
content
.padding(18)
.frame(maxWidth: .infinity, alignment: .leading)
.background(.white.opacity(0.075), in: RoundedRectangle(cornerRadius: 24))
.overlay {
RoundedRectangle(cornerRadius: 24)
.stroke(.white.opacity(0.14), lineWidth: 1)
}
}
}
struct MetricTile: View {
let label: String
let value: String
var body: some View {
VStack(alignment: .leading, spacing: 6) {
Text(label).font(.caption).foregroundStyle(HoloLakeDesign.muted)
Text(value).font(.title2.weight(.semibold)).foregroundStyle(HoloLakeDesign.pearl)
}
.frame(maxWidth: .infinity, alignment: .leading)
.padding(14)
.background(.white.opacity(0.055), in: RoundedRectangle(cornerRadius: 18))
}
}

View file

@ -1,59 +0,0 @@
import Foundation
import Security
enum HoloLakeKeychain {
private static let service = "com.guanghulab.hololake.mobile-sync"
private static let account = "HLP-IOS-CLIENT-001"
static func load() throws -> StoredSession? {
let query: [String: Any] = [
kSecClass as String: kSecClassGenericPassword,
kSecAttrService as String: service,
kSecAttrAccount as String: account,
kSecReturnData as String: true,
kSecMatchLimit as String: kSecMatchLimitOne
]
var result: CFTypeRef?
let status = SecItemCopyMatching(query as CFDictionary, &result)
if status == errSecItemNotFound { return nil }
guard status == errSecSuccess, let data = result as? Data else {
throw HoloLakeMobileError.keychain(status)
}
return try JSONDecoder().decode(StoredSession.self, from: data)
}
static func save(_ session: StoredSession) throws {
let data = try JSONEncoder().encode(session)
let query: [String: Any] = [
kSecClass as String: kSecClassGenericPassword,
kSecAttrService as String: service,
kSecAttrAccount as String: account
]
let attributes: [String: Any] = [
kSecValueData as String: data,
kSecAttrAccessible as String: kSecAttrAccessibleWhenUnlockedThisDeviceOnly
]
let update = SecItemUpdate(query as CFDictionary, attributes as CFDictionary)
if update == errSecItemNotFound {
var insertion = query
insertion.merge(attributes) { _, new in new }
let status = SecItemAdd(insertion as CFDictionary, nil)
guard status == errSecSuccess else { throw HoloLakeMobileError.keychain(status) }
} else if update != errSecSuccess {
throw HoloLakeMobileError.keychain(update)
}
}
static func remove() throws {
let query: [String: Any] = [
kSecClass as String: kSecClassGenericPassword,
kSecAttrService as String: service,
kSecAttrAccount as String: account
]
let status = SecItemDelete(query as CFDictionary)
guard status == errSecSuccess || status == errSecItemNotFound else {
throw HoloLakeMobileError.keychain(status)
}
}
}

View file

@ -1,17 +0,0 @@
import SwiftUI
@main
struct HoloLakeMobileApp: App {
@StateObject private var client = HoloLakeSyncClient()
var body: some Scene {
WindowGroup {
ContentView()
.environmentObject(client)
.onOpenURL { url in
Task { await client.pair(with: url) }
}
}
}
}

View file

@ -1,177 +0,0 @@
import Foundation
import Security
struct PairingDescriptor: Equatable {
let host: String
let port: Int
let pairingID: String
let secret: Data
init(url: URL) throws {
guard url.scheme == "hololake", url.host == "pair",
let components = URLComponents(url: url, resolvingAgainstBaseURL: false) else {
throw HoloLakeMobileError.invalidPairingLink
}
var values: [String: String] = [:]
for item in components.queryItems ?? [] {
guard let value = item.value, values[item.name] == nil else {
throw HoloLakeMobileError.invalidPairingLink
}
values[item.name] = value
}
guard let host = values["host"], !host.isEmpty,
let portText = values["port"], let port = Int(portText), (1...65535).contains(port),
let pairingID = values["id"], UUID(uuidString: pairingID) != nil,
let secretText = values["secret"],
let secret = Data(base64URL: secretText), secret.count == 32 else {
throw HoloLakeMobileError.invalidPairingLink
}
self.host = host
self.port = port
self.pairingID = pairingID
self.secret = secret
}
var baseURL: URL {
URL(string: "http://\(host):\(port)")!
}
}
struct StoredSession: Codable, Equatable {
let host: String
let port: Int
let deviceID: String
let sessionKey: Data
let desktopName: String
var counter: UInt64
var cursor: UInt64
var baseURL: URL {
URL(string: "http://\(host):\(port)")!
}
}
struct PairRequest: Codable {
let deviceName: String
let platform: String
let requestID: String
}
struct PairResponse: Codable {
let schema: String
let state: String
let deviceID: String
let sessionKey: String
let desktopName: String
let rootNodeRole: String
let requestID: String
}
struct SyncRequest: Codable {
let counter: UInt64
let afterCursor: UInt64?
let capture: MobileCaptureInput?
}
struct MobileCaptureInput: Codable {
let title: String
let body: String
let requestID: String
}
struct MobileSyncSnapshot: Codable {
let schema: String
let state: String
let cursor: UInt64
let generatedAtUnixMs: UInt64
let desktopName: String
let rootNodeOnline: Bool
let personalChannel: MobileChannelProjection
let webNovel: MobileWebNovelProjection
let education: MobileEducationProjection
let recentCaptures: [MobileCaptureProjection]
let boundary: MobileBoundaryProjection
}
struct MobileChannelProjection: Codable {
let home: String
let growthEventCount: UInt64
let integrity: String
}
struct MobileWebNovelProjection: Codable {
let workCount: UInt64
let volumeCount: UInt64
let chapterCount: UInt64
let works: [MobileWebNovelWork]
}
struct MobileWebNovelWork: Codable, Identifiable {
let workID: String
let title: String
let status: String
let updatedAtUnixMs: UInt64
var id: String { workID }
}
struct MobileEducationProjection: Codable {
let activeTableCount: UInt64
let archivedTableCount: UInt64
let unassignedTableCount: UInt64
let sensitiveValuesIncluded: Bool
}
struct MobileCaptureProjection: Codable, Identifiable {
let cursor: UInt64
let captureID: String
let title: String
let body: String
let sourceDeviceID: String
let createdAtUnixMs: UInt64
var id: String { captureID }
}
struct MobileBoundaryProjection: Codable {
let mobileRole: String
let remoteDesktopClone: Bool
let desktopOfflineExecution: Bool
let sensitiveEducationValues: String
let modelAPI: String
}
enum HoloLakeMobileError: LocalizedError {
case invalidPairingLink
case invalidResponse
case rejected(String)
case missingNonce
case missingSession
case keychain(OSStatus)
var errorDescription: String? {
switch self {
case .invalidPairingLink: return "配对链接无效或已损坏。"
case .invalidResponse: return "电脑端返回了无法校验的响应。"
case .rejected(let code): return "电脑端拒绝了本次请求:\(code)"
case .missingNonce: return "加密响应缺少一次性随机数。"
case .missingSession: return "请先与电脑端 HoloLake 配对。"
case .keychain(let status): return "本机钥匙串写入失败(\(status))。"
}
}
}
extension Data {
init?(base64URL value: String) {
var text = value.replacingOccurrences(of: "-", with: "+")
.replacingOccurrences(of: "_", with: "/")
text += String(repeating: "=", count: (4 - text.count % 4) % 4)
guard let data = Data(base64Encoded: text) else { return nil }
self = data
}
var base64URL: String {
base64EncodedString()
.replacingOccurrences(of: "+", with: "-")
.replacingOccurrences(of: "/", with: "_")
.replacingOccurrences(of: "=", with: "")
}
}

View file

@ -1,190 +0,0 @@
import CryptoKit
import Foundation
import UIKit
@MainActor
final class HoloLakeSyncClient: ObservableObject {
static let clientNumber = "HLP-IOS-CLIENT-001"
static let pairAAD = Data("hololake.mobile.pair/v1".utf8)
@Published private(set) var session: StoredSession?
@Published private(set) var snapshot: MobileSyncSnapshot?
@Published private(set) var stateText = "尚未配对"
@Published private(set) var isWorking = false
@Published var errorText: String?
init() {
do {
session = try HoloLakeKeychain.load()
stateText = session == nil ? "尚未配对" : "已配对,等待手动同步"
} catch {
errorText = error.localizedDescription
}
}
func pair(with url: URL) async {
await perform("正在校验配对…") {
let descriptor = try PairingDescriptor(url: url)
let requestID = UUID().uuidString.lowercased()
let payload = PairRequest(
deviceName: UIDevice.current.name,
platform: "IOS",
requestID: requestID
)
let responseData = try await Self.exchange(
url: descriptor.baseURL.appending(path: "v1/pair"),
key: descriptor.secret,
aad: Self.pairAAD,
headers: ["X-HoloLake-Pairing-ID": descriptor.pairingID],
payload: payload
)
let response = try JSONDecoder().decode(PairResponse.self, from: responseData)
guard response.schema == "hololake.mobile-sync/v1",
response.state == "PAIRED",
response.rootNodeRole == "USER_LOCAL_COMPUTER_TERMINAL",
response.requestID == requestID,
let sessionKey = Data(base64URL: response.sessionKey), sessionKey.count == 32 else {
throw HoloLakeMobileError.invalidResponse
}
let next = StoredSession(
host: descriptor.host,
port: descriptor.port,
deviceID: response.deviceID,
sessionKey: sessionKey,
desktopName: response.desktopName,
counter: 0,
cursor: 0
)
try HoloLakeKeychain.save(next)
session = next
stateText = "已与 \(response.desktopName) 配对"
}
}
func pair(from text: String) async {
guard let url = URL(string: text.trimmingCharacters(in: .whitespacesAndNewlines)) else {
errorText = HoloLakeMobileError.invalidPairingLink.localizedDescription
return
}
await pair(with: url)
}
func sync(captureTitle: String? = nil, captureBody: String? = nil) async {
await perform("正在与电脑同步…") {
guard var current = session else { throw HoloLakeMobileError.missingSession }
current.counter += 1
// Consume and persist the counter before transport. If the root node accepts a
// request but its response is lost, the next manual retry still moves forward.
try HoloLakeKeychain.save(current)
session = current
let capture: MobileCaptureInput?
if let body = captureBody?.trimmingCharacters(in: .whitespacesAndNewlines), !body.isEmpty {
capture = MobileCaptureInput(
title: (captureTitle ?? "").trimmingCharacters(in: .whitespacesAndNewlines),
body: body,
requestID: UUID().uuidString.lowercased()
)
} else {
capture = nil
}
let aad = Data("hololake.mobile.sync/v1:\(current.deviceID)".utf8)
let responseData = try await Self.exchange(
url: current.baseURL.appending(path: "v1/sync"),
key: current.sessionKey,
aad: aad,
headers: ["X-HoloLake-Device-ID": current.deviceID],
payload: SyncRequest(counter: current.counter, afterCursor: nil, capture: capture)
)
let nextSnapshot = try JSONDecoder().decode(MobileSyncSnapshot.self, from: responseData)
guard nextSnapshot.schema == "hololake.mobile-sync/v1",
nextSnapshot.state == "SYNCED_WITH_ROOT_NODE",
nextSnapshot.rootNodeOnline,
nextSnapshot.boundary.mobileRole == "REMOTE_BODY_ENTRY_OF_THE_SAME_PERSONA_SYSTEM",
!nextSnapshot.boundary.remoteDesktopClone,
!nextSnapshot.boundary.desktopOfflineExecution else {
throw HoloLakeMobileError.invalidResponse
}
current.cursor = nextSnapshot.cursor
try HoloLakeKeychain.save(current)
session = current
snapshot = nextSnapshot
stateText = "已同步 · \(nextSnapshot.desktopName)"
}
}
func disconnect() {
do {
try HoloLakeKeychain.remove()
session = nil
snapshot = nil
stateText = "尚未配对"
} catch {
errorText = error.localizedDescription
}
}
private func perform(_ activeText: String, operation: () async throws -> Void) async {
guard !isWorking else { return }
isWorking = true
errorText = nil
stateText = activeText
do {
try await operation()
} catch {
errorText = error.localizedDescription
stateText = session == nil ? "尚未配对" : "同步未完成"
}
isWorking = false
}
static func exchange<Payload: Encodable>(
url: URL,
key: Data,
aad: Data,
headers: [String: String],
payload: Payload,
session: URLSession = .shared
) async throws -> Data {
let clear = try JSONEncoder().encode(payload)
let nonceData = randomNonce()
let nonce = try ChaChaPoly.Nonce(data: nonceData)
let sealed = try ChaChaPoly.seal(
clear,
using: SymmetricKey(data: key),
nonce: nonce,
authenticating: aad
)
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.timeoutInterval = 8
request.cachePolicy = .reloadIgnoringLocalCacheData
request.httpBody = sealed.ciphertext + sealed.tag
request.setValue("application/octet-stream", forHTTPHeaderField: "Content-Type")
request.setValue(nonceData.base64URL, forHTTPHeaderField: "X-HoloLake-Nonce")
headers.forEach { request.setValue($1, forHTTPHeaderField: $0) }
let (body, response) = try await session.data(for: request)
guard let http = response as? HTTPURLResponse else {
throw HoloLakeMobileError.invalidResponse
}
guard http.statusCode == 200 else {
let code = (try? JSONSerialization.jsonObject(with: body) as? [String: Any])?["code"] as? String
throw HoloLakeMobileError.rejected(code ?? "HTTP_\(http.statusCode)")
}
guard let nonceHeader = http.value(forHTTPHeaderField: "X-HoloLake-Nonce"),
let responseNonceData = Data(base64URL: nonceHeader), responseNonceData.count == 12 else {
throw HoloLakeMobileError.missingNonce
}
let responseNonce = try ChaChaPoly.Nonce(data: responseNonceData)
guard body.count >= 16 else { throw HoloLakeMobileError.invalidResponse }
let responseBox = try ChaChaPoly.SealedBox(
nonce: responseNonce,
ciphertext: body.dropLast(16),
tag: body.suffix(16)
)
return try ChaChaPoly.open(responseBox, using: SymmetricKey(data: key), authenticating: aad)
}
static func randomNonce() -> Data {
Data((0..<12).map { _ in UInt8.random(in: .min ... .max) })
}
}

View file

@ -1,44 +0,0 @@
import CryptoKit
import XCTest
@testable import HoloLakeMobile
final class HoloLakeMobileTests: XCTestCase {
func testPairingCoordinateParsesOnlyCompleteLink() throws {
let secret = Data(repeating: 7, count: 32).base64URL
let id = UUID().uuidString.lowercased()
let url = try XCTUnwrap(URL(string: "hololake://pair?host=192.168.1.8&port=37421&id=\(id)&secret=\(secret)"))
let value = try PairingDescriptor(url: url)
XCTAssertEqual(value.host, "192.168.1.8")
XCTAssertEqual(value.port, 37421)
XCTAssertEqual(value.pairingID, id)
XCTAssertEqual(value.secret, Data(repeating: 7, count: 32))
}
func testPairingCoordinateRejectsMissingSecret() throws {
let url = try XCTUnwrap(URL(string: "hololake://pair?host=127.0.0.1&port=37421&id=\(UUID().uuidString)"))
XCTAssertThrowsError(try PairingDescriptor(url: url))
}
func testPairingCoordinateRejectsDuplicateKeys() throws {
let secret = Data(repeating: 7, count: 32).base64URL
let id = UUID().uuidString.lowercased()
let url = try XCTUnwrap(URL(string: "hololake://pair?host=192.168.1.8&host=127.0.0.1&port=37421&id=\(id)&secret=\(secret)"))
XCTAssertThrowsError(try PairingDescriptor(url: url))
}
func testCryptoKitPayloadMatchesServerWireShape() throws {
let key = SymmetricKey(data: Data(repeating: 3, count: 32))
let nonce = try ChaChaPoly.Nonce(data: Data(repeating: 9, count: 12))
let aad = Data("hololake.mobile.pair/v1".utf8)
let clear = Data("hello".utf8)
let sealed = try ChaChaPoly.seal(clear, using: key, nonce: nonce, authenticating: aad)
let wire = sealed.ciphertext + sealed.tag
XCTAssertEqual(wire.count, clear.count + 16)
let restored = try ChaChaPoly.open(
ChaChaPoly.SealedBox(nonce: nonce, ciphertext: wire.dropLast(16), tag: wire.suffix(16)),
using: key,
authenticating: aad
)
XCTAssertEqual(restored, clear)
}
}

View file

@ -1,63 +0,0 @@
name: HoloLakeMobile
options:
bundleIdPrefix: com.guanghulab
deploymentTarget:
iOS: "17.0"
settings:
base:
DEVELOPMENT_TEAM: 825A9L3G7Q
CODE_SIGN_STYLE: Automatic
SWIFT_VERSION: "5.0"
CURRENT_PROJECT_VERSION: 1
MARKETING_VERSION: 0.5.0
TARGETED_DEVICE_FAMILY: "1"
SUPPORTS_MACCATALYST: false
targets:
HoloLakeMobile:
type: application
platform: iOS
sources:
- path: Sources
settings:
base:
PRODUCT_BUNDLE_IDENTIFIER: com.guanghulab.hololake
PRODUCT_NAME: HoloLake
PRODUCT_MODULE_NAME: HoloLakeMobile
info:
path: Generated/HoloLakeMobile-Info.plist
properties:
CFBundleDisplayName: HoloLake
CFBundleShortVersionString: "$(MARKETING_VERSION)"
CFBundleVersion: "$(CURRENT_PROJECT_VERSION)"
LSApplicationCategoryType: public.app-category.productivity
NSLocalNetworkUsageDescription: HoloLake 仅在你明确配对后,通过同一局域网连接你的电脑端频道。
UIApplicationSupportsIndirectInputEvents: true
UIRequiresFullScreen: true
UILaunchScreen: {}
UISupportedInterfaceOrientations:
- UIInterfaceOrientationPortrait
CFBundleURLTypes:
- CFBundleTypeRole: Editor
CFBundleURLName: com.guanghulab.hololake.pair
CFBundleURLSchemes:
- hololake
NSAppTransportSecurity:
NSAllowsLocalNetworking: true
scheme:
testTargets:
- HoloLakeMobileTests
HoloLakeMobileTests:
type: bundle.unit-test
platform: iOS
sources:
- path: Tests
dependencies:
- target: HoloLakeMobile
settings:
base:
PRODUCT_BUNDLE_IDENTIFIER: com.guanghulab.hololake.tests
TEST_HOST: "$(BUILT_PRODUCTS_DIR)/HoloLake.app/HoloLake"
BUNDLE_LOADER: "$(TEST_HOST)"
info:
path: Generated/HoloLakeMobileTests-Info.plist
properties: {}

Some files were not shown because too many files have changed in this diff Show more