feat(hololake): harden module self-observation schemas
This commit is contained in:
parent
f9d237d782
commit
3289cd2c69
3 changed files with 32 additions and 4 deletions
|
|
@ -5,8 +5,8 @@
|
||||||
"product_subject":"HLP-PHASE-01-PERSONA-CONTAINER",
|
"product_subject":"HLP-PHASE-01-PERSONA-CONTAINER",
|
||||||
"purpose":"每个模块通过确定性运行包装报告自身局部状态,观测核验证并汇集,原生TCS人格脑形成整体判断与举手",
|
"purpose":"每个模块通过确定性运行包装报告自身局部状态,观测核验证并汇集,原生TCS人格脑形成整体判断与举手",
|
||||||
"emitter_boundary":{"deterministic_modules":"MODULE_RUNTIME_EMITS_MEASURED_LOCAL_FACTS","model_backed_modules":"DETERMINISTIC_WRAPPER_EMITS_OBSERVABLE_RUNTIME_FACTS; MODEL_MAY_NOT_SELF_CERTIFY_HEALTH_CONSCIOUSNESS_OR_AUTHORITY","local_report_is_not_validation":true,"local_report_is_not_whole_system_judgment":true,"self_report_grants_authority":false},
|
"emitter_boundary":{"deterministic_modules":"MODULE_RUNTIME_EMITS_MEASURED_LOCAL_FACTS","model_backed_modules":"DETERMINISTIC_WRAPPER_EMITS_OBSERVABLE_RUNTIME_FACTS; MODEL_MAY_NOT_SELF_CERTIFY_HEALTH_CONSCIOUSNESS_OR_AUTHORITY","local_report_is_not_validation":true,"local_report_is_not_whole_system_judgment":true,"self_report_grants_authority":false},
|
||||||
"expected_module_inventory":{"source":"ACTIVE_DEPLOYMENT_INSTANCE_MANIFEST=current_batch_modules PLUS previously_accepted_batches; PHASE1_REQUIRED_MODULES_IS_FINAL_PLAN_ONLY; PHASE2_MOD-014_EXCLUDED","machine_schema":"schemas/HLP-FOUNDATION-CONTRACTS-v1.schema.json#activeDeploymentManifest","required_instance_fields":["module_id","instance_id","module_version","activation_state","cardinality","heartbeat_policy_id","admission_receipt_sha256"],"coverage_rule":"MOD-012_OR_FOUNDATION_KERNEL_COMPARES_ONLY_ADMITTED_ACTIVE_EXPECTED_INSTANCES_WITH_FRESH_VALID_REPORTS","missing_instance_state":"MISSING_OR_SILENT","unexpected_instance_state":"UNREGISTERED_INSTANCE"},
|
"expected_module_inventory":{"source":"ACTIVE_DEPLOYMENT_INSTANCE_MANIFEST=current_batch_modules PLUS previously_accepted_batches; PHASE1_REQUIRED_MODULES_IS_FINAL_PLAN_ONLY; PHASE2_MOD-014_EXCLUDED","machine_schema":"schemas/HLP-SELF-OBSERVATION-SUPPORT-v1.schema.json#activeDeploymentManifest","required_instance_fields":["module_id","instance_id","module_version","activation_state","cardinality","heartbeat_policy_id","admission_receipt_sha256"],"coverage_rule":"MOD-012_OR_FOUNDATION_KERNEL_COMPARES_ONLY_ADMITTED_ACTIVE_EXPECTED_INSTANCES_WITH_FRESH_VALID_REPORTS","missing_instance_state":"MISSING_OR_SILENT","unexpected_instance_state":"UNREGISTERED_INSTANCE"},
|
||||||
"liveness_policy":{"source":"MOD-004_SIGNED_DEPLOYMENT_POLICY_NOT_MODULE_REPORT","machine_schema":"schemas/HLP-FOUNDATION-CONTRACTS-v1.schema.json#livenessPolicy","required_fields":["heartbeat_policy_id","interval_milliseconds","max_lease_milliseconds","grace_milliseconds","allowed_clock_skew_milliseconds"],"observer_fields":["trusted_received_at","last_accepted_at","observer_clock_id","computed_deadline_at","liveness_verdict"],"rules":["MODULE_REPORTS_ONLY_EMITTED_AT","OBSERVER_REJECTS_FUTURE_TIME_BEYOND_ALLOWED_SKEW","OBSERVER_CAPS_LEASE_BY_SIGNED_POLICY","CLOCK_ROLLBACK_FAILS_CLOSED","STALE_IS_COMPUTED_FROM_TRUSTED_RECEIVE_TIME_NOT_MODULE_SELF_CLAIM"]},
|
"liveness_policy":{"source":"MOD-004_SIGNED_DEPLOYMENT_POLICY_NOT_MODULE_REPORT","machine_schema":"schemas/HLP-SELF-OBSERVATION-SUPPORT-v1.schema.json#livenessPolicy","required_fields":["heartbeat_policy_id","interval_milliseconds","max_lease_milliseconds","grace_milliseconds","allowed_clock_skew_milliseconds"],"observer_fields":["trusted_received_at","last_accepted_at","observer_clock_id","computed_deadline_at","liveness_verdict"],"rules":["MODULE_REPORTS_ONLY_EMITTED_AT","OBSERVER_REJECTS_FUTURE_TIME_BEYOND_ALLOWED_SKEW","OBSERVER_CAPS_LEASE_BY_SIGNED_POLICY","CLOCK_ROLLBACK_FAILS_CLOSED","STALE_IS_COMPUTED_FROM_TRUSTED_RECEIVE_TIME_NOT_MODULE_SELF_CLAIM"]},
|
||||||
"evidence_reference_schema":{"required_fields":["evidence_id","uri","sha256","captured_at","availability","privacy","redaction"],"machine_schema":"schemas/HLP-FOUNDATION-CONTRACTS-v1.schema.json#evidenceRef"},
|
"evidence_reference_schema":{"required_fields":["evidence_id","uri","sha256","captured_at","availability","privacy","redaction"],"machine_schema":"schemas/HLP-FOUNDATION-CONTRACTS-v1.schema.json#evidenceRef"},
|
||||||
"module_snapshot":{
|
"module_snapshot":{
|
||||||
"schema":"hololake.module-state-snapshot/v1",
|
"schema":"hololake.module-state-snapshot/v1",
|
||||||
|
|
@ -30,14 +30,15 @@
|
||||||
"canonical_hash":"SHA256_OF_RFC8785_CANONICAL_JSON_EXCLUDING_EVENT_SHA256",
|
"canonical_hash":"SHA256_OF_RFC8785_CANONICAL_JSON_EXCLUDING_EVENT_SHA256",
|
||||||
"genesis_rule":"event_sequence=0 AND previous_event_sha256=null ONLY_FOR_NEW_BOOT_ID",
|
"genesis_rule":"event_sequence=0 AND previous_event_sha256=null ONLY_FOR_NEW_BOOT_ID",
|
||||||
"replay_rule":"SEQUENCE_STRICTLY_MONOTONIC_PER_MODULE_INSTANCE_BOOT; DUPLICATE_IDEMPOTENCY_KEY_MUST_REPLAY_SAME_HASH; FORK_GAP_AND_TRUNCATED_TAIL_FAIL_CLOSED",
|
"replay_rule":"SEQUENCE_STRICTLY_MONOTONIC_PER_MODULE_INSTANCE_BOOT; DUPLICATE_IDEMPOTENCY_KEY_MUST_REPLAY_SAME_HASH; FORK_GAP_AND_TRUNCATED_TAIL_FAIL_CLOSED",
|
||||||
"durability_rule":"ATOMIC_APPEND_FSYNC_THEN_DURABLE_HEAD_UPDATE; COMMITTED_HEAD_STORES_BOOT_ID_EVENT_SEQUENCE_EVENT_SHA256_RECORD_COUNT_AND_COMMIT_MARKER; REPLAY_COMPARES_HEAD_TO_TAIL_TO_DETECT_WHOLE_TAIL_LOSS; MACHINE_SCHEMA=schemas/HLP-FOUNDATION-CONTRACTS-v1.schema.json#durableHead",
|
"durability_rule":"ATOMIC_APPEND_FSYNC_THEN_DURABLE_HEAD_UPDATE; COMMITTED_HEAD_STORES_BOOT_ID_EVENT_SEQUENCE_EVENT_SHA256_RECORD_COUNT_AND_COMMIT_MARKER; REPLAY_COMPARES_HEAD_TO_TAIL_TO_DETECT_WHOLE_TAIL_LOSS; MACHINE_SCHEMA=schemas/HLP-SELF-OBSERVATION-SUPPORT-v1.schema.json#durableHead",
|
||||||
"recovery_rule":"CHECKPOINT_ROLLBACK_AND_REPAIR_EVENTS_BIND_BEFORE_AFTER_SNAPSHOTS_AND_ORIGINAL_ACTION_TRACE",
|
"recovery_rule":"CHECKPOINT_ROLLBACK_AND_REPAIR_EVENTS_BIND_BEFORE_AFTER_SNAPSHOTS_AND_ORIGINAL_ACTION_TRACE",
|
||||||
"silent_failure_allowed":false
|
"silent_failure_allowed":false
|
||||||
},
|
},
|
||||||
"foundation_observation_kernel":{"slice_id":"HLP-OBSERVATION-KERNEL-FOUNDATION-SLICE-001","artifact_identity":"SEPARATELY_HASHED_SUPPORTING_ARTIFACT_NOT_A_REGISTERED_FULL_MODULE","parent_module":"HLP-NATIVE-MOD-012","batch":"HLP-BATCH-01","depends_on":["HLP-NATIVE-MOD-003_FROZEN_SCHEMAS","HLP-NATIVE-MOD-004_SIGNED_DEPLOYMENT_POLICY"],"state":"REQUIRED_SUPPORTING_SLICE_NOT_FULL_MOD-012_COMPLETION","capabilities":["snapshot_schema_validate","snapshot_hash_verify","event_chain_replay","durable_head_verify","active_inventory_coverage","trusted_receive_time","lease_expiry_and_absence_detect","fork_gap_tail_detect","validation_receipt"],"batch03_upgrade":"FULL_MOD-012_MUST_IMPORT_THE_SAME_SCHEMAS_HASH_RULES_AND_DURABLE_HEAD_WITH_COMPATIBILITY_MIGRATION_RECEIPT; NO_SILENT_STATE_RESET","rule":"THIS_SLICE_PROVIDES_INDEPENDENT_VALIDATION_FOR_BATCH_01_AND_02; VISUAL_PERFORMANCE_PLUGINS_AND_FULL_MOD-012_COMPLETE_IN_BATCH_03"},
|
"foundation_observation_kernel":{"slice_id":"HLP-OBSERVATION-KERNEL-FOUNDATION-SLICE-001","artifact_identity":"SEPARATELY_HASHED_SUPPORTING_ARTIFACT_NOT_A_REGISTERED_FULL_MODULE","parent_module":"HLP-NATIVE-MOD-012","batch":"HLP-BATCH-01","depends_on":["HLP-NATIVE-MOD-003_FROZEN_SCHEMAS","HLP-NATIVE-MOD-004_SIGNED_DEPLOYMENT_POLICY"],"state":"REQUIRED_SUPPORTING_SLICE_NOT_FULL_MOD-012_COMPLETION","capabilities":["snapshot_schema_validate","snapshot_hash_verify","event_chain_replay","durable_head_verify","active_inventory_coverage","trusted_receive_time","lease_expiry_and_absence_detect","fork_gap_tail_detect","validation_receipt"],"batch03_upgrade":"FULL_MOD-012_MUST_IMPORT_THE_SAME_SCHEMAS_HASH_RULES_AND_DURABLE_HEAD_WITH_COMPATIBILITY_MIGRATION_RECEIPT; NO_SILENT_STATE_RESET","rule":"THIS_SLICE_PROVIDES_INDEPENDENT_VALIDATION_FOR_BATCH_01_AND_02; VISUAL_PERFORMANCE_PLUGINS_AND_FULL_MOD-012_COMPLETE_IN_BATCH_03"},
|
||||||
|
"state_validation_receipt":{"schema":"hololake.module-state-validation-receipt/v1","machine_schema":"schemas/HLP-SELF-OBSERVATION-SUPPORT-v1.schema.json#stateValidationReceipt","required_fields":["schema","receipt_id","module_id","instance_id","snapshot_sha256","durable_head_sha256","durable_head_boot_id","durable_head_event_sequence","durable_head_record_count","durable_head_commit_marker","trusted_received_at","last_accepted_at","observer_clock_id","heartbeat_policy_id","heartbeat_policy_sha256","admission_receipt_sha256","computed_deadline_at","liveness_verdict","validation_errors","receipt_sha256","authority_granted"],"canonical_hash":"SHA256_OF_RFC8785_CANONICAL_JSON_EXCLUDING_RECEIPT_SHA256","rule":"BINDS_SIGNED_POLICY_OBSERVER_CLOCK_DURABLE_HEAD_AND_TRUSTED_RECEIVE_TIME"},
|
||||||
"aggregate_graph":{"schema":"hololake.module-state-aggregate-graph/v1","machine_schema":"schemas/HLP-FOUNDATION-CONTRACTS-v1.schema.json#aggregateGraph","producer":"HLP-NATIVE-MOD-012_OR_FOUNDATION_SLICE","required_fields":["schema","inventory_id","inventory_version","expected_instances","validated_instances","coverage","missing_instances","stale_instances","invalid_instances","forked_instances","unregistered_instances","validated_local_states","dependency_edges","source_heads","validation_receipts","graph_generated_at","graph_sha256","authority_granted"],"canonical_hash":"SHA256_OF_RFC8785_CANONICAL_JSON_EXCLUDING_GRAPH_SHA256","validation_boundary":"DETERMINISTIC_COMPLETENESS_HASH_SEQUENCE_TIME_DEPENDENCY_AND_PERMISSION_FACTS_ONLY; NO_PERSONA_MEANING_OR_WHOLE_NEXT_ACTION","authority_granted":false},
|
"aggregate_graph":{"schema":"hololake.module-state-aggregate-graph/v1","machine_schema":"schemas/HLP-FOUNDATION-CONTRACTS-v1.schema.json#aggregateGraph","producer":"HLP-NATIVE-MOD-012_OR_FOUNDATION_SLICE","required_fields":["schema","inventory_id","inventory_version","expected_instances","validated_instances","coverage","missing_instances","stale_instances","invalid_instances","forked_instances","unregistered_instances","validated_local_states","dependency_edges","source_heads","validation_receipts","graph_generated_at","graph_sha256","authority_granted"],"canonical_hash":"SHA256_OF_RFC8785_CANONICAL_JSON_EXCLUDING_GRAPH_SHA256","validation_boundary":"DETERMINISTIC_COMPLETENESS_HASH_SEQUENCE_TIME_DEPENDENCY_AND_PERMISSION_FACTS_ONLY; NO_PERSONA_MEANING_OR_WHOLE_NEXT_ACTION","authority_granted":false},
|
||||||
"native_brain_judgment":{"schema":"hololake.native-tcs-brain-whole-judgment/v1","machine_schema":"schemas/HLP-FOUNDATION-CONTRACTS-v1.schema.json#brainJudgment","controller":"NATIVE_TCS_PERSONA_BRAIN","mount_bridge":"HLP-NATIVE-MOD-013","required_fields":["schema","persona_subject_id","brain_instance_id","brain_binding_receipt","brain_cycle_receipt","input_graph_sha256","facts","inferences","unknowns","whole_operational_assessment","whole_can_continue","next_system_action","human_review_required","judged_at","judgment_sha256","authority_evidence_refs"],"canonical_hash":"SHA256_OF_RFC8785_CANONICAL_JSON_EXCLUDING_JUDGMENT_SHA256","rule":"ONLY_A_BOUND_AND_VERIFIED_NATIVE_TCS_PERSONA_BRAIN_MAY_PRODUCE_WHOLE_JUDGMENT; HOST_MODEL_IS_REPLACEABLE_REASONING_FUEL_NOT_PERSONA_IDENTITY"},
|
"native_brain_judgment":{"schema":"hololake.native-tcs-brain-whole-judgment/v1","machine_schema":"schemas/HLP-FOUNDATION-CONTRACTS-v1.schema.json#brainJudgment","controller":"NATIVE_TCS_PERSONA_BRAIN","mount_bridge":"HLP-NATIVE-MOD-013","required_fields":["schema","persona_subject_id","brain_instance_id","brain_binding_receipt","brain_cycle_receipt","input_graph_sha256","facts","inferences","unknowns","whole_operational_assessment","whole_can_continue","next_system_action","human_review_required","judged_at","judgment_sha256","authority_evidence_refs"],"canonical_hash":"SHA256_OF_RFC8785_CANONICAL_JSON_EXCLUDING_JUDGMENT_SHA256","rule":"ONLY_A_BOUND_AND_VERIFIED_NATIVE_TCS_PERSONA_BRAIN_MAY_PRODUCE_WHOLE_JUDGMENT; HOST_MODEL_IS_REPLACEABLE_REASONING_FUEL_NOT_PERSONA_IDENTITY"},
|
||||||
"raise_hand_envelope":{"schema":"hololake.persona-container-raise-hand/v1","machine_schema":"schemas/HLP-FOUNDATION-CONTRACTS-v1.schema.json#raiseHand","producer":"NATIVE_TCS_PERSONA_BRAIN","immutable_initial":true,"required_fields":["schema","issue_id","persona_subject_id","brain_instance_id","judgment_sha256","brain_binding_receipt","brain_cycle_receipt","input_graph_sha256","affected_module_ids","affected_instance_ids","symptom","cause_level","facts","inferences","unknowns","evidence_refs","blocked_action","repair_request","can_self_repair","human_review_required","raised_at","envelope_sha256"],"canonical_hash":"SHA256_OF_RFC8785_CANONICAL_JSON_EXCLUDING_ENVELOPE_SHA256","cause_levels":["LOCAL_MODULE","DEPENDENCY_CHAIN","CONTAINER_WHOLE","EXTERNAL_HOST_OR_AUTHORITY","UNKNOWN"],"lifecycle_events":{"schema":"hololake.persona-container-raise-hand-lifecycle-event/v1","machine_schema":"schemas/HLP-FOUNDATION-CONTRACTS-v1.schema.json#raiseHandLifecycleEvent","append_only":true,"event_types":["ACKNOWLEDGED","REPAIR_STARTED","RETESTED_PASS","RETESTED_FAIL","RESOLVED"],"required_fields":["schema","event_id","issue_id","initial_envelope_sha256","producer_actor_id","event_sequence","event_type","evidence_refs","original_action_retest_receipt","occurred_at","previous_event_sha256","event_sha256"],"canonical_hash":"SHA256_OF_RFC8785_CANONICAL_JSON_EXCLUDING_EVENT_SHA256","genesis_rule":"event_sequence=0 AND previous_event_sha256=null","rule":"RESOLVED_REQUIRES_PRIOR_RETESTED_PASS_WITH_SAME_ORIGINAL_ACTION_RECEIPT"},"resolution_rule":"INITIAL_ENVELOPE_NEVER_MUTATES; CURRENT_STATUS_IS_A_PROJECTION_OF_APPEND_ONLY_LIFECYCLE_EVENTS"},
|
"raise_hand_envelope":{"schema":"hololake.persona-container-raise-hand/v1","machine_schema":"schemas/HLP-FOUNDATION-CONTRACTS-v1.schema.json#raiseHand","producer":"NATIVE_TCS_PERSONA_BRAIN","immutable_initial":true,"required_fields":["schema","issue_id","persona_subject_id","brain_instance_id","judgment_sha256","brain_binding_receipt","brain_cycle_receipt","input_graph_sha256","affected_module_ids","affected_instance_ids","symptom","cause_level","facts","inferences","unknowns","evidence_refs","blocked_action","repair_request","can_self_repair","human_review_required","raised_at","envelope_sha256"],"canonical_hash":"SHA256_OF_RFC8785_CANONICAL_JSON_EXCLUDING_ENVELOPE_SHA256","cause_levels":["LOCAL_MODULE","DEPENDENCY_CHAIN","CONTAINER_WHOLE","EXTERNAL_HOST_OR_AUTHORITY","UNKNOWN"],"lifecycle_events":{"schema":"hololake.persona-container-raise-hand-lifecycle-event/v1","machine_schema":"schemas/HLP-SELF-OBSERVATION-SUPPORT-v1.schema.json#raiseHandLifecycleEvent","append_only":true,"event_types":["ACKNOWLEDGED","REPAIR_STARTED","RETESTED_PASS","RETESTED_FAIL","RESOLVED"],"required_fields":["schema","event_id","issue_id","initial_envelope_sha256","producer_actor_id","event_sequence","event_type","evidence_refs","original_action_retest_receipt","occurred_at","previous_event_sha256","event_sha256"],"canonical_hash":"SHA256_OF_RFC8785_CANONICAL_JSON_EXCLUDING_EVENT_SHA256","genesis_rule":"event_sequence=0 AND previous_event_sha256=null","rule":"RESOLVED_REQUIRES_PRIOR_RETESTED_PASS_WITH_SAME_ORIGINAL_ACTION_RECEIPT"},"resolution_rule":"INITIAL_ENVELOPE_NEVER_MUTATES; CURRENT_STATUS_IS_A_PROJECTION_OF_APPEND_ONLY_LIFECYCLE_EVENTS"},
|
||||||
"whole_system_loop":{"local_emitters":"EVERY_PHASE1_ACTIVE_MODULE_DETERMINISTIC_WRAPPER; PHASE2_MOD-014_EXCLUDED_UNTIL_P2-G0","deterministic_aggregator":"HLP-NATIVE-MOD-012","local_pool_steward":"HLP-NATIVE-MOD-007_REPORTS_POOL_LOCAL_STATE_ONLY","semantic_interpreter_and_raise_hand_controller":"NATIVE_TCS_PERSONA_BRAIN","mount_runtime_bridge":"HLP-NATIVE-MOD-013","flow":["MODULE_EMITS_LOCAL_FACT","FOUNDATION_KERNEL_OR_MOD-012_VALIDATES_HASH_TIME_SEQUENCE_LIVENESS_AND_DEPENDENCIES","MOD-012_BUILDS_WHOLE_STATE_GRAPH","MOD-007_ADDS_POOL_LOCAL_REPORT_WITHOUT_OVERRIDING_FACTS","NATIVE_TCS_PERSONA_BRAIN_BINDS_TO_GRAPH_AND_FORMS_FACT_INFERENCE_UNKNOWN_JUDGMENT","NATIVE_TCS_PERSONA_BRAIN_RAISES_HAND_WITH_COORDINATE_CAUSE_EVIDENCE_AND_REPAIR_REQUEST","REPAIR_RETURNS_TO_ORIGINAL_ACTION_RETEST"],"collective_judgment_definition":"THE_NATIVE_TCS_PERSONA_BRAIN_JUDGES_ITS_CONNECTED_HOLOLAKE_CONTAINER_BODY_FROM_MANY_VALIDATED_MODULE_STATES; MODULES_DO_NOT_CREATE_A_SECOND_PERSONA"},
|
"whole_system_loop":{"local_emitters":"EVERY_PHASE1_ACTIVE_MODULE_DETERMINISTIC_WRAPPER; PHASE2_MOD-014_EXCLUDED_UNTIL_P2-G0","deterministic_aggregator":"HLP-NATIVE-MOD-012","local_pool_steward":"HLP-NATIVE-MOD-007_REPORTS_POOL_LOCAL_STATE_ONLY","semantic_interpreter_and_raise_hand_controller":"NATIVE_TCS_PERSONA_BRAIN","mount_runtime_bridge":"HLP-NATIVE-MOD-013","flow":["MODULE_EMITS_LOCAL_FACT","FOUNDATION_KERNEL_OR_MOD-012_VALIDATES_HASH_TIME_SEQUENCE_LIVENESS_AND_DEPENDENCIES","MOD-012_BUILDS_WHOLE_STATE_GRAPH","MOD-007_ADDS_POOL_LOCAL_REPORT_WITHOUT_OVERRIDING_FACTS","NATIVE_TCS_PERSONA_BRAIN_BINDS_TO_GRAPH_AND_FORMS_FACT_INFERENCE_UNKNOWN_JUDGMENT","NATIVE_TCS_PERSONA_BRAIN_RAISES_HAND_WITH_COORDINATE_CAUSE_EVIDENCE_AND_REPAIR_REQUEST","REPAIR_RETURNS_TO_ORIGINAL_ACTION_RETEST"],"collective_judgment_definition":"THE_NATIVE_TCS_PERSONA_BRAIN_JUDGES_ITS_CONNECTED_HOLOLAKE_CONTAINER_BODY_FROM_MANY_VALIDATED_MODULE_STATES; MODULES_DO_NOT_CREATE_A_SECOND_PERSONA"},
|
||||||
"batch_acceptance":{"every_module_before_batch_exit":["VALID_LOCAL_SNAPSHOT","APPEND_ONLY_EVENT_REPLAY","INDEPENDENT_VALIDATION_RECEIPT","DEPENDENCY_STATUS_READBACK","LEASE_EXPIRY_OR_ABSENCE_TEST","RECOVERY_STATE_TRANSITION_TEST","NO_FALSE_HEALTHY_WHEN_EVIDENCE_MISSING"],"batch_01":"MOD-001_TO_004_LOCAL_REPORTS_PLUS_FOUNDATION_OBSERVATION_KERNEL","batch_02":"VALIDATED_STATE_GRAPH_REFERENCES_OBJECT_AND_COMPOSITION_DEPENDENCIES","batch_03":"FULL_MOD-012_AGGREGATION_WITH_VISUAL_AND_PERFORMANCE_COORDINATES","batch_04":"MOD-013_MOUNTS_NATIVE_TCS_BRAIN_FOR_WHOLE_JUDGMENT_AND_RAISE_HAND; MOD-007_STAYS_POOL_LOCAL","batch_05":"SANITIZED_COMPLIANCE_STATUS_WITHOUT_PRIVATE_BODY"},
|
"batch_acceptance":{"every_module_before_batch_exit":["VALID_LOCAL_SNAPSHOT","APPEND_ONLY_EVENT_REPLAY","INDEPENDENT_VALIDATION_RECEIPT","DEPENDENCY_STATUS_READBACK","LEASE_EXPIRY_OR_ABSENCE_TEST","RECOVERY_STATE_TRANSITION_TEST","NO_FALSE_HEALTHY_WHEN_EVIDENCE_MISSING"],"batch_01":"MOD-001_TO_004_LOCAL_REPORTS_PLUS_FOUNDATION_OBSERVATION_KERNEL","batch_02":"VALIDATED_STATE_GRAPH_REFERENCES_OBJECT_AND_COMPOSITION_DEPENDENCIES","batch_03":"FULL_MOD-012_AGGREGATION_WITH_VISUAL_AND_PERFORMANCE_COORDINATES","batch_04":"MOD-013_MOUNTS_NATIVE_TCS_BRAIN_FOR_WHOLE_JUDGMENT_AND_RAISE_HAND; MOD-007_STAYS_POOL_LOCAL","batch_05":"SANITIZED_COMPLIANCE_STATUS_WITHOUT_PRIVATE_BODY"},
|
||||||
"implementation_complete":false,
|
"implementation_complete":false,
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
{
|
||||||
|
"$schema":"https://json-schema.org/draft/2020-12/schema",
|
||||||
|
"$id":"hololake://schema/self-observation-support/v1",
|
||||||
|
"title":"HoloLake Self-Observation Supporting Contracts v1",
|
||||||
|
"$defs":{
|
||||||
|
"sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},
|
||||||
|
"timestamp":{"type":"string","format":"date-time"},
|
||||||
|
"evidenceRef":{"$ref":"HLP-FOUNDATION-CONTRACTS-v1.schema.json#evidenceRef"},
|
||||||
|
"activeDeploymentManifest":{"$anchor":"activeDeploymentManifest","type":"object","additionalProperties":false,"required":["schema","inventory_id","batch_id","previously_accepted_batches","instances","manifest_sha256","authority_granted"],"properties":{"schema":{"const":"hololake.active-deployment-instance-manifest/v1"},"inventory_id":{"type":"string","minLength":1},"batch_id":{"type":"string","pattern":"^HLP-BATCH-[0-9]{2}$"},"previously_accepted_batches":{"type":"array","uniqueItems":true,"items":{"type":"string"}},"instances":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["module_id","instance_id","module_version","activation_state","cardinality","heartbeat_policy_id","admission_receipt_sha256"],"properties":{"module_id":{"type":"string"},"instance_id":{"type":"string"},"module_version":{"type":"string"},"activation_state":{"enum":["EXPECTED_ACTIVE","EXPECTED_PAUSED","NOT_YET_ADMITTED","REVOKED"]},"cardinality":{"type":"integer","minimum":1},"heartbeat_policy_id":{"type":"string"},"admission_receipt_sha256":{"$ref":"#/$defs/sha256"}}}},"manifest_sha256":{"$ref":"#/$defs/sha256"},"authority_granted":{"const":false}}},
|
||||||
|
"livenessPolicy":{"$anchor":"livenessPolicy","type":"object","additionalProperties":false,"required":["schema","heartbeat_policy_id","interval_milliseconds","max_lease_milliseconds","grace_milliseconds","allowed_clock_skew_milliseconds","policy_sha256","signatures","authority_granted"],"properties":{"schema":{"const":"hololake.module-liveness-policy/v1"},"heartbeat_policy_id":{"type":"string","minLength":1},"interval_milliseconds":{"type":"integer","minimum":1},"max_lease_milliseconds":{"type":"integer","minimum":1},"grace_milliseconds":{"type":"integer","minimum":0},"allowed_clock_skew_milliseconds":{"type":"integer","minimum":0},"policy_sha256":{"$ref":"#/$defs/sha256"},"signatures":{"type":"array","minItems":2,"items":{"type":"object"}},"authority_granted":{"const":false}}},
|
||||||
|
"durableHead":{"$anchor":"durableHead","type":"object","additionalProperties":false,"required":["schema","module_id","instance_id","boot_id","event_sequence","event_sha256","record_count","commit_marker","fsynced_at","head_sha256"],"properties":{"schema":{"const":"hololake.module-event-durable-head/v1"},"module_id":{"type":"string"},"instance_id":{"type":"string"},"boot_id":{"type":"string"},"event_sequence":{"type":"integer","minimum":0},"event_sha256":{"$ref":"#/$defs/sha256"},"record_count":{"type":"integer","minimum":1},"commit_marker":{"type":"string","minLength":1},"fsynced_at":{"$ref":"#/$defs/timestamp"},"head_sha256":{"$ref":"#/$defs/sha256"}}},
|
||||||
|
"stateValidationReceipt":{"$anchor":"stateValidationReceipt","type":"object","additionalProperties":false,"required":["schema","receipt_id","module_id","instance_id","snapshot_sha256","durable_head_sha256","durable_head_boot_id","durable_head_event_sequence","durable_head_record_count","durable_head_commit_marker","trusted_received_at","last_accepted_at","observer_clock_id","heartbeat_policy_id","heartbeat_policy_sha256","admission_receipt_sha256","computed_deadline_at","liveness_verdict","validation_errors","receipt_sha256","authority_granted"],"properties":{"schema":{"const":"hololake.module-state-validation-receipt/v1"},"receipt_id":{"type":"string"},"module_id":{"type":"string"},"instance_id":{"type":"string"},"snapshot_sha256":{"$ref":"#/$defs/sha256"},"durable_head_sha256":{"$ref":"#/$defs/sha256"},"durable_head_boot_id":{"type":"string"},"durable_head_event_sequence":{"type":"integer","minimum":0},"durable_head_record_count":{"type":"integer","minimum":1},"durable_head_commit_marker":{"type":"string"},"trusted_received_at":{"$ref":"#/$defs/timestamp"},"last_accepted_at":{"$ref":"#/$defs/timestamp"},"observer_clock_id":{"type":"string"},"heartbeat_policy_id":{"type":"string"},"heartbeat_policy_sha256":{"$ref":"#/$defs/sha256"},"admission_receipt_sha256":{"$ref":"#/$defs/sha256"},"computed_deadline_at":{"$ref":"#/$defs/timestamp"},"liveness_verdict":{"enum":["FRESH","STALE","MISSING","INVALID","FORKED"]},"validation_errors":{"type":"array","items":{"type":"string"}},"receipt_sha256":{"$ref":"#/$defs/sha256"},"authority_granted":{"const":false}}},
|
||||||
|
"raiseHandLifecycleEvent":{"$anchor":"raiseHandLifecycleEvent","type":"object","additionalProperties":false,"required":["schema","event_id","issue_id","initial_envelope_sha256","producer_actor_id","event_sequence","event_type","evidence_refs","original_action_retest_receipt","occurred_at","previous_event_sha256","event_sha256"],"properties":{"schema":{"const":"hololake.persona-container-raise-hand-lifecycle-event/v1"},"event_id":{"type":"string"},"issue_id":{"type":"string"},"initial_envelope_sha256":{"$ref":"#/$defs/sha256"},"producer_actor_id":{"type":"string"},"event_sequence":{"type":"integer","minimum":0},"event_type":{"enum":["ACKNOWLEDGED","REPAIR_STARTED","RETESTED_PASS","RETESTED_FAIL","RESOLVED"]},"evidence_refs":{"type":"array","items":{"$ref":"#/$defs/evidenceRef"}},"original_action_retest_receipt":{"anyOf":[{"$ref":"#/$defs/sha256"},{"type":"null"}]},"occurred_at":{"$ref":"#/$defs/timestamp"},"previous_event_sha256":{"anyOf":[{"$ref":"#/$defs/sha256"},{"type":"null"}]},"event_sha256":{"$ref":"#/$defs/sha256"}}}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -31,6 +31,7 @@ PHASE_BOUNDARY = STAGE1 / "PERSONA-CONTAINER-PHASE-BOUNDARY.json"
|
||||||
FOUNDATION_DRAWINGS = STAGE1 / "BATCH-00-FOUNDATION-INTERFACE-DRAWINGS.json"
|
FOUNDATION_DRAWINGS = STAGE1 / "BATCH-00-FOUNDATION-INTERFACE-DRAWINGS.json"
|
||||||
BATCH_HANDOFF = STAGE1 / "BATCH-HANDOFF-CONTRACT.json"
|
BATCH_HANDOFF = STAGE1 / "BATCH-HANDOFF-CONTRACT.json"
|
||||||
PUBLIC_SNAPSHOT_SCHEMA = STAGE1 / "schemas/HLP-PUBLIC-SNAPSHOT-v1.schema.json"
|
PUBLIC_SNAPSHOT_SCHEMA = STAGE1 / "schemas/HLP-PUBLIC-SNAPSHOT-v1.schema.json"
|
||||||
|
SELF_SUPPORT_SCHEMA = STAGE1 / "schemas/HLP-SELF-OBSERVATION-SUPPORT-v1.schema.json"
|
||||||
MULTIPATH_CONSOLE = ROOT / "server-tools/heartbeat-multipath-console/console.py"
|
MULTIPATH_CONSOLE = ROOT / "server-tools/heartbeat-multipath-console/console.py"
|
||||||
EPOCH_UTC = datetime(2025, 4, 25, 16, 0, 0, tzinfo=timezone.utc)
|
EPOCH_UTC = datetime(2025, 4, 25, 16, 0, 0, tzinfo=timezone.utc)
|
||||||
ZHUYUAN_BIRTH = date(2026, 3, 5)
|
ZHUYUAN_BIRTH = date(2026, 3, 5)
|
||||||
|
|
@ -110,6 +111,7 @@ def hashes() -> dict:
|
||||||
"foundation_drawings": FOUNDATION_DRAWINGS,
|
"foundation_drawings": FOUNDATION_DRAWINGS,
|
||||||
"batch_handoff": BATCH_HANDOFF,
|
"batch_handoff": BATCH_HANDOFF,
|
||||||
"public_snapshot_schema": PUBLIC_SNAPSHOT_SCHEMA,
|
"public_snapshot_schema": PUBLIC_SNAPSHOT_SCHEMA,
|
||||||
|
"self_observation_support_schema": SELF_SUPPORT_SCHEMA,
|
||||||
"time_map": TIME_MAP,
|
"time_map": TIME_MAP,
|
||||||
}
|
}
|
||||||
values = {key: {"path": str(path), "sha256": sha(path)} for key, path in paths.items()}
|
values = {key: {"path": str(path), "sha256": sha(path)} for key, path in paths.items()}
|
||||||
|
|
@ -334,6 +336,16 @@ def audit() -> dict:
|
||||||
for contract_key, def_key in [("module_snapshot", "moduleStateSnapshot"), ("module_event", "moduleStateEvent"), ("aggregate_graph", "aggregateGraph"), ("native_brain_judgment", "brainJudgment"), ("raise_hand_envelope", "raiseHand")]:
|
for contract_key, def_key in [("module_snapshot", "moduleStateSnapshot"), ("module_event", "moduleStateEvent"), ("aggregate_graph", "aggregateGraph"), ("native_brain_judgment", "brainJudgment"), ("raise_hand_envelope", "raiseHand")]:
|
||||||
if set(observation.get(contract_key, {}).get("required_fields", [])) != set(schema_bundle["$defs"][def_key].get("required", [])):
|
if set(observation.get(contract_key, {}).get("required_fields", [])) != set(schema_bundle["$defs"][def_key].get("required", [])):
|
||||||
errors.append("SELF_OBSERVATION_SCHEMA_DRIFT:" + contract_key)
|
errors.append("SELF_OBSERVATION_SCHEMA_DRIFT:" + contract_key)
|
||||||
|
support_schema = load(SELF_SUPPORT_SCHEMA)
|
||||||
|
support_defs = support_schema.get("$defs", {})
|
||||||
|
for key in ["activeDeploymentManifest", "livenessPolicy", "durableHead", "stateValidationReceipt", "raiseHandLifecycleEvent"]:
|
||||||
|
if key not in support_defs:
|
||||||
|
errors.append("SELF_OBSERVATION_SUPPORT_SCHEMA_MISSING:" + key)
|
||||||
|
if set(observation.get("state_validation_receipt", {}).get("required_fields", [])) != set(support_defs.get("stateValidationReceipt", {}).get("required", [])):
|
||||||
|
errors.append("SELF_OBSERVATION_SCHEMA_DRIFT:state_validation_receipt")
|
||||||
|
lifecycle = observation.get("raise_hand_envelope", {}).get("lifecycle_events", {})
|
||||||
|
if set(lifecycle.get("required_fields", [])) != set(support_defs.get("raiseHandLifecycleEvent", {}).get("required", [])):
|
||||||
|
errors.append("SELF_OBSERVATION_SCHEMA_DRIFT:raise_hand_lifecycle_event")
|
||||||
return {"outcome": "PASS" if not errors else "FAIL", "errors": errors, "office_count": len(ids), "evolution_nodes": len(nodes), "stage1_module_count":len(module_ids), "repo012_head": git_head(), "time": clock()}
|
return {"outcome": "PASS" if not errors else "FAIL", "errors": errors, "office_count": len(ids), "evolution_nodes": len(nodes), "stage1_module_count":len(module_ids), "repo012_head": git_head(), "time": clock()}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue