audit(hololake): establish donor migration gates

This commit is contained in:
冰朔 2026-08-12 11:13:39 +08:00
commit c18424209c
4 changed files with 116 additions and 4 deletions

View file

@ -0,0 +1,73 @@
{
"schema": "hololake.donor-audit/v1",
"record_id": "HLP-DONOR-AUDIT-001",
"development_id": "DEV-20260811-010",
"audited_source_commit": "cff488bb033051909ae078991787e0c272a2d5eb",
"state": "BASELINE_RECORDED_SECURITY_PARTIAL_LICENSE_AND_DATA_GATES_ACTIVE",
"truth_boundary": "This record permits capability and behavior extraction only. It does not authorize donor source copying, donor deletion, data migration, product UI implementation, release, or deployment.",
"donors": [
{
"path": "../hololake-platform",
"role": "READ_ONLY_ENGINEERING_CAPABILITY_DONOR",
"source_license": "AGPL-3.0-or-later",
"declared_authors": ["Luca Rossi"],
"code_reuse": "BLOCKED_PENDING_FILE_PROVENANCE_AND_PRODUCT_LICENSE_DECISION",
"security_scan": "NOT_COMPLETE"
},
{
"path": "../hololake-desktop",
"role": "READ_ONLY_KNOWLEDGE_UX_AND_BEHAVIOR_DONOR",
"source_license": "UNDECLARED_NO_LICENSE_FILE_OR_PACKAGE_FIELD_FOUND",
"code_reuse": "BLOCKED_PENDING_OWNERSHIP_AND_FILE_PROVENANCE",
"security_scan": "COMPLETE_AT_AUDITED_COMMIT",
"security_scan_id": "b7cae66e-20bb-4110-be9a-205600ed2f39"
},
{
"path": "../guanghu-knowledge-base",
"role": "READ_ONLY_KNOWLEDGE_UX_BEHAVIOR_AND_DATA_DONOR",
"source_license": "UNDECLARED_NO_LICENSE_FILE_OR_PACKAGE_FIELD_FOUND",
"code_reuse": "BLOCKED_PENDING_OWNERSHIP_AND_FILE_PROVENANCE",
"security_scan": "COMPLETE_AT_AUDITED_COMMIT",
"security_scan_id": "944b7cb0-fd2b-4310-889f-42062124e155"
}
],
"capability_dispositions": [
{"capability":"PAGE_FOLDER_TREE_AND_READING_HIERARCHY","disposition":"KEEP_UX_REFERENCE","target":"CLEAN_ROOM_NATIVE_IMPLEMENTATION"},
{"capability":"MARKDOWN_IMPORT_EXPORT_AND_DURABILITY","disposition":"KEEP_CONTRACT","target":"COLLISION_SAFE_SYMLINK_SAFE_MIGRATION"},
{"capability":"RICH_BLOCKS_TABLE_CODE_MATH_DIAGRAM_WHITEBOARD_SHEET","disposition":"INVESTIGATE","target":"DEPENDENCY_LICENSE_SECURITY_AND_WEBVIEW_PARITY_GATES"},
{"capability":"PROPERTIES_FILTER_SORT_AND_DATABASE_VIEWS","disposition":"REDESIGN","target":"HUMAN_FIRST_KNOWLEDGE_SURFACE"},
{"capability":"SEARCH_BACKLINKS_WIKILINKS_AND_ATTACHMENTS","disposition":"KEEP_CONTRACT","target":"LOCAL_FIRST_BOUNDED_GRAPH"},
{"capability":"GIT_VERSION_DIFF_RECOVERY_AND_RECEIPTS","disposition":"KEEP_CONTRACT","target":"AUTHENTICATED_EVIDENCE_LAYER_WITH_VALIDATED_PATHS_REVISIONS_AND_REMOTES"},
{"capability":"AGENT_CHAT_AND_CONFIRMATION","disposition":"REPLACE","target":"AGE_PARTNERSHIP_WITH_AUTHENTICATED_HUMAN_EXACT_IMMUTABLE_PAYLOAD_CONFIRMATION"},
{"capability":"WORLD_DOMAIN_IDENTITY_AND_NODE_SURFACES","disposition":"REDESIGN","target":"CURRENT_HOLOLAKE_ARCHITECTURE_NOT_DONOR_NAVIGATION"},
{"capability":"UPSTREAM_AND_DONOR_UPDATERS","disposition":"RETIRE","target":"HOLOLAKE_SIGNED_HUMAN_OPT_IN_UPDATE_TRUST_ROOT"},
{"capability":"DEFAULT_TELEMETRY_AND_ERROR_REPORTING","disposition":"INVESTIGATE","target":"OFF_BY_DEFAULT_UNTIL_EXPLICIT_HUMAN_CONSENT_AND_DATA_CONTRACT"}
],
"data_classes": [
{"class":"KNOWLEDGE_CONTENT_AND_ATTACHMENTS","observed_locations":["Electron userData/data/knowledge-base","knowledge-base KB_REPO_PATH or kb-data","legacy user-selected vault paths"],"sensitivity":"HUMAN_OWNED_PRIVATE_BY_DEFAULT","migration":"BACKUP_INVENTORY_HASH_AND_REVERSIBLE_REHEARSAL_REQUIRED"},
{"class":"GIT_HISTORY_REMOTES_CHANNEL_STATE_AND_RECEIPTS","observed_locations":["knowledge repository .git","knowledge repository .hololake/channel-state.json","knowledge repository .hololake/receipts"],"sensitivity":"PROVENANCE_AUTHORITY_AND_NETWORK_SENSITIVE","migration":"SEPARATE_CONTENT_HISTORY_REMOTE_AUTHORITY_AND_RECEIPT_DECISIONS"},
{"class":"AGE_CONVERSATIONS_AND_PENDING_ACTIONS","observed_locations":["Electron userData/agent-conversations.json","knowledge-base HOLOLAKE_AGENT_STATE_PATH"],"sensitivity":"RELATIONSHIP_AND_ACTION_AUTHORITY_SENSITIVE","migration":"NO_BLIND_IMPORT_PENDING_ACTIONS_REQUIRE_EXPIRY_OWNERSHIP_AND_RECONFIRMATION"},
{"class":"MODEL_AND_SERVER_CREDENTIALS","observed_locations":["Electron userData/model-config.json","Electron userData/server-auth.json","Electron userData/node-keystore.json","Electron userData/hololake-git-askpass.sh"],"sensitivity":"SECRET_CRITICAL","migration":"NEVER_COPY_AS_PLAIN_DATA_REAUTHORIZE_PER_DESTINATION_AND_STORE_IN_OS_CREDENTIAL_VAULT"},
{"class":"SERVER_PROFILES_AND_UI_PREFERENCES","observed_locations":["Electron userData/server-profiles.json","browser localStorage hololake.layout.* and hololake.human-preferences.v1"],"sensitivity":"PERSONAL_CONFIGURATION","migration":"SCHEMA_VALIDATE_AND_ALLOW_HUMAN_RESET"},
{"class":"LEGACY_VAULT_TOOL_CONFIGURATION","observed_locations":["user-selected vaults","vault .agents/mcp_config.json","external MCP client configuration files"],"sensitivity":"EXECUTION_BOUNDARY_SENSITIVE","migration":"DO_NOT_MUTATE_OR_IMPORT_UNTIL_TOOL_AUTHORITY_AUDIT_COMPLETES"}
],
"prohibited_transplants": [
"ELECTRON_PRIVILEGED_PRELOAD_WITHOUT_NAVIGATION_AND_SENDER_ORIGIN_LOCK",
"UNAUTHENTICATED_LOOPBACK_CONTROL_API_OR_NULL_ORIGIN_CORS",
"STORED_MODEL_KEY_REBOUND_TO_RENDERER_SELECTED_BASE_URL",
"FIXED_PORT_TUNNEL_READINESS_INFERENCE",
"PERSISTENT_ALL_SCOPE_TOKEN_WITHOUT_REVOCATION",
"LEXICAL_ONLY_PATH_CONTAINMENT_OR_UNVALIDATED_GIT_REVISION_REMOTE",
"UPSTREAM_OR_DONOR_UPDATE_ENDPOINTS",
"DONOR_SOURCE_WITHOUT_FILE_PROVENANCE_AND_LICENSE_AUTHORIZATION"
],
"open_gates": [
"LEGACY_TAURI_SECURITY_SCAN",
"DIRECT_AND_TRANSITIVE_DEPENDENCY_LICENSE_SBOM",
"FILE_LEVEL_PROVENANCE",
"PHYSICAL_USER_DATA_INVENTORY_AND_BACKUP",
"REVERSIBLE_DATA_MIGRATION_REHEARSAL",
"VISUAL_DIRECTION_SELECTION"
],
"complete": false
}

View file

@ -1,7 +1,7 @@
{
"schema": "hololake.native-desktop-foundation/v1",
"record_id": "HLP-NATIVE-DESKTOP-FOUNDATION-001",
"state": "MINIMAL_TAURI_SCAFFOLD_AND_FAIL_CLOSED_UPDATE_TRUST_ROOT_IMPLEMENTED",
"state": "MINIMAL_TAURI_SCAFFOLD_UPDATE_TRUST_ROOT_AND_DONOR_AUDIT_BASELINE_IMPLEMENTED",
"canonical_shell": "TAURI_V2_RUST_REACT",
"product_ui_implementation_started": false,
"selected_visual_direction_present": false,
@ -15,6 +15,9 @@
"human_opt_in_download_install_required": true,
"automatic_restart_allowed": false,
"private_signing_material_allowed_in_source": false,
"donor_audit_record": "audit/donor-audit.json",
"donor_audit_complete": false,
"donor_source_copying_allowed": false,
"donors": [
{
"path": "../hololake-platform",

View file

@ -0,0 +1,30 @@
import assert from 'node:assert/strict'
import fs from 'node:fs'
import path from 'node:path'
import test from 'node:test'
import { fileURLToPath } from 'node:url'
const root = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..')
const audit = JSON.parse(fs.readFileSync(path.join(root, 'audit/donor-audit.json'), 'utf8'))
test('all donors remain read-only and source copying stays blocked', () => {
assert.equal(audit.complete, false)
assert.equal(audit.donors.length, 3)
for (const donor of audit.donors) {
assert.match(donor.role, /^READ_ONLY_/)
assert.match(donor.code_reuse, /^BLOCKED_/)
}
})
test('audit preserves security and secret migration prohibitions', () => {
assert.ok(audit.prohibited_transplants.includes('UNAUTHENTICATED_LOOPBACK_CONTROL_API_OR_NULL_ORIGIN_CORS'))
assert.ok(audit.prohibited_transplants.includes('ELECTRON_PRIVILEGED_PRELOAD_WITHOUT_NAVIGATION_AND_SENDER_ORIGIN_LOCK'))
const secretData = audit.data_classes.find((entry) => entry.class === 'MODEL_AND_SERVER_CREDENTIALS')
assert.match(secretData.migration, /NEVER_COPY_AS_PLAIN_DATA/)
})
test('visual implementation cannot start while audit gates remain open', () => {
assert.ok(audit.open_gates.includes('VISUAL_DIRECTION_SELECTION'))
assert.ok(audit.open_gates.includes('LEGACY_TAURI_SECURITY_SCAN'))
assert.ok(audit.open_gates.includes('REVERSIBLE_DATA_MIGRATION_REHEARSAL'))
})

View file

@ -1,13 +1,13 @@
{
"schema": "hololake.canonical-desktop-shell/v2",
"record_id": "HLP-CANONICAL-DESKTOP-SHELL-001",
"version": "2026-08-12.2",
"state": "CURRENT_CANONICAL_MINIMAL_TAURI_SCAFFOLD_AND_FAIL_CLOSED_UPDATE_TRUST_ROOT_IMPLEMENTED",
"version": "2026-08-12.3",
"state": "CURRENT_CANONICAL_NATIVE_TAURI_FOUNDATION_WITH_UPDATE_TRUST_ROOT_AND_PARTIAL_DONOR_AUDIT",
"development_id": "DEV-20260811-010",
"decision": {
"canonical_shell": "TAURI_V2_RUST_REACT",
"canonical_source": "product-source/hololake-native-desktop",
"canonical_source_state": "MINIMAL_TAURI_SCAFFOLD_AND_FAIL_CLOSED_UPDATE_TRUST_ROOT_IMPLEMENTED",
"canonical_source_state": "MINIMAL_TAURI_SCAFFOLD_UPDATE_TRUST_ROOT_AND_DONOR_AUDIT_BASELINE_IMPLEMENTED",
"existing_tauri_source": "product-source/hololake-platform",
"existing_tauri_role": "READ_ONLY_ENGINEERING_CAPABILITY_DONOR_AND_ACCEPTANCE_ORACLE",
"electron_role": "READ_ONLY_KNOWLEDGE_UX_BEHAVIOR_DONOR_AND_ACCEPTANCE_ORACLE",
@ -82,6 +82,12 @@
"audit": {
"first_live_ui_comparison_complete": true,
"full_source_data_security_and_license_audit_complete": false,
"record": "product-source/hololake-native-desktop/audit/donor-audit.json",
"electron_shell_security_scan_complete": true,
"knowledge_core_security_scan_complete": true,
"legacy_tauri_security_scan_complete": false,
"file_provenance_and_dependency_license_audit_complete": false,
"physical_user_data_inventory_and_migration_rehearsal_complete": false,
"allowed_outcomes": [
"KEEP_CONTRACT",
"KEEP_UX_REFERENCE",