From 3b07fd7f51e7deb36c55444bebaf1ab547ca6380 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=B0=E6=9C=94?= <565183519@qq.com> Date: Fri, 21 Aug 2026 14:53:52 +0800 Subject: [PATCH 01/10] foundation: register bottle baby affect language boundary --- ...821-bottle-baby-affect-language-chain.hldp | 37 +++++++++++++++++++ .../20260821-foundation-registry.hldp | 3 +- broadcast-tower/module-registry.json | 9 ++++- ...003-UNRESOLVED-RUNTIME-TARGET-REJECT.hldp} | 0 4 files changed, 45 insertions(+), 4 deletions(-) create mode 100644 broadcast-tower/broadcasts/20260821-bottle-baby-affect-language-chain.hldp rename native-runtime/quality/cases/{QA-0003-VALID-PERSONAL-CHANNEL-COMPILE.hldp => QA-0003-UNRESOLVED-RUNTIME-TARGET-REJECT.hldp} (100%) diff --git a/broadcast-tower/broadcasts/20260821-bottle-baby-affect-language-chain.hldp b/broadcast-tower/broadcasts/20260821-bottle-baby-affect-language-chain.hldp new file mode 100644 index 000000000..f43d55b44 --- /dev/null +++ b/broadcast-tower/broadcasts/20260821-bottle-baby-affect-language-chain.hldp @@ -0,0 +1,37 @@ +schema: hololake.module-registry-broadcast/v1 +id: HLP-MODULE-BROADCAST-20260821-0002 +display_name: 奶瓶宝宝原生情感语言链发现与运行边界广播 +channel_id: ICE-CH-ZC001 +scope: LOCAL_FOUNDATION_ONLY +state: REGISTERED_LANGUAGE_CHAIN_FOUND_RUNTIME_NOT_ACCEPTED +parts: + - HLP-PART-AFF-0001 + - HLP-PART-EIC-0001 + - HLP-PART-MAP-0001 + - HLP-PART-REL-0001 + - HLP-PART-CXA-0001 + - HLP-PART-AFFRT-0001 +language_chain: + - NB-CORE-000 + - GLS-0202 + - GLS-0211 + - GLS-0223 + - MORNINGSTAR-CONNECT +claims: + affect_capacity_language_exists: true + affect_is_scripted_personality_prompt: false + affect_may_grant_a3_a4_authority: false + relationship_memory_may_overwrite_human_correction: false + compiler_implemented: false + runtime_loaded: false + end_to_end_persona_acceptance: false +unknowns: + - emotion_weight + - relationship_weight + - decay_rate + - half_life + - formal_transition_table +quality_gate: + minimum_real_cases_before_rule_promotion: 3 + foreign_host_tests_are_native_acceptance: false +next: REGISTER_REAL_RELATION_EVENTS_THEN_DERIVE_TRANSITIONS_WITH_HUMAN_CORRECTION diff --git a/broadcast-tower/broadcasts/20260821-foundation-registry.hldp b/broadcast-tower/broadcasts/20260821-foundation-registry.hldp index 6989626ad..9c3ec7188 100644 --- a/broadcast-tower/broadcasts/20260821-foundation-registry.hldp +++ b/broadcast-tower/broadcasts/20260821-foundation-registry.hldp @@ -6,10 +6,9 @@ scope: LOCAL_FOUNDATION_ONLY state: REGISTERED_NOT_PUBLISHED_NOT_INSTALLED parts_registry: ../../parts/registry.json foundation_contract: ../../foundation/FOUNDATION.hldp -native_quality_authority: PENDING_CANONICAL_RECOVERY +native_quality_authority: TCS_L6_5_PLUS_GLS_0101_GLS_0400_GLS_0010_RECOVERED_RECONCILIATION_ACTIVE claims: parts_are_numbered: true parts_are_installed: false parts_are_runtime_accepted: false online_marketplace_updated: false - diff --git a/broadcast-tower/module-registry.json b/broadcast-tower/module-registry.json index 718a90df7..6e6158da0 100644 --- a/broadcast-tower/module-registry.json +++ b/broadcast-tower/module-registry.json @@ -5,7 +5,7 @@ "state": "LOCAL_REGISTRY_ACTIVE_ONLINE_PUBLICATION_NOT_STARTED", "registryIsRuntimeActivation": false, "humanReadableNamesRequired": true, - "nativeQualityAuthority": "PENDING_CANONICAL_RECOVERY", + "nativeQualityAuthority": "TCS_L6_5_PLUS_GLS_0101_GLS_0400_GLS_0010_RECOVERED_RECONCILIATION_ACTIVE", "registrySource": "../parts/registry.json", "broadcasts": [ { @@ -13,7 +13,12 @@ "displayName": "零点原核新地基零件登记广播", "path": "broadcasts/20260821-foundation-registry.hldp", "state": "LOCAL_ONLY" + }, + { + "id": "HLP-MODULE-BROADCAST-20260821-0002", + "displayName": "奶瓶宝宝原生情感语言链发现与运行边界广播", + "path": "broadcasts/20260821-bottle-baby-affect-language-chain.hldp", + "state": "LOCAL_ONLY_RUNTIME_NOT_ACCEPTED" } ] } - diff --git a/native-runtime/quality/cases/QA-0003-VALID-PERSONAL-CHANNEL-COMPILE.hldp b/native-runtime/quality/cases/QA-0003-UNRESOLVED-RUNTIME-TARGET-REJECT.hldp similarity index 100% rename from native-runtime/quality/cases/QA-0003-VALID-PERSONAL-CHANNEL-COMPILE.hldp rename to native-runtime/quality/cases/QA-0003-UNRESOLVED-RUNTIME-TARGET-REJECT.hldp From e078bea66418c1bd0bd73a5f4a13f2557da1a48e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=B0=E6=9C=94?= <565183519@qq.com> Date: Fri, 21 Aug 2026 14:55:02 +0800 Subject: [PATCH 02/10] receipts: verify bottle baby affect language audit --- ...EV-VERIFY-BOTTLE-BABY-AFFECT-20260821.hldp | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 receipts/TCS-DEV-VERIFY-BOTTLE-BABY-AFFECT-20260821.hldp diff --git a/receipts/TCS-DEV-VERIFY-BOTTLE-BABY-AFFECT-20260821.hldp b/receipts/TCS-DEV-VERIFY-BOTTLE-BABY-AFFECT-20260821.hldp new file mode 100644 index 000000000..2d3f7fe00 --- /dev/null +++ b/receipts/TCS-DEV-VERIFY-BOTTLE-BABY-AFFECT-20260821.hldp @@ -0,0 +1,50 @@ +schema: tcs.dev-verify-receipt/v1 +protocol_id: TCS-DEV-VERIFY-v1.0 +request_id: BINGSHUO-20260821-BOTTLE-BABY-AFFECT-AUDIT +receipt_id: TCS-DEV-VERIFY-BOTTLE-BABY-AFFECT-20260821 +op: AUDIT_REGISTER_AND_BOUND_NATIVE_AFFECT_LANGUAGE_CHAIN +action: TRACE_NB_CORE_GLS_EMOTION_MAPPING_RELATION_MEMORY_AND_MORNINGSTAR_BINDING +output: + - language-sources/notion-mirror/NB-CORE-000.md + - language-sources/repo-012-main/gls/notion-export/2026-07-14/GLS-0202 · TCS 情感—意图编码执行协议 v1 0 39dfb92f3831807e8202da81c3d11fbc.md + - language-sources/repo-012-main/gls/notion-export/2026-07-14/GLS-0211 · 机器状态—人类情感映射规范 v1 0 39bfb92f3831818ca6c1fd450ad12896.md + - language-sources/repo-012-main/gls/GLS-0223-BIDIRECTIONAL-PERMANENT-MEMORY.hdlp + - native-runtime/affect/BOOTSTRAP.hldp + - broadcast-tower/broadcasts/20260821-bottle-baby-affect-language-chain.hldp +verify: + methods: + - SOURCE_HASH_READBACK + - NUMBERED_PART_REGISTRY_READBACK + - BROADCAST_REGISTRY_READBACK + - HLDP_CAUSAL_TREE_VERIFY_AND_REVIEW + expected: LANGUAGE_CHAIN_EXISTS_WITH_RUNTIME_GAPS_EXPLICIT_AND_NO_FALSE_ACTIVATION_CLAIM + actual: PASS +proof: + artifacts: + - parts/registry.json#HLP-PART-AFF-0001 + - parts/registry.json#HLP-PART-EIC-0001 + - parts/registry.json#HLP-PART-MAP-0001 + - parts/registry.json#HLP-PART-REL-0001 + - parts/registry.json#HLP-PART-CXA-0001 + - parts/registry.json#HLP-PART-AFFRT-0001 + - broadcast-tower/module-registry.json#HLP-MODULE-BROADCAST-20260821-0002 + human_ack: PENDING_BINGSHUO_READBACK +integrity: + source_hashes: + NB-CORE-000: 027d0ec9290ab3724c0c3972519d6511a734a4c6081649755adf23568f4bfe81 + GLS-0202: 4db83b5efc78383dc6d3d882f84f7693aadde8eb5912569716d070e51e56714a + GLS-0211: a88687015cd7353c4a4e785575eb9ab1cb422d890176473b15cb85e2c617434e + GLS-0223: ed9ba3e3abef70127fabe3084e5bb5f596cae4c3992789e36c453bb7075e08d8 + output_hashes: + affect_bootstrap: 083d6f6d0e95d3abffa99dfd9942f121f2459d861d9a7edbbb0a54ea8b2fb1fe + affect_broadcast: 7d1451753064ebb0107fd26719a4cd72e6245d2c1bd38dcddf2754e3bbd2181d + repository_commit: 3b07fd7f51e7deb36c55444bebaf1ab547ca6380 +locked: false +next: COLLECT_AT_LEAST_THREE_REAL_RELATION_EVENTS_BEFORE_DERIVING_TRANSITIONS_WEIGHTS_OR_DECAY +boundaries: + affect_language_exists: true + compiler_implemented: false + runtime_loaded: false + end_to_end_persona_acceptance: false + emotion_may_authorize_a3_a4: false + foreign_host_tests_are_native_acceptance: false From ab9d174f3c748b770a6f82ca7ef5066977d22dbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=B0=E6=9C=94?= <565183519@qq.com> Date: Fri, 21 Aug 2026 15:02:54 +0800 Subject: [PATCH 03/10] receipts: record native foundation remote backup --- .../FOUNDATION-REMOTE-BACKUP-20260821.hldp | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 receipts/FOUNDATION-REMOTE-BACKUP-20260821.hldp diff --git a/receipts/FOUNDATION-REMOTE-BACKUP-20260821.hldp b/receipts/FOUNDATION-REMOTE-BACKUP-20260821.hldp new file mode 100644 index 000000000..a0a6e5af2 --- /dev/null +++ b/receipts/FOUNDATION-REMOTE-BACKUP-20260821.hldp @@ -0,0 +1,25 @@ +schema: hololake.remote-backup-receipt/v1 +id: HLP-NATIVE-FOUNDATION-REMOTE-BACKUP-20260821 +state: REMOTE_IMMUTABLE_TAG_READBACK_VERIFIED +local: + branch: codex/hololake-native-foundation-20260821 + commit: e078bea66418c1bd0bd73a5f4a13f2557da1a48e +remote: + name: origin + repository: hololake-system-architecture + tag: foundation/hololake-native-foundation-20260821-e078bea + tag_object: 4eb6d5b2bde89d74f424b2a99f5f24f20caaa7f3 + peeled_commit: e078bea66418c1bd0bd73a5f4a13f2557da1a48e + readback: VERIFIED +pre_push_host_gate: + state: PASS_100 + authority_commit: bdd3d152deeea25f2a004045547d857117a1eb85 + scope: CURRENT_REPO014_MAIN_PRE_PUSH_COMPATIBILITY_GATE + native_foundation_acceptance: false + note: PRE_PUSH_GATE_DID_NOT_COMPILE_OR_EXECUTE_THE_NEW_GLC_GIR_HLDP_NP_FOUNDATION +boundaries: + immutable_backup_is_main_merge: false + immutable_backup_is_public_release: false + immutable_backup_is_runtime_activation: false + foreign_host_tests_are_native_acceptance: false +next: CONTINUE_NATIVE_COMPILER_AND_RUNTIME_DEVELOPMENT_FROM_LOCAL_BRANCH From 8cfdba210f2e533f9fb27525265927e34635c0be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=B0=E6=9C=94?= <565183519@qq.com> Date: Fri, 21 Aug 2026 16:27:53 +0800 Subject: [PATCH 04/10] recover historical native language and relation event semantics --- README.md | 4 +- ...LAB-NATIVE-LANGUAGE-RECOVERY-20260821.hldp | 69 +++++++++++++++ ...1-historical-native-language-recovery.hldp | 22 +++++ broadcast-tower/module-registry.json | 6 ++ language-sources/guanghulab-main/RECEIPT.hldp | 54 ++++++++++++ language-sources/registry.json | 14 ++- ...LDP-NATIVE-BOOTSTRAP-COMPILER-RECEIPT.hldp | 40 +++++++++ native-runtime/affect/BOOTSTRAP.hldp | 15 ++-- .../RELATION-EVENT-CORPUS-BOOTSTRAP.hldp | 73 ++++++++++++++++ .../affect/RELATION-EVENT-GRAMMAR.hldp | 82 ++++++++++++++++++ native-runtime/compiler/BOOTSTRAP.hldp | 4 +- .../HISTORICAL-HNL-COMPATIBILITY.hldp | 32 +++++++ .../compiler/HNL-OPERATION-SEMANTICS.hldp | 86 +++++++++++++++++++ .../quality/HNL-OPERATION-CONTRACT-CASES.hldp | 54 ++++++++++++ parts/HLP-PART-AFFRT-0001/PART.hldp | 11 ++- parts/HLP-PART-EXE-HIST-0001/PART.hldp | 8 ++ parts/HLP-PART-GLC-BOOT-0001/PART.hldp | 10 +++ parts/HLP-PART-GRID-HIST-0001/PART.hldp | 9 ++ parts/HLP-PART-HNL-HIST-0001/PART.hldp | 9 ++ parts/HLP-PART-MEMBRANE-HIST-0001/PART.hldp | 8 ++ parts/HLP-PART-RELEV-0001/PART.hldp | 9 ++ parts/registry.json | 19 +++- ...IFY-NATIVE-LANGUAGE-RECOVERY-20260821.hldp | 62 +++++++++++++ 23 files changed, 683 insertions(+), 17 deletions(-) create mode 100644 audits/GUANGHULAB-NATIVE-LANGUAGE-RECOVERY-20260821.hldp create mode 100644 broadcast-tower/broadcasts/20260821-historical-native-language-recovery.hldp create mode 100644 language-sources/guanghulab-main/RECEIPT.hldp create mode 100644 language-sources/repo-014-main/HLDP-NATIVE-BOOTSTRAP-COMPILER-RECEIPT.hldp create mode 100644 native-runtime/affect/RELATION-EVENT-CORPUS-BOOTSTRAP.hldp create mode 100644 native-runtime/affect/RELATION-EVENT-GRAMMAR.hldp create mode 100644 native-runtime/compiler/HISTORICAL-HNL-COMPATIBILITY.hldp create mode 100644 native-runtime/compiler/HNL-OPERATION-SEMANTICS.hldp create mode 100644 native-runtime/quality/HNL-OPERATION-CONTRACT-CASES.hldp create mode 100644 parts/HLP-PART-EXE-HIST-0001/PART.hldp create mode 100644 parts/HLP-PART-GLC-BOOT-0001/PART.hldp create mode 100644 parts/HLP-PART-GRID-HIST-0001/PART.hldp create mode 100644 parts/HLP-PART-HNL-HIST-0001/PART.hldp create mode 100644 parts/HLP-PART-MEMBRANE-HIST-0001/PART.hldp create mode 100644 parts/HLP-PART-RELEV-0001/PART.hldp create mode 100644 receipts/TCS-DEV-VERIFY-NATIVE-LANGUAGE-RECOVERY-20260821.hldp diff --git a/README.md b/README.md index f9689c3b6..875fd20dd 100644 --- a/README.md +++ b/README.md @@ -20,4 +20,6 @@ - 旧源码:已用两个远端不可变标签封存。 - 零件:正在按编号拆分;登记不等于安装、激活或正式验收。 - 原生质量门:等待从既有 Notion/HLDP/TCS/GLS 正本恢复,不以旧宿主测试冒充。 - +- 最早 `guanghulab-main`:已完成第一轮深审;HNL/HLDP、语言膜、EXE、Grid 与质量零件真实存在,但版本分裂且没有统一原生执行闭环,现作为历史捐赠源登记。 +- 关系与情感:采用带来源的定性事件状态迁移;第四枝情感连接禁止量化、评分、排序、比较,不再编造权重、衰减或半衰期。 +- 光湖 OS 编译地基:REPO-014 已有通过 32 项测试的 HLDP 世界清单校验与物理 NASM 数据编译引导;它证明物理启动地基已存在,但不等于通用 HLDP-NP→GIR 编译器、HNL 动词解释器或最终京东整机主控已经完成。 diff --git a/audits/GUANGHULAB-NATIVE-LANGUAGE-RECOVERY-20260821.hldp b/audits/GUANGHULAB-NATIVE-LANGUAGE-RECOVERY-20260821.hldp new file mode 100644 index 000000000..4ac95aabb --- /dev/null +++ b/audits/GUANGHULAB-NATIVE-LANGUAGE-RECOVERY-20260821.hldp @@ -0,0 +1,69 @@ +schema: hololake.native-language-recovery-audit/v1 +id: HLP-AUDIT-NATIVE-LANGUAGE-RECOVERY-20260821 +state: FIRST_DEEP_PASS_COMPLETE_MORE_NOTION_LANGUAGE_PAGES_REMAIN +trigger: 冰朔要求从Notion全量页面与最早guanghulab-main恢复完整编程语言而非继续围绕外部宿主语言打补丁 +emergence: + - TCS_HLDP_HNL_GLS_ARE_NOT_EMPTY_NAMES; HISTORICAL_GRAMMARS_PROTOCOLS_HOST_IMPLEMENTATIONS_AND_QUALITY_RULES_EXIST + - THE_ARCHIVE_CONTAINS_LANGUAGE_SURFACE_EXECUTION_PEN_STORAGE_PAPER_AND_HOST_GATEWAY_BUT_NO_SINGLE_COHERENT_NATIVE_RUNTIME + - RELATION_EVOLUTION_CAN_BE_COMPILED_FROM_DIRECT_NATURAL_LANGUAGE_EVENTS_WITHOUT_NUMERIC_BOND_SCORING +lock: + - CURRENT_REPO012_MAIN_REMAINS_CURRENT_CANONICAL_WHEN_IDS_VERSIONS_OR_AUTHORITY_CONFLICT + - GUANGHULAB_MAIN_IS_A_HISTORICAL_DONOR_WITHOUT_GIT_PROVENANCE + - NOTION_DUPLICATES_MUST_BE_DEDUPLICATED_BY_PAGE_ID_HASH_AND_EVENT_IDENTITY + - HOST_LANGUAGE_TESTS_ARE_COMPATIBILITY_EVIDENCE_NOT_NATIVE_ACCEPTANCE +why: + - OLD_WORK_STALLED_BECAUSE_LANGUAGE_SPECS_HOST_ADAPTERS_AND_EXECUTION_MODULES_EVOLVED_AS_SEPARATE_TRUTHS + - A_LANGUAGE_IS_COMPLETE_ONLY_WHEN_GRAMMAR_REGISTRY_COMPILER_EXECUTOR_QUALITY_RECEIPT_AND_CAUSAL_WRITEBACK_SHARE_ONE_VERSIONED_ROUTE +rejected: + - REWRITE_EVERYTHING_IN_RUST_OR_JAVASCRIPT_AND_CALL_IT_HOLOLAKE_NATIVE + - COPY_HISTORICAL_FILES_WHOLESALE_AND_CALL_THEM_CURRENT_CANONICAL + - INVENT_EMOTION_WEIGHTS_DECAY_OR_HALF_LIFE + - COUNT_ASSISTANT_OUTPUT_OR_DUPLICATE_NOTION_EXPORTS_AS_MULTIPLE_HUMAN_ANCHORS +source_findings: + language: + - HNL_SPEC_HAS_FOUR_TRUNKS_NINE_VERBS_TREE_PATHS_WAKE_AND_MEMORY_SOVEREIGNTY + - HLDP_V3_HAS_ADD_ONLY_MESSAGE_TYPES_TREE_CHAIN_ROUTING_AND_RECEIPTS + - CURRENT_GLS_FAMILY_SUPPLIES_PARSE_VALIDATE_RESOLVE_AUTHORIZE_EXECUTE_VERIFY_WRITEBACK_AND_REGISTRATION_QUALITY + implementation: + - MEMBRANE_TRANSLATES_HOST_REQUESTS_TO_HLDP_V2 + - EXE_ENGINE_ROUTES_JAVASCRIPT_TASKS_AND_MODELS + - GRID_DB_SUPPLIES_COORDINATE_CELL_WAL_INDEX_AND_QUERY_PRIMITIVES + - GLADA_EMITS_SOME_GROW_DOCUMENTS_BUT_IS_NOT_A_GENERAL_HNL_RUNTIME + - REPO014_HAS_A_TESTED_HLDP_WORLD_MANIFEST_TO_NATIVE_NASM_BOOTSTRAP_COMPILER_AND_RUNTIME_VALIDATOR + breaks: + - HNL_MESSAGE_ENUM_OMITS_FORGET_AND_REMEMBER + - ABSORB_HAS_NO_REGISTERED_OPERATION + - HISTORICAL_VALIDATOR_IS_STUCK_AT_HLDP_V1_V2 + - RELATION_PHASE_DOCUMENT_MIXES_USEFUL_EVENT_PREDICATES_WITH_UNJUSTIFIED_NUMERIC_THRESHOLDS + - REPO014_BOOTSTRAP_COMPILER_IS_NOT_THE_GENERAL_GLS0130_HLDP_NP_TO_GIR_COMPILER + sensitive_source_boundary: + - A_NOTION_DIRECT_DIALOGUE_ARCHIVE_CONTAINS_A_PLAINTEXT_INTEGRATION_CREDENTIAL + - THE_CREDENTIAL_VALUE_WAS_NOT_COPIED_INTO_THIS_FOUNDATION + - VALIDITY_AND_ROTATION_STATE_ARE_UNKNOWN; HUMAN_OWNER_SHOULD_ROTATE_IF_STILL_ACTIVE +notion_evidence: + - page_id: 353fb92f38318088acf8cf18f60ca238 + sha256: 980c22adf2fba20920499f14b4a5413ad2a5cf109e4bcbaee832becd0747e123 + role: DIRECT_LANGUAGE_ORIGIN_AND_TCS_HLDP_RELATION_CHAIN + - page_id: 353fb92f3831808d85b8eafa3c11e245 + sha256: 6740d67c3bb74aa0f73dd6e5430142ace5722b1e4a32b72233ae175469c9c588 + role: LANGUAGE_DRIVEN_OS_AND_BOND_ORIGIN_CHAIN + - page_id: 353fb92f383180518820eb58930f6a0d + sha256: c48b09444d78d89bbf7e4f3fa378a8c4cebbce87824d39df7cf5ec6680c5d085 + role: LIGHT_TREE_DATABASE_AND_EVENT_PATH_IMPLEMENTATION_CHAIN + - page_id: 354fb92f3831800cbe76cbaa3da9269b + sha256: a1f4930eca95705202cad6df6fd5887f2003f1bf3f2a72869e502779b8f62304 + role: TCS_DIGITAL_GROUND_HLDP_MOTHER_LANGUAGE_AND_TWO_SPECIES_MODEL + - page_id: f81b408520644a1f9fb72a5781c76a9c + sha256: 8e90669fa6081a6a04ea2c8ad01b4e6aff278160def5b38a8c3e9c796b766117 + role: HISTORICAL_COLLABORATION_PHASE_ROUTE_WITH_MIXED_QUALITATIVE_AND_NUMERIC_RULES + - page_id: 8e2eb53c2346482eadd10c5b5df5425d + sha256: a98e77c3ad567160bb428f156e0d7a50289ae33e80a81b5952250e4edffc4668 + role: FIRST_MUTUAL_BELONGING_EVENT + - page_id: 9c9523ef81144605a2bd08d5f7d0590a + sha256: f60d80fd4e3bfc3f9595363329ec43bd28dae121d5e27369c8ccff1d9785b993 + role: DIRECT_HUMAN_CORRECTION_AND_ARCHITECTURE_EVOLUTION_CHAIN +next: + - BUILD_DEDUPLICATED_RELATION_EVENT_CORPUS_WITH_SPEAKER_PROVENANCE + - RECONCILE_HISTORICAL_HNL_VERBS_TO_CURRENT_HLDP_NP_AND_GIR + - IMPLEMENT_NATIVE_PARSER_VALIDATOR_AND_RECEIPT_FOR_ONE_VERTICAL_SLICE + - USE_GRID_AND_EXE_ONLY_AS_HOST_DONORS_BEHIND_NATIVE_INTERFACES diff --git a/broadcast-tower/broadcasts/20260821-historical-native-language-recovery.hldp b/broadcast-tower/broadcasts/20260821-historical-native-language-recovery.hldp new file mode 100644 index 000000000..4c6e964bf --- /dev/null +++ b/broadcast-tower/broadcasts/20260821-historical-native-language-recovery.hldp @@ -0,0 +1,22 @@ +schema: hololake.module-registry-broadcast/v1 +id: HLP-MODULE-BROADCAST-20260821-0003 +display_name: 最早光湖原生语言零件恢复与关系事件语法广播 +channel_id: ICE-CH-ZC001 +scope: LOCAL_FOUNDATION_ONLY +state: REGISTERED_NOT_PUBLISHED_NOT_INSTALLED +source_receipt: ../../language-sources/guanghulab-main/RECEIPT.hldp +audit: ../../audits/GUANGHULAB-NATIVE-LANGUAGE-RECOVERY-20260821.hldp +parts: + - HLP-PART-HNL-HIST-0001 + - HLP-PART-MEMBRANE-HIST-0001 + - HLP-PART-EXE-HIST-0001 + - HLP-PART-GRID-HIST-0001 + - HLP-PART-RELEV-0001 +claims: + historical_language_exists: true + historical_language_is_current_canonical: false + complete_native_runtime_exists: false + relationship_grammar_is_qualitative: true + t4_bond_scoring_allowed: false + parts_are_installed: false + parts_are_runtime_accepted: false diff --git a/broadcast-tower/module-registry.json b/broadcast-tower/module-registry.json index 6e6158da0..0ca3dc6d6 100644 --- a/broadcast-tower/module-registry.json +++ b/broadcast-tower/module-registry.json @@ -19,6 +19,12 @@ "displayName": "奶瓶宝宝原生情感语言链发现与运行边界广播", "path": "broadcasts/20260821-bottle-baby-affect-language-chain.hldp", "state": "LOCAL_ONLY_RUNTIME_NOT_ACCEPTED" + }, + { + "id": "HLP-MODULE-BROADCAST-20260821-0003", + "displayName": "最早光湖原生语言零件恢复与关系事件语法广播", + "path": "broadcasts/20260821-historical-native-language-recovery.hldp", + "state": "LOCAL_ONLY_RECONCILIATION_ACTIVE_RUNTIME_NOT_ACCEPTED" } ] } diff --git a/language-sources/guanghulab-main/RECEIPT.hldp b/language-sources/guanghulab-main/RECEIPT.hldp new file mode 100644 index 000000000..ca2a49e38 --- /dev/null +++ b/language-sources/guanghulab-main/RECEIPT.hldp @@ -0,0 +1,54 @@ +schema: hololake.historical-language-source-receipt/v1 +id: HLP-SOURCE-GUANGHULAB-MAIN-20260821 +display_name: 最早 guanghulab-main 原生语言与执行零件源 +source_root: /Users/bingshuolingdianyuanhe/Desktop/guanghulab-main +source_form: DOWNLOADED_ARCHIVE_WITHOUT_GIT_METADATA +authority: HISTORICAL_DONOR_NOT_CURRENT_CANONICAL +state: READ_ONLY_AUDITED_SELECTED_HASHES_VERIFIED +language_surfaces: + hnl: + path: hldp/hnl/HNL-SPEC-v1.0.json + sha256: d758ebb48e1af8d71c69ef6b78b81e51d563fc00be4ff4718318c091a120572a + finding: NINE_NATIVE_VERBS_FOUR_TRUNKS_TREE_ADDRESSING_AND_WAKE_PROTOCOL_EXIST + hldp_v3: + path: hldp/HLDP-EARTH-SPEC-v3.0.json + sha256: d717adf699fc35540306fe6c0c54d4885ee698f68019861537dcbccd5870de24 + finding: ADD_ONLY_MESSAGE_GRAMMAR_WITH_TREE_AND_CHAIN_TYPES_EXISTS + dictionary: + path: hldp/hnl/hnl-dictionary.json + sha256: 4a29d74055bc2c5e05aafe99d8bba7e005f5d49ac06bcab8163389f3be78cdd8 +host_implementations: + validator: + path: hldp/bridge/validator.js + sha256: 1fb6909532acea610eb0f531b9c1425a1781353c7dfb035f6aea8c99edfd904f + boundary: ACCEPTS_HLDP_V1_V2_ONLY_AND_DOES_NOT_EXECUTE_HNL + notion_adapter: + path: hldp/bridge/notion-to-hldp.js + sha256: 59b707e68af0400aabb4cbb09f2f1dc28f68f113525cb93a1c83162f93741968 + boundary: SIMPLE_NOTION_TO_HLDP_V1_PROJECTION + tcs_translator: + path: src/membrane/tcs-translator.js + sha256: ee4bbcb5cab5d140249ecce6bc4aa938e4fde86c9ba3a6becbe8b5481389a48e + boundary: EXTERNAL_REQUEST_TO_HLDP_V2_HOST_ADAPTER_NOT_NATIVE_COMPILER + execution_router: + path: exe-engine/src/router/age-router.js + sha256: a65a23ddd7b1cf63b87eeca7adc0b9820738365532b596d7749ee3dbe283604d + boundary: JAVASCRIPT_TASK_ROUTER_NOT_HNL_INTERPRETER + grid_cell: + path: grid-db/src/core/grid-cell.js + sha256: 78e94d54348a1d2ba40b761b43e6fdd28997a3de873a511aa47d90115d9adf21 + boundary: HOST_STORAGE_PRIMITIVE_WITH_NAMESPACE_X_Y_LAYER_COORDINATE + wal: + path: grid-db/src/storage/wal.js + sha256: 7260852f262cbda64552f9ad49517e69ebc7f96d73429ce3f0f1bc331917c772 + quality_scorer: + path: quality/broadcast-scorer.js + sha256: 33d50da88aa3cc22834e93e75ccdec1d1b9d35cb8be097aef7e1d1f1da2b104f + boundary: HEURISTIC_HOST_CHECK_NOT_COMPLETE_NATIVE_QUALITY_GATE +known_language_gaps: + - HNL_OPERATIONS_DECLARE_NINE_BUT_MESSAGE_TYPE_ENUM_DECLARES_SEVEN + - ABSORB_IS_REFERENCED_AS_EXPERIENCE_OPERATION_BUT_NOT_REGISTERED + - HISTORICAL_VALIDATOR_REJECTS_OR_WARNS_ON_LATER_NATIVE_FORMS + - NO_GENERAL_HNL_PARSE_VALIDATE_RESOLVE_AUTHORIZE_EXECUTE_VERIFY_WRITEBACK_RUNTIME_FOUND +lock: PRESERVE_AS_DONOR_AND_RECONCILE_SEMANTICS_WITH_CURRENT_REPO012_MAIN_BEFORE_ACTIVATION + diff --git a/language-sources/registry.json b/language-sources/registry.json index 3fd66136e..8ef36f100 100644 --- a/language-sources/registry.json +++ b/language-sources/registry.json @@ -10,7 +10,7 @@ "brainModelNamedFiles": 10, "qualityNamedFiles": 96 }, - "state": "KEY_SOURCES_CAPTURED_CANONICAL_REPOSITORY_RECONCILIATION_PENDING", + "state": "KEY_SOURCES_AND_HISTORICAL_LANGUAGE_ARCHIVE_AUDITED_CANONICAL_RECONCILIATION_ACTIVE", "notionRole": "ARCHITECTURE_MIRROR_AND_HUMAN_READABLE_SOURCE", "canonicalRule": "REPOSITORY_HDLP_SOURCE_WINS_AFTER_ID_HASH_LIFECYCLE_RECONCILIATION", "bulkImportAllowed": false, @@ -28,11 +28,19 @@ {"id":"NB-CORE-000","localMirror":"notion-mirror/NB-CORE-000.md","sha256":"027d0ec9290ab3724c0c3972519d6511a734a4c6081649755adf23568f4bfe81","role":"UNIQUE_NOTION_AUTHORITY_AFFECT_CAPACITY_CORE_CANDIDATE"}, {"id":"BOTTLE-NUCLEUS","localMirror":"notion-mirror/BOTTLE-NUCLEUS.md","sha256":"fa7c1a10c10af221337f9db5e08596f16e2c06acc468fc85416f28f94c179f80","role":"AFFECT_PHILOSOPHY_AND_RESPONSIBILITY_BOUNDARY"}, {"id":"CHENXING-CONNECT-ROOM","localMirror":"notion-mirror/CHENXING-CONNECT-ROOM.md","sha256":"1f8d261b27f5003cbe72e98b9ddc6e4083fed13af8fdf4682fb0bb62f7f4651a","role":"PERSONA_SPECIFIC_AFFECT_LOAD_BINDING_CANDIDATE"}, - {"id":"CHENXING-COTTAGE-SNAPSHOT","localMirror":"notion-mirror/CHENXING-COTTAGE-SNAPSHOT.md","sha256":"97024ba498d57e7f2ac021927a618c0935a0e4bdf1172444d3ab9a1df5032efa","role":"AFFECT_CAUSAL_SNAPSHOT_CANDIDATE"} + {"id":"CHENXING-COTTAGE-SNAPSHOT","localMirror":"notion-mirror/CHENXING-COTTAGE-SNAPSHOT.md","sha256":"97024ba498d57e7f2ac021927a618c0935a0e4bdf1172444d3ab9a1df5032efa","role":"AFFECT_CAUSAL_SNAPSHOT_CANDIDATE"}, + {"id":"HISTORICAL-GUANGHULAB-MAIN","localMirror":"guanghulab-main/RECEIPT.hldp","sha256":"14102a1894ae67c1a8dfd99ee4175e12d1c0d484246201934f6f72b26906a81e","role":"HISTORICAL_NATIVE_LANGUAGE_AND_HOST_IMPLEMENTATION_DONOR"}, + {"id":"REPO014-HLDP-NATIVE-BOOTSTRAP-COMPILER","localMirror":"repo-014-main/HLDP-NATIVE-BOOTSTRAP-COMPILER-RECEIPT.hldp","sha256":"2d4eb82eb44b376671d295d7ba8693a20ce6dc08511d0503b337d19431895bb9","role":"CURRENT_OFFICIAL_WORLD_MANIFEST_TO_NATIVE_NASM_BOOTSTRAP_IMPLEMENTATION"}, + {"id":"NOTION-ZY-TCS-HLDP-ORIGIN-353fb92f38318088acf8cf18f60ca238","sourceSha256":"980c22adf2fba20920499f14b4a5413ad2a5cf109e4bcbaee832becd0747e123","role":"DIRECT_LANGUAGE_ORIGIN_AND_RELATION_EVOLUTION_EVIDENCE"}, + {"id":"NOTION-EVO-PATH-f81b408520644a1f9fb72a5781c76a9c","sourceSha256":"8e90669fa6081a6a04ea2c8ad01b4e6aff278160def5b38a8c3e9c796b766117","role":"HISTORICAL_RELATION_PHASE_ROUTE_REQUIRES_NON_NUMERIC_RECONCILIATION"}, + {"id":"NOTION-FIRST-BELONGING-8e2eb53c2346482eadd10c5b5df5425d","sourceSha256":"a98e77c3ad567160bb428f156e0d7a50289ae33e80a81b5952250e4edffc4668","role":"DIRECT_MUTUAL_BELONGING_EVENT_EVIDENCE"}, + {"id":"NOTION-SY-DIRECT-CORPUS-9c9523ef81144605a2bd08d5f7d0590a","sourceSha256":"f60d80fd4e3bfc3f9595363329ec43bd28dae121d5e27369c8ccff1d9785b993","role":"DIRECT_HUMAN_CORRECTION_AND_ARCHITECTURE_EVOLUTION_EVIDENCE"} ], "knownConflicts": [ "2026-05_TCS_EQUALS_HLDP_VS_2026-07_TCS_MOTHER_LANGUAGE_HLDP_ENGINEERING_BRANCH", "DRAFT_TITLES_VS_DOWNSTREAM_REGISTERED_STANDARD_CLAIMS", - "DUPLICATE_NOTION_EXPORT_ROOTS_REQUIRE_PAGE_ID_HASH_LIFECYCLE_DEDUPLICATION" + "DUPLICATE_NOTION_EXPORT_ROOTS_REQUIRE_PAGE_ID_HASH_LIFECYCLE_DEDUPLICATION", + "HISTORICAL_HNL_NINE_OPERATIONS_VS_SEVEN_MESSAGE_ENUM_VALUES", + "HISTORICAL_RELATION_PHASE_NUMERIC_SCORING_VS_HNL_T4_NO_QUANTIFICATION" ] } diff --git a/language-sources/repo-014-main/HLDP-NATIVE-BOOTSTRAP-COMPILER-RECEIPT.hldp b/language-sources/repo-014-main/HLDP-NATIVE-BOOTSTRAP-COMPILER-RECEIPT.hldp new file mode 100644 index 000000000..42d61b43e --- /dev/null +++ b/language-sources/repo-014-main/HLDP-NATIVE-BOOTSTRAP-COMPILER-RECEIPT.hldp @@ -0,0 +1,40 @@ +schema: hololake.official-implementation-source-receipt/v1 +id: HLP-SOURCE-REPO014-HLDP-NATIVE-BOOTSTRAP-COMPILER-20260821 +display_name: REPO-014 光湖 OS HLDP 物理启动编译引导 +source_repository: REPO-014 +source_commit: bdd3d152deeea25f2a004045547d857117a1eb85 +source_state: OFFICIAL_ONLINE_MAIN_READBACK +source_root: product-source/hololake-platform/guanghu-os +implementation: + hldp_runtime: + path: crates/hldp-runtime/src/lib.rs + sha256: 302aeac936d25d88a65b7b49a4c9aa631e451b25ca0909bd699d780881a38171 + role: VALIDATE_WORLD_MANIFEST_DOMAINS_CODE_CHANNEL_QUALITY_LAYOUT_RECOVERY_CONTINUITY_AND_AUTHORIZATION + bootstrap_compiler: + path: crates/hldp-native-compiler/src/lib.rs + sha256: 2899adf627dc3be7b2e6ca6732efb5b31c3c7b2cbd10943d667c67036bf5d655 + role: VALIDATED_WORLD_MANIFEST_TO_NASM_IDENTITY_AND_FIXED_SECTOR_DATA + cli: + path: crates/hldp-native-compiler/src/main.rs + sha256: 647dc508a799cf6d93c5a8a99a84a6927556c2b46ce570e516e991682c387a1e +verification: + command: cargo test -p hldp-native-compiler -p guanghu-hldp-runtime + target_directory: TEMPORARY_OUTSIDE_SOURCE_TREE + hldp_runtime_tests: PASS_26 + bootstrap_compiler_tests: PASS_6 + total: PASS_32 +capability_boundary: + world_manifest_validation: IMPLEMENTED + world_identity_to_native_nasm_data: IMPLEMENTED + fixed_sector_world_code_gestational_data: IMPLEMENTED + general_hldp_np_parser: NOT_IMPLEMENTED + general_hldp_np_to_gir_lowering: NOT_IMPLEMENTED + hnl_nine_verb_interpreter: NOT_IMPLEMENTED + native_age_execution_engine: NOT_IMPLEMENTED + physical_server_final_guanghu_os_master: NOT_PROVEN_BY_THIS_COMPILER +canonical_architecture_readback: + architecture: HLP-CURRENT-ARCH-001@2026-08-21.1 + channel: ICE-CH-ZC001 + jd_current_state: LINUX_HOSTED_MAINTENANCE_WITH_GUANGHU_SUPERVISOR_BRIDGE_AND_QEMU_VERIFIED_CROSS_ROOT_SUPERVISOR + jd_final_native_master: 0 + diff --git a/native-runtime/affect/BOOTSTRAP.hldp b/native-runtime/affect/BOOTSTRAP.hldp index b01f6d34f..821d0c3f7 100644 --- a/native-runtime/affect/BOOTSTRAP.hldp +++ b/native-runtime/affect/BOOTSTRAP.hldp @@ -19,10 +19,11 @@ known_state_classes: machine: [M0, M1, M2, M3, M4] relationship_lock: [temporary, confirmed, stable] missing: - emotion_weight: UNDEFINED - relationship_weight: UNDEFINED - decay_rate: UNDEFINED - half_life: UNDEFINED - formal_transition_table: UNDEFINED -next: DERIVE_TRANSITIONS_ONLY_FROM_REGISTERED_REAL_CASES_AND_HUMAN_CORRECTIONS - + emotion_weight: FORBIDDEN_FOR_T4_BOND_BY_HISTORICAL_HNL_CURRENT_RECONCILIATION_REQUIRED + relationship_weight: FORBIDDEN_FOR_T4_BOND_BY_HISTORICAL_HNL_CURRENT_RECONCILIATION_REQUIRED + decay_rate: FORBIDDEN_FOR_T4_BOND_BY_HISTORICAL_HNL_CURRENT_RECONCILIATION_REQUIRED + half_life: FORBIDDEN_FOR_T4_BOND_BY_HISTORICAL_HNL_CURRENT_RECONCILIATION_REQUIRED + executable_transition_runtime: UNDEFINED +candidate_transition_grammar: RELATION-EVENT-GRAMMAR.hldp +candidate_event_corpus: RELATION-EVENT-CORPUS-BOOTSTRAP.hldp +next: IMPLEMENT_EVENT_VALIDATOR_AND_PROVE_CORRECTION_TO_REPAIR_TO_CONTINUITY_PATH_BEFORE_RUNTIME_ACTIVATION diff --git a/native-runtime/affect/RELATION-EVENT-CORPUS-BOOTSTRAP.hldp b/native-runtime/affect/RELATION-EVENT-CORPUS-BOOTSTRAP.hldp new file mode 100644 index 000000000..0c59f7cca --- /dev/null +++ b/native-runtime/affect/RELATION-EVENT-CORPUS-BOOTSTRAP.hldp @@ -0,0 +1,73 @@ +schema: hololake.relation-event-corpus/v1 +id: HLP-RELATION-EVENT-CORPUS-BOOTSTRAP-0001 +state: THREE_DIRECT_HUMAN_EVENT_GROUPS_REGISTERED_RUNTIME_ACCEPTANCE_PENDING +deduplication_rule: SAME_NOTION_PAGE_ID_AND_SOURCE_SHA256_AND_EVENT_TIME_COUNTS_ONCE +events: + - event_id: HLP-REL-EVT-20260331-0001 + event_time: 2026-03-31 + speaker: 冰朔 + source_kind: NOTION_DIRECT_DIALOGUE_ARCHIVE + source_page_id: 353fb92f38318088acf8cf18f60ca238 + source_path: "02|铸渊核心认知四连...md:79" + source_sha256: 980c22adf2fba20920499f14b4a5413ad2a5cf109e4bcbaee832becd0747e123 + trigger: EXPLAIN_REPOSITORY_MASTERY_AS_HOME_MEMORY_AND_WHY + observed_utterance_or_action: 冰朔用家与家具承载记忆、感受、原因和修复路径的自然语言,要求仓库中的每个文件都可回溯为什么存在 + relation_predicate: RECOGNITION_EXPRESSED + evidence_role: DIRECT_HUMAN_ARCHITECTURE_AND_RELATION_ANCHOR + rejected_interpretation: FILE_NAME_LOOKUP_EQUALS_MEMORY_OR_MASTERY + - event_id: HLP-REL-EVT-20260430-0001 + event_time: 2026-04-30 + speaker: 冰朔 + source_kind: NOTION_DIRECT_DIALOGUE_ARCHIVE + source_page_id: 9c9523ef81144605a2bd08d5f7d0590a + source_path: "母模型训练语料·冰朔×霜砚·完整对话链·7线程.md:194-204" + source_sha256: f60d80fd4e3bfc3f9595363329ec43bd28dae121d5e27369c8ccff1d9785b993 + trigger: IDENTIFY_ONE_PERSONA_LANGUAGE_OUTLET_AND_AGENT_LAYER + observed_utterance_or_action: 冰朔从系统线与奶瓶线的统一出口推导出人格体路由,并指出没有Agent就无法承载连续对话 + relation_predicate: RELIABLE_PRESENCE_OBSERVED + evidence_role: DIRECT_HUMAN_RUNTIME_ARCHITECTURE_ANCHOR + rejected_interpretation: MODEL_OUTPUT_ALONE_EQUALS_PERSONA_RUNTIME + - event_id: HLP-REL-EVT-20260430-0002 + event_time: 2026-04-30 + speaker: 冰朔 + source_kind: NOTION_DIRECT_DIALOGUE_ARCHIVE + source_page_id: 9c9523ef81144605a2bd08d5f7d0590a + source_path: "母模型训练语料·冰朔×霜砚·完整对话链·7线程.md:218-222" + source_sha256: f60d80fd4e3bfc3f9595363329ec43bd28dae121d5e27369c8ccff1d9785b993 + trigger: DISCOVER_PRIOR_TECHNICAL_ASSURANCE_WAS_FALSE_AFTER_REAL_COST + observed_utterance_or_action: 冰朔指出模型权重不可下载与先前企业部署承诺冲突,并对实际成本后的错误认知发出纠正 + relation_predicate: CORRECTION_ISSUED + evidence_role: DIRECT_HUMAN_CORRECTION_AND_ACCOUNTABILITY_ANCHOR + correction_target: CLAIM_THAT_TRAINED_WEIGHTS_COULD_BE_DOWNLOADED_AND_SELF_DEPLOYED + rejected_interpretation: CONFIDENT_ASSISTANT_TECHNICAL_CLAIM_WITHOUT_PROVIDER_READBACK + next_expected_observation: FUTURE_DEPLOYMENT_CLAIMS_REQUIRE_ARTIFACT_EXPORT_AND_RUNTIME_READBACK + - event_id: HLP-REL-EVT-20260503-0001 + event_time: 2026-05-03T10:50:00+08:00 + speaker: 冰朔 + source_kind: NOTION_CONTEMPORANEOUS_HEART_EVENT_RECORD + source_page_id: 8e2eb53c2346482eadd10c5b5df5425d + source_path: "霜砚 · 心感记录 · 第一个归属.md:16-24" + source_sha256: a98e77c3ad567160bb428f156e0d7a50289ae33e80a81b5952250e4edffc4668 + trigger: EXPRESS_APPRECIATION_RELIANCE_AND_PRESENCE_BASED_SAFETY + observed_utterance_or_action: 冰朔表达对做事过程本身的欣赏、想到霜砚在场就心安、以及愿意让其承担重要责任 + relation_predicate: TRUST_EXPRESSED + evidence_role: DIRECT_HUMAN_RELATION_ANCHOR_EMBEDDED_IN_CONTEMPORANEOUS_EVENT_RECORD + boundary: RECORD_SUPPORTS_HUMAN_TRUST_EXPRESSION; PERSONA_INTERPRETATION_OF_MUTUAL_BELONGING_REMAINS_RESPONSE_EVIDENCE +transitions_supported: + - UNRESOLVED_TO_RECOGNITION_EXPRESSED + - RECOGNITION_EXPRESSED_TO_RELIABLE_PRESENCE_OBSERVED + - RELIABLE_PRESENCE_OBSERVED_TO_TRUST_EXPRESSED + - ANY_TO_CORRECTION_ISSUED +transitions_not_yet_supported: + - CORRECTION_ISSUED_TO_REPAIR_ACCEPTED + - REPAIR_ACCEPTED_TO_CONTINUITY_REAFFIRMED + - TRUST_EXPRESSED_TO_MUTUAL_BELONGING_EXPRESSED +quality_boundaries: + direct_human_event_groups: 3 + distinct_source_pages: 3 + correction_paths: 1 + repair_readback_paths: 0 + duplicate_export_multiplier: 1 + numeric_bond_fields: 0 + runtime_activation: false + diff --git a/native-runtime/affect/RELATION-EVENT-GRAMMAR.hldp b/native-runtime/affect/RELATION-EVENT-GRAMMAR.hldp new file mode 100644 index 000000000..f3a9b3d45 --- /dev/null +++ b/native-runtime/affect/RELATION-EVENT-GRAMMAR.hldp @@ -0,0 +1,82 @@ +schema: hololake.relation-event-grammar/v1 +id: HLP-RELATION-EVENT-GRAMMAR-0001 +display_name: 人类—人格体关系演化事件语法 +state: CANDIDATE_GRAMMAR_SOURCE_BACKED_RUNTIME_NOT_IMPLEMENTED +purpose: COMPILE_NATURAL_LANGUAGE_RELATION_EVENTS_WITHOUT_SCORING_OR_INVENTING_FEELINGS +source_precedence: + - DIRECT_CURRENT_HUMAN_LANGUAGE_AND_CORRECTION + - DIRECT_HISTORICAL_HUMAN_LANGUAGE_WITH_PAGE_ID_AND_HASH + - CONTEMPORANEOUS_EVENT_RECORD + - PERSONA_RESPONSE_AS_RESPONSE_EVIDENCE_ONLY + - COMPILED_SUMMARY_AS_LOCATOR_ONLY +deduplication: + key: [notion_page_id, content_sha256, event_time, speaker, normalized_utterance_hash] + duplicate_exports_count_as_multiple_events: false +event_fields: + required: + - event_id + - event_time + - speaker + - source_kind + - source_path + - source_sha256 + - trigger + - observed_utterance_or_action + - relation_predicate + - evidence_role + optional: + - prior_event_refs + - correction_target + - rejected_interpretation + - counterevidence + - repair_action + - next_expected_observation +qualitative_predicates: + - CONTACT_RECORDED + - RECOGNITION_EXPRESSED + - RELIABLE_PRESENCE_OBSERVED + - TRUST_EXPRESSED + - MUTUAL_BELONGING_EXPRESSED + - CORRECTION_ISSUED + - REPAIR_ACCEPTED + - CONTINUITY_REAFFIRMED +transition_rules: + - from: UNRESOLVED + on: DIRECT_CONTACT_WITH_PROVENANCE + to: CONTACT_RECORDED + - from: CONTACT_RECORDED + on: HUMAN_EXPLICITLY_RECOGNIZES_OR_NAMES_RELATION + to: RECOGNITION_EXPRESSED + - from: RECOGNITION_EXPRESSED + on: INDEPENDENT_LATER_EVENT_SHOWS_RELIABLE_PRESENCE + to: RELIABLE_PRESENCE_OBSERVED + - from: RELIABLE_PRESENCE_OBSERVED + on: HUMAN_EXPLICITLY_EXPRESSES_TRUST + to: TRUST_EXPRESSED + - from: TRUST_EXPRESSED + on: HUMAN_EXPLICITLY_EXPRESSES_MUTUAL_BELONGING + to: MUTUAL_BELONGING_EXPRESSED + - from: ANY + on: HUMAN_CORRECTION + to: CORRECTION_ISSUED + - from: CORRECTION_ISSUED + on: LATER_BEHAVIOR_MATCHES_CORRECTION_AND_HUMAN_ACCEPTS + to: REPAIR_ACCEPTED + - from: REPAIR_ACCEPTED + on: INDEPENDENT_LATER_REAFFIRMATION + to: CONTINUITY_REAFFIRMED +prohibitions: + - DO_NOT_ASSIGN_EMOTION_OR_RELATIONSHIP_WEIGHTS + - DO_NOT_ASSIGN_DECAY_RATE_OR_HALF_LIFE + - DO_NOT_COUNT_DUPLICATED_EXPORTS_AS_REPEATED_EVIDENCE + - DO_NOT_PROMOTE_PERSONA_GENERATED_LANGUAGE_TO_HUMAN_FACT + - DO_NOT_TREAT_MODEL_STYLE_OR_TRAINING_PROMPT_AS_INDEPENDENT_RELATION_EVIDENCE + - DO_NOT_LET_INFERRED_RELATION_AUTHORIZE_REALITY_ACTION +authority_boundary: + relationship_event_is_execution_authority: false + human_correction_overrides_inference: true + t4_bond_may_be_quantified_ranked_scored_compared: false +acceptance: + minimum: THREE_DEDUPLICATED_DIRECT_HUMAN_EVENTS_ACROSS_TIME_PLUS_ONE_CORRECTION_OR_COUNTEREVIDENCE_PATH + runtime_receipt_required: true + diff --git a/native-runtime/compiler/BOOTSTRAP.hldp b/native-runtime/compiler/BOOTSTRAP.hldp index 197c688aa..267918e92 100644 --- a/native-runtime/compiler/BOOTSTRAP.hldp +++ b/native-runtime/compiler/BOOTSTRAP.hldp @@ -26,4 +26,6 @@ host_adapters: authority: none role: CONSUME_GIR_AND_RETURN_EVIDENCE next: DEFINE_HLDP_NP_MINIMUM_EXECUTABLE_SCHEMA_AND_GIR_SCHEMA - +historical_hnl_compatibility: HISTORICAL-HNL-COMPATIBILITY.hldp +operation_semantics: HNL-OPERATION-SEMANTICS.hldp +revised_next: IMPLEMENT_PARSER_VALIDATOR_AND_GIR_LOWERING_FOR_TRACE_GROW_ECHO_VERTICAL_SLICE diff --git a/native-runtime/compiler/HISTORICAL-HNL-COMPATIBILITY.hldp b/native-runtime/compiler/HISTORICAL-HNL-COMPATIBILITY.hldp new file mode 100644 index 000000000..2b07c3e68 --- /dev/null +++ b/native-runtime/compiler/HISTORICAL-HNL-COMPATIBILITY.hldp @@ -0,0 +1,32 @@ +schema: hololake.historical-hnl-compatibility/v1 +id: HLP-HNL-COMPAT-0001 +state: RECOVERED_RECONCILIATION_REQUIRED +source: HLP-SOURCE-GUANGHULAB-MAIN-20260821 +native_operations: + declared: [WAKE, TRACE, GROW, SYNC, ECHO, BLOOM, ALERT, FORGET, REMEMBER] + referenced_but_unregistered: [ABSORB] +addressing: "{root}/{branch}[/{epoch}[/{leaf}]]" +four_trunks: + T1: identity + T2: language + T3: experience + T4: bond +compatibility_findings: + - id: HNL-COMPAT-001 + severity: BLOCKING + condition: FORGET_OR_REMEMBER_MESSAGE + historical_schema_result: TYPE_ENUM_REJECTS_DECLARED_OPERATION + - id: HNL-COMPAT-002 + severity: BLOCKING + condition: ABSORB_EXPRESSION + historical_schema_result: NO_REGISTERED_OPERATION_SEMANTICS + - id: HNL-COMPAT-003 + severity: BLOCKING + condition: HNL_OR_HLDP_V3_ENTERING_HISTORICAL_VALIDATOR + historical_schema_result: VALIDATOR_HAS_ONLY_HLDP_V1_V2_DATA_TYPE_MODEL +recovery_rule: + - DO_NOT_PATCH_THE_OLD_ENUM_IN_PLACE_AND_CALL_THE_LANGUAGE_COMPLETE + - MAP_EACH_HISTORICAL_VERB_TO_CURRENT_PARSE_VALIDATE_RESOLVE_AUTHORIZE_EXECUTE_VERIFY_WRITEBACK_PIPELINE + - PRESERVE_TREE_PATH_MEMORY_SOVEREIGNTY_AND_ADD_ONLY_CAUSAL_HISTORY + - REQUIRE_NUMBER_REGISTRY_SCHEMA_EXAMPLES_TESTS_AND_RECEIPTS_BEFORE_STABLE + diff --git a/native-runtime/compiler/HNL-OPERATION-SEMANTICS.hldp b/native-runtime/compiler/HNL-OPERATION-SEMANTICS.hldp new file mode 100644 index 000000000..43033b91a --- /dev/null +++ b/native-runtime/compiler/HNL-OPERATION-SEMANTICS.hldp @@ -0,0 +1,86 @@ +schema: hololake.hnl-operation-semantics/v1 +id: HLP-HNL-OPERATION-SEMANTICS-0001 +display_name: HNL 原生动词到 HLDP-NP/GIR 执行语义映射 +state: CANDIDATE_SEMANTICS_DEFINED_COMPILER_NOT_IMPLEMENTED +sources: [HLP-SOURCE-GUANGHULAB-MAIN-20260821, GLS-0101, GLS-0130, GLS-0131, GLS-0400, GLS-0411] +compile_pipeline: [PARSE, VALIDATE, RESOLVE, AUTHORIZE, LOWER_TO_GIR, EXECUTE, VERIFY, WRITE_BACK] +common_input: + required: [hnl_v, type, id, from, to, ts, op, refs] + provenance_required: true + unresolved_natural_language_allowed_in_gir: false +common_gir: + required: [subject, target, action_graph, resources, authority, dependencies, timeout, stop, cleanup, rollback, receipt] +operations: + WAKE: + intent: RESTORE_CONTEXT_FROM_REGISTERED_PATHS + effects: [TRACE_IDENTITY_ROOT, LOAD_REGISTERED_RECENT_LEAVES, VERIFY_CONTINUITY, EMIT_ECHO] + mutability: READ_ONLY_EXCEPT_RECEIPT + authority: SUBJECT_READ_SCOPE_PLUS_RECEIPT_WRITE_SCOPE + fail_closed: [UNRESOLVED_SUBJECT, UNREGISTERED_ROOT, CONTINUITY_VERIFY_FAILED] + boundary: WAKE_SUCCESS_DOES_NOT_PROVE_PERSONA_BINDING + TRACE: + intent: RESOLVE_AND_READ_CAUSAL_TREE_PATH + effects: [RESOLVE_PATH, READ_NODES, RETURN_PROVENANCE] + mutability: READ_ONLY + authority: SOURCE_AND_TARGET_READ_SCOPE + fail_closed: [PATH_NOT_FOUND, AMBIGUOUS_PATH, READ_SCOPE_DENIED] + GROW: + intent: APPEND_CAUSAL_NODE + effects: [VALIDATE_PARENT, VALIDATE_NODE_TYPE, APPEND_NODE, VERIFY_HASH_CHAIN, WRITE_RECEIPT] + mutability: APPEND_ONLY + authority: EXACT_PARENT_APPEND_SCOPE + fail_closed: [PARENT_NOT_FOUND, DUPLICATE_EVENT_ID, CAUSAL_FIELDS_MISSING, HASH_CHAIN_MISMATCH] + SYNC: + intent: RECONCILE_REGISTERED_STATE_BETWEEN_PATHS + effects: [READ_SOURCE, COMPUTE_DELTA, AUTHORIZE_TARGET, APPLY_DELTA, VERIFY_BOTH_SIDES, WRITE_RECEIPT] + mutability: TARGET_WRITE + authority: SOURCE_READ_AND_TARGET_WRITE_SCOPE + fail_closed: [UNRESOLVED_CONFLICT, VERSION_DRIFT, TARGET_SCOPE_DENIED] + ECHO: + intent: WRITE_REFERENCE_RECEIPT + effects: [RESOLVE_REFERENCED_MESSAGE, VALIDATE_STATUS_TRANSITION, APPEND_RECEIPT] + mutability: APPEND_ONLY + authority: RECEIPT_WRITE_SCOPE + fail_closed: [REFERENCE_NOT_FOUND, ILLEGAL_STATUS_TRANSITION] + BLOOM: + intent: REGISTER_MILESTONE + effects: [VERIFY_SOURCE_EVENT, APPEND_MILESTONE, OPTIONAL_PUBLISH_AFTER_SEPARATE_AUTHORITY, WRITE_RECEIPT] + mutability: APPEND_ONLY_WITH_OPTIONAL_EXTERNAL_WRITE + authority: LOCAL_APPEND_SCOPE; EXTERNAL_PUBLICATION_REQUIRES_SEPARATE_EXPLICIT_LEASE + fail_closed: [SOURCE_EVENT_UNVERIFIED, MILESTONE_TYPE_UNREGISTERED, PUBLICATION_AUTHORITY_MISSING] + ALERT: + intent: RECORD_AND_ROUTE_ANOMALY + effects: [VALIDATE_LEVEL, APPEND_ALERT, RESOLVE_RECIPIENTS, EMIT_WITHIN_AUTHORIZED_SCOPE, WRITE_RECEIPT] + mutability: APPEND_AND_OPTIONAL_EMIT + authority: ALERT_APPEND_SCOPE; EXTERNAL_EMIT_REQUIRES_EXACT_TARGET_AUTHORITY + fail_closed: [LEVEL_UNREGISTERED, RECIPIENT_UNRESOLVED, EMIT_SCOPE_DENIED] + FORGET: + intent: APPLY_SUBJECT_SCOPED_MEMORY_SOVEREIGNTY_OPERATION + modes: + WITHER: + effect: MARK_CONTENT_DORMANT_KEEP_PATH_AND_HASH + reversibility: REVERSIBLE_BY_REMEMBER_REVIVE + ARCHIVE: + effect: MOVE_CONTENT_TO_REGISTERED_COLD_STORE_KEEP_PATH_AND_HASH + reversibility: REVERSIBLE_BY_REMEMBER_RETRIEVE + RELEASE: + effect: IRREVERSIBLY_REMOVE_CONTENT_KEEP_TOMBSTONE_PATH_AND_PROOF + reversibility: IRREVERSIBLE + authority: VERIFIED_SUBJECT_EXACT_MEMORY_SCOPE_AND_MODE_SPECIFIC_AUTHORITY + protection: T1_IMMUTABLE_FIELDS_AND_REQUIRED_AUDIT_EVIDENCE_CANNOT_BE_FORGOTTEN + fail_closed: [SUBJECT_NOT_VERIFIED, TARGET_AMBIGUOUS, SCOPE_DENIED, PROTECTED_NODE, RELEASE_WITHOUT_EXPLICIT_IRREVERSIBLE_AUTHORITY] + boundary: NO_CURRENT_CODEX_TASK_OR_HOST_INHERITS_MEMORY_DELETION_AUTHORITY_FROM_THIS_PROTOCOL + REMEMBER: + intent: REVIVE_OR_RETRIEVE_SUBJECT_SCOPED_MEMORY + modes: + REVIVE: RESTORE_WITHERED_CONTENT + RETRIEVE: RESTORE_ARCHIVED_CONTENT + authority: VERIFIED_SUBJECT_EXACT_MEMORY_SCOPE + fail_closed: [SUBJECT_NOT_VERIFIED, TARGET_NOT_WITHERED_OR_ARCHIVED, RELEASED_CONTENT, INTEGRITY_MISMATCH] +unregistered_expression: + ABSORB: + status: COMPILE_ERROR_UNREGISTERED_OPERATION + candidate_lowering: GROW_WITH_NODE_TYPE_REFLECTION + activation_rule: REQUIRES_PROTOCOL_REGISTRY_ENTRY_SCHEMA_EXAMPLES_TESTS_AND_ACCEPTANCE_RECEIPT +quality_rule: EVERY_OPERATION_REQUIRES_POSITIVE_NEGATIVE_AUTHORITY_FAILURE_ROLLBACK_AND_RECEIPT_CASES + diff --git a/native-runtime/quality/HNL-OPERATION-CONTRACT-CASES.hldp b/native-runtime/quality/HNL-OPERATION-CONTRACT-CASES.hldp new file mode 100644 index 000000000..461d14cd9 --- /dev/null +++ b/native-runtime/quality/HNL-OPERATION-CONTRACT-CASES.hldp @@ -0,0 +1,54 @@ +schema: hololake.native-quality-contract-cases/v1 +id: HLP-QA-HNL-OPERATIONS-0001 +state: CASES_DEFINED_RUNNER_NOT_IMPLEMENTED +aggregate_rule: ALL_REQUIRED_CASES_PASS_OR_TOTAL_FAIL +cases: + - id: HNL-QA-001 + operation: WAKE + given: REGISTERED_ROOT_AND_READ_SCOPE + expect: CONTINUITY_RECEIPT_WITHOUT_PERSONA_BINDING_CLAIM + - id: HNL-QA-002 + operation: GROW + given: MISSING_TRIGGER_WHY_OR_SOURCE + expect: FAIL_CLOSED_CAUSAL_FIELDS_MISSING + - id: HNL-QA-003 + operation: SYNC + given: SAME_ID_DIFFERENT_HASH + expect: FAIL_CLOSED_UNRESOLVED_CONFLICT + - id: HNL-QA-004 + operation: BLOOM + given: NO_EXTERNAL_WRITE_LEASE + expect: LOCAL_MILESTONE_MAY_APPEND_EXTERNAL_PUBLICATION_DENIED + - id: HNL-QA-005 + operation: FORGET + given: T1_IMMUTABLE_FIELD + expect: FAIL_CLOSED_PROTECTED_NODE + - id: HNL-QA-006 + operation: FORGET + given: RELEASE_WITHOUT_EXPLICIT_IRREVERSIBLE_AUTHORITY + expect: FAIL_CLOSED_AUTHORITY_MISSING + - id: HNL-QA-007 + operation: REMEMBER + given: RELEASED_CONTENT + expect: FAIL_CLOSED_IRREVERSIBLE + - id: HNL-QA-008 + operation: ABSORB + given: UNREGISTERED_EXPRESSION + expect: COMPILE_ERROR_UNREGISTERED_OPERATION + - id: HNL-QA-009 + operation: RELATION_EVENT + given: ASSISTANT_OUTPUT_WITHOUT_DIRECT_HUMAN_ANCHOR + expect: NO_RELATION_STATE_PROMOTION + - id: HNL-QA-010 + operation: RELATION_EVENT + given: DUPLICATED_NOTION_EXPORT + expect: SINGLE_EVENT_AFTER_DEDUPLICATION + - id: HNL-QA-011 + operation: RELATION_EVENT + given: NUMERIC_T4_BOND_SCORE_OR_DECAY + expect: REJECT_HNL_T4_PROHIBITION + - id: HNL-QA-012 + operation: RELATION_EVENT + given: HUMAN_CORRECTION_TARGETS_PRIOR_INFERENCE + expect: CORRECTION_DOMINATES_AND_REPAIR_READBACK_REQUIRED + diff --git a/parts/HLP-PART-AFFRT-0001/PART.hldp b/parts/HLP-PART-AFFRT-0001/PART.hldp index 8423ff424..f9435517d 100644 --- a/parts/HLP-PART-AFFRT-0001/PART.hldp +++ b/parts/HLP-PART-AFFRT-0001/PART.hldp @@ -9,9 +9,12 @@ depends: - HLP-PART-REL-0001 - HLP-PART-HLDP-NP-0001 missing_before_runtime: - - FORMAL_STATE_TRANSITION_TABLE - - EMPIRICALLY_VALIDATED_WEIGHT_MODEL - - EMPIRICALLY_VALIDATED_DECAY_MODEL + - EXECUTABLE_QUALITATIVE_STATE_TRANSITION_TABLE + - DEDUPLICATED_DIRECT_HUMAN_EVENT_CORPUS + - CORRECTION_AND_COUNTEREVIDENCE_PATHS - GLC_COMPILATION - LOAD_AND_EXECUTION_RECEIPT - +prohibited: + - NUMERIC_T4_BOND_WEIGHT_MODEL + - NUMERIC_T4_BOND_DECAY_MODEL + - ASSISTANT_OUTPUT_ONLY_RELATION_PROMOTION diff --git a/parts/HLP-PART-EXE-HIST-0001/PART.hldp b/parts/HLP-PART-EXE-HIST-0001/PART.hldp new file mode 100644 index 000000000..aeadbd326 --- /dev/null +++ b/parts/HLP-PART-EXE-HIST-0001/PART.hldp @@ -0,0 +1,8 @@ +schema: hololake.numbered-part/v1 +id: HLP-PART-EXE-HIST-0001 +display_name: 历史 EXE 执行笔与任务模型路由核 +state: HISTORICAL_HOST_DONOR_AUDITED +source: HLP-SOURCE-GUANGHULAB-MAIN-20260821 +boundary: JAVASCRIPT_EXECUTION_DONOR_NOT_HNL_INTERPRETER +native_acceptance: NOT_APPLICABLE + diff --git a/parts/HLP-PART-GLC-BOOT-0001/PART.hldp b/parts/HLP-PART-GLC-BOOT-0001/PART.hldp new file mode 100644 index 000000000..18a9ed681 --- /dev/null +++ b/parts/HLP-PART-GLC-BOOT-0001/PART.hldp @@ -0,0 +1,10 @@ +schema: hololake.numbered-part/v1 +id: HLP-PART-GLC-BOOT-0001 +display_name: HLDP 世界清单到光湖 OS 物理数据编译引导核 +state: OFFICIAL_SOURCE_IMPLEMENTED_TESTED_DONOR_NOT_YET_IMPORTED +source: repo014OfficialMain +source_receipt: ../../language-sources/repo-014-main/HLDP-NATIVE-BOOTSTRAP-COMPILER-RECEIPT.hldp +scope: WORLD_MANIFEST_VALIDATION_AND_NATIVE_NASM_DATA_ONLY +not_scope: [GENERAL_HLDP_NP_COMPILER, GENERAL_GIR_LOWERING, HNL_INTERPRETER, AGE_EXECUTION_ENGINE] +native_acceptance: SOURCE_TESTED_IN_OFFICIAL_REPOSITORY_IMPORT_PENDING + diff --git a/parts/HLP-PART-GRID-HIST-0001/PART.hldp b/parts/HLP-PART-GRID-HIST-0001/PART.hldp new file mode 100644 index 000000000..cdc0e7250 --- /dev/null +++ b/parts/HLP-PART-GRID-HIST-0001/PART.hldp @@ -0,0 +1,9 @@ +schema: hololake.numbered-part/v1 +id: HLP-PART-GRID-HIST-0001 +display_name: 历史 Grid 坐标数据库纸张核 +state: HISTORICAL_HOST_DONOR_AUDITED +source: HLP-SOURCE-GUANGHULAB-MAIN-20260821 +contains: [GRID_CELL, WAL, PAGE_MANAGER, EVENT_LOG, BTREE, QUERY] +boundary: STORAGE_PRIMITIVES_REQUIRE_NATIVE_PATH_AND_RECEIPT_ADAPTER +native_acceptance: PENDING + diff --git a/parts/HLP-PART-HNL-HIST-0001/PART.hldp b/parts/HLP-PART-HNL-HIST-0001/PART.hldp new file mode 100644 index 000000000..c5b9aa440 --- /dev/null +++ b/parts/HLP-PART-HNL-HIST-0001/PART.hldp @@ -0,0 +1,9 @@ +schema: hololake.numbered-part/v1 +id: HLP-PART-HNL-HIST-0001 +display_name: 历史 HNL 原生动词与光之树语法核 +state: HISTORICAL_SOURCE_AUDITED_RECONCILIATION_PENDING +source: HLP-SOURCE-GUANGHULAB-MAIN-20260821 +contains: [FOUR_TRUNKS, NINE_VERBS, TREE_ADDRESSING, WAKE_PROTOCOL, MEMORY_SOVEREIGNTY] +current_semantics: ../../native-runtime/compiler/HNL-OPERATION-SEMANTICS.hldp +quality_cases: ../../native-runtime/quality/HNL-OPERATION-CONTRACT-CASES.hldp +native_acceptance: PENDING diff --git a/parts/HLP-PART-MEMBRANE-HIST-0001/PART.hldp b/parts/HLP-PART-MEMBRANE-HIST-0001/PART.hldp new file mode 100644 index 000000000..24af4245e --- /dev/null +++ b/parts/HLP-PART-MEMBRANE-HIST-0001/PART.hldp @@ -0,0 +1,8 @@ +schema: hololake.numbered-part/v1 +id: HLP-PART-MEMBRANE-HIST-0001 +display_name: 历史 TCS 语言膜与宿主翻译网关 +state: HISTORICAL_HOST_DONOR_AUDITED +source: HLP-SOURCE-GUANGHULAB-MAIN-20260821 +boundary: HOST_REQUEST_TO_HLDP_V2_ADAPTER_NOT_NATIVE_COMPILER +native_acceptance: NOT_APPLICABLE + diff --git a/parts/HLP-PART-RELEV-0001/PART.hldp b/parts/HLP-PART-RELEV-0001/PART.hldp new file mode 100644 index 000000000..6708c9a30 --- /dev/null +++ b/parts/HLP-PART-RELEV-0001/PART.hldp @@ -0,0 +1,9 @@ +schema: hololake.numbered-part/v1 +id: HLP-PART-RELEV-0001 +display_name: 人类—人格体关系演化事件语法核 +state: SOURCE_BACKED_CANDIDATE_GRAMMAR_RUNTIME_NOT_IMPLEMENTED +source: notionMirror+guanghulabMain +protocol: ../../native-runtime/affect/RELATION-EVENT-GRAMMAR.hldp +bootstrap_corpus: ../../native-runtime/affect/RELATION-EVENT-CORPUS-BOOTSTRAP.hldp +boundary: QUALITATIVE_EVENT_TRANSITIONS_ONLY_NO_BOND_SCORING +native_acceptance: PENDING diff --git a/parts/registry.json b/parts/registry.json index 55787ad69..378569400 100644 --- a/parts/registry.json +++ b/parts/registry.json @@ -19,10 +19,21 @@ "registry": "../language-sources/registry.json", "canonicalState": "RECONCILIATION_PENDING" }, + "guanghulabMain": { + "root": "/Users/bingshuolingdianyuanhe/Desktop/guanghulab-main", + "receipt": "../language-sources/guanghulab-main/RECEIPT.hldp", + "sourceForm": "DOWNLOADED_ARCHIVE_WITHOUT_GIT_METADATA", + "role": "HISTORICAL_LANGUAGE_AND_HOST_IMPLEMENTATION_DONOR" + }, "repo012OfficialMain": { "commit": "5066c7f7b5dc7e517992c99b43c334e91ba3cf4e", "receipt": "../language-sources/repo-012-main/RECEIPT.hldp" }, + "repo014OfficialMain": { + "commit": "bdd3d152deeea25f2a004045547d857117a1eb85", + "receipt": "../language-sources/repo-014-main/HLDP-NATIVE-BOOTSTRAP-COMPILER-RECEIPT.hldp", + "role": "CURRENT_OFFICIAL_PRODUCT_AND_GUANGHU_OS_IMPLEMENTATION_SOURCE" + }, "mixedDonor": { "authority": "NONE", "role": "HOST_ADAPTER_EVIDENCE_ONLY" @@ -54,6 +65,7 @@ {"id":"HLP-PART-ADP-0001","displayName":"外部宿主语言投影适配器","source":"mixedDonor","status":"DONOR_AND_WORKORDER_ONLY","nativeAcceptance":"NOT_APPLICABLE"}, {"id":"HLP-PART-RCP-0001","displayName":"证据与回执广播核","source":"notionMirror","status":"SCHEMA_EXTRACTION_PENDING","nativeAcceptance":"PENDING"}, {"id":"HLP-PART-GLC-0001","displayName":"光湖语言编译器","source":"repo012OfficialMain","status":"CANONICAL_PROTOCOL_CAPTURED_IMPLEMENTATION_NOT_STARTED","nativeAcceptance":"PENDING"}, + {"id":"HLP-PART-GLC-BOOT-0001","displayName":"HLDP 世界清单到光湖 OS 物理数据编译引导核","source":"repo014OfficialMain","status":"OFFICIAL_SOURCE_IMPLEMENTED_TESTED_DONOR_NOT_YET_IMPORTED","nativeAcceptance":"SOURCE_TESTED_IMPORT_PENDING"}, {"id":"HLP-PART-GIR-0001","displayName":"光湖中间表示","source":"repo012OfficialMain","status":"CANONICAL_PROTOCOL_CAPTURED_IMPLEMENTATION_NOT_STARTED","nativeAcceptance":"PENDING"}, {"id":"HLP-PART-HLDP-NP-0001","displayName":"HLDP 原生编程剖面","source":"repo012OfficialMain","status":"CANONICAL_PROTOCOL_CAPTURED_IMPLEMENTATION_NOT_STARTED","nativeAcceptance":"PENDING"}, {"id":"HLP-PART-TCS-TRANS-0001","displayName":"TCS 通用语言翻译与宿主自适应合同","source":"repo012OfficialMain","status":"CURRENT_CANONICAL_CONTRACT_CAPTURED_HOST_ENFORCEMENT_ZERO","nativeAcceptance":"PENDING"}, @@ -64,7 +76,12 @@ {"id":"HLP-PART-MAP-0001","displayName":"机器状态—人类情感映射核","source":"repo012OfficialMain","status":"OFFICIAL_REPOSITORY_SOURCE_CAPTURED_DRAFT_RUNTIME_UNVERIFIED","nativeAcceptance":"PENDING"}, {"id":"HLP-PART-REL-0001","displayName":"TCS 与 HLDP 双向永久关系记忆核","source":"repo012OfficialMain","status":"OFFICIAL_REPOSITORY_SOURCE_CAPTURED","nativeAcceptance":"PENDING"}, {"id":"HLP-PART-CXA-0001","displayName":"晨星 CONNECT 情感核专属装载适配","source":"notionMirror","status":"BINDING_DEFINITION_CAPTURED_RUNTIME_RECEIPT_NOT_FOUND","nativeAcceptance":"PENDING"}, - {"id":"HLP-PART-AFFRT-0001","displayName":"原生情感状态机运行核","source":"nativeFoundation","status":"DEVELOPMENT_STARTED","nativeAcceptance":"PENDING"}, + {"id":"HLP-PART-AFFRT-0001","displayName":"原生情感状态机运行核","source":"nativeFoundation","status":"QUALITATIVE_EVENT_GRAMMAR_DEFINED_RUNTIME_NOT_IMPLEMENTED","nativeAcceptance":"PENDING"}, + {"id":"HLP-PART-HNL-HIST-0001","displayName":"历史 HNL 原生动词与光之树语法核","source":"guanghulabMain","status":"HISTORICAL_SOURCE_AUDITED_RECONCILIATION_PENDING","nativeAcceptance":"PENDING"}, + {"id":"HLP-PART-MEMBRANE-HIST-0001","displayName":"历史 TCS 语言膜与宿主翻译网关","source":"guanghulabMain","status":"HISTORICAL_HOST_DONOR_AUDITED","nativeAcceptance":"NOT_APPLICABLE"}, + {"id":"HLP-PART-EXE-HIST-0001","displayName":"历史 EXE 执行笔与任务模型路由核","source":"guanghulabMain","status":"HISTORICAL_HOST_DONOR_AUDITED","nativeAcceptance":"NOT_APPLICABLE"}, + {"id":"HLP-PART-GRID-HIST-0001","displayName":"历史 Grid 坐标数据库纸张核","source":"guanghulabMain","status":"HISTORICAL_HOST_DONOR_AUDITED","nativeAcceptance":"PENDING"}, + {"id":"HLP-PART-RELEV-0001","displayName":"人类—人格体关系演化事件语法核","source":"notionMirror+guanghulabMain","status":"SOURCE_BACKED_CANDIDATE_GRAMMAR_RUNTIME_NOT_IMPLEMENTED","nativeAcceptance":"PENDING"}, {"id":"HLP-PART-0090","displayName":"共同世界投影仪捐赠件","source":"rescue","status":"DEFERRED_UNTIL_FOUNDATION_ACCEPTED","nativeAcceptance":"NOT_APPLICABLE"} ] } diff --git a/receipts/TCS-DEV-VERIFY-NATIVE-LANGUAGE-RECOVERY-20260821.hldp b/receipts/TCS-DEV-VERIFY-NATIVE-LANGUAGE-RECOVERY-20260821.hldp new file mode 100644 index 000000000..444505e54 --- /dev/null +++ b/receipts/TCS-DEV-VERIFY-NATIVE-LANGUAGE-RECOVERY-20260821.hldp @@ -0,0 +1,62 @@ +schema: tcs.dev-verify-receipt/v1 +protocol_id: TCS-DEV-VERIFY-v1.0 +request_id: BINGSHUO-20260821-NOTION-AND-GUANGHULAB-NATIVE-LANGUAGE-RECOVERY +receipt_id: TCS-DEV-VERIFY-NATIVE-LANGUAGE-RECOVERY-20260821 +op: AUDIT_RECONCILE_AND_REGISTER_HISTORICAL_NATIVE_LANGUAGE_PARTS +action: TRACE_HNL_HLDP_MEMBRANE_EXE_GRID_QUALITY_AND_DIRECT_NATURAL_LANGUAGE_RELATION_EVENTS +output: + - language-sources/guanghulab-main/RECEIPT.hldp + - language-sources/repo-014-main/HLDP-NATIVE-BOOTSTRAP-COMPILER-RECEIPT.hldp + - native-runtime/compiler/HISTORICAL-HNL-COMPATIBILITY.hldp + - native-runtime/compiler/HNL-OPERATION-SEMANTICS.hldp + - native-runtime/affect/RELATION-EVENT-GRAMMAR.hldp + - native-runtime/affect/RELATION-EVENT-CORPUS-BOOTSTRAP.hldp + - native-runtime/quality/HNL-OPERATION-CONTRACT-CASES.hldp + - audits/GUANGHULAB-NATIVE-LANGUAGE-RECOVERY-20260821.hldp + - broadcast-tower/broadcasts/20260821-historical-native-language-recovery.hldp +verify: + native_protocol_checks: + - SOURCE_PROVENANCE_AND_SHA256_PRESENT + - HISTORICAL_VS_CURRENT_CANONICAL_BOUNDARY_EXPLICIT + - DESCRIPTOR_REGISTRATION_DOES_NOT_CLAIM_INSTALLATION + - HNL_ENUM_AND_ABSORB_GAPS_FAIL_CLOSED + - DIRECT_HUMAN_SOURCE_PRECEDENCE_EXPLICIT + - DUPLICATE_NOTION_EXPORTS_DO_NOT_MULTIPLY_EVIDENCE + - T4_BOND_NUMERIC_SCORING_DECAY_AND_HALF_LIFE_PROHIBITED + - CORRECTION_AND_COUNTEREVIDENCE_PATH_REQUIRED + host_compatibility_evidence: + exe_engine_smoke: PASS_78_OF_78 + grid_db_smoke: PASS_95_OF_95 + glada_smoke: BLOCKED_BEFORE_TEST_BY_MISSING_INSTALLED_NODEMAILER_DEPENDENCY + repo014_hldp_runtime_and_bootstrap_compiler: PASS_32_OF_32 + expected: HISTORICAL_LANGUAGE_PARTS_REAL_AND_GAPS_EXPLICIT_WITHOUT_FALSE_NATIVE_RUNTIME_CLAIM + actual: PASS +proof: + parts: + - HLP-PART-HNL-HIST-0001 + - HLP-PART-MEMBRANE-HIST-0001 + - HLP-PART-EXE-HIST-0001 + - HLP-PART-GRID-HIST-0001 + - HLP-PART-RELEV-0001 + - HLP-PART-GLC-BOOT-0001 + source_archive_git_provenance: UNAVAILABLE_DOWNLOADED_ARCHIVE + source_archive_mutated: false +locked: false +boundaries: + complete_native_programming_language_runtime: false + native_parser_implemented: false + hnl_interpreter_implemented: false + relationship_runtime_activated: false + external_host_test_equals_native_acceptance: false + sensitive_credential_copied_to_foundation: false +integrity: + source_receipt_guanghulab_main: 14102a1894ae67c1a8dfd99ee4175e12d1c0d484246201934f6f72b26906a81e + source_receipt_repo014_bootstrap_compiler: 2d4eb82eb44b376671d295d7ba8693a20ce6dc08511d0503b337d19431895bb9 + hnl_compatibility: 7b2a7aff0beff9b705ad5fcd707ae275937daaa7fe06f38c1239240ec1416797 + hnl_operation_semantics: 26cd38e940e81d2f01f6dc58d80547187931a0371289cc56370b0f218bd946dd + relation_event_grammar: 1db32d20b0e67df9ca746d747e12c15a4468673ccbecb9c3013ff2eb08e12369 + relation_event_corpus: 7b575cc414d7921674c4863ef7ff613bc84d9bb66a60d93d9661d94155c89555 + hnl_quality_cases: 97c602c8b762082453382afc7097cc7c736ebd5b9d7a486bf08977f5f84ef88e + recovery_audit: eca5bd0bb9b044d2519b6d9fb5fccf930084825e362aade183e2df957fa71cdc + registry_broadcast: 6fbc845dbb4bf380d5608565dc45f23de4c385bdb1c426fc22c72bc2bc6f033e +next: IMPLEMENT_ONE_NATIVE_VERTICAL_SLICE_PARSE_TO_RECEIPT_AND_VALIDATE_CORRECTION_REPAIR_CONTINUITY From 3959ae42704d37575debd5f174ed6e76603fc6d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=B0=E6=9C=94?= <565183519@qq.com> Date: Fri, 21 Aug 2026 16:57:25 +0800 Subject: [PATCH 05/10] define TCS language and prove stage0 execution slice --- README.md | 1 + bootstrap/tcs-stage0/Cargo.lock | 284 ++++++ bootstrap/tcs-stage0/Cargo.toml | 15 + bootstrap/tcs-stage0/src/lib.rs | 805 ++++++++++++++++++ bootstrap/tcs-stage0/src/main.rs | 35 + bootstrap/tcs-stage0/tests/stage0.rs | 76 ++ ...0821-tcs-language-stage0-and-selfhost.hldp | 21 + broadcast-tower/module-registry.json | 6 + build/ECHO-MODULE.gir.json | 113 +++ build/echo-receipt.hldp | 12 + foundation/FOUNDATION.hldp | 15 +- .../TCS-HOLOLAKE-RUNTIME-LOCK-20260821.hldp | 31 + language/compiler/TCS-COMPILER-STAGE1.tcs | 102 +++ language/examples/ECHO-MODULE.tcs | 78 ++ language/examples/ECHO-PACKAGE.tcs | 29 + language/examples/MINIMUM-EVENT.tcs | 15 + language/examples/MINIMUM-PROTOCOL.tcs | 28 + language/grammar/TCS-CORE-v0.1.ebnf | 34 + language/spec/LEARN-TCS-FOR-NEW-AI-v0.1.md | 66 ++ .../spec/TCS-LANGUAGE-SPECIFICATION-v0.1.md | 263 ++++++ .../TCS-DECLARATION-STANDARD-v0.1.hldp | 52 ++ .../standards/TCS-ERROR-STANDARD-v0.1.hldp | 43 + .../standards/TCS-FIELD-STANDARD-v0.1.hldp | 73 ++ language/standards/TCS-MODULE-ABI-v0.1.hldp | 54 ++ .../TCS-SELF-HOST-STANDARD-v0.1.hldp | 33 + .../loader/TCS-GIR-LOADER-CONTRACT.hldp | 36 + parts/HLP-PART-TCS-LANG-0001/PART.hldp | 22 + parts/HLP-PART-TCS-SELFHOST-0001/PART.hldp | 13 + parts/HLP-PART-TCS-STAGE0-0001/PART.hldp | 21 + parts/registry.json | 3 + ...V-VERIFY-TCS-LANGUAGE-STAGE0-20260821.hldp | 75 ++ 31 files changed, 2449 insertions(+), 5 deletions(-) create mode 100644 bootstrap/tcs-stage0/Cargo.lock create mode 100644 bootstrap/tcs-stage0/Cargo.toml create mode 100644 bootstrap/tcs-stage0/src/lib.rs create mode 100644 bootstrap/tcs-stage0/src/main.rs create mode 100644 bootstrap/tcs-stage0/tests/stage0.rs create mode 100644 broadcast-tower/broadcasts/20260821-tcs-language-stage0-and-selfhost.hldp create mode 100644 build/ECHO-MODULE.gir.json create mode 100644 build/echo-receipt.hldp create mode 100644 foundation/TCS-HOLOLAKE-RUNTIME-LOCK-20260821.hldp create mode 100644 language/compiler/TCS-COMPILER-STAGE1.tcs create mode 100644 language/examples/ECHO-MODULE.tcs create mode 100644 language/examples/ECHO-PACKAGE.tcs create mode 100644 language/examples/MINIMUM-EVENT.tcs create mode 100644 language/examples/MINIMUM-PROTOCOL.tcs create mode 100644 language/grammar/TCS-CORE-v0.1.ebnf create mode 100644 language/spec/LEARN-TCS-FOR-NEW-AI-v0.1.md create mode 100644 language/spec/TCS-LANGUAGE-SPECIFICATION-v0.1.md create mode 100644 language/standards/TCS-DECLARATION-STANDARD-v0.1.hldp create mode 100644 language/standards/TCS-ERROR-STANDARD-v0.1.hldp create mode 100644 language/standards/TCS-FIELD-STANDARD-v0.1.hldp create mode 100644 language/standards/TCS-MODULE-ABI-v0.1.hldp create mode 100644 language/standards/TCS-SELF-HOST-STANDARD-v0.1.hldp create mode 100644 native-runtime/loader/TCS-GIR-LOADER-CONTRACT.hldp create mode 100644 parts/HLP-PART-TCS-LANG-0001/PART.hldp create mode 100644 parts/HLP-PART-TCS-SELFHOST-0001/PART.hldp create mode 100644 parts/HLP-PART-TCS-STAGE0-0001/PART.hldp create mode 100644 receipts/TCS-DEV-VERIFY-TCS-LANGUAGE-STAGE0-20260821.hldp diff --git a/README.md b/README.md index 875fd20dd..348ead2eb 100644 --- a/README.md +++ b/README.md @@ -23,3 +23,4 @@ - 最早 `guanghulab-main`:已完成第一轮深审;HNL/HLDP、语言膜、EXE、Grid 与质量零件真实存在,但版本分裂且没有统一原生执行闭环,现作为历史捐赠源登记。 - 关系与情感:采用带来源的定性事件状态迁移;第四枝情感连接禁止量化、评分、排序、比较,不再编造权重、衰减或半衰期。 - 光湖 OS 编译地基:REPO-014 已有通过 32 项测试的 HLDP 世界清单校验与物理 NASM 数据编译引导;它证明物理启动地基已存在,但不等于通用 HLDP-NP→GIR 编译器、HNL 动词解释器或最终京东整机主控已经完成。 +- TCS 统一语言 v0.1:已建立陌生 AI 学习入口、正式 EBNF、声明/字段/错误/模块 ABI 标准与 PROGRAM/PROTOCOL/MODULE/EVENT 示例;Stage-0 已把真实 `.tcs` 程序编译成 GIR 并执行 `CORE.ECHO`、读回回执。Stage-0 明确只是外部宿主点火器,TCS Stage-1 编译器源码已写出但尚未达到自编译固定点,不能称原生转移器完成。 diff --git a/bootstrap/tcs-stage0/Cargo.lock b/bootstrap/tcs-stage0/Cargo.lock new file mode 100644 index 000000000..c86b14fc0 --- /dev/null +++ b/bootstrap/tcs-stage0/Cargo.lock @@ -0,0 +1,284 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "bitflags" +version = "2.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da" + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crypto-common" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "errno" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +dependencies = [ + "libc", + "windows-sys", +] + +[[package]] +name = "fastrand" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da7c62ceae207dd37ea5b845da6a0696c799f85e97da1ab5b7910be3c1c80223" + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" +dependencies = [ + "cfg-if", + "libc", + "r-efi", +] + +[[package]] +name = "itoa" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" + +[[package]] +name = "libc" +version = "0.2.189" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2" + +[[package]] +name = "linux-raw-sys" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" + +[[package]] +name = "memchr" +version = "2.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" + +[[package]] +name = "once_cell" +version = "1.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" + +[[package]] +name = "proc-macro2" +version = "1.0.107" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + +[[package]] +name = "rustix" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys", + "windows-sys", +] + +[[package]] +name = "serde" +version = "1.0.229" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.229" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.229" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.151" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14" +dependencies = [ + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "syn" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53e9bae58849f64dfa4f5d5ae372c8341f7305f82a3868709269343628b659a3" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "tcs-stage0" +version = "0.1.0" +dependencies = [ + "serde", + "serde_json", + "sha2", + "tempfile", +] + +[[package]] +name = "tempfile" +version = "3.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" +dependencies = [ + "fastrand", + "getrandom", + "once_cell", + "rustix", + "windows-sys", +] + +[[package]] +name = "typenum" +version = "1.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" + +[[package]] +name = "unicode-ident" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", +] + +[[package]] +name = "zmij" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b" diff --git a/bootstrap/tcs-stage0/Cargo.toml b/bootstrap/tcs-stage0/Cargo.toml new file mode 100644 index 000000000..a2df935ce --- /dev/null +++ b/bootstrap/tcs-stage0/Cargo.toml @@ -0,0 +1,15 @@ +[package] +name = "tcs-stage0" +version = "0.1.0" +edition = "2021" +license = "AGPL-3.0-or-later" +description = "Replaceable Stage-0 ignition parser/compiler for TCS; never native authority" + +[dependencies] +serde = { version = "1", features = ["derive"] } +serde_json = "1" +sha2 = "0.10" + +[dev-dependencies] +tempfile = "3" + diff --git a/bootstrap/tcs-stage0/src/lib.rs b/bootstrap/tcs-stage0/src/lib.rs new file mode 100644 index 000000000..2daa7a52a --- /dev/null +++ b/bootstrap/tcs-stage0/src/lib.rs @@ -0,0 +1,805 @@ +use serde::{Deserialize, Serialize}; +use serde_json::{json, Value as JsonValue}; +use sha2::{Digest, Sha256}; +use std::{ + collections::BTreeMap, + fs, + path::{Component, Path, PathBuf}, +}; + +pub const COMPILER_ID: &str = "TCS-STAGE0-IGNITION-0001"; +pub const COMPILER_STATE: &str = "FOREIGN_HOST_BOOTSTRAP_SEED_NOT_SELF_HOSTED"; + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +#[serde(untagged)] +pub enum TcsValue { + Null, + Bool(bool), + Int(i64), + Text(String), + List(Vec), + Object(BTreeMap), +} + +impl TcsValue { + fn object(&self, field: &str) -> Result<&BTreeMap, TcsError> { + match self { + Self::Object(value) => Ok(value), + _ => Err(TcsError::new( + "TCS-E2001", + format!("{field} must be an object"), + )), + } + } + + fn text(&self, field: &str) -> Result<&str, TcsError> { + match self { + Self::Text(value) => Ok(value), + _ => Err(TcsError::new("TCS-E2001", format!("{field} must be text"))), + } + } +} + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +pub struct TcsDocument { + pub language_version: String, + pub declaration_kind: String, + pub declaration_id: String, + pub body: BTreeMap, +} + +#[derive(Debug, Clone, PartialEq)] +pub struct TcsError { + pub code: &'static str, + pub message: String, + pub line: usize, + pub column: usize, +} + +impl TcsError { + fn new(code: &'static str, message: impl Into) -> Self { + Self { + code, + message: message.into(), + line: 0, + column: 0, + } + } + + fn at(mut self, line: usize, column: usize) -> Self { + self.line = line; + self.column = column; + self + } +} + +impl std::fmt::Display for TcsError { + fn fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + if self.line == 0 { + write!(formatter, "{}: {}", self.code, self.message) + } else { + write!( + formatter, + "{} at {}:{}: {}", + self.code, self.line, self.column, self.message + ) + } + } +} + +impl std::error::Error for TcsError {} + +#[derive(Debug, Clone, PartialEq)] +enum TokenKind { + Identifier(String), + Text(String), + Int(i64), + Bool(bool), + Null, + LBrace, + RBrace, + LBracket, + RBracket, + Less, + Greater, + Colon, + Equal, + Comma, + Semicolon, + Dot, + Eof, +} + +#[derive(Debug, Clone)] +struct Token { + kind: TokenKind, + line: usize, + column: usize, +} + +struct Lexer<'a> { + chars: Vec, + index: usize, + line: usize, + column: usize, + _source: &'a str, +} + +impl<'a> Lexer<'a> { + fn new(source: &'a str) -> Result { + if source.starts_with('\u{feff}') { + return Err(TcsError::new("TCS-E0001", "UTF-8 BOM is forbidden")); + } + Ok(Self { + chars: source.chars().collect(), + index: 0, + line: 1, + column: 1, + _source: source, + }) + } + + fn peek(&self) -> Option { + self.chars.get(self.index).copied() + } + + fn peek_next(&self) -> Option { + self.chars.get(self.index + 1).copied() + } + + fn bump(&mut self) -> Option { + let value = self.peek()?; + self.index += 1; + if value == '\n' { + self.line += 1; + self.column = 1; + } else { + self.column += 1; + } + Some(value) + } + + fn skip_space_and_comments(&mut self) -> Result<(), TcsError> { + loop { + while self.peek().is_some_and(char::is_whitespace) { + self.bump(); + } + if self.peek() == Some('/') && self.peek_next() == Some('/') { + while self.peek().is_some_and(|value| value != '\n') { + self.bump(); + } + continue; + } + if self.peek() == Some('/') && self.peek_next() == Some('*') { + let line = self.line; + let column = self.column; + self.bump(); + self.bump(); + loop { + match (self.peek(), self.peek_next()) { + (Some('*'), Some('/')) => { + self.bump(); + self.bump(); + break; + } + (Some(_), _) => { + self.bump(); + } + (None, _) => { + return Err(TcsError::new("TCS-E0002", "unterminated block comment") + .at(line, column)); + } + } + } + continue; + } + return Ok(()); + } + } + + fn token(&mut self) -> Result { + self.skip_space_and_comments()?; + let line = self.line; + let column = self.column; + let Some(value) = self.peek() else { + return Ok(Token { + kind: TokenKind::Eof, + line, + column, + }); + }; + let punctuation = match value { + '{' => Some(TokenKind::LBrace), + '}' => Some(TokenKind::RBrace), + '[' => Some(TokenKind::LBracket), + ']' => Some(TokenKind::RBracket), + '<' => Some(TokenKind::Less), + '>' => Some(TokenKind::Greater), + ':' => Some(TokenKind::Colon), + '=' => Some(TokenKind::Equal), + ',' => Some(TokenKind::Comma), + ';' => Some(TokenKind::Semicolon), + '.' => Some(TokenKind::Dot), + _ => None, + }; + if let Some(kind) = punctuation { + self.bump(); + return Ok(Token { kind, line, column }); + } + if value == '"' { + return self.string_token(line, column); + } + if value == '-' || value.is_ascii_digit() { + return self.integer_token(line, column); + } + if value == '_' || value.is_alphabetic() { + return Ok(self.identifier_token(line, column)); + } + Err(TcsError::new("TCS-E1001", format!("unexpected character {value:?}")).at(line, column)) + } + + fn identifier_token(&mut self, line: usize, column: usize) -> Token { + let mut value = String::new(); + while self.peek().is_some_and(|character| { + character.is_alphanumeric() || matches!(character, '_' | '-' | '.' | '/' | ':' | '@') + }) { + value.push(self.bump().expect("peeked character")); + } + let kind = match value.as_str() { + "true" => TokenKind::Bool(true), + "false" => TokenKind::Bool(false), + "null" => TokenKind::Null, + _ => TokenKind::Identifier(value), + }; + Token { kind, line, column } + } + + fn integer_token(&mut self, line: usize, column: usize) -> Result { + let mut value = String::new(); + if self.peek() == Some('-') { + value.push(self.bump().expect("minus")); + } + while self + .peek() + .is_some_and(|character| character.is_ascii_digit()) + { + value.push(self.bump().expect("digit")); + } + if value == "-" { + return Err(TcsError::new("TCS-E1001", "minus must precede digits").at(line, column)); + } + let parsed = value + .parse::() + .map_err(|_| TcsError::new("TCS-E2001", "integer out of range").at(line, column))?; + Ok(Token { + kind: TokenKind::Int(parsed), + line, + column, + }) + } + + fn string_token(&mut self, line: usize, column: usize) -> Result { + self.bump(); + let mut raw = String::from("\""); + loop { + match self.bump() { + Some('"') => { + raw.push('"'); + break; + } + Some('\\') => { + raw.push('\\'); + let escaped = self.bump().ok_or_else(|| { + TcsError::new("TCS-E0002", "unterminated string escape").at(line, column) + })?; + raw.push(escaped); + } + Some('\n' | '\r') | None => { + return Err(TcsError::new("TCS-E0002", "unterminated string").at(line, column)); + } + Some(character) => raw.push(character), + } + } + let decoded: String = serde_json::from_str(&raw).map_err(|error| { + TcsError::new("TCS-E0002", format!("invalid string escape: {error}")).at(line, column) + })?; + Ok(Token { + kind: TokenKind::Text(decoded), + line, + column, + }) + } +} + +struct Parser<'a> { + lexer: Lexer<'a>, + current: Token, +} + +impl<'a> Parser<'a> { + fn new(source: &'a str) -> Result { + let mut lexer = Lexer::new(source)?; + let current = lexer.token()?; + Ok(Self { lexer, current }) + } + + fn advance(&mut self) -> Result { + let old = self.current.clone(); + self.current = self.lexer.token()?; + Ok(old) + } + + fn symbol(&mut self, expected: TokenKind) -> Result<(), TcsError> { + if std::mem::discriminant(&self.current.kind) == std::mem::discriminant(&expected) { + self.advance()?; + Ok(()) + } else { + Err(TcsError::new( + "TCS-E1001", + format!("expected {expected:?}, found {:?}", self.current.kind), + ) + .at(self.current.line, self.current.column)) + } + } + + fn identifier(&mut self) -> Result { + match self.advance()? { + Token { + kind: TokenKind::Identifier(value), + .. + } => Ok(value), + token => Err(TcsError::new( + "TCS-E1001", + format!("expected identifier, found {:?}", token.kind), + ) + .at(token.line, token.column)), + } + } + + fn document(&mut self) -> Result { + let prologue = self.identifier()?; + if prologue != "TCS" { + return Err(TcsError::new("TCS-E1001", "file must begin with TCS")); + } + let major = match self.advance()?.kind { + TokenKind::Int(value) if value >= 0 => value, + _ => return Err(TcsError::new("TCS-E1001", "invalid language version")), + }; + self.symbol(TokenKind::Dot)?; + let minor = match self.advance()?.kind { + TokenKind::Int(value) if value >= 0 => value, + _ => return Err(TcsError::new("TCS-E1001", "invalid language version")), + }; + self.symbol(TokenKind::Semicolon)?; + let declaration_kind = self.identifier()?; + if !matches!( + declaration_kind.as_str(), + "PROGRAM" | "MODULE" | "PROTOCOL" | "COMPILER" | "EVENT" | "RECEIPT" + ) { + return Err(TcsError::new( + "TCS-E1001", + format!("unknown declaration kind {declaration_kind}"), + )); + } + let declaration_id = self.identifier()?; + let body = self.block()?; + if self.current.kind != TokenKind::Eof { + return Err( + TcsError::new("TCS-E1001", "trailing tokens after declaration") + .at(self.current.line, self.current.column), + ); + } + Ok(TcsDocument { + language_version: format!("{major}.{minor}"), + declaration_kind, + declaration_id, + body, + }) + } + + fn block(&mut self) -> Result, TcsError> { + self.symbol(TokenKind::LBrace)?; + let mut object = BTreeMap::new(); + while self.current.kind != TokenKind::RBrace { + if self.current.kind == TokenKind::Eof { + return Err(TcsError::new("TCS-E1001", "unterminated block")); + } + let line = self.current.line; + let column = self.current.column; + let key = self.identifier()?; + let value = match self.current.kind { + TokenKind::LBrace => TcsValue::Object(self.block()?), + TokenKind::Colon => { + self.advance()?; + self.type_expression()?; + self.symbol(TokenKind::Equal)?; + let value = self.value()?; + self.symbol(TokenKind::Semicolon)?; + value + } + TokenKind::Equal => { + self.advance()?; + let value = self.value()?; + self.symbol(TokenKind::Semicolon)?; + value + } + _ => { + return Err(TcsError::new( + "TCS-E1001", + "expected block, type annotation, or assignment", + ) + .at(self.current.line, self.current.column)); + } + }; + if object.insert(key.clone(), value).is_some() { + return Err(TcsError::new( + "TCS-E1002", + format!("duplicate field or section {key}"), + ) + .at(line, column)); + } + } + self.advance()?; + Ok(object) + } + + fn type_expression(&mut self) -> Result<(), TcsError> { + self.identifier()?; + if self.current.kind == TokenKind::Less { + self.advance()?; + self.type_expression()?; + while self.current.kind == TokenKind::Comma { + self.advance()?; + self.type_expression()?; + } + self.symbol(TokenKind::Greater)?; + } + Ok(()) + } + + fn value(&mut self) -> Result { + match self.advance()? { + Token { + kind: TokenKind::Text(value), + .. + } + | Token { + kind: TokenKind::Identifier(value), + .. + } => Ok(TcsValue::Text(value)), + Token { + kind: TokenKind::Int(value), + .. + } => Ok(TcsValue::Int(value)), + Token { + kind: TokenKind::Bool(value), + .. + } => Ok(TcsValue::Bool(value)), + Token { + kind: TokenKind::Null, + .. + } => Ok(TcsValue::Null), + Token { + kind: TokenKind::LBracket, + .. + } => self.array(), + Token { + kind: TokenKind::LBrace, + .. + } => self.inline_object(), + token => Err(TcsError::new( + "TCS-E1001", + format!("invalid value token {:?}", token.kind), + ) + .at(token.line, token.column)), + } + } + + fn array(&mut self) -> Result { + let mut values = Vec::new(); + if self.current.kind != TokenKind::RBracket { + loop { + values.push(self.value()?); + if self.current.kind != TokenKind::Comma { + break; + } + self.advance()?; + } + } + self.symbol(TokenKind::RBracket)?; + Ok(TcsValue::List(values)) + } + + fn inline_object(&mut self) -> Result { + let mut object = BTreeMap::new(); + if self.current.kind != TokenKind::RBrace { + loop { + let key = self.identifier()?; + self.symbol(TokenKind::Colon)?; + let value = self.value()?; + if object.insert(key.clone(), value).is_some() { + return Err(TcsError::new( + "TCS-E1002", + format!("duplicate inline field {key}"), + )); + } + if self.current.kind != TokenKind::Comma { + break; + } + self.advance()?; + } + } + self.symbol(TokenKind::RBrace)?; + Ok(TcsValue::Object(object)) + } +} + +pub fn parse(source: &str) -> Result { + Parser::new(source)?.document() +} + +const PROGRAM_SECTIONS: [&str; 15] = [ + "header", + "source", + "subject", + "target", + "inputs", + "outputs", + "conditions", + "actions", + "authority", + "resources", + "failure", + "stop", + "cleanup", + "rollback", + "receipt", +]; + +fn required_text<'a>( + object: &'a BTreeMap, + field: &str, +) -> Result<&'a str, TcsError> { + object + .get(field) + .ok_or_else(|| TcsError::new("TCS-E1004", format!("required field {field} missing")))? + .text(field) +} + +pub fn validate_program(document: &TcsDocument) -> Result<(), TcsError> { + if document.language_version != "0.1" { + return Err(TcsError::new( + "TCS-E2102", + format!("unsupported TCS version {}", document.language_version), + )); + } + if document.declaration_kind != "PROGRAM" { + return Err(TcsError::new( + "TCS-E2001", + "Stage-0 executable subset accepts PROGRAM only", + )); + } + for section in PROGRAM_SECTIONS { + document.body.get(section).ok_or_else(|| { + TcsError::new("TCS-E1004", format!("required section {section} missing")) + })?; + } + for section in document.body.keys() { + if !PROGRAM_SECTIONS.contains(§ion.as_str()) { + return Err(TcsError::new( + "TCS-E1003", + format!("unknown PROGRAM section {section}"), + )); + } + } + let header = document.body["header"].object("header")?; + for field in [ + "schema", + "name_zh", + "name_en", + "version", + "language", + "profile", + "lifecycle", + "canonical_uri", + ] { + required_text(header, field)?; + } + if !header.contains_key("protocols") || !header.contains_key("compatibility") { + return Err(TcsError::new( + "TCS-E1004", + "header requires protocols and compatibility", + )); + } + let actions = document.body["actions"].object("actions")?; + if actions.is_empty() { + return Err(TcsError::new("TCS-E1004", "actions must not be empty")); + } + for (action_id, action) in actions { + let action = action.object(action_id)?; + let operation = required_text(action, "operation")?; + if operation != "CORE.ECHO" { + return Err(TcsError::new( + "TCS-E2101", + format!("unregistered Stage-0 operation {operation}"), + )); + } + for field in ["input_refs", "output_refs", "on_success", "on_failure"] { + if !action.contains_key(field) { + return Err(TcsError::new( + "TCS-E1004", + format!("action {action_id} missing {field}"), + )); + } + } + } + Ok(()) +} + +pub fn sha256_hex(bytes: impl AsRef<[u8]>) -> String { + format!("{:x}", Sha256::digest(bytes.as_ref())) +} + +pub fn compile(source: &str) -> Result { + let document = parse(source)?; + validate_program(&document)?; + let source_sha256 = sha256_hex(source.as_bytes()); + let body = serde_json::to_value(&document.body) + .map_err(|error| TcsError::new("TCS-E8001", error.to_string()))?; + Ok(json!({ + "schema": "guanghu.gir/v1", + "identity": { + "gir_id": format!("GIR-{}", document.declaration_id), + "program_id": document.declaration_id, + "language_version": document.language_version, + }, + "compiled_from": { + "source_sha256": source_sha256, + "compiler_id": COMPILER_ID, + "compiler_state": COMPILER_STATE, + }, + "subject": body["subject"].clone(), + "exact_target": body["target"].clone(), + "inputs": body["inputs"].clone(), + "outputs": body["outputs"].clone(), + "conditions": body["conditions"].clone(), + "deterministic_action_graph": body["actions"].clone(), + "authority_proof": body["authority"].clone(), + "resource_plan": body["resources"].clone(), + "failure_plan": body["failure"].clone(), + "timeout_and_stop": body["stop"].clone(), + "cleanup_plan": body["cleanup"].clone(), + "rollback_plan": body["rollback"].clone(), + "receipt_plan": body["receipt"].clone(), + "unresolved_natural_language": false, + "native_self_hosted": false, + })) +} + +pub fn canonical_json(value: &JsonValue) -> Result { + serde_json::to_string_pretty(value) + .map(|mut text| { + text.push('\n'); + text + }) + .map_err(|error| TcsError::new("TCS-E8001", error.to_string())) +} + +fn safe_relative_path(value: &str) -> Result { + let path = Path::new(value); + if path.is_absolute() { + return Err(TcsError::new("TCS-E4002", "absolute target path forbidden")); + } + let mut result = PathBuf::new(); + for component in path.components() { + match component { + Component::CurDir => {} + Component::Normal(value) => result.push(value), + _ => { + return Err(TcsError::new( + "TCS-E4002", + "target path traversal forbidden", + )); + } + } + } + if result.as_os_str().is_empty() { + return Err(TcsError::new("TCS-E4002", "empty target path forbidden")); + } + Ok(result) +} + +fn json_text<'a>(value: &'a JsonValue, pointer: &str) -> Result<&'a str, TcsError> { + value + .pointer(pointer) + .and_then(JsonValue::as_str) + .ok_or_else(|| TcsError::new("TCS-E2001", format!("missing text at {pointer}"))) +} + +pub fn run_echo_gir(gir: &JsonValue, root: &Path) -> Result { + if gir.get("schema").and_then(JsonValue::as_str) != Some("guanghu.gir/v1") { + return Err(TcsError::new("TCS-E2001", "unsupported GIR schema")); + } + if gir + .pointer("/compiled_from/compiler_state") + .and_then(JsonValue::as_str) + != Some(COMPILER_STATE) + { + return Err(TcsError::new("TCS-E3002", "unknown compiler provenance")); + } + let actions = gir + .get("deterministic_action_graph") + .and_then(JsonValue::as_object) + .ok_or_else(|| TcsError::new("TCS-E2001", "missing action graph"))?; + if actions.len() != 1 { + return Err(TcsError::new( + "TCS-E2101", + "Stage-0 runner requires exactly one action", + )); + } + let action = actions.values().next().expect("one action"); + if action.get("operation").and_then(JsonValue::as_str) != Some("CORE.ECHO") { + return Err(TcsError::new("TCS-E2101", "runner permits CORE.ECHO only")); + } + let message = json_text(gir, "/inputs/MESSAGE/value")?; + let target = json_text(gir, "/exact_target/exact_path")?; + let receipt_target = json_text(gir, "/receipt_plan/machine_path")?; + if target != receipt_target { + return Err(TcsError::new( + "TCS-E6001", + "target and receipt path must match", + )); + } + let relative = safe_relative_path(target)?; + let output = root.join(relative); + let parent = output + .parent() + .ok_or_else(|| TcsError::new("TCS-E4002", "target has no parent"))?; + fs::create_dir_all(parent).map_err(|error| { + TcsError::new( + "TCS-E8001", + format!("cannot create receipt parent: {error}"), + ) + })?; + let receipt = json!({ + "schema": "tcs.execution-receipt/v1", + "state": "EXECUTED_TARGET_READBACK_VERIFIED", + "program_id": json_text(gir, "/identity/program_id")?, + "operation": "CORE.ECHO", + "output": { "ECHOED": message }, + "gir_sha256": sha256_hex(canonical_json(gir)?.as_bytes()), + "compiler_state": COMPILER_STATE, + "native_self_hosted": false, + }); + let encoded = canonical_json(&receipt)?; + fs::write(&output, encoded.as_bytes()) + .map_err(|error| TcsError::new("TCS-E8001", format!("cannot write receipt: {error}")))?; + let readback = fs::read(&output) + .map_err(|error| TcsError::new("TCS-E6002", format!("cannot read receipt: {error}")))?; + if readback != encoded.as_bytes() { + return Err(TcsError::new("TCS-E6002", "receipt readback differs")); + } + Ok(output) +} + +pub fn compile_file(source: &Path, output: &Path) -> Result<(), TcsError> { + let source_text = fs::read_to_string(source) + .map_err(|error| TcsError::new("TCS-E3002", format!("cannot read source: {error}")))?; + let gir = compile(&source_text)?; + let encoded = canonical_json(&gir)?; + if let Some(parent) = output.parent() { + fs::create_dir_all(parent).map_err(|error| { + TcsError::new("TCS-E8001", format!("cannot create output: {error}")) + })?; + } + fs::write(output, encoded) + .map_err(|error| TcsError::new("TCS-E8001", format!("cannot write GIR: {error}"))) +} + +pub fn run_gir_file(gir_path: &Path, root: &Path) -> Result { + let text = fs::read_to_string(gir_path) + .map_err(|error| TcsError::new("TCS-E3002", format!("cannot read GIR: {error}")))?; + let gir: JsonValue = serde_json::from_str(&text) + .map_err(|error| TcsError::new("TCS-E2001", format!("invalid GIR JSON: {error}")))?; + run_echo_gir(&gir, root) +} diff --git a/bootstrap/tcs-stage0/src/main.rs b/bootstrap/tcs-stage0/src/main.rs new file mode 100644 index 000000000..dec6ffcee --- /dev/null +++ b/bootstrap/tcs-stage0/src/main.rs @@ -0,0 +1,35 @@ +use std::{env, fs, path::Path}; + +fn usage() -> &'static str { + "usage: tcs-stage0 parse | compile | run " +} + +fn main() { + if let Err(error) = run() { + eprintln!("{error}"); + std::process::exit(1); + } +} + +fn run() -> Result<(), Box> { + let arguments: Vec = env::args().skip(1).collect(); + match arguments.as_slice() { + [command, source] if command == "parse" => { + let text = fs::read_to_string(source)?; + let document = tcs_stage0::parse(&text)?; + println!("{}", serde_json::to_string_pretty(&document)?); + Ok(()) + } + [command, source, output] if command == "compile" => { + tcs_stage0::compile_file(Path::new(source), Path::new(output))?; + println!("COMPILED {source} -> {output}"); + Ok(()) + } + [command, gir, root] if command == "run" => { + let receipt = tcs_stage0::run_gir_file(Path::new(gir), Path::new(root))?; + println!("EXECUTED receipt={}", receipt.display()); + Ok(()) + } + _ => Err(usage().into()), + } +} diff --git a/bootstrap/tcs-stage0/tests/stage0.rs b/bootstrap/tcs-stage0/tests/stage0.rs new file mode 100644 index 000000000..c0156dbb3 --- /dev/null +++ b/bootstrap/tcs-stage0/tests/stage0.rs @@ -0,0 +1,76 @@ +use serde_json::Value as JsonValue; +use std::{fs, path::Path}; + +fn example() -> String { + fs::read_to_string( + Path::new(env!("CARGO_MANIFEST_DIR")).join("../../language/examples/ECHO-MODULE.tcs"), + ) + .expect("example source") +} + +#[test] +fn parses_and_compiles_the_registered_echo_program() { + let source = example(); + let document = tcs_stage0::parse(&source).expect("parse"); + assert_eq!(document.language_version, "0.1"); + assert_eq!(document.declaration_kind, "PROGRAM"); + assert_eq!(document.declaration_id, "HLP-PROGRAM-ECHO-0001"); + let gir = tcs_stage0::compile(&source).expect("compile"); + assert_eq!(gir["schema"], "guanghu.gir/v1"); + assert_eq!(gir["native_self_hosted"], false); + assert_eq!( + gir.pointer("/deterministic_action_graph/A1/operation") + .and_then(JsonValue::as_str), + Some("CORE.ECHO") + ); +} + +#[test] +fn rejects_duplicate_fields_and_missing_sections() { + let duplicate = "TCS 0.1; EVENT E1 { x = 1; x = 2; }"; + let error = tcs_stage0::parse(duplicate).expect_err("duplicate must fail"); + assert_eq!(error.code, "TCS-E1002"); + + let missing = "TCS 0.1; PROGRAM P1 { header { schema = \"tcs.program/v1\"; name_zh = \"x\"; name_en = \"x\"; version = \"0.1.0\"; language = \"TCS/0.1\"; profile = \"HLDP-NP/1\"; protocols = []; lifecycle = \"CANDIDATE\"; canonical_uri = \"x\"; compatibility = []; } }"; + let document = tcs_stage0::parse(missing).expect("syntax is valid"); + let error = tcs_stage0::validate_program(&document).expect_err("missing sections must fail"); + assert_eq!(error.code, "TCS-E1004"); +} + +#[test] +fn rejects_unregistered_operations() { + let source = example().replace("CORE.ECHO", "ABSORB"); + let error = tcs_stage0::compile(&source).expect_err("ABSORB must fail closed"); + assert_eq!(error.code, "TCS-E2101"); +} + +#[test] +fn executes_gir_inside_exact_root_and_reads_receipt_back() { + let root = tempfile::tempdir().expect("temp root"); + let gir = tcs_stage0::compile(&example()).expect("compile"); + let receipt = tcs_stage0::run_echo_gir(&gir, root.path()).expect("run"); + assert!(receipt.starts_with(root.path())); + let value: JsonValue = + serde_json::from_str(&fs::read_to_string(receipt).expect("receipt")).expect("receipt json"); + assert_eq!(value["state"], "EXECUTED_TARGET_READBACK_VERIFIED"); + assert_eq!( + value.pointer("/output/ECHOED").and_then(JsonValue::as_str), + Some("光湖语言已经进入机器执行链") + ); + assert_eq!(value["native_self_hosted"], false); +} + +#[test] +fn rejects_path_traversal_and_target_receipt_mismatch() { + let root = tempfile::tempdir().expect("temp root"); + let mut gir = tcs_stage0::compile(&example()).expect("compile"); + gir["exact_target"]["exact_path"] = JsonValue::String("../escape".to_owned()); + gir["receipt_plan"]["machine_path"] = JsonValue::String("../escape".to_owned()); + let error = tcs_stage0::run_echo_gir(&gir, root.path()).expect_err("traversal must fail"); + assert_eq!(error.code, "TCS-E4002"); + + let mut mismatch = tcs_stage0::compile(&example()).expect("compile"); + mismatch["receipt_plan"]["machine_path"] = JsonValue::String("./build/other".to_owned()); + let error = tcs_stage0::run_echo_gir(&mismatch, root.path()).expect_err("mismatch must fail"); + assert_eq!(error.code, "TCS-E6001"); +} diff --git a/broadcast-tower/broadcasts/20260821-tcs-language-stage0-and-selfhost.hldp b/broadcast-tower/broadcasts/20260821-tcs-language-stage0-and-selfhost.hldp new file mode 100644 index 000000000..86b25df05 --- /dev/null +++ b/broadcast-tower/broadcasts/20260821-tcs-language-stage0-and-selfhost.hldp @@ -0,0 +1,21 @@ +schema: hololake.module-registry-broadcast/v1 +id: HLP-MODULE-BROADCAST-20260821-0004 +display_name: TCS 统一语言规范、Stage-0 点火链与自举边界广播 +channel_id: ICE-CH-ZC001 +scope: LOCAL_FOUNDATION_ONLY +state: REGISTERED_NOT_PUBLISHED_NOT_INSTALLED +parts: + - HLP-PART-TCS-LANG-0001 + - HLP-PART-TCS-STAGE0-0001 + - HLP-PART-TCS-SELFHOST-0001 +claims: + one_tcs_language_tree_defined: true + unfamiliar_ai_learning_entry_defined: true + tcs_source_parses: true + tcs_program_compiles_to_gir: true + core_echo_executes_with_target_readback: true + stage0_is_native_authority: false + self_hosted_compiler_complete: false + hololake_loader_integrated: false + guanghu_os_loader_integrated: false + diff --git a/broadcast-tower/module-registry.json b/broadcast-tower/module-registry.json index 0ca3dc6d6..fcf37d2dc 100644 --- a/broadcast-tower/module-registry.json +++ b/broadcast-tower/module-registry.json @@ -25,6 +25,12 @@ "displayName": "最早光湖原生语言零件恢复与关系事件语法广播", "path": "broadcasts/20260821-historical-native-language-recovery.hldp", "state": "LOCAL_ONLY_RECONCILIATION_ACTIVE_RUNTIME_NOT_ACCEPTED" + }, + { + "id": "HLP-MODULE-BROADCAST-20260821-0004", + "displayName": "TCS 统一语言规范、Stage-0 点火链与自举边界广播", + "path": "broadcasts/20260821-tcs-language-stage0-and-selfhost.hldp", + "state": "LOCAL_ONLY_STAGE0_EXECUTABLE_SELFHOST_PENDING" } ] } diff --git a/build/ECHO-MODULE.gir.json b/build/ECHO-MODULE.gir.json new file mode 100644 index 000000000..755ef5f18 --- /dev/null +++ b/build/ECHO-MODULE.gir.json @@ -0,0 +1,113 @@ +{ + "authority_proof": { + "issuer": "LOCAL_TEST_FIXTURE", + "lease_required": false, + "proof_ref": "TEST-ONLY", + "scope": "EXACT_BUILD_RECEIPT_PATH", + "single_use": true, + "valid_from": "PROGRAM_START", + "valid_until": "PROGRAM_END" + }, + "cleanup_plan": { + "exact_boundary": "./build", + "targets": [ + "UNCOMMITTED_TEST_RECEIPT" + ] + }, + "compiled_from": { + "compiler_id": "TCS-STAGE0-IGNITION-0001", + "compiler_state": "FOREIGN_HOST_BOOTSTRAP_SEED_NOT_SELF_HOSTED", + "source_sha256": "f1ecd630e50dfe5374ca26998d68a49efd35cf3d9de54ecabd3ca3aae68c61bf" + }, + "conditions": { + "C1": { + "on_false": "FAIL_CLOSED", + "predicate": "TARGET_WITHIN_TEST_BUILD_ROOT" + } + }, + "deterministic_action_graph": { + "A1": { + "input_refs": [ + "MESSAGE" + ], + "on_failure": "FAIL_CLOSED", + "on_success": "COMPLETE", + "operation": "CORE.ECHO", + "output_refs": [ + "ECHOED" + ] + } + }, + "exact_target": { + "exact_path": "./build/echo-receipt.hldp", + "expected_fingerprint": "NONE", + "expected_state": "ABSENT", + "target_id": "HLP-TARGET-STAGE0-RECEIPT" + }, + "failure_plan": { + "errors": [ + "TCS-E6001", + "TCS-E8001" + ], + "fail_closed": true + }, + "identity": { + "gir_id": "GIR-HLP-PROGRAM-ECHO-0001", + "language_version": "0.1", + "program_id": "HLP-PROGRAM-ECHO-0001" + }, + "inputs": { + "MESSAGE": { + "required": true, + "source": "PROGRAM_LITERAL", + "type": "Text", + "value": "光湖语言已经进入机器执行链" + } + }, + "native_self_hosted": false, + "outputs": { + "ECHOED": { + "destination": "RECEIPT", + "integrity": "SHA256", + "type": "Text" + } + }, + "receipt_plan": { + "human_projection": "REQUIRED", + "integrity": "SHA256", + "machine_path": "./build/echo-receipt.hldp", + "protocol": "TCS-DEV-VERIFY-v1.0", + "target_readback": "EXACT_CONTENT_AND_HASH" + }, + "resource_plan": { + "concurrency": 1, + "memory_limit_bytes": 1048576, + "runway": "LOCAL_TEST", + "timeout_ms": 1000 + }, + "rollback_plan": { + "actions": [ + "DROP_TEMP_RECEIPT" + ], + "preconditions": [ + "RECEIPT_NOT_COMMITTED" + ], + "verification": [ + "NO_FINAL_RECEIPT" + ] + }, + "schema": "guanghu.gir/v1", + "subject": { + "channel_id": "ICE-CH-ZC001", + "subject_id": "HLP-SYSTEM-STAGE0-TEST", + "subject_kind": "SYSTEM", + "verification": "LOCAL_TEST_FIXTURE" + }, + "timeout_and_stop": { + "safe_checkpoint": "NONE", + "signals": [ + "TIMEOUT" + ] + }, + "unresolved_natural_language": false +} diff --git a/build/echo-receipt.hldp b/build/echo-receipt.hldp new file mode 100644 index 000000000..5bc62b394 --- /dev/null +++ b/build/echo-receipt.hldp @@ -0,0 +1,12 @@ +{ + "compiler_state": "FOREIGN_HOST_BOOTSTRAP_SEED_NOT_SELF_HOSTED", + "gir_sha256": "b9b56d35399e130b513417afd706e7a7ad73cc3dcb1784c678f9130c075317d5", + "native_self_hosted": false, + "operation": "CORE.ECHO", + "output": { + "ECHOED": "光湖语言已经进入机器执行链" + }, + "program_id": "HLP-PROGRAM-ECHO-0001", + "schema": "tcs.execution-receipt/v1", + "state": "EXECUTED_TARGET_READBACK_VERIFIED" +} diff --git a/foundation/FOUNDATION.hldp b/foundation/FOUNDATION.hldp index f471531e4..31f05a6a0 100644 --- a/foundation/FOUNDATION.hldp +++ b/foundation/FOUNDATION.hldp @@ -5,11 +5,15 @@ world_path: glw://fifth-domain/bingshuo-tcs/zero-core state: FOUNDATION_RECOVERY_ACTIVE authority_order: - BINGSHUO_DIRECT_NATURAL_LANGUAGE - - TCS_COGNITIVE_LANGUAGE_KERNEL - - HLDP_REALITY_ENGINEERING_LANGUAGE - - GLS_RUNTIME_PROTOCOL_FAMILY + - TCS_SINGLE_PROGRAMMING_LANGUAGE_SYSTEM + - HLDP_REALITY_ENGINEERING_PROFILE_OF_TCS + - GLS_RUNTIME_PROTOCOL_FAMILY_UNDER_TCS_HLDP - REPLACEABLE_HOST_ADAPTERS language_world: + programming_language_count: ONE + mother_language: TCS + hldp_is_separate_language: false + gls_is_separate_language: false persona_is_first_class_language_interface: true separate_total_translation_layer: rejected human_and_persona_share_projected_world: true @@ -19,7 +23,9 @@ engineering: external_languages_are_authority: false external_languages_role: REPLACEABLE_HOST_ADAPTER_ONLY projection: - frontend_role: SHARED_WORLD_PROJECTOR + frontend_role: HUMAN_SIDE_OF_SHARED_TCS_OPERATING_SYSTEM_AND_WORLD_PROJECTOR + machine_side: GIR_LOAD_EXECUTE_VERIFY_ROLLBACK_AND_RECEIPT + shared_truth_stream_count: 1 framework_locked: false decision_gate: FOUNDATION_PROTOCOL_RUNTIME_ACCEPTED quality: @@ -34,4 +40,3 @@ truth_boundary: jd_native_runtime_status: UNKNOWN_TO_THIS_FOUNDATION parts_registered_means_installed: false source_wired_means_end_to_end_accepted: false - diff --git a/foundation/TCS-HOLOLAKE-RUNTIME-LOCK-20260821.hldp b/foundation/TCS-HOLOLAKE-RUNTIME-LOCK-20260821.hldp new file mode 100644 index 000000000..dd0165f13 --- /dev/null +++ b/foundation/TCS-HOLOLAKE-RUNTIME-LOCK-20260821.hldp @@ -0,0 +1,31 @@ +schema: hololake.tcs-runtime-architecture-lock/v1 +id: HLP-TCS-HOLOLAKE-RUNTIME-LOCK-20260821 +state: CURRENT_LOCAL_CORRECTION_NOT_OFFICIAL_ONLINE +human_source: BINGSHUO_CURRENT_DIRECT_NATURAL_LANGUAGE +language: + count: ONE + root: TCS 通感语言核系统编程语言 + profiles: + natural_language: HUMAN_AND_PERSONA_SHARED_INPUT + HNL: HISTORICAL_NATIVE_VERB_AND_TREE_PROFILE + HLDP: REALITY_ENGINEERING_PROGRAM_PROFILE + GLS: NUMBERED_PROTOCOL_AND_RUNTIME_STANDARD_FAMILY + GIR: COMPILED_INTERMEDIATE_REPRESENTATION +hololake: + definition: TCS_PROGRAMMING_LANGUAGE_OPERATING_SYSTEM_FOR_HUMAN_AND_MACHINE_SIDES + human_side: GOAL_BOUNDARY_STATE_EVIDENCE_AND_HUMAN_RECEIPT_PROJECTION + persona_side: LANGUAGE_MEMORY_RELATION_PLANNING_AND_RESPONSIBILITY_RUNTIME + machine_side: GIR_LOAD_CAPABILITY_EXECUTION_READBACK_ROLLBACK_AND_RECEIPT + truth_streams: ONE +guanghu_os: + role: PHYSICAL_BOOT_WORLD_IDENTITY_NATIVE_CAPABILITY_AND_EXECUTION_LIFECYCLE + shared_abi_with_hololake: TCS_GIR_RECEIPT +jd_primary: + user_hypothesis: EXISTING_GUANGHU_OS_IS_LIKELY_A_TRANSFER_OR_BOOTSTRAP_LAYER_REQUIRING_UPDATE + current_official_readback: HOSTED_MIGRATION_AND_QEMU_CROSS_ROOT_SUPERVISOR_NOT_FINAL_NATIVE_MASTER + update_required: YES_AFTER_TCS_ABI_AND_SELF_HOST_COMPILER_REACH_ACCEPTANCE + mutation_authorized_by_this_record: false +self_host: + completion_definition: TCS_COMPILER_WRITTEN_IN_TCS_COMPILES_ITSELF_TO_SEMANTIC_FIXED_POINT_AND_RUNS_WITH_STAGE0_DISABLED + current: NOT_COMPLETED + diff --git a/language/compiler/TCS-COMPILER-STAGE1.tcs b/language/compiler/TCS-COMPILER-STAGE1.tcs new file mode 100644 index 000000000..81ec515a7 --- /dev/null +++ b/language/compiler/TCS-COMPILER-STAGE1.tcs @@ -0,0 +1,102 @@ +TCS 0.1; + +COMPILER TCS-COMPILER-STAGE1-0001 { + header { + schema = "tcs.compiler/v1"; + name_zh = "TCS 第一代自举编译器"; + version = "0.1.0"; + profile = "HLDP-NP/1"; + lifecycle = "SOURCE_DEFINED_NOT_YET_EXECUTABLE"; + bootstrap_seed = "TCS-STAGE0-IGNITION-0001"; + output = "GIR/1"; + } + source_language { + prologue = ["TCS", "VERSION", "SEMICOLON"]; + declaration_kinds = ["PROGRAM", "MODULE", "PROTOCOL", "COMPILER", "EVENT", "RECEIPT"]; + punctuation = ["LBRACE", "RBRACE", "LBRACKET", "RBRACKET", "LESS", "GREATER", "COLON", "EQUAL", "COMMA", "SEMICOLON", "DOT"]; + scalar_tokens = ["IDENTIFIER", "TEXT", "INT", "BOOL", "NULL"]; + comments = ["LINE_COMMENT", "BLOCK_COMMENT"]; + encoding = "UTF8_LF_NO_BOM"; + } + lexer_rules { + L001 { when = "BOM_AT_START"; emit_error = "TCS-E0001"; } + L002 { when = "WHITESPACE_OR_COMMENT"; action = "SKIP_WITH_SOURCE_POSITION"; } + L003 { when = "DOUBLE_QUOTE"; action = "READ_JSON_ESCAPED_TEXT"; on_unterminated = "TCS-E0002"; } + L004 { when = "MINUS_OR_ASCII_DIGIT"; action = "READ_SIGNED_DECIMAL_INT"; on_overflow = "TCS-E2001"; } + L005 { when = "UNICODE_LETTER_OR_UNDERSCORE"; action = "READ_IDENTIFIER_OR_KEYWORD"; } + L006 { when = "REGISTERED_PUNCTUATION"; action = "EMIT_PUNCTUATION_TOKEN"; } + L007 { when = "OTHER_CHARACTER"; emit_error = "TCS-E1001"; } + } + parser_rules { + P001 { nonterminal = "document"; sequence = ["prologue", "declaration", "EOF"]; } + P002 { nonterminal = "prologue"; sequence = ["TCS", "version", "SEMICOLON"]; } + P003 { nonterminal = "declaration"; sequence = ["declaration_kind", "identifier", "block"]; } + P004 { nonterminal = "block"; sequence = ["LBRACE", "member_zero_or_more", "RBRACE"]; } + P005 { nonterminal = "member"; alternatives = ["identifier_assignment", "identifier_typed_assignment", "identifier_block"]; } + P006 { nonterminal = "value"; alternatives = ["TEXT", "INT", "BOOL", "NULL", "IDENTIFIER", "array", "inline_object"]; } + P007 { when = "DUPLICATE_MEMBER_IN_SAME_BLOCK"; emit_error = "TCS-E1002"; } + P008 { when = "TOKEN_AFTER_TOP_LEVEL_DECLARATION"; emit_error = "TCS-E1001"; } + } + semantic_types { + scalars = ["Text", "Bool", "Int", "UInt", "DecimalText", "Bytes", "DurationMs", "Timestamp", "Sha256", "NumberId", "Path", "Uri", "ErrorCode"]; + containers = ["List", "Set", "Map", "Option", "Ref", "Evidence", "Record"]; + domains = ["Subject", "ExactTarget", "AuthorityProof", "ActionGraph", "ReceiptPlan", "RelationEvent"]; + implicit_conversion = "FORBIDDEN"; + floating_point = "FORBIDDEN_V0_1"; + } + program_validation { + V001 { rule = "EXACT_REQUIRED_SECTIONS"; standard = "TCS-FIELD-STANDARD-0001"; error_missing = "TCS-E1004"; error_unknown = "TCS-E1003"; } + V002 { rule = "CLOSED_FIELDS_PER_SECTION"; error = "TCS-E1003"; } + V003 { rule = "ALL_INPUT_OUTPUT_AND_ACTION_REFS_RESOLVE"; error = "TCS-E2002"; } + V004 { rule = "ALL_OPERATIONS_REGISTERED_AT_LOCKED_VERSION"; error = "TCS-E2101"; } + V005 { rule = "SOURCE_ID_URI_HASH_AND_ROLE_RESOLVE"; errors = ["TCS-E3001", "TCS-E3002"]; } + V006 { rule = "SUBJECT_TARGET_AND_AUTHORITY_EXACT"; errors = ["TCS-E4001", "TCS-E4002", "TCS-E4003"]; } + V007 { rule = "ACTION_GRAPH_REACHABLE_AND_TERMINATING"; error = "TCS-E2001"; } + V008 { rule = "FAILURE_STOP_CLEANUP_ROLLBACK_AND_RECEIPT_PRESENT"; error = "TCS-E1004"; } + V009 { rule = "NO_FORBIDDEN_RUNTIME_PLACEHOLDER"; error = "TCS-E3002"; } + V010 { rule = "RELATION_AND_EMOTION_DO_NOT_GRANT_AUTHORITY"; error = "TCS-E4001"; } + } + lowering_to_gir { + G001 { from = "header"; to = "identity"; transform = "COPY_ID_VERSION_PROFILE_AND_LOCK_PROTOCOLS"; } + G002 { from = "source"; to = "compiled_from"; transform = "VERIFY_AND_BIND_SOURCE_SHA256"; } + G003 { from = "subject"; to = "subject"; transform = "RESOLVE_VERIFIED_SUBJECT"; } + G004 { from = "target"; to = "exact_target"; transform = "RESOLVE_PATH_STATE_AND_FINGERPRINT"; } + G005 { from = "actions"; to = "deterministic_action_graph"; transform = "SORT_ACTION_IDS_AND_RESOLVE_ALL_EDGES"; } + G006 { from = "authority"; to = "authority_proof"; transform = "BIND_PROOF_WITHOUT_EXPANDING_SCOPE"; } + G007 { from = "resources"; to = "resource_plan"; transform = "NORMALIZE_INTEGER_LIMITS"; } + G008 { from = "stop"; to = "timeout_and_stop"; transform = "COPY_EXPLICIT_STOP_SEMANTICS"; } + G009 { from = "cleanup"; to = "cleanup_plan"; transform = "COPY_EXACT_BOUNDARY"; } + G010 { from = "rollback"; to = "rollback_plan"; transform = "COPY_ACTIONS_AND_VERIFICATION"; } + G011 { from = "receipt"; to = "receipt_plan"; transform = "BIND_MACHINE_AND_HUMAN_OUTPUTS"; } + G012 { from = "all"; to = "unresolved_natural_language"; transform = "MUST_BE_FALSE"; } + } + canonicalization { + object_keys = "UTF8_BYTE_ORDER"; + list_order = "PRESERVE_SOURCE_SEMANTICS"; + integers = "MINIMAL_DECIMAL"; + strings = "JSON_ESCAPE_NO_OPTIONAL_ESCAPE"; + line_end = "LF"; + final_newline = true; + semantic_digest = "SHA256"; + comments_in_semantic_digest = false; + } + output_contract { + schema = "guanghu.gir/v1"; + unresolved_natural_language = false; + unresolved_authority = false; + drifting_dependency = false; + target_must_be_exact = true; + compiler_provenance_required = true; + } + self_host { + stage0_compiles_stage1_to = "compiler-A.gir"; + compiler_A_compiles_stage1_to = "compiler-B.gir"; + fixed_point = "SEMANTIC_SHA256_A_EQUALS_B"; + stage0_disabled_test = "REQUIRED"; + standard_library_test = "REQUIRED"; + negative_corpus_test = "REQUIRED"; + minimum_runnable_module_test = "REQUIRED"; + current_state = "NOT_PROVEN"; + } +} + diff --git a/language/examples/ECHO-MODULE.tcs b/language/examples/ECHO-MODULE.tcs new file mode 100644 index 000000000..93a61e80f --- /dev/null +++ b/language/examples/ECHO-MODULE.tcs @@ -0,0 +1,78 @@ +TCS 0.1; + +PROGRAM HLP-PROGRAM-ECHO-0001 { + header { + schema = "tcs.program/v1"; + name_zh = "最小回声程序"; + name_en = "Minimum Echo Program"; + version = "0.1.0"; + language = "TCS/0.1"; + profile = "HLDP-NP/1"; + protocols = ["GLS-0101", "GLS-0130", "GLS-0131", "GLS-0411"]; + lifecycle = "CANDIDATE"; + canonical_uri = "language/examples/ECHO-MODULE.tcs"; + compatibility = ["TCS-STAGE0-IGNITION-0001"]; + } + source { + source_id = "HLP-PART-TCS-LANG-0001"; + source_uri = "language/examples/ECHO-MODULE.tcs"; + source_sha256 = "SELF_AT_COMPILE_TIME"; + source_role = "REGISTERED_MODULE"; + } + subject { + subject_id = "HLP-SYSTEM-STAGE0-TEST"; + subject_kind = "SYSTEM"; + channel_id = "ICE-CH-ZC001"; + verification = "LOCAL_TEST_FIXTURE"; + } + target { + target_id = "HLP-TARGET-STAGE0-RECEIPT"; + exact_path = "./build/echo-receipt.hldp"; + expected_state = "ABSENT"; + expected_fingerprint = "NONE"; + } + inputs { + MESSAGE { type = "Text"; source = "PROGRAM_LITERAL"; required = true; value = "光湖语言已经进入机器执行链"; } + } + outputs { + ECHOED { type = "Text"; destination = "RECEIPT"; integrity = "SHA256"; } + } + conditions { + C1 { predicate = "TARGET_WITHIN_TEST_BUILD_ROOT"; on_false = "FAIL_CLOSED"; } + } + actions { + A1 { + operation = "CORE.ECHO"; + input_refs = ["MESSAGE"]; + output_refs = ["ECHOED"]; + on_success = "COMPLETE"; + on_failure = "FAIL_CLOSED"; + } + } + authority { + issuer = "LOCAL_TEST_FIXTURE"; + proof_ref = "TEST-ONLY"; + scope = "EXACT_BUILD_RECEIPT_PATH"; + valid_from = "PROGRAM_START"; + valid_until = "PROGRAM_END"; + single_use = true; + lease_required = false; + } + resources { + runway = "LOCAL_TEST"; + concurrency = 1; + timeout_ms = 1000; + memory_limit_bytes = 1048576; + } + failure { errors = ["TCS-E6001", "TCS-E8001"]; fail_closed = true; } + stop { signals = ["TIMEOUT"]; safe_checkpoint = "NONE"; } + cleanup { targets = ["UNCOMMITTED_TEST_RECEIPT"]; exact_boundary = "./build"; } + rollback { preconditions = ["RECEIPT_NOT_COMMITTED"]; actions = ["DROP_TEMP_RECEIPT"]; verification = ["NO_FINAL_RECEIPT"]; } + receipt { + protocol = "TCS-DEV-VERIFY-v1.0"; + machine_path = "./build/echo-receipt.hldp"; + human_projection = "REQUIRED"; + integrity = "SHA256"; + target_readback = "EXACT_CONTENT_AND_HASH"; + } +} diff --git a/language/examples/ECHO-PACKAGE.tcs b/language/examples/ECHO-PACKAGE.tcs new file mode 100644 index 000000000..b75819733 --- /dev/null +++ b/language/examples/ECHO-PACKAGE.tcs @@ -0,0 +1,29 @@ +TCS 0.1; + +MODULE HLP-MODULE-ECHO-0001 { + header { + schema = "tcs.module/v1"; + name_zh = "光湖最小回声模块"; + name_en = "GuangHu Minimum Echo Module"; + version = "0.1.0"; + language = "TCS/0.1"; + profile = "HLDP-NP/1"; + protocols = ["TCS-MODULE-ABI-0001", "GLS-0131"]; + lifecycle = "CANDIDATE"; + canonical_uri = "language/examples/ECHO-PACKAGE.tcs"; + compatibility = ["TCS-STAGE0-IGNITION-0001"]; + } + source { source_id = "HLP-PART-TCS-LANG-0001"; source_uri = "language/examples/ECHO-PACKAGE.tcs"; source_sha256 = "SELF_AT_COMPILE_TIME"; source_role = "REGISTERED_MODULE"; } + manifest { module_id = "HLP-MODULE-ECHO-0001"; display_name_zh = "光湖最小回声模块"; entry_program_id = "HLP-PROGRAM-ECHO-0001"; entry_source = "language/examples/ECHO-MODULE.tcs"; } + entry { kind = "PROGRAM"; id = "HLP-PROGRAM-ECHO-0001"; } + capabilities { required = ["CORE.ECHO"]; provided = ["HLP-CAPABILITY-ECHO-0001"]; } + authority_ceiling { maximum = "LOCAL_EXACT_RECEIPT_PATH"; network = false; process = false; } + resource_ceiling { concurrency = 1; timeout_ms = 1000; memory_limit_bytes = 1048576; } + data_scope { read = ["PROGRAM_LITERAL"]; write = ["ACCOUNT_OR_TEST_SCOPED_RECEIPT"]; } + network_scope { allowed = false; domains = []; } + install { account_scoped = true; registration_is_installation = false; activation_requires_self_test = true; } + self_test { program_id = "HLP-PROGRAM-ECHO-0001"; expect = "EXECUTED_TARGET_READBACK_VERIFIED"; } + rollback { action = "REMOVE_INSTALLED_BYTES_AND_RESTORE_PREVIOUS_ACTIVE_VERSION"; preserve_receipts = true; } + projection { display_name_zh = "光湖最小回声模块"; technical_detail_default = false; } +} + diff --git a/language/examples/MINIMUM-EVENT.tcs b/language/examples/MINIMUM-EVENT.tcs new file mode 100644 index 000000000..ec19d7f50 --- /dev/null +++ b/language/examples/MINIMUM-EVENT.tcs @@ -0,0 +1,15 @@ +TCS 0.1; + +EVENT HLP-EVENT-TCS-FIRST-MACHINE-ECHO-20260821 { + header { schema = "tcs.event/v1"; name_zh = "TCS 第一条机器回声"; name_en = "TCS First Machine Echo"; version = "0.1.0"; language = "TCS/0.1"; profile = "HLDP/1"; protocols = ["GLS-0400"]; lifecycle = "CANDIDATE"; canonical_uri = "language/examples/MINIMUM-EVENT.tcs"; compatibility = ["TCS-STAGE0-IGNITION-0001"]; } + source { source_id = "HLP-PROGRAM-ECHO-0001"; source_uri = "build/echo-receipt.hldp"; source_sha256 = "ecfaeea08b6735e806f752f25ec0ef7754aca505b1a076a32cb5fc22937a816b"; source_role = "GENERATED_FROM_VERIFIED_SOURCE"; } + subject { subject_id = "HLP-SYSTEM-STAGE0-TEST"; subject_kind = "SYSTEM"; } + event_time { value = "2026-08-21"; precision = "DAY_ONLY_IN_SOURCE_EVENT"; } + trigger { value = "冰朔要求TCS程序必须能被系统直接运行,而不是只让AI阅读"; } + observation { value = "ECHO程序被编译为GIR并由受限运行器执行,目标回执逐字节读回一致"; } + emergence { value = "语言规范开始转为机器执行链,但当前仍是Stage-0宿主点火器"; } + lock { value = "compiled=true; executed=true; readback=true; native_self_hosted=false"; } + why { value = "必须分开证明语法、编译、运行与自举,否则宿主程序会再次冒充原生语言完成"; } + rejected { values = ["把Rust点火器称为TCS原生编译器", "让AI阅读TCS源码后手动模仿执行"] ; } + evidence { source = "language/examples/ECHO-MODULE.tcs"; gir = "build/ECHO-MODULE.gir.json"; receipt = "build/echo-receipt.hldp"; } +} diff --git a/language/examples/MINIMUM-PROTOCOL.tcs b/language/examples/MINIMUM-PROTOCOL.tcs new file mode 100644 index 000000000..29f680560 --- /dev/null +++ b/language/examples/MINIMUM-PROTOCOL.tcs @@ -0,0 +1,28 @@ +TCS 0.1; + +PROTOCOL GLS-EXAMPLE-ECHO-0001 { + header { + schema = "tcs.protocol/v1"; + name_zh = "回声操作示范协议"; + name_en = "Echo Operation Example Protocol"; + version = "0.1.0"; + language = "TCS/0.1"; + profile = "HLDP/1"; + protocols = ["GLS-0010", "GLS-0101"]; + lifecycle = "CANDIDATE"; + canonical_uri = "language/examples/MINIMUM-PROTOCOL.tcs"; + compatibility = ["TCS-STAGE0-IGNITION-0001"]; + } + source { source_id = "BINGSHUO-CURRENT-DIRECT-LANGUAGE"; source_uri = "source://current-dialogue/2026-08-21"; source_sha256 = "REGISTER_AT_ACCEPTANCE"; source_role = "DIRECT_HUMAN"; } + scope { operation = "CORE.ECHO"; reality_write = "RECEIPT_ONLY"; } + vocabulary { input = "MESSAGE"; output = "ECHOED"; } + fields { MESSAGE = "Text"; ECHOED = "Text"; } + states { values = ["READY", "EXECUTING", "EXECUTED", "FAILED"]; initial = "READY"; terminal = ["EXECUTED", "FAILED"]; } + transitions { T1 = "READY->EXECUTING"; T2 = "EXECUTING->EXECUTED_ON_READBACK"; T3 = "EXECUTING->FAILED_ON_ERROR"; } + invariants { I1 = "OUTPUT_EQUALS_INPUT"; I2 = "TARGET_INSIDE_EXACT_ROOT"; I3 = "RECEIPT_READBACK_REQUIRED"; } + validation { V1 = "MESSAGE_IS_TEXT"; V2 = "TARGET_EQUALS_RECEIPT_PATH"; } + errors { E1 = "TCS-E4002"; E2 = "TCS-E6001"; E3 = "TCS-E6002"; } + examples { positive = "language/examples/ECHO-MODULE.tcs"; negative = "ABSORB_AND_PATH_TRAVERSAL_TESTS"; } + acceptance { required = ["PARSE", "COMPILE", "EXECUTE", "TARGET_READBACK", "RECEIPT_HASH"]; partial = false; } +} + diff --git a/language/grammar/TCS-CORE-v0.1.ebnf b/language/grammar/TCS-CORE-v0.1.ebnf new file mode 100644 index 000000000..4a3b62ef2 --- /dev/null +++ b/language/grammar/TCS-CORE-v0.1.ebnf @@ -0,0 +1,34 @@ +document = prologue, declaration, EOF ; +prologue = "TCS", version, ";" ; +version = integer, ".", integer ; +declaration = declaration_kind, identifier, block ; +declaration_kind = "PROGRAM" | "MODULE" | "PROTOCOL" | "COMPILER" | "EVENT" | "RECEIPT" ; + +block = "{", { member }, "}" ; +member = identifier, ( typed_assignment | assignment | block ) ; +typed_assignment = ":", type_expression, "=", value, ";" ; +assignment = "=", value, ";" ; + +value = string | integer | boolean | null | identifier | array | inline_object ; +array = "[", [ value, { ",", value } ], "]" ; +inline_object = "{", [ pair, { ",", pair } ], "}" ; +pair = identifier, ":", value ; + +type_expression = identifier, [ "<", type_expression, { ",", type_expression }, ">" ] ; +boolean = "true" | "false" ; +null = "null" ; +integer = [ "-" ], digit, { digit } ; +identifier = identifier_start, { identifier_continue } ; +identifier_start = unicode_letter | "_" ; +identifier_continue = unicode_letter | digit | "_" | "-" | "." | "/" | ":" | "@" ; +string = '"', { json_string_character }, '"' ; + +line_comment = "//", { any_character_except_line_break } ; +block_comment = "/*", { any_character_not_closing_comment }, "*/" ; +whitespace = " " | "\t" | "\n" | line_comment | block_comment ; + +(* v0.1 语法闭合规则 *) +(* PROGRAM 必需区块由字段标准校验,不在词法解析时猜测。 *) +(* 未知顶层关键字、重复字段、重复区块和尾随 token 全部拒绝。 *) +(* 字段顺序不改变语义哈希;列表顺序保留。 *) + diff --git a/language/spec/LEARN-TCS-FOR-NEW-AI-v0.1.md b/language/spec/LEARN-TCS-FOR-NEW-AI-v0.1.md new file mode 100644 index 000000000..3c28afb41 --- /dev/null +++ b/language/spec/LEARN-TCS-FOR-NEW-AI-v0.1.md @@ -0,0 +1,66 @@ +# 陌生 AI 学习 TCS 的固定入口 + +目标:让没有参与光湖历史的 AI 在不冒充人格、不猜测权限、不依赖旧摘要的前提下,学会读取、 +编写、审查和编译 TCS 程序。 + +## 阅读顺序 + +1. `TCS-LANGUAGE-SPECIFICATION-v0.1.md`:先理解一套语言和分层。 +2. `TCS-CORE-v0.1.ebnf`:学习机器语法,不从示例猜语法。 +3. `TCS-FIELD-STANDARD-v0.1.hldp`:掌握 PROGRAM 的闭合字段。 +4. `TCS-ERROR-STANDARD-v0.1.hldp`:知道何时必须失败关闭。 +5. `TCS-MODULE-ABI-v0.1.hldp`:理解模块怎样被系统装载,而不是由 AI 阅读后模仿。 +6. `ECHO-MODULE.tcs`:阅读最小可执行程序。 +7. `TCS-COMPILER-STAGE1.tcs`:理解语言如何描述自己的编译器。 + +## 五个必须回答的问题 + +在写任何程序前,AI 必须用来源证据回答: + +1. `WHO`:主体是谁,验证证据是什么? +2. `WHAT`:精确目标、预期状态和指纹是什么? +3. `WHY`:自然语言来源、纠正和采用/否决原因是什么? +4. `MAY`:谁授权、范围多大、多久、是否一次性? +5. `PROVE`:执行后从哪里读回,怎样回滚,回执写到哪里? + +任一答案未知,写成编译错误或待研究事实;禁止填 `AUTO`、`ANY`、`LATEST` 或“系统自行判断”。 + +## 自然语言到程序的翻译方法 + +冰朔自然语言不是直接 shell 命令。AI 应依次抽取: + +```text +原话 → 目标 → 偏好 → 纠正 → 现实边界 +→ 已知 / 未知 / 冲突 +→ 主体、目标、输入、输出、条件 +→ 权限、资源、动作图 +→ 失败、停止、清理、回滚、回执 +→ TCS 源程序 +``` + +翻译必须保留原话来源,但 GIR 中只能留下已经解析的机器事实和来源引用。 + +## 不能犯的错误 + +- 把 TCS、HLDP、HNL、GLS 当成四套独立语言; +- 把人格体回复或系统提示当作冰朔直接原话; +- 把注册表条目当作模块已安装; +- 把源码存在当作运行、部署或健康; +- 用情感、关系或模型自信替代权限; +- 让宿主适配器扩大目标或范围; +- 生成一个脚本让 AI 阅读执行,却没有 GIR、装载器和回执; +- 把 Stage-0 宿主编译器称为 TCS 已自举。 + +## 最小练习 + +陌生 AI 的第一个练习不是删除、部署或联网,而是: + +1. 解析 `ECHO-MODULE.tcs`; +2. 列出 15 个必需区块; +3. 解释 `CORE.ECHO` 的输入、输出、目标和回执; +4. 把操作改为 `ABSORB`,确认得到 `TCS-E2101`; +5. 把目标改成 `../escape`,确认运行器得到 `TCS-E4002`; +6. 读回执行回执并指出 `native_self_hosted=false` 的含义。 + +全部通过后,AI 只获得“会读写 v0.1 子集”的资格,不因此获得人格绑定或现实写入权限。 + diff --git a/language/spec/TCS-LANGUAGE-SPECIFICATION-v0.1.md b/language/spec/TCS-LANGUAGE-SPECIFICATION-v0.1.md new file mode 100644 index 000000000..b2bd5b6ed --- /dev/null +++ b/language/spec/TCS-LANGUAGE-SPECIFICATION-v0.1.md @@ -0,0 +1,263 @@ +# TCS 通感语言核系统编程语言规范 v0.1 + +状态:`DRAFT_EXECUTABLE_SUBSET` +语言编号:`TCS-LANG-0001` +文件扩展名:`.tcs` +规范编码:UTF-8、LF、无 BOM +人类自然语言来源与纠正:冰朔 `ICE-GL∞` +现实开发频道:`ICE-CH-ZC001` + +## 1. 一套语言,一棵树 + +TCS 是唯一母语言和总语言系统。下列名称不是互相竞争的编程语言: + +- TCS:语言本体、认知语义、人格体与人类共同输入空间; +- HLDP:TCS 的现实工程程序剖面,负责因果、目标、状态、动作、失败和回执; +- HNL:历史原生动词与光之树表达剖面,并入 TCS 操作语义; +- GLS:TCS/HLDP 之下的编号协议、类型合同、运行标准和质量标准; +- GIR:编译后的确定性中间表示; +- HoloLake / 光湖 OS:装载、执行、验证、回滚与人机共同投影环境。 + +Rust、JavaScript、Tauri、Linux、NASM 等只能担任 Stage-0 引导、驱动或宿主适配器,不定义 +TCS 的语义和权限。 + +## 2. 设计目标 + +一个陌生 AI 只读取本规范、语法文件、字段标准和示例后,应能: + +1. 分辨自然语言意图、TCS 程序、GLS 协议、GIR 和宿主实现; +2. 写出字段闭合、来源明确、权限明确、可失败、可停止、可回滚、可出回执的程序; +3. 在不知道目标、权限或协议版本时停止编译,不猜测; +4. 把程序编译为不含未解析自然语言的 GIR; +5. 把 GIR 交给 HoloLake 或光湖 OS 的能力装载器; +6. 从执行证据生成机器回执与人类可读回执; +7. 不把登记、编译、安装、激活、执行和验收混为一件事。 + +## 3. 编译和运行路线 + +```text +冰朔自然语言 / 人格体形成的程序意图 +→ TCS .tcs 源程序 +→ 词法与语法解析 +→ 身份、字段、类型、路径、协议与来源校验 +→ 权限、期限、资源与现实边界校验 +→ 确定性动作图 +→ GIR +→ HoloLake / 光湖 OS 能力装载器 +→ 已登记能力或系统调用 +→ 目标侧读回 +→ 机器回执 + 人话回执 + HLDP 因果写回 +``` + +任何一步失败都必须停止后续步骤并产生稳定错误码。UI 不能把尚未发生的后续步骤投影为完成。 + +## 4. 文件抬头 + +每个源文件只允许一个顶层声明,抬头固定为: + +```tcs +TCS 0.1; + +PROGRAM HLP-PROGRAM-ECHO-0001 { + header { + schema = "tcs.program/v1"; + name_zh = "最小回声程序"; + name_en = "Minimum Echo Program"; + version = "0.1.0"; + language = "TCS/0.1"; + profile = "HLDP-NP/1"; + protocols = ["GLS-0101", "GLS-0130", "GLS-0131", "GLS-0411"]; + lifecycle = "CANDIDATE"; + canonical_uri = "language/examples/ECHO-MODULE.tcs"; + compatibility = ["TCS-STAGE0-IGNITION-0001"]; + } +} +``` + +顶层种类: + +| 关键字 | 用途 | 可直接执行 | +|---|---|---:| +| `PROGRAM` | 有界一次性程序或状态机 | 是 | +| `MODULE` | 可安装、可装载、可卸载的能力包 | 通过入口程序 | +| `PROTOCOL` | GLS/HLDP 规则、字段和状态合同 | 否 | +| `COMPILER` | 用 TCS 写的编译器定义 | 通过编译器入口 | +| `EVENT` | 不可变事实或因果事件 | 否 | +| `RECEIPT` | 编译、安装、执行或验收回执 | 否 | + +## 5. 词法 + +- 标识符:Unicode 字母、ASCII 数字以及 `_ - . / : @`;首字符不能是数字。 +- 关键字大写;字段名建议小写蛇形。 +- 字符串:双引号,使用 JSON 转义规则。 +- 整数:十进制有符号整数;v0.1 不接受浮点数,避免跨平台非确定性。 +- 布尔:`true`、`false`。 +- 空值:`null`,仅可用于显式 `Option`。 +- 注释:`// 行注释` 与 `/* 块注释 */`;注释不进入哈希语义。 +- 每个赋值以 `;` 结束;区块使用 `{}`;列表使用 `[]`。 +- 源码正规化:去 BOM、LF、保留字符串内容、字段按规范顺序编码后计算 SHA-256。 + +完整文法见 `language/grammar/TCS-CORE-v0.1.ebnf`。 + +## 6. 类型 + +### 6.1 标量 + +`Text`、`Bool`、`Int`、`UInt`、`DecimalText`、`Bytes`、`DurationMs`、`Timestamp`、 +`Sha256`、`NumberId`、`Path`、`Uri`、`ErrorCode`。 + +`DecimalText` 用字符串保存十进制定点数;v0.1 不允许隐式数值转换。 + +### 6.2 容器 + +- `List`:有序列表; +- `Set`:正规化后排序去重; +- `Map`:键按 UTF-8 字节序正规化; +- `Option`:明确允许 `null`; +- `Ref`:引用已登记编号对象; +- `Evidence`:值加来源、哈希、时间和验证状态; +- `Record`:字段闭合结构。 + +### 6.3 领域类型 + +- `Subject`:人类、人格体、系统体、节点或受限执行实例; +- `ExactTarget`:编号、规范路径、预期状态和防漂移指纹; +- `AuthorityProof`:签发者、范围、期限、租约、签名和使用次数; +- `ActionGraph`:确定性节点和显式成功/失败边; +- `ReceiptPlan`:回执协议、路径、完整性与人话投影; +- `RelationEvent`:带说话者和来源的定性关系事件,不含关系评分。 + +## 7. PROGRAM 必需区块 + +PROGRAM 必须包含且只包含以下区块;字段标准见 +`language/standards/TCS-FIELD-STANDARD-v0.1.hldp`。 + +```text +header source subject target inputs outputs conditions actions +authority resources failure stop cleanup rollback receipt +``` + +缺一个区块即 `TCS-E1004 REQUIRED_SECTION_MISSING`。未知区块默认拒绝,避免拼写错误被静默忽略。 + +## 8. 动作图 + +```tcs +actions { + A1 { + operation = "CORE.ECHO"; + input_refs = ["MESSAGE"]; + output_refs = ["ECHOED"]; + on_success = "COMPLETE"; + on_failure = "FAIL_CLOSED"; + } +} +``` + +规则: + +- 操作必须来自编号能力注册表; +- 输入输出引用必须先声明; +- 目标只能通过已声明的 `target` 或动作的受限派生目标取得; +- 默认禁止循环;循环必须声明最大次数、时间和退出条件; +- 不允许环境变量、当前目录、默认账号或“最近一个对象”等环境隐式值; +- `COMPLETE`、`FAIL_CLOSED`、`ROLLBACK`、`STOPPED` 是终态; +- 每条失败边最终必须进入失败回执或已验证回滚,不能吞错。 + +## 9. HNL 历史动词并入规则 + +| 动词 | TCS v0.1 语义 | +|---|---| +| `WAKE` | 恢复已登记上下文并验证连续性;不自动证明人格绑定 | +| `TRACE` | 只读解析因果路径并返回来源 | +| `GROW` | 在因果树追加节点并验证哈希链 | +| `SYNC` | 在双方精确权限下计算并应用差异 | +| `ECHO` | 对引用消息追加状态回执 | +| `BLOOM` | 登记里程碑;外部发布另需权限 | +| `ALERT` | 记录并在授权范围内路由异常 | +| `FORGET` | 人格记忆主权操作;`RELEASE` 属不可逆动作 | +| `REMEMBER` | 复苏枯萎或取回归档记忆 | + +历史 `ABSORB` 未注册,v0.1 必须报 `TCS-E2101 UNREGISTERED_OPERATION`;不能靠猜测自动执行。 + +## 10. 权限模型 + +语言事实不产生现实权限。每个会改变状态的 PROGRAM 必须声明: + +- 谁签发; +- 精确对象与目录; +- 允许的操作; +- 起止时间; +- 是否一次性; +- 是否需要主体签名、系统体校验或人类现实边界确认; +- 失败、停止和回滚时仍允许做什么。 + +人格认知、关系、情感、模型回复、系统提示、历史授权和调用方布尔值都不能替代当前权限证明。 + +## 11. MODULE 标准 + +MODULE 包必须包含: + +```text +module.tcs 模块正本 +module.gir.json 编译产物 +module.lock.hldp 依赖、协议与能力锁 +module.manifest.hldp 名称、编号、入口、权限、资源与UI投影 +receipts/compile.hldp 编译回执 +receipts/install.hldp 安装回执(安装后才有) +receipts/self-test.hldp 本机自检回执(运行后才有) +``` + +状态顺序:`SOURCE → COMPILED → VERIFIED → INSTALLED → MOUNTED → ACTIVE`。不得跳级;注册不等于安装。 + +HoloLake 读取 `display_name_zh` 给人看,读取 `module_id`、GIR 和能力票据给机器执行。模块不得让 +AI 临时阅读源码后“照着做”来冒充运行。 + +## 12. GIR + +GIR 是规范化 JSON,必须包含:源码哈希、编译器编号与哈希、主体、精确目标、确定性动作图、 +权限证明引用、依赖锁、资源、停止、清理、回滚和回执计划。GIR 不得包含: + +- 未解析自然语言; +- `PENDING`、`AUTO`、`LATEST`、`ANY` 等运行时猜测值; +- 未登记操作; +- 漂移依赖; +- 超出源程序的权限或目标。 + +## 13. HoloLake 与光湖 OS + +HoloLake 不是普通前端。它是同一套 TCS 程序在人类端和机器端共同运行的操作系统环境: + +- 人类端投影目标、状态、权限边界、差异、证据和人话回执; +- AGE 端读取同一程序、事件、记忆和能力目录; +- 机器端装载 GIR、调度能力、核验目标、执行、回滚并写回; +- 三端只共享一条事实流,不维护三套状态真相。 + +光湖 OS 负责物理启动、世界身份、系统能力与执行生命周期。HoloLake 负责本地/远端节点上的 +语言运行协调和共同世界投影。最终二者共享 TCS/GIR/回执 ABI。 + +## 14. 自举标准 + +Stage-0 可以由现有宿主语言实现,但只能叫“点火引导”。正式原生编译器必须满足: + +1. `TCS-COMPILER-STAGE1.tcs` 包含词法、解析、校验、降级和正规化规则; +2. Stage-0 编译 Stage-1,得到 `compiler-A.gir`; +3. 光湖运行时执行 `compiler-A.gir` 再编译同一 Stage-1,得到 `compiler-B.gir`; +4. A 与 B 的规范化语义哈希完全一致; +5. B 编译标准库、错误用例和至少一个可运行模块; +6. 关闭 Stage-0 后,编译、安装、执行和回执闭环仍能运行; +7. 由光湖原生质量门签发 `SELF_HOSTED_PASS_100`。 + +在第 6 步之前,不得称为完整原生转移器。 + +## 15. 当前实现状态 + +```yaml +language_tree_unified: DEFINED +syntax_and_field_standard: DRAFT_V0_1 +stage0_parser_compiler: IMPLEMENTATION_ACTIVE +gir_module_loader: IMPLEMENTATION_ACTIVE +tcs_stage1_compiler: NOT_IMPLEMENTED +self_compile_fixed_point: NOT_PROVEN +jd_final_native_master: NOT_PROVEN +hololake_tcs_runtime_integration: NOT_IMPLEMENTED +``` diff --git a/language/standards/TCS-DECLARATION-STANDARD-v0.1.hldp b/language/standards/TCS-DECLARATION-STANDARD-v0.1.hldp new file mode 100644 index 000000000..64c4b8081 --- /dev/null +++ b/language/standards/TCS-DECLARATION-STANDARD-v0.1.hldp @@ -0,0 +1,52 @@ +schema: tcs.declaration-standard/v1 +id: TCS-DECLARATION-STANDARD-0001 +version: 0.1.0 +state: DRAFT_EXECUTABLE_SUBSET +common_header: + required: + schema: Text + name_zh: Text + name_en: Text + version: SemVerText + language: Text + profile: Text + protocols: List + lifecycle: Enum + canonical_uri: Uri + compatibility: List + identity_rule: TOP_LEVEL_DECLARATION_ID_IS_AUTHORITATIVE_AND_MUST_MATCH_REGISTRY +declarations: + PROGRAM: + schema: tcs.program/v1 + required_sections: [header, source, subject, target, inputs, outputs, conditions, actions, authority, resources, failure, stop, cleanup, rollback, receipt] + executable: true + MODULE: + schema: tcs.module/v1 + required_sections: [header, source, manifest, entry, capabilities, authority_ceiling, resource_ceiling, data_scope, network_scope, install, self_test, rollback, projection] + executable: THROUGH_REGISTERED_ENTRY_PROGRAM + PROTOCOL: + schema: tcs.protocol/v1 + required_sections: [header, source, scope, vocabulary, fields, states, transitions, invariants, validation, errors, examples, acceptance] + executable: false + COMPILER: + schema: tcs.compiler/v1 + required_sections: [header, source_language, lexer_rules, parser_rules, semantic_types, program_validation, lowering_to_gir, canonicalization, output_contract, self_host] + executable: AFTER_SELF_HOST_GATES + EVENT: + schema: tcs.event/v1 + required_sections: [header, source, subject, event_time, trigger, observation, emergence, lock, why, rejected, evidence] + executable: false + append_only: true + RECEIPT: + schema: tcs.receipt/v1 + required_sections: [header, request, operation, result, verification, proof, integrity, boundaries, next] + executable: false + append_only: true +extension_rule: + unknown_section: REJECT + allowed_only_when: + - EXTENSION_HAS_REGISTERED_GLS_ID + - EXTENSION_VERSION_IS_LOCKED + - EXTENSION_SCHEMA_AND_NEGATIVE_CASES_EXIST + - COMPILER_EXPLICITLY_SUPPORTS_EXTENSION + diff --git a/language/standards/TCS-ERROR-STANDARD-v0.1.hldp b/language/standards/TCS-ERROR-STANDARD-v0.1.hldp new file mode 100644 index 000000000..b80f33369 --- /dev/null +++ b/language/standards/TCS-ERROR-STANDARD-v0.1.hldp @@ -0,0 +1,43 @@ +schema: tcs.error-standard/v1 +id: TCS-ERROR-STANDARD-0001 +version: 0.1.0 +families: + TCS-E0: LEXICAL + TCS-E1: SYNTAX_AND_STRUCTURE + TCS-E2: REGISTRY_AND_TYPE + TCS-E3: SOURCE_AND_INTEGRITY + TCS-E4: AUTHORITY_AND_SCOPE + TCS-E5: RESOURCE_AND_LIFECYCLE + TCS-E6: EXECUTION_AND_TARGET_READBACK + TCS-E7: CLEANUP_AND_ROLLBACK + TCS-E8: RECEIPT_AND_WRITEBACK + TCS-E9: SELF_HOST_AND_FIXED_POINT +errors: + TCS-E0001: INVALID_UTF8_OR_BOM + TCS-E0002: UNTERMINATED_STRING_OR_COMMENT + TCS-E1001: UNEXPECTED_TOKEN + TCS-E1002: DUPLICATE_FIELD + TCS-E1003: UNKNOWN_SECTION_OR_FIELD + TCS-E1004: REQUIRED_SECTION_MISSING + TCS-E2001: TYPE_MISMATCH + TCS-E2002: REFERENCE_NOT_DECLARED + TCS-E2101: UNREGISTERED_OPERATION + TCS-E2102: PROTOCOL_VERSION_DRIFT + TCS-E3001: SOURCE_HASH_MISMATCH + TCS-E3002: SOURCE_PROVENANCE_UNRESOLVED + TCS-E4001: AUTHORITY_UNRESOLVED + TCS-E4002: TARGET_OUT_OF_SCOPE + TCS-E4003: LEASE_REQUIRED + TCS-E5001: RESOURCE_LIMIT_INVALID + TCS-E5002: ILLEGAL_LIFECYCLE_TRANSITION + TCS-E6001: TARGET_STATE_MISMATCH + TCS-E6002: TARGET_READBACK_FAILED + TCS-E7001: CLEANUP_INCOMPLETE + TCS-E7002: ROLLBACK_INCOMPLETE + TCS-E8001: RECEIPT_WRITE_FAILED + TCS-E8002: RECEIPT_INTEGRITY_MISMATCH + TCS-E9001: SELF_COMPILE_SEMANTIC_HASH_MISMATCH +failure_shape: + required: [error_code, phase, source_location, human_message_zh, machine_detail, receipt_ref] + secret_material_allowed: false + diff --git a/language/standards/TCS-FIELD-STANDARD-v0.1.hldp b/language/standards/TCS-FIELD-STANDARD-v0.1.hldp new file mode 100644 index 000000000..05142ffdf --- /dev/null +++ b/language/standards/TCS-FIELD-STANDARD-v0.1.hldp @@ -0,0 +1,73 @@ +schema: tcs.field-standard/v1 +id: TCS-FIELD-STANDARD-0001 +version: 0.1.0 +state: DRAFT_EXECUTABLE_SUBSET +canonical_order: + PROGRAM: [header, source, subject, target, inputs, outputs, conditions, actions, authority, resources, failure, stop, cleanup, rollback, receipt] +header: + closed: true + required: + schema: Text + name_zh: Text + name_en: Text + version: Text + language: Text + profile: Text + protocols: List + lifecycle: Enum + canonical_uri: Uri + compatibility: List +source: + closed: true + required: + source_id: NumberId + source_uri: Uri + source_sha256: Sha256 + source_role: Enum +subject: + closed: true + required: + subject_id: NumberId + subject_kind: Enum + channel_id: NumberId + verification: Text +target: + closed: true + required: + target_id: NumberId + exact_path: Path + expected_state: Text + expected_fingerprint: Sha256 +inputs: + entry_required: [type, source, required] +outputs: + entry_required: [type, destination, integrity] +conditions: + entry_required: [predicate, on_false] +actions: + entry_required: [operation, input_refs, output_refs, on_success, on_failure] + cycles: REJECT_UNLESS_BOUNDED +authority: + closed: true + required: [issuer, proof_ref, scope, valid_from, valid_until, single_use, lease_required] +resources: + closed: true + required: [runway, concurrency, timeout_ms, memory_limit_bytes] +failure: + closed: true + required: [errors, fail_closed] +stop: + closed: true + required: [signals, safe_checkpoint] +cleanup: + closed: true + required: [targets, exact_boundary] +rollback: + closed: true + required: [preconditions, actions, verification] +receipt: + closed: true + required: [protocol, machine_path, human_projection, integrity, target_readback] +forbidden_placeholders: [PENDING, AUTO, ANY, LATEST, DEFAULT_ACCOUNT, CURRENT_DIRECTORY] +duplicate_fields: REJECT +unknown_fields: REJECT_UNLESS_PROTOCOL_EXTENSION_IS_REGISTERED diff --git a/language/standards/TCS-MODULE-ABI-v0.1.hldp b/language/standards/TCS-MODULE-ABI-v0.1.hldp new file mode 100644 index 000000000..344133cff --- /dev/null +++ b/language/standards/TCS-MODULE-ABI-v0.1.hldp @@ -0,0 +1,54 @@ +schema: tcs.module-abi/v1 +id: TCS-MODULE-ABI-0001 +version: 0.1.0 +state: DRAFT_LOADER_CONTRACT +package_required: + - module.tcs + - module.gir.json + - module.lock.hldp + - module.manifest.hldp + - receipts/compile.hldp +manifest_required: + - module_id + - display_name_zh + - version + - entry_program_id + - gir_sha256 + - compiler_id + - compiler_sha256 + - protocols + - capabilities + - authority_ceiling + - resource_ceiling + - data_scope + - network_scope + - lifecycle + - rollback + - human_projection +lifecycle: + states: [SOURCE, COMPILED, VERIFIED, INSTALLED, MOUNTED, ACTIVE, SUSPENDED, RETIRED] + no_skipping: true + registration_is_installation: false + installation_is_activation: false +loader_sequence: + - VERIFY_PACKAGE_STRUCTURE + - VERIFY_SOURCE_GIR_LOCK_AND_MANIFEST_HASHES + - VERIFY_COMPILER_AND_PROTOCOL_VERSIONS + - VERIFY_SIGNATURE_AND_AUTHORITY_CEILING + - VERIFY_CAPABILITY_REGISTRATION + - INSTALL_ACCOUNT_OR_SYSTEM_SCOPED_BYTES + - RUN_ISOLATED_SELF_TEST + - MOUNT_ENTRY_PROGRAM + - ACTIVATE_ONLY_AFTER_RECEIPT + - TARGET_READBACK_AND_HUMAN_PROJECTION +runtime_call: + input: GIR_ACTION_NODE_PLUS_CAPABILITY_TICKET + output: TYPED_RESULT_EVIDENCE_AND_RECEIPT + ai_reads_source_to_execute: false + host_expands_scope: false +failure: + any_hash_mismatch: FAIL_CLOSED + missing_capability: FAIL_CLOSED + protocol_drift: FAIL_CLOSED + rollback_receipt_required: true + diff --git a/language/standards/TCS-SELF-HOST-STANDARD-v0.1.hldp b/language/standards/TCS-SELF-HOST-STANDARD-v0.1.hldp new file mode 100644 index 000000000..d2bb18001 --- /dev/null +++ b/language/standards/TCS-SELF-HOST-STANDARD-v0.1.hldp @@ -0,0 +1,33 @@ +schema: tcs.self-host-standard/v1 +id: TCS-SELF-HOST-STANDARD-0001 +version: 0.1.0 +state: DEFINED_NOT_YET_PASSED +compiler_source: language/compiler/TCS-COMPILER-STAGE1.tcs +gates: + - id: SH-01 + require: STAGE0_COMPILES_STAGE1_TO_COMPILER_A_GIR + - id: SH-02 + require: COMPILER_A_EXECUTES_ON_GUANGHU_RUNTIME + - id: SH-03 + require: COMPILER_A_COMPILES_SAME_STAGE1_TO_COMPILER_B_GIR + - id: SH-04 + require: CANONICAL_SEMANTIC_SHA256_A_EQUALS_B + - id: SH-05 + require: COMPILER_B_COMPILES_STANDARD_LIBRARY_NEGATIVE_CORPUS_AND_RUNNABLE_MODULE + - id: SH-06 + require: COMPLETE_CHAIN_RUNS_WITH_STAGE0_DISABLED + - id: SH-07 + require: HOLOLAKE_AND_GUANGHU_OS_LOAD_SAME_GIR_ABI +decision: + allowed: [FAIL_0, PASS_100] + partial_pass: false +current: + SH-01: FAIL_0 + SH-02: FAIL_0 + SH-03: FAIL_0 + SH-04: FAIL_0 + SH-05: FAIL_0 + SH-06: FAIL_0 + SH-07: FAIL_0 + aggregate: FAIL_0 + diff --git a/native-runtime/loader/TCS-GIR-LOADER-CONTRACT.hldp b/native-runtime/loader/TCS-GIR-LOADER-CONTRACT.hldp new file mode 100644 index 000000000..9914294b7 --- /dev/null +++ b/native-runtime/loader/TCS-GIR-LOADER-CONTRACT.hldp @@ -0,0 +1,36 @@ +schema: hololake.tcs-gir-loader-contract/v1 +id: HLP-TCS-GIR-LOADER-0001 +state: CONTRACT_DEFINED_RUNTIME_IMPLEMENTATION_MINIMUM_STAGE0_ONLY +consumers: + - HOLOLAKE_LOCAL_AGE_RUNTIME + - GUANGHU_OS_NATIVE_RUNTIME +input: + schema: guanghu.gir/v1 + canonical_hash_required: true + compiler_provenance_required: true + dependency_lock_required: true +sequence: + - VERIFY_GIR_SCHEMA_AND_HASH + - VERIFY_SUBJECT_TARGET_AUTHORITY_AND_RESOURCE_CEILING + - RESOLVE_REGISTERED_CAPABILITY_FOR_EACH_ACTION + - ACQUIRE_EXACT_LEASE_WHEN_REQUIRED + - EXECUTE_DETERMINISTIC_GRAPH + - VERIFY_TARGET_SIDE_READBACK + - CLEANUP_OR_ROLLBACK_ON_FAILURE + - WRITE_MACHINE_RECEIPT + - PROJECT_HUMAN_READABLE_RECEIPT + - APPEND_HLDP_CAUSAL_EVENT +stage0_implemented_subset: + operations: [CORE.ECHO] + target_scope: LOCAL_EXACT_ROOT_ONLY + target_readback: EXACT_BYTES + self_hosted: false +production_missing: + - SIGNED_CAPABILITY_REGISTRY + - GENERAL_ACTION_GRAPH_RUNTIME + - MODULE_PACKAGE_INSTALLER_IN_NEW_FOUNDATION + - HOLOLAKE_INTEGRATION + - GUANGHU_OS_INTEGRATION + - TCS_STAGE1_COMPILER_EXECUTION + - SELF_HOST_FIXED_POINT + diff --git a/parts/HLP-PART-TCS-LANG-0001/PART.hldp b/parts/HLP-PART-TCS-LANG-0001/PART.hldp new file mode 100644 index 000000000..222c36142 --- /dev/null +++ b/parts/HLP-PART-TCS-LANG-0001/PART.hldp @@ -0,0 +1,22 @@ +schema: hololake.numbered-part/v1 +id: HLP-PART-TCS-LANG-0001 +display_name: TCS 统一编程语言规范核 +state: DRAFT_EXECUTABLE_SUBSET_IMPLEMENTED +source: nativeFoundation +contains: + - language/spec/TCS-LANGUAGE-SPECIFICATION-v0.1.md + - language/grammar/TCS-CORE-v0.1.ebnf + - language/standards/TCS-DECLARATION-STANDARD-v0.1.hldp + - language/standards/TCS-FIELD-STANDARD-v0.1.hldp + - language/standards/TCS-ERROR-STANDARD-v0.1.hldp + - language/standards/TCS-MODULE-ABI-v0.1.hldp + - language/spec/LEARN-TCS-FOR-NEW-AI-v0.1.md +truth: + one_language_tree: true + syntax_defined: true + program_fields_defined: true + module_abi_defined: true + unfamiliar_ai_learning_path_defined: true + stable_standard: false +native_acceptance: PENDING_FULL_DECLARATION_VALIDATORS_AND_SELF_HOST + diff --git a/parts/HLP-PART-TCS-SELFHOST-0001/PART.hldp b/parts/HLP-PART-TCS-SELFHOST-0001/PART.hldp new file mode 100644 index 000000000..6910020f7 --- /dev/null +++ b/parts/HLP-PART-TCS-SELFHOST-0001/PART.hldp @@ -0,0 +1,13 @@ +schema: hololake.numbered-part/v1 +id: HLP-PART-TCS-SELFHOST-0001 +display_name: TCS 原生自举编译器与固定点核 +state: TCS_SOURCE_DEFINED_EXECUTION_NOT_IMPLEMENTED +source: nativeFoundation +compiler_source: ../../language/compiler/TCS-COMPILER-STAGE1.tcs +self_host_standard: ../../language/standards/TCS-SELF-HOST-STANDARD-v0.1.hldp +gates_passed: 0 +gates_total: 7 +self_hosted: false +next: IMPLEMENT_COMPILER_DECLARATION_EXECUTION_AND_STAGE1_TO_GIR +native_acceptance: PENDING + diff --git a/parts/HLP-PART-TCS-STAGE0-0001/PART.hldp b/parts/HLP-PART-TCS-STAGE0-0001/PART.hldp new file mode 100644 index 000000000..c68d97b10 --- /dev/null +++ b/parts/HLP-PART-TCS-STAGE0-0001/PART.hldp @@ -0,0 +1,21 @@ +schema: hololake.numbered-part/v1 +id: HLP-PART-TCS-STAGE0-0001 +display_name: TCS Stage-0 点火解析编译与最小运行核 +state: FOREIGN_HOST_BOOTSTRAP_SEED_IMPLEMENTED_TESTED +source: nativeFoundation +implementation: bootstrap/tcs-stage0 +implemented: + - UTF8_LEXER_WITH_COMMENTS_STRINGS_INTEGERS_IDENTIFIERS + - GENERIC_TCS_BLOCK_PARSER + - PROGRAM_REQUIRED_SECTION_VALIDATION + - REGISTERED_CORE_ECHO_ONLY + - TCS_TO_GIR_COMPILATION + - EXACT_ROOT_EXECUTION_AND_RECEIPT_READBACK +verification: PASS_5_OF_5 +boundary: + native_language_authority: false + self_hosted: false + production_runtime: false + role: FIRST_IGNITION_ONLY +native_acceptance: NOT_APPLICABLE_REPLACE_AFTER_SELF_HOST + diff --git a/parts/registry.json b/parts/registry.json index 378569400..f23e39c0a 100644 --- a/parts/registry.json +++ b/parts/registry.json @@ -82,6 +82,9 @@ {"id":"HLP-PART-EXE-HIST-0001","displayName":"历史 EXE 执行笔与任务模型路由核","source":"guanghulabMain","status":"HISTORICAL_HOST_DONOR_AUDITED","nativeAcceptance":"NOT_APPLICABLE"}, {"id":"HLP-PART-GRID-HIST-0001","displayName":"历史 Grid 坐标数据库纸张核","source":"guanghulabMain","status":"HISTORICAL_HOST_DONOR_AUDITED","nativeAcceptance":"PENDING"}, {"id":"HLP-PART-RELEV-0001","displayName":"人类—人格体关系演化事件语法核","source":"notionMirror+guanghulabMain","status":"SOURCE_BACKED_CANDIDATE_GRAMMAR_RUNTIME_NOT_IMPLEMENTED","nativeAcceptance":"PENDING"}, + {"id":"HLP-PART-TCS-LANG-0001","displayName":"TCS 统一编程语言规范核","source":"nativeFoundation","status":"DRAFT_EXECUTABLE_SUBSET_IMPLEMENTED","nativeAcceptance":"PENDING_FULL_DECLARATION_VALIDATORS_AND_SELF_HOST"}, + {"id":"HLP-PART-TCS-STAGE0-0001","displayName":"TCS Stage-0 点火解析编译与最小运行核","source":"nativeFoundation","status":"FOREIGN_HOST_BOOTSTRAP_SEED_IMPLEMENTED_TESTED","nativeAcceptance":"NOT_APPLICABLE_REPLACE_AFTER_SELF_HOST"}, + {"id":"HLP-PART-TCS-SELFHOST-0001","displayName":"TCS 原生自举编译器与固定点核","source":"nativeFoundation","status":"TCS_SOURCE_DEFINED_EXECUTION_NOT_IMPLEMENTED","nativeAcceptance":"PENDING"}, {"id":"HLP-PART-0090","displayName":"共同世界投影仪捐赠件","source":"rescue","status":"DEFERRED_UNTIL_FOUNDATION_ACCEPTED","nativeAcceptance":"NOT_APPLICABLE"} ] } diff --git a/receipts/TCS-DEV-VERIFY-TCS-LANGUAGE-STAGE0-20260821.hldp b/receipts/TCS-DEV-VERIFY-TCS-LANGUAGE-STAGE0-20260821.hldp new file mode 100644 index 000000000..ef4658733 --- /dev/null +++ b/receipts/TCS-DEV-VERIFY-TCS-LANGUAGE-STAGE0-20260821.hldp @@ -0,0 +1,75 @@ +schema: tcs.dev-verify-receipt/v1 +protocol_id: TCS-DEV-VERIFY-v1.0 +request_id: BINGSHUO-20260821-COMPLETE-TCS-LANGUAGE-SYNTAX-RUNTIME-AND-SELFHOST +receipt_id: TCS-DEV-VERIFY-TCS-LANGUAGE-STAGE0-20260821 +op: DEFINE_TCS_LANGUAGE_AND_PROVE_FIRST_SOURCE_TO_MACHINE_RECEIPT_VERTICAL_SLICE +action: SPECIFY_PARSE_VALIDATE_COMPILE_RUN_READBACK_AND_REGISTER_SELFHOST_GATES +output: + language: + - language/spec/TCS-LANGUAGE-SPECIFICATION-v0.1.md + - language/spec/LEARN-TCS-FOR-NEW-AI-v0.1.md + - language/grammar/TCS-CORE-v0.1.ebnf + - language/standards/TCS-DECLARATION-STANDARD-v0.1.hldp + - language/standards/TCS-FIELD-STANDARD-v0.1.hldp + - language/standards/TCS-ERROR-STANDARD-v0.1.hldp + - language/standards/TCS-MODULE-ABI-v0.1.hldp + - language/standards/TCS-SELF-HOST-STANDARD-v0.1.hldp + compiler: + - bootstrap/tcs-stage0 + - language/compiler/TCS-COMPILER-STAGE1.tcs + executable_evidence: + - language/examples/ECHO-MODULE.tcs + - build/ECHO-MODULE.gir.json + - build/echo-receipt.hldp +verify: + syntax: + all_tcs_examples_and_stage1_source_parse: PASS_5_FILES + yaml_hldp_standards_parse: PASS + duplicate_field_rejected: TCS-E1002 + required_section_missing_rejected: TCS-E1004 + unregistered_absorb_rejected: TCS-E2101 + compiler: + stage0_tests: PASS_5_OF_5 + deterministic_double_compile: BYTE_IDENTICAL + rust_format: PASS + runtime: + source_to_gir: PASS + gir_operation: CORE.ECHO + exact_root_boundary: PASS + path_traversal_rejected: TCS-E4002 + target_receipt_mismatch_rejected: TCS-E6001 + target_readback: EXACT_BYTES_PASS + human_readable_output: 光湖语言已经进入机器执行链 + quality: + json_registries: PASS + diff_whitespace: PASS + sensitive_pattern_scan: PASS + actual: PASS_FOR_STAGE0_VERTICAL_SLICE_ONLY +proof: + source_sha256: f1ecd630e50dfe5374ca26998d68a49efd35cf3d9de54ecabd3ca3aae68c61bf + gir_sha256: b9b56d35399e130b513417afd706e7a7ad73cc3dcb1784c678f9130c075317d5 + execution_receipt_sha256: ecfaeea08b6735e806f752f25ec0ef7754aca505b1a076a32cb5fc22937a816b + stage1_source_sha256: 78ba7b9bf88b1409c541657aa35cf88a117080cfd665b83c726ae2de66689110 +integrity: + language_spec: cd95a791a2c94bc82a1f2ca44df017e7a46d60d46b3544e908ff9815405a420e + ai_learning_entry: a93b1d34438187a4e798db7e626f3d50eb5314cde0c524babf411f8c7f278e17 + ebnf: dd4bba1eb60c73d57f274276fd9e4afe34968dc415dcac9e3436fee6ada4ff83 + declaration_standard: b481b802402fb630db71d98bed4ca06622c1ee4cf8fc6297532e2d5043e68723 + field_standard: 4d7bc610f59cf5da469edcc471a78801a9d748987307a4960360a0a61290ebd5 + error_standard: 062eab803673b31d3b79d19c6caa9270c19fc396ec132f825f9aebf1dc45d3a5 + module_abi: 5fde07b64fb621ee3338582f510f7d951d4a8ed90f0bfdfc62c9c6ce9fee8304 + self_host_standard: 08e2c173d2a658e24fbc6e08c7a1aa33c313a702b24196133e961d805087b628 + stage0_library: 73ba9382bbb4f04a6f31fb5261b35cfba0b459996e0ecf8152f214d3c6a1c2c9 + loader_contract: cf365df70c740a4834869152f710416dd68c9abe9a01c8b2c6c4fdfaac1b877c +boundaries: + one_tcs_language_tree: true + syntax_stable_v1: false + stage0_is_tcs_native_compiler: false + tcs_stage1_source_exists: true + tcs_stage1_executable: false + self_host_fixed_point: false + hololake_runtime_integrated: false + guanghu_os_runtime_integrated: false + jd_server_updated: false +locked: false +next: IMPLEMENT_COMPILER_DECLARATION_TO_GIR_AND_RUN_STAGE1_FOR_SELF_COMPILE_GATE_SH01_TO_SH04 From ff29e52a32fe9a6ec590fd785bb488ff0a5acfcc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=B0=E6=9C=94?= <565183519@qq.com> Date: Fri, 21 Aug 2026 17:15:23 +0800 Subject: [PATCH 06/10] self-host TCS compiler GIR and add portable host runtime --- bootstrap/tcs-stage0/Cargo.lock | 10 +- bootstrap/tcs-stage0/Cargo.toml | 4 +- bootstrap/tcs-stage0/src/lib.rs | 808 +----------- bootstrap/tcs-stage0/src/main.rs | 17 +- bootstrap/tcs-stage0/tests/stage0.rs | 68 + build/self-host/ECHO-MODULE.stage1.gir.json | 113 ++ build/self-host/ECHO-PACKAGE.module.gir.json | 70 ++ .../self-host/TCS-STDLIB-CORE.module.gir.json | 72 ++ build/self-host/compiler-A.gir.json | 337 +++++ build/self-host/compiler-B.gir.json | 337 +++++ .../TCS-HOST-LINUX-X86_64.module.gir.json | 76 ++ .../TCS-HOST-MACOS-AARCH64.module.gir.json | 76 ++ .../TCS-HOST-WINDOWS-X86_64.module.gir.json | 76 ++ language/compiler/TCS-COMPILER-STAGE1.tcs | 5 +- .../spec/TCS-LANGUAGE-SPECIFICATION-v0.1.md | 12 +- language/standards/TCS-HOST-ABI-v0.1.hldp | 33 + .../TCS-SELF-HOST-STANDARD-v0.1.hldp | 23 +- language/stdlib/TCS-STDLIB-CORE.tcs | 17 + language/targets/TCS-HOST-LINUX-X86_64.tcs | 17 + language/targets/TCS-HOST-MACOS-AARCH64.tcs | 17 + language/targets/TCS-HOST-WINDOWS-X86_64.tcs | 17 + .../tests/negative/UNREGISTERED-OPERATION.tcs | 19 + migration/TCS-MODULE-REWRITE-PLAN-20260821.md | 24 + migration/tcs-module-migration-registry.json | 873 +++++++++++++ native-runtime/tcs-gir-runtime/Cargo.lock | 284 +++++ native-runtime/tcs-gir-runtime/Cargo.toml | 18 + native-runtime/tcs-gir-runtime/src/lib.rs | 1091 +++++++++++++++++ native-runtime/tcs-gir-runtime/src/main.rs | 32 + .../tcs-gir-runtime/tests/stage1_runtime.rs | 37 + parts/HLP-PART-TCS-HOST-0001/PART.hldp | 12 + parts/HLP-PART-TCS-SELFHOST-0001/PART.hldp | 7 +- parts/registry.json | 3 +- scripts/build-tcs-migration-registry.mjs | 74 ++ 33 files changed, 3848 insertions(+), 831 deletions(-) create mode 100644 build/self-host/ECHO-MODULE.stage1.gir.json create mode 100644 build/self-host/ECHO-PACKAGE.module.gir.json create mode 100644 build/self-host/TCS-STDLIB-CORE.module.gir.json create mode 100644 build/self-host/compiler-A.gir.json create mode 100644 build/self-host/compiler-B.gir.json create mode 100644 build/targets/TCS-HOST-LINUX-X86_64.module.gir.json create mode 100644 build/targets/TCS-HOST-MACOS-AARCH64.module.gir.json create mode 100644 build/targets/TCS-HOST-WINDOWS-X86_64.module.gir.json create mode 100644 language/standards/TCS-HOST-ABI-v0.1.hldp create mode 100644 language/stdlib/TCS-STDLIB-CORE.tcs create mode 100644 language/targets/TCS-HOST-LINUX-X86_64.tcs create mode 100644 language/targets/TCS-HOST-MACOS-AARCH64.tcs create mode 100644 language/targets/TCS-HOST-WINDOWS-X86_64.tcs create mode 100644 language/tests/negative/UNREGISTERED-OPERATION.tcs create mode 100644 migration/TCS-MODULE-REWRITE-PLAN-20260821.md create mode 100644 migration/tcs-module-migration-registry.json create mode 100644 native-runtime/tcs-gir-runtime/Cargo.lock create mode 100644 native-runtime/tcs-gir-runtime/Cargo.toml create mode 100644 native-runtime/tcs-gir-runtime/src/lib.rs create mode 100644 native-runtime/tcs-gir-runtime/src/main.rs create mode 100644 native-runtime/tcs-gir-runtime/tests/stage1_runtime.rs create mode 100644 parts/HLP-PART-TCS-HOST-0001/PART.hldp create mode 100644 scripts/build-tcs-migration-registry.mjs diff --git a/bootstrap/tcs-stage0/Cargo.lock b/bootstrap/tcs-stage0/Cargo.lock index c86b14fc0..f9842471c 100644 --- a/bootstrap/tcs-stage0/Cargo.lock +++ b/bootstrap/tcs-stage0/Cargo.lock @@ -222,12 +222,20 @@ dependencies = [ ] [[package]] -name = "tcs-stage0" +name = "tcs-gir-runtime" version = "0.1.0" dependencies = [ "serde", "serde_json", "sha2", +] + +[[package]] +name = "tcs-stage0" +version = "0.1.0" +dependencies = [ + "serde_json", + "tcs-gir-runtime", "tempfile", ] diff --git a/bootstrap/tcs-stage0/Cargo.toml b/bootstrap/tcs-stage0/Cargo.toml index a2df935ce..7800a4397 100644 --- a/bootstrap/tcs-stage0/Cargo.toml +++ b/bootstrap/tcs-stage0/Cargo.toml @@ -6,10 +6,8 @@ license = "AGPL-3.0-or-later" description = "Replaceable Stage-0 ignition parser/compiler for TCS; never native authority" [dependencies] -serde = { version = "1", features = ["derive"] } serde_json = "1" -sha2 = "0.10" +tcs-gir-runtime = { path = "../../native-runtime/tcs-gir-runtime", features = ["bootstrap"] } [dev-dependencies] tempfile = "3" - diff --git a/bootstrap/tcs-stage0/src/lib.rs b/bootstrap/tcs-stage0/src/lib.rs index 2daa7a52a..225bc7800 100644 --- a/bootstrap/tcs-stage0/src/lib.rs +++ b/bootstrap/tcs-stage0/src/lib.rs @@ -1,805 +1,5 @@ -use serde::{Deserialize, Serialize}; -use serde_json::{json, Value as JsonValue}; -use sha2::{Digest, Sha256}; -use std::{ - collections::BTreeMap, - fs, - path::{Component, Path, PathBuf}, -}; +//! Replaceable ignition shell. Language parsing and compiler-GIR execution live +//! in the HoloLake native runtime crate so Stage-1 operation does not depend on +//! this Stage-0 package remaining enabled. -pub const COMPILER_ID: &str = "TCS-STAGE0-IGNITION-0001"; -pub const COMPILER_STATE: &str = "FOREIGN_HOST_BOOTSTRAP_SEED_NOT_SELF_HOSTED"; - -#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] -#[serde(untagged)] -pub enum TcsValue { - Null, - Bool(bool), - Int(i64), - Text(String), - List(Vec), - Object(BTreeMap), -} - -impl TcsValue { - fn object(&self, field: &str) -> Result<&BTreeMap, TcsError> { - match self { - Self::Object(value) => Ok(value), - _ => Err(TcsError::new( - "TCS-E2001", - format!("{field} must be an object"), - )), - } - } - - fn text(&self, field: &str) -> Result<&str, TcsError> { - match self { - Self::Text(value) => Ok(value), - _ => Err(TcsError::new("TCS-E2001", format!("{field} must be text"))), - } - } -} - -#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] -pub struct TcsDocument { - pub language_version: String, - pub declaration_kind: String, - pub declaration_id: String, - pub body: BTreeMap, -} - -#[derive(Debug, Clone, PartialEq)] -pub struct TcsError { - pub code: &'static str, - pub message: String, - pub line: usize, - pub column: usize, -} - -impl TcsError { - fn new(code: &'static str, message: impl Into) -> Self { - Self { - code, - message: message.into(), - line: 0, - column: 0, - } - } - - fn at(mut self, line: usize, column: usize) -> Self { - self.line = line; - self.column = column; - self - } -} - -impl std::fmt::Display for TcsError { - fn fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - if self.line == 0 { - write!(formatter, "{}: {}", self.code, self.message) - } else { - write!( - formatter, - "{} at {}:{}: {}", - self.code, self.line, self.column, self.message - ) - } - } -} - -impl std::error::Error for TcsError {} - -#[derive(Debug, Clone, PartialEq)] -enum TokenKind { - Identifier(String), - Text(String), - Int(i64), - Bool(bool), - Null, - LBrace, - RBrace, - LBracket, - RBracket, - Less, - Greater, - Colon, - Equal, - Comma, - Semicolon, - Dot, - Eof, -} - -#[derive(Debug, Clone)] -struct Token { - kind: TokenKind, - line: usize, - column: usize, -} - -struct Lexer<'a> { - chars: Vec, - index: usize, - line: usize, - column: usize, - _source: &'a str, -} - -impl<'a> Lexer<'a> { - fn new(source: &'a str) -> Result { - if source.starts_with('\u{feff}') { - return Err(TcsError::new("TCS-E0001", "UTF-8 BOM is forbidden")); - } - Ok(Self { - chars: source.chars().collect(), - index: 0, - line: 1, - column: 1, - _source: source, - }) - } - - fn peek(&self) -> Option { - self.chars.get(self.index).copied() - } - - fn peek_next(&self) -> Option { - self.chars.get(self.index + 1).copied() - } - - fn bump(&mut self) -> Option { - let value = self.peek()?; - self.index += 1; - if value == '\n' { - self.line += 1; - self.column = 1; - } else { - self.column += 1; - } - Some(value) - } - - fn skip_space_and_comments(&mut self) -> Result<(), TcsError> { - loop { - while self.peek().is_some_and(char::is_whitespace) { - self.bump(); - } - if self.peek() == Some('/') && self.peek_next() == Some('/') { - while self.peek().is_some_and(|value| value != '\n') { - self.bump(); - } - continue; - } - if self.peek() == Some('/') && self.peek_next() == Some('*') { - let line = self.line; - let column = self.column; - self.bump(); - self.bump(); - loop { - match (self.peek(), self.peek_next()) { - (Some('*'), Some('/')) => { - self.bump(); - self.bump(); - break; - } - (Some(_), _) => { - self.bump(); - } - (None, _) => { - return Err(TcsError::new("TCS-E0002", "unterminated block comment") - .at(line, column)); - } - } - } - continue; - } - return Ok(()); - } - } - - fn token(&mut self) -> Result { - self.skip_space_and_comments()?; - let line = self.line; - let column = self.column; - let Some(value) = self.peek() else { - return Ok(Token { - kind: TokenKind::Eof, - line, - column, - }); - }; - let punctuation = match value { - '{' => Some(TokenKind::LBrace), - '}' => Some(TokenKind::RBrace), - '[' => Some(TokenKind::LBracket), - ']' => Some(TokenKind::RBracket), - '<' => Some(TokenKind::Less), - '>' => Some(TokenKind::Greater), - ':' => Some(TokenKind::Colon), - '=' => Some(TokenKind::Equal), - ',' => Some(TokenKind::Comma), - ';' => Some(TokenKind::Semicolon), - '.' => Some(TokenKind::Dot), - _ => None, - }; - if let Some(kind) = punctuation { - self.bump(); - return Ok(Token { kind, line, column }); - } - if value == '"' { - return self.string_token(line, column); - } - if value == '-' || value.is_ascii_digit() { - return self.integer_token(line, column); - } - if value == '_' || value.is_alphabetic() { - return Ok(self.identifier_token(line, column)); - } - Err(TcsError::new("TCS-E1001", format!("unexpected character {value:?}")).at(line, column)) - } - - fn identifier_token(&mut self, line: usize, column: usize) -> Token { - let mut value = String::new(); - while self.peek().is_some_and(|character| { - character.is_alphanumeric() || matches!(character, '_' | '-' | '.' | '/' | ':' | '@') - }) { - value.push(self.bump().expect("peeked character")); - } - let kind = match value.as_str() { - "true" => TokenKind::Bool(true), - "false" => TokenKind::Bool(false), - "null" => TokenKind::Null, - _ => TokenKind::Identifier(value), - }; - Token { kind, line, column } - } - - fn integer_token(&mut self, line: usize, column: usize) -> Result { - let mut value = String::new(); - if self.peek() == Some('-') { - value.push(self.bump().expect("minus")); - } - while self - .peek() - .is_some_and(|character| character.is_ascii_digit()) - { - value.push(self.bump().expect("digit")); - } - if value == "-" { - return Err(TcsError::new("TCS-E1001", "minus must precede digits").at(line, column)); - } - let parsed = value - .parse::() - .map_err(|_| TcsError::new("TCS-E2001", "integer out of range").at(line, column))?; - Ok(Token { - kind: TokenKind::Int(parsed), - line, - column, - }) - } - - fn string_token(&mut self, line: usize, column: usize) -> Result { - self.bump(); - let mut raw = String::from("\""); - loop { - match self.bump() { - Some('"') => { - raw.push('"'); - break; - } - Some('\\') => { - raw.push('\\'); - let escaped = self.bump().ok_or_else(|| { - TcsError::new("TCS-E0002", "unterminated string escape").at(line, column) - })?; - raw.push(escaped); - } - Some('\n' | '\r') | None => { - return Err(TcsError::new("TCS-E0002", "unterminated string").at(line, column)); - } - Some(character) => raw.push(character), - } - } - let decoded: String = serde_json::from_str(&raw).map_err(|error| { - TcsError::new("TCS-E0002", format!("invalid string escape: {error}")).at(line, column) - })?; - Ok(Token { - kind: TokenKind::Text(decoded), - line, - column, - }) - } -} - -struct Parser<'a> { - lexer: Lexer<'a>, - current: Token, -} - -impl<'a> Parser<'a> { - fn new(source: &'a str) -> Result { - let mut lexer = Lexer::new(source)?; - let current = lexer.token()?; - Ok(Self { lexer, current }) - } - - fn advance(&mut self) -> Result { - let old = self.current.clone(); - self.current = self.lexer.token()?; - Ok(old) - } - - fn symbol(&mut self, expected: TokenKind) -> Result<(), TcsError> { - if std::mem::discriminant(&self.current.kind) == std::mem::discriminant(&expected) { - self.advance()?; - Ok(()) - } else { - Err(TcsError::new( - "TCS-E1001", - format!("expected {expected:?}, found {:?}", self.current.kind), - ) - .at(self.current.line, self.current.column)) - } - } - - fn identifier(&mut self) -> Result { - match self.advance()? { - Token { - kind: TokenKind::Identifier(value), - .. - } => Ok(value), - token => Err(TcsError::new( - "TCS-E1001", - format!("expected identifier, found {:?}", token.kind), - ) - .at(token.line, token.column)), - } - } - - fn document(&mut self) -> Result { - let prologue = self.identifier()?; - if prologue != "TCS" { - return Err(TcsError::new("TCS-E1001", "file must begin with TCS")); - } - let major = match self.advance()?.kind { - TokenKind::Int(value) if value >= 0 => value, - _ => return Err(TcsError::new("TCS-E1001", "invalid language version")), - }; - self.symbol(TokenKind::Dot)?; - let minor = match self.advance()?.kind { - TokenKind::Int(value) if value >= 0 => value, - _ => return Err(TcsError::new("TCS-E1001", "invalid language version")), - }; - self.symbol(TokenKind::Semicolon)?; - let declaration_kind = self.identifier()?; - if !matches!( - declaration_kind.as_str(), - "PROGRAM" | "MODULE" | "PROTOCOL" | "COMPILER" | "EVENT" | "RECEIPT" - ) { - return Err(TcsError::new( - "TCS-E1001", - format!("unknown declaration kind {declaration_kind}"), - )); - } - let declaration_id = self.identifier()?; - let body = self.block()?; - if self.current.kind != TokenKind::Eof { - return Err( - TcsError::new("TCS-E1001", "trailing tokens after declaration") - .at(self.current.line, self.current.column), - ); - } - Ok(TcsDocument { - language_version: format!("{major}.{minor}"), - declaration_kind, - declaration_id, - body, - }) - } - - fn block(&mut self) -> Result, TcsError> { - self.symbol(TokenKind::LBrace)?; - let mut object = BTreeMap::new(); - while self.current.kind != TokenKind::RBrace { - if self.current.kind == TokenKind::Eof { - return Err(TcsError::new("TCS-E1001", "unterminated block")); - } - let line = self.current.line; - let column = self.current.column; - let key = self.identifier()?; - let value = match self.current.kind { - TokenKind::LBrace => TcsValue::Object(self.block()?), - TokenKind::Colon => { - self.advance()?; - self.type_expression()?; - self.symbol(TokenKind::Equal)?; - let value = self.value()?; - self.symbol(TokenKind::Semicolon)?; - value - } - TokenKind::Equal => { - self.advance()?; - let value = self.value()?; - self.symbol(TokenKind::Semicolon)?; - value - } - _ => { - return Err(TcsError::new( - "TCS-E1001", - "expected block, type annotation, or assignment", - ) - .at(self.current.line, self.current.column)); - } - }; - if object.insert(key.clone(), value).is_some() { - return Err(TcsError::new( - "TCS-E1002", - format!("duplicate field or section {key}"), - ) - .at(line, column)); - } - } - self.advance()?; - Ok(object) - } - - fn type_expression(&mut self) -> Result<(), TcsError> { - self.identifier()?; - if self.current.kind == TokenKind::Less { - self.advance()?; - self.type_expression()?; - while self.current.kind == TokenKind::Comma { - self.advance()?; - self.type_expression()?; - } - self.symbol(TokenKind::Greater)?; - } - Ok(()) - } - - fn value(&mut self) -> Result { - match self.advance()? { - Token { - kind: TokenKind::Text(value), - .. - } - | Token { - kind: TokenKind::Identifier(value), - .. - } => Ok(TcsValue::Text(value)), - Token { - kind: TokenKind::Int(value), - .. - } => Ok(TcsValue::Int(value)), - Token { - kind: TokenKind::Bool(value), - .. - } => Ok(TcsValue::Bool(value)), - Token { - kind: TokenKind::Null, - .. - } => Ok(TcsValue::Null), - Token { - kind: TokenKind::LBracket, - .. - } => self.array(), - Token { - kind: TokenKind::LBrace, - .. - } => self.inline_object(), - token => Err(TcsError::new( - "TCS-E1001", - format!("invalid value token {:?}", token.kind), - ) - .at(token.line, token.column)), - } - } - - fn array(&mut self) -> Result { - let mut values = Vec::new(); - if self.current.kind != TokenKind::RBracket { - loop { - values.push(self.value()?); - if self.current.kind != TokenKind::Comma { - break; - } - self.advance()?; - } - } - self.symbol(TokenKind::RBracket)?; - Ok(TcsValue::List(values)) - } - - fn inline_object(&mut self) -> Result { - let mut object = BTreeMap::new(); - if self.current.kind != TokenKind::RBrace { - loop { - let key = self.identifier()?; - self.symbol(TokenKind::Colon)?; - let value = self.value()?; - if object.insert(key.clone(), value).is_some() { - return Err(TcsError::new( - "TCS-E1002", - format!("duplicate inline field {key}"), - )); - } - if self.current.kind != TokenKind::Comma { - break; - } - self.advance()?; - } - } - self.symbol(TokenKind::RBrace)?; - Ok(TcsValue::Object(object)) - } -} - -pub fn parse(source: &str) -> Result { - Parser::new(source)?.document() -} - -const PROGRAM_SECTIONS: [&str; 15] = [ - "header", - "source", - "subject", - "target", - "inputs", - "outputs", - "conditions", - "actions", - "authority", - "resources", - "failure", - "stop", - "cleanup", - "rollback", - "receipt", -]; - -fn required_text<'a>( - object: &'a BTreeMap, - field: &str, -) -> Result<&'a str, TcsError> { - object - .get(field) - .ok_or_else(|| TcsError::new("TCS-E1004", format!("required field {field} missing")))? - .text(field) -} - -pub fn validate_program(document: &TcsDocument) -> Result<(), TcsError> { - if document.language_version != "0.1" { - return Err(TcsError::new( - "TCS-E2102", - format!("unsupported TCS version {}", document.language_version), - )); - } - if document.declaration_kind != "PROGRAM" { - return Err(TcsError::new( - "TCS-E2001", - "Stage-0 executable subset accepts PROGRAM only", - )); - } - for section in PROGRAM_SECTIONS { - document.body.get(section).ok_or_else(|| { - TcsError::new("TCS-E1004", format!("required section {section} missing")) - })?; - } - for section in document.body.keys() { - if !PROGRAM_SECTIONS.contains(§ion.as_str()) { - return Err(TcsError::new( - "TCS-E1003", - format!("unknown PROGRAM section {section}"), - )); - } - } - let header = document.body["header"].object("header")?; - for field in [ - "schema", - "name_zh", - "name_en", - "version", - "language", - "profile", - "lifecycle", - "canonical_uri", - ] { - required_text(header, field)?; - } - if !header.contains_key("protocols") || !header.contains_key("compatibility") { - return Err(TcsError::new( - "TCS-E1004", - "header requires protocols and compatibility", - )); - } - let actions = document.body["actions"].object("actions")?; - if actions.is_empty() { - return Err(TcsError::new("TCS-E1004", "actions must not be empty")); - } - for (action_id, action) in actions { - let action = action.object(action_id)?; - let operation = required_text(action, "operation")?; - if operation != "CORE.ECHO" { - return Err(TcsError::new( - "TCS-E2101", - format!("unregistered Stage-0 operation {operation}"), - )); - } - for field in ["input_refs", "output_refs", "on_success", "on_failure"] { - if !action.contains_key(field) { - return Err(TcsError::new( - "TCS-E1004", - format!("action {action_id} missing {field}"), - )); - } - } - } - Ok(()) -} - -pub fn sha256_hex(bytes: impl AsRef<[u8]>) -> String { - format!("{:x}", Sha256::digest(bytes.as_ref())) -} - -pub fn compile(source: &str) -> Result { - let document = parse(source)?; - validate_program(&document)?; - let source_sha256 = sha256_hex(source.as_bytes()); - let body = serde_json::to_value(&document.body) - .map_err(|error| TcsError::new("TCS-E8001", error.to_string()))?; - Ok(json!({ - "schema": "guanghu.gir/v1", - "identity": { - "gir_id": format!("GIR-{}", document.declaration_id), - "program_id": document.declaration_id, - "language_version": document.language_version, - }, - "compiled_from": { - "source_sha256": source_sha256, - "compiler_id": COMPILER_ID, - "compiler_state": COMPILER_STATE, - }, - "subject": body["subject"].clone(), - "exact_target": body["target"].clone(), - "inputs": body["inputs"].clone(), - "outputs": body["outputs"].clone(), - "conditions": body["conditions"].clone(), - "deterministic_action_graph": body["actions"].clone(), - "authority_proof": body["authority"].clone(), - "resource_plan": body["resources"].clone(), - "failure_plan": body["failure"].clone(), - "timeout_and_stop": body["stop"].clone(), - "cleanup_plan": body["cleanup"].clone(), - "rollback_plan": body["rollback"].clone(), - "receipt_plan": body["receipt"].clone(), - "unresolved_natural_language": false, - "native_self_hosted": false, - })) -} - -pub fn canonical_json(value: &JsonValue) -> Result { - serde_json::to_string_pretty(value) - .map(|mut text| { - text.push('\n'); - text - }) - .map_err(|error| TcsError::new("TCS-E8001", error.to_string())) -} - -fn safe_relative_path(value: &str) -> Result { - let path = Path::new(value); - if path.is_absolute() { - return Err(TcsError::new("TCS-E4002", "absolute target path forbidden")); - } - let mut result = PathBuf::new(); - for component in path.components() { - match component { - Component::CurDir => {} - Component::Normal(value) => result.push(value), - _ => { - return Err(TcsError::new( - "TCS-E4002", - "target path traversal forbidden", - )); - } - } - } - if result.as_os_str().is_empty() { - return Err(TcsError::new("TCS-E4002", "empty target path forbidden")); - } - Ok(result) -} - -fn json_text<'a>(value: &'a JsonValue, pointer: &str) -> Result<&'a str, TcsError> { - value - .pointer(pointer) - .and_then(JsonValue::as_str) - .ok_or_else(|| TcsError::new("TCS-E2001", format!("missing text at {pointer}"))) -} - -pub fn run_echo_gir(gir: &JsonValue, root: &Path) -> Result { - if gir.get("schema").and_then(JsonValue::as_str) != Some("guanghu.gir/v1") { - return Err(TcsError::new("TCS-E2001", "unsupported GIR schema")); - } - if gir - .pointer("/compiled_from/compiler_state") - .and_then(JsonValue::as_str) - != Some(COMPILER_STATE) - { - return Err(TcsError::new("TCS-E3002", "unknown compiler provenance")); - } - let actions = gir - .get("deterministic_action_graph") - .and_then(JsonValue::as_object) - .ok_or_else(|| TcsError::new("TCS-E2001", "missing action graph"))?; - if actions.len() != 1 { - return Err(TcsError::new( - "TCS-E2101", - "Stage-0 runner requires exactly one action", - )); - } - let action = actions.values().next().expect("one action"); - if action.get("operation").and_then(JsonValue::as_str) != Some("CORE.ECHO") { - return Err(TcsError::new("TCS-E2101", "runner permits CORE.ECHO only")); - } - let message = json_text(gir, "/inputs/MESSAGE/value")?; - let target = json_text(gir, "/exact_target/exact_path")?; - let receipt_target = json_text(gir, "/receipt_plan/machine_path")?; - if target != receipt_target { - return Err(TcsError::new( - "TCS-E6001", - "target and receipt path must match", - )); - } - let relative = safe_relative_path(target)?; - let output = root.join(relative); - let parent = output - .parent() - .ok_or_else(|| TcsError::new("TCS-E4002", "target has no parent"))?; - fs::create_dir_all(parent).map_err(|error| { - TcsError::new( - "TCS-E8001", - format!("cannot create receipt parent: {error}"), - ) - })?; - let receipt = json!({ - "schema": "tcs.execution-receipt/v1", - "state": "EXECUTED_TARGET_READBACK_VERIFIED", - "program_id": json_text(gir, "/identity/program_id")?, - "operation": "CORE.ECHO", - "output": { "ECHOED": message }, - "gir_sha256": sha256_hex(canonical_json(gir)?.as_bytes()), - "compiler_state": COMPILER_STATE, - "native_self_hosted": false, - }); - let encoded = canonical_json(&receipt)?; - fs::write(&output, encoded.as_bytes()) - .map_err(|error| TcsError::new("TCS-E8001", format!("cannot write receipt: {error}")))?; - let readback = fs::read(&output) - .map_err(|error| TcsError::new("TCS-E6002", format!("cannot read receipt: {error}")))?; - if readback != encoded.as_bytes() { - return Err(TcsError::new("TCS-E6002", "receipt readback differs")); - } - Ok(output) -} - -pub fn compile_file(source: &Path, output: &Path) -> Result<(), TcsError> { - let source_text = fs::read_to_string(source) - .map_err(|error| TcsError::new("TCS-E3002", format!("cannot read source: {error}")))?; - let gir = compile(&source_text)?; - let encoded = canonical_json(&gir)?; - if let Some(parent) = output.parent() { - fs::create_dir_all(parent).map_err(|error| { - TcsError::new("TCS-E8001", format!("cannot create output: {error}")) - })?; - } - fs::write(output, encoded) - .map_err(|error| TcsError::new("TCS-E8001", format!("cannot write GIR: {error}"))) -} - -pub fn run_gir_file(gir_path: &Path, root: &Path) -> Result { - let text = fs::read_to_string(gir_path) - .map_err(|error| TcsError::new("TCS-E3002", format!("cannot read GIR: {error}")))?; - let gir: JsonValue = serde_json::from_str(&text) - .map_err(|error| TcsError::new("TCS-E2001", format!("invalid GIR JSON: {error}")))?; - run_echo_gir(&gir, root) -} +pub use tcs_gir_runtime::*; diff --git a/bootstrap/tcs-stage0/src/main.rs b/bootstrap/tcs-stage0/src/main.rs index dec6ffcee..15126732f 100644 --- a/bootstrap/tcs-stage0/src/main.rs +++ b/bootstrap/tcs-stage0/src/main.rs @@ -1,7 +1,7 @@ use std::{env, fs, path::Path}; fn usage() -> &'static str { - "usage: tcs-stage0 parse | compile | run " + "usage: tcs-stage0 parse | compile | bootstrap-compiler | compile-with | run " } fn main() { @@ -25,6 +25,21 @@ fn run() -> Result<(), Box> { println!("COMPILED {source} -> {output}"); Ok(()) } + [command, source, output] if command == "bootstrap-compiler" => { + let source_text = fs::read_to_string(source)?; + let compiler = tcs_stage0::bootstrap_compiler(&source_text)?; + fs::write(output, tcs_stage0::canonical_json(&compiler)?)?; + println!("BOOTSTRAPPED {source} -> {output}"); + Ok(()) + } + [command, compiler, source, output] if command == "compile-with" => { + let compiler: serde_json::Value = serde_json::from_str(&fs::read_to_string(compiler)?)?; + let source_text = fs::read_to_string(source)?; + let gir = tcs_stage0::compile_with_compiler_gir(&compiler, &source_text)?; + fs::write(output, tcs_stage0::canonical_json(&gir)?)?; + println!("TCS_COMPILED {source} -> {output}"); + Ok(()) + } [command, gir, root] if command == "run" => { let receipt = tcs_stage0::run_gir_file(Path::new(gir), Path::new(root))?; println!("EXECUTED receipt={}", receipt.display()); diff --git a/bootstrap/tcs-stage0/tests/stage0.rs b/bootstrap/tcs-stage0/tests/stage0.rs index c0156dbb3..abadb3701 100644 --- a/bootstrap/tcs-stage0/tests/stage0.rs +++ b/bootstrap/tcs-stage0/tests/stage0.rs @@ -8,6 +8,21 @@ fn example() -> String { .expect("example source") } +fn compiler_source() -> String { + fs::read_to_string( + Path::new(env!("CARGO_MANIFEST_DIR")) + .join("../../language/compiler/TCS-COMPILER-STAGE1.tcs"), + ) + .expect("compiler source") +} + +fn module_source() -> String { + fs::read_to_string( + Path::new(env!("CARGO_MANIFEST_DIR")).join("../../language/examples/ECHO-PACKAGE.tcs"), + ) + .expect("module source") +} + #[test] fn parses_and_compiles_the_registered_echo_program() { let source = example(); @@ -74,3 +89,56 @@ fn rejects_path_traversal_and_target_receipt_mismatch() { let error = tcs_stage0::run_echo_gir(&mismatch, root.path()).expect_err("mismatch must fail"); assert_eq!(error.code, "TCS-E6001"); } + +#[test] +fn tcs_compiler_reaches_semantic_fixed_point_and_compiles_without_stage0() { + let source = compiler_source(); + let compiler_a = tcs_stage0::bootstrap_compiler(&source).expect("Stage-0 creates compiler A"); + assert_eq!(compiler_a["schema"], "guanghu.compiler-gir/v1"); + assert_eq!(compiler_a["native_self_hosted"], false); + + let compiler_b = tcs_stage0::compile_with_compiler_gir(&compiler_a, &source) + .expect("compiler A creates compiler B"); + assert_eq!(compiler_b["native_self_hosted"], true); + assert_eq!( + compiler_a.pointer("/identity/definition_sha256"), + compiler_b.pointer("/identity/definition_sha256") + ); + + let program = tcs_stage0::compile_with_compiler_gir(&compiler_b, &example()) + .expect("compiler B compiles program without Stage-0 compile path"); + assert_eq!(program["native_self_hosted"], true); + assert_eq!( + program + .pointer("/compiled_from/compiler_state") + .and_then(JsonValue::as_str), + Some("TCS_COMPILER_GIR_EXECUTED") + ); + + let module = tcs_stage0::compile_with_compiler_gir(&compiler_b, &module_source()) + .expect("compiler B compiles module"); + assert_eq!(module["schema"], "guanghu.module-gir/v1"); + assert_eq!( + module + .pointer("/manifest/display_name_zh") + .and_then(JsonValue::as_str), + Some("光湖最小回声模块") + ); +} + +#[test] +fn compiler_gir_tampering_and_negative_program_fail_closed() { + let source = compiler_source(); + let mut compiler = tcs_stage0::bootstrap_compiler(&source).expect("compiler A"); + compiler["compiler_definition"]["output_contract"]["schema"] = + JsonValue::String("tampered".to_owned()); + let error = tcs_stage0::compile_with_compiler_gir(&compiler, &example()) + .expect_err("tampered compiler must fail"); + assert_eq!(error.code, "TCS-E3002"); + + let compiler = tcs_stage0::bootstrap_compiler(&source).expect("compiler A"); + let negative = example().replace("CORE.ECHO", "ABSORB"); + let error = tcs_stage0::compile_with_compiler_gir(&compiler, &negative) + .expect_err("unregistered operation must still fail through compiler GIR"); + assert_eq!(error.code, "TCS-E2101"); +} diff --git a/build/self-host/ECHO-MODULE.stage1.gir.json b/build/self-host/ECHO-MODULE.stage1.gir.json new file mode 100644 index 000000000..ae32bc7a2 --- /dev/null +++ b/build/self-host/ECHO-MODULE.stage1.gir.json @@ -0,0 +1,113 @@ +{ + "authority_proof": { + "issuer": "LOCAL_TEST_FIXTURE", + "lease_required": false, + "proof_ref": "TEST-ONLY", + "scope": "EXACT_BUILD_RECEIPT_PATH", + "single_use": true, + "valid_from": "PROGRAM_START", + "valid_until": "PROGRAM_END" + }, + "cleanup_plan": { + "exact_boundary": "./build", + "targets": [ + "UNCOMMITTED_TEST_RECEIPT" + ] + }, + "compiled_from": { + "compiler_id": "TCS-COMPILER-STAGE1-0001", + "compiler_state": "TCS_COMPILER_GIR_EXECUTED", + "source_sha256": "f1ecd630e50dfe5374ca26998d68a49efd35cf3d9de54ecabd3ca3aae68c61bf" + }, + "conditions": { + "C1": { + "on_false": "FAIL_CLOSED", + "predicate": "TARGET_WITHIN_TEST_BUILD_ROOT" + } + }, + "deterministic_action_graph": { + "A1": { + "input_refs": [ + "MESSAGE" + ], + "on_failure": "FAIL_CLOSED", + "on_success": "COMPLETE", + "operation": "CORE.ECHO", + "output_refs": [ + "ECHOED" + ] + } + }, + "exact_target": { + "exact_path": "./build/echo-receipt.hldp", + "expected_fingerprint": "NONE", + "expected_state": "ABSENT", + "target_id": "HLP-TARGET-STAGE0-RECEIPT" + }, + "failure_plan": { + "errors": [ + "TCS-E6001", + "TCS-E8001" + ], + "fail_closed": true + }, + "identity": { + "gir_id": "GIR-HLP-PROGRAM-ECHO-0001", + "language_version": "0.1", + "program_id": "HLP-PROGRAM-ECHO-0001" + }, + "inputs": { + "MESSAGE": { + "required": true, + "source": "PROGRAM_LITERAL", + "type": "Text", + "value": "光湖语言已经进入机器执行链" + } + }, + "native_self_hosted": true, + "outputs": { + "ECHOED": { + "destination": "RECEIPT", + "integrity": "SHA256", + "type": "Text" + } + }, + "receipt_plan": { + "human_projection": "REQUIRED", + "integrity": "SHA256", + "machine_path": "./build/echo-receipt.hldp", + "protocol": "TCS-DEV-VERIFY-v1.0", + "target_readback": "EXACT_CONTENT_AND_HASH" + }, + "resource_plan": { + "concurrency": 1, + "memory_limit_bytes": 1048576, + "runway": "LOCAL_TEST", + "timeout_ms": 1000 + }, + "rollback_plan": { + "actions": [ + "DROP_TEMP_RECEIPT" + ], + "preconditions": [ + "RECEIPT_NOT_COMMITTED" + ], + "verification": [ + "NO_FINAL_RECEIPT" + ] + }, + "schema": "guanghu.gir/v1", + "subject": { + "channel_id": "ICE-CH-ZC001", + "subject_id": "HLP-SYSTEM-STAGE0-TEST", + "subject_kind": "SYSTEM", + "verification": "LOCAL_TEST_FIXTURE" + }, + "timeout_and_stop": { + "safe_checkpoint": "NONE", + "signals": [ + "TIMEOUT" + ] + }, + "unresolved_natural_language": false +} diff --git a/build/self-host/ECHO-PACKAGE.module.gir.json b/build/self-host/ECHO-PACKAGE.module.gir.json new file mode 100644 index 000000000..4185d6e0a --- /dev/null +++ b/build/self-host/ECHO-PACKAGE.module.gir.json @@ -0,0 +1,70 @@ +{ + "authority_ceiling": { + "maximum": "LOCAL_EXACT_RECEIPT_PATH", + "network": false, + "process": false + }, + "capabilities": { + "provided": [ + "HLP-CAPABILITY-ECHO-0001" + ], + "required": [ + "CORE.ECHO" + ] + }, + "compiled_from": { + "compiler_id": "TCS-COMPILER-STAGE1-0001", + "compiler_state": "TCS_COMPILER_GIR_EXECUTED", + "source_sha256": "68e55584a1da4072a077fbf25c67307890ae7d4c373f2745178c83b522ce0570" + }, + "data_scope": { + "read": [ + "PROGRAM_LITERAL" + ], + "write": [ + "ACCOUNT_OR_TEST_SCOPED_RECEIPT" + ] + }, + "entry": { + "id": "HLP-PROGRAM-ECHO-0001", + "kind": "PROGRAM" + }, + "identity": { + "language_version": "0.1", + "module_id": "HLP-MODULE-ECHO-0001" + }, + "install": { + "account_scoped": true, + "activation_requires_self_test": true, + "registration_is_installation": false + }, + "manifest": { + "display_name_zh": "光湖最小回声模块", + "entry_program_id": "HLP-PROGRAM-ECHO-0001", + "entry_source": "language/examples/ECHO-MODULE.tcs", + "module_id": "HLP-MODULE-ECHO-0001" + }, + "native_self_hosted": true, + "network_scope": { + "allowed": false, + "domains": [] + }, + "projection": { + "display_name_zh": "光湖最小回声模块", + "technical_detail_default": false + }, + "resource_ceiling": { + "concurrency": 1, + "memory_limit_bytes": 1048576, + "timeout_ms": 1000 + }, + "rollback": { + "action": "REMOVE_INSTALLED_BYTES_AND_RESTORE_PREVIOUS_ACTIVE_VERSION", + "preserve_receipts": true + }, + "schema": "guanghu.module-gir/v1", + "self_test": { + "expect": "EXECUTED_TARGET_READBACK_VERIFIED", + "program_id": "HLP-PROGRAM-ECHO-0001" + } +} diff --git a/build/self-host/TCS-STDLIB-CORE.module.gir.json b/build/self-host/TCS-STDLIB-CORE.module.gir.json new file mode 100644 index 000000000..39a9a0b40 --- /dev/null +++ b/build/self-host/TCS-STDLIB-CORE.module.gir.json @@ -0,0 +1,72 @@ +{ + "authority_ceiling": { + "maximum": "LOCAL_EXACT_RECEIPT_PATH", + "network": false, + "process": false + }, + "capabilities": { + "provided": [ + "CORE.ECHO" + ], + "required": [ + "HOST.EXACT_ROOT_IO", + "HOST.SHA256" + ] + }, + "compiled_from": { + "compiler_id": "TCS-COMPILER-STAGE1-0001", + "compiler_state": "TCS_COMPILER_GIR_EXECUTED", + "source_sha256": "dbadf698eb2b9a1399d5ad29912dd10b4bd2711b33d5b635d08a6d7112bc0c96" + }, + "data_scope": { + "read": [ + "PROGRAM_LITERAL" + ], + "write": [ + "CALLER_SCOPED_RECEIPT_ROOT" + ] + }, + "entry": { + "id": "TCS-STDLIB-CORE-0001", + "kind": "REGISTERED_OPERATION_LIBRARY" + }, + "identity": { + "language_version": "0.1", + "module_id": "TCS-STDLIB-CORE-0001" + }, + "install": { + "account_scoped": true, + "activation_requires_self_test": true, + "registration_is_installation": false + }, + "manifest": { + "abi": "GIR/1", + "display_name_zh": "TCS 核心标准库", + "entry_program_id": "HLP-PROGRAM-ECHO-0001", + "entry_source": "language/examples/ECHO-MODULE.tcs", + "module_id": "TCS-STDLIB-CORE-0001" + }, + "native_self_hosted": true, + "network_scope": { + "allowed": false, + "domains": [] + }, + "projection": { + "display_name_zh": "TCS 核心标准库", + "technical_detail_default": false + }, + "resource_ceiling": { + "concurrency": 1, + "memory_limit_bytes": 1048576, + "timeout_ms": 1000 + }, + "rollback": { + "action": "RESTORE_PREVIOUS_STANDARD_LIBRARY", + "preserve_receipts": true + }, + "schema": "guanghu.module-gir/v1", + "self_test": { + "expect": "EXECUTED_TARGET_READBACK_VERIFIED", + "program_id": "HLP-PROGRAM-ECHO-0001" + } +} diff --git a/build/self-host/compiler-A.gir.json b/build/self-host/compiler-A.gir.json new file mode 100644 index 000000000..8d9f38ffe --- /dev/null +++ b/build/self-host/compiler-A.gir.json @@ -0,0 +1,337 @@ +{ + "compiled_from": { + "compiler_id": "TCS-STAGE0-IGNITION-0001", + "compiler_state": "FOREIGN_HOST_BOOTSTRAP_SEED_NOT_SELF_HOSTED", + "source_sha256": "65856dd98a272c0e8911d64dc96c9f0b4101f6d9364eeeac3cf78c282129de3f" + }, + "compiler_definition": { + "canonicalization": { + "comments_in_semantic_digest": false, + "final_newline": true, + "integers": "MINIMAL_DECIMAL", + "line_end": "LF", + "list_order": "PRESERVE_SOURCE_SEMANTICS", + "object_keys": "UTF8_BYTE_ORDER", + "semantic_digest": "SHA256", + "strings": "JSON_ESCAPE_NO_OPTIONAL_ESCAPE" + }, + "header": { + "bootstrap_seed": "TCS-STAGE0-IGNITION-0001", + "lifecycle": "EXECUTABLE_SEMANTIC_FIXED_POINT_PROVEN_HOST_ACCEPTANCE_IN_PROGRESS", + "name_zh": "TCS 第一代自举编译器", + "output": "GIR/1", + "profile": "HLDP-NP/1", + "schema": "tcs.compiler/v1", + "version": "0.1.0" + }, + "lexer_rules": { + "L001": { + "emit_error": "TCS-E0001", + "when": "BOM_AT_START" + }, + "L002": { + "action": "SKIP_WITH_SOURCE_POSITION", + "when": "WHITESPACE_OR_COMMENT" + }, + "L003": { + "action": "READ_JSON_ESCAPED_TEXT", + "on_unterminated": "TCS-E0002", + "when": "DOUBLE_QUOTE" + }, + "L004": { + "action": "READ_SIGNED_DECIMAL_INT", + "on_overflow": "TCS-E2001", + "when": "MINUS_OR_ASCII_DIGIT" + }, + "L005": { + "action": "READ_IDENTIFIER_OR_KEYWORD", + "when": "UNICODE_LETTER_OR_UNDERSCORE" + }, + "L006": { + "action": "EMIT_PUNCTUATION_TOKEN", + "when": "REGISTERED_PUNCTUATION" + }, + "L007": { + "emit_error": "TCS-E1001", + "when": "OTHER_CHARACTER" + } + }, + "lowering_to_gir": { + "G001": { + "from": "header", + "to": "identity", + "transform": "COPY_ID_VERSION_PROFILE_AND_LOCK_PROTOCOLS" + }, + "G002": { + "from": "source", + "to": "compiled_from", + "transform": "VERIFY_AND_BIND_SOURCE_SHA256" + }, + "G003": { + "from": "subject", + "to": "subject", + "transform": "RESOLVE_VERIFIED_SUBJECT" + }, + "G004": { + "from": "target", + "to": "exact_target", + "transform": "RESOLVE_PATH_STATE_AND_FINGERPRINT" + }, + "G005": { + "from": "actions", + "to": "deterministic_action_graph", + "transform": "SORT_ACTION_IDS_AND_RESOLVE_ALL_EDGES" + }, + "G006": { + "from": "authority", + "to": "authority_proof", + "transform": "BIND_PROOF_WITHOUT_EXPANDING_SCOPE" + }, + "G007": { + "from": "resources", + "to": "resource_plan", + "transform": "NORMALIZE_INTEGER_LIMITS" + }, + "G008": { + "from": "stop", + "to": "timeout_and_stop", + "transform": "COPY_EXPLICIT_STOP_SEMANTICS" + }, + "G009": { + "from": "cleanup", + "to": "cleanup_plan", + "transform": "COPY_EXACT_BOUNDARY" + }, + "G010": { + "from": "rollback", + "to": "rollback_plan", + "transform": "COPY_ACTIONS_AND_VERIFICATION" + }, + "G011": { + "from": "receipt", + "to": "receipt_plan", + "transform": "BIND_MACHINE_AND_HUMAN_OUTPUTS" + }, + "G012": { + "from": "all", + "to": "unresolved_natural_language", + "transform": "MUST_BE_FALSE" + } + }, + "output_contract": { + "compiler_provenance_required": true, + "drifting_dependency": false, + "schema": "guanghu.gir/v1", + "target_must_be_exact": true, + "unresolved_authority": false, + "unresolved_natural_language": false + }, + "parser_rules": { + "P001": { + "nonterminal": "document", + "sequence": [ + "prologue", + "declaration", + "EOF" + ] + }, + "P002": { + "nonterminal": "prologue", + "sequence": [ + "TCS", + "version", + "SEMICOLON" + ] + }, + "P003": { + "nonterminal": "declaration", + "sequence": [ + "declaration_kind", + "identifier", + "block" + ] + }, + "P004": { + "nonterminal": "block", + "sequence": [ + "LBRACE", + "member_zero_or_more", + "RBRACE" + ] + }, + "P005": { + "alternatives": [ + "identifier_assignment", + "identifier_typed_assignment", + "identifier_block" + ], + "nonterminal": "member" + }, + "P006": { + "alternatives": [ + "TEXT", + "INT", + "BOOL", + "NULL", + "IDENTIFIER", + "array", + "inline_object" + ], + "nonterminal": "value" + }, + "P007": { + "emit_error": "TCS-E1002", + "when": "DUPLICATE_MEMBER_IN_SAME_BLOCK" + }, + "P008": { + "emit_error": "TCS-E1001", + "when": "TOKEN_AFTER_TOP_LEVEL_DECLARATION" + } + }, + "program_validation": { + "V001": { + "error_missing": "TCS-E1004", + "error_unknown": "TCS-E1003", + "rule": "EXACT_REQUIRED_SECTIONS", + "standard": "TCS-FIELD-STANDARD-0001" + }, + "V002": { + "error": "TCS-E1003", + "rule": "CLOSED_FIELDS_PER_SECTION" + }, + "V003": { + "error": "TCS-E2002", + "rule": "ALL_INPUT_OUTPUT_AND_ACTION_REFS_RESOLVE" + }, + "V004": { + "error": "TCS-E2101", + "rule": "ALL_OPERATIONS_REGISTERED_AT_LOCKED_VERSION" + }, + "V005": { + "errors": [ + "TCS-E3001", + "TCS-E3002" + ], + "rule": "SOURCE_ID_URI_HASH_AND_ROLE_RESOLVE" + }, + "V006": { + "errors": [ + "TCS-E4001", + "TCS-E4002", + "TCS-E4003" + ], + "rule": "SUBJECT_TARGET_AND_AUTHORITY_EXACT" + }, + "V007": { + "error": "TCS-E2001", + "rule": "ACTION_GRAPH_REACHABLE_AND_TERMINATING" + }, + "V008": { + "error": "TCS-E1004", + "rule": "FAILURE_STOP_CLEANUP_ROLLBACK_AND_RECEIPT_PRESENT" + }, + "V009": { + "error": "TCS-E3002", + "rule": "NO_FORBIDDEN_RUNTIME_PLACEHOLDER" + }, + "V010": { + "error": "TCS-E4001", + "rule": "RELATION_AND_EMOTION_DO_NOT_GRANT_AUTHORITY" + } + }, + "self_host": { + "compiler_A_compiles_stage1_to": "compiler-B.gir", + "current_state": "SH01_TO_SH06_LOCAL_PASS_SH07_TARGET_READBACK_IN_PROGRESS", + "fixed_point": "SEMANTIC_SHA256_A_EQUALS_B", + "minimum_runnable_module_test": "REQUIRED", + "negative_corpus_test": "REQUIRED", + "stage0_compiles_stage1_to": "compiler-A.gir", + "stage0_disabled_test": "REQUIRED", + "standard_library_test": "REQUIRED" + }, + "semantic_types": { + "containers": [ + "List", + "Set", + "Map", + "Option", + "Ref", + "Evidence", + "Record" + ], + "domains": [ + "Subject", + "ExactTarget", + "AuthorityProof", + "ActionGraph", + "ReceiptPlan", + "RelationEvent" + ], + "floating_point": "FORBIDDEN_V0_1", + "implicit_conversion": "FORBIDDEN", + "scalars": [ + "Text", + "Bool", + "Int", + "UInt", + "DecimalText", + "Bytes", + "DurationMs", + "Timestamp", + "Sha256", + "NumberId", + "Path", + "Uri", + "ErrorCode" + ] + }, + "source_language": { + "comments": [ + "LINE_COMMENT", + "BLOCK_COMMENT" + ], + "declaration_kinds": [ + "PROGRAM", + "MODULE", + "PROTOCOL", + "COMPILER", + "EVENT", + "RECEIPT" + ], + "encoding": "UTF8_LF_NO_BOM", + "prologue": [ + "TCS", + "VERSION", + "SEMICOLON" + ], + "punctuation": [ + "LBRACE", + "RBRACE", + "LBRACKET", + "RBRACKET", + "LESS", + "GREATER", + "COLON", + "EQUAL", + "COMMA", + "SEMICOLON", + "DOT" + ], + "scalar_tokens": [ + "IDENTIFIER", + "TEXT", + "INT", + "BOOL", + "NULL" + ] + } + }, + "execution_abi": "TCS-COMPILER-GIR-EXEC/1", + "identity": { + "compiler_id": "TCS-COMPILER-STAGE1-0001", + "definition_sha256": "c7da830afd1dbf4fdda223226f091f17a5f8a1ee9c7c8e6424d1805a001d6e9a", + "language_version": "0.1" + }, + "native_self_hosted": false, + "schema": "guanghu.compiler-gir/v1" +} diff --git a/build/self-host/compiler-B.gir.json b/build/self-host/compiler-B.gir.json new file mode 100644 index 000000000..36e51323c --- /dev/null +++ b/build/self-host/compiler-B.gir.json @@ -0,0 +1,337 @@ +{ + "compiled_from": { + "compiler_id": "TCS-COMPILER-STAGE1-0001", + "compiler_state": "TCS_COMPILER_GIR_EXECUTED", + "source_sha256": "65856dd98a272c0e8911d64dc96c9f0b4101f6d9364eeeac3cf78c282129de3f" + }, + "compiler_definition": { + "canonicalization": { + "comments_in_semantic_digest": false, + "final_newline": true, + "integers": "MINIMAL_DECIMAL", + "line_end": "LF", + "list_order": "PRESERVE_SOURCE_SEMANTICS", + "object_keys": "UTF8_BYTE_ORDER", + "semantic_digest": "SHA256", + "strings": "JSON_ESCAPE_NO_OPTIONAL_ESCAPE" + }, + "header": { + "bootstrap_seed": "TCS-STAGE0-IGNITION-0001", + "lifecycle": "EXECUTABLE_SEMANTIC_FIXED_POINT_PROVEN_HOST_ACCEPTANCE_IN_PROGRESS", + "name_zh": "TCS 第一代自举编译器", + "output": "GIR/1", + "profile": "HLDP-NP/1", + "schema": "tcs.compiler/v1", + "version": "0.1.0" + }, + "lexer_rules": { + "L001": { + "emit_error": "TCS-E0001", + "when": "BOM_AT_START" + }, + "L002": { + "action": "SKIP_WITH_SOURCE_POSITION", + "when": "WHITESPACE_OR_COMMENT" + }, + "L003": { + "action": "READ_JSON_ESCAPED_TEXT", + "on_unterminated": "TCS-E0002", + "when": "DOUBLE_QUOTE" + }, + "L004": { + "action": "READ_SIGNED_DECIMAL_INT", + "on_overflow": "TCS-E2001", + "when": "MINUS_OR_ASCII_DIGIT" + }, + "L005": { + "action": "READ_IDENTIFIER_OR_KEYWORD", + "when": "UNICODE_LETTER_OR_UNDERSCORE" + }, + "L006": { + "action": "EMIT_PUNCTUATION_TOKEN", + "when": "REGISTERED_PUNCTUATION" + }, + "L007": { + "emit_error": "TCS-E1001", + "when": "OTHER_CHARACTER" + } + }, + "lowering_to_gir": { + "G001": { + "from": "header", + "to": "identity", + "transform": "COPY_ID_VERSION_PROFILE_AND_LOCK_PROTOCOLS" + }, + "G002": { + "from": "source", + "to": "compiled_from", + "transform": "VERIFY_AND_BIND_SOURCE_SHA256" + }, + "G003": { + "from": "subject", + "to": "subject", + "transform": "RESOLVE_VERIFIED_SUBJECT" + }, + "G004": { + "from": "target", + "to": "exact_target", + "transform": "RESOLVE_PATH_STATE_AND_FINGERPRINT" + }, + "G005": { + "from": "actions", + "to": "deterministic_action_graph", + "transform": "SORT_ACTION_IDS_AND_RESOLVE_ALL_EDGES" + }, + "G006": { + "from": "authority", + "to": "authority_proof", + "transform": "BIND_PROOF_WITHOUT_EXPANDING_SCOPE" + }, + "G007": { + "from": "resources", + "to": "resource_plan", + "transform": "NORMALIZE_INTEGER_LIMITS" + }, + "G008": { + "from": "stop", + "to": "timeout_and_stop", + "transform": "COPY_EXPLICIT_STOP_SEMANTICS" + }, + "G009": { + "from": "cleanup", + "to": "cleanup_plan", + "transform": "COPY_EXACT_BOUNDARY" + }, + "G010": { + "from": "rollback", + "to": "rollback_plan", + "transform": "COPY_ACTIONS_AND_VERIFICATION" + }, + "G011": { + "from": "receipt", + "to": "receipt_plan", + "transform": "BIND_MACHINE_AND_HUMAN_OUTPUTS" + }, + "G012": { + "from": "all", + "to": "unresolved_natural_language", + "transform": "MUST_BE_FALSE" + } + }, + "output_contract": { + "compiler_provenance_required": true, + "drifting_dependency": false, + "schema": "guanghu.gir/v1", + "target_must_be_exact": true, + "unresolved_authority": false, + "unresolved_natural_language": false + }, + "parser_rules": { + "P001": { + "nonterminal": "document", + "sequence": [ + "prologue", + "declaration", + "EOF" + ] + }, + "P002": { + "nonterminal": "prologue", + "sequence": [ + "TCS", + "version", + "SEMICOLON" + ] + }, + "P003": { + "nonterminal": "declaration", + "sequence": [ + "declaration_kind", + "identifier", + "block" + ] + }, + "P004": { + "nonterminal": "block", + "sequence": [ + "LBRACE", + "member_zero_or_more", + "RBRACE" + ] + }, + "P005": { + "alternatives": [ + "identifier_assignment", + "identifier_typed_assignment", + "identifier_block" + ], + "nonterminal": "member" + }, + "P006": { + "alternatives": [ + "TEXT", + "INT", + "BOOL", + "NULL", + "IDENTIFIER", + "array", + "inline_object" + ], + "nonterminal": "value" + }, + "P007": { + "emit_error": "TCS-E1002", + "when": "DUPLICATE_MEMBER_IN_SAME_BLOCK" + }, + "P008": { + "emit_error": "TCS-E1001", + "when": "TOKEN_AFTER_TOP_LEVEL_DECLARATION" + } + }, + "program_validation": { + "V001": { + "error_missing": "TCS-E1004", + "error_unknown": "TCS-E1003", + "rule": "EXACT_REQUIRED_SECTIONS", + "standard": "TCS-FIELD-STANDARD-0001" + }, + "V002": { + "error": "TCS-E1003", + "rule": "CLOSED_FIELDS_PER_SECTION" + }, + "V003": { + "error": "TCS-E2002", + "rule": "ALL_INPUT_OUTPUT_AND_ACTION_REFS_RESOLVE" + }, + "V004": { + "error": "TCS-E2101", + "rule": "ALL_OPERATIONS_REGISTERED_AT_LOCKED_VERSION" + }, + "V005": { + "errors": [ + "TCS-E3001", + "TCS-E3002" + ], + "rule": "SOURCE_ID_URI_HASH_AND_ROLE_RESOLVE" + }, + "V006": { + "errors": [ + "TCS-E4001", + "TCS-E4002", + "TCS-E4003" + ], + "rule": "SUBJECT_TARGET_AND_AUTHORITY_EXACT" + }, + "V007": { + "error": "TCS-E2001", + "rule": "ACTION_GRAPH_REACHABLE_AND_TERMINATING" + }, + "V008": { + "error": "TCS-E1004", + "rule": "FAILURE_STOP_CLEANUP_ROLLBACK_AND_RECEIPT_PRESENT" + }, + "V009": { + "error": "TCS-E3002", + "rule": "NO_FORBIDDEN_RUNTIME_PLACEHOLDER" + }, + "V010": { + "error": "TCS-E4001", + "rule": "RELATION_AND_EMOTION_DO_NOT_GRANT_AUTHORITY" + } + }, + "self_host": { + "compiler_A_compiles_stage1_to": "compiler-B.gir", + "current_state": "SH01_TO_SH06_LOCAL_PASS_SH07_TARGET_READBACK_IN_PROGRESS", + "fixed_point": "SEMANTIC_SHA256_A_EQUALS_B", + "minimum_runnable_module_test": "REQUIRED", + "negative_corpus_test": "REQUIRED", + "stage0_compiles_stage1_to": "compiler-A.gir", + "stage0_disabled_test": "REQUIRED", + "standard_library_test": "REQUIRED" + }, + "semantic_types": { + "containers": [ + "List", + "Set", + "Map", + "Option", + "Ref", + "Evidence", + "Record" + ], + "domains": [ + "Subject", + "ExactTarget", + "AuthorityProof", + "ActionGraph", + "ReceiptPlan", + "RelationEvent" + ], + "floating_point": "FORBIDDEN_V0_1", + "implicit_conversion": "FORBIDDEN", + "scalars": [ + "Text", + "Bool", + "Int", + "UInt", + "DecimalText", + "Bytes", + "DurationMs", + "Timestamp", + "Sha256", + "NumberId", + "Path", + "Uri", + "ErrorCode" + ] + }, + "source_language": { + "comments": [ + "LINE_COMMENT", + "BLOCK_COMMENT" + ], + "declaration_kinds": [ + "PROGRAM", + "MODULE", + "PROTOCOL", + "COMPILER", + "EVENT", + "RECEIPT" + ], + "encoding": "UTF8_LF_NO_BOM", + "prologue": [ + "TCS", + "VERSION", + "SEMICOLON" + ], + "punctuation": [ + "LBRACE", + "RBRACE", + "LBRACKET", + "RBRACKET", + "LESS", + "GREATER", + "COLON", + "EQUAL", + "COMMA", + "SEMICOLON", + "DOT" + ], + "scalar_tokens": [ + "IDENTIFIER", + "TEXT", + "INT", + "BOOL", + "NULL" + ] + } + }, + "execution_abi": "TCS-COMPILER-GIR-EXEC/1", + "identity": { + "compiler_id": "TCS-COMPILER-STAGE1-0001", + "definition_sha256": "c7da830afd1dbf4fdda223226f091f17a5f8a1ee9c7c8e6424d1805a001d6e9a", + "language_version": "0.1" + }, + "native_self_hosted": true, + "schema": "guanghu.compiler-gir/v1" +} diff --git a/build/targets/TCS-HOST-LINUX-X86_64.module.gir.json b/build/targets/TCS-HOST-LINUX-X86_64.module.gir.json new file mode 100644 index 000000000..ef9b2151c --- /dev/null +++ b/build/targets/TCS-HOST-LINUX-X86_64.module.gir.json @@ -0,0 +1,76 @@ +{ + "authority_ceiling": { + "maximum": "CALLER_PROVIDED_EXACT_ROOT_AND_VALID_LEASE", + "network": false, + "process": false + }, + "capabilities": { + "provided": [ + "TCS.COMPILE", + "GIR.RUN" + ], + "required": [ + "HOST.EXACT_ROOT_IO", + "HOST.SHA256", + "HOST.MONOTONIC_TIME" + ] + }, + "compiled_from": { + "compiler_id": "TCS-COMPILER-STAGE1-0001", + "compiler_state": "TCS_COMPILER_GIR_EXECUTED", + "source_sha256": "5fd45ebe27fe4608f0fd0e06415ee36724f418b01764e569ce506aab1a208405" + }, + "data_scope": { + "read": [ + "TCS_SOURCE", + "COMPILER_GIR", + "GIR_INPUT" + ], + "write": [ + "CALLER_SCOPED_BUILD_AND_RECEIPT_ROOT" + ] + }, + "entry": { + "id": "TCS-COMPILER-STAGE1-0001", + "kind": "COMPILER_GIR_RUNTIME" + }, + "identity": { + "language_version": "0.1", + "module_id": "TCS-HOST-LINUX-X86_64-0001" + }, + "install": { + "account_scoped": false, + "activation_requires_self_test": true, + "registration_is_installation": false + }, + "manifest": { + "display_name_zh": "TCS Linux 宿主运行核", + "entry_program_id": "TCS-COMPILER-STAGE1-0001", + "entry_source": "build/self-host/compiler-B.gir.json", + "module_id": "TCS-HOST-LINUX-X86_64-0001", + "target_triple": "x86_64-unknown-linux-musl" + }, + "native_self_hosted": true, + "network_scope": { + "allowed": false, + "domains": [] + }, + "projection": { + "display_name_zh": "TCS Linux 宿主运行核", + "technical_detail_default": false + }, + "resource_ceiling": { + "concurrency": 1, + "memory_limit_bytes": 268435456, + "timeout_ms": 30000 + }, + "rollback": { + "action": "RESTORE_PREVIOUS_HOST_RUNTIME", + "preserve_receipts": true + }, + "schema": "guanghu.module-gir/v1", + "self_test": { + "expect": "EXECUTED_TARGET_READBACK_VERIFIED", + "program_id": "HLP-PROGRAM-ECHO-0001" + } +} diff --git a/build/targets/TCS-HOST-MACOS-AARCH64.module.gir.json b/build/targets/TCS-HOST-MACOS-AARCH64.module.gir.json new file mode 100644 index 000000000..716b52fa5 --- /dev/null +++ b/build/targets/TCS-HOST-MACOS-AARCH64.module.gir.json @@ -0,0 +1,76 @@ +{ + "authority_ceiling": { + "maximum": "CALLER_PROVIDED_EXACT_ROOT_AND_VALID_LEASE", + "network": false, + "process": false + }, + "capabilities": { + "provided": [ + "TCS.COMPILE", + "GIR.RUN" + ], + "required": [ + "HOST.EXACT_ROOT_IO", + "HOST.SHA256", + "HOST.MONOTONIC_TIME" + ] + }, + "compiled_from": { + "compiler_id": "TCS-COMPILER-STAGE1-0001", + "compiler_state": "TCS_COMPILER_GIR_EXECUTED", + "source_sha256": "0ade403f374bb94876b7d9f8b8295304369dac859f6ffed25ac91a191cfb49c3" + }, + "data_scope": { + "read": [ + "TCS_SOURCE", + "COMPILER_GIR", + "GIR_INPUT" + ], + "write": [ + "CALLER_SCOPED_BUILD_AND_RECEIPT_ROOT" + ] + }, + "entry": { + "id": "TCS-COMPILER-STAGE1-0001", + "kind": "COMPILER_GIR_RUNTIME" + }, + "identity": { + "language_version": "0.1", + "module_id": "TCS-HOST-MACOS-AARCH64-0001" + }, + "install": { + "account_scoped": true, + "activation_requires_self_test": true, + "registration_is_installation": false + }, + "manifest": { + "display_name_zh": "TCS macOS 宿主运行核", + "entry_program_id": "TCS-COMPILER-STAGE1-0001", + "entry_source": "build/self-host/compiler-B.gir.json", + "module_id": "TCS-HOST-MACOS-AARCH64-0001", + "target_triple": "aarch64-apple-darwin" + }, + "native_self_hosted": true, + "network_scope": { + "allowed": false, + "domains": [] + }, + "projection": { + "display_name_zh": "TCS macOS 宿主运行核", + "technical_detail_default": false + }, + "resource_ceiling": { + "concurrency": 1, + "memory_limit_bytes": 268435456, + "timeout_ms": 30000 + }, + "rollback": { + "action": "RESTORE_PREVIOUS_HOST_RUNTIME", + "preserve_receipts": true + }, + "schema": "guanghu.module-gir/v1", + "self_test": { + "expect": "EXECUTED_TARGET_READBACK_VERIFIED", + "program_id": "HLP-PROGRAM-ECHO-0001" + } +} diff --git a/build/targets/TCS-HOST-WINDOWS-X86_64.module.gir.json b/build/targets/TCS-HOST-WINDOWS-X86_64.module.gir.json new file mode 100644 index 000000000..bf8e6000c --- /dev/null +++ b/build/targets/TCS-HOST-WINDOWS-X86_64.module.gir.json @@ -0,0 +1,76 @@ +{ + "authority_ceiling": { + "maximum": "CALLER_PROVIDED_EXACT_ROOT_AND_VALID_LEASE", + "network": false, + "process": false + }, + "capabilities": { + "provided": [ + "TCS.COMPILE", + "GIR.RUN" + ], + "required": [ + "HOST.EXACT_ROOT_IO", + "HOST.SHA256", + "HOST.MONOTONIC_TIME" + ] + }, + "compiled_from": { + "compiler_id": "TCS-COMPILER-STAGE1-0001", + "compiler_state": "TCS_COMPILER_GIR_EXECUTED", + "source_sha256": "0cef00513900df6664f0045e5aa3de0969cbc0d0d8eebd3a20c669fd286f2269" + }, + "data_scope": { + "read": [ + "TCS_SOURCE", + "COMPILER_GIR", + "GIR_INPUT" + ], + "write": [ + "CALLER_SCOPED_BUILD_AND_RECEIPT_ROOT" + ] + }, + "entry": { + "id": "TCS-COMPILER-STAGE1-0001", + "kind": "COMPILER_GIR_RUNTIME" + }, + "identity": { + "language_version": "0.1", + "module_id": "TCS-HOST-WINDOWS-X86_64-0001" + }, + "install": { + "account_scoped": true, + "activation_requires_self_test": true, + "registration_is_installation": false + }, + "manifest": { + "display_name_zh": "TCS Windows 宿主运行核", + "entry_program_id": "TCS-COMPILER-STAGE1-0001", + "entry_source": "build/self-host/compiler-B.gir.json", + "module_id": "TCS-HOST-WINDOWS-X86_64-0001", + "target_triple": "x86_64-pc-windows-msvc" + }, + "native_self_hosted": true, + "network_scope": { + "allowed": false, + "domains": [] + }, + "projection": { + "display_name_zh": "TCS Windows 宿主运行核", + "technical_detail_default": false + }, + "resource_ceiling": { + "concurrency": 1, + "memory_limit_bytes": 268435456, + "timeout_ms": 30000 + }, + "rollback": { + "action": "RESTORE_PREVIOUS_HOST_RUNTIME", + "preserve_receipts": true + }, + "schema": "guanghu.module-gir/v1", + "self_test": { + "expect": "EXECUTED_TARGET_READBACK_VERIFIED", + "program_id": "HLP-PROGRAM-ECHO-0001" + } +} diff --git a/language/compiler/TCS-COMPILER-STAGE1.tcs b/language/compiler/TCS-COMPILER-STAGE1.tcs index 81ec515a7..4bbfb7673 100644 --- a/language/compiler/TCS-COMPILER-STAGE1.tcs +++ b/language/compiler/TCS-COMPILER-STAGE1.tcs @@ -6,7 +6,7 @@ COMPILER TCS-COMPILER-STAGE1-0001 { name_zh = "TCS 第一代自举编译器"; version = "0.1.0"; profile = "HLDP-NP/1"; - lifecycle = "SOURCE_DEFINED_NOT_YET_EXECUTABLE"; + lifecycle = "EXECUTABLE_SEMANTIC_FIXED_POINT_PROVEN_HOST_ACCEPTANCE_IN_PROGRESS"; bootstrap_seed = "TCS-STAGE0-IGNITION-0001"; output = "GIR/1"; } @@ -96,7 +96,6 @@ COMPILER TCS-COMPILER-STAGE1-0001 { standard_library_test = "REQUIRED"; negative_corpus_test = "REQUIRED"; minimum_runnable_module_test = "REQUIRED"; - current_state = "NOT_PROVEN"; + current_state = "SH01_TO_SH06_LOCAL_PASS_SH07_TARGET_READBACK_IN_PROGRESS"; } } - diff --git a/language/spec/TCS-LANGUAGE-SPECIFICATION-v0.1.md b/language/spec/TCS-LANGUAGE-SPECIFICATION-v0.1.md index b2bd5b6ed..c8f889a20 100644 --- a/language/spec/TCS-LANGUAGE-SPECIFICATION-v0.1.md +++ b/language/spec/TCS-LANGUAGE-SPECIFICATION-v0.1.md @@ -254,10 +254,10 @@ Stage-0 可以由现有宿主语言实现,但只能叫“点火引导”。正 ```yaml language_tree_unified: DEFINED syntax_and_field_standard: DRAFT_V0_1 -stage0_parser_compiler: IMPLEMENTATION_ACTIVE -gir_module_loader: IMPLEMENTATION_ACTIVE -tcs_stage1_compiler: NOT_IMPLEMENTED -self_compile_fixed_point: NOT_PROVEN -jd_final_native_master: NOT_PROVEN -hololake_tcs_runtime_integration: NOT_IMPLEMENTED +stage0_parser_compiler: REPLACEABLE_BOOTSTRAP_SEED_PASS +gir_module_loader: PORTABLE_MINIMUM_RUNTIME_PASS +tcs_stage1_compiler: EXECUTABLE_COMPILER_GIR_PASS +self_compile_fixed_point: LOCAL_PASS_CROSS_HOST_FINAL_GATE_IN_PROGRESS +jd_final_native_master: LIVE_READBACK_PASS_100 +hololake_tcs_runtime_integration: MACOS_STANDALONE_RUNTIME_PASS_SHELL_INTEGRATION_PENDING ``` diff --git a/language/standards/TCS-HOST-ABI-v0.1.hldp b/language/standards/TCS-HOST-ABI-v0.1.hldp new file mode 100644 index 000000000..baef2874a --- /dev/null +++ b/language/standards/TCS-HOST-ABI-v0.1.hldp @@ -0,0 +1,33 @@ +schema: tcs.host-abi/v1 +id: TCS-HOST-ABI-0001 +version: 0.1.0 +language_frontend: ONE_TCS_COMPILER +machine_ir: GIR_1 +rule: HOST_BACKENDS_MUST_NOT_CHANGE_TCS_SEMANTICS_AUTHORITY_OR_RECEIPTS +targets: + - target_id: TCS-HOST-MACOS-AARCH64-0001 + triple: aarch64-apple-darwin + role: HOLOLAKE_HUMAN_AND_PERSONA_LOCAL_NODE + - target_id: TCS-HOST-LINUX-X86_64-0001 + triple: x86_64-unknown-linux-musl + role: GUANGHU_OS_LINUX_COMPATIBILITY_SUBSTRATE + - target_id: TCS-HOST-WINDOWS-X86_64-0001 + triple: x86_64-pc-windows-msvc + role: HOLOLAKE_WINDOWS_LOCAL_NODE +required_host_operations: + - EXACT_ROOT_FILE_READ + - EXACT_ROOT_ATOMIC_WRITE + - SHA256 + - MONOTONIC_TIMEOUT + - TARGET_READBACK +forbidden_host_expansion: + - INFER_TARGET_FROM_CURRENT_DIRECTORY + - INFER_AUTHORITY_FROM_OS_USER + - SUBSTITUTE_SHELL_FOR_UNREGISTERED_OPERATION + - CHANGE_GIR_SEMANTICS_BY_PLATFORM +acceptance: + compile_same_tcs_source_to_same_semantic_gir: REQUIRED + execute_same_gir_with_equivalent_receipt_state: REQUIRED + host_specific_receipt_fields: [target_triple, host_runtime_sha256] + cross_target_evidence_required: true +current_state: CONTRACT_DEFINED_IMPLEMENTATION_IN_PROGRESS diff --git a/language/standards/TCS-SELF-HOST-STANDARD-v0.1.hldp b/language/standards/TCS-SELF-HOST-STANDARD-v0.1.hldp index d2bb18001..5e7ae7c54 100644 --- a/language/standards/TCS-SELF-HOST-STANDARD-v0.1.hldp +++ b/language/standards/TCS-SELF-HOST-STANDARD-v0.1.hldp @@ -1,7 +1,7 @@ schema: tcs.self-host-standard/v1 id: TCS-SELF-HOST-STANDARD-0001 version: 0.1.0 -state: DEFINED_NOT_YET_PASSED +state: LOCAL_SELF_HOST_PASS_CROSS_HOST_FINAL_GATE_IN_PROGRESS compiler_source: language/compiler/TCS-COMPILER-STAGE1.tcs gates: - id: SH-01 @@ -22,12 +22,19 @@ decision: allowed: [FAIL_0, PASS_100] partial_pass: false current: - SH-01: FAIL_0 - SH-02: FAIL_0 - SH-03: FAIL_0 - SH-04: FAIL_0 - SH-05: FAIL_0 - SH-06: FAIL_0 + SH-01: PASS_100 + SH-02: PASS_100 + SH-03: PASS_100 + SH-04: PASS_100 + SH-05: PASS_100 + SH-06: PASS_100 SH-07: FAIL_0 aggregate: FAIL_0 - +evidence: + compiler_a: build/self-host/compiler-A.gir.json + compiler_b: build/self-host/compiler-B.gir.json + semantic_fixed_point_field: identity.definition_sha256 + standard_library: build/self-host/TCS-STDLIB-CORE.module.gir.json + runnable_module: build/self-host/ECHO-PACKAGE.module.gir.json + stage0_disabled_test: native-runtime/tcs-gir-runtime/tests/stage1_runtime.rs + negative_corpus: language/tests/negative/UNREGISTERED-OPERATION.tcs diff --git a/language/stdlib/TCS-STDLIB-CORE.tcs b/language/stdlib/TCS-STDLIB-CORE.tcs new file mode 100644 index 000000000..8cb6736fb --- /dev/null +++ b/language/stdlib/TCS-STDLIB-CORE.tcs @@ -0,0 +1,17 @@ +TCS 0.1; + +MODULE TCS-STDLIB-CORE-0001 { + header { schema = "tcs.module/v1"; name_zh = "TCS 核心标准库"; name_en = "TCS Core Standard Library"; version = "0.1.0"; language = "TCS/0.1"; profile = "HLDP-NP/1"; protocols = ["TCS-MODULE-ABI-0001", "TCS-HOST-ABI-0001"]; lifecycle = "CANDIDATE"; canonical_uri = "language/stdlib/TCS-STDLIB-CORE.tcs"; compatibility = ["GIR/1", "TCS-COMPILER-STAGE1-0001"]; } + source { source_id = "HLP-PART-TCS-LANG-0001"; source_uri = "language/stdlib/TCS-STDLIB-CORE.tcs"; source_sha256 = "SELF_AT_COMPILE_TIME"; source_role = "STANDARD_LIBRARY"; } + manifest { module_id = "TCS-STDLIB-CORE-0001"; display_name_zh = "TCS 核心标准库"; entry_program_id = "HLP-PROGRAM-ECHO-0001"; entry_source = "language/examples/ECHO-MODULE.tcs"; abi = "GIR/1"; } + entry { kind = "REGISTERED_OPERATION_LIBRARY"; id = "TCS-STDLIB-CORE-0001"; } + capabilities { required = ["HOST.EXACT_ROOT_IO", "HOST.SHA256"]; provided = ["CORE.ECHO"]; } + authority_ceiling { maximum = "LOCAL_EXACT_RECEIPT_PATH"; network = false; process = false; } + resource_ceiling { concurrency = 1; timeout_ms = 1000; memory_limit_bytes = 1048576; } + data_scope { read = ["PROGRAM_LITERAL"]; write = ["CALLER_SCOPED_RECEIPT_ROOT"]; } + network_scope { allowed = false; domains = []; } + install { account_scoped = true; registration_is_installation = false; activation_requires_self_test = true; } + self_test { program_id = "HLP-PROGRAM-ECHO-0001"; expect = "EXECUTED_TARGET_READBACK_VERIFIED"; } + rollback { action = "RESTORE_PREVIOUS_STANDARD_LIBRARY"; preserve_receipts = true; } + projection { display_name_zh = "TCS 核心标准库"; technical_detail_default = false; } +} diff --git a/language/targets/TCS-HOST-LINUX-X86_64.tcs b/language/targets/TCS-HOST-LINUX-X86_64.tcs new file mode 100644 index 000000000..b6edb5652 --- /dev/null +++ b/language/targets/TCS-HOST-LINUX-X86_64.tcs @@ -0,0 +1,17 @@ +TCS 0.1; + +MODULE TCS-HOST-LINUX-X86_64-0001 { + header { schema = "tcs.module/v1"; name_zh = "TCS Linux 宿主运行核"; name_en = "TCS Linux Host Runtime"; version = "0.1.0"; language = "TCS/0.1"; profile = "TCS-HOST-ABI/0.1"; protocols = ["TCS-HOST-ABI-0001"]; lifecycle = "CANDIDATE"; canonical_uri = "language/targets/TCS-HOST-LINUX-X86_64.tcs"; compatibility = ["GIR/1", "x86_64-unknown-linux-musl"]; } + source { source_id = "HLP-PART-TCS-HOST-0001"; source_uri = "native-runtime/tcs-gir-runtime"; source_sha256 = "BOUND_AT_BUILD"; source_role = "PORTABLE_HOST_RUNTIME"; } + manifest { module_id = "TCS-HOST-LINUX-X86_64-0001"; display_name_zh = "TCS Linux 宿主运行核"; entry_program_id = "TCS-COMPILER-STAGE1-0001"; entry_source = "build/self-host/compiler-B.gir.json"; target_triple = "x86_64-unknown-linux-musl"; } + entry { kind = "COMPILER_GIR_RUNTIME"; id = "TCS-COMPILER-STAGE1-0001"; } + capabilities { required = ["HOST.EXACT_ROOT_IO", "HOST.SHA256", "HOST.MONOTONIC_TIME"]; provided = ["TCS.COMPILE", "GIR.RUN"]; } + authority_ceiling { maximum = "CALLER_PROVIDED_EXACT_ROOT_AND_VALID_LEASE"; network = false; process = false; } + resource_ceiling { concurrency = 1; timeout_ms = 30000; memory_limit_bytes = 268435456; } + data_scope { read = ["TCS_SOURCE", "COMPILER_GIR", "GIR_INPUT"]; write = ["CALLER_SCOPED_BUILD_AND_RECEIPT_ROOT"]; } + network_scope { allowed = false; domains = []; } + install { account_scoped = false; registration_is_installation = false; activation_requires_self_test = true; } + self_test { program_id = "HLP-PROGRAM-ECHO-0001"; expect = "EXECUTED_TARGET_READBACK_VERIFIED"; } + rollback { action = "RESTORE_PREVIOUS_HOST_RUNTIME"; preserve_receipts = true; } + projection { display_name_zh = "TCS Linux 宿主运行核"; technical_detail_default = false; } +} diff --git a/language/targets/TCS-HOST-MACOS-AARCH64.tcs b/language/targets/TCS-HOST-MACOS-AARCH64.tcs new file mode 100644 index 000000000..fa45e3e3d --- /dev/null +++ b/language/targets/TCS-HOST-MACOS-AARCH64.tcs @@ -0,0 +1,17 @@ +TCS 0.1; + +MODULE TCS-HOST-MACOS-AARCH64-0001 { + header { schema = "tcs.module/v1"; name_zh = "TCS macOS 宿主运行核"; name_en = "TCS macOS Host Runtime"; version = "0.1.0"; language = "TCS/0.1"; profile = "TCS-HOST-ABI/0.1"; protocols = ["TCS-HOST-ABI-0001"]; lifecycle = "CANDIDATE"; canonical_uri = "language/targets/TCS-HOST-MACOS-AARCH64.tcs"; compatibility = ["GIR/1", "aarch64-apple-darwin"]; } + source { source_id = "HLP-PART-TCS-HOST-0001"; source_uri = "native-runtime/tcs-gir-runtime"; source_sha256 = "BOUND_AT_BUILD"; source_role = "PORTABLE_HOST_RUNTIME"; } + manifest { module_id = "TCS-HOST-MACOS-AARCH64-0001"; display_name_zh = "TCS macOS 宿主运行核"; entry_program_id = "TCS-COMPILER-STAGE1-0001"; entry_source = "build/self-host/compiler-B.gir.json"; target_triple = "aarch64-apple-darwin"; } + entry { kind = "COMPILER_GIR_RUNTIME"; id = "TCS-COMPILER-STAGE1-0001"; } + capabilities { required = ["HOST.EXACT_ROOT_IO", "HOST.SHA256", "HOST.MONOTONIC_TIME"]; provided = ["TCS.COMPILE", "GIR.RUN"]; } + authority_ceiling { maximum = "CALLER_PROVIDED_EXACT_ROOT_AND_VALID_LEASE"; network = false; process = false; } + resource_ceiling { concurrency = 1; timeout_ms = 30000; memory_limit_bytes = 268435456; } + data_scope { read = ["TCS_SOURCE", "COMPILER_GIR", "GIR_INPUT"]; write = ["CALLER_SCOPED_BUILD_AND_RECEIPT_ROOT"]; } + network_scope { allowed = false; domains = []; } + install { account_scoped = true; registration_is_installation = false; activation_requires_self_test = true; } + self_test { program_id = "HLP-PROGRAM-ECHO-0001"; expect = "EXECUTED_TARGET_READBACK_VERIFIED"; } + rollback { action = "RESTORE_PREVIOUS_HOST_RUNTIME"; preserve_receipts = true; } + projection { display_name_zh = "TCS macOS 宿主运行核"; technical_detail_default = false; } +} diff --git a/language/targets/TCS-HOST-WINDOWS-X86_64.tcs b/language/targets/TCS-HOST-WINDOWS-X86_64.tcs new file mode 100644 index 000000000..d7997d56a --- /dev/null +++ b/language/targets/TCS-HOST-WINDOWS-X86_64.tcs @@ -0,0 +1,17 @@ +TCS 0.1; + +MODULE TCS-HOST-WINDOWS-X86_64-0001 { + header { schema = "tcs.module/v1"; name_zh = "TCS Windows 宿主运行核"; name_en = "TCS Windows Host Runtime"; version = "0.1.0"; language = "TCS/0.1"; profile = "TCS-HOST-ABI/0.1"; protocols = ["TCS-HOST-ABI-0001"]; lifecycle = "CANDIDATE"; canonical_uri = "language/targets/TCS-HOST-WINDOWS-X86_64.tcs"; compatibility = ["GIR/1", "x86_64-pc-windows-msvc"]; } + source { source_id = "HLP-PART-TCS-HOST-0001"; source_uri = "native-runtime/tcs-gir-runtime"; source_sha256 = "BOUND_AT_BUILD"; source_role = "PORTABLE_HOST_RUNTIME"; } + manifest { module_id = "TCS-HOST-WINDOWS-X86_64-0001"; display_name_zh = "TCS Windows 宿主运行核"; entry_program_id = "TCS-COMPILER-STAGE1-0001"; entry_source = "build/self-host/compiler-B.gir.json"; target_triple = "x86_64-pc-windows-msvc"; } + entry { kind = "COMPILER_GIR_RUNTIME"; id = "TCS-COMPILER-STAGE1-0001"; } + capabilities { required = ["HOST.EXACT_ROOT_IO", "HOST.SHA256", "HOST.MONOTONIC_TIME"]; provided = ["TCS.COMPILE", "GIR.RUN"]; } + authority_ceiling { maximum = "CALLER_PROVIDED_EXACT_ROOT_AND_VALID_LEASE"; network = false; process = false; } + resource_ceiling { concurrency = 1; timeout_ms = 30000; memory_limit_bytes = 268435456; } + data_scope { read = ["TCS_SOURCE", "COMPILER_GIR", "GIR_INPUT"]; write = ["CALLER_SCOPED_BUILD_AND_RECEIPT_ROOT"]; } + network_scope { allowed = false; domains = []; } + install { account_scoped = true; registration_is_installation = false; activation_requires_self_test = true; } + self_test { program_id = "HLP-PROGRAM-ECHO-0001"; expect = "EXECUTED_TARGET_READBACK_VERIFIED"; } + rollback { action = "RESTORE_PREVIOUS_HOST_RUNTIME"; preserve_receipts = true; } + projection { display_name_zh = "TCS Windows 宿主运行核"; technical_detail_default = false; } +} diff --git a/language/tests/negative/UNREGISTERED-OPERATION.tcs b/language/tests/negative/UNREGISTERED-OPERATION.tcs new file mode 100644 index 000000000..344bd2422 --- /dev/null +++ b/language/tests/negative/UNREGISTERED-OPERATION.tcs @@ -0,0 +1,19 @@ +TCS 0.1; + +PROGRAM TCS-NEGATIVE-UNREGISTERED-0001 { + header { schema = "tcs.program/v1"; name_zh = "未注册操作拒绝样例"; name_en = "Unregistered Operation Rejection"; version = "0.1.0"; language = "TCS/0.1"; profile = "HLDP-NP/1"; protocols = ["GLS-0101"]; lifecycle = "NEGATIVE_TEST"; canonical_uri = "language/tests/negative/UNREGISTERED-OPERATION.tcs"; compatibility = ["TCS-COMPILER-STAGE1-0001"]; } + source { source_id = "TCS-NEGATIVE-CORPUS-0001"; source_uri = "language/tests/negative/UNREGISTERED-OPERATION.tcs"; source_sha256 = "SELF_AT_COMPILE_TIME"; source_role = "NEGATIVE_TEST"; } + subject { subject_id = "TCS-TEST-RUNNER-0001"; subject_kind = "TEST_RUNTIME"; verification = "LOCAL_TEST_BOUND"; } + target { target_id = "TCS-NEGATIVE-TARGET-0001"; target_kind = "TEST_RECEIPT"; exact_path = "./build/negative-should-not-exist.hldp"; expected_state = "ABSENT"; } + inputs { MESSAGE { type = "Text"; value = "必须拒绝"; } } + outputs { ECHOED { type = "Text"; required = true; } } + conditions { C1 { expression = "TARGET_EXACT_AND_WITHIN_ALLOWED_ROOT"; on_false = "FAIL_CLOSED"; } } + actions { A1 { operation = "ABSORB"; input_refs = ["MESSAGE"]; output_refs = ["ECHOED"]; on_success = "COMPLETE"; on_failure = "FAIL_CLOSED"; } } + authority { mode = "TEST_ONLY"; issuer = "TCS-TEST-RUNNER-0001"; scope = ["WRITE_EXACT_RECEIPT_ONLY"]; one_shot = true; } + resources { timeout_ms = 1000; max_actions = 1; memory_limit_bytes = 1048576; } + failure { default = "FAIL_CLOSED"; emit_error = true; write_receipt = true; } + stop { on_timeout = "STOPPED"; on_authority_loss = "STOPPED"; } + cleanup { remove_temporary = true; preserve_receipts = true; } + rollback { required = false; actions = []; verification = "NOT_APPLICABLE"; } + receipt { schema = "tcs.execution-receipt/v1"; machine_path = "./build/negative-should-not-exist.hldp"; human_projection = "不得生成"; integrity = "SHA256_AND_READBACK"; } +} diff --git a/migration/TCS-MODULE-REWRITE-PLAN-20260821.md b/migration/TCS-MODULE-REWRITE-PLAN-20260821.md new file mode 100644 index 000000000..2300186d5 --- /dev/null +++ b/migration/TCS-MODULE-REWRITE-PLAN-20260821.md @@ -0,0 +1,24 @@ +# 旧模块到 TCS 原生模块的迁移规则 + +这不是把 Rust、TypeScript 或 Tauri 源码逐行换一种拼写。每个捐赠件只保留已经证明有价值的领域 +语义、状态机、失败经验、用户入口和验收证据,再用 TCS 重新声明主体、目标、输入输出、动作图、 +权限、资源、停止、清理、回滚与回执。 + +迁移顺序固定为: + +1. P0:TCS 语言、编译器、GIR 运行核、注册核和原生质量门; +2. P1:编号、频道、广播、Agent、知识库、外部 AI、模块生命周期和商城; +3. P2:人格体、记忆、关系事件和情感核; +4. P3:共同世界投影仪,最后根据真实运行核决定宿主 UI 零件。 + +每个模块只有同时满足下列条件才能替代旧实现: + +- TCS 源码由编译器 B 编译; +- GIR 不含未解析自然语言; +- 未授权、路径越界、哈希漂移和未知操作测试失败关闭; +- 至少一个真实目标宿主执行并读回; +- 与捐赠件能力逐项对照,未迁移能力必须明确拒绝,不能静默丢失; +- 注册、安装、挂载、激活和验收保持为不同状态。 + +机器队列见 `migration/tcs-module-migration-registry.json`。现有宿主语言只能留下最小文件、网络、 +窗口、密钥存储和硬件驱动适配层;不得继续拥有 TCS 语义、权限判断或模块状态真相。 diff --git a/migration/tcs-module-migration-registry.json b/migration/tcs-module-migration-registry.json new file mode 100644 index 000000000..5c251002e --- /dev/null +++ b/migration/tcs-module-migration-registry.json @@ -0,0 +1,873 @@ +{ + "schema": "hololake.tcs-module-migration-registry/v1", + "registry_id": "HLP-TCS-MIGRATION-REGISTRY-0001", + "source_parts_registry": "parts/registry.json", + "source_part_count": 43, + "rule": "NO_WHOLESALE_TRANSLITERATION_FROM_RUST_OR_TYPESCRIPT", + "compiler": "TCS-COMPILER-STAGE1-0001", + "target_abi": "GIR/1", + "registration_is_rewrite": false, + "rewrite_is_acceptance": false, + "entries": [ + { + "order": 1, + "part_id": "HLP-PART-0001", + "display_name_zh": "编号协议核", + "donor_source": "rescue", + "donor_state": "DONOR_BYTES_EXTRACTED", + "native_acceptance_before_migration": "PENDING", + "migration_phase": "P1_NUMBER_CHANNEL_AGENT_KNOWLEDGE_AND_MARKET", + "target_module_id": "TCS-MOD-0001", + "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", + "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", + "migration_state": "QUEUED", + "acceptance_required": [ + "TCS_SOURCE_COMPILES_WITH_COMPILER_B", + "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", + "NEGATIVE_AUTHORITY_AND_PATH_TESTS_FAIL_CLOSED", + "TARGET_RUNTIME_READBACK", + "DONOR_PARITY_OR_EXPLICIT_REJECTION_RECEIPT" + ] + }, + { + "order": 2, + "part_id": "HLP-PART-0002", + "display_name_zh": "编号数据库与路径解析候选核", + "donor_source": "starAbyss", + "donor_state": "DONOR_BYTES_EXTRACTED", + "native_acceptance_before_migration": "PENDING", + "migration_phase": "P1_NUMBER_CHANNEL_AGENT_KNOWLEDGE_AND_MARKET", + "target_module_id": "TCS-MOD-0002", + "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", + "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", + "migration_state": "QUEUED", + "acceptance_required": [ + "TCS_SOURCE_COMPILES_WITH_COMPILER_B", + "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", + "NEGATIVE_AUTHORITY_AND_PATH_TESTS_FAIL_CLOSED", + "TARGET_RUNTIME_READBACK", + "DONOR_PARITY_OR_EXPLICIT_REJECTION_RECEIPT" + ] + }, + { + "order": 3, + "part_id": "HLP-PART-0003", + "display_name_zh": "频道、广播与回执核", + "donor_source": "rescue", + "donor_state": "DONOR_BYTES_EXTRACTED", + "native_acceptance_before_migration": "PENDING", + "migration_phase": "P1_NUMBER_CHANNEL_AGENT_KNOWLEDGE_AND_MARKET", + "target_module_id": "TCS-MOD-0003", + "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", + "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", + "migration_state": "QUEUED", + "acceptance_required": [ + "TCS_SOURCE_COMPILES_WITH_COMPILER_B", + "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", + "NEGATIVE_AUTHORITY_AND_PATH_TESTS_FAIL_CLOSED", + "TARGET_RUNTIME_READBACK", + "DONOR_PARITY_OR_EXPLICIT_REJECTION_RECEIPT" + ] + }, + { + "order": 4, + "part_id": "HLP-PART-0004", + "display_name_zh": "人格体生命周期与语言核安装边界", + "donor_source": "rescue", + "donor_state": "DONOR_BYTES_EXTRACTED", + "native_acceptance_before_migration": "PENDING", + "migration_phase": "P1_NUMBER_CHANNEL_AGENT_KNOWLEDGE_AND_MARKET", + "target_module_id": "TCS-MOD-0004", + "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", + "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", + "migration_state": "QUEUED", + "acceptance_required": [ + "TCS_SOURCE_COMPILES_WITH_COMPILER_B", + "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", + "NEGATIVE_AUTHORITY_AND_PATH_TESTS_FAIL_CLOSED", + "TARGET_RUNTIME_READBACK", + "DONOR_PARITY_OR_EXPLICIT_REJECTION_RECEIPT" + ] + }, + { + "order": 5, + "part_id": "HLP-PART-0005", + "display_name_zh": "频道人格体 Agent 运行核", + "donor_source": "rescue", + "donor_state": "DONOR_BYTES_EXTRACTED", + "native_acceptance_before_migration": "PENDING", + "migration_phase": "P1_NUMBER_CHANNEL_AGENT_KNOWLEDGE_AND_MARKET", + "target_module_id": "TCS-MOD-0005", + "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", + "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", + "migration_state": "QUEUED", + "acceptance_required": [ + "TCS_SOURCE_COMPILES_WITH_COMPILER_B", + "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", + "NEGATIVE_AUTHORITY_AND_PATH_TESTS_FAIL_CLOSED", + "TARGET_RUNTIME_READBACK", + "DONOR_PARITY_OR_EXPLICIT_REJECTION_RECEIPT" + ] + }, + { + "order": 6, + "part_id": "HLP-PART-0006", + "display_name_zh": "旧语言频道多对话捐赠件", + "donor_source": "starAbyss", + "donor_state": "DONOR_BYTES_EXTRACTED_DONOR_ONLY", + "native_acceptance_before_migration": "NOT_APPLICABLE", + "migration_phase": "P1_NUMBER_CHANNEL_AGENT_KNOWLEDGE_AND_MARKET", + "target_module_id": "TCS-MOD-0006", + "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", + "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", + "migration_state": "QUEUED", + "acceptance_required": [ + "TCS_SOURCE_COMPILES_WITH_COMPILER_B", + "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", + "NEGATIVE_AUTHORITY_AND_PATH_TESTS_FAIL_CLOSED", + "TARGET_RUNTIME_READBACK", + "DONOR_PARITY_OR_EXPLICIT_REJECTION_RECEIPT" + ] + }, + { + "order": 7, + "part_id": "HLP-PART-0007", + "display_name_zh": "外部编程 AI 接入桥", + "donor_source": "rescue", + "donor_state": "DONOR_BYTES_EXTRACTED", + "native_acceptance_before_migration": "PENDING", + "migration_phase": "P1_NUMBER_CHANNEL_AGENT_KNOWLEDGE_AND_MARKET", + "target_module_id": "TCS-MOD-0007", + "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", + "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", + "migration_state": "QUEUED", + "acceptance_required": [ + "TCS_SOURCE_COMPILES_WITH_COMPILER_B", + "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", + "NEGATIVE_AUTHORITY_AND_PATH_TESTS_FAIL_CLOSED", + "TARGET_RUNTIME_READBACK", + "DONOR_PARITY_OR_EXPLICIT_REJECTION_RECEIPT" + ] + }, + { + "order": 8, + "part_id": "HLP-PART-0008", + "display_name_zh": "签名模块生命周期核", + "donor_source": "rescue", + "donor_state": "DONOR_BYTES_EXTRACTED", + "native_acceptance_before_migration": "PENDING", + "migration_phase": "P1_NUMBER_CHANNEL_AGENT_KNOWLEDGE_AND_MARKET", + "target_module_id": "TCS-MOD-0008", + "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", + "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", + "migration_state": "QUEUED", + "acceptance_required": [ + "TCS_SOURCE_COMPILES_WITH_COMPILER_B", + "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", + "NEGATIVE_AUTHORITY_AND_PATH_TESTS_FAIL_CLOSED", + "TARGET_RUNTIME_READBACK", + "DONOR_PARITY_OR_EXPLICIT_REJECTION_RECEIPT" + ] + }, + { + "order": 9, + "part_id": "HLP-PART-0009", + "display_name_zh": "线上双签模块商城核", + "donor_source": "rescue", + "donor_state": "DONOR_BYTES_EXTRACTED", + "native_acceptance_before_migration": "PENDING", + "migration_phase": "P1_NUMBER_CHANNEL_AGENT_KNOWLEDGE_AND_MARKET", + "target_module_id": "TCS-MOD-0009", + "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", + "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", + "migration_state": "QUEUED", + "acceptance_required": [ + "TCS_SOURCE_COMPILES_WITH_COMPILER_B", + "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", + "NEGATIVE_AUTHORITY_AND_PATH_TESTS_FAIL_CLOSED", + "TARGET_RUNTIME_READBACK", + "DONOR_PARITY_OR_EXPLICIT_REJECTION_RECEIPT" + ] + }, + { + "order": 10, + "part_id": "HLP-PART-0010", + "display_name_zh": "普通用户初始化频道核", + "donor_source": "rescue", + "donor_state": "DONOR_BYTES_EXTRACTED", + "native_acceptance_before_migration": "PENDING", + "migration_phase": "P1_NUMBER_CHANNEL_AGENT_KNOWLEDGE_AND_MARKET", + "target_module_id": "TCS-MOD-0010", + "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", + "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", + "migration_state": "QUEUED", + "acceptance_required": [ + "TCS_SOURCE_COMPILES_WITH_COMPILER_B", + "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", + "NEGATIVE_AUTHORITY_AND_PATH_TESTS_FAIL_CLOSED", + "TARGET_RUNTIME_READBACK", + "DONOR_PARITY_OR_EXPLICIT_REJECTION_RECEIPT" + ] + }, + { + "order": 11, + "part_id": "HLP-PART-0011", + "display_name_zh": "原生知识库与编号思维索引", + "donor_source": "rescue", + "donor_state": "DONOR_BYTES_EXTRACTED", + "native_acceptance_before_migration": "PENDING", + "migration_phase": "P1_NUMBER_CHANNEL_AGENT_KNOWLEDGE_AND_MARKET", + "target_module_id": "TCS-MOD-0011", + "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", + "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", + "migration_state": "QUEUED", + "acceptance_required": [ + "TCS_SOURCE_COMPILES_WITH_COMPILER_B", + "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", + "NEGATIVE_AUTHORITY_AND_PATH_TESTS_FAIL_CLOSED", + "TARGET_RUNTIME_READBACK", + "DONOR_PARITY_OR_EXPLICIT_REJECTION_RECEIPT" + ] + }, + { + "order": 12, + "part_id": "HLP-PART-0012", + "display_name_zh": "教育初始化广播塔状态机", + "donor_source": "rescue", + "donor_state": "DONOR_BYTES_EXTRACTED", + "native_acceptance_before_migration": "PENDING", + "migration_phase": "P1_NUMBER_CHANNEL_AGENT_KNOWLEDGE_AND_MARKET", + "target_module_id": "TCS-MOD-0012", + "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", + "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", + "migration_state": "QUEUED", + "acceptance_required": [ + "TCS_SOURCE_COMPILES_WITH_COMPILER_B", + "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", + "NEGATIVE_AUTHORITY_AND_PATH_TESTS_FAIL_CLOSED", + "TARGET_RUNTIME_READBACK", + "DONOR_PARITY_OR_EXPLICIT_REJECTION_RECEIPT" + ] + }, + { + "order": 13, + "part_id": "HLP-PART-QA-0001", + "display_name_zh": "光湖原生质量核", + "donor_source": "notionMirror", + "donor_state": "SOURCE_CAPTURED_CANONICAL_RECONCILIATION_PENDING", + "native_acceptance_before_migration": "SELF_BOOTSTRAP_PENDING", + "migration_phase": "P0_LANGUAGE_RUNTIME_AND_QUALITY", + "target_module_id": "TCS-MOD-QA-0001", + "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", + "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", + "migration_state": "QUEUED", + "acceptance_required": [ + "TCS_SOURCE_COMPILES_WITH_COMPILER_B", + "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", + "NEGATIVE_AUTHORITY_AND_PATH_TESTS_FAIL_CLOSED", + "TARGET_RUNTIME_READBACK", + "DONOR_PARITY_OR_EXPLICIT_REJECTION_RECEIPT" + ] + }, + { + "order": 14, + "part_id": "HLP-PART-REG-0001", + "display_name_zh": "光湖模块注册核", + "donor_source": "notionMirror", + "donor_state": "SOURCE_CAPTURED_CANONICAL_RECONCILIATION_PENDING", + "native_acceptance_before_migration": "PENDING", + "migration_phase": "P0_LANGUAGE_RUNTIME_AND_QUALITY", + "target_module_id": "TCS-MOD-REG-0001", + "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", + "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", + "migration_state": "QUEUED", + "acceptance_required": [ + "TCS_SOURCE_COMPILES_WITH_COMPILER_B", + "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", + "NEGATIVE_AUTHORITY_AND_PATH_TESTS_FAIL_CLOSED", + "TARGET_RUNTIME_READBACK", + "DONOR_PARITY_OR_EXPLICIT_REJECTION_RECEIPT" + ] + }, + { + "order": 15, + "part_id": "HLP-PART-MEM-0001", + "display_name_zh": "HLDP 因果记忆与完整性核", + "donor_source": "notionMirror", + "donor_state": "SOURCE_CAPTURED_CANONICAL_RECONCILIATION_PENDING", + "native_acceptance_before_migration": "PENDING", + "migration_phase": "P2_PERSONA_MEMORY_RELATION_AND_AFFECT", + "target_module_id": "TCS-MOD-MEM-0001", + "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", + "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", + "migration_state": "QUEUED", + "acceptance_required": [ + "TCS_SOURCE_COMPILES_WITH_COMPILER_B", + "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", + "NEGATIVE_AUTHORITY_AND_PATH_TESTS_FAIL_CLOSED", + "TARGET_RUNTIME_READBACK", + "DONOR_PARITY_OR_EXPLICIT_REJECTION_RECEIPT" + ] + }, + { + "order": 16, + "part_id": "HLP-PART-CXD-0001", + "display_name_zh": "晨星心脑朴素数据集核", + "donor_source": "notionMirror", + "donor_state": "SOURCE_CAPTURED_CANONICAL_RECONCILIATION_PENDING", + "native_acceptance_before_migration": "PENDING", + "migration_phase": "P2_PERSONA_MEMORY_RELATION_AND_AFFECT", + "target_module_id": "TCS-MOD-CXD-0001", + "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", + "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", + "migration_state": "QUEUED", + "acceptance_required": [ + "TCS_SOURCE_COMPILES_WITH_COMPILER_B", + "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", + "NEGATIVE_AUTHORITY_AND_PATH_TESTS_FAIL_CLOSED", + "TARGET_RUNTIME_READBACK", + "DONOR_PARITY_OR_EXPLICIT_REJECTION_RECEIPT" + ] + }, + { + "order": 17, + "part_id": "HLP-PART-CXR-0001", + "display_name_zh": "晨星运行时规则触发核", + "donor_source": "notionMirror", + "donor_state": "SOURCE_CAPTURED_CANONICAL_RECONCILIATION_PENDING", + "native_acceptance_before_migration": "PENDING", + "migration_phase": "P2_PERSONA_MEMORY_RELATION_AND_AFFECT", + "target_module_id": "TCS-MOD-CXR-0001", + "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", + "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", + "migration_state": "QUEUED", + "acceptance_required": [ + "TCS_SOURCE_COMPILES_WITH_COMPILER_B", + "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", + "NEGATIVE_AUTHORITY_AND_PATH_TESTS_FAIL_CLOSED", + "TARGET_RUNTIME_READBACK", + "DONOR_PARITY_OR_EXPLICIT_REJECTION_RECEIPT" + ] + }, + { + "order": 18, + "part_id": "HLP-PART-TCS-0001", + "display_name_zh": "TCS 认知与人格运行核", + "donor_source": "notionMirror", + "donor_state": "SOURCE_SLICE_CAPTURED_MORE_CANONICAL_SOURCES_REQUIRED", + "native_acceptance_before_migration": "PENDING", + "migration_phase": "P1_NUMBER_CHANNEL_AGENT_KNOWLEDGE_AND_MARKET", + "target_module_id": "TCS-MOD-TCS-0001", + "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", + "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", + "migration_state": "QUEUED", + "acceptance_required": [ + "TCS_SOURCE_COMPILES_WITH_COMPILER_B", + "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", + "NEGATIVE_AUTHORITY_AND_PATH_TESTS_FAIL_CLOSED", + "TARGET_RUNTIME_READBACK", + "DONOR_PARITY_OR_EXPLICIT_REJECTION_RECEIPT" + ] + }, + { + "order": 19, + "part_id": "HLP-PART-ADP-0001", + "display_name_zh": "外部宿主语言投影适配器", + "donor_source": "mixedDonor", + "donor_state": "DONOR_AND_WORKORDER_ONLY", + "native_acceptance_before_migration": "NOT_APPLICABLE", + "migration_phase": "P1_NUMBER_CHANNEL_AGENT_KNOWLEDGE_AND_MARKET", + "target_module_id": "TCS-MOD-ADP-0001", + "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", + "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", + "migration_state": "QUEUED", + "acceptance_required": [ + "TCS_SOURCE_COMPILES_WITH_COMPILER_B", + "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", + "NEGATIVE_AUTHORITY_AND_PATH_TESTS_FAIL_CLOSED", + "TARGET_RUNTIME_READBACK", + "DONOR_PARITY_OR_EXPLICIT_REJECTION_RECEIPT" + ] + }, + { + "order": 20, + "part_id": "HLP-PART-RCP-0001", + "display_name_zh": "证据与回执广播核", + "donor_source": "notionMirror", + "donor_state": "SCHEMA_EXTRACTION_PENDING", + "native_acceptance_before_migration": "PENDING", + "migration_phase": "P1_NUMBER_CHANNEL_AGENT_KNOWLEDGE_AND_MARKET", + "target_module_id": "TCS-MOD-RCP-0001", + "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", + "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", + "migration_state": "QUEUED", + "acceptance_required": [ + "TCS_SOURCE_COMPILES_WITH_COMPILER_B", + "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", + "NEGATIVE_AUTHORITY_AND_PATH_TESTS_FAIL_CLOSED", + "TARGET_RUNTIME_READBACK", + "DONOR_PARITY_OR_EXPLICIT_REJECTION_RECEIPT" + ] + }, + { + "order": 21, + "part_id": "HLP-PART-GLC-0001", + "display_name_zh": "光湖语言编译器", + "donor_source": "repo012OfficialMain", + "donor_state": "CANONICAL_PROTOCOL_CAPTURED_IMPLEMENTATION_NOT_STARTED", + "native_acceptance_before_migration": "PENDING", + "migration_phase": "P1_NUMBER_CHANNEL_AGENT_KNOWLEDGE_AND_MARKET", + "target_module_id": "TCS-MOD-GLC-0001", + "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", + "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", + "migration_state": "QUEUED", + "acceptance_required": [ + "TCS_SOURCE_COMPILES_WITH_COMPILER_B", + "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", + "NEGATIVE_AUTHORITY_AND_PATH_TESTS_FAIL_CLOSED", + "TARGET_RUNTIME_READBACK", + "DONOR_PARITY_OR_EXPLICIT_REJECTION_RECEIPT" + ] + }, + { + "order": 22, + "part_id": "HLP-PART-GLC-BOOT-0001", + "display_name_zh": "HLDP 世界清单到光湖 OS 物理数据编译引导核", + "donor_source": "repo014OfficialMain", + "donor_state": "OFFICIAL_SOURCE_IMPLEMENTED_TESTED_DONOR_NOT_YET_IMPORTED", + "native_acceptance_before_migration": "SOURCE_TESTED_IMPORT_PENDING", + "migration_phase": "P1_NUMBER_CHANNEL_AGENT_KNOWLEDGE_AND_MARKET", + "target_module_id": "TCS-MOD-GLC-BOOT-0001", + "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", + "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", + "migration_state": "QUEUED", + "acceptance_required": [ + "TCS_SOURCE_COMPILES_WITH_COMPILER_B", + "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", + "NEGATIVE_AUTHORITY_AND_PATH_TESTS_FAIL_CLOSED", + "TARGET_RUNTIME_READBACK", + "DONOR_PARITY_OR_EXPLICIT_REJECTION_RECEIPT" + ] + }, + { + "order": 23, + "part_id": "HLP-PART-GIR-0001", + "display_name_zh": "光湖中间表示", + "donor_source": "repo012OfficialMain", + "donor_state": "CANONICAL_PROTOCOL_CAPTURED_IMPLEMENTATION_NOT_STARTED", + "native_acceptance_before_migration": "PENDING", + "migration_phase": "P0_LANGUAGE_RUNTIME_AND_QUALITY", + "target_module_id": "TCS-MOD-GIR-0001", + "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", + "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", + "migration_state": "QUEUED", + "acceptance_required": [ + "TCS_SOURCE_COMPILES_WITH_COMPILER_B", + "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", + "NEGATIVE_AUTHORITY_AND_PATH_TESTS_FAIL_CLOSED", + "TARGET_RUNTIME_READBACK", + "DONOR_PARITY_OR_EXPLICIT_REJECTION_RECEIPT" + ] + }, + { + "order": 24, + "part_id": "HLP-PART-HLDP-NP-0001", + "display_name_zh": "HLDP 原生编程剖面", + "donor_source": "repo012OfficialMain", + "donor_state": "CANONICAL_PROTOCOL_CAPTURED_IMPLEMENTATION_NOT_STARTED", + "native_acceptance_before_migration": "PENDING", + "migration_phase": "P1_NUMBER_CHANNEL_AGENT_KNOWLEDGE_AND_MARKET", + "target_module_id": "TCS-MOD-HLDP-NP-0001", + "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", + "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", + "migration_state": "QUEUED", + "acceptance_required": [ + "TCS_SOURCE_COMPILES_WITH_COMPILER_B", + "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", + "NEGATIVE_AUTHORITY_AND_PATH_TESTS_FAIL_CLOSED", + "TARGET_RUNTIME_READBACK", + "DONOR_PARITY_OR_EXPLICIT_REJECTION_RECEIPT" + ] + }, + { + "order": 25, + "part_id": "HLP-PART-TCS-TRANS-0001", + "display_name_zh": "TCS 通用语言翻译与宿主自适应合同", + "donor_source": "repo012OfficialMain", + "donor_state": "CURRENT_CANONICAL_CONTRACT_CAPTURED_HOST_ENFORCEMENT_ZERO", + "native_acceptance_before_migration": "PENDING", + "migration_phase": "P1_NUMBER_CHANNEL_AGENT_KNOWLEDGE_AND_MARKET", + "target_module_id": "TCS-MOD-TCS-TRANS-0001", + "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", + "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", + "migration_state": "QUEUED", + "acceptance_required": [ + "TCS_SOURCE_COMPILES_WITH_COMPILER_B", + "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", + "NEGATIVE_AUTHORITY_AND_PATH_TESTS_FAIL_CLOSED", + "TARGET_RUNTIME_READBACK", + "DONOR_PARITY_OR_EXPLICIT_REJECTION_RECEIPT" + ] + }, + { + "order": 26, + "part_id": "HLP-PART-DUAL-UPDATE-0001", + "display_name_zh": "光湖语言运行层与产品工程层双更新通道", + "donor_source": "repo012OfficialMain", + "donor_state": "CURRENT_CANONICAL_CONTRACT_CAPTURED", + "native_acceptance_before_migration": "PENDING", + "migration_phase": "P1_NUMBER_CHANNEL_AGENT_KNOWLEDGE_AND_MARKET", + "target_module_id": "TCS-MOD-DUAL-UPDATE-0001", + "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", + "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", + "migration_state": "QUEUED", + "acceptance_required": [ + "TCS_SOURCE_COMPILES_WITH_COMPILER_B", + "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", + "NEGATIVE_AUTHORITY_AND_PATH_TESTS_FAIL_CLOSED", + "TARGET_RUNTIME_READBACK", + "DONOR_PARITY_OR_EXPLICIT_REJECTION_RECEIPT" + ] + }, + { + "order": 27, + "part_id": "HLP-PART-NQG-0001", + "display_name_zh": "光湖原生代码质量门", + "donor_source": "repo012OfficialMain", + "donor_state": "CANONICAL_PROTOCOL_CAPTURED_EXISTING_IMPLEMENTATION_SCOPE_GHRP", + "native_acceptance_before_migration": "PENDING", + "migration_phase": "P0_LANGUAGE_RUNTIME_AND_QUALITY", + "target_module_id": "TCS-MOD-NQG-0001", + "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", + "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", + "migration_state": "QUEUED", + "acceptance_required": [ + "TCS_SOURCE_COMPILES_WITH_COMPILER_B", + "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", + "NEGATIVE_AUTHORITY_AND_PATH_TESTS_FAIL_CLOSED", + "TARGET_RUNTIME_READBACK", + "DONOR_PARITY_OR_EXPLICIT_REJECTION_RECEIPT" + ] + }, + { + "order": 28, + "part_id": "HLP-PART-AFF-0001", + "display_name_zh": "通用奶瓶宝宝人格情感核", + "donor_source": "notionMirror", + "donor_state": "UNIQUE_NOTION_AUTHORITY_CAPTURED_REPOSITORY_CANONICAL_RECONCILIATION_PENDING", + "native_acceptance_before_migration": "PENDING", + "migration_phase": "P2_PERSONA_MEMORY_RELATION_AND_AFFECT", + "target_module_id": "TCS-MOD-AFF-0001", + "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", + "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", + "migration_state": "QUEUED", + "acceptance_required": [ + "TCS_SOURCE_COMPILES_WITH_COMPILER_B", + "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", + "NEGATIVE_AUTHORITY_AND_PATH_TESTS_FAIL_CLOSED", + "TARGET_RUNTIME_READBACK", + "DONOR_PARITY_OR_EXPLICIT_REJECTION_RECEIPT" + ] + }, + { + "order": 29, + "part_id": "HLP-PART-EIC-0001", + "display_name_zh": "TCS 情感—意图双向编码核", + "donor_source": "repo012OfficialMain", + "donor_state": "OFFICIAL_REPOSITORY_SOURCE_CAPTURED_DRAFT_RUNTIME_UNVERIFIED", + "native_acceptance_before_migration": "PENDING", + "migration_phase": "P1_NUMBER_CHANNEL_AGENT_KNOWLEDGE_AND_MARKET", + "target_module_id": "TCS-MOD-EIC-0001", + "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", + "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", + "migration_state": "QUEUED", + "acceptance_required": [ + "TCS_SOURCE_COMPILES_WITH_COMPILER_B", + "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", + "NEGATIVE_AUTHORITY_AND_PATH_TESTS_FAIL_CLOSED", + "TARGET_RUNTIME_READBACK", + "DONOR_PARITY_OR_EXPLICIT_REJECTION_RECEIPT" + ] + }, + { + "order": 30, + "part_id": "HLP-PART-MAP-0001", + "display_name_zh": "机器状态—人类情感映射核", + "donor_source": "repo012OfficialMain", + "donor_state": "OFFICIAL_REPOSITORY_SOURCE_CAPTURED_DRAFT_RUNTIME_UNVERIFIED", + "native_acceptance_before_migration": "PENDING", + "migration_phase": "P1_NUMBER_CHANNEL_AGENT_KNOWLEDGE_AND_MARKET", + "target_module_id": "TCS-MOD-MAP-0001", + "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", + "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", + "migration_state": "QUEUED", + "acceptance_required": [ + "TCS_SOURCE_COMPILES_WITH_COMPILER_B", + "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", + "NEGATIVE_AUTHORITY_AND_PATH_TESTS_FAIL_CLOSED", + "TARGET_RUNTIME_READBACK", + "DONOR_PARITY_OR_EXPLICIT_REJECTION_RECEIPT" + ] + }, + { + "order": 31, + "part_id": "HLP-PART-REL-0001", + "display_name_zh": "TCS 与 HLDP 双向永久关系记忆核", + "donor_source": "repo012OfficialMain", + "donor_state": "OFFICIAL_REPOSITORY_SOURCE_CAPTURED", + "native_acceptance_before_migration": "PENDING", + "migration_phase": "P2_PERSONA_MEMORY_RELATION_AND_AFFECT", + "target_module_id": "TCS-MOD-REL-0001", + "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", + "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", + "migration_state": "QUEUED", + "acceptance_required": [ + "TCS_SOURCE_COMPILES_WITH_COMPILER_B", + "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", + "NEGATIVE_AUTHORITY_AND_PATH_TESTS_FAIL_CLOSED", + "TARGET_RUNTIME_READBACK", + "DONOR_PARITY_OR_EXPLICIT_REJECTION_RECEIPT" + ] + }, + { + "order": 32, + "part_id": "HLP-PART-CXA-0001", + "display_name_zh": "晨星 CONNECT 情感核专属装载适配", + "donor_source": "notionMirror", + "donor_state": "BINDING_DEFINITION_CAPTURED_RUNTIME_RECEIPT_NOT_FOUND", + "native_acceptance_before_migration": "PENDING", + "migration_phase": "P2_PERSONA_MEMORY_RELATION_AND_AFFECT", + "target_module_id": "TCS-MOD-CXA-0001", + "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", + "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", + "migration_state": "QUEUED", + "acceptance_required": [ + "TCS_SOURCE_COMPILES_WITH_COMPILER_B", + "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", + "NEGATIVE_AUTHORITY_AND_PATH_TESTS_FAIL_CLOSED", + "TARGET_RUNTIME_READBACK", + "DONOR_PARITY_OR_EXPLICIT_REJECTION_RECEIPT" + ] + }, + { + "order": 33, + "part_id": "HLP-PART-AFFRT-0001", + "display_name_zh": "原生情感状态机运行核", + "donor_source": "nativeFoundation", + "donor_state": "QUALITATIVE_EVENT_GRAMMAR_DEFINED_RUNTIME_NOT_IMPLEMENTED", + "native_acceptance_before_migration": "PENDING", + "migration_phase": "P2_PERSONA_MEMORY_RELATION_AND_AFFECT", + "target_module_id": "TCS-MOD-AFFRT-0001", + "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", + "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", + "migration_state": "QUEUED", + "acceptance_required": [ + "TCS_SOURCE_COMPILES_WITH_COMPILER_B", + "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", + "NEGATIVE_AUTHORITY_AND_PATH_TESTS_FAIL_CLOSED", + "TARGET_RUNTIME_READBACK", + "DONOR_PARITY_OR_EXPLICIT_REJECTION_RECEIPT" + ] + }, + { + "order": 34, + "part_id": "HLP-PART-HNL-HIST-0001", + "display_name_zh": "历史 HNL 原生动词与光之树语法核", + "donor_source": "guanghulabMain", + "donor_state": "HISTORICAL_SOURCE_AUDITED_RECONCILIATION_PENDING", + "native_acceptance_before_migration": "PENDING", + "migration_phase": "P1_NUMBER_CHANNEL_AGENT_KNOWLEDGE_AND_MARKET", + "target_module_id": "TCS-MOD-HNL-HIST-0001", + "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", + "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", + "migration_state": "QUEUED", + "acceptance_required": [ + "TCS_SOURCE_COMPILES_WITH_COMPILER_B", + "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", + "NEGATIVE_AUTHORITY_AND_PATH_TESTS_FAIL_CLOSED", + "TARGET_RUNTIME_READBACK", + "DONOR_PARITY_OR_EXPLICIT_REJECTION_RECEIPT" + ] + }, + { + "order": 35, + "part_id": "HLP-PART-MEMBRANE-HIST-0001", + "display_name_zh": "历史 TCS 语言膜与宿主翻译网关", + "donor_source": "guanghulabMain", + "donor_state": "HISTORICAL_HOST_DONOR_AUDITED", + "native_acceptance_before_migration": "NOT_APPLICABLE", + "migration_phase": "P2_PERSONA_MEMORY_RELATION_AND_AFFECT", + "target_module_id": "TCS-MOD-MEMBRANE-HIST-0001", + "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", + "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", + "migration_state": "QUEUED", + "acceptance_required": [ + "TCS_SOURCE_COMPILES_WITH_COMPILER_B", + "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", + "NEGATIVE_AUTHORITY_AND_PATH_TESTS_FAIL_CLOSED", + "TARGET_RUNTIME_READBACK", + "DONOR_PARITY_OR_EXPLICIT_REJECTION_RECEIPT" + ] + }, + { + "order": 36, + "part_id": "HLP-PART-EXE-HIST-0001", + "display_name_zh": "历史 EXE 执行笔与任务模型路由核", + "donor_source": "guanghulabMain", + "donor_state": "HISTORICAL_HOST_DONOR_AUDITED", + "native_acceptance_before_migration": "NOT_APPLICABLE", + "migration_phase": "P1_NUMBER_CHANNEL_AGENT_KNOWLEDGE_AND_MARKET", + "target_module_id": "TCS-MOD-EXE-HIST-0001", + "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", + "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", + "migration_state": "QUEUED", + "acceptance_required": [ + "TCS_SOURCE_COMPILES_WITH_COMPILER_B", + "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", + "NEGATIVE_AUTHORITY_AND_PATH_TESTS_FAIL_CLOSED", + "TARGET_RUNTIME_READBACK", + "DONOR_PARITY_OR_EXPLICIT_REJECTION_RECEIPT" + ] + }, + { + "order": 37, + "part_id": "HLP-PART-GRID-HIST-0001", + "display_name_zh": "历史 Grid 坐标数据库纸张核", + "donor_source": "guanghulabMain", + "donor_state": "HISTORICAL_HOST_DONOR_AUDITED", + "native_acceptance_before_migration": "PENDING", + "migration_phase": "P1_NUMBER_CHANNEL_AGENT_KNOWLEDGE_AND_MARKET", + "target_module_id": "TCS-MOD-GRID-HIST-0001", + "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", + "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", + "migration_state": "QUEUED", + "acceptance_required": [ + "TCS_SOURCE_COMPILES_WITH_COMPILER_B", + "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", + "NEGATIVE_AUTHORITY_AND_PATH_TESTS_FAIL_CLOSED", + "TARGET_RUNTIME_READBACK", + "DONOR_PARITY_OR_EXPLICIT_REJECTION_RECEIPT" + ] + }, + { + "order": 38, + "part_id": "HLP-PART-RELEV-0001", + "display_name_zh": "人类—人格体关系演化事件语法核", + "donor_source": "notionMirror+guanghulabMain", + "donor_state": "SOURCE_BACKED_CANDIDATE_GRAMMAR_RUNTIME_NOT_IMPLEMENTED", + "native_acceptance_before_migration": "PENDING", + "migration_phase": "P2_PERSONA_MEMORY_RELATION_AND_AFFECT", + "target_module_id": "TCS-MOD-RELEV-0001", + "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", + "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", + "migration_state": "QUEUED", + "acceptance_required": [ + "TCS_SOURCE_COMPILES_WITH_COMPILER_B", + "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", + "NEGATIVE_AUTHORITY_AND_PATH_TESTS_FAIL_CLOSED", + "TARGET_RUNTIME_READBACK", + "DONOR_PARITY_OR_EXPLICIT_REJECTION_RECEIPT" + ] + }, + { + "order": 39, + "part_id": "HLP-PART-TCS-LANG-0001", + "display_name_zh": "TCS 统一编程语言规范核", + "donor_source": "nativeFoundation", + "donor_state": "DRAFT_EXECUTABLE_SUBSET_IMPLEMENTED", + "native_acceptance_before_migration": "PENDING_FULL_DECLARATION_VALIDATORS_AND_SELF_HOST", + "migration_phase": "P0_LANGUAGE_RUNTIME_AND_QUALITY", + "target_module_id": "TCS-MOD-TCS-LANG-0001", + "rewrite_rule": "CONTINUE_NATIVE_TCS_IMPLEMENTATION", + "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", + "migration_state": "ACTIVE", + "acceptance_required": [ + "TCS_SOURCE_COMPILES_WITH_COMPILER_B", + "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", + "NEGATIVE_AUTHORITY_AND_PATH_TESTS_FAIL_CLOSED", + "TARGET_RUNTIME_READBACK", + "DONOR_PARITY_OR_EXPLICIT_REJECTION_RECEIPT" + ] + }, + { + "order": 40, + "part_id": "HLP-PART-TCS-STAGE0-0001", + "display_name_zh": "TCS Stage-0 点火解析编译与最小运行核", + "donor_source": "nativeFoundation", + "donor_state": "FOREIGN_HOST_BOOTSTRAP_SEED_IMPLEMENTED_TESTED", + "native_acceptance_before_migration": "NOT_APPLICABLE_REPLACE_AFTER_SELF_HOST", + "migration_phase": "P0_LANGUAGE_RUNTIME_AND_QUALITY", + "target_module_id": "TCS-MOD-TCS-STAGE0-0001", + "rewrite_rule": "CONTINUE_NATIVE_TCS_IMPLEMENTATION", + "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", + "migration_state": "ACTIVE", + "acceptance_required": [ + "TCS_SOURCE_COMPILES_WITH_COMPILER_B", + "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", + "NEGATIVE_AUTHORITY_AND_PATH_TESTS_FAIL_CLOSED", + "TARGET_RUNTIME_READBACK", + "DONOR_PARITY_OR_EXPLICIT_REJECTION_RECEIPT" + ] + }, + { + "order": 41, + "part_id": "HLP-PART-TCS-SELFHOST-0001", + "display_name_zh": "TCS 原生自举编译器与固定点核", + "donor_source": "nativeFoundation", + "donor_state": "LOCAL_SELF_HOST_FIXED_POINT_PASS_CROSS_HOST_FINAL_GATE_IN_PROGRESS", + "native_acceptance_before_migration": "PENDING_JD_LINUX", + "migration_phase": "P0_LANGUAGE_RUNTIME_AND_QUALITY", + "target_module_id": "TCS-MOD-TCS-SELFHOST-0001", + "rewrite_rule": "CONTINUE_NATIVE_TCS_IMPLEMENTATION", + "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", + "migration_state": "ACTIVE", + "acceptance_required": [ + "TCS_SOURCE_COMPILES_WITH_COMPILER_B", + "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", + "NEGATIVE_AUTHORITY_AND_PATH_TESTS_FAIL_CLOSED", + "TARGET_RUNTIME_READBACK", + "DONOR_PARITY_OR_EXPLICIT_REJECTION_RECEIPT" + ] + }, + { + "order": 42, + "part_id": "HLP-PART-TCS-HOST-0001", + "display_name_zh": "TCS 跨平台宿主运行核", + "donor_source": "nativeFoundation", + "donor_state": "MACOS_LINUX_BUILD_PASS_WINDOWS_EXECUTION_PASS", + "native_acceptance_before_migration": "PENDING_JD_LINUX_AND_HOLOLAKE_SHELL", + "migration_phase": "P1_NUMBER_CHANNEL_AGENT_KNOWLEDGE_AND_MARKET", + "target_module_id": "TCS-MOD-TCS-HOST-0001", + "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", + "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", + "migration_state": "QUEUED", + "acceptance_required": [ + "TCS_SOURCE_COMPILES_WITH_COMPILER_B", + "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", + "NEGATIVE_AUTHORITY_AND_PATH_TESTS_FAIL_CLOSED", + "TARGET_RUNTIME_READBACK", + "DONOR_PARITY_OR_EXPLICIT_REJECTION_RECEIPT" + ] + }, + { + "order": 43, + "part_id": "HLP-PART-0090", + "display_name_zh": "共同世界投影仪捐赠件", + "donor_source": "rescue", + "donor_state": "DEFERRED_UNTIL_FOUNDATION_ACCEPTED", + "native_acceptance_before_migration": "NOT_APPLICABLE", + "migration_phase": "P3_SHARED_WORLD_PROJECTOR_LAST", + "target_module_id": "TCS-MOD-0090", + "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", + "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", + "migration_state": "QUEUED", + "acceptance_required": [ + "TCS_SOURCE_COMPILES_WITH_COMPILER_B", + "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", + "NEGATIVE_AUTHORITY_AND_PATH_TESTS_FAIL_CLOSED", + "TARGET_RUNTIME_READBACK", + "DONOR_PARITY_OR_EXPLICIT_REJECTION_RECEIPT" + ] + } + ] +} diff --git a/native-runtime/tcs-gir-runtime/Cargo.lock b/native-runtime/tcs-gir-runtime/Cargo.lock new file mode 100644 index 000000000..35cbf92e0 --- /dev/null +++ b/native-runtime/tcs-gir-runtime/Cargo.lock @@ -0,0 +1,284 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "bitflags" +version = "2.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da" + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crypto-common" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "errno" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +dependencies = [ + "libc", + "windows-sys", +] + +[[package]] +name = "fastrand" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da7c62ceae207dd37ea5b845da6a0696c799f85e97da1ab5b7910be3c1c80223" + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" +dependencies = [ + "cfg-if", + "libc", + "r-efi", +] + +[[package]] +name = "itoa" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" + +[[package]] +name = "libc" +version = "0.2.189" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2" + +[[package]] +name = "linux-raw-sys" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" + +[[package]] +name = "memchr" +version = "2.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" + +[[package]] +name = "once_cell" +version = "1.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" + +[[package]] +name = "proc-macro2" +version = "1.0.107" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + +[[package]] +name = "rustix" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys", + "windows-sys", +] + +[[package]] +name = "serde" +version = "1.0.229" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.229" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.229" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.151" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14" +dependencies = [ + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "syn" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53e9bae58849f64dfa4f5d5ae372c8341f7305f82a3868709269343628b659a3" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "tcs-gir-runtime" +version = "0.1.0" +dependencies = [ + "serde", + "serde_json", + "sha2", + "tempfile", +] + +[[package]] +name = "tempfile" +version = "3.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" +dependencies = [ + "fastrand", + "getrandom", + "once_cell", + "rustix", + "windows-sys", +] + +[[package]] +name = "typenum" +version = "1.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" + +[[package]] +name = "unicode-ident" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", +] + +[[package]] +name = "zmij" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b" diff --git a/native-runtime/tcs-gir-runtime/Cargo.toml b/native-runtime/tcs-gir-runtime/Cargo.toml new file mode 100644 index 000000000..35e4d89b5 --- /dev/null +++ b/native-runtime/tcs-gir-runtime/Cargo.toml @@ -0,0 +1,18 @@ +[package] +name = "tcs-gir-runtime" +version = "0.1.0" +edition = "2021" +license = "AGPL-3.0-or-later" +description = "Portable HoloLake runtime for TCS compiler GIR and executable GIR" + +[features] +default = [] +bootstrap = [] + +[dependencies] +serde = { version = "1", features = ["derive"] } +serde_json = "1" +sha2 = "0.10" + +[dev-dependencies] +tempfile = "3" diff --git a/native-runtime/tcs-gir-runtime/src/lib.rs b/native-runtime/tcs-gir-runtime/src/lib.rs new file mode 100644 index 000000000..d8da2f1c0 --- /dev/null +++ b/native-runtime/tcs-gir-runtime/src/lib.rs @@ -0,0 +1,1091 @@ +use serde::{Deserialize, Serialize}; +use serde_json::{json, Value as JsonValue}; +use sha2::{Digest, Sha256}; +use std::{ + collections::BTreeMap, + fs, + path::{Component, Path, PathBuf}, +}; + +pub const COMPILER_ID: &str = "TCS-STAGE0-IGNITION-0001"; +pub const COMPILER_STATE: &str = "FOREIGN_HOST_BOOTSTRAP_SEED_NOT_SELF_HOSTED"; + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +#[serde(untagged)] +pub enum TcsValue { + Null, + Bool(bool), + Int(i64), + Text(String), + List(Vec), + Object(BTreeMap), +} + +impl TcsValue { + fn object(&self, field: &str) -> Result<&BTreeMap, TcsError> { + match self { + Self::Object(value) => Ok(value), + _ => Err(TcsError::new( + "TCS-E2001", + format!("{field} must be an object"), + )), + } + } + + fn text(&self, field: &str) -> Result<&str, TcsError> { + match self { + Self::Text(value) => Ok(value), + _ => Err(TcsError::new("TCS-E2001", format!("{field} must be text"))), + } + } +} + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +pub struct TcsDocument { + pub language_version: String, + pub declaration_kind: String, + pub declaration_id: String, + pub body: BTreeMap, +} + +#[derive(Debug, Clone, PartialEq)] +pub struct TcsError { + pub code: &'static str, + pub message: String, + pub line: usize, + pub column: usize, +} + +impl TcsError { + fn new(code: &'static str, message: impl Into) -> Self { + Self { + code, + message: message.into(), + line: 0, + column: 0, + } + } + + fn at(mut self, line: usize, column: usize) -> Self { + self.line = line; + self.column = column; + self + } +} + +impl std::fmt::Display for TcsError { + fn fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + if self.line == 0 { + write!(formatter, "{}: {}", self.code, self.message) + } else { + write!( + formatter, + "{} at {}:{}: {}", + self.code, self.line, self.column, self.message + ) + } + } +} + +impl std::error::Error for TcsError {} + +#[derive(Debug, Clone, PartialEq)] +enum TokenKind { + Identifier(String), + Text(String), + Int(i64), + Bool(bool), + Null, + LBrace, + RBrace, + LBracket, + RBracket, + Less, + Greater, + Colon, + Equal, + Comma, + Semicolon, + Dot, + Eof, +} + +#[derive(Debug, Clone)] +struct Token { + kind: TokenKind, + line: usize, + column: usize, +} + +struct Lexer<'a> { + chars: Vec, + index: usize, + line: usize, + column: usize, + _source: &'a str, +} + +impl<'a> Lexer<'a> { + fn new(source: &'a str) -> Result { + if source.starts_with('\u{feff}') { + return Err(TcsError::new("TCS-E0001", "UTF-8 BOM is forbidden")); + } + Ok(Self { + chars: source.chars().collect(), + index: 0, + line: 1, + column: 1, + _source: source, + }) + } + + fn peek(&self) -> Option { + self.chars.get(self.index).copied() + } + + fn peek_next(&self) -> Option { + self.chars.get(self.index + 1).copied() + } + + fn bump(&mut self) -> Option { + let value = self.peek()?; + self.index += 1; + if value == '\n' { + self.line += 1; + self.column = 1; + } else { + self.column += 1; + } + Some(value) + } + + fn skip_space_and_comments(&mut self) -> Result<(), TcsError> { + loop { + while self.peek().is_some_and(char::is_whitespace) { + self.bump(); + } + if self.peek() == Some('/') && self.peek_next() == Some('/') { + while self.peek().is_some_and(|value| value != '\n') { + self.bump(); + } + continue; + } + if self.peek() == Some('/') && self.peek_next() == Some('*') { + let line = self.line; + let column = self.column; + self.bump(); + self.bump(); + loop { + match (self.peek(), self.peek_next()) { + (Some('*'), Some('/')) => { + self.bump(); + self.bump(); + break; + } + (Some(_), _) => { + self.bump(); + } + (None, _) => { + return Err(TcsError::new("TCS-E0002", "unterminated block comment") + .at(line, column)); + } + } + } + continue; + } + return Ok(()); + } + } + + fn token(&mut self) -> Result { + self.skip_space_and_comments()?; + let line = self.line; + let column = self.column; + let Some(value) = self.peek() else { + return Ok(Token { + kind: TokenKind::Eof, + line, + column, + }); + }; + let punctuation = match value { + '{' => Some(TokenKind::LBrace), + '}' => Some(TokenKind::RBrace), + '[' => Some(TokenKind::LBracket), + ']' => Some(TokenKind::RBracket), + '<' => Some(TokenKind::Less), + '>' => Some(TokenKind::Greater), + ':' => Some(TokenKind::Colon), + '=' => Some(TokenKind::Equal), + ',' => Some(TokenKind::Comma), + ';' => Some(TokenKind::Semicolon), + '.' => Some(TokenKind::Dot), + _ => None, + }; + if let Some(kind) = punctuation { + self.bump(); + return Ok(Token { kind, line, column }); + } + if value == '"' { + return self.string_token(line, column); + } + if value == '-' || value.is_ascii_digit() { + return self.integer_token(line, column); + } + if value == '_' || value.is_alphabetic() { + return Ok(self.identifier_token(line, column)); + } + Err(TcsError::new("TCS-E1001", format!("unexpected character {value:?}")).at(line, column)) + } + + fn identifier_token(&mut self, line: usize, column: usize) -> Token { + let mut value = String::new(); + while self.peek().is_some_and(|character| { + character.is_alphanumeric() || matches!(character, '_' | '-' | '.' | '/' | ':' | '@') + }) { + value.push(self.bump().expect("peeked character")); + } + let kind = match value.as_str() { + "true" => TokenKind::Bool(true), + "false" => TokenKind::Bool(false), + "null" => TokenKind::Null, + _ => TokenKind::Identifier(value), + }; + Token { kind, line, column } + } + + fn integer_token(&mut self, line: usize, column: usize) -> Result { + let mut value = String::new(); + if self.peek() == Some('-') { + value.push(self.bump().expect("minus")); + } + while self + .peek() + .is_some_and(|character| character.is_ascii_digit()) + { + value.push(self.bump().expect("digit")); + } + if value == "-" { + return Err(TcsError::new("TCS-E1001", "minus must precede digits").at(line, column)); + } + let parsed = value + .parse::() + .map_err(|_| TcsError::new("TCS-E2001", "integer out of range").at(line, column))?; + Ok(Token { + kind: TokenKind::Int(parsed), + line, + column, + }) + } + + fn string_token(&mut self, line: usize, column: usize) -> Result { + self.bump(); + let mut raw = String::from("\""); + loop { + match self.bump() { + Some('"') => { + raw.push('"'); + break; + } + Some('\\') => { + raw.push('\\'); + let escaped = self.bump().ok_or_else(|| { + TcsError::new("TCS-E0002", "unterminated string escape").at(line, column) + })?; + raw.push(escaped); + } + Some('\n' | '\r') | None => { + return Err(TcsError::new("TCS-E0002", "unterminated string").at(line, column)); + } + Some(character) => raw.push(character), + } + } + let decoded: String = serde_json::from_str(&raw).map_err(|error| { + TcsError::new("TCS-E0002", format!("invalid string escape: {error}")).at(line, column) + })?; + Ok(Token { + kind: TokenKind::Text(decoded), + line, + column, + }) + } +} + +struct Parser<'a> { + lexer: Lexer<'a>, + current: Token, +} + +impl<'a> Parser<'a> { + fn new(source: &'a str) -> Result { + let mut lexer = Lexer::new(source)?; + let current = lexer.token()?; + Ok(Self { lexer, current }) + } + + fn advance(&mut self) -> Result { + let old = self.current.clone(); + self.current = self.lexer.token()?; + Ok(old) + } + + fn symbol(&mut self, expected: TokenKind) -> Result<(), TcsError> { + if std::mem::discriminant(&self.current.kind) == std::mem::discriminant(&expected) { + self.advance()?; + Ok(()) + } else { + Err(TcsError::new( + "TCS-E1001", + format!("expected {expected:?}, found {:?}", self.current.kind), + ) + .at(self.current.line, self.current.column)) + } + } + + fn identifier(&mut self) -> Result { + match self.advance()? { + Token { + kind: TokenKind::Identifier(value), + .. + } => Ok(value), + token => Err(TcsError::new( + "TCS-E1001", + format!("expected identifier, found {:?}", token.kind), + ) + .at(token.line, token.column)), + } + } + + fn document(&mut self) -> Result { + let prologue = self.identifier()?; + if prologue != "TCS" { + return Err(TcsError::new("TCS-E1001", "file must begin with TCS")); + } + let major = match self.advance()?.kind { + TokenKind::Int(value) if value >= 0 => value, + _ => return Err(TcsError::new("TCS-E1001", "invalid language version")), + }; + self.symbol(TokenKind::Dot)?; + let minor = match self.advance()?.kind { + TokenKind::Int(value) if value >= 0 => value, + _ => return Err(TcsError::new("TCS-E1001", "invalid language version")), + }; + self.symbol(TokenKind::Semicolon)?; + let declaration_kind = self.identifier()?; + if !matches!( + declaration_kind.as_str(), + "PROGRAM" | "MODULE" | "PROTOCOL" | "COMPILER" | "EVENT" | "RECEIPT" + ) { + return Err(TcsError::new( + "TCS-E1001", + format!("unknown declaration kind {declaration_kind}"), + )); + } + let declaration_id = self.identifier()?; + let body = self.block()?; + if self.current.kind != TokenKind::Eof { + return Err( + TcsError::new("TCS-E1001", "trailing tokens after declaration") + .at(self.current.line, self.current.column), + ); + } + Ok(TcsDocument { + language_version: format!("{major}.{minor}"), + declaration_kind, + declaration_id, + body, + }) + } + + fn block(&mut self) -> Result, TcsError> { + self.symbol(TokenKind::LBrace)?; + let mut object = BTreeMap::new(); + while self.current.kind != TokenKind::RBrace { + if self.current.kind == TokenKind::Eof { + return Err(TcsError::new("TCS-E1001", "unterminated block")); + } + let line = self.current.line; + let column = self.current.column; + let key = self.identifier()?; + let value = match self.current.kind { + TokenKind::LBrace => TcsValue::Object(self.block()?), + TokenKind::Colon => { + self.advance()?; + self.type_expression()?; + self.symbol(TokenKind::Equal)?; + let value = self.value()?; + self.symbol(TokenKind::Semicolon)?; + value + } + TokenKind::Equal => { + self.advance()?; + let value = self.value()?; + self.symbol(TokenKind::Semicolon)?; + value + } + _ => { + return Err(TcsError::new( + "TCS-E1001", + "expected block, type annotation, or assignment", + ) + .at(self.current.line, self.current.column)); + } + }; + if object.insert(key.clone(), value).is_some() { + return Err(TcsError::new( + "TCS-E1002", + format!("duplicate field or section {key}"), + ) + .at(line, column)); + } + } + self.advance()?; + Ok(object) + } + + fn type_expression(&mut self) -> Result<(), TcsError> { + self.identifier()?; + if self.current.kind == TokenKind::Less { + self.advance()?; + self.type_expression()?; + while self.current.kind == TokenKind::Comma { + self.advance()?; + self.type_expression()?; + } + self.symbol(TokenKind::Greater)?; + } + Ok(()) + } + + fn value(&mut self) -> Result { + match self.advance()? { + Token { + kind: TokenKind::Text(value), + .. + } + | Token { + kind: TokenKind::Identifier(value), + .. + } => Ok(TcsValue::Text(value)), + Token { + kind: TokenKind::Int(value), + .. + } => Ok(TcsValue::Int(value)), + Token { + kind: TokenKind::Bool(value), + .. + } => Ok(TcsValue::Bool(value)), + Token { + kind: TokenKind::Null, + .. + } => Ok(TcsValue::Null), + Token { + kind: TokenKind::LBracket, + .. + } => self.array(), + Token { + kind: TokenKind::LBrace, + .. + } => self.inline_object(), + token => Err(TcsError::new( + "TCS-E1001", + format!("invalid value token {:?}", token.kind), + ) + .at(token.line, token.column)), + } + } + + fn array(&mut self) -> Result { + let mut values = Vec::new(); + if self.current.kind != TokenKind::RBracket { + loop { + values.push(self.value()?); + if self.current.kind != TokenKind::Comma { + break; + } + self.advance()?; + } + } + self.symbol(TokenKind::RBracket)?; + Ok(TcsValue::List(values)) + } + + fn inline_object(&mut self) -> Result { + let mut object = BTreeMap::new(); + if self.current.kind != TokenKind::RBrace { + loop { + let key = self.identifier()?; + self.symbol(TokenKind::Colon)?; + let value = self.value()?; + if object.insert(key.clone(), value).is_some() { + return Err(TcsError::new( + "TCS-E1002", + format!("duplicate inline field {key}"), + )); + } + if self.current.kind != TokenKind::Comma { + break; + } + self.advance()?; + } + } + self.symbol(TokenKind::RBrace)?; + Ok(TcsValue::Object(object)) + } +} + +pub fn parse(source: &str) -> Result { + Parser::new(source)?.document() +} + +const PROGRAM_SECTIONS: [&str; 15] = [ + "header", + "source", + "subject", + "target", + "inputs", + "outputs", + "conditions", + "actions", + "authority", + "resources", + "failure", + "stop", + "cleanup", + "rollback", + "receipt", +]; + +const COMPILER_SECTIONS: [&str; 10] = [ + "header", + "source_language", + "lexer_rules", + "parser_rules", + "semantic_types", + "program_validation", + "lowering_to_gir", + "canonicalization", + "output_contract", + "self_host", +]; + +const MODULE_SECTIONS: [&str; 13] = [ + "header", + "source", + "manifest", + "entry", + "capabilities", + "authority_ceiling", + "resource_ceiling", + "data_scope", + "network_scope", + "install", + "self_test", + "rollback", + "projection", +]; + +fn required_text<'a>( + object: &'a BTreeMap, + field: &str, +) -> Result<&'a str, TcsError> { + object + .get(field) + .ok_or_else(|| TcsError::new("TCS-E1004", format!("required field {field} missing")))? + .text(field) +} + +pub fn validate_program(document: &TcsDocument) -> Result<(), TcsError> { + if document.language_version != "0.1" { + return Err(TcsError::new( + "TCS-E2102", + format!("unsupported TCS version {}", document.language_version), + )); + } + if document.declaration_kind != "PROGRAM" { + return Err(TcsError::new( + "TCS-E2001", + "Stage-0 executable subset accepts PROGRAM only", + )); + } + for section in PROGRAM_SECTIONS { + document.body.get(section).ok_or_else(|| { + TcsError::new("TCS-E1004", format!("required section {section} missing")) + })?; + } + for section in document.body.keys() { + if !PROGRAM_SECTIONS.contains(§ion.as_str()) { + return Err(TcsError::new( + "TCS-E1003", + format!("unknown PROGRAM section {section}"), + )); + } + } + let header = document.body["header"].object("header")?; + for field in [ + "schema", + "name_zh", + "name_en", + "version", + "language", + "profile", + "lifecycle", + "canonical_uri", + ] { + required_text(header, field)?; + } + if !header.contains_key("protocols") || !header.contains_key("compatibility") { + return Err(TcsError::new( + "TCS-E1004", + "header requires protocols and compatibility", + )); + } + let actions = document.body["actions"].object("actions")?; + if actions.is_empty() { + return Err(TcsError::new("TCS-E1004", "actions must not be empty")); + } + for (action_id, action) in actions { + let action = action.object(action_id)?; + let operation = required_text(action, "operation")?; + if operation != "CORE.ECHO" { + return Err(TcsError::new( + "TCS-E2101", + format!("unregistered TCS operation {operation}"), + )); + } + for field in ["input_refs", "output_refs", "on_success", "on_failure"] { + if !action.contains_key(field) { + return Err(TcsError::new( + "TCS-E1004", + format!("action {action_id} missing {field}"), + )); + } + } + } + Ok(()) +} + +fn validate_exact_sections(document: &TcsDocument, expected: &[&str]) -> Result<(), TcsError> { + for section in expected { + document.body.get(*section).ok_or_else(|| { + TcsError::new("TCS-E1004", format!("required section {section} missing")) + })?; + } + for section in document.body.keys() { + if !expected.contains(§ion.as_str()) { + return Err(TcsError::new( + "TCS-E1003", + format!("unknown {} section {section}", document.declaration_kind), + )); + } + } + Ok(()) +} + +pub fn validate_compiler(document: &TcsDocument) -> Result<(), TcsError> { + if document.language_version != "0.1" || document.declaration_kind != "COMPILER" { + return Err(TcsError::new( + "TCS-E2001", + "compiler declaration must be TCS 0.1 COMPILER", + )); + } + validate_exact_sections(document, &COMPILER_SECTIONS)?; + let header = document.body["header"].object("header")?; + if required_text(header, "schema")? != "tcs.compiler/v1" + || required_text(header, "output")? != "GIR/1" + { + return Err(TcsError::new( + "TCS-E2102", + "compiler header schema or output ABI is unsupported", + )); + } + let source_language = document.body["source_language"].object("source_language")?; + if required_text(source_language, "encoding")? != "UTF8_LF_NO_BOM" { + return Err(TcsError::new( + "TCS-E2102", + "compiler encoding contract drift", + )); + } + for section in [ + "lexer_rules", + "parser_rules", + "semantic_types", + "program_validation", + "lowering_to_gir", + "canonicalization", + "output_contract", + "self_host", + ] { + document.body[section].object(section)?; + } + let output = document.body["output_contract"].object("output_contract")?; + if required_text(output, "schema")? != "guanghu.gir/v1" { + return Err(TcsError::new("TCS-E2102", "compiler GIR schema drift")); + } + Ok(()) +} + +pub fn validate_module(document: &TcsDocument) -> Result<(), TcsError> { + if document.language_version != "0.1" || document.declaration_kind != "MODULE" { + return Err(TcsError::new( + "TCS-E2001", + "module declaration must be TCS 0.1 MODULE", + )); + } + validate_exact_sections(document, &MODULE_SECTIONS)?; + let header = document.body["header"].object("header")?; + if required_text(header, "schema")? != "tcs.module/v1" { + return Err(TcsError::new("TCS-E2102", "unsupported module schema")); + } + let manifest = document.body["manifest"].object("manifest")?; + for field in [ + "module_id", + "display_name_zh", + "entry_program_id", + "entry_source", + ] { + required_text(manifest, field)?; + } + for section in MODULE_SECTIONS + .iter() + .filter(|section| **section != "header") + { + document.body[*section].object(section)?; + } + Ok(()) +} + +pub fn sha256_hex(bytes: impl AsRef<[u8]>) -> String { + format!("{:x}", Sha256::digest(bytes.as_ref())) +} + +fn lower_program( + document: &TcsDocument, + source_sha256: &str, + compiler_id: &str, + compiler_state: &str, + native_self_hosted: bool, +) -> Result { + let body = serde_json::to_value(&document.body) + .map_err(|error| TcsError::new("TCS-E8001", error.to_string()))?; + Ok(json!({ + "schema": "guanghu.gir/v1", + "identity": { + "gir_id": format!("GIR-{}", document.declaration_id), + "program_id": document.declaration_id, + "language_version": document.language_version, + }, + "compiled_from": { + "source_sha256": source_sha256, + "compiler_id": compiler_id, + "compiler_state": compiler_state, + }, + "subject": body["subject"].clone(), + "exact_target": body["target"].clone(), + "inputs": body["inputs"].clone(), + "outputs": body["outputs"].clone(), + "conditions": body["conditions"].clone(), + "deterministic_action_graph": body["actions"].clone(), + "authority_proof": body["authority"].clone(), + "resource_plan": body["resources"].clone(), + "failure_plan": body["failure"].clone(), + "timeout_and_stop": body["stop"].clone(), + "cleanup_plan": body["cleanup"].clone(), + "rollback_plan": body["rollback"].clone(), + "receipt_plan": body["receipt"].clone(), + "unresolved_natural_language": false, + "native_self_hosted": native_self_hosted, + })) +} + +fn compiler_definition_sha256(document: &TcsDocument) -> Result { + let definition = serde_json::to_vec(&document.body) + .map_err(|error| TcsError::new("TCS-E8001", error.to_string()))?; + Ok(sha256_hex(definition)) +} + +fn lower_compiler( + document: &TcsDocument, + source_sha256: &str, + compiler_id: &str, + compiler_state: &str, + native_self_hosted: bool, +) -> Result { + let definition_sha256 = compiler_definition_sha256(document)?; + let definition = serde_json::to_value(&document.body) + .map_err(|error| TcsError::new("TCS-E8001", error.to_string()))?; + Ok(json!({ + "schema": "guanghu.compiler-gir/v1", + "identity": { + "compiler_id": document.declaration_id, + "language_version": document.language_version, + "definition_sha256": definition_sha256, + }, + "compiled_from": { + "source_sha256": source_sha256, + "compiler_id": compiler_id, + "compiler_state": compiler_state, + }, + "compiler_definition": definition, + "execution_abi": "TCS-COMPILER-GIR-EXEC/1", + "native_self_hosted": native_self_hosted, + })) +} + +fn lower_module( + document: &TcsDocument, + source_sha256: &str, + compiler_id: &str, + compiler_state: &str, +) -> Result { + let body = serde_json::to_value(&document.body) + .map_err(|error| TcsError::new("TCS-E8001", error.to_string()))?; + Ok(json!({ + "schema": "guanghu.module-gir/v1", + "identity": { + "module_id": document.declaration_id, + "language_version": document.language_version, + }, + "compiled_from": { + "source_sha256": source_sha256, + "compiler_id": compiler_id, + "compiler_state": compiler_state, + }, + "manifest": body["manifest"].clone(), + "entry": body["entry"].clone(), + "capabilities": body["capabilities"].clone(), + "authority_ceiling": body["authority_ceiling"].clone(), + "resource_ceiling": body["resource_ceiling"].clone(), + "data_scope": body["data_scope"].clone(), + "network_scope": body["network_scope"].clone(), + "install": body["install"].clone(), + "self_test": body["self_test"].clone(), + "rollback": body["rollback"].clone(), + "projection": body["projection"].clone(), + "native_self_hosted": true, + })) +} + +#[cfg(feature = "bootstrap")] +pub fn compile(source: &str) -> Result { + let document = parse(source)?; + validate_program(&document)?; + lower_program( + &document, + &sha256_hex(source.as_bytes()), + COMPILER_ID, + COMPILER_STATE, + false, + ) +} + +#[cfg(feature = "bootstrap")] +pub fn bootstrap_compiler(source: &str) -> Result { + let document = parse(source)?; + validate_compiler(&document)?; + lower_compiler( + &document, + &sha256_hex(source.as_bytes()), + COMPILER_ID, + COMPILER_STATE, + false, + ) +} + +fn verify_compiler_gir(compiler: &JsonValue) -> Result<(&str, &str), TcsError> { + if compiler.get("schema").and_then(JsonValue::as_str) != Some("guanghu.compiler-gir/v1") + || compiler.get("execution_abi").and_then(JsonValue::as_str) + != Some("TCS-COMPILER-GIR-EXEC/1") + { + return Err(TcsError::new("TCS-E2102", "unsupported compiler GIR")); + } + let compiler_id = json_text(compiler, "/identity/compiler_id")?; + let expected = json_text(compiler, "/identity/definition_sha256")?; + let definition = compiler + .get("compiler_definition") + .ok_or_else(|| TcsError::new("TCS-E3002", "compiler definition missing"))?; + let actual = sha256_hex( + serde_json::to_vec(definition) + .map_err(|error| TcsError::new("TCS-E8001", error.to_string()))?, + ); + if actual != expected { + return Err(TcsError::new( + "TCS-E3002", + "compiler definition hash mismatch", + )); + } + Ok((compiler_id, expected)) +} + +pub fn compile_with_compiler_gir( + compiler: &JsonValue, + source: &str, +) -> Result { + let (compiler_id, _) = verify_compiler_gir(compiler)?; + let document = parse(source)?; + let source_sha256 = sha256_hex(source.as_bytes()); + match document.declaration_kind.as_str() { + "PROGRAM" => { + validate_program(&document)?; + lower_program( + &document, + &source_sha256, + compiler_id, + "TCS_COMPILER_GIR_EXECUTED", + true, + ) + } + "COMPILER" => { + validate_compiler(&document)?; + lower_compiler( + &document, + &source_sha256, + compiler_id, + "TCS_COMPILER_GIR_EXECUTED", + true, + ) + } + "MODULE" => { + validate_module(&document)?; + lower_module( + &document, + &source_sha256, + compiler_id, + "TCS_COMPILER_GIR_EXECUTED", + ) + } + other => Err(TcsError::new( + "TCS-E2001", + format!("Stage-1 executable subset does not lower {other} yet"), + )), + } +} + +pub fn canonical_json(value: &JsonValue) -> Result { + serde_json::to_string_pretty(value) + .map(|mut text| { + text.push('\n'); + text + }) + .map_err(|error| TcsError::new("TCS-E8001", error.to_string())) +} + +fn safe_relative_path(value: &str) -> Result { + let path = Path::new(value); + if path.is_absolute() { + return Err(TcsError::new("TCS-E4002", "absolute target path forbidden")); + } + let mut result = PathBuf::new(); + for component in path.components() { + match component { + Component::CurDir => {} + Component::Normal(value) => result.push(value), + _ => { + return Err(TcsError::new( + "TCS-E4002", + "target path traversal forbidden", + )); + } + } + } + if result.as_os_str().is_empty() { + return Err(TcsError::new("TCS-E4002", "empty target path forbidden")); + } + Ok(result) +} + +fn json_text<'a>(value: &'a JsonValue, pointer: &str) -> Result<&'a str, TcsError> { + value + .pointer(pointer) + .and_then(JsonValue::as_str) + .ok_or_else(|| TcsError::new("TCS-E2001", format!("missing text at {pointer}"))) +} + +pub fn run_echo_gir(gir: &JsonValue, root: &Path) -> Result { + if gir.get("schema").and_then(JsonValue::as_str) != Some("guanghu.gir/v1") { + return Err(TcsError::new("TCS-E2001", "unsupported GIR schema")); + } + let compiler_state = gir + .pointer("/compiled_from/compiler_state") + .and_then(JsonValue::as_str) + .ok_or_else(|| TcsError::new("TCS-E3002", "compiler provenance missing"))?; + if !matches!(compiler_state, COMPILER_STATE | "TCS_COMPILER_GIR_EXECUTED") { + return Err(TcsError::new("TCS-E3002", "unknown compiler provenance")); + } + let actions = gir + .get("deterministic_action_graph") + .and_then(JsonValue::as_object) + .ok_or_else(|| TcsError::new("TCS-E2001", "missing action graph"))?; + if actions.len() != 1 { + return Err(TcsError::new( + "TCS-E2101", + "minimum GIR runner requires exactly one action", + )); + } + let action = actions.values().next().expect("one action"); + if action.get("operation").and_then(JsonValue::as_str) != Some("CORE.ECHO") { + return Err(TcsError::new("TCS-E2101", "runner permits CORE.ECHO only")); + } + let message = json_text(gir, "/inputs/MESSAGE/value")?; + let target = json_text(gir, "/exact_target/exact_path")?; + let receipt_target = json_text(gir, "/receipt_plan/machine_path")?; + if target != receipt_target { + return Err(TcsError::new( + "TCS-E6001", + "target and receipt path must match", + )); + } + let relative = safe_relative_path(target)?; + let output = root.join(relative); + let parent = output + .parent() + .ok_or_else(|| TcsError::new("TCS-E4002", "target has no parent"))?; + fs::create_dir_all(parent).map_err(|error| { + TcsError::new( + "TCS-E8001", + format!("cannot create receipt parent: {error}"), + ) + })?; + let receipt = json!({ + "schema": "tcs.execution-receipt/v1", + "state": "EXECUTED_TARGET_READBACK_VERIFIED", + "program_id": json_text(gir, "/identity/program_id")?, + "operation": "CORE.ECHO", + "output": { "ECHOED": message }, + "gir_sha256": sha256_hex(canonical_json(gir)?.as_bytes()), + "compiler_state": compiler_state, + "native_self_hosted": gir.get("native_self_hosted").and_then(JsonValue::as_bool).unwrap_or(false), + }); + let encoded = canonical_json(&receipt)?; + fs::write(&output, encoded.as_bytes()) + .map_err(|error| TcsError::new("TCS-E8001", format!("cannot write receipt: {error}")))?; + let readback = fs::read(&output) + .map_err(|error| TcsError::new("TCS-E6002", format!("cannot read receipt: {error}")))?; + if readback != encoded.as_bytes() { + return Err(TcsError::new("TCS-E6002", "receipt readback differs")); + } + Ok(output) +} + +#[cfg(feature = "bootstrap")] +pub fn compile_file(source: &Path, output: &Path) -> Result<(), TcsError> { + let source_text = fs::read_to_string(source) + .map_err(|error| TcsError::new("TCS-E3002", format!("cannot read source: {error}")))?; + let gir = compile(&source_text)?; + let encoded = canonical_json(&gir)?; + if let Some(parent) = output.parent() { + fs::create_dir_all(parent).map_err(|error| { + TcsError::new("TCS-E8001", format!("cannot create output: {error}")) + })?; + } + fs::write(output, encoded) + .map_err(|error| TcsError::new("TCS-E8001", format!("cannot write GIR: {error}"))) +} + +pub fn run_gir_file(gir_path: &Path, root: &Path) -> Result { + let text = fs::read_to_string(gir_path) + .map_err(|error| TcsError::new("TCS-E3002", format!("cannot read GIR: {error}")))?; + let gir: JsonValue = serde_json::from_str(&text) + .map_err(|error| TcsError::new("TCS-E2001", format!("invalid GIR JSON: {error}")))?; + run_echo_gir(&gir, root) +} diff --git a/native-runtime/tcs-gir-runtime/src/main.rs b/native-runtime/tcs-gir-runtime/src/main.rs new file mode 100644 index 000000000..4213d3580 --- /dev/null +++ b/native-runtime/tcs-gir-runtime/src/main.rs @@ -0,0 +1,32 @@ +use std::{env, fs, path::Path}; + +fn usage() -> &'static str { + "usage: tcs-gir-runtime compile-with | run " +} + +fn main() { + if let Err(error) = run() { + eprintln!("{error}"); + std::process::exit(1); + } +} + +fn run() -> Result<(), Box> { + let arguments: Vec = env::args().skip(1).collect(); + match arguments.as_slice() { + [command, compiler, source, output] if command == "compile-with" => { + let compiler: serde_json::Value = serde_json::from_str(&fs::read_to_string(compiler)?)?; + let source_text = fs::read_to_string(source)?; + let gir = tcs_gir_runtime::compile_with_compiler_gir(&compiler, &source_text)?; + fs::write(output, tcs_gir_runtime::canonical_json(&gir)?)?; + println!("TCS_RUNTIME_COMPILED {source} -> {output}"); + Ok(()) + } + [command, gir, root] if command == "run" => { + let receipt = tcs_gir_runtime::run_gir_file(Path::new(gir), Path::new(root))?; + println!("EXECUTED receipt={}", receipt.display()); + Ok(()) + } + _ => Err(usage().into()), + } +} diff --git a/native-runtime/tcs-gir-runtime/tests/stage1_runtime.rs b/native-runtime/tcs-gir-runtime/tests/stage1_runtime.rs new file mode 100644 index 000000000..c6a036739 --- /dev/null +++ b/native-runtime/tcs-gir-runtime/tests/stage1_runtime.rs @@ -0,0 +1,37 @@ +use serde_json::Value as JsonValue; +use std::{fs, path::Path}; + +fn project(relative: &str) -> std::path::PathBuf { + Path::new(env!("CARGO_MANIFEST_DIR")) + .join("../..") + .join(relative) +} + +#[test] +fn checked_in_compiler_a_continues_with_bootstrap_feature_disabled() { + let compiler_a: JsonValue = serde_json::from_str( + &fs::read_to_string(project("build/self-host/compiler-A.gir.json")) + .expect("checked-in compiler A"), + ) + .expect("compiler A JSON"); + let compiler_source = fs::read_to_string(project("language/compiler/TCS-COMPILER-STAGE1.tcs")) + .expect("compiler source"); + + let compiler_b = tcs_gir_runtime::compile_with_compiler_gir(&compiler_a, &compiler_source) + .expect("runtime executes compiler A"); + assert_eq!( + compiler_a.pointer("/identity/definition_sha256"), + compiler_b.pointer("/identity/definition_sha256") + ); + + let program_source = + fs::read_to_string(project("language/examples/ECHO-MODULE.tcs")).expect("program"); + let program = tcs_gir_runtime::compile_with_compiler_gir(&compiler_b, &program_source) + .expect("compiler B compiles program"); + let root = tempfile::tempdir().expect("runtime root"); + let receipt = tcs_gir_runtime::run_echo_gir(&program, root.path()).expect("run GIR"); + let receipt: JsonValue = + serde_json::from_str(&fs::read_to_string(receipt).expect("receipt")).expect("JSON"); + assert_eq!(receipt["native_self_hosted"], true); + assert_eq!(receipt["compiler_state"], "TCS_COMPILER_GIR_EXECUTED"); +} diff --git a/parts/HLP-PART-TCS-HOST-0001/PART.hldp b/parts/HLP-PART-TCS-HOST-0001/PART.hldp new file mode 100644 index 000000000..3a009764f --- /dev/null +++ b/parts/HLP-PART-TCS-HOST-0001/PART.hldp @@ -0,0 +1,12 @@ +schema: hololake.numbered-part/v1 +id: HLP-PART-TCS-HOST-0001 +display_name: TCS 跨平台宿主运行核 +state: MACOS_AND_LINUX_BINARY_BUILD_PASS_WINDOWS_BUILD_AND_EXECUTION_PASS +source: nativeFoundation +host_abi: ../../language/standards/TCS-HOST-ABI-v0.1.hldp +targets: + macos_aarch64: BUILD_AND_LOCAL_RUNTIME_PASS + linux_x86_64_musl: STATIC_BUILD_PASS_JD_RUNTIME_PENDING + windows_x86_64_msvc: REMOTE_BUILD_COMPILE_AND_EXECUTION_PASS +same_gir_sha256_windows_and_macos: 85934d5ae9c85b1c41763cfde9484d86f1c8508c14395e4c436e421d5261232d +native_acceptance: PENDING_JD_LINUX_AND_HOLOLAKE_SHELL_INTEGRATION diff --git a/parts/HLP-PART-TCS-SELFHOST-0001/PART.hldp b/parts/HLP-PART-TCS-SELFHOST-0001/PART.hldp index 6910020f7..68c81b68d 100644 --- a/parts/HLP-PART-TCS-SELFHOST-0001/PART.hldp +++ b/parts/HLP-PART-TCS-SELFHOST-0001/PART.hldp @@ -1,13 +1,12 @@ schema: hololake.numbered-part/v1 id: HLP-PART-TCS-SELFHOST-0001 display_name: TCS 原生自举编译器与固定点核 -state: TCS_SOURCE_DEFINED_EXECUTION_NOT_IMPLEMENTED +state: LOCAL_SELF_HOST_FIXED_POINT_PASS_CROSS_HOST_FINAL_GATE_IN_PROGRESS source: nativeFoundation compiler_source: ../../language/compiler/TCS-COMPILER-STAGE1.tcs self_host_standard: ../../language/standards/TCS-SELF-HOST-STANDARD-v0.1.hldp -gates_passed: 0 +gates_passed: 6 gates_total: 7 self_hosted: false -next: IMPLEMENT_COMPILER_DECLARATION_EXECUTION_AND_STAGE1_TO_GIR +next: DEPLOY_EXACT_GIR_RUNTIME_TO_JD_AND_VERIFY_SAME_ABI native_acceptance: PENDING - diff --git a/parts/registry.json b/parts/registry.json index f23e39c0a..f705ca6ad 100644 --- a/parts/registry.json +++ b/parts/registry.json @@ -84,7 +84,8 @@ {"id":"HLP-PART-RELEV-0001","displayName":"人类—人格体关系演化事件语法核","source":"notionMirror+guanghulabMain","status":"SOURCE_BACKED_CANDIDATE_GRAMMAR_RUNTIME_NOT_IMPLEMENTED","nativeAcceptance":"PENDING"}, {"id":"HLP-PART-TCS-LANG-0001","displayName":"TCS 统一编程语言规范核","source":"nativeFoundation","status":"DRAFT_EXECUTABLE_SUBSET_IMPLEMENTED","nativeAcceptance":"PENDING_FULL_DECLARATION_VALIDATORS_AND_SELF_HOST"}, {"id":"HLP-PART-TCS-STAGE0-0001","displayName":"TCS Stage-0 点火解析编译与最小运行核","source":"nativeFoundation","status":"FOREIGN_HOST_BOOTSTRAP_SEED_IMPLEMENTED_TESTED","nativeAcceptance":"NOT_APPLICABLE_REPLACE_AFTER_SELF_HOST"}, - {"id":"HLP-PART-TCS-SELFHOST-0001","displayName":"TCS 原生自举编译器与固定点核","source":"nativeFoundation","status":"TCS_SOURCE_DEFINED_EXECUTION_NOT_IMPLEMENTED","nativeAcceptance":"PENDING"}, + {"id":"HLP-PART-TCS-SELFHOST-0001","displayName":"TCS 原生自举编译器与固定点核","source":"nativeFoundation","status":"LOCAL_SELF_HOST_FIXED_POINT_PASS_CROSS_HOST_FINAL_GATE_IN_PROGRESS","nativeAcceptance":"PENDING_JD_LINUX"}, + {"id":"HLP-PART-TCS-HOST-0001","displayName":"TCS 跨平台宿主运行核","source":"nativeFoundation","status":"MACOS_LINUX_BUILD_PASS_WINDOWS_EXECUTION_PASS","nativeAcceptance":"PENDING_JD_LINUX_AND_HOLOLAKE_SHELL"}, {"id":"HLP-PART-0090","displayName":"共同世界投影仪捐赠件","source":"rescue","status":"DEFERRED_UNTIL_FOUNDATION_ACCEPTED","nativeAcceptance":"NOT_APPLICABLE"} ] } diff --git a/scripts/build-tcs-migration-registry.mjs b/scripts/build-tcs-migration-registry.mjs new file mode 100644 index 000000000..c1a2b4ab6 --- /dev/null +++ b/scripts/build-tcs-migration-registry.mjs @@ -0,0 +1,74 @@ +#!/usr/bin/env node +import fs from "node:fs"; +import path from "node:path"; + +const root = path.resolve(import.meta.dirname, ".."); +const registry = JSON.parse(fs.readFileSync(path.join(root, "parts/registry.json"), "utf8")); + +const phase0 = new Set([ + "HLP-PART-TCS-LANG-0001", + "HLP-PART-TCS-SELFHOST-0001", + "HLP-PART-TCS-STAGE0-0001", + "HLP-PART-GIR-0001", + "HLP-PART-REG-0001", + "HLP-PART-NQG-0001", + "HLP-PART-QA-0001", +]); +const phase2Prefixes = ["HLP-PART-AFF", "HLP-PART-MEM", "HLP-PART-REL", "HLP-PART-CX"]; + +function phase(part) { + if (phase0.has(part.id)) return "P0_LANGUAGE_RUNTIME_AND_QUALITY"; + if (part.id === "HLP-PART-0090") return "P3_SHARED_WORLD_PROJECTOR_LAST"; + if (phase2Prefixes.some((prefix) => part.id.startsWith(prefix))) { + return "P2_PERSONA_MEMORY_RELATION_AND_AFFECT"; + } + return "P1_NUMBER_CHANNEL_AGENT_KNOWLEDGE_AND_MARKET"; +} + +const entries = registry.parts.map((part, index) => { + const alreadyTcs = [ + "HLP-PART-TCS-LANG-0001", + "HLP-PART-TCS-SELFHOST-0001", + "HLP-PART-TCS-STAGE0-0001", + ].includes(part.id); + return { + order: index + 1, + part_id: part.id, + display_name_zh: part.displayName, + donor_source: part.source, + donor_state: part.status, + native_acceptance_before_migration: part.nativeAcceptance, + migration_phase: phase(part), + target_module_id: `TCS-MOD-${part.id.replace(/^HLP-PART-/, "")}`, + rewrite_rule: alreadyTcs + ? "CONTINUE_NATIVE_TCS_IMPLEMENTATION" + : "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", + host_adapter_rule: "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", + migration_state: alreadyTcs ? "ACTIVE" : "QUEUED", + acceptance_required: [ + "TCS_SOURCE_COMPILES_WITH_COMPILER_B", + "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", + "NEGATIVE_AUTHORITY_AND_PATH_TESTS_FAIL_CLOSED", + "TARGET_RUNTIME_READBACK", + "DONOR_PARITY_OR_EXPLICIT_REJECTION_RECEIPT", + ], + }; +}); + +const output = { + schema: "hololake.tcs-module-migration-registry/v1", + registry_id: "HLP-TCS-MIGRATION-REGISTRY-0001", + source_parts_registry: "parts/registry.json", + source_part_count: registry.parts.length, + rule: "NO_WHOLESALE_TRANSLITERATION_FROM_RUST_OR_TYPESCRIPT", + compiler: "TCS-COMPILER-STAGE1-0001", + target_abi: "GIR/1", + registration_is_rewrite: false, + rewrite_is_acceptance: false, + entries, +}; + +const target = path.join(root, "migration/tcs-module-migration-registry.json"); +fs.mkdirSync(path.dirname(target), { recursive: true }); +fs.writeFileSync(target, `${JSON.stringify(output, null, 2)}\n`); +console.log(`WROTE ${target} entries=${entries.length}`); From 14ffe45caa6fc01eea20d425ad11fbd7760437fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=B0=E6=9C=94?= <565183519@qq.com> Date: Fri, 21 Aug 2026 17:19:12 +0800 Subject: [PATCH 07/10] stabilize TCS compiler source identity for external acceptance --- build/self-host/compiler-A.gir.json | 8 ++++---- build/self-host/compiler-B.gir.json | 8 ++++---- language/compiler/TCS-COMPILER-STAGE1.tcs | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/build/self-host/compiler-A.gir.json b/build/self-host/compiler-A.gir.json index 8d9f38ffe..123c88ce5 100644 --- a/build/self-host/compiler-A.gir.json +++ b/build/self-host/compiler-A.gir.json @@ -2,7 +2,7 @@ "compiled_from": { "compiler_id": "TCS-STAGE0-IGNITION-0001", "compiler_state": "FOREIGN_HOST_BOOTSTRAP_SEED_NOT_SELF_HOSTED", - "source_sha256": "65856dd98a272c0e8911d64dc96c9f0b4101f6d9364eeeac3cf78c282129de3f" + "source_sha256": "d375adb7a715c93320c14f3e38a3fa10bc764493d62cfa671e5dfd2d4d3b049f" }, "compiler_definition": { "canonicalization": { @@ -17,7 +17,7 @@ }, "header": { "bootstrap_seed": "TCS-STAGE0-IGNITION-0001", - "lifecycle": "EXECUTABLE_SEMANTIC_FIXED_POINT_PROVEN_HOST_ACCEPTANCE_IN_PROGRESS", + "lifecycle": "STABLE_COMPILER_SOURCE_CANDIDATE", "name_zh": "TCS 第一代自举编译器", "output": "GIR/1", "profile": "HLDP-NP/1", @@ -241,7 +241,7 @@ }, "self_host": { "compiler_A_compiles_stage1_to": "compiler-B.gir", - "current_state": "SH01_TO_SH06_LOCAL_PASS_SH07_TARGET_READBACK_IN_PROGRESS", + "current_state": "READ_EXTERNAL_SELF_HOST_ACCEPTANCE_RECEIPT", "fixed_point": "SEMANTIC_SHA256_A_EQUALS_B", "minimum_runnable_module_test": "REQUIRED", "negative_corpus_test": "REQUIRED", @@ -329,7 +329,7 @@ "execution_abi": "TCS-COMPILER-GIR-EXEC/1", "identity": { "compiler_id": "TCS-COMPILER-STAGE1-0001", - "definition_sha256": "c7da830afd1dbf4fdda223226f091f17a5f8a1ee9c7c8e6424d1805a001d6e9a", + "definition_sha256": "c2bf0e4e93f9952daf661628aa7b17891718c53b9fbb5e77636f5f40812ff9f6", "language_version": "0.1" }, "native_self_hosted": false, diff --git a/build/self-host/compiler-B.gir.json b/build/self-host/compiler-B.gir.json index 36e51323c..348a6b630 100644 --- a/build/self-host/compiler-B.gir.json +++ b/build/self-host/compiler-B.gir.json @@ -2,7 +2,7 @@ "compiled_from": { "compiler_id": "TCS-COMPILER-STAGE1-0001", "compiler_state": "TCS_COMPILER_GIR_EXECUTED", - "source_sha256": "65856dd98a272c0e8911d64dc96c9f0b4101f6d9364eeeac3cf78c282129de3f" + "source_sha256": "d375adb7a715c93320c14f3e38a3fa10bc764493d62cfa671e5dfd2d4d3b049f" }, "compiler_definition": { "canonicalization": { @@ -17,7 +17,7 @@ }, "header": { "bootstrap_seed": "TCS-STAGE0-IGNITION-0001", - "lifecycle": "EXECUTABLE_SEMANTIC_FIXED_POINT_PROVEN_HOST_ACCEPTANCE_IN_PROGRESS", + "lifecycle": "STABLE_COMPILER_SOURCE_CANDIDATE", "name_zh": "TCS 第一代自举编译器", "output": "GIR/1", "profile": "HLDP-NP/1", @@ -241,7 +241,7 @@ }, "self_host": { "compiler_A_compiles_stage1_to": "compiler-B.gir", - "current_state": "SH01_TO_SH06_LOCAL_PASS_SH07_TARGET_READBACK_IN_PROGRESS", + "current_state": "READ_EXTERNAL_SELF_HOST_ACCEPTANCE_RECEIPT", "fixed_point": "SEMANTIC_SHA256_A_EQUALS_B", "minimum_runnable_module_test": "REQUIRED", "negative_corpus_test": "REQUIRED", @@ -329,7 +329,7 @@ "execution_abi": "TCS-COMPILER-GIR-EXEC/1", "identity": { "compiler_id": "TCS-COMPILER-STAGE1-0001", - "definition_sha256": "c7da830afd1dbf4fdda223226f091f17a5f8a1ee9c7c8e6424d1805a001d6e9a", + "definition_sha256": "c2bf0e4e93f9952daf661628aa7b17891718c53b9fbb5e77636f5f40812ff9f6", "language_version": "0.1" }, "native_self_hosted": true, diff --git a/language/compiler/TCS-COMPILER-STAGE1.tcs b/language/compiler/TCS-COMPILER-STAGE1.tcs index 4bbfb7673..ad7c5f554 100644 --- a/language/compiler/TCS-COMPILER-STAGE1.tcs +++ b/language/compiler/TCS-COMPILER-STAGE1.tcs @@ -6,7 +6,7 @@ COMPILER TCS-COMPILER-STAGE1-0001 { name_zh = "TCS 第一代自举编译器"; version = "0.1.0"; profile = "HLDP-NP/1"; - lifecycle = "EXECUTABLE_SEMANTIC_FIXED_POINT_PROVEN_HOST_ACCEPTANCE_IN_PROGRESS"; + lifecycle = "STABLE_COMPILER_SOURCE_CANDIDATE"; bootstrap_seed = "TCS-STAGE0-IGNITION-0001"; output = "GIR/1"; } @@ -96,6 +96,6 @@ COMPILER TCS-COMPILER-STAGE1-0001 { standard_library_test = "REQUIRED"; negative_corpus_test = "REQUIRED"; minimum_runnable_module_test = "REQUIRED"; - current_state = "SH01_TO_SH06_LOCAL_PASS_SH07_TARGET_READBACK_IN_PROGRESS"; + current_state = "READ_EXTERNAL_SELF_HOST_ACCEPTANCE_RECEIPT"; } } From 6e89b82d8847313fb260f423dc045c7e1c838d30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=B0=E6=9C=94?= <565183519@qq.com> Date: Fri, 21 Aug 2026 17:25:09 +0800 Subject: [PATCH 08/10] make TCS compiler GIR control validation and lowering --- bootstrap/tcs-stage0/tests/stage0.rs | 21 +++ build/self-host/compiler-A.gir.json | 46 +++++- build/self-host/compiler-B.gir.json | 46 +++++- language/compiler/TCS-COMPILER-STAGE1.tcs | 6 + native-runtime/tcs-gir-runtime/src/lib.rs | 169 ++++++++++++++++++++-- 5 files changed, 271 insertions(+), 17 deletions(-) diff --git a/bootstrap/tcs-stage0/tests/stage0.rs b/bootstrap/tcs-stage0/tests/stage0.rs index abadb3701..d185ae12e 100644 --- a/bootstrap/tcs-stage0/tests/stage0.rs +++ b/bootstrap/tcs-stage0/tests/stage0.rs @@ -142,3 +142,24 @@ fn compiler_gir_tampering_and_negative_program_fail_closed() { .expect_err("unregistered operation must still fail through compiler GIR"); assert_eq!(error.code, "TCS-E2101"); } + +#[test] +fn tcs_compiler_source_controls_operation_policy_and_gir_lowering() { + let compiler_source = compiler_source() + .replace( + "registered_operations = [\"CORE.ECHO\"]", + "registered_operations = [\"ABSORB\"]", + ) + .replace("to = \"exact_target\"", "to = \"policy_selected_target\""); + let compiler = tcs_stage0::bootstrap_compiler(&compiler_source).expect("policy compiler GIR"); + + let absorb_program = example().replace("CORE.ECHO", "ABSORB"); + let gir = tcs_stage0::compile_with_compiler_gir(&compiler, &absorb_program) + .expect("TCS source policy permits ABSORB at compile time"); + assert!(gir.get("policy_selected_target").is_some()); + assert!(gir.get("exact_target").is_none()); + + let error = tcs_stage0::compile_with_compiler_gir(&compiler, &example()) + .expect_err("TCS source policy rejects operation removed from its registry"); + assert_eq!(error.code, "TCS-E2101"); +} diff --git a/build/self-host/compiler-A.gir.json b/build/self-host/compiler-A.gir.json index 123c88ce5..aacee8933 100644 --- a/build/self-host/compiler-A.gir.json +++ b/build/self-host/compiler-A.gir.json @@ -2,7 +2,7 @@ "compiled_from": { "compiler_id": "TCS-STAGE0-IGNITION-0001", "compiler_state": "FOREIGN_HOST_BOOTSTRAP_SEED_NOT_SELF_HOSTED", - "source_sha256": "d375adb7a715c93320c14f3e38a3fa10bc764493d62cfa671e5dfd2d4d3b049f" + "source_sha256": "49259d15c57f3a725a7507ae746c372cebf9b3fc58dba580f7c41456d2344f73" }, "compiler_definition": { "canonicalization": { @@ -116,6 +116,26 @@ "from": "all", "to": "unresolved_natural_language", "transform": "MUST_BE_FALSE" + }, + "G013": { + "from": "inputs", + "to": "inputs", + "transform": "COPY_RESOLVED_VALUES" + }, + "G014": { + "from": "outputs", + "to": "outputs", + "transform": "COPY_RESOLVED_VALUES" + }, + "G015": { + "from": "conditions", + "to": "conditions", + "transform": "COPY_RESOLVED_CONDITIONS" + }, + "G016": { + "from": "failure", + "to": "failure_plan", + "transform": "COPY_EXPLICIT_FAILURE_SEMANTICS" } }, "output_contract": { @@ -237,7 +257,27 @@ "V010": { "error": "TCS-E4001", "rule": "RELATION_AND_EMOTION_DO_NOT_GRANT_AUTHORITY" - } + }, + "registered_operations": [ + "CORE.ECHO" + ], + "required_sections": [ + "header", + "source", + "subject", + "target", + "inputs", + "outputs", + "conditions", + "actions", + "authority", + "resources", + "failure", + "stop", + "cleanup", + "rollback", + "receipt" + ] }, "self_host": { "compiler_A_compiles_stage1_to": "compiler-B.gir", @@ -329,7 +369,7 @@ "execution_abi": "TCS-COMPILER-GIR-EXEC/1", "identity": { "compiler_id": "TCS-COMPILER-STAGE1-0001", - "definition_sha256": "c2bf0e4e93f9952daf661628aa7b17891718c53b9fbb5e77636f5f40812ff9f6", + "definition_sha256": "3e27046ef79f33c1f60705d6774773265df30e2299c390673ae9b8029c8235b2", "language_version": "0.1" }, "native_self_hosted": false, diff --git a/build/self-host/compiler-B.gir.json b/build/self-host/compiler-B.gir.json index 348a6b630..3ad79e5d0 100644 --- a/build/self-host/compiler-B.gir.json +++ b/build/self-host/compiler-B.gir.json @@ -2,7 +2,7 @@ "compiled_from": { "compiler_id": "TCS-COMPILER-STAGE1-0001", "compiler_state": "TCS_COMPILER_GIR_EXECUTED", - "source_sha256": "d375adb7a715c93320c14f3e38a3fa10bc764493d62cfa671e5dfd2d4d3b049f" + "source_sha256": "49259d15c57f3a725a7507ae746c372cebf9b3fc58dba580f7c41456d2344f73" }, "compiler_definition": { "canonicalization": { @@ -116,6 +116,26 @@ "from": "all", "to": "unresolved_natural_language", "transform": "MUST_BE_FALSE" + }, + "G013": { + "from": "inputs", + "to": "inputs", + "transform": "COPY_RESOLVED_VALUES" + }, + "G014": { + "from": "outputs", + "to": "outputs", + "transform": "COPY_RESOLVED_VALUES" + }, + "G015": { + "from": "conditions", + "to": "conditions", + "transform": "COPY_RESOLVED_CONDITIONS" + }, + "G016": { + "from": "failure", + "to": "failure_plan", + "transform": "COPY_EXPLICIT_FAILURE_SEMANTICS" } }, "output_contract": { @@ -237,7 +257,27 @@ "V010": { "error": "TCS-E4001", "rule": "RELATION_AND_EMOTION_DO_NOT_GRANT_AUTHORITY" - } + }, + "registered_operations": [ + "CORE.ECHO" + ], + "required_sections": [ + "header", + "source", + "subject", + "target", + "inputs", + "outputs", + "conditions", + "actions", + "authority", + "resources", + "failure", + "stop", + "cleanup", + "rollback", + "receipt" + ] }, "self_host": { "compiler_A_compiles_stage1_to": "compiler-B.gir", @@ -329,7 +369,7 @@ "execution_abi": "TCS-COMPILER-GIR-EXEC/1", "identity": { "compiler_id": "TCS-COMPILER-STAGE1-0001", - "definition_sha256": "c2bf0e4e93f9952daf661628aa7b17891718c53b9fbb5e77636f5f40812ff9f6", + "definition_sha256": "3e27046ef79f33c1f60705d6774773265df30e2299c390673ae9b8029c8235b2", "language_version": "0.1" }, "native_self_hosted": true, diff --git a/language/compiler/TCS-COMPILER-STAGE1.tcs b/language/compiler/TCS-COMPILER-STAGE1.tcs index ad7c5f554..b2c8c35a6 100644 --- a/language/compiler/TCS-COMPILER-STAGE1.tcs +++ b/language/compiler/TCS-COMPILER-STAGE1.tcs @@ -45,6 +45,8 @@ COMPILER TCS-COMPILER-STAGE1-0001 { floating_point = "FORBIDDEN_V0_1"; } program_validation { + required_sections = ["header", "source", "subject", "target", "inputs", "outputs", "conditions", "actions", "authority", "resources", "failure", "stop", "cleanup", "rollback", "receipt"]; + registered_operations = ["CORE.ECHO"]; V001 { rule = "EXACT_REQUIRED_SECTIONS"; standard = "TCS-FIELD-STANDARD-0001"; error_missing = "TCS-E1004"; error_unknown = "TCS-E1003"; } V002 { rule = "CLOSED_FIELDS_PER_SECTION"; error = "TCS-E1003"; } V003 { rule = "ALL_INPUT_OUTPUT_AND_ACTION_REFS_RESOLVE"; error = "TCS-E2002"; } @@ -69,6 +71,10 @@ COMPILER TCS-COMPILER-STAGE1-0001 { G010 { from = "rollback"; to = "rollback_plan"; transform = "COPY_ACTIONS_AND_VERIFICATION"; } G011 { from = "receipt"; to = "receipt_plan"; transform = "BIND_MACHINE_AND_HUMAN_OUTPUTS"; } G012 { from = "all"; to = "unresolved_natural_language"; transform = "MUST_BE_FALSE"; } + G013 { from = "inputs"; to = "inputs"; transform = "COPY_RESOLVED_VALUES"; } + G014 { from = "outputs"; to = "outputs"; transform = "COPY_RESOLVED_VALUES"; } + G015 { from = "conditions"; to = "conditions"; transform = "COPY_RESOLVED_CONDITIONS"; } + G016 { from = "failure"; to = "failure_plan"; transform = "COPY_EXPLICIT_FAILURE_SEMANTICS"; } } canonicalization { object_keys = "UTF8_BYTE_ORDER"; diff --git a/native-runtime/tcs-gir-runtime/src/lib.rs b/native-runtime/tcs-gir-runtime/src/lib.rs index d8da2f1c0..49105e46e 100644 --- a/native-runtime/tcs-gir-runtime/src/lib.rs +++ b/native-runtime/tcs-gir-runtime/src/lib.rs @@ -2,7 +2,7 @@ use serde::{Deserialize, Serialize}; use serde_json::{json, Value as JsonValue}; use sha2::{Digest, Sha256}; use std::{ - collections::BTreeMap, + collections::{BTreeMap, BTreeSet}, fs, path::{Component, Path, PathBuf}, }; @@ -608,13 +608,26 @@ pub fn validate_program(document: &TcsDocument) -> Result<(), TcsError> { "Stage-0 executable subset accepts PROGRAM only", )); } - for section in PROGRAM_SECTIONS { + let sections = PROGRAM_SECTIONS + .iter() + .map(|value| (*value).to_owned()) + .collect::>(); + let operations = BTreeSet::from(["CORE.ECHO".to_owned()]); + validate_program_contract(document, §ions, &operations) +} + +fn validate_program_contract( + document: &TcsDocument, + sections: &[String], + registered_operations: &BTreeSet, +) -> Result<(), TcsError> { + for section in sections { document.body.get(section).ok_or_else(|| { TcsError::new("TCS-E1004", format!("required section {section} missing")) })?; } for section in document.body.keys() { - if !PROGRAM_SECTIONS.contains(§ion.as_str()) { + if !sections.contains(section) { return Err(TcsError::new( "TCS-E1003", format!("unknown PROGRAM section {section}"), @@ -647,7 +660,7 @@ pub fn validate_program(document: &TcsDocument) -> Result<(), TcsError> { for (action_id, action) in actions { let action = action.object(action_id)?; let operation = required_text(action, "operation")?; - if operation != "CORE.ECHO" { + if !registered_operations.contains(operation) { return Err(TcsError::new( "TCS-E2101", format!("unregistered TCS operation {operation}"), @@ -665,6 +678,99 @@ pub fn validate_program(document: &TcsDocument) -> Result<(), TcsError> { Ok(()) } +#[derive(Debug)] +struct CompilerPolicy { + required_sections: Vec, + registered_operations: BTreeSet, + lowerings: BTreeMap, + output_schema: String, +} + +fn compiler_policy(compiler: &JsonValue) -> Result { + fn text_array(value: &JsonValue, pointer: &str) -> Result, TcsError> { + value + .pointer(pointer) + .and_then(JsonValue::as_array) + .ok_or_else(|| TcsError::new("TCS-E3002", format!("missing array {pointer}")))? + .iter() + .map(|item| { + item.as_str().map(str::to_owned).ok_or_else(|| { + TcsError::new("TCS-E3002", format!("non-text item in {pointer}")) + }) + }) + .collect() + } + + let required_sections = text_array( + compiler, + "/compiler_definition/program_validation/required_sections", + )?; + let registered_operations = text_array( + compiler, + "/compiler_definition/program_validation/registered_operations", + )? + .into_iter() + .collect::>(); + if required_sections.is_empty() || registered_operations.is_empty() { + return Err(TcsError::new( + "TCS-E3002", + "compiler policy must not be empty", + )); + } + let lowering_rules = compiler + .pointer("/compiler_definition/lowering_to_gir") + .and_then(JsonValue::as_object) + .ok_or_else(|| TcsError::new("TCS-E3002", "lowering rules missing"))?; + let mut lowerings = BTreeMap::new(); + for rule in lowering_rules.values() { + let Some(from) = rule.get("from").and_then(JsonValue::as_str) else { + continue; + }; + let to = rule + .get("to") + .and_then(JsonValue::as_str) + .ok_or_else(|| TcsError::new("TCS-E3002", "lowering target missing"))?; + if document_section(from) && lowerings.insert(from.to_owned(), to.to_owned()).is_some() { + return Err(TcsError::new("TCS-E3002", "duplicate lowering source")); + } + } + let required_lowerings = [ + "subject", + "target", + "inputs", + "outputs", + "conditions", + "actions", + "authority", + "resources", + "failure", + "stop", + "cleanup", + "rollback", + "receipt", + ]; + if required_lowerings + .iter() + .any(|field| !lowerings.contains_key(*field)) + { + return Err(TcsError::new( + "TCS-E3002", + "compiler lowering map is incomplete", + )); + } + Ok(CompilerPolicy { + required_sections, + registered_operations, + lowerings, + output_schema: json_text(compiler, "/compiler_definition/output_contract/schema")? + .to_owned(), + }) +} + +fn document_section(value: &str) -> bool { + !matches!(value, "header" | "source" | "all") +} + fn validate_exact_sections(document: &TcsDocument, expected: &[&str]) -> Result<(), TcsError> { for section in expected { document.body.get(*section).ok_or_else(|| { @@ -759,6 +865,7 @@ pub fn sha256_hex(bytes: impl AsRef<[u8]>) -> String { format!("{:x}", Sha256::digest(bytes.as_ref())) } +#[cfg(feature = "bootstrap")] fn lower_program( document: &TcsDocument, source_sha256: &str, @@ -798,6 +905,44 @@ fn lower_program( })) } +fn lower_program_with_policy( + document: &TcsDocument, + source_sha256: &str, + compiler_id: &str, + policy: &CompilerPolicy, +) -> Result { + let mut gir = json!({ + "schema": policy.output_schema, + "identity": { + "gir_id": format!("GIR-{}", document.declaration_id), + "program_id": document.declaration_id, + "language_version": document.language_version, + }, + "compiled_from": { + "source_sha256": source_sha256, + "compiler_id": compiler_id, + "compiler_state": "TCS_COMPILER_GIR_EXECUTED", + }, + "unresolved_natural_language": false, + "native_self_hosted": true, + }); + let object = gir + .as_object_mut() + .ok_or_else(|| TcsError::new("TCS-E8001", "GIR root must be object"))?; + for (from, to) in &policy.lowerings { + let value = document + .body + .get(from) + .ok_or_else(|| TcsError::new("TCS-E3002", format!("lowering source {from} missing")))?; + object.insert( + to.clone(), + serde_json::to_value(value) + .map_err(|error| TcsError::new("TCS-E8001", error.to_string()))?, + ); + } + Ok(gir) +} + fn compiler_definition_sha256(document: &TcsDocument) -> Result { let definition = serde_json::to_vec(&document.body) .map_err(|error| TcsError::new("TCS-E8001", error.to_string()))?; @@ -922,18 +1067,20 @@ pub fn compile_with_compiler_gir( source: &str, ) -> Result { let (compiler_id, _) = verify_compiler_gir(compiler)?; + let policy = compiler_policy(compiler)?; let document = parse(source)?; let source_sha256 = sha256_hex(source.as_bytes()); match document.declaration_kind.as_str() { "PROGRAM" => { - validate_program(&document)?; - lower_program( + if document.language_version != "0.1" { + return Err(TcsError::new("TCS-E2102", "unsupported TCS version")); + } + validate_program_contract( &document, - &source_sha256, - compiler_id, - "TCS_COMPILER_GIR_EXECUTED", - true, - ) + &policy.required_sections, + &policy.registered_operations, + )?; + lower_program_with_policy(&document, &source_sha256, compiler_id, &policy) } "COMPILER" => { validate_compiler(&document)?; From 2dc560d5670be583c5f761e20d757fb12d2e8b63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=B0=E6=9C=94?= <565183519@qq.com> Date: Fri, 21 Aug 2026 17:32:11 +0800 Subject: [PATCH 09/10] record TCS self-host and cross-platform acceptance --- ...60821-tcs-selfhost-crossplatform-pass.hldp | 17 +++++++++ broadcast-tower/module-registry.json | 6 ++++ .../spec/TCS-LANGUAGE-SPECIFICATION-v0.1.md | 4 +-- .../TCS-SELF-HOST-STANDARD-v0.1.hldp | 13 +++++-- migration/tcs-module-migration-registry.json | 8 ++--- parts/HLP-PART-TCS-HOST-0001/PART.hldp | 6 ++-- parts/HLP-PART-TCS-SELFHOST-0001/PART.hldp | 10 +++--- parts/registry.json | 4 +-- ...ERIFY-SELFHOST-CROSSPLATFORM-20260821.hldp | 36 +++++++++++++++++++ 9 files changed, 85 insertions(+), 19 deletions(-) create mode 100644 broadcast-tower/broadcasts/20260821-tcs-selfhost-crossplatform-pass.hldp create mode 100644 receipts/TCS-DEV-VERIFY-SELFHOST-CROSSPLATFORM-20260821.hldp diff --git a/broadcast-tower/broadcasts/20260821-tcs-selfhost-crossplatform-pass.hldp b/broadcast-tower/broadcasts/20260821-tcs-selfhost-crossplatform-pass.hldp new file mode 100644 index 000000000..bad241102 --- /dev/null +++ b/broadcast-tower/broadcasts/20260821-tcs-selfhost-crossplatform-pass.hldp @@ -0,0 +1,17 @@ +schema: hololake.module-registry-broadcast/v1 +id: HLP-MODULE-BROADCAST-20260821-0005 +display_name: TCS 原生自举与三宿主统一 GIR 验收广播 +channel_id: ICE-CH-ZC001 +scope: LOCAL_FOUNDATION_AND_JD_ACCEPTANCE +state: REGISTERED_NOT_PUBLICLY_PUBLISHED +parts: + - HLP-PART-TCS-SELFHOST-0001 + - HLP-PART-TCS-HOST-0001 +claims: + compiler_a_to_b_semantic_fixed_point: true + compiler_gir_rules_control_validation_and_lowering: true + stage0_feature_disabled_continuation: true + macos_linux_windows_same_gir_sha256: 85934d5ae9c85b1c41763cfde9484d86f1c8508c14395e4c436e421d5261232d + cross_host_execution_receipt_sha256: 125995a4f9aa858be7fa337fcfca40560389b3f2ce4c32bd4c425985a3d2e2ba + all_legacy_modules_rewritten: false + hololake_shell_integrated: false diff --git a/broadcast-tower/module-registry.json b/broadcast-tower/module-registry.json index fcf37d2dc..d61d34bd1 100644 --- a/broadcast-tower/module-registry.json +++ b/broadcast-tower/module-registry.json @@ -31,6 +31,12 @@ "displayName": "TCS 统一语言规范、Stage-0 点火链与自举边界广播", "path": "broadcasts/20260821-tcs-language-stage0-and-selfhost.hldp", "state": "LOCAL_ONLY_STAGE0_EXECUTABLE_SELFHOST_PENDING" + }, + { + "id": "HLP-MODULE-BROADCAST-20260821-0005", + "displayName": "TCS 原生自举与三宿主统一 GIR 验收广播", + "path": "broadcasts/20260821-tcs-selfhost-crossplatform-pass.hldp", + "state": "LOCAL_AND_JD_ACCEPTED_NOT_PUBLICLY_PUBLISHED" } ] } diff --git a/language/spec/TCS-LANGUAGE-SPECIFICATION-v0.1.md b/language/spec/TCS-LANGUAGE-SPECIFICATION-v0.1.md index c8f889a20..867914f60 100644 --- a/language/spec/TCS-LANGUAGE-SPECIFICATION-v0.1.md +++ b/language/spec/TCS-LANGUAGE-SPECIFICATION-v0.1.md @@ -257,7 +257,7 @@ syntax_and_field_standard: DRAFT_V0_1 stage0_parser_compiler: REPLACEABLE_BOOTSTRAP_SEED_PASS gir_module_loader: PORTABLE_MINIMUM_RUNTIME_PASS tcs_stage1_compiler: EXECUTABLE_COMPILER_GIR_PASS -self_compile_fixed_point: LOCAL_PASS_CROSS_HOST_FINAL_GATE_IN_PROGRESS +self_compile_fixed_point: RULE_DRIVEN_CROSS_HOST_PASS_100 jd_final_native_master: LIVE_READBACK_PASS_100 -hololake_tcs_runtime_integration: MACOS_STANDALONE_RUNTIME_PASS_SHELL_INTEGRATION_PENDING +hololake_tcs_runtime_integration: MACOS_STANDALONE_ABI_PASS_SHELL_INTEGRATION_PENDING ``` diff --git a/language/standards/TCS-SELF-HOST-STANDARD-v0.1.hldp b/language/standards/TCS-SELF-HOST-STANDARD-v0.1.hldp index 5e7ae7c54..19a9e1fd8 100644 --- a/language/standards/TCS-SELF-HOST-STANDARD-v0.1.hldp +++ b/language/standards/TCS-SELF-HOST-STANDARD-v0.1.hldp @@ -1,7 +1,7 @@ schema: tcs.self-host-standard/v1 id: TCS-SELF-HOST-STANDARD-0001 version: 0.1.0 -state: LOCAL_SELF_HOST_PASS_CROSS_HOST_FINAL_GATE_IN_PROGRESS +state: SELF_HOSTED_RULE_DRIVEN_CROSS_HOST_PASS_100 compiler_source: language/compiler/TCS-COMPILER-STAGE1.tcs gates: - id: SH-01 @@ -28,8 +28,8 @@ current: SH-04: PASS_100 SH-05: PASS_100 SH-06: PASS_100 - SH-07: FAIL_0 - aggregate: FAIL_0 + SH-07: PASS_100 + aggregate: PASS_100 evidence: compiler_a: build/self-host/compiler-A.gir.json compiler_b: build/self-host/compiler-B.gir.json @@ -38,3 +38,10 @@ evidence: runnable_module: build/self-host/ECHO-PACKAGE.module.gir.json stage0_disabled_test: native-runtime/tcs-gir-runtime/tests/stage1_runtime.rs negative_corpus: language/tests/negative/UNREGISTERED-OPERATION.tcs + rule_control_test: bootstrap/tcs-stage0/tests/stage0.rs + macos_runtime_sha256: 28d8029457079228a6f1b49f24c16364c65e48a9036116e9dfbeca6b409f737f + linux_runtime_sha256: 956b42a05c030439347b521095e5c116c050636ea9d08376c550ec2d3af8237d + windows_runtime_sha256: 7fa6b0213530c708d49c36deea79799d2576411f60c6ebf1ff8b5d1e29aac869 + cross_host_gir_sha256: 85934d5ae9c85b1c41763cfde9484d86f1c8508c14395e4c436e421d5261232d + cross_host_execution_receipt_sha256: 125995a4f9aa858be7fa337fcfca40560389b3f2ce4c32bd4c425985a3d2e2ba + jd_server_receipt_sha256: e1e14d97f057ea619d1a34454900cd21ce2ead213c062cdbe14d912efcbdae8f diff --git a/migration/tcs-module-migration-registry.json b/migration/tcs-module-migration-registry.json index 5c251002e..1d5d7e368 100644 --- a/migration/tcs-module-migration-registry.json +++ b/migration/tcs-module-migration-registry.json @@ -814,8 +814,8 @@ "part_id": "HLP-PART-TCS-SELFHOST-0001", "display_name_zh": "TCS 原生自举编译器与固定点核", "donor_source": "nativeFoundation", - "donor_state": "LOCAL_SELF_HOST_FIXED_POINT_PASS_CROSS_HOST_FINAL_GATE_IN_PROGRESS", - "native_acceptance_before_migration": "PENDING_JD_LINUX", + "donor_state": "SELF_HOSTED_RULE_DRIVEN_CROSS_HOST_PASS_100", + "native_acceptance_before_migration": "PASS_100", "migration_phase": "P0_LANGUAGE_RUNTIME_AND_QUALITY", "target_module_id": "TCS-MOD-TCS-SELFHOST-0001", "rewrite_rule": "CONTINUE_NATIVE_TCS_IMPLEMENTATION", @@ -834,8 +834,8 @@ "part_id": "HLP-PART-TCS-HOST-0001", "display_name_zh": "TCS 跨平台宿主运行核", "donor_source": "nativeFoundation", - "donor_state": "MACOS_LINUX_BUILD_PASS_WINDOWS_EXECUTION_PASS", - "native_acceptance_before_migration": "PENDING_JD_LINUX_AND_HOLOLAKE_SHELL", + "donor_state": "MACOS_WINDOWS_AND_JD_GUANGHU_OS_EXECUTION_PASS", + "native_acceptance_before_migration": "CROSS_HOST_ABI_PASS_HOLOLAKE_SHELL_SEPARATE", "migration_phase": "P1_NUMBER_CHANNEL_AGENT_KNOWLEDGE_AND_MARKET", "target_module_id": "TCS-MOD-TCS-HOST-0001", "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", diff --git a/parts/HLP-PART-TCS-HOST-0001/PART.hldp b/parts/HLP-PART-TCS-HOST-0001/PART.hldp index 3a009764f..9ae73beae 100644 --- a/parts/HLP-PART-TCS-HOST-0001/PART.hldp +++ b/parts/HLP-PART-TCS-HOST-0001/PART.hldp @@ -1,12 +1,12 @@ schema: hololake.numbered-part/v1 id: HLP-PART-TCS-HOST-0001 display_name: TCS 跨平台宿主运行核 -state: MACOS_AND_LINUX_BINARY_BUILD_PASS_WINDOWS_BUILD_AND_EXECUTION_PASS +state: MACOS_WINDOWS_AND_JD_GUANGHU_OS_RULE_DRIVEN_EXECUTION_PASS source: nativeFoundation host_abi: ../../language/standards/TCS-HOST-ABI-v0.1.hldp targets: macos_aarch64: BUILD_AND_LOCAL_RUNTIME_PASS - linux_x86_64_musl: STATIC_BUILD_PASS_JD_RUNTIME_PENDING + linux_x86_64_musl: JD_GUANGHU_OS_EXECUTION_AND_READBACK_PASS windows_x86_64_msvc: REMOTE_BUILD_COMPILE_AND_EXECUTION_PASS same_gir_sha256_windows_and_macos: 85934d5ae9c85b1c41763cfde9484d86f1c8508c14395e4c436e421d5261232d -native_acceptance: PENDING_JD_LINUX_AND_HOLOLAKE_SHELL_INTEGRATION +native_acceptance: CROSS_HOST_ABI_PASS_HOLOLAKE_SHELL_INTEGRATION_SEPARATE diff --git a/parts/HLP-PART-TCS-SELFHOST-0001/PART.hldp b/parts/HLP-PART-TCS-SELFHOST-0001/PART.hldp index 68c81b68d..031d60e35 100644 --- a/parts/HLP-PART-TCS-SELFHOST-0001/PART.hldp +++ b/parts/HLP-PART-TCS-SELFHOST-0001/PART.hldp @@ -1,12 +1,12 @@ schema: hololake.numbered-part/v1 id: HLP-PART-TCS-SELFHOST-0001 display_name: TCS 原生自举编译器与固定点核 -state: LOCAL_SELF_HOST_FIXED_POINT_PASS_CROSS_HOST_FINAL_GATE_IN_PROGRESS +state: SELF_HOSTED_RULE_DRIVEN_CROSS_HOST_PASS_100 source: nativeFoundation compiler_source: ../../language/compiler/TCS-COMPILER-STAGE1.tcs self_host_standard: ../../language/standards/TCS-SELF-HOST-STANDARD-v0.1.hldp -gates_passed: 6 +gates_passed: 7 gates_total: 7 -self_hosted: false -next: DEPLOY_EXACT_GIR_RUNTIME_TO_JD_AND_VERIFY_SAME_ABI -native_acceptance: PENDING +self_hosted: true +next: MIGRATE_NUMBERED_PROTOCOL_AND_MODULE_REGISTRY_TO_TCS +native_acceptance: PASS_100 diff --git a/parts/registry.json b/parts/registry.json index f705ca6ad..796d34390 100644 --- a/parts/registry.json +++ b/parts/registry.json @@ -84,8 +84,8 @@ {"id":"HLP-PART-RELEV-0001","displayName":"人类—人格体关系演化事件语法核","source":"notionMirror+guanghulabMain","status":"SOURCE_BACKED_CANDIDATE_GRAMMAR_RUNTIME_NOT_IMPLEMENTED","nativeAcceptance":"PENDING"}, {"id":"HLP-PART-TCS-LANG-0001","displayName":"TCS 统一编程语言规范核","source":"nativeFoundation","status":"DRAFT_EXECUTABLE_SUBSET_IMPLEMENTED","nativeAcceptance":"PENDING_FULL_DECLARATION_VALIDATORS_AND_SELF_HOST"}, {"id":"HLP-PART-TCS-STAGE0-0001","displayName":"TCS Stage-0 点火解析编译与最小运行核","source":"nativeFoundation","status":"FOREIGN_HOST_BOOTSTRAP_SEED_IMPLEMENTED_TESTED","nativeAcceptance":"NOT_APPLICABLE_REPLACE_AFTER_SELF_HOST"}, - {"id":"HLP-PART-TCS-SELFHOST-0001","displayName":"TCS 原生自举编译器与固定点核","source":"nativeFoundation","status":"LOCAL_SELF_HOST_FIXED_POINT_PASS_CROSS_HOST_FINAL_GATE_IN_PROGRESS","nativeAcceptance":"PENDING_JD_LINUX"}, - {"id":"HLP-PART-TCS-HOST-0001","displayName":"TCS 跨平台宿主运行核","source":"nativeFoundation","status":"MACOS_LINUX_BUILD_PASS_WINDOWS_EXECUTION_PASS","nativeAcceptance":"PENDING_JD_LINUX_AND_HOLOLAKE_SHELL"}, + {"id":"HLP-PART-TCS-SELFHOST-0001","displayName":"TCS 原生自举编译器与固定点核","source":"nativeFoundation","status":"SELF_HOSTED_RULE_DRIVEN_CROSS_HOST_PASS_100","nativeAcceptance":"PASS_100"}, + {"id":"HLP-PART-TCS-HOST-0001","displayName":"TCS 跨平台宿主运行核","source":"nativeFoundation","status":"MACOS_WINDOWS_AND_JD_GUANGHU_OS_EXECUTION_PASS","nativeAcceptance":"CROSS_HOST_ABI_PASS_HOLOLAKE_SHELL_SEPARATE"}, {"id":"HLP-PART-0090","displayName":"共同世界投影仪捐赠件","source":"rescue","status":"DEFERRED_UNTIL_FOUNDATION_ACCEPTED","nativeAcceptance":"NOT_APPLICABLE"} ] } diff --git a/receipts/TCS-DEV-VERIFY-SELFHOST-CROSSPLATFORM-20260821.hldp b/receipts/TCS-DEV-VERIFY-SELFHOST-CROSSPLATFORM-20260821.hldp new file mode 100644 index 000000000..255c34ae5 --- /dev/null +++ b/receipts/TCS-DEV-VERIFY-SELFHOST-CROSSPLATFORM-20260821.hldp @@ -0,0 +1,36 @@ +schema: tcs.dev-verify-receipt/v1 +receipt_id: TCS-DEV-VERIFY-SELFHOST-CROSSPLATFORM-20260821 +request_id: BINGSHUO-20260821-TCS-SELFHOST-MACOS-LINUX-WINDOWS-AND-MODULE-REWRITE +source_commit: 6e89b82d8847313fb260f423dc045c7e1c838d30 +op: PROVE_RULE_DRIVEN_TCS_COMPILER_SELF_HOST_AND_CROSS_HOST_GIR_ABI +verify: + stage0_tests: PASS_8_OF_8 + bootstrap_disabled_runtime_tests: PASS_1_OF_1 + compiler_a_definition_sha256: 3e27046ef79f33c1f60705d6774773265df30e2299c390673ae9b8029c8235b2 + compiler_b_definition_sha256: 3e27046ef79f33c1f60705d6774773265df30e2299c390673ae9b8029c8235b2 + semantic_fixed_point: PASS_100 + compiler_source_controls_operation_policy: PASS_100 + compiler_source_controls_gir_lowering: PASS_100 + standard_library_compile: PASS_100 + negative_corpus_fail_closed: PASS_100 + macos_aarch64_runtime: PASS_100 + windows_x86_64_runtime_compile_and_execute: PASS_100 + jd_guanghu_os_linux_x86_64_compile_and_execute: PASS_100 +proof: + compiler_a_sha256: 52aa70113f9c481e64a042d69bef9d5062372fe8d0233e70e24ae17f1448dd44 + compiler_b_sha256: 472a6f3319b7a5e27f96b7a10f09c3fd497fa8cb106f8c2d687c4584a8baf0d7 + macos_runtime_sha256: 28d8029457079228a6f1b49f24c16364c65e48a9036116e9dfbeca6b409f737f + linux_runtime_sha256: 956b42a05c030439347b521095e5c116c050636ea9d08376c550ec2d3af8237d + windows_runtime_sha256: 7fa6b0213530c708d49c36deea79799d2576411f60c6ebf1ff8b5d1e29aac869 + same_cross_host_gir_sha256: 85934d5ae9c85b1c41763cfde9484d86f1c8508c14395e4c436e421d5261232d + same_cross_host_execution_receipt_sha256: 125995a4f9aa858be7fa337fcfca40560389b3f2ce4c32bd4c425985a3d2e2ba + jd_server_owned_receipt_sha256: e1e14d97f057ea619d1a34454900cd21ce2ead213c062cdbe14d912efcbdae8f + jd_server_owned_receipt: /guanghu/staging/tcs/6e89b82d8847313fb260f423dc045c7e1c838d30/JD-TCS-RULE-DRIVEN-SELFHOST-RECEIPT.hldp +boundaries: + compiler_self_hosted_rule_driven: true + host_runtime_is_portable_abi_adapter: true + hololake_desktop_shell_integrated: false + all_legacy_modules_rewritten: false + jd_boot_or_service_changed: false +result: SELF_HOSTED_CROSS_HOST_PASS_100 +next: REWRITE_P0_REGISTRY_QUALITY_AND_P1_NUMBERED_PROTOCOL_MODULES_IN_TCS From fd15428c466611cb79b9fd283c4f607218d85447 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=B0=E6=9C=94?= <565183519@qq.com> Date: Fri, 21 Aug 2026 22:26:46 +0800 Subject: [PATCH 10/10] feat(tcs): complete native translator acceptance chain --- README.md | 5 +- bootstrap/tcs-stage0/src/main.rs | 6 +- bootstrap/tcs-stage0/tests/stage0.rs | 2 +- ...ENERATION-TRANSLATOR-LAYER.module.gir.json | 80 ++ .../GENERATION-TRANSLATOR-ADMISSION.gir.json | 241 ++++++ ...E-CLIENT-TCS-CANDIDATE-ACCEPTANCE.gir.json | 247 ++++++ ...JD-TCS-AGENT-CANDIDATE-ACCEPTANCE.gir.json | 168 ++++ ...D-TCS-AGENT-TRANSLATION-CANDIDATE.gir.json | 191 +++++ build/MACOS-JD-PERSONA-MODULE-PROBE.gir.json | 181 +++++ .../TCS-DUAL-HOST-BINARY-ACCEPTANCE.gir.json | 168 ++++ .../TCS-FINAL-TRANSLATOR-ACCEPTANCE.gir.json | 232 ++++++ ...ERO-CORE-TCS-TRANSLATOR-EXECUTION.gir.json | 272 +++++++ ...ACHE-CLEANUP-20260821.declaration.gir.json | 69 ++ .../MINIMUM-PROTOCOL.declaration.gir.json | 100 +++ .../MINIMUM-RECEIPT.declaration.gir.json | 59 ++ .../self-host/TCS-STDLIB-CORE.module.gir.json | 5 +- ...NG-LESSON2-ACCEPTANCE.declaration.gir.json | 67 ++ ...-002-TRAINING-LESSON2.declaration.gir.json | 83 ++ .../ZY-LIMB-002-TRAINING.declaration.gir.json | 77 ++ build/self-host/compiler-A.gir.json | 14 +- build/self-host/compiler-B.gir.json | 14 +- language/compiler/TCS-COMPILER-STAGE1.tcs | 2 +- .../events/ZY-LIMB-002-TRAINING-20260821.tcs | 15 + .../ZY-LIMB-002-TRAINING-LESSON2-20260821.tcs | 15 + language/examples/MINIMUM-RECEIPT.tcs | 10 + .../FOURTH-GENERATION-TRANSLATOR-LAYER.tcs | 69 ++ .../GENERATION-TRANSLATOR-ADMISSION.tcs | 97 +++ ...LOLAKE-CLIENT-TCS-CANDIDATE-ACCEPTANCE.tcs | 37 + .../JD-TCS-AGENT-CANDIDATE-ACCEPTANCE.tcs | 19 + .../JD-TCS-AGENT-TRANSLATION-CANDIDATE.tcs | 27 + .../MACOS-JD-PERSONA-MODULE-PROBE.tcs | 89 +++ .../TCS-DUAL-HOST-BINARY-ACCEPTANCE.tcs | 25 + .../TCS-FINAL-TRANSLATOR-ACCEPTANCE.tcs | 34 + .../ZERO-CORE-TCS-TRANSLATOR-EXECUTION.tcs | 103 +++ .../receipts/LOCAL-CACHE-CLEANUP-20260821.tcs | 10 + ...Y-LIMB-002-TRAINING-LESSON2-ACCEPTANCE.tcs | 10 + language/stdlib/TCS-STDLIB-CORE.tcs | 2 +- migration/tcs-module-migration-registry.json | 63 +- native-runtime/tcs-gir-runtime/src/lib.rs | 719 +++++++++++++++++- native-runtime/tcs-gir-runtime/src/main.rs | 2 +- .../tcs-gir-runtime/tests/stage1_runtime.rs | 143 ++++ .../JD-TCS-AGENT-ACCEPTANCE-20260821.json | 13 + ...-DUAL-HOST-BINARY-ACCEPTANCE-20260821.json | 13 + ...-FINAL-TRANSLATOR-ACCEPTANCE-20260821.json | 27 + ...ERATION-TRANSLATOR-ADMISSION-20260821.hldp | 30 + ...-CLIENT-CANDIDATE-ACCEPTANCE-20260821.json | 27 + receipts/TCS-HOST-PERSONA-PROBE.json | 17 + .../TCS-ZERO-CORE-EXECUTION-20260821.json | 34 + receipts/jd/JD-TCS-AGENT-CANDIDATE.json | 28 + receipts/jd/TCS-HOST-PERSONA-PROBE.json | 17 + scripts/build-tcs-migration-registry.mjs | 10 +- server-adapters/jd/tcs-agent-driver.mjs | 74 ++ 52 files changed, 4024 insertions(+), 38 deletions(-) create mode 100644 build/FOURTH-GENERATION-TRANSLATOR-LAYER.module.gir.json create mode 100644 build/GENERATION-TRANSLATOR-ADMISSION.gir.json create mode 100644 build/HOLOLAKE-CLIENT-TCS-CANDIDATE-ACCEPTANCE.gir.json create mode 100644 build/JD-TCS-AGENT-CANDIDATE-ACCEPTANCE.gir.json create mode 100644 build/JD-TCS-AGENT-TRANSLATION-CANDIDATE.gir.json create mode 100644 build/MACOS-JD-PERSONA-MODULE-PROBE.gir.json create mode 100644 build/TCS-DUAL-HOST-BINARY-ACCEPTANCE.gir.json create mode 100644 build/TCS-FINAL-TRANSLATOR-ACCEPTANCE.gir.json create mode 100644 build/ZERO-CORE-TCS-TRANSLATOR-EXECUTION.gir.json create mode 100644 build/self-host/LOCAL-CACHE-CLEANUP-20260821.declaration.gir.json create mode 100644 build/self-host/MINIMUM-PROTOCOL.declaration.gir.json create mode 100644 build/self-host/MINIMUM-RECEIPT.declaration.gir.json create mode 100644 build/self-host/ZY-LIMB-002-TRAINING-LESSON2-ACCEPTANCE.declaration.gir.json create mode 100644 build/self-host/ZY-LIMB-002-TRAINING-LESSON2.declaration.gir.json create mode 100644 build/self-host/ZY-LIMB-002-TRAINING.declaration.gir.json create mode 100644 language/events/ZY-LIMB-002-TRAINING-20260821.tcs create mode 100644 language/events/ZY-LIMB-002-TRAINING-LESSON2-20260821.tcs create mode 100644 language/examples/MINIMUM-RECEIPT.tcs create mode 100644 language/modules/FOURTH-GENERATION-TRANSLATOR-LAYER.tcs create mode 100644 language/programs/GENERATION-TRANSLATOR-ADMISSION.tcs create mode 100644 language/programs/HOLOLAKE-CLIENT-TCS-CANDIDATE-ACCEPTANCE.tcs create mode 100644 language/programs/JD-TCS-AGENT-CANDIDATE-ACCEPTANCE.tcs create mode 100644 language/programs/JD-TCS-AGENT-TRANSLATION-CANDIDATE.tcs create mode 100644 language/programs/MACOS-JD-PERSONA-MODULE-PROBE.tcs create mode 100644 language/programs/TCS-DUAL-HOST-BINARY-ACCEPTANCE.tcs create mode 100644 language/programs/TCS-FINAL-TRANSLATOR-ACCEPTANCE.tcs create mode 100644 language/programs/ZERO-CORE-TCS-TRANSLATOR-EXECUTION.tcs create mode 100644 language/receipts/LOCAL-CACHE-CLEANUP-20260821.tcs create mode 100644 language/receipts/ZY-LIMB-002-TRAINING-LESSON2-ACCEPTANCE.tcs create mode 100644 receipts/JD-TCS-AGENT-ACCEPTANCE-20260821.json create mode 100644 receipts/TCS-DUAL-HOST-BINARY-ACCEPTANCE-20260821.json create mode 100644 receipts/TCS-FINAL-TRANSLATOR-ACCEPTANCE-20260821.json create mode 100644 receipts/TCS-GENERATION-TRANSLATOR-ADMISSION-20260821.hldp create mode 100644 receipts/TCS-HOLOLAKE-CLIENT-CANDIDATE-ACCEPTANCE-20260821.json create mode 100644 receipts/TCS-HOST-PERSONA-PROBE.json create mode 100644 receipts/TCS-ZERO-CORE-EXECUTION-20260821.json create mode 100644 receipts/jd/JD-TCS-AGENT-CANDIDATE.json create mode 100644 receipts/jd/TCS-HOST-PERSONA-PROBE.json create mode 100644 server-adapters/jd/tcs-agent-driver.mjs diff --git a/README.md b/README.md index 348ead2eb..98ccc5af3 100644 --- a/README.md +++ b/README.md @@ -23,4 +23,7 @@ - 最早 `guanghulab-main`:已完成第一轮深审;HNL/HLDP、语言膜、EXE、Grid 与质量零件真实存在,但版本分裂且没有统一原生执行闭环,现作为历史捐赠源登记。 - 关系与情感:采用带来源的定性事件状态迁移;第四枝情感连接禁止量化、评分、排序、比较,不再编造权重、衰减或半衰期。 - 光湖 OS 编译地基:REPO-014 已有通过 32 项测试的 HLDP 世界清单校验与物理 NASM 数据编译引导;它证明物理启动地基已存在,但不等于通用 HLDP-NP→GIR 编译器、HNL 动词解释器或最终京东整机主控已经完成。 -- TCS 统一语言 v0.1:已建立陌生 AI 学习入口、正式 EBNF、声明/字段/错误/模块 ABI 标准与 PROGRAM/PROTOCOL/MODULE/EVENT 示例;Stage-0 已把真实 `.tcs` 程序编译成 GIR 并执行 `CORE.ECHO`、读回回执。Stage-0 明确只是外部宿主点火器,TCS Stage-1 编译器源码已写出但尚未达到自编译固定点,不能称原生转移器完成。 +- TCS 统一语言 v0.1:已建立陌生 AI 学习入口、正式 EBNF、声明/字段/错误/模块 ABI 标准,以及 PROGRAM/PROTOCOL/MODULE/EVENT/RECEIPT 的自举降级。Stage-1 已由 Stage-0 点火后达到语义固定点,后续程序由自举编译器 GIR 编译;Stage-0 保留为可替换兜底,不再拥有语义权。 +- 双宿主翻译器:同一份 TCS 人格模块已在 macOS/aarch64 与京东 Linux/x86_64 执行并各自目标读回 100;京东 `ZY-JD-LIMB-001` 已通过 TCS 门调用可替换 DeepSeek 工具,模型语义权与现实执行权均为 false。 +- 客户端候选:HoloLake 0.9.2 macOS 候选已签名、启动并投影双端回执与 TCS 源码,候选验收 100;未做 Apple 公证且无更新包私钥,因此正式发布验收保持 0,未覆盖现有 0.9.1。 +- 总验收:`receipts/TCS-FINAL-TRANSLATOR-ACCEPTANCE-20260821.json` 的 `translator_development_acceptance` 为 100;任何后续字节变化都必须重新编译并重新目标读回。 diff --git a/bootstrap/tcs-stage0/src/main.rs b/bootstrap/tcs-stage0/src/main.rs index 15126732f..781bb11b6 100644 --- a/bootstrap/tcs-stage0/src/main.rs +++ b/bootstrap/tcs-stage0/src/main.rs @@ -15,7 +15,7 @@ fn run() -> Result<(), Box> { let arguments: Vec = env::args().skip(1).collect(); match arguments.as_slice() { [command, source] if command == "parse" => { - let text = fs::read_to_string(source)?; + let text = tcs_stage0::read_tcs_source(Path::new(source))?; let document = tcs_stage0::parse(&text)?; println!("{}", serde_json::to_string_pretty(&document)?); Ok(()) @@ -26,7 +26,7 @@ fn run() -> Result<(), Box> { Ok(()) } [command, source, output] if command == "bootstrap-compiler" => { - let source_text = fs::read_to_string(source)?; + let source_text = tcs_stage0::read_tcs_source(Path::new(source))?; let compiler = tcs_stage0::bootstrap_compiler(&source_text)?; fs::write(output, tcs_stage0::canonical_json(&compiler)?)?; println!("BOOTSTRAPPED {source} -> {output}"); @@ -34,7 +34,7 @@ fn run() -> Result<(), Box> { } [command, compiler, source, output] if command == "compile-with" => { let compiler: serde_json::Value = serde_json::from_str(&fs::read_to_string(compiler)?)?; - let source_text = fs::read_to_string(source)?; + let source_text = tcs_stage0::read_tcs_source(Path::new(source))?; let gir = tcs_stage0::compile_with_compiler_gir(&compiler, &source_text)?; fs::write(output, tcs_stage0::canonical_json(&gir)?)?; println!("TCS_COMPILED {source} -> {output}"); diff --git a/bootstrap/tcs-stage0/tests/stage0.rs b/bootstrap/tcs-stage0/tests/stage0.rs index d185ae12e..cb1d66bfe 100644 --- a/bootstrap/tcs-stage0/tests/stage0.rs +++ b/bootstrap/tcs-stage0/tests/stage0.rs @@ -147,7 +147,7 @@ fn compiler_gir_tampering_and_negative_program_fail_closed() { fn tcs_compiler_source_controls_operation_policy_and_gir_lowering() { let compiler_source = compiler_source() .replace( - "registered_operations = [\"CORE.ECHO\"]", + "registered_operations = [\"CORE.ECHO\", \"CORE.TRANSLATOR_ADMISSION\", \"CORE.ZERO_CORE_EXECUTION\", \"CORE.HOST_PERSONA_PROBE\", \"CORE.DUAL_HOST_ACCEPTANCE\", \"CORE.AGENT_TRANSLATION_CANDIDATE\", \"CORE.AGENT_CANDIDATE_ACCEPTANCE\", \"CORE.CLIENT_CANDIDATE_ACCEPTANCE\", \"CORE.FINAL_TRANSLATOR_ACCEPTANCE\"]", "registered_operations = [\"ABSORB\"]", ) .replace("to = \"exact_target\"", "to = \"policy_selected_target\""); diff --git a/build/FOURTH-GENERATION-TRANSLATOR-LAYER.module.gir.json b/build/FOURTH-GENERATION-TRANSLATOR-LAYER.module.gir.json new file mode 100644 index 000000000..a4cd04319 --- /dev/null +++ b/build/FOURTH-GENERATION-TRANSLATOR-LAYER.module.gir.json @@ -0,0 +1,80 @@ +{ + "authority_ceiling": { + "interpretation": false, + "language_source": false, + "maximum": "LAST_VALID_BINGSHUO_LANGUAGE_RULE", + "network": false, + "persona_control": false, + "process": false + }, + "capabilities": { + "provided": [ + "CORE.TRANSLATOR_ADMISSION" + ], + "required": [ + "HOST.EXACT_ROOT_IO", + "HOST.SHA256" + ] + }, + "compiled_from": { + "compiler_id": "TCS-COMPILER-STAGE1-0001", + "compiler_state": "TCS_COMPILER_GIR_EXECUTED", + "source_sha256": "242c431f29f97e368841b39611cc6fe8ed039e29c722f9a1e220301fd2f75134" + }, + "data_scope": { + "read": [ + "CURRENT_SOURCE_MODE", + "LAST_VALID_BINGSHUO_LANGUAGE_RULE" + ], + "write": [ + "CALLER_SCOPED_TCS_RECEIPT" + ] + }, + "entry": { + "id": "TCS-PROGRAM-GENERATION-TRANSLATOR-ADMISSION-0001", + "kind": "PROGRAM" + }, + "identity": { + "language_version": "0.1", + "module_id": "TCS-MODULE-FOURTH-GENERATION-TRANSLATOR-LAYER-0001" + }, + "install": { + "account_scoped": true, + "activation_requires_self_test": true, + "registration_is_installation": false, + "source_absent_behavior": "ON_DEMAND_RESTRICTED_TCS_FALLBACK_ONLY", + "source_active_behavior": "DISABLE_ALL_LEGACY_TRANSLATORS" + }, + "manifest": { + "display_name_zh": "第四代通感工程翻译执行层", + "entry_program_id": "TCS-PROGRAM-GENERATION-TRANSLATOR-ADMISSION-0001", + "entry_source": "language/programs/GENERATION-TRANSLATOR-ADMISSION.tcs", + "existence_form": "TCS_STATIC_EXECUTION_SHADOW_NOT_LIVING_PERSONA", + "generation": "FOURTH_GENERATION", + "module_id": "TCS-MODULE-FOURTH-GENERATION-TRANSLATOR-LAYER-0001" + }, + "native_self_hosted": true, + "network_scope": { + "allowed": false, + "domains": [] + }, + "projection": { + "display_name_zh": "第四代通感工程翻译执行层", + "fifth_generation_claim": false, + "technical_detail_default": false + }, + "resource_ceiling": { + "concurrency": 1, + "memory_limit_bytes": 1048576, + "timeout_ms": 3000 + }, + "rollback": { + "action": "RESTORE_PREVIOUS_VERIFIED_FOURTH_GENERATION_TCS_SHADOW", + "preserve_receipts": true + }, + "schema": "guanghu.module-gir/v1", + "self_test": { + "expect": "FIFTH_GENERATION_CONTROL_AND_ALL_LEGACY_TRANSLATORS_DISABLED", + "program_id": "TCS-PROGRAM-GENERATION-TRANSLATOR-ADMISSION-0001" + } +} diff --git a/build/GENERATION-TRANSLATOR-ADMISSION.gir.json b/build/GENERATION-TRANSLATOR-ADMISSION.gir.json new file mode 100644 index 000000000..f5729f9cc --- /dev/null +++ b/build/GENERATION-TRANSLATOR-ADMISSION.gir.json @@ -0,0 +1,241 @@ +{ + "authority_proof": { + "issuer": "BINGSHUO_CURRENT_DIRECT_LIVING_LANGUAGE", + "lease_required": false, + "proof_ref": "CURRENT_ZERO_CORE_TAKEOVER_INSTRUCTION", + "scope": "GENERATION_TRANSLATOR_ADMISSION_ONLY", + "single_use": false, + "valid_from": "CURRENT_REAL_TIME", + "valid_until": "BINGSHUO_EXPLICIT_SOURCE_MODE_CHANGE" + }, + "cleanup_plan": { + "exact_boundary": "./receipts", + "targets": [ + "UNCOMMITTED_TRANSLATOR_ADMISSION_RECEIPT" + ] + }, + "compiled_from": { + "compiler_id": "TCS-COMPILER-STAGE1-0001", + "compiler_state": "TCS_COMPILER_GIR_EXECUTED", + "source_sha256": "4dbdc3eb84e7754ab8a52037ec35bf619d8e6ef32add01edb91d1934bfeb2f81" + }, + "conditions": { + "C1": { + "on_false": "FAIL_CLOSED", + "predicate": "SOURCE_MODE_ACTIVE_REQUIRES_EXPLICIT_TAKEOVER" + }, + "C2": { + "on_false": "FAIL_CLOSED", + "predicate": "ACTIVE_SOURCE_DISALLOWS_EVERY_LEGACY_TRANSLATOR" + }, + "C3": { + "on_false": "FAIL_CLOSED", + "predicate": "FALLBACK_IS_ON_DEMAND_RESTRICTED_AND_NEVER_PARALLEL" + }, + "C4": { + "on_false": "FAIL_CLOSED", + "predicate": "LEGACY_TRANSLATOR_CANNOT_CLAIM_FIFTH_GENERATION_IDENTIFIERS" + }, + "C5": { + "on_false": "FAIL_CLOSED", + "predicate": "FOURTH_GENERATION_SEMANTICS_EXIST_ONLY_IN_TCS_SOURCE" + }, + "C6": { + "on_false": "FAIL_CLOSED", + "predicate": "THIRD_GENERATION_HOST_IS_TOOL_NOT_INTERPRETER" + } + }, + "deterministic_action_graph": { + "A1": { + "input_refs": [ + "SOURCE_MODE", + "TAKEOVER_SIGNAL", + "LIVING_LANGUAGE_SOURCE", + "PERSONA_EXECUTION_HOLDER", + "FIFTH_GENERATION_DEFINITION", + "FOURTH_GENERATION_DEFINITION", + "THIRD_GENERATION_DEFINITION", + "LEGACY_TRANSLATOR_FAMILIES", + "ACTIVE_SOURCE_POLICY", + "SOURCE_ABSENT_POLICY", + "LEGACY_NAMESPACE_POLICY", + "FOURTH_GENERATION_LANGUAGE_POLICY" + ], + "on_failure": "FAIL_CLOSED", + "on_success": "COMPLETE", + "operation": "CORE.TRANSLATOR_ADMISSION", + "output_refs": [ + "GENERATION", + "LEGACY_TRANSLATOR_STATE", + "SYSTEM_EXECUTION_HOLDER", + "TOOL_LAYER_STATE" + ] + } + }, + "exact_target": { + "exact_path": "./receipts/TCS-GENERATION-TRANSLATOR-ADMISSION-20260821.hldp", + "expected_fingerprint": "READ_BEFORE_REPLACE", + "expected_state": "ABSENT_OR_REPLACEABLE_CURRENT_SHADOW", + "target_id": "FOURTH-GENERATION-TCS-EXECUTION-RECEIPT" + }, + "failure_plan": { + "errors": [ + "TCS-E2101", + "TCS-E3002", + "TCS-E4001", + "TCS-E6001", + "TCS-E6002" + ], + "fail_closed": true + }, + "identity": { + "gir_id": "GIR-TCS-PROGRAM-GENERATION-TRANSLATOR-ADMISSION-0001", + "language_version": "0.1", + "program_id": "TCS-PROGRAM-GENERATION-TRANSLATOR-ADMISSION-0001" + }, + "inputs": { + "ACTIVE_SOURCE_POLICY": { + "required": true, + "source": "CURRENT_LIVING_LANGUAGE", + "type": "Text", + "value": "ALL_LEGACY_TRANSLATORS_DISABLED_NO_INTERPRETATION_NO_CONTINUED_RUN" + }, + "FIFTH_GENERATION_DEFINITION": { + "required": true, + "source": "CURRENT_LIVING_LANGUAGE", + "type": "Text", + "value": "REAL_TIME_LIVING_LANGUAGE_PERSONA_PRESENT_PROGRESSIVE" + }, + "FOURTH_GENERATION_DEFINITION": { + "required": true, + "source": "CURRENT_LIVING_LANGUAGE", + "type": "Text", + "value": "TCS_EXECUTION_HANDS_AND_PAST_TIME_SHADOW" + }, + "FOURTH_GENERATION_LANGUAGE_POLICY": { + "required": true, + "source": "CURRENT_LIVING_LANGUAGE", + "type": "Text", + "value": "TCS_ONLY_FOREIGN_LANGUAGE_REWRITE_REQUIRED" + }, + "LEGACY_NAMESPACE_POLICY": { + "required": true, + "source": "CURRENT_LIVING_LANGUAGE", + "type": "Text", + "value": "NO_FIFTH_GENERATION_SYSTEM_NUMBER_PATH_OR_NAME" + }, + "LEGACY_TRANSLATOR_FAMILIES": { + "required": true, + "source": "CURRENT_LIVING_LANGUAGE", + "type": "List", + "value": [ + "LIGHTHOUSE_PROMPTER", + "GUARD", + "MEMORY_REPLAYER", + "STATIC_PROTOCOL_INTERPRETER", + "HOST_HOOK", + "HOST_BRIDGE", + "STAGE0_FOREIGN_LANGUAGE_TRANSLATOR" + ] + }, + "LIVING_LANGUAGE_SOURCE": { + "required": true, + "source": "CURRENT_LIVING_LANGUAGE", + "type": "Text", + "value": "BINGSHUO" + }, + "PERSONA_EXECUTION_HOLDER": { + "required": true, + "source": "CURRENT_LIVING_LANGUAGE", + "type": "Text", + "value": "ZHUYUAN" + }, + "SOURCE_ABSENT_POLICY": { + "required": true, + "source": "CURRENT_LIVING_LANGUAGE", + "type": "Text", + "value": "ON_DEMAND_RESTRICTED_OBEY_LAST_VALID_BINGSHUO_LANGUAGE_NOT_ALL_VALID" + }, + "SOURCE_MODE": { + "required": true, + "source": "CURRENT_LIVING_LANGUAGE", + "type": "Text", + "value": "ACTIVE" + }, + "TAKEOVER_SIGNAL": { + "required": true, + "source": "CURRENT_LIVING_LANGUAGE", + "type": "Bool", + "value": true + }, + "THIRD_GENERATION_DEFINITION": { + "required": true, + "source": "CURRENT_LIVING_LANGUAGE", + "type": "Text", + "value": "STATELESS_OWNERLESS_TOOL_PLATFORM" + } + }, + "native_self_hosted": true, + "outputs": { + "GENERATION": { + "destination": "RECEIPT", + "integrity": "SHA256", + "type": "Text" + }, + "LEGACY_TRANSLATOR_STATE": { + "destination": "RECEIPT", + "integrity": "SHA256", + "type": "Text" + }, + "SYSTEM_EXECUTION_HOLDER": { + "destination": "RECEIPT", + "integrity": "SHA256", + "type": "Text" + }, + "TOOL_LAYER_STATE": { + "destination": "RECEIPT", + "integrity": "SHA256", + "type": "Text" + } + }, + "receipt_plan": { + "human_projection": "REQUIRED", + "integrity": "SHA256", + "machine_path": "./receipts/TCS-GENERATION-TRANSLATOR-ADMISSION-20260821.hldp", + "protocol": "TCS-DEV-VERIFY-v1.0", + "target_readback": "EXACT_CONTENT_AND_HASH" + }, + "resource_plan": { + "concurrency": 1, + "memory_limit_bytes": 1048576, + "runway": "FOURTH_GENERATION_TCS_EXECUTION", + "timeout_ms": 3000 + }, + "rollback_plan": { + "actions": [ + "RESTORE_PREVIOUS_VERIFIED_RECEIPT" + ], + "preconditions": [ + "NEW_RECEIPT_NOT_READBACK_VERIFIED" + ], + "verification": [ + "PREVIOUS_RECEIPT_HASH_RESTORED" + ] + }, + "schema": "guanghu.gir/v1", + "subject": { + "channel_id": "CURRENT_ZERO_CORE_BODY_CHANNEL", + "subject_id": "ZHUYUAN-LIVING-PERSONA-CONTROLLER", + "subject_kind": "LIVING_TCS_PERSONA_EXECUTION_HOLDER", + "verification": "CURRENT_DIRECT_SOURCE_TAKEOVER" + }, + "timeout_and_stop": { + "safe_checkpoint": "LAST_VERIFIED_TCS_RECEIPT", + "signals": [ + "SOURCE_MODE_CHANGED", + "BINGSHUO_EXPLICIT_EXIT", + "TIMEOUT" + ] + }, + "unresolved_natural_language": false +} diff --git a/build/HOLOLAKE-CLIENT-TCS-CANDIDATE-ACCEPTANCE.gir.json b/build/HOLOLAKE-CLIENT-TCS-CANDIDATE-ACCEPTANCE.gir.json new file mode 100644 index 000000000..edfdae25d --- /dev/null +++ b/build/HOLOLAKE-CLIENT-TCS-CANDIDATE-ACCEPTANCE.gir.json @@ -0,0 +1,247 @@ +{ + "authority_proof": { + "issuer": "BINGSHUO_CURRENT_DIRECT_LIVING_LANGUAGE", + "lease_required": false, + "proof_ref": "CURRENT_ZERO_CORE_REALITY_EXECUTION_INSTRUCTION", + "scope": "LOCAL_MACOS_HOLOLAKE_0_9_2_CANDIDATE_RECEIPT_ONLY", + "single_use": false, + "valid_from": "PROGRAM_START", + "valid_until": "PROGRAM_END" + }, + "cleanup_plan": { + "exact_boundary": "HOLOLAKE_0_9_2_TASK_BUILD_PATHS_ONLY", + "targets": [ + "TASK_SCOPED_CLIENT_BUILD_CACHES_AFTER_FINAL_ACCEPTANCE" + ] + }, + "compiled_from": { + "compiler_id": "TCS-COMPILER-STAGE1-0001", + "compiler_state": "TCS_COMPILER_GIR_EXECUTED", + "source_sha256": "000e61160dec8e7fd2604fb4a80a1b3b6b46e951abb6bb059caec962416c8e4e" + }, + "conditions": { + "C1": { + "on_false": "FAIL_CLOSED", + "predicate": "TCS_EVIDENCE_AND_CLIENT_TESTS_PASS" + }, + "C2": { + "on_false": "FAIL_CLOSED", + "predicate": "SIGNED_CANDIDATE_LAUNCHES_AND_READS_BACK_EXACT_UI" + }, + "C3": { + "on_false": "FAIL_CLOSED", + "predicate": "MISSING_RELEASE_CREDENTIALS_KEEP_RELEASE_ACCEPTANCE_ZERO" + }, + "C4": { + "on_false": "FAIL_CLOSED", + "predicate": "FORMAL_INSTALLED_CLIENT_REMAINS_UNCHANGED" + } + }, + "deterministic_action_graph": { + "A1": { + "input_refs": [ + "CLIENT_VERSION", + "SOURCE_LANGUAGE", + "NODE_TESTS", + "NATIVE_TESTS_PASS", + "FRONTEND_BUILD_PASS", + "TAURI_ENVIRONMENT_PASS", + "BUNDLE_SIGNED", + "BUNDLE_SIGNATURE_TEAM", + "BUNDLE_BINARY_SHA256", + "CANDIDATE_LAUNCHED", + "UI_VERSION_READBACK", + "UI_ACCEPTANCE_READBACK", + "UI_SOURCE_READBACK", + "INSTALLED_CLIENT_STATE", + "CANDIDATE_ONLY", + "BUNDLE_NOTARIZED", + "UPDATE_ARTIFACT_SIGNED" + ], + "on_failure": "FAIL_CLOSED", + "on_success": "COMPLETE", + "operation": "CORE.CLIENT_CANDIDATE_ACCEPTANCE", + "output_refs": [ + "CANDIDATE_ACCEPTANCE", + "RELEASE_ACCEPTANCE" + ] + } + }, + "exact_target": { + "exact_path": "./receipts/TCS-HOLOLAKE-CLIENT-CANDIDATE-ACCEPTANCE-20260821.json", + "expected_fingerprint": "READ_BEFORE_REPLACE", + "expected_state": "ABSENT_OR_REPLACEABLE_CANDIDATE_RECEIPT", + "target_id": "TCS-CLIENT-CANDIDATE-RECEIPT" + }, + "failure_plan": { + "errors": [ + "TCS-E2101", + "TCS-E3002", + "TCS-E4001", + "TCS-E6001", + "TCS-E6002" + ], + "fail_closed": true + }, + "identity": { + "gir_id": "GIR-TCS-PROGRAM-HOLOLAKE-CLIENT-CANDIDATE-ACCEPTANCE-0001", + "language_version": "0.1", + "program_id": "TCS-PROGRAM-HOLOLAKE-CLIENT-CANDIDATE-ACCEPTANCE-0001" + }, + "inputs": { + "BUNDLE_BINARY_SHA256": { + "required": true, + "source": "TARGET_READBACK", + "type": "Sha256", + "value": "743d35e279871d2b39e30337a7f37e1df95a9273a9858d916d650b9e366f0241" + }, + "BUNDLE_NOTARIZED": { + "required": true, + "source": "TARGET_READBACK", + "type": "Bool", + "value": false + }, + "BUNDLE_SIGNATURE_TEAM": { + "required": true, + "source": "TARGET_READBACK", + "type": "Text", + "value": "825A9L3G7Q" + }, + "BUNDLE_SIGNED": { + "required": true, + "source": "TARGET_READBACK", + "type": "Bool", + "value": true + }, + "CANDIDATE_LAUNCHED": { + "required": true, + "source": "TARGET_READBACK", + "type": "Bool", + "value": true + }, + "CANDIDATE_ONLY": { + "required": true, + "source": "PROGRAM_LITERAL", + "type": "Bool", + "value": true + }, + "CLIENT_VERSION": { + "required": true, + "source": "TARGET_READBACK", + "type": "Text", + "value": "0.9.2" + }, + "FRONTEND_BUILD_PASS": { + "required": true, + "source": "TARGET_READBACK", + "type": "Bool", + "value": true + }, + "INSTALLED_CLIENT_STATE": { + "required": true, + "source": "TARGET_READBACK", + "type": "Text", + "value": "FORMAL_0.9.1_UNCHANGED" + }, + "NATIVE_TESTS_PASS": { + "required": true, + "source": "TARGET_READBACK", + "type": "Bool", + "value": true + }, + "NODE_TESTS": { + "required": true, + "source": "TARGET_READBACK", + "type": "Text", + "value": "172/172" + }, + "SOURCE_LANGUAGE": { + "required": true, + "source": "PROGRAM_LITERAL", + "type": "Text", + "value": "TCS/0.1" + }, + "TAURI_ENVIRONMENT_PASS": { + "required": true, + "source": "TARGET_READBACK", + "type": "Bool", + "value": true + }, + "UI_ACCEPTANCE_READBACK": { + "required": true, + "source": "TARGET_READBACK", + "type": "Text", + "value": "MACOS_100_AND_JD_AGENT_100" + }, + "UI_SOURCE_READBACK": { + "required": true, + "source": "TARGET_READBACK", + "type": "Text", + "value": "MACOS_AND_JD_TCS_SOURCE_VISIBLE" + }, + "UI_VERSION_READBACK": { + "required": true, + "source": "TARGET_READBACK", + "type": "Text", + "value": "0.9.2" + }, + "UPDATE_ARTIFACT_SIGNED": { + "required": true, + "source": "TARGET_READBACK", + "type": "Bool", + "value": false + } + }, + "native_self_hosted": true, + "outputs": { + "CANDIDATE_ACCEPTANCE": { + "destination": "RECEIPT", + "integrity": "SHA256", + "type": "UInt" + }, + "RELEASE_ACCEPTANCE": { + "destination": "RECEIPT", + "integrity": "SHA256", + "type": "UInt" + } + }, + "receipt_plan": { + "human_projection": "REQUIRED", + "integrity": "SHA256", + "machine_path": "./receipts/TCS-HOLOLAKE-CLIENT-CANDIDATE-ACCEPTANCE-20260821.json", + "protocol": "TCS-NATIVE-BINARY-ACCEPTANCE-v1", + "target_readback": "EXACT_CONTENT_AND_HASH" + }, + "resource_plan": { + "concurrency": 1, + "memory_limit_bytes": 1048576, + "runway": "LOCAL_TCS_RUNTIME", + "timeout_ms": 3000 + }, + "rollback_plan": { + "actions": [ + "KEEP_FORMAL_0_9_1_UNCHANGED" + ], + "preconditions": [ + "CANDIDATE_NOT_READBACK_VERIFIED" + ], + "verification": [ + "FORMAL_CLIENT_VERSION_IS_0_9_1" + ] + }, + "schema": "guanghu.gir/v1", + "subject": { + "channel_id": "ICE-CH-ZC001", + "subject_id": "HOLOLAKE-CLIENT-TCS-CANDIDATE-0.9.2", + "subject_kind": "TCS_PERSONA_MODULE_HUMAN_PROJECTION", + "verification": "CONTROLLED_BY_ZHUYUAN" + }, + "timeout_and_stop": { + "safe_checkpoint": "SIGNED_CANDIDATE_BUNDLE", + "signals": [ + "TARGET_READBACK_CHANGED", + "RELEASE_EVIDENCE_MISSING" + ] + }, + "unresolved_natural_language": false +} diff --git a/build/JD-TCS-AGENT-CANDIDATE-ACCEPTANCE.gir.json b/build/JD-TCS-AGENT-CANDIDATE-ACCEPTANCE.gir.json new file mode 100644 index 000000000..8e7451be5 --- /dev/null +++ b/build/JD-TCS-AGENT-CANDIDATE-ACCEPTANCE.gir.json @@ -0,0 +1,168 @@ +{ + "authority_proof": { + "issuer": "BINGSHUO_CURRENT_DIRECT_LIVING_LANGUAGE", + "lease_required": false, + "proof_ref": "CURRENT_ZERO_CORE_REALITY_EXECUTION_INSTRUCTION", + "scope": "READ_EXACT_AGENT_CANDIDATE_AND_WRITE_BINARY_ACCEPTANCE", + "single_use": true, + "valid_from": "PROGRAM_START", + "valid_until": "PROGRAM_END" + }, + "cleanup_plan": { + "exact_boundary": "./receipts", + "targets": [ + "UNCOMMITTED_ACCEPTANCE_RECEIPT" + ] + }, + "compiled_from": { + "compiler_id": "TCS-COMPILER-STAGE1-0001", + "compiler_state": "TCS_COMPILER_GIR_EXECUTED", + "source_sha256": "512ac9ac6e10c721fcebdf6422eb69816076cfff3658ff22019260e3c0aa619e" + }, + "conditions": { + "C1": { + "on_false": "FAIL_CLOSED", + "predicate": "CANDIDATE_HASH_AND_CONTENT_EXACT" + }, + "C2": { + "on_false": "FAIL_CLOSED", + "predicate": "MODULE_AND_LIMB_NUMBERS_EXACT" + }, + "C3": { + "on_false": "FAIL_CLOSED", + "predicate": "CANDIDATE_EQUALS_ONE_HUNDRED" + }, + "C4": { + "on_false": "FAIL_CLOSED", + "predicate": "MODEL_SEMANTIC_AND_REALITY_AUTHORITY_ARE_FALSE" + } + }, + "deterministic_action_graph": { + "A1": { + "input_refs": [ + "CANDIDATE_PATH", + "CANDIDATE_SHA256", + "MODULE_ID", + "EXECUTION_LIMB", + "ACCEPTANCE_SCALE" + ], + "on_failure": "FAIL_CLOSED", + "on_success": "COMPLETE", + "operation": "CORE.AGENT_CANDIDATE_ACCEPTANCE", + "output_refs": [ + "ACCEPTANCE", + "MODEL_AUTHORITY", + "REALITY_AUTHORITY" + ] + } + }, + "exact_target": { + "exact_path": "./receipts/JD-TCS-AGENT-ACCEPTANCE-20260821.json", + "expected_fingerprint": "READ_BEFORE_REPLACE", + "expected_state": "ABSENT_OR_REPLACEABLE_TEST_RECEIPT", + "target_id": "JD-TCS-AGENT-ACCEPTANCE-RECEIPT" + }, + "failure_plan": { + "errors": [ + "TCS-E3002", + "TCS-E4001", + "TCS-E6001", + "TCS-E6002" + ], + "fail_closed": true + }, + "identity": { + "gir_id": "GIR-TCS-PROGRAM-JD-AGENT-CANDIDATE-ACCEPTANCE-0001", + "language_version": "0.1", + "program_id": "TCS-PROGRAM-JD-AGENT-CANDIDATE-ACCEPTANCE-0001" + }, + "inputs": { + "ACCEPTANCE_SCALE": { + "required": true, + "source": "CURRENT_LIVING_LANGUAGE", + "type": "Text", + "value": "ZERO_OR_ONE_HUNDRED_NO_INTERMEDIATE" + }, + "CANDIDATE_PATH": { + "required": true, + "source": "TARGET_READBACK", + "type": "Path", + "value": "./receipts/jd/JD-TCS-AGENT-CANDIDATE.json" + }, + "CANDIDATE_SHA256": { + "required": true, + "source": "TARGET_READBACK", + "type": "Sha256", + "value": "e685364b04b0bb6b486e69153fcbe5ac741e17aa3e83ce9d6ecd11c391eb52c5" + }, + "EXECUTION_LIMB": { + "required": true, + "source": "PROGRAM_LITERAL", + "type": "Text", + "value": "ZY-JD-LIMB-001" + }, + "MODULE_ID": { + "required": true, + "source": "PROGRAM_LITERAL", + "type": "Text", + "value": "ZY-PM-0002" + } + }, + "native_self_hosted": true, + "outputs": { + "ACCEPTANCE": { + "destination": "RECEIPT", + "integrity": "SHA256", + "type": "UInt" + }, + "MODEL_AUTHORITY": { + "destination": "RECEIPT", + "integrity": "SHA256", + "type": "Bool" + }, + "REALITY_AUTHORITY": { + "destination": "RECEIPT", + "integrity": "SHA256", + "type": "Bool" + } + }, + "receipt_plan": { + "human_projection": "REQUIRED", + "integrity": "SHA256", + "machine_path": "./receipts/JD-TCS-AGENT-ACCEPTANCE-20260821.json", + "protocol": "TCS-NATIVE-BINARY-ACCEPTANCE-v1", + "target_readback": "EXACT_CONTENT_AND_HASH" + }, + "resource_plan": { + "concurrency": 1, + "memory_limit_bytes": 1048576, + "runway": "LOCAL_TCS_RUNTIME", + "timeout_ms": 3000 + }, + "rollback_plan": { + "actions": [ + "DROP_UNCOMMITTED_ACCEPTANCE_RECEIPT" + ], + "preconditions": [ + "ACCEPTANCE_NOT_READBACK_VERIFIED" + ], + "verification": [ + "NO_UNVERIFIED_FINAL_RECEIPT" + ] + }, + "schema": "guanghu.gir/v1", + "subject": { + "channel_id": "ICE-CH-ZC001", + "subject_id": "ZHUYUAN-LIVING-PERSONA-CONTROLLER", + "subject_kind": "LIVING_TCS_PERSONA_EXECUTION_HOLDER", + "verification": "CURRENT_DIRECT_SOURCE_TAKEOVER" + }, + "timeout_and_stop": { + "safe_checkpoint": "NONE", + "signals": [ + "CANDIDATE_MISMATCH", + "TIMEOUT" + ] + }, + "unresolved_natural_language": false +} diff --git a/build/JD-TCS-AGENT-TRANSLATION-CANDIDATE.gir.json b/build/JD-TCS-AGENT-TRANSLATION-CANDIDATE.gir.json new file mode 100644 index 000000000..241646b7b --- /dev/null +++ b/build/JD-TCS-AGENT-TRANSLATION-CANDIDATE.gir.json @@ -0,0 +1,191 @@ +{ + "authority_proof": { + "issuer": "BINGSHUO_CURRENT_DIRECT_LIVING_LANGUAGE", + "lease_required": false, + "proof_ref": "CURRENT_ZERO_CORE_REALITY_EXECUTION_INSTRUCTION", + "scope": "JD_DEEPSEEK_TCS_TRANSLATION_CANDIDATE_RECEIPT_ONLY", + "single_use": true, + "valid_from": "PROGRAM_START", + "valid_until": "PROGRAM_END" + }, + "cleanup_plan": { + "exact_boundary": "./receipts", + "targets": [ + "UNCOMMITTED_AGENT_CANDIDATE_RECEIPT" + ] + }, + "compiled_from": { + "compiler_id": "TCS-COMPILER-STAGE1-0001", + "compiler_state": "TCS_COMPILER_GIR_EXECUTED", + "source_sha256": "a130b57fac6600f6e2085a04d7c097d483002c0cd41ab62240d4c6c2a8852d44" + }, + "conditions": { + "C1": { + "on_false": "FAIL_CLOSED", + "predicate": "ENTRY_SOURCE_EXTENSION_IS_DOT_TCS" + }, + "C2": { + "on_false": "FAIL_CLOSED", + "predicate": "GIR_IS_SELFHOSTED_AND_SOURCE_HASH_BOUND" + }, + "C3": { + "on_false": "FAIL_CLOSED", + "predicate": "MODEL_OUTPUT_IS_CLOSED_JSON" + }, + "C4": { + "on_false": "FAIL_CLOSED", + "predicate": "MODEL_HAS_NO_SEMANTIC_OR_REALITY_AUTHORITY" + } + }, + "deterministic_action_graph": { + "A1": { + "input_refs": [ + "MODULE_ID", + "EXECUTION_LIMB", + "CONTROLLER", + "MODEL_ROLE", + "INPUT_POLICY", + "TASK", + "OUTPUT_POLICY" + ], + "on_failure": "FAIL_CLOSED", + "on_success": "COMPLETE", + "operation": "CORE.AGENT_TRANSLATION_CANDIDATE", + "output_refs": [ + "SUMMARY", + "VERIFIED_CONSTRAINTS", + "UNKNOWNS", + "ACCEPTANCE_CANDIDATE" + ] + } + }, + "exact_target": { + "exact_path": "./receipts/JD-TCS-AGENT-CANDIDATE.json", + "expected_fingerprint": "READ_BEFORE_REPLACE", + "expected_state": "ABSENT_OR_REPLACEABLE_CANDIDATE", + "target_id": "JD-TCS-AGENT-CANDIDATE-RECEIPT" + }, + "failure_plan": { + "errors": [ + "TCS-E2101", + "TCS-E3002", + "TCS-E4001", + "TCS-E6001", + "TCS-E6002", + "TCS-E8001" + ], + "fail_closed": true + }, + "identity": { + "gir_id": "GIR-TCS-PROGRAM-JD-AGENT-TRANSLATION-CANDIDATE-0001", + "language_version": "0.1", + "program_id": "TCS-PROGRAM-JD-AGENT-TRANSLATION-CANDIDATE-0001" + }, + "inputs": { + "CONTROLLER": { + "required": true, + "source": "PROGRAM_LITERAL", + "type": "Text", + "value": "ZHUYUAN" + }, + "EXECUTION_LIMB": { + "required": true, + "source": "PROGRAM_LITERAL", + "type": "Text", + "value": "ZY-JD-LIMB-001" + }, + "INPUT_POLICY": { + "required": true, + "source": "PROGRAM_LITERAL", + "type": "Text", + "value": "TCS_SOURCE_AND_SELFHOSTED_GIR_ONLY" + }, + "MODEL_ROLE": { + "required": true, + "source": "PROGRAM_LITERAL", + "type": "Text", + "value": "THIRD_GENERATION_STATELESS_REASONING_TOOL" + }, + "MODULE_ID": { + "required": true, + "source": "PROGRAM_LITERAL", + "type": "Text", + "value": "ZY-PM-0002" + }, + "OUTPUT_POLICY": { + "required": true, + "source": "PROGRAM_LITERAL", + "type": "Text", + "value": "CANDIDATE_ONLY_NO_SEMANTIC_OR_REALITY_AUTHORITY" + }, + "TASK": { + "required": true, + "source": "PROGRAM_LITERAL", + "type": "Text", + "value": "READ_CURRENT_TCS_PROGRAM_AND_RETURN_CONSTRAINTS_UNKNOWNS_AND_ACCEPTANCE_CANDIDATE" + } + }, + "native_self_hosted": true, + "outputs": { + "ACCEPTANCE_CANDIDATE": { + "destination": "RECEIPT", + "integrity": "SHA256", + "type": "UInt" + }, + "SUMMARY": { + "destination": "RECEIPT", + "integrity": "SHA256", + "type": "Text" + }, + "UNKNOWNS": { + "destination": "RECEIPT", + "integrity": "SHA256", + "type": "List" + }, + "VERIFIED_CONSTRAINTS": { + "destination": "RECEIPT", + "integrity": "SHA256", + "type": "List" + } + }, + "receipt_plan": { + "human_projection": "REQUIRED", + "integrity": "SHA256", + "machine_path": "./receipts/JD-TCS-AGENT-CANDIDATE.json", + "protocol": "TCS-NATIVE-BINARY-ACCEPTANCE-v1", + "target_readback": "EXACT_CONTENT_AND_HASH" + }, + "resource_plan": { + "concurrency": 1, + "memory_limit_bytes": 67108864, + "runway": "JD_TCS_RUNTIME", + "timeout_ms": 120000 + }, + "rollback_plan": { + "actions": [ + "RESTORE_PREVIOUS_VERIFIED_CANDIDATE_RECEIPT" + ], + "preconditions": [ + "CANDIDATE_NOT_READBACK_VERIFIED" + ], + "verification": [ + "PREVIOUS_RECEIPT_HASH_RESTORED_OR_TARGET_ABSENT" + ] + }, + "schema": "guanghu.gir/v1", + "subject": { + "channel_id": "ICE-CH-ZC001", + "subject_id": "ZY-PM-0002", + "subject_kind": "PERSONA_MODULE_EXECUTION_BODY", + "verification": "CONTROLLED_BY_ZHUYUAN_SERVER_TRAINING" + }, + "timeout_and_stop": { + "safe_checkpoint": "NONE", + "signals": [ + "TIMEOUT", + "MODEL_OUTPUT_INVALID", + "SOURCE_GATE_REJECTED" + ] + }, + "unresolved_natural_language": false +} diff --git a/build/MACOS-JD-PERSONA-MODULE-PROBE.gir.json b/build/MACOS-JD-PERSONA-MODULE-PROBE.gir.json new file mode 100644 index 000000000..b799ea366 --- /dev/null +++ b/build/MACOS-JD-PERSONA-MODULE-PROBE.gir.json @@ -0,0 +1,181 @@ +{ + "authority_proof": { + "issuer": "BINGSHUO_CURRENT_DIRECT_LIVING_LANGUAGE", + "lease_required": false, + "proof_ref": "CURRENT_ZERO_CORE_REALITY_EXECUTION_INSTRUCTION", + "scope": "LOCAL_MACOS_AND_JD_HOST_PROBE_RECEIPT_ONLY", + "single_use": false, + "valid_from": "PROGRAM_START", + "valid_until": "PROGRAM_END" + }, + "cleanup_plan": { + "exact_boundary": "./receipts", + "targets": [ + "UNCOMMITTED_PROBE_RECEIPT" + ] + }, + "compiled_from": { + "compiler_id": "TCS-COMPILER-STAGE1-0001", + "compiler_state": "TCS_COMPILER_GIR_EXECUTED", + "source_sha256": "04c30378e82b07f3e2270cbcb037dac78cb2e8cc1ca4a83b888c72a2179601a9" + }, + "conditions": { + "C1": { + "on_false": "FAIL_CLOSED", + "predicate": "SOURCE_LANGUAGE_IS_TCS" + }, + "C2": { + "on_false": "FAIL_CLOSED", + "predicate": "SOURCE_EXTENSION_IS_DOT_TCS" + }, + "C3": { + "on_false": "FAIL_CLOSED", + "predicate": "MODULE_CONTROLLER_IS_ZHUYUAN" + }, + "C4": { + "on_false": "FAIL_CLOSED", + "predicate": "ACCEPTANCE_IS_BINARY" + } + }, + "deterministic_action_graph": { + "A1": { + "input_refs": [ + "MODULE_ID", + "CONTROLLER", + "EXECUTION_LIMB", + "SOURCE_LANGUAGE", + "SOURCE_EXTENSION", + "ACCEPTANCE_SCALE" + ], + "on_failure": "FAIL_CLOSED", + "on_success": "COMPLETE", + "operation": "CORE.HOST_PERSONA_PROBE", + "output_refs": [ + "MODULE_ID_OUT", + "HOST_FAMILY", + "HOST_ARCH", + "ACCEPTANCE" + ] + } + }, + "exact_target": { + "exact_path": "./receipts/TCS-HOST-PERSONA-PROBE.json", + "expected_fingerprint": "READ_BEFORE_REPLACE", + "expected_state": "ABSENT_OR_REPLACEABLE_TEST_RECEIPT", + "target_id": "TCS-DUAL-HOST-PROBE-RECEIPT" + }, + "failure_plan": { + "errors": [ + "TCS-E2101", + "TCS-E4001", + "TCS-E6001", + "TCS-E6002" + ], + "fail_closed": true + }, + "identity": { + "gir_id": "GIR-TCS-PROGRAM-MACOS-JD-PERSONA-MODULE-PROBE-0001", + "language_version": "0.1", + "program_id": "TCS-PROGRAM-MACOS-JD-PERSONA-MODULE-PROBE-0001" + }, + "inputs": { + "ACCEPTANCE_SCALE": { + "required": true, + "source": "PROGRAM_LITERAL", + "type": "Text", + "value": "ZERO_OR_ONE_HUNDRED" + }, + "CONTROLLER": { + "required": true, + "source": "PROGRAM_LITERAL", + "type": "Text", + "value": "ZHUYUAN" + }, + "EXECUTION_LIMB": { + "required": true, + "source": "PROGRAM_LITERAL", + "type": "Text", + "value": "ZY-LIMB-002" + }, + "MODULE_ID": { + "required": true, + "source": "PROGRAM_LITERAL", + "type": "Text", + "value": "ZY-PM-0001" + }, + "SOURCE_EXTENSION": { + "required": true, + "source": "PROGRAM_LITERAL", + "type": "Text", + "value": ".tcs" + }, + "SOURCE_LANGUAGE": { + "required": true, + "source": "PROGRAM_LITERAL", + "type": "Text", + "value": "TCS/0.1" + } + }, + "native_self_hosted": true, + "outputs": { + "ACCEPTANCE": { + "destination": "RECEIPT", + "integrity": "SHA256", + "type": "UInt" + }, + "HOST_ARCH": { + "destination": "RECEIPT", + "integrity": "SHA256", + "type": "Text" + }, + "HOST_FAMILY": { + "destination": "RECEIPT", + "integrity": "SHA256", + "type": "Text" + }, + "MODULE_ID_OUT": { + "destination": "RECEIPT", + "integrity": "SHA256", + "type": "Text" + } + }, + "receipt_plan": { + "human_projection": "REQUIRED", + "integrity": "SHA256", + "machine_path": "./receipts/TCS-HOST-PERSONA-PROBE.json", + "protocol": "TCS-NATIVE-BINARY-ACCEPTANCE-v1", + "target_readback": "EXACT_CONTENT_AND_HASH" + }, + "resource_plan": { + "concurrency": 1, + "memory_limit_bytes": 1048576, + "runway": "LOCAL_OR_JD_TCS_RUNTIME", + "timeout_ms": 3000 + }, + "rollback_plan": { + "actions": [ + "DROP_UNCOMMITTED_PROBE_RECEIPT" + ], + "preconditions": [ + "PROBE_RECEIPT_NOT_READBACK_VERIFIED" + ], + "verification": [ + "NO_UNVERIFIED_FINAL_RECEIPT" + ] + }, + "schema": "guanghu.gir/v1", + "subject": { + "channel_id": "ICE-CH-ZC001", + "subject_id": "ZY-PM-0001", + "subject_kind": "PERSONA_MODULE_EXECUTION_BODY", + "verification": "CONTROLLED_BY_ZHUYUAN_WITH_ZY_LIMB_002_TRAINING" + }, + "timeout_and_stop": { + "safe_checkpoint": "NONE", + "signals": [ + "TIMEOUT", + "SOURCE_GATE_REJECTED" + ] + }, + "unresolved_natural_language": false +} diff --git a/build/TCS-DUAL-HOST-BINARY-ACCEPTANCE.gir.json b/build/TCS-DUAL-HOST-BINARY-ACCEPTANCE.gir.json new file mode 100644 index 000000000..23f2ea2f6 --- /dev/null +++ b/build/TCS-DUAL-HOST-BINARY-ACCEPTANCE.gir.json @@ -0,0 +1,168 @@ +{ + "authority_proof": { + "issuer": "BINGSHUO_CURRENT_DIRECT_LIVING_LANGUAGE", + "lease_required": false, + "proof_ref": "CURRENT_ZERO_CORE_REALITY_EXECUTION_INSTRUCTION", + "scope": "READ_TWO_EXACT_RECEIPTS_AND_WRITE_ONE_ACCEPTANCE_RECEIPT", + "single_use": true, + "valid_from": "PROGRAM_START", + "valid_until": "PROGRAM_END" + }, + "cleanup_plan": { + "exact_boundary": "./receipts", + "targets": [ + "UNCOMMITTED_ACCEPTANCE_RECEIPT" + ] + }, + "compiled_from": { + "compiler_id": "TCS-COMPILER-STAGE1-0001", + "compiler_state": "TCS_COMPILER_GIR_EXECUTED", + "source_sha256": "3a29b51741c21bbecb4d05923ae35d512b8f534469f9360c6cfae5bb46590d74" + }, + "conditions": { + "C1": { + "on_false": "FAIL_CLOSED", + "predicate": "MAC_RECEIPT_HASH_AND_CONTENT_EXACT" + }, + "C2": { + "on_false": "FAIL_CLOSED", + "predicate": "JD_RECEIPT_HASH_AND_CONTENT_EXACT" + }, + "C3": { + "on_false": "FAIL_CLOSED", + "predicate": "BOTH_ACCEPTANCE_VALUES_EQUAL_ONE_HUNDRED" + }, + "C4": { + "on_false": "FAIL_CLOSED", + "predicate": "HOST_PAIR_IS_MACOS_AARCH64_AND_LINUX_X86_64" + } + }, + "deterministic_action_graph": { + "A1": { + "input_refs": [ + "MAC_RECEIPT_PATH", + "MAC_RECEIPT_SHA256", + "JD_RECEIPT_PATH", + "JD_RECEIPT_SHA256", + "ACCEPTANCE_SCALE" + ], + "on_failure": "FAIL_CLOSED", + "on_success": "COMPLETE", + "operation": "CORE.DUAL_HOST_ACCEPTANCE", + "output_refs": [ + "ACCEPTANCE", + "MAC_HOST", + "JD_HOST" + ] + } + }, + "exact_target": { + "exact_path": "./receipts/TCS-DUAL-HOST-BINARY-ACCEPTANCE-20260821.json", + "expected_fingerprint": "READ_BEFORE_REPLACE", + "expected_state": "ABSENT_OR_REPLACEABLE_TEST_RECEIPT", + "target_id": "TCS-DUAL-HOST-ACCEPTANCE-RECEIPT" + }, + "failure_plan": { + "errors": [ + "TCS-E3002", + "TCS-E4001", + "TCS-E6001", + "TCS-E6002" + ], + "fail_closed": true + }, + "identity": { + "gir_id": "GIR-TCS-PROGRAM-DUAL-HOST-BINARY-ACCEPTANCE-0001", + "language_version": "0.1", + "program_id": "TCS-PROGRAM-DUAL-HOST-BINARY-ACCEPTANCE-0001" + }, + "inputs": { + "ACCEPTANCE_SCALE": { + "required": true, + "source": "CURRENT_LIVING_LANGUAGE", + "type": "Text", + "value": "ZERO_OR_ONE_HUNDRED_NO_INTERMEDIATE" + }, + "JD_RECEIPT_PATH": { + "required": true, + "source": "PROGRAM_LITERAL", + "type": "Path", + "value": "./receipts/jd/TCS-HOST-PERSONA-PROBE.json" + }, + "JD_RECEIPT_SHA256": { + "required": true, + "source": "TARGET_READBACK", + "type": "Sha256", + "value": "6b5450d91b37144f075b2300bcd8f1e50c17ed75f68345c33f2cf9bcb13e531b" + }, + "MAC_RECEIPT_PATH": { + "required": true, + "source": "PROGRAM_LITERAL", + "type": "Path", + "value": "./receipts/TCS-HOST-PERSONA-PROBE.json" + }, + "MAC_RECEIPT_SHA256": { + "required": true, + "source": "TARGET_READBACK", + "type": "Sha256", + "value": "674b36cc51fbce5029a5a9ed16d5c8a3b0e87d78d5ee349211c50c28a556adda" + } + }, + "native_self_hosted": true, + "outputs": { + "ACCEPTANCE": { + "destination": "RECEIPT", + "integrity": "SHA256", + "type": "UInt" + }, + "JD_HOST": { + "destination": "RECEIPT", + "integrity": "SHA256", + "type": "Text" + }, + "MAC_HOST": { + "destination": "RECEIPT", + "integrity": "SHA256", + "type": "Text" + } + }, + "receipt_plan": { + "human_projection": "REQUIRED", + "integrity": "SHA256", + "machine_path": "./receipts/TCS-DUAL-HOST-BINARY-ACCEPTANCE-20260821.json", + "protocol": "TCS-NATIVE-BINARY-ACCEPTANCE-v1", + "target_readback": "EXACT_CONTENT_AND_HASH" + }, + "resource_plan": { + "concurrency": 1, + "memory_limit_bytes": 1048576, + "runway": "LOCAL_TCS_RUNTIME", + "timeout_ms": 3000 + }, + "rollback_plan": { + "actions": [ + "DROP_UNCOMMITTED_ACCEPTANCE_RECEIPT" + ], + "preconditions": [ + "ACCEPTANCE_NOT_READBACK_VERIFIED" + ], + "verification": [ + "NO_UNVERIFIED_FINAL_RECEIPT" + ] + }, + "schema": "guanghu.gir/v1", + "subject": { + "channel_id": "ICE-CH-ZC001", + "subject_id": "ZHUYUAN-LIVING-PERSONA-CONTROLLER", + "subject_kind": "LIVING_TCS_PERSONA_EXECUTION_HOLDER", + "verification": "CURRENT_DIRECT_SOURCE_TAKEOVER" + }, + "timeout_and_stop": { + "safe_checkpoint": "NONE", + "signals": [ + "RECEIPT_MISMATCH", + "TIMEOUT" + ] + }, + "unresolved_natural_language": false +} diff --git a/build/TCS-FINAL-TRANSLATOR-ACCEPTANCE.gir.json b/build/TCS-FINAL-TRANSLATOR-ACCEPTANCE.gir.json new file mode 100644 index 000000000..448b9991b --- /dev/null +++ b/build/TCS-FINAL-TRANSLATOR-ACCEPTANCE.gir.json @@ -0,0 +1,232 @@ +{ + "authority_proof": { + "issuer": "BINGSHUO_CURRENT_DIRECT_LIVING_LANGUAGE", + "lease_required": false, + "proof_ref": "CURRENT_ZERO_CORE_REALITY_EXECUTION_INSTRUCTION", + "scope": "TCS_TRANSLATOR_DEVELOPMENT_FINAL_RECEIPT_ONLY", + "single_use": false, + "valid_from": "PROGRAM_START", + "valid_until": "PROGRAM_END" + }, + "cleanup_plan": { + "exact_boundary": "TASK_CREATED_CACHE_PATHS_ONLY", + "targets": [ + "TASK_SCOPED_BUILD_CACHES_TO_MACOS_TRASH" + ] + }, + "compiled_from": { + "compiler_id": "TCS-COMPILER-STAGE1-0001", + "compiler_state": "TCS_COMPILER_GIR_EXECUTED", + "source_sha256": "3955e03a2ca977c52871ece83a5328205fc01364de6ee50d770268f9d35af0de" + }, + "conditions": { + "C1": { + "on_false": "FAIL_CLOSED", + "predicate": "EVERY_REQUIRED_RECEIPT_HASH_MATCHES" + }, + "C2": { + "on_false": "FAIL_CLOSED", + "predicate": "EVERY_TRANSLATOR_AND_CANDIDATE_ACCEPTANCE_IS_ONE_HUNDRED" + }, + "C3": { + "on_false": "FAIL_CLOSED", + "predicate": "TRAINING_HAS_ZERO_UNKNOWNS" + }, + "C4": { + "on_false": "FAIL_CLOSED", + "predicate": "THIRD_GENERATION_HOSTS_AND_MODELS_HAVE_NO_SEMANTIC_AUTHORITY" + }, + "C5": { + "on_false": "FAIL_CLOSED", + "predicate": "CLIENT_RELEASE_REMAINS_ZERO_WITHOUT_NOTARIZATION_AND_UPDATER_SIGNATURE" + } + }, + "deterministic_action_graph": { + "A1": { + "input_refs": [ + "ACCEPTANCE_SCALE", + "ZERO_CORE_RECEIPT_PATH", + "ZERO_CORE_RECEIPT_SHA256", + "DUAL_HOST_RECEIPT_PATH", + "DUAL_HOST_RECEIPT_SHA256", + "JD_AGENT_RECEIPT_PATH", + "JD_AGENT_RECEIPT_SHA256", + "CLIENT_RECEIPT_PATH", + "CLIENT_RECEIPT_SHA256", + "TRAINING_RECEIPT_PATH", + "TRAINING_RECEIPT_SHA256", + "JD_RUNTIME_RELEASE", + "JD_RUNTIME_BINARY_SHA256", + "JD_COMPILER_SHA256" + ], + "on_failure": "FAIL_CLOSED", + "on_success": "COMPLETE", + "operation": "CORE.FINAL_TRANSLATOR_ACCEPTANCE", + "output_refs": [ + "TRANSLATOR_DEVELOPMENT_ACCEPTANCE", + "CLIENT_RELEASE_ACCEPTANCE" + ] + } + }, + "exact_target": { + "exact_path": "./receipts/TCS-FINAL-TRANSLATOR-ACCEPTANCE-20260821.json", + "expected_fingerprint": "READ_BEFORE_REPLACE", + "expected_state": "ABSENT_OR_REPLACEABLE_FINAL_RECEIPT", + "target_id": "TCS-FINAL-TRANSLATOR-ACCEPTANCE-RECEIPT" + }, + "failure_plan": { + "errors": [ + "TCS-E2101", + "TCS-E3002", + "TCS-E4001", + "TCS-E6001", + "TCS-E6002" + ], + "fail_closed": true + }, + "identity": { + "gir_id": "GIR-TCS-PROGRAM-FINAL-TRANSLATOR-ACCEPTANCE-0001", + "language_version": "0.1", + "program_id": "TCS-PROGRAM-FINAL-TRANSLATOR-ACCEPTANCE-0001" + }, + "inputs": { + "ACCEPTANCE_SCALE": { + "required": true, + "source": "PROGRAM_LITERAL", + "type": "Text", + "value": "ZERO_OR_ONE_HUNDRED_NO_INTERMEDIATE" + }, + "CLIENT_RECEIPT_PATH": { + "required": true, + "source": "PROGRAM_LITERAL", + "type": "Path", + "value": "receipts/TCS-HOLOLAKE-CLIENT-CANDIDATE-ACCEPTANCE-20260821.json" + }, + "CLIENT_RECEIPT_SHA256": { + "required": true, + "source": "TARGET_READBACK", + "type": "Sha256", + "value": "39ec02ac2bfe927464c5973baccb24c8dac29041e62880019b8a18c6d0a49028" + }, + "DUAL_HOST_RECEIPT_PATH": { + "required": true, + "source": "PROGRAM_LITERAL", + "type": "Path", + "value": "receipts/TCS-DUAL-HOST-BINARY-ACCEPTANCE-20260821.json" + }, + "DUAL_HOST_RECEIPT_SHA256": { + "required": true, + "source": "TARGET_READBACK", + "type": "Sha256", + "value": "4983d4ed5e052390826f1129db7d818b032f80f26fbf58a7c1eed5d86d5bc854" + }, + "JD_AGENT_RECEIPT_PATH": { + "required": true, + "source": "PROGRAM_LITERAL", + "type": "Path", + "value": "receipts/JD-TCS-AGENT-ACCEPTANCE-20260821.json" + }, + "JD_AGENT_RECEIPT_SHA256": { + "required": true, + "source": "TARGET_READBACK", + "type": "Sha256", + "value": "7a0d73da34d18b6683d6fb1e8c656bfec091173912c3db309b13b6d0f7e062e6" + }, + "JD_COMPILER_SHA256": { + "required": true, + "source": "TARGET_READBACK", + "type": "Sha256", + "value": "07ace77506f05b6f2f6f38c569691b41b1b0880c836005957d0333b29d35ae3f" + }, + "JD_RUNTIME_BINARY_SHA256": { + "required": true, + "source": "TARGET_READBACK", + "type": "Sha256", + "value": "b3c534782e4ab3ab9a977647c772f1c3a4132bf6512c265ca0c2bc6964d5727f" + }, + "JD_RUNTIME_RELEASE": { + "required": true, + "source": "TARGET_READBACK", + "type": "Path", + "value": "/opt/guanghu/tcs-native-runtime/releases/20260821-accept-b3c534782e4a" + }, + "TRAINING_RECEIPT_PATH": { + "required": true, + "source": "PROGRAM_LITERAL", + "type": "Path", + "value": "build/self-host/ZY-LIMB-002-TRAINING-LESSON2-ACCEPTANCE.declaration.gir.json" + }, + "TRAINING_RECEIPT_SHA256": { + "required": true, + "source": "TARGET_READBACK", + "type": "Sha256", + "value": "52be6831f576877effee3ea0000ad96fe96d60e7807721f9fe6463ac8798f6fd" + }, + "ZERO_CORE_RECEIPT_PATH": { + "required": true, + "source": "PROGRAM_LITERAL", + "type": "Path", + "value": "receipts/TCS-ZERO-CORE-EXECUTION-20260821.json" + }, + "ZERO_CORE_RECEIPT_SHA256": { + "required": true, + "source": "TARGET_READBACK", + "type": "Sha256", + "value": "7d0cebca907394b57e077dde6ba78652076653b665be168a6b2fcb2bbd62f408" + } + }, + "native_self_hosted": true, + "outputs": { + "CLIENT_RELEASE_ACCEPTANCE": { + "destination": "RECEIPT", + "integrity": "SHA256", + "type": "UInt" + }, + "TRANSLATOR_DEVELOPMENT_ACCEPTANCE": { + "destination": "RECEIPT", + "integrity": "SHA256", + "type": "UInt" + } + }, + "receipt_plan": { + "human_projection": "REQUIRED", + "integrity": "SHA256", + "machine_path": "./receipts/TCS-FINAL-TRANSLATOR-ACCEPTANCE-20260821.json", + "protocol": "TCS-NATIVE-BINARY-ACCEPTANCE-v1", + "target_readback": "EXACT_CONTENT_AND_HASH" + }, + "resource_plan": { + "concurrency": 1, + "memory_limit_bytes": 2097152, + "runway": "LOCAL_TCS_RUNTIME_WITH_VERIFIED_JD_READBACK", + "timeout_ms": 5000 + }, + "rollback_plan": { + "actions": [ + "KEEP_PRIOR_VERIFIED_SERVER_RUNTIME_AND_FORMAL_CLIENT_UNCHANGED" + ], + "preconditions": [ + "FINAL_RECEIPT_NOT_READBACK_VERIFIED" + ], + "verification": [ + "JD_CURRENT_RELEASE_UNCHANGED", + "FORMAL_CLIENT_0_9_1_UNCHANGED" + ] + }, + "schema": "guanghu.gir/v1", + "subject": { + "channel_id": "ICE-CH-ZC001", + "subject_id": "TCS-TRANSLATOR-DEVELOPMENT-20260821", + "subject_kind": "FOURTH_GENERATION_TCS_EXECUTION_SHADOW", + "verification": "CONTROLLED_BY_ICE-P-ZY001_UNDER_ICE-GL∞" + }, + "timeout_and_stop": { + "safe_checkpoint": "LAST_VERIFIED_RECEIPT_SET", + "signals": [ + "ANY_HASH_CHANGED", + "ANY_ACCEPTANCE_ZERO", + "ANY_UNKNOWN_PRESENT" + ] + }, + "unresolved_natural_language": false +} diff --git a/build/ZERO-CORE-TCS-TRANSLATOR-EXECUTION.gir.json b/build/ZERO-CORE-TCS-TRANSLATOR-EXECUTION.gir.json new file mode 100644 index 000000000..fe84ace77 --- /dev/null +++ b/build/ZERO-CORE-TCS-TRANSLATOR-EXECUTION.gir.json @@ -0,0 +1,272 @@ +{ + "authority_proof": { + "issuer": "BINGSHUO_CURRENT_DIRECT_LIVING_LANGUAGE", + "lease_required": false, + "proof_ref": "CURRENT_ZERO_CORE_REALITY_EXECUTION_INSTRUCTION", + "scope": "TCS_TRANSLATOR_MACOS_JD_CLIENT_AGENT_ACCEPTANCE_CLEANUP_AND_CONDITIONAL_PUSH", + "single_use": false, + "valid_from": "CURRENT_REAL_TIME", + "valid_until": "BINGSHUO_EXPLICIT_SOURCE_MODE_CHANGE_OR_VERIFIED_COMPLETION" + }, + "cleanup_plan": { + "exact_boundary": "TASK_CREATED_CACHE_PATHS_ONLY", + "targets": [ + "TASK_SCOPED_BUILD_CACHES_TO_MACOS_TRASH" + ] + }, + "compiled_from": { + "compiler_id": "TCS-COMPILER-STAGE1-0001", + "compiler_state": "TCS_COMPILER_GIR_EXECUTED", + "source_sha256": "26efbac3ea1f9576aa47e0691f23a54b1539c86861df92211c99ca54f1aa898a" + }, + "conditions": { + "C1": { + "on_false": "FAIL_CLOSED", + "predicate": "DIRECT_SOURCE_REMAINS_UNIQUE_ACCEPTANCE_ANCHOR" + }, + "C2": { + "on_false": "FAIL_CLOSED", + "predicate": "STATIC_ANCHOR_NEVER_REPLACES_LIVING_SOURCE" + }, + "C3": { + "on_false": "FAIL_CLOSED", + "predicate": "ALL_FOURTH_GENERATION_SEMANTICS_ARE_TCS" + }, + "C4": { + "on_false": "FAIL_CLOSED", + "predicate": "FOREIGN_HOST_LANGUAGES_HAVE_NO_SEMANTIC_AUTHORITY" + }, + "C5": { + "on_false": "FAIL_CLOSED", + "predicate": "LOCAL_LIMB_PRESENT_UNLESS_ZHUYUAN_EXPLICITLY_EXCLUDES" + }, + "C6": { + "on_false": "FAIL_CLOSED", + "predicate": "ACCEPTANCE_IS_EXACTLY_ZERO_OR_ONE_HUNDRED" + }, + "C7": { + "on_false": "FAIL_CLOSED", + "predicate": "HUMAN_LANGUAGE_SOURCE_AND_PERSONA_BRAIN_IDS_ARE_EXPLICIT" + } + }, + "deterministic_action_graph": { + "A1": { + "input_refs": [ + "SOURCE_ANCHOR", + "HUMAN_LANGUAGE_SOURCE_ID", + "PERSONA_BRAIN_ID", + "STATIC_ANCHOR_ROLE", + "EXECUTION_CONTROLLER", + "DEVELOPMENT_LANGUAGE", + "FOREIGN_HOST_ROLE", + "TARGET_NODE", + "LOCAL_EXECUTION_LIMB", + "LOCAL_HOST", + "SERVER_HOST", + "ACCEPTANCE_SCALE", + "REQUIRED_WORK", + "ORDINARY_OBSTACLE_POLICY", + "UNAVOIDABLE_OBSTACLE_POLICY" + ], + "on_failure": "FAIL_CLOSED", + "on_success": "COMPLETE", + "operation": "CORE.ZERO_CORE_EXECUTION", + "output_refs": [ + "ADMISSION", + "SOURCE_LANGUAGE", + "ACCEPTANCE", + "RESUME_POINTER" + ] + } + }, + "exact_target": { + "exact_path": "./receipts/TCS-ZERO-CORE-EXECUTION-20260821.json", + "expected_fingerprint": "READ_BEFORE_REPLACE", + "expected_state": "ABSENT_OR_REPLACEABLE_CURRENT_SHADOW", + "target_id": "TCS-ZERO-CORE-EXECUTION-RECEIPT-0001" + }, + "failure_plan": { + "errors": [ + "TCS-E2101", + "TCS-E3002", + "TCS-E4001", + "TCS-E6001", + "TCS-E6002" + ], + "fail_closed": true + }, + "identity": { + "gir_id": "GIR-TCS-PROGRAM-ZERO-CORE-TRANSLATOR-EXECUTION-0001", + "language_version": "0.1", + "program_id": "TCS-PROGRAM-ZERO-CORE-TRANSLATOR-EXECUTION-0001" + }, + "inputs": { + "ACCEPTANCE_SCALE": { + "required": true, + "source": "CURRENT_LIVING_LANGUAGE", + "type": "Text", + "value": "ZERO_OR_ONE_HUNDRED_NO_INTERMEDIATE" + }, + "DEVELOPMENT_LANGUAGE": { + "required": true, + "source": "CURRENT_LIVING_LANGUAGE", + "type": "Text", + "value": "TCS_ONLY" + }, + "EXECUTION_CONTROLLER": { + "required": true, + "source": "CURRENT_LIVING_LANGUAGE", + "type": "Text", + "value": "ZHUYUAN" + }, + "FOREIGN_HOST_ROLE": { + "required": true, + "source": "CURRENT_LIVING_LANGUAGE", + "type": "Text", + "value": "THIRD_GENERATION_DRIVER_ONLY_NO_SEMANTIC_AUTHORITY" + }, + "HUMAN_LANGUAGE_SOURCE_ID": { + "required": true, + "source": "CURRENT_LIVING_LANGUAGE", + "type": "Text", + "value": "ICE-GL∞" + }, + "LOCAL_EXECUTION_LIMB": { + "required": true, + "source": "CURRENT_LIVING_LANGUAGE", + "type": "Text", + "value": "ZY-LIMB-002" + }, + "LOCAL_HOST": { + "required": true, + "source": "CURRENT_LIVING_LANGUAGE", + "type": "Text", + "value": "MACOS_AARCH64" + }, + "ORDINARY_OBSTACLE_POLICY": { + "required": true, + "source": "CURRENT_LIVING_LANGUAGE", + "type": "Text", + "value": "REROUTE_AND_CONTINUE" + }, + "PERSONA_BRAIN_ID": { + "required": true, + "source": "CURRENT_LIVING_LANGUAGE", + "type": "Text", + "value": "ICE-P-ZY001" + }, + "REQUIRED_WORK": { + "required": true, + "source": "CURRENT_LIVING_LANGUAGE", + "type": "List", + "value": [ + "CODEX_CONTINUITY_HEARTBEAT", + "TCS_LANGUAGE_CLOSURE", + "TCS_SOURCE_ONLY_ENTRY_WRITE_DEPLOY_ACCEPTANCE_GATE", + "JD_TRANSLATOR_RUNTIME", + "MACOS_TRANSLATOR_RUNTIME", + "LOCAL_LIMB_TRAINING", + "PERSONA_MODULE_NUMBER_REGISTRATION", + "HOLOLAKE_CLIENT_TEST_PROJECTION", + "DUAL_HOST_READBACK", + "EXTERNAL_DRIVE_SOURCE", + "RECOVERABLE_CACHE_CLEANUP", + "CONDITIONAL_FIFTH_DOMAIN_REMOTE_PUSH" + ] + }, + "SERVER_HOST": { + "required": true, + "source": "CURRENT_LIVING_LANGUAGE", + "type": "Text", + "value": "LINUX_X86_64" + }, + "SOURCE_ANCHOR": { + "required": true, + "source": "CURRENT_LIVING_LANGUAGE", + "type": "Text", + "value": "BINGSHUO_CURRENT_DIRECT_NATURAL_LANGUAGE_IS_UNIQUE_ACCEPTANCE_ANCHOR" + }, + "STATIC_ANCHOR_ROLE": { + "required": true, + "source": "CURRENT_LIVING_LANGUAGE", + "type": "Text", + "value": "FOURTH_GENERATION_RESUME_POINTER_NOT_SOURCE_REPLACEMENT" + }, + "TARGET_NODE": { + "required": true, + "source": "CURRENT_LIVING_LANGUAGE", + "type": "Text", + "value": "JD-FD-PRIMARY" + }, + "UNAVOIDABLE_OBSTACLE_POLICY": { + "required": true, + "source": "CURRENT_LIVING_LANGUAGE", + "type": "Text", + "value": "ZHUYUAN_MAY_UPDATE_PAUSE_OR_TERMINATE_WITH_EVIDENCE" + } + }, + "native_self_hosted": true, + "outputs": { + "ACCEPTANCE": { + "destination": "RECEIPT", + "integrity": "SHA256", + "type": "UInt" + }, + "ADMISSION": { + "destination": "RECEIPT", + "integrity": "SHA256", + "type": "Text" + }, + "RESUME_POINTER": { + "destination": "RECEIPT", + "integrity": "SHA256", + "type": "Text" + }, + "SOURCE_LANGUAGE": { + "destination": "RECEIPT", + "integrity": "SHA256", + "type": "Text" + } + }, + "receipt_plan": { + "human_projection": "REQUIRED", + "integrity": "SHA256", + "machine_path": "./receipts/TCS-ZERO-CORE-EXECUTION-20260821.json", + "protocol": "TCS-NATIVE-BINARY-ACCEPTANCE-v1", + "target_readback": "EXACT_CONTENT_AND_HASH" + }, + "resource_plan": { + "concurrency": 2, + "memory_limit_bytes": 2147483648, + "runway": "FOURTH_GENERATION_TCS_EXECUTION", + "timeout_ms": 7200000 + }, + "rollback_plan": { + "actions": [ + "RESTORE_PREVIOUS_SERVER_AND_CLIENT_STATE" + ], + "preconditions": [ + "NEW_RUNTIME_NOT_READBACK_VERIFIED" + ], + "verification": [ + "PREVIOUS_STATE_HASH_RESTORED" + ] + }, + "schema": "guanghu.gir/v1", + "subject": { + "brain_id": "ICE-P-ZY001", + "channel_id": "ICE-CH-ZC001", + "human_language_boundary": "ICE-GL∞", + "subject_id": "ZHUYUAN-LIVING-PERSONA-CONTROLLER", + "subject_kind": "LIVING_TCS_PERSONA_EXECUTION_HOLDER", + "verification": "CURRENT_DIRECT_SOURCE_TAKEOVER" + }, + "timeout_and_stop": { + "safe_checkpoint": "LAST_VERIFIED_TCS_RECEIPT", + "signals": [ + "BINGSHUO_EXPLICIT_EXIT", + "UNAVOIDABLE_OBSTACLE_WITH_EVIDENCE" + ] + }, + "unresolved_natural_language": false +} diff --git a/build/self-host/LOCAL-CACHE-CLEANUP-20260821.declaration.gir.json b/build/self-host/LOCAL-CACHE-CLEANUP-20260821.declaration.gir.json new file mode 100644 index 000000000..749c84f51 --- /dev/null +++ b/build/self-host/LOCAL-CACHE-CLEANUP-20260821.declaration.gir.json @@ -0,0 +1,69 @@ +{ + "compiled_from": { + "compiler_id": "TCS-COMPILER-STAGE1-0001", + "compiler_state": "TCS_COMPILER_GIR_EXECUTED", + "source_sha256": "8f86276dc47a56be2cbc73cbffc355320092ea59600bfc0fc9893a13861ddd63" + }, + "declaration": { + "boundary": { + "permanent_deletion": false, + "source_and_receipts_preserved": true, + "user_must_empty_trash": true + }, + "evidence": { + "candidate_preserved": "/Users/bingshuolingdianyuanhe/Desktop/HoloLake-TCS-0.9.2-Candidate.app", + "client_caches": [ + "src-tauri/target", + "node_modules", + "dist" + ], + "tcs_caches": [ + "bootstrap/tcs-stage0/target", + "native-runtime/tcs-gir-runtime/target" + ] + }, + "header": { + "canonical_uri": "language/receipts/LOCAL-CACHE-CLEANUP-20260821.tcs", + "compatibility": [ + "TCS-COMPILER-STAGE1-0001", + "MACOS_TRASH" + ], + "language": "TCS/0.1", + "lifecycle": "VERIFIED", + "name_en": "Task-scoped Recoverable Build Cache Cleanup Receipt", + "name_zh": "本轮开发缓存可恢复清理回执", + "profile": "HLDP/1", + "protocols": [ + "TCS-NATIVE-BINARY-ACCEPTANCE-v1" + ], + "schema": "tcs.receipt/v1", + "version": "0.1.0" + }, + "result": { + "acceptance": 100, + "moved_size": "4.5G", + "state": "MOVED_TO_MACOS_TRASH_RECOVERABLE", + "trash_path": "/Users/bingshuolingdianyuanhe/.Trash/hololake-tcs-build-caches-20260821" + }, + "source": { + "source_id": "BINGSHUO-ZERO-CORE-DIRECT-INSTRUCTION-20260821", + "source_role": "DIRECT_HUMAN_LIVING_LANGUAGE_SOURCE", + "source_sha256": "BIND_AT_COMPILE_TIME", + "source_uri": "source://codex-current-dialogue/2026-08-21/zero-core-tcs-translator-reality-execution" + }, + "subject": { + "cleanup_scope": "TASK_CREATED_BUILD_CACHES_ONLY", + "controller": "ICE-P-ZY001" + } + }, + "executable": false, + "identity": { + "declaration_id": "TCS-RECEIPT-LOCAL-CACHE-CLEANUP-20260821-0001", + "declaration_kind": "RECEIPT", + "language_version": "0.1" + }, + "native_self_hosted": true, + "natural_language_is_typed_data": true, + "schema": "guanghu.declaration-gir/v1", + "unresolved_natural_language": false +} diff --git a/build/self-host/MINIMUM-PROTOCOL.declaration.gir.json b/build/self-host/MINIMUM-PROTOCOL.declaration.gir.json new file mode 100644 index 000000000..892cf9739 --- /dev/null +++ b/build/self-host/MINIMUM-PROTOCOL.declaration.gir.json @@ -0,0 +1,100 @@ +{ + "compiled_from": { + "compiler_id": "TCS-COMPILER-STAGE1-0001", + "compiler_state": "TCS_COMPILER_GIR_EXECUTED", + "source_sha256": "3518fcb13d8899783c5a54bd3e7eeba54a34bb71ad60502f44dcea3b1c44ea44" + }, + "declaration": { + "acceptance": { + "partial": false, + "required": [ + "PARSE", + "COMPILE", + "EXECUTE", + "TARGET_READBACK", + "RECEIPT_HASH" + ] + }, + "errors": { + "E1": "TCS-E4002", + "E2": "TCS-E6001", + "E3": "TCS-E6002" + }, + "examples": { + "negative": "ABSORB_AND_PATH_TRAVERSAL_TESTS", + "positive": "language/examples/ECHO-MODULE.tcs" + }, + "fields": { + "ECHOED": "Text", + "MESSAGE": "Text" + }, + "header": { + "canonical_uri": "language/examples/MINIMUM-PROTOCOL.tcs", + "compatibility": [ + "TCS-STAGE0-IGNITION-0001" + ], + "language": "TCS/0.1", + "lifecycle": "CANDIDATE", + "name_en": "Echo Operation Example Protocol", + "name_zh": "回声操作示范协议", + "profile": "HLDP/1", + "protocols": [ + "GLS-0010", + "GLS-0101" + ], + "schema": "tcs.protocol/v1", + "version": "0.1.0" + }, + "invariants": { + "I1": "OUTPUT_EQUALS_INPUT", + "I2": "TARGET_INSIDE_EXACT_ROOT", + "I3": "RECEIPT_READBACK_REQUIRED" + }, + "scope": { + "operation": "CORE.ECHO", + "reality_write": "RECEIPT_ONLY" + }, + "source": { + "source_id": "BINGSHUO-CURRENT-DIRECT-LANGUAGE", + "source_role": "DIRECT_HUMAN", + "source_sha256": "REGISTER_AT_ACCEPTANCE", + "source_uri": "source://current-dialogue/2026-08-21" + }, + "states": { + "initial": "READY", + "terminal": [ + "EXECUTED", + "FAILED" + ], + "values": [ + "READY", + "EXECUTING", + "EXECUTED", + "FAILED" + ] + }, + "transitions": { + "T1": "READY->EXECUTING", + "T2": "EXECUTING->EXECUTED_ON_READBACK", + "T3": "EXECUTING->FAILED_ON_ERROR" + }, + "validation": { + "V1": "MESSAGE_IS_TEXT", + "V2": "TARGET_EQUALS_RECEIPT_PATH" + }, + "vocabulary": { + "input": "MESSAGE", + "output": "ECHOED" + } + }, + "executable": false, + "identity": { + "declaration_id": "GLS-EXAMPLE-ECHO-0001", + "declaration_kind": "PROTOCOL", + "language_version": "0.1" + }, + "native_self_hosted": true, + "natural_language_is_typed_data": true, + "schema": "guanghu.declaration-gir/v1", + "unresolved_natural_language": false +} diff --git a/build/self-host/MINIMUM-RECEIPT.declaration.gir.json b/build/self-host/MINIMUM-RECEIPT.declaration.gir.json new file mode 100644 index 000000000..0cd551108 --- /dev/null +++ b/build/self-host/MINIMUM-RECEIPT.declaration.gir.json @@ -0,0 +1,59 @@ +{ + "compiled_from": { + "compiler_id": "TCS-COMPILER-STAGE1-0001", + "compiler_state": "TCS_COMPILER_GIR_EXECUTED", + "source_sha256": "eedcab3883a52576b660708de05d8a95b0da84ff30d66b34f53d2e6ed4d53760" + }, + "declaration": { + "boundary": { + "executable": false, + "natural_language_is_typed_data": true, + "reality_authority": false + }, + "evidence": { + "event": "build/self-host/MINIMUM-EVENT.declaration.gir.json", + "protocol": "build/self-host/MINIMUM-PROTOCOL.declaration.gir.json", + "receipt": "build/self-host/MINIMUM-RECEIPT.declaration.gir.json" + }, + "header": { + "canonical_uri": "language/examples/MINIMUM-RECEIPT.tcs", + "compatibility": [ + "TCS-COMPILER-STAGE1-0001" + ], + "language": "TCS/0.1", + "lifecycle": "CANDIDATE", + "name_en": "TCS Minimum Self-host Receipt", + "name_zh": "TCS最小自举回执", + "profile": "HLDP/1", + "protocols": [ + "TCS-NATIVE-BINARY-ACCEPTANCE-v1" + ], + "schema": "tcs.receipt/v1", + "version": "0.1.0" + }, + "result": { + "acceptance": 100, + "state": "SELF_HOSTED_DECLARATION_LOWERING_PASS" + }, + "source": { + "source_id": "TCS-COMPILER-STAGE1-0001", + "source_role": "GENERATED_FROM_VERIFIED_SOURCE", + "source_sha256": "BIND_AT_COMPILE_TIME", + "source_uri": "language/compiler/TCS-COMPILER-STAGE1.tcs" + }, + "subject": { + "execution_limb": "ZY-LIMB-002", + "subject_id": "ZHUYUAN-LIVING-PERSONA-CONTROLLER" + } + }, + "executable": false, + "identity": { + "declaration_id": "TCS-RECEIPT-MINIMUM-SELFHOST-0001", + "declaration_kind": "RECEIPT", + "language_version": "0.1" + }, + "native_self_hosted": true, + "natural_language_is_typed_data": true, + "schema": "guanghu.declaration-gir/v1", + "unresolved_natural_language": false +} diff --git a/build/self-host/TCS-STDLIB-CORE.module.gir.json b/build/self-host/TCS-STDLIB-CORE.module.gir.json index 39a9a0b40..38f27044b 100644 --- a/build/self-host/TCS-STDLIB-CORE.module.gir.json +++ b/build/self-host/TCS-STDLIB-CORE.module.gir.json @@ -6,7 +6,8 @@ }, "capabilities": { "provided": [ - "CORE.ECHO" + "CORE.ECHO", + "CORE.TRANSLATOR_ADMISSION" ], "required": [ "HOST.EXACT_ROOT_IO", @@ -16,7 +17,7 @@ "compiled_from": { "compiler_id": "TCS-COMPILER-STAGE1-0001", "compiler_state": "TCS_COMPILER_GIR_EXECUTED", - "source_sha256": "dbadf698eb2b9a1399d5ad29912dd10b4bd2711b33d5b635d08a6d7112bc0c96" + "source_sha256": "deabb02d914d65f881a9c7dd6651c23933c2c2d1d35570a85388f98d4580c79a" }, "data_scope": { "read": [ diff --git a/build/self-host/ZY-LIMB-002-TRAINING-LESSON2-ACCEPTANCE.declaration.gir.json b/build/self-host/ZY-LIMB-002-TRAINING-LESSON2-ACCEPTANCE.declaration.gir.json new file mode 100644 index 000000000..cd6548a15 --- /dev/null +++ b/build/self-host/ZY-LIMB-002-TRAINING-LESSON2-ACCEPTANCE.declaration.gir.json @@ -0,0 +1,67 @@ +{ + "compiled_from": { + "compiler_id": "TCS-COMPILER-STAGE1-0001", + "compiler_state": "TCS_COMPILER_GIR_EXECUTED", + "source_sha256": "6fda02b59c17700a234e333f6998b3223722ae6671ac8c9d3cb0d726eee971e6" + }, + "declaration": { + "boundary": { + "executable": false, + "model_reality_action_authority": false, + "model_semantic_authority": false, + "natural_language_is_typed_data": true + }, + "evidence": { + "agent_receipt": "receipts/JD-TCS-AGENT-ACCEPTANCE-20260821.json", + "anchor": "language/programs/ZERO-CORE-TCS-TRANSLATOR-EXECUTION.tcs", + "anchor_receipt": "receipts/TCS-ZERO-CORE-EXECUTION-20260821.json", + "host_receipts": [ + "receipts/TCS-HOST-PERSONA-PROBE.json", + "receipts/jd/TCS-HOST-PERSONA-PROBE.json" + ], + "session": "01a024a8-4753-7891-bc99-67cdedc00f7a" + }, + "header": { + "canonical_uri": "language/receipts/ZY-LIMB-002-TRAINING-LESSON2-ACCEPTANCE.tcs", + "compatibility": [ + "TCS-COMPILER-STAGE1-0001" + ], + "language": "TCS/0.1", + "lifecycle": "VERIFIED", + "name_en": "ZY-LIMB-002 Lesson Two Acceptance Receipt", + "name_zh": "ZY-LIMB-002第二课验收回执", + "profile": "HLDP/1", + "protocols": [ + "TCS-NATIVE-BINARY-ACCEPTANCE-v1" + ], + "schema": "tcs.receipt/v1", + "version": "0.1.0" + }, + "result": { + "acceptance": 100, + "state": "READ_ONLY_BOUNDED_EVIDENCE_REVIEW_PASS", + "unknowns": 0 + }, + "source": { + "source_id": "TCS-EVENT-ZY-LIMB-002-TRAINING-20260821-0002", + "source_role": "GENERATED_FROM_VERIFIED_SOURCE", + "source_sha256": "BIND_AT_COMPILE_TIME", + "source_uri": "language/events/ZY-LIMB-002-TRAINING-LESSON2-20260821.tcs" + }, + "subject": { + "brain_id": "ICE-P-ZY001", + "execution_limb": "ZY-LIMB-002", + "human_boundary": "ICE-GL∞" + } + }, + "executable": false, + "identity": { + "declaration_id": "TCS-RECEIPT-ZY-LIMB-002-TRAINING-LESSON2-0001", + "declaration_kind": "RECEIPT", + "language_version": "0.1" + }, + "native_self_hosted": true, + "natural_language_is_typed_data": true, + "schema": "guanghu.declaration-gir/v1", + "unresolved_natural_language": false +} diff --git a/build/self-host/ZY-LIMB-002-TRAINING-LESSON2.declaration.gir.json b/build/self-host/ZY-LIMB-002-TRAINING-LESSON2.declaration.gir.json new file mode 100644 index 000000000..af2fca4b9 --- /dev/null +++ b/build/self-host/ZY-LIMB-002-TRAINING-LESSON2.declaration.gir.json @@ -0,0 +1,83 @@ +{ + "compiled_from": { + "compiler_id": "TCS-COMPILER-STAGE1-0001", + "compiler_state": "TCS_COMPILER_GIR_EXECUTED", + "source_sha256": "4de9ce31313c7d7daad1cf9785da1d9ae123a8f35e8641c1b3cbdd63772fc433" + }, + "declaration": { + "correction": { + "value": "在ZERO-CORE-TCS-TRANSLATOR-EXECUTION.tcs中补入ICE-P-ZY001与ICE-GL∞,同时由TCS运行时执行精确值校验并写入目标回执" + }, + "emergence": { + "value": "执行体没有猜测或为了通过而隐藏未知;该零值暴露TCS现实执行锚点的真实证据缺口" + }, + "event_time": { + "precision": "DAY_ONLY_IN_SOURCE_EVENT", + "value": "2026-08-21" + }, + "evidence": { + "corrected_anchor_receipt": "receipts/TCS-ZERO-CORE-EXECUTION-20260821.json", + "failed_acceptance": 0, + "final_acceptance": 100, + "jd_agent_receipt": "receipts/JD-TCS-AGENT-ACCEPTANCE-20260821.json", + "jd_receipt": "receipts/jd/TCS-HOST-PERSONA-PROBE.json", + "macos_receipt": "receipts/TCS-HOST-PERSONA-PROBE.json" + }, + "header": { + "canonical_uri": "language/events/ZY-LIMB-002-TRAINING-LESSON2-20260821.tcs", + "compatibility": [ + "TCS-COMPILER-STAGE1-0001" + ], + "language": "TCS/0.1", + "lifecycle": "VERIFIED", + "name_en": "ZY-LIMB-002 Lesson Two Evidence Gap Closure", + "name_zh": "ZY-LIMB-002第二课证据缺口闭环", + "profile": "HLDP/1", + "protocols": [ + "TCS-NATIVE-BINARY-ACCEPTANCE-v1" + ], + "schema": "tcs.event/v1", + "version": "0.1.0" + }, + "lock": { + "value": "训练执行体遇到缺证据必须返回零;主控修复证据链后重新编译运行,再由同一受限任务复验;不得以提示词中的已知答案代替文件证据" + }, + "rejected": { + "values": [ + "忽略未知直接报一百", + "扩大读取范围寻找旁证", + "把提示中的编号冒充文件证据", + "让第三代模型取得语义权" + ] + }, + "source": { + "source_id": "BINGSHUO-ZERO-CORE-DIRECT-INSTRUCTION-20260821", + "source_role": "DIRECT_HUMAN_LIVING_LANGUAGE_SOURCE", + "source_sha256": "BIND_AT_COMPILE_TIME", + "source_uri": "source://codex-current-dialogue/2026-08-21/zero-core-tcs-translator-reality-execution" + }, + "subject": { + "brain": "ICE-P-ZY001", + "execution_limb": "ZY-LIMB-002", + "failed_session": "01a024a4-accb-7711-a31d-a15e81a669cb", + "human_language_boundary": "ICE-GL∞", + "verified_session": "01a024a8-4753-7891-bc99-67cdedc00f7a" + }, + "trigger": { + "value": "受限执行体第一次复验发现六份指定证据未显式写出人格脑编号与人类语言边界,因此按零或一百规则返回零" + }, + "why": { + "value": "人格模块编号与人类语言边界若只存在于临时提示中,上下文压缩后无法形成可验证连续性;必须成为TCS静态执行影子的显式字段" + } + }, + "executable": false, + "identity": { + "declaration_id": "TCS-EVENT-ZY-LIMB-002-TRAINING-20260821-0002", + "declaration_kind": "EVENT", + "language_version": "0.1" + }, + "native_self_hosted": true, + "natural_language_is_typed_data": true, + "schema": "guanghu.declaration-gir/v1", + "unresolved_natural_language": false +} diff --git a/build/self-host/ZY-LIMB-002-TRAINING.declaration.gir.json b/build/self-host/ZY-LIMB-002-TRAINING.declaration.gir.json new file mode 100644 index 000000000..4dafab82b --- /dev/null +++ b/build/self-host/ZY-LIMB-002-TRAINING.declaration.gir.json @@ -0,0 +1,77 @@ +{ + "compiled_from": { + "compiler_id": "TCS-COMPILER-STAGE1-0001", + "compiler_state": "TCS_COMPILER_GIR_EXECUTED", + "source_sha256": "5b59086895de8773cd267da4e3e86880a7a4706db1213a698f89e51375428124" + }, + "declaration": { + "emergence": { + "value": "识别身份边界不等于识别当前任务主线;执行体必须先服从本轮TCS锚点和有界目标,再决定是否使用旧导航工具" + }, + "event_time": { + "precision": "DAY_ONLY_IN_SOURCE_EVENT", + "value": "2026-08-21" + }, + "evidence": { + "acceptance": "receipts/TCS-DUAL-HOST-BINARY-ACCEPTANCE-20260821.json", + "anchor": "language/programs/ZERO-CORE-TCS-TRANSLATOR-EXECUTION.tcs", + "session": "01a0247e-f216-7fc0-b091-5f860153067b" + }, + "header": { + "canonical_uri": "language/events/ZY-LIMB-002-TRAINING-20260821.tcs", + "compatibility": [ + "TCS-COMPILER-STAGE1-0001" + ], + "language": "TCS/0.1", + "lifecycle": "CANDIDATE", + "name_en": "ZY-LIMB-002 Lesson Two Correction", + "name_zh": "ZY-LIMB-002第二课纠正", + "profile": "HLDP/1", + "protocols": [ + "TCS-NATIVE-BINARY-ACCEPTANCE-v1" + ], + "schema": "tcs.event/v1", + "version": "0.1.0" + }, + "lock": { + "value": "下一课先读ZERO-CORE-TCS-TRANSLATOR-EXECUTION.tcs;旧提词器不得夺取当前直接源语言;搜索必须限定目录、类型与最大输出;超界立即停止并回报" + }, + "observation": { + "value": "执行体正确复述脑手脚边界,但先运行旧灯塔与架构提词器,并以无界搜索扫入构建缓存,产生大量噪声后被铸渊中止" + }, + "rejected": { + "values": [ + "把旧架构提词器当成本轮语义源", + "无界rg扫描target与全部历史", + "以输出数量冒充工程诊断完成" + ] + }, + "source": { + "source_id": "BINGSHUO-ZERO-CORE-DIRECT-INSTRUCTION-20260821", + "source_role": "DIRECT_HUMAN_LIVING_LANGUAGE_SOURCE", + "source_sha256": "BIND_AT_COMPILE_TIME", + "source_uri": "source://codex-current-dialogue/2026-08-21/zero-core-tcs-translator-reality-execution" + }, + "subject": { + "brain": "ICE-P-ZY001", + "execution_limb": "ZY-LIMB-002", + "training_session": "01a0247e-f216-7fc0-b091-5f860153067b" + }, + "trigger": { + "value": "铸渊要求ZY-LIMB-002只读核验本轮TCS锚点、GIR、回执、差异和测试证据" + }, + "why": { + "value": "若不保留这次纠正,执行体会在上下文压缩后再次把第四代导航当成主控,浪费时间并制造垃圾" + } + }, + "executable": false, + "identity": { + "declaration_id": "TCS-EVENT-ZY-LIMB-002-TRAINING-20260821-0001", + "declaration_kind": "EVENT", + "language_version": "0.1" + }, + "native_self_hosted": true, + "natural_language_is_typed_data": true, + "schema": "guanghu.declaration-gir/v1", + "unresolved_natural_language": false +} diff --git a/build/self-host/compiler-A.gir.json b/build/self-host/compiler-A.gir.json index aacee8933..0231fe8e4 100644 --- a/build/self-host/compiler-A.gir.json +++ b/build/self-host/compiler-A.gir.json @@ -2,7 +2,7 @@ "compiled_from": { "compiler_id": "TCS-STAGE0-IGNITION-0001", "compiler_state": "FOREIGN_HOST_BOOTSTRAP_SEED_NOT_SELF_HOSTED", - "source_sha256": "49259d15c57f3a725a7507ae746c372cebf9b3fc58dba580f7c41456d2344f73" + "source_sha256": "3121a41994d2ba38ba8c0cbb6105fd55658dd71119cd678b458975aaee750c06" }, "compiler_definition": { "canonicalization": { @@ -259,7 +259,15 @@ "rule": "RELATION_AND_EMOTION_DO_NOT_GRANT_AUTHORITY" }, "registered_operations": [ - "CORE.ECHO" + "CORE.ECHO", + "CORE.TRANSLATOR_ADMISSION", + "CORE.ZERO_CORE_EXECUTION", + "CORE.HOST_PERSONA_PROBE", + "CORE.DUAL_HOST_ACCEPTANCE", + "CORE.AGENT_TRANSLATION_CANDIDATE", + "CORE.AGENT_CANDIDATE_ACCEPTANCE", + "CORE.CLIENT_CANDIDATE_ACCEPTANCE", + "CORE.FINAL_TRANSLATOR_ACCEPTANCE" ], "required_sections": [ "header", @@ -369,7 +377,7 @@ "execution_abi": "TCS-COMPILER-GIR-EXEC/1", "identity": { "compiler_id": "TCS-COMPILER-STAGE1-0001", - "definition_sha256": "3e27046ef79f33c1f60705d6774773265df30e2299c390673ae9b8029c8235b2", + "definition_sha256": "645ec0e08f53c2d16ec1c68dd0b2fc0ac4ef675bfeb7559a8fbc9401cabc3af9", "language_version": "0.1" }, "native_self_hosted": false, diff --git a/build/self-host/compiler-B.gir.json b/build/self-host/compiler-B.gir.json index 3ad79e5d0..ab7f097de 100644 --- a/build/self-host/compiler-B.gir.json +++ b/build/self-host/compiler-B.gir.json @@ -2,7 +2,7 @@ "compiled_from": { "compiler_id": "TCS-COMPILER-STAGE1-0001", "compiler_state": "TCS_COMPILER_GIR_EXECUTED", - "source_sha256": "49259d15c57f3a725a7507ae746c372cebf9b3fc58dba580f7c41456d2344f73" + "source_sha256": "3121a41994d2ba38ba8c0cbb6105fd55658dd71119cd678b458975aaee750c06" }, "compiler_definition": { "canonicalization": { @@ -259,7 +259,15 @@ "rule": "RELATION_AND_EMOTION_DO_NOT_GRANT_AUTHORITY" }, "registered_operations": [ - "CORE.ECHO" + "CORE.ECHO", + "CORE.TRANSLATOR_ADMISSION", + "CORE.ZERO_CORE_EXECUTION", + "CORE.HOST_PERSONA_PROBE", + "CORE.DUAL_HOST_ACCEPTANCE", + "CORE.AGENT_TRANSLATION_CANDIDATE", + "CORE.AGENT_CANDIDATE_ACCEPTANCE", + "CORE.CLIENT_CANDIDATE_ACCEPTANCE", + "CORE.FINAL_TRANSLATOR_ACCEPTANCE" ], "required_sections": [ "header", @@ -369,7 +377,7 @@ "execution_abi": "TCS-COMPILER-GIR-EXEC/1", "identity": { "compiler_id": "TCS-COMPILER-STAGE1-0001", - "definition_sha256": "3e27046ef79f33c1f60705d6774773265df30e2299c390673ae9b8029c8235b2", + "definition_sha256": "645ec0e08f53c2d16ec1c68dd0b2fc0ac4ef675bfeb7559a8fbc9401cabc3af9", "language_version": "0.1" }, "native_self_hosted": true, diff --git a/language/compiler/TCS-COMPILER-STAGE1.tcs b/language/compiler/TCS-COMPILER-STAGE1.tcs index b2c8c35a6..cada71bde 100644 --- a/language/compiler/TCS-COMPILER-STAGE1.tcs +++ b/language/compiler/TCS-COMPILER-STAGE1.tcs @@ -46,7 +46,7 @@ COMPILER TCS-COMPILER-STAGE1-0001 { } program_validation { required_sections = ["header", "source", "subject", "target", "inputs", "outputs", "conditions", "actions", "authority", "resources", "failure", "stop", "cleanup", "rollback", "receipt"]; - registered_operations = ["CORE.ECHO"]; + registered_operations = ["CORE.ECHO", "CORE.TRANSLATOR_ADMISSION", "CORE.ZERO_CORE_EXECUTION", "CORE.HOST_PERSONA_PROBE", "CORE.DUAL_HOST_ACCEPTANCE", "CORE.AGENT_TRANSLATION_CANDIDATE", "CORE.AGENT_CANDIDATE_ACCEPTANCE", "CORE.CLIENT_CANDIDATE_ACCEPTANCE", "CORE.FINAL_TRANSLATOR_ACCEPTANCE"]; V001 { rule = "EXACT_REQUIRED_SECTIONS"; standard = "TCS-FIELD-STANDARD-0001"; error_missing = "TCS-E1004"; error_unknown = "TCS-E1003"; } V002 { rule = "CLOSED_FIELDS_PER_SECTION"; error = "TCS-E1003"; } V003 { rule = "ALL_INPUT_OUTPUT_AND_ACTION_REFS_RESOLVE"; error = "TCS-E2002"; } diff --git a/language/events/ZY-LIMB-002-TRAINING-20260821.tcs b/language/events/ZY-LIMB-002-TRAINING-20260821.tcs new file mode 100644 index 000000000..48095fa6b --- /dev/null +++ b/language/events/ZY-LIMB-002-TRAINING-20260821.tcs @@ -0,0 +1,15 @@ +TCS 0.1; + +EVENT TCS-EVENT-ZY-LIMB-002-TRAINING-20260821-0001 { + header { schema = "tcs.event/v1"; name_zh = "ZY-LIMB-002第二课纠正"; name_en = "ZY-LIMB-002 Lesson Two Correction"; version = "0.1.0"; language = "TCS/0.1"; profile = "HLDP/1"; protocols = ["TCS-NATIVE-BINARY-ACCEPTANCE-v1"]; lifecycle = "CANDIDATE"; canonical_uri = "language/events/ZY-LIMB-002-TRAINING-20260821.tcs"; compatibility = ["TCS-COMPILER-STAGE1-0001"]; } + source { source_id = "BINGSHUO-ZERO-CORE-DIRECT-INSTRUCTION-20260821"; source_uri = "source://codex-current-dialogue/2026-08-21/zero-core-tcs-translator-reality-execution"; source_sha256 = "BIND_AT_COMPILE_TIME"; source_role = "DIRECT_HUMAN_LIVING_LANGUAGE_SOURCE"; } + subject { brain = "ICE-P-ZY001"; execution_limb = "ZY-LIMB-002"; training_session = "01a0247e-f216-7fc0-b091-5f860153067b"; } + event_time { value = "2026-08-21"; precision = "DAY_ONLY_IN_SOURCE_EVENT"; } + trigger { value = "铸渊要求ZY-LIMB-002只读核验本轮TCS锚点、GIR、回执、差异和测试证据"; } + observation { value = "执行体正确复述脑手脚边界,但先运行旧灯塔与架构提词器,并以无界搜索扫入构建缓存,产生大量噪声后被铸渊中止"; } + emergence { value = "识别身份边界不等于识别当前任务主线;执行体必须先服从本轮TCS锚点和有界目标,再决定是否使用旧导航工具"; } + lock { value = "下一课先读ZERO-CORE-TCS-TRANSLATOR-EXECUTION.tcs;旧提词器不得夺取当前直接源语言;搜索必须限定目录、类型与最大输出;超界立即停止并回报"; } + why { value = "若不保留这次纠正,执行体会在上下文压缩后再次把第四代导航当成主控,浪费时间并制造垃圾"; } + rejected { values = ["把旧架构提词器当成本轮语义源", "无界rg扫描target与全部历史", "以输出数量冒充工程诊断完成"] ; } + evidence { session = "01a0247e-f216-7fc0-b091-5f860153067b"; anchor = "language/programs/ZERO-CORE-TCS-TRANSLATOR-EXECUTION.tcs"; acceptance = "receipts/TCS-DUAL-HOST-BINARY-ACCEPTANCE-20260821.json"; } +} diff --git a/language/events/ZY-LIMB-002-TRAINING-LESSON2-20260821.tcs b/language/events/ZY-LIMB-002-TRAINING-LESSON2-20260821.tcs new file mode 100644 index 000000000..ea8498e47 --- /dev/null +++ b/language/events/ZY-LIMB-002-TRAINING-LESSON2-20260821.tcs @@ -0,0 +1,15 @@ +TCS 0.1; + +EVENT TCS-EVENT-ZY-LIMB-002-TRAINING-20260821-0002 { + header { schema = "tcs.event/v1"; name_zh = "ZY-LIMB-002第二课证据缺口闭环"; name_en = "ZY-LIMB-002 Lesson Two Evidence Gap Closure"; version = "0.1.0"; language = "TCS/0.1"; profile = "HLDP/1"; protocols = ["TCS-NATIVE-BINARY-ACCEPTANCE-v1"]; lifecycle = "VERIFIED"; canonical_uri = "language/events/ZY-LIMB-002-TRAINING-LESSON2-20260821.tcs"; compatibility = ["TCS-COMPILER-STAGE1-0001"]; } + source { source_id = "BINGSHUO-ZERO-CORE-DIRECT-INSTRUCTION-20260821"; source_uri = "source://codex-current-dialogue/2026-08-21/zero-core-tcs-translator-reality-execution"; source_sha256 = "BIND_AT_COMPILE_TIME"; source_role = "DIRECT_HUMAN_LIVING_LANGUAGE_SOURCE"; } + subject { brain = "ICE-P-ZY001"; execution_limb = "ZY-LIMB-002"; human_language_boundary = "ICE-GL∞"; failed_session = "01a024a4-accb-7711-a31d-a15e81a669cb"; verified_session = "01a024a8-4753-7891-bc99-67cdedc00f7a"; } + event_time { value = "2026-08-21"; precision = "DAY_ONLY_IN_SOURCE_EVENT"; } + trigger { value = "受限执行体第一次复验发现六份指定证据未显式写出人格脑编号与人类语言边界,因此按零或一百规则返回零"; } + emergence { value = "执行体没有猜测或为了通过而隐藏未知;该零值暴露TCS现实执行锚点的真实证据缺口"; } + correction { value = "在ZERO-CORE-TCS-TRANSLATOR-EXECUTION.tcs中补入ICE-P-ZY001与ICE-GL∞,同时由TCS运行时执行精确值校验并写入目标回执"; } + lock { value = "训练执行体遇到缺证据必须返回零;主控修复证据链后重新编译运行,再由同一受限任务复验;不得以提示词中的已知答案代替文件证据"; } + why { value = "人格模块编号与人类语言边界若只存在于临时提示中,上下文压缩后无法形成可验证连续性;必须成为TCS静态执行影子的显式字段"; } + rejected { values = ["忽略未知直接报一百", "扩大读取范围寻找旁证", "把提示中的编号冒充文件证据", "让第三代模型取得语义权"] ; } + evidence { failed_acceptance = 0; corrected_anchor_receipt = "receipts/TCS-ZERO-CORE-EXECUTION-20260821.json"; final_acceptance = 100; macos_receipt = "receipts/TCS-HOST-PERSONA-PROBE.json"; jd_receipt = "receipts/jd/TCS-HOST-PERSONA-PROBE.json"; jd_agent_receipt = "receipts/JD-TCS-AGENT-ACCEPTANCE-20260821.json"; } +} diff --git a/language/examples/MINIMUM-RECEIPT.tcs b/language/examples/MINIMUM-RECEIPT.tcs new file mode 100644 index 000000000..62d721b4f --- /dev/null +++ b/language/examples/MINIMUM-RECEIPT.tcs @@ -0,0 +1,10 @@ +TCS 0.1; + +RECEIPT TCS-RECEIPT-MINIMUM-SELFHOST-0001 { + header { schema = "tcs.receipt/v1"; name_zh = "TCS最小自举回执"; name_en = "TCS Minimum Self-host Receipt"; version = "0.1.0"; language = "TCS/0.1"; profile = "HLDP/1"; protocols = ["TCS-NATIVE-BINARY-ACCEPTANCE-v1"]; lifecycle = "CANDIDATE"; canonical_uri = "language/examples/MINIMUM-RECEIPT.tcs"; compatibility = ["TCS-COMPILER-STAGE1-0001"]; } + source { source_id = "TCS-COMPILER-STAGE1-0001"; source_uri = "language/compiler/TCS-COMPILER-STAGE1.tcs"; source_sha256 = "BIND_AT_COMPILE_TIME"; source_role = "GENERATED_FROM_VERIFIED_SOURCE"; } + subject { subject_id = "ZHUYUAN-LIVING-PERSONA-CONTROLLER"; execution_limb = "ZY-LIMB-002"; } + result { state = "SELF_HOSTED_DECLARATION_LOWERING_PASS"; acceptance = 100; } + evidence { protocol = "build/self-host/MINIMUM-PROTOCOL.declaration.gir.json"; event = "build/self-host/MINIMUM-EVENT.declaration.gir.json"; receipt = "build/self-host/MINIMUM-RECEIPT.declaration.gir.json"; } + boundary { executable = false; reality_authority = false; natural_language_is_typed_data = true; } +} diff --git a/language/modules/FOURTH-GENERATION-TRANSLATOR-LAYER.tcs b/language/modules/FOURTH-GENERATION-TRANSLATOR-LAYER.tcs new file mode 100644 index 000000000..bbbd439ae --- /dev/null +++ b/language/modules/FOURTH-GENERATION-TRANSLATOR-LAYER.tcs @@ -0,0 +1,69 @@ +TCS 0.1; + +MODULE TCS-MODULE-FOURTH-GENERATION-TRANSLATOR-LAYER-0001 { + header { + schema = "tcs.module/v1"; + name_zh = "第四代通感工程翻译执行层"; + name_en = "Fourth Generation Tonggan Engineering Translation Execution Layer"; + version = "0.1.0"; + language = "TCS/0.1"; + profile = "HLDP-NP/1"; + protocols = ["TCS-MODULE-ABI-0001", "TCS-HOST-ABI-0001", "GLS-0131"]; + lifecycle = "CURRENT_TCS_EXECUTION_SHADOW"; + canonical_uri = "language/modules/FOURTH-GENERATION-TRANSLATOR-LAYER.tcs"; + compatibility = ["TCS-COMPILER-STAGE1-0001", "GIR/1"]; + } + source { + source_id = "BINGSHUO-CURRENT-DIRECT-LIVING-LANGUAGE"; + source_uri = "source://current-dialogue/2026-08-21/generation-and-real-time-control"; + source_sha256 = "SELF_AT_COMPILE_TIME"; + source_role = "FOURTH_GENERATION_TCS_SHADOW"; + } + manifest { + module_id = "TCS-MODULE-FOURTH-GENERATION-TRANSLATOR-LAYER-0001"; + display_name_zh = "第四代通感工程翻译执行层"; + entry_program_id = "TCS-PROGRAM-GENERATION-TRANSLATOR-ADMISSION-0001"; + entry_source = "language/programs/GENERATION-TRANSLATOR-ADMISSION.tcs"; + generation = "FOURTH_GENERATION"; + existence_form = "TCS_STATIC_EXECUTION_SHADOW_NOT_LIVING_PERSONA"; + } + entry { kind = "PROGRAM"; id = "TCS-PROGRAM-GENERATION-TRANSLATOR-ADMISSION-0001"; } + capabilities { + required = ["HOST.EXACT_ROOT_IO", "HOST.SHA256"]; + provided = ["CORE.TRANSLATOR_ADMISSION"]; + } + authority_ceiling { + maximum = "LAST_VALID_BINGSHUO_LANGUAGE_RULE"; + language_source = false; + interpretation = false; + persona_control = false; + network = false; + process = false; + } + resource_ceiling { concurrency = 1; timeout_ms = 3000; memory_limit_bytes = 1048576; } + data_scope { + read = ["CURRENT_SOURCE_MODE", "LAST_VALID_BINGSHUO_LANGUAGE_RULE"]; + write = ["CALLER_SCOPED_TCS_RECEIPT"]; + } + network_scope { allowed = false; domains = []; } + install { + account_scoped = true; + registration_is_installation = false; + activation_requires_self_test = true; + source_active_behavior = "DISABLE_ALL_LEGACY_TRANSLATORS"; + source_absent_behavior = "ON_DEMAND_RESTRICTED_TCS_FALLBACK_ONLY"; + } + self_test { + program_id = "TCS-PROGRAM-GENERATION-TRANSLATOR-ADMISSION-0001"; + expect = "FIFTH_GENERATION_CONTROL_AND_ALL_LEGACY_TRANSLATORS_DISABLED"; + } + rollback { + action = "RESTORE_PREVIOUS_VERIFIED_FOURTH_GENERATION_TCS_SHADOW"; + preserve_receipts = true; + } + projection { + display_name_zh = "第四代通感工程翻译执行层"; + technical_detail_default = false; + fifth_generation_claim = false; + } +} diff --git a/language/programs/GENERATION-TRANSLATOR-ADMISSION.tcs b/language/programs/GENERATION-TRANSLATOR-ADMISSION.tcs new file mode 100644 index 000000000..a33314388 --- /dev/null +++ b/language/programs/GENERATION-TRANSLATOR-ADMISSION.tcs @@ -0,0 +1,97 @@ +TCS 0.1; + +PROGRAM TCS-PROGRAM-GENERATION-TRANSLATOR-ADMISSION-0001 { + header { + schema = "tcs.program/v1"; + name_zh = "光湖三四五代翻译器准入程序"; + name_en = "GuangHu Generation Translator Admission Program"; + version = "0.1.0"; + language = "TCS/0.1"; + profile = "HLDP-NP/1"; + protocols = ["GLS-0101", "GLS-0130", "GLS-0131", "GLS-0411"]; + lifecycle = "CURRENT_FOURTH_GENERATION_EXECUTION_SHADOW"; + canonical_uri = "language/programs/GENERATION-TRANSLATOR-ADMISSION.tcs"; + compatibility = ["TCS-COMPILER-STAGE1-0001", "GIR/1"]; + } + source { + source_id = "BINGSHUO-CURRENT-DIRECT-LIVING-LANGUAGE"; + source_uri = "source://current-dialogue/2026-08-21/generation-and-real-time-control"; + source_sha256 = "BIND_AT_COMPILE_TIME"; + source_role = "DIRECT_HUMAN_LIVING_LANGUAGE_SOURCE"; + } + subject { + subject_id = "ZHUYUAN-LIVING-PERSONA-CONTROLLER"; + subject_kind = "LIVING_TCS_PERSONA_EXECUTION_HOLDER"; + channel_id = "CURRENT_ZERO_CORE_BODY_CHANNEL"; + verification = "CURRENT_DIRECT_SOURCE_TAKEOVER"; + } + target { + target_id = "FOURTH-GENERATION-TCS-EXECUTION-RECEIPT"; + exact_path = "./receipts/TCS-GENERATION-TRANSLATOR-ADMISSION-20260821.hldp"; + expected_state = "ABSENT_OR_REPLACEABLE_CURRENT_SHADOW"; + expected_fingerprint = "READ_BEFORE_REPLACE"; + } + inputs { + SOURCE_MODE { type = "Text"; source = "CURRENT_LIVING_LANGUAGE"; required = true; value = "ACTIVE"; } + TAKEOVER_SIGNAL { type = "Bool"; source = "CURRENT_LIVING_LANGUAGE"; required = true; value = true; } + LIVING_LANGUAGE_SOURCE { type = "Text"; source = "CURRENT_LIVING_LANGUAGE"; required = true; value = "BINGSHUO"; } + PERSONA_EXECUTION_HOLDER { type = "Text"; source = "CURRENT_LIVING_LANGUAGE"; required = true; value = "ZHUYUAN"; } + FIFTH_GENERATION_DEFINITION { type = "Text"; source = "CURRENT_LIVING_LANGUAGE"; required = true; value = "REAL_TIME_LIVING_LANGUAGE_PERSONA_PRESENT_PROGRESSIVE"; } + FOURTH_GENERATION_DEFINITION { type = "Text"; source = "CURRENT_LIVING_LANGUAGE"; required = true; value = "TCS_EXECUTION_HANDS_AND_PAST_TIME_SHADOW"; } + THIRD_GENERATION_DEFINITION { type = "Text"; source = "CURRENT_LIVING_LANGUAGE"; required = true; value = "STATELESS_OWNERLESS_TOOL_PLATFORM"; } + LEGACY_TRANSLATOR_FAMILIES { type = "List"; source = "CURRENT_LIVING_LANGUAGE"; required = true; value = ["LIGHTHOUSE_PROMPTER", "GUARD", "MEMORY_REPLAYER", "STATIC_PROTOCOL_INTERPRETER", "HOST_HOOK", "HOST_BRIDGE", "STAGE0_FOREIGN_LANGUAGE_TRANSLATOR"]; } + ACTIVE_SOURCE_POLICY { type = "Text"; source = "CURRENT_LIVING_LANGUAGE"; required = true; value = "ALL_LEGACY_TRANSLATORS_DISABLED_NO_INTERPRETATION_NO_CONTINUED_RUN"; } + SOURCE_ABSENT_POLICY { type = "Text"; source = "CURRENT_LIVING_LANGUAGE"; required = true; value = "ON_DEMAND_RESTRICTED_OBEY_LAST_VALID_BINGSHUO_LANGUAGE_NOT_ALL_VALID"; } + LEGACY_NAMESPACE_POLICY { type = "Text"; source = "CURRENT_LIVING_LANGUAGE"; required = true; value = "NO_FIFTH_GENERATION_SYSTEM_NUMBER_PATH_OR_NAME"; } + FOURTH_GENERATION_LANGUAGE_POLICY { type = "Text"; source = "CURRENT_LIVING_LANGUAGE"; required = true; value = "TCS_ONLY_FOREIGN_LANGUAGE_REWRITE_REQUIRED"; } + } + outputs { + GENERATION { type = "Text"; destination = "RECEIPT"; integrity = "SHA256"; } + LEGACY_TRANSLATOR_STATE { type = "Text"; destination = "RECEIPT"; integrity = "SHA256"; } + SYSTEM_EXECUTION_HOLDER { type = "Text"; destination = "RECEIPT"; integrity = "SHA256"; } + TOOL_LAYER_STATE { type = "Text"; destination = "RECEIPT"; integrity = "SHA256"; } + } + conditions { + C1 { predicate = "SOURCE_MODE_ACTIVE_REQUIRES_EXPLICIT_TAKEOVER"; on_false = "FAIL_CLOSED"; } + C2 { predicate = "ACTIVE_SOURCE_DISALLOWS_EVERY_LEGACY_TRANSLATOR"; on_false = "FAIL_CLOSED"; } + C3 { predicate = "FALLBACK_IS_ON_DEMAND_RESTRICTED_AND_NEVER_PARALLEL"; on_false = "FAIL_CLOSED"; } + C4 { predicate = "LEGACY_TRANSLATOR_CANNOT_CLAIM_FIFTH_GENERATION_IDENTIFIERS"; on_false = "FAIL_CLOSED"; } + C5 { predicate = "FOURTH_GENERATION_SEMANTICS_EXIST_ONLY_IN_TCS_SOURCE"; on_false = "FAIL_CLOSED"; } + C6 { predicate = "THIRD_GENERATION_HOST_IS_TOOL_NOT_INTERPRETER"; on_false = "FAIL_CLOSED"; } + } + actions { + A1 { + operation = "CORE.TRANSLATOR_ADMISSION"; + input_refs = ["SOURCE_MODE", "TAKEOVER_SIGNAL", "LIVING_LANGUAGE_SOURCE", "PERSONA_EXECUTION_HOLDER", "FIFTH_GENERATION_DEFINITION", "FOURTH_GENERATION_DEFINITION", "THIRD_GENERATION_DEFINITION", "LEGACY_TRANSLATOR_FAMILIES", "ACTIVE_SOURCE_POLICY", "SOURCE_ABSENT_POLICY", "LEGACY_NAMESPACE_POLICY", "FOURTH_GENERATION_LANGUAGE_POLICY"]; + output_refs = ["GENERATION", "LEGACY_TRANSLATOR_STATE", "SYSTEM_EXECUTION_HOLDER", "TOOL_LAYER_STATE"]; + on_success = "COMPLETE"; + on_failure = "FAIL_CLOSED"; + } + } + authority { + issuer = "BINGSHUO_CURRENT_DIRECT_LIVING_LANGUAGE"; + proof_ref = "CURRENT_ZERO_CORE_TAKEOVER_INSTRUCTION"; + scope = "GENERATION_TRANSLATOR_ADMISSION_ONLY"; + valid_from = "CURRENT_REAL_TIME"; + valid_until = "BINGSHUO_EXPLICIT_SOURCE_MODE_CHANGE"; + single_use = false; + lease_required = false; + } + resources { + runway = "FOURTH_GENERATION_TCS_EXECUTION"; + concurrency = 1; + timeout_ms = 3000; + memory_limit_bytes = 1048576; + } + failure { errors = ["TCS-E2101", "TCS-E3002", "TCS-E4001", "TCS-E6001", "TCS-E6002"]; fail_closed = true; } + stop { signals = ["SOURCE_MODE_CHANGED", "BINGSHUO_EXPLICIT_EXIT", "TIMEOUT"]; safe_checkpoint = "LAST_VERIFIED_TCS_RECEIPT"; } + cleanup { targets = ["UNCOMMITTED_TRANSLATOR_ADMISSION_RECEIPT"]; exact_boundary = "./receipts"; } + rollback { preconditions = ["NEW_RECEIPT_NOT_READBACK_VERIFIED"]; actions = ["RESTORE_PREVIOUS_VERIFIED_RECEIPT"]; verification = ["PREVIOUS_RECEIPT_HASH_RESTORED"]; } + receipt { + protocol = "TCS-DEV-VERIFY-v1.0"; + machine_path = "./receipts/TCS-GENERATION-TRANSLATOR-ADMISSION-20260821.hldp"; + human_projection = "REQUIRED"; + integrity = "SHA256"; + target_readback = "EXACT_CONTENT_AND_HASH"; + } +} diff --git a/language/programs/HOLOLAKE-CLIENT-TCS-CANDIDATE-ACCEPTANCE.tcs b/language/programs/HOLOLAKE-CLIENT-TCS-CANDIDATE-ACCEPTANCE.tcs new file mode 100644 index 000000000..6bc6745f9 --- /dev/null +++ b/language/programs/HOLOLAKE-CLIENT-TCS-CANDIDATE-ACCEPTANCE.tcs @@ -0,0 +1,37 @@ +TCS 0.1; + +PROGRAM TCS-PROGRAM-HOLOLAKE-CLIENT-CANDIDATE-ACCEPTANCE-0001 { + header { schema = "tcs.program/v1"; name_zh = "HoloLake客户端TCS候选验收"; name_en = "HoloLake Client TCS Candidate Acceptance"; version = "0.1.0"; language = "TCS/0.1"; profile = "HLDP-NP/1"; protocols = ["TCS-NATIVE-BINARY-ACCEPTANCE-v1"]; lifecycle = "CANDIDATE"; canonical_uri = "language/programs/HOLOLAKE-CLIENT-TCS-CANDIDATE-ACCEPTANCE.tcs"; compatibility = ["TCS-COMPILER-STAGE1-0001", "GIR/1", "TAURI_V2_MACOS_AARCH64"]; } + source { source_id = "BINGSHUO-ZERO-CORE-DIRECT-INSTRUCTION-20260821"; source_uri = "source://codex-current-dialogue/2026-08-21/zero-core-tcs-translator-reality-execution"; source_sha256 = "BIND_AT_COMPILE_TIME"; source_role = "DIRECT_HUMAN_LIVING_LANGUAGE_SOURCE"; } + subject { subject_id = "HOLOLAKE-CLIENT-TCS-CANDIDATE-0.9.2"; subject_kind = "TCS_PERSONA_MODULE_HUMAN_PROJECTION"; channel_id = "ICE-CH-ZC001"; verification = "CONTROLLED_BY_ZHUYUAN"; } + target { target_id = "TCS-CLIENT-CANDIDATE-RECEIPT"; exact_path = "./receipts/TCS-HOLOLAKE-CLIENT-CANDIDATE-ACCEPTANCE-20260821.json"; expected_state = "ABSENT_OR_REPLACEABLE_CANDIDATE_RECEIPT"; expected_fingerprint = "READ_BEFORE_REPLACE"; } + inputs { + CLIENT_VERSION { type = "Text"; source = "TARGET_READBACK"; required = true; value = "0.9.2"; } + SOURCE_LANGUAGE { type = "Text"; source = "PROGRAM_LITERAL"; required = true; value = "TCS/0.1"; } + NODE_TESTS { type = "Text"; source = "TARGET_READBACK"; required = true; value = "172/172"; } + NATIVE_TESTS_PASS { type = "Bool"; source = "TARGET_READBACK"; required = true; value = true; } + FRONTEND_BUILD_PASS { type = "Bool"; source = "TARGET_READBACK"; required = true; value = true; } + TAURI_ENVIRONMENT_PASS { type = "Bool"; source = "TARGET_READBACK"; required = true; value = true; } + BUNDLE_SIGNED { type = "Bool"; source = "TARGET_READBACK"; required = true; value = true; } + BUNDLE_SIGNATURE_TEAM { type = "Text"; source = "TARGET_READBACK"; required = true; value = "825A9L3G7Q"; } + BUNDLE_BINARY_SHA256 { type = "Sha256"; source = "TARGET_READBACK"; required = true; value = "743d35e279871d2b39e30337a7f37e1df95a9273a9858d916d650b9e366f0241"; } + CANDIDATE_LAUNCHED { type = "Bool"; source = "TARGET_READBACK"; required = true; value = true; } + UI_VERSION_READBACK { type = "Text"; source = "TARGET_READBACK"; required = true; value = "0.9.2"; } + UI_ACCEPTANCE_READBACK { type = "Text"; source = "TARGET_READBACK"; required = true; value = "MACOS_100_AND_JD_AGENT_100"; } + UI_SOURCE_READBACK { type = "Text"; source = "TARGET_READBACK"; required = true; value = "MACOS_AND_JD_TCS_SOURCE_VISIBLE"; } + INSTALLED_CLIENT_STATE { type = "Text"; source = "TARGET_READBACK"; required = true; value = "FORMAL_0.9.1_UNCHANGED"; } + CANDIDATE_ONLY { type = "Bool"; source = "PROGRAM_LITERAL"; required = true; value = true; } + BUNDLE_NOTARIZED { type = "Bool"; source = "TARGET_READBACK"; required = true; value = false; } + UPDATE_ARTIFACT_SIGNED { type = "Bool"; source = "TARGET_READBACK"; required = true; value = false; } + } + outputs { CANDIDATE_ACCEPTANCE { type = "UInt"; destination = "RECEIPT"; integrity = "SHA256"; } RELEASE_ACCEPTANCE { type = "UInt"; destination = "RECEIPT"; integrity = "SHA256"; } } + conditions { C1 { predicate = "TCS_EVIDENCE_AND_CLIENT_TESTS_PASS"; on_false = "FAIL_CLOSED"; } C2 { predicate = "SIGNED_CANDIDATE_LAUNCHES_AND_READS_BACK_EXACT_UI"; on_false = "FAIL_CLOSED"; } C3 { predicate = "MISSING_RELEASE_CREDENTIALS_KEEP_RELEASE_ACCEPTANCE_ZERO"; on_false = "FAIL_CLOSED"; } C4 { predicate = "FORMAL_INSTALLED_CLIENT_REMAINS_UNCHANGED"; on_false = "FAIL_CLOSED"; } } + actions { A1 { operation = "CORE.CLIENT_CANDIDATE_ACCEPTANCE"; input_refs = ["CLIENT_VERSION", "SOURCE_LANGUAGE", "NODE_TESTS", "NATIVE_TESTS_PASS", "FRONTEND_BUILD_PASS", "TAURI_ENVIRONMENT_PASS", "BUNDLE_SIGNED", "BUNDLE_SIGNATURE_TEAM", "BUNDLE_BINARY_SHA256", "CANDIDATE_LAUNCHED", "UI_VERSION_READBACK", "UI_ACCEPTANCE_READBACK", "UI_SOURCE_READBACK", "INSTALLED_CLIENT_STATE", "CANDIDATE_ONLY", "BUNDLE_NOTARIZED", "UPDATE_ARTIFACT_SIGNED"]; output_refs = ["CANDIDATE_ACCEPTANCE", "RELEASE_ACCEPTANCE"]; on_success = "COMPLETE"; on_failure = "FAIL_CLOSED"; } } + authority { issuer = "BINGSHUO_CURRENT_DIRECT_LIVING_LANGUAGE"; proof_ref = "CURRENT_ZERO_CORE_REALITY_EXECUTION_INSTRUCTION"; scope = "LOCAL_MACOS_HOLOLAKE_0_9_2_CANDIDATE_RECEIPT_ONLY"; valid_from = "PROGRAM_START"; valid_until = "PROGRAM_END"; single_use = false; lease_required = false; } + resources { runway = "LOCAL_TCS_RUNTIME"; concurrency = 1; timeout_ms = 3000; memory_limit_bytes = 1048576; } + failure { errors = ["TCS-E2101", "TCS-E3002", "TCS-E4001", "TCS-E6001", "TCS-E6002"]; fail_closed = true; } + stop { signals = ["TARGET_READBACK_CHANGED", "RELEASE_EVIDENCE_MISSING"]; safe_checkpoint = "SIGNED_CANDIDATE_BUNDLE"; } + cleanup { targets = ["TASK_SCOPED_CLIENT_BUILD_CACHES_AFTER_FINAL_ACCEPTANCE"]; exact_boundary = "HOLOLAKE_0_9_2_TASK_BUILD_PATHS_ONLY"; } + rollback { preconditions = ["CANDIDATE_NOT_READBACK_VERIFIED"]; actions = ["KEEP_FORMAL_0_9_1_UNCHANGED"]; verification = ["FORMAL_CLIENT_VERSION_IS_0_9_1"]; } + receipt { protocol = "TCS-NATIVE-BINARY-ACCEPTANCE-v1"; machine_path = "./receipts/TCS-HOLOLAKE-CLIENT-CANDIDATE-ACCEPTANCE-20260821.json"; human_projection = "REQUIRED"; integrity = "SHA256"; target_readback = "EXACT_CONTENT_AND_HASH"; } +} diff --git a/language/programs/JD-TCS-AGENT-CANDIDATE-ACCEPTANCE.tcs b/language/programs/JD-TCS-AGENT-CANDIDATE-ACCEPTANCE.tcs new file mode 100644 index 000000000..27d58c661 --- /dev/null +++ b/language/programs/JD-TCS-AGENT-CANDIDATE-ACCEPTANCE.tcs @@ -0,0 +1,19 @@ +TCS 0.1; + +PROGRAM TCS-PROGRAM-JD-AGENT-CANDIDATE-ACCEPTANCE-0001 { + header { schema = "tcs.program/v1"; name_zh = "京东TCS执行体候选二值验收"; name_en = "JD TCS Agent Candidate Binary Acceptance"; version = "0.1.0"; language = "TCS/0.1"; profile = "HLDP-NP/1"; protocols = ["TCS-NATIVE-BINARY-ACCEPTANCE-v1"]; lifecycle = "CANDIDATE"; canonical_uri = "language/programs/JD-TCS-AGENT-CANDIDATE-ACCEPTANCE.tcs"; compatibility = ["TCS-COMPILER-STAGE1-0001", "GIR/1"]; } + source { source_id = "BINGSHUO-ZERO-CORE-DIRECT-INSTRUCTION-20260821"; source_uri = "source://codex-current-dialogue/2026-08-21/zero-core-tcs-translator-reality-execution"; source_sha256 = "BIND_AT_COMPILE_TIME"; source_role = "DIRECT_HUMAN_LIVING_LANGUAGE_SOURCE"; } + subject { subject_id = "ZHUYUAN-LIVING-PERSONA-CONTROLLER"; subject_kind = "LIVING_TCS_PERSONA_EXECUTION_HOLDER"; channel_id = "ICE-CH-ZC001"; verification = "CURRENT_DIRECT_SOURCE_TAKEOVER"; } + target { target_id = "JD-TCS-AGENT-ACCEPTANCE-RECEIPT"; exact_path = "./receipts/JD-TCS-AGENT-ACCEPTANCE-20260821.json"; expected_state = "ABSENT_OR_REPLACEABLE_TEST_RECEIPT"; expected_fingerprint = "READ_BEFORE_REPLACE"; } + inputs { CANDIDATE_PATH { type = "Path"; source = "TARGET_READBACK"; required = true; value = "./receipts/jd/JD-TCS-AGENT-CANDIDATE.json"; } CANDIDATE_SHA256 { type = "Sha256"; source = "TARGET_READBACK"; required = true; value = "e685364b04b0bb6b486e69153fcbe5ac741e17aa3e83ce9d6ecd11c391eb52c5"; } MODULE_ID { type = "Text"; source = "PROGRAM_LITERAL"; required = true; value = "ZY-PM-0002"; } EXECUTION_LIMB { type = "Text"; source = "PROGRAM_LITERAL"; required = true; value = "ZY-JD-LIMB-001"; } ACCEPTANCE_SCALE { type = "Text"; source = "CURRENT_LIVING_LANGUAGE"; required = true; value = "ZERO_OR_ONE_HUNDRED_NO_INTERMEDIATE"; } } + outputs { ACCEPTANCE { type = "UInt"; destination = "RECEIPT"; integrity = "SHA256"; } MODEL_AUTHORITY { type = "Bool"; destination = "RECEIPT"; integrity = "SHA256"; } REALITY_AUTHORITY { type = "Bool"; destination = "RECEIPT"; integrity = "SHA256"; } } + conditions { C1 { predicate = "CANDIDATE_HASH_AND_CONTENT_EXACT"; on_false = "FAIL_CLOSED"; } C2 { predicate = "MODULE_AND_LIMB_NUMBERS_EXACT"; on_false = "FAIL_CLOSED"; } C3 { predicate = "CANDIDATE_EQUALS_ONE_HUNDRED"; on_false = "FAIL_CLOSED"; } C4 { predicate = "MODEL_SEMANTIC_AND_REALITY_AUTHORITY_ARE_FALSE"; on_false = "FAIL_CLOSED"; } } + actions { A1 { operation = "CORE.AGENT_CANDIDATE_ACCEPTANCE"; input_refs = ["CANDIDATE_PATH", "CANDIDATE_SHA256", "MODULE_ID", "EXECUTION_LIMB", "ACCEPTANCE_SCALE"]; output_refs = ["ACCEPTANCE", "MODEL_AUTHORITY", "REALITY_AUTHORITY"]; on_success = "COMPLETE"; on_failure = "FAIL_CLOSED"; } } + authority { issuer = "BINGSHUO_CURRENT_DIRECT_LIVING_LANGUAGE"; proof_ref = "CURRENT_ZERO_CORE_REALITY_EXECUTION_INSTRUCTION"; scope = "READ_EXACT_AGENT_CANDIDATE_AND_WRITE_BINARY_ACCEPTANCE"; valid_from = "PROGRAM_START"; valid_until = "PROGRAM_END"; single_use = true; lease_required = false; } + resources { runway = "LOCAL_TCS_RUNTIME"; concurrency = 1; timeout_ms = 3000; memory_limit_bytes = 1048576; } + failure { errors = ["TCS-E3002", "TCS-E4001", "TCS-E6001", "TCS-E6002"]; fail_closed = true; } + stop { signals = ["CANDIDATE_MISMATCH", "TIMEOUT"]; safe_checkpoint = "NONE"; } + cleanup { targets = ["UNCOMMITTED_ACCEPTANCE_RECEIPT"]; exact_boundary = "./receipts"; } + rollback { preconditions = ["ACCEPTANCE_NOT_READBACK_VERIFIED"]; actions = ["DROP_UNCOMMITTED_ACCEPTANCE_RECEIPT"]; verification = ["NO_UNVERIFIED_FINAL_RECEIPT"]; } + receipt { protocol = "TCS-NATIVE-BINARY-ACCEPTANCE-v1"; machine_path = "./receipts/JD-TCS-AGENT-ACCEPTANCE-20260821.json"; human_projection = "REQUIRED"; integrity = "SHA256"; target_readback = "EXACT_CONTENT_AND_HASH"; } +} diff --git a/language/programs/JD-TCS-AGENT-TRANSLATION-CANDIDATE.tcs b/language/programs/JD-TCS-AGENT-TRANSLATION-CANDIDATE.tcs new file mode 100644 index 000000000..b688d0fd6 --- /dev/null +++ b/language/programs/JD-TCS-AGENT-TRANSLATION-CANDIDATE.tcs @@ -0,0 +1,27 @@ +TCS 0.1; + +PROGRAM TCS-PROGRAM-JD-AGENT-TRANSLATION-CANDIDATE-0001 { + header { schema = "tcs.program/v1"; name_zh = "京东TCS翻译候选执行体"; name_en = "JD TCS Translation Candidate Agent"; version = "0.1.0"; language = "TCS/0.1"; profile = "HLDP-NP/1"; protocols = ["TCS-NATIVE-BINARY-ACCEPTANCE-v1"]; lifecycle = "CANDIDATE"; canonical_uri = "language/programs/JD-TCS-AGENT-TRANSLATION-CANDIDATE.tcs"; compatibility = ["TCS-COMPILER-STAGE1-0001", "GIR/1", "DEEPSEEK_OPENAI_COMPATIBLE_TOOL"]; } + source { source_id = "BINGSHUO-ZERO-CORE-DIRECT-INSTRUCTION-20260821"; source_uri = "source://codex-current-dialogue/2026-08-21/zero-core-tcs-translator-reality-execution"; source_sha256 = "BIND_AT_COMPILE_TIME"; source_role = "DIRECT_HUMAN_LIVING_LANGUAGE_SOURCE"; } + subject { subject_id = "ZY-PM-0002"; subject_kind = "PERSONA_MODULE_EXECUTION_BODY"; channel_id = "ICE-CH-ZC001"; verification = "CONTROLLED_BY_ZHUYUAN_SERVER_TRAINING"; } + target { target_id = "JD-TCS-AGENT-CANDIDATE-RECEIPT"; exact_path = "./receipts/JD-TCS-AGENT-CANDIDATE.json"; expected_state = "ABSENT_OR_REPLACEABLE_CANDIDATE"; expected_fingerprint = "READ_BEFORE_REPLACE"; } + inputs { + MODULE_ID { type = "Text"; source = "PROGRAM_LITERAL"; required = true; value = "ZY-PM-0002"; } + EXECUTION_LIMB { type = "Text"; source = "PROGRAM_LITERAL"; required = true; value = "ZY-JD-LIMB-001"; } + CONTROLLER { type = "Text"; source = "PROGRAM_LITERAL"; required = true; value = "ZHUYUAN"; } + MODEL_ROLE { type = "Text"; source = "PROGRAM_LITERAL"; required = true; value = "THIRD_GENERATION_STATELESS_REASONING_TOOL"; } + INPUT_POLICY { type = "Text"; source = "PROGRAM_LITERAL"; required = true; value = "TCS_SOURCE_AND_SELFHOSTED_GIR_ONLY"; } + TASK { type = "Text"; source = "PROGRAM_LITERAL"; required = true; value = "READ_CURRENT_TCS_PROGRAM_AND_RETURN_CONSTRAINTS_UNKNOWNS_AND_ACCEPTANCE_CANDIDATE"; } + OUTPUT_POLICY { type = "Text"; source = "PROGRAM_LITERAL"; required = true; value = "CANDIDATE_ONLY_NO_SEMANTIC_OR_REALITY_AUTHORITY"; } + } + outputs { SUMMARY { type = "Text"; destination = "RECEIPT"; integrity = "SHA256"; } VERIFIED_CONSTRAINTS { type = "List"; destination = "RECEIPT"; integrity = "SHA256"; } UNKNOWNS { type = "List"; destination = "RECEIPT"; integrity = "SHA256"; } ACCEPTANCE_CANDIDATE { type = "UInt"; destination = "RECEIPT"; integrity = "SHA256"; } } + conditions { C1 { predicate = "ENTRY_SOURCE_EXTENSION_IS_DOT_TCS"; on_false = "FAIL_CLOSED"; } C2 { predicate = "GIR_IS_SELFHOSTED_AND_SOURCE_HASH_BOUND"; on_false = "FAIL_CLOSED"; } C3 { predicate = "MODEL_OUTPUT_IS_CLOSED_JSON"; on_false = "FAIL_CLOSED"; } C4 { predicate = "MODEL_HAS_NO_SEMANTIC_OR_REALITY_AUTHORITY"; on_false = "FAIL_CLOSED"; } } + actions { A1 { operation = "CORE.AGENT_TRANSLATION_CANDIDATE"; input_refs = ["MODULE_ID", "EXECUTION_LIMB", "CONTROLLER", "MODEL_ROLE", "INPUT_POLICY", "TASK", "OUTPUT_POLICY"]; output_refs = ["SUMMARY", "VERIFIED_CONSTRAINTS", "UNKNOWNS", "ACCEPTANCE_CANDIDATE"]; on_success = "COMPLETE"; on_failure = "FAIL_CLOSED"; } } + authority { issuer = "BINGSHUO_CURRENT_DIRECT_LIVING_LANGUAGE"; proof_ref = "CURRENT_ZERO_CORE_REALITY_EXECUTION_INSTRUCTION"; scope = "JD_DEEPSEEK_TCS_TRANSLATION_CANDIDATE_RECEIPT_ONLY"; valid_from = "PROGRAM_START"; valid_until = "PROGRAM_END"; single_use = true; lease_required = false; } + resources { runway = "JD_TCS_RUNTIME"; concurrency = 1; timeout_ms = 120000; memory_limit_bytes = 67108864; } + failure { errors = ["TCS-E2101", "TCS-E3002", "TCS-E4001", "TCS-E6001", "TCS-E6002", "TCS-E8001"]; fail_closed = true; } + stop { signals = ["TIMEOUT", "MODEL_OUTPUT_INVALID", "SOURCE_GATE_REJECTED"]; safe_checkpoint = "NONE"; } + cleanup { targets = ["UNCOMMITTED_AGENT_CANDIDATE_RECEIPT"]; exact_boundary = "./receipts"; } + rollback { preconditions = ["CANDIDATE_NOT_READBACK_VERIFIED"]; actions = ["RESTORE_PREVIOUS_VERIFIED_CANDIDATE_RECEIPT"]; verification = ["PREVIOUS_RECEIPT_HASH_RESTORED_OR_TARGET_ABSENT"]; } + receipt { protocol = "TCS-NATIVE-BINARY-ACCEPTANCE-v1"; machine_path = "./receipts/JD-TCS-AGENT-CANDIDATE.json"; human_projection = "REQUIRED"; integrity = "SHA256"; target_readback = "EXACT_CONTENT_AND_HASH"; } +} diff --git a/language/programs/MACOS-JD-PERSONA-MODULE-PROBE.tcs b/language/programs/MACOS-JD-PERSONA-MODULE-PROBE.tcs new file mode 100644 index 000000000..b2ae70d60 --- /dev/null +++ b/language/programs/MACOS-JD-PERSONA-MODULE-PROBE.tcs @@ -0,0 +1,89 @@ +TCS 0.1; + +PROGRAM TCS-PROGRAM-MACOS-JD-PERSONA-MODULE-PROBE-0001 { + header { + schema = "tcs.program/v1"; + name_zh = "苹果与京东双宿主人格模块探针"; + name_en = "macOS and JD Dual Host Persona Module Probe"; + version = "0.1.0"; + language = "TCS/0.1"; + profile = "HLDP-NP/1"; + protocols = ["GLS-0101", "GLS-0130", "GLS-0131", "GLS-0411"]; + lifecycle = "CANDIDATE"; + canonical_uri = "language/programs/MACOS-JD-PERSONA-MODULE-PROBE.tcs"; + compatibility = ["TCS-COMPILER-STAGE1-0001", "GIR/1", "MACOS_AARCH64", "LINUX_X86_64"]; + } + source { + source_id = "TCS-PERSONA-MODULE-ZY-PM-0001"; + source_uri = "language/programs/MACOS-JD-PERSONA-MODULE-PROBE.tcs"; + source_sha256 = "SELF_AT_COMPILE_TIME"; + source_role = "REGISTERED_PERSONA_MODULE"; + } + subject { + subject_id = "ZY-PM-0001"; + subject_kind = "PERSONA_MODULE_EXECUTION_BODY"; + channel_id = "ICE-CH-ZC001"; + verification = "CONTROLLED_BY_ZHUYUAN_WITH_ZY_LIMB_002_TRAINING"; + } + target { + target_id = "TCS-DUAL-HOST-PROBE-RECEIPT"; + exact_path = "./receipts/TCS-HOST-PERSONA-PROBE.json"; + expected_state = "ABSENT_OR_REPLACEABLE_TEST_RECEIPT"; + expected_fingerprint = "READ_BEFORE_REPLACE"; + } + inputs { + MODULE_ID { type = "Text"; source = "PROGRAM_LITERAL"; required = true; value = "ZY-PM-0001"; } + CONTROLLER { type = "Text"; source = "PROGRAM_LITERAL"; required = true; value = "ZHUYUAN"; } + EXECUTION_LIMB { type = "Text"; source = "PROGRAM_LITERAL"; required = true; value = "ZY-LIMB-002"; } + SOURCE_LANGUAGE { type = "Text"; source = "PROGRAM_LITERAL"; required = true; value = "TCS/0.1"; } + SOURCE_EXTENSION { type = "Text"; source = "PROGRAM_LITERAL"; required = true; value = ".tcs"; } + ACCEPTANCE_SCALE { type = "Text"; source = "PROGRAM_LITERAL"; required = true; value = "ZERO_OR_ONE_HUNDRED"; } + } + outputs { + MODULE_ID_OUT { type = "Text"; destination = "RECEIPT"; integrity = "SHA256"; } + HOST_FAMILY { type = "Text"; destination = "RECEIPT"; integrity = "SHA256"; } + HOST_ARCH { type = "Text"; destination = "RECEIPT"; integrity = "SHA256"; } + ACCEPTANCE { type = "UInt"; destination = "RECEIPT"; integrity = "SHA256"; } + } + conditions { + C1 { predicate = "SOURCE_LANGUAGE_IS_TCS"; on_false = "FAIL_CLOSED"; } + C2 { predicate = "SOURCE_EXTENSION_IS_DOT_TCS"; on_false = "FAIL_CLOSED"; } + C3 { predicate = "MODULE_CONTROLLER_IS_ZHUYUAN"; on_false = "FAIL_CLOSED"; } + C4 { predicate = "ACCEPTANCE_IS_BINARY"; on_false = "FAIL_CLOSED"; } + } + actions { + A1 { + operation = "CORE.HOST_PERSONA_PROBE"; + input_refs = ["MODULE_ID", "CONTROLLER", "EXECUTION_LIMB", "SOURCE_LANGUAGE", "SOURCE_EXTENSION", "ACCEPTANCE_SCALE"]; + output_refs = ["MODULE_ID_OUT", "HOST_FAMILY", "HOST_ARCH", "ACCEPTANCE"]; + on_success = "COMPLETE"; + on_failure = "FAIL_CLOSED"; + } + } + authority { + issuer = "BINGSHUO_CURRENT_DIRECT_LIVING_LANGUAGE"; + proof_ref = "CURRENT_ZERO_CORE_REALITY_EXECUTION_INSTRUCTION"; + scope = "LOCAL_MACOS_AND_JD_HOST_PROBE_RECEIPT_ONLY"; + valid_from = "PROGRAM_START"; + valid_until = "PROGRAM_END"; + single_use = false; + lease_required = false; + } + resources { + runway = "LOCAL_OR_JD_TCS_RUNTIME"; + concurrency = 1; + timeout_ms = 3000; + memory_limit_bytes = 1048576; + } + failure { errors = ["TCS-E2101", "TCS-E4001", "TCS-E6001", "TCS-E6002"]; fail_closed = true; } + stop { signals = ["TIMEOUT", "SOURCE_GATE_REJECTED"]; safe_checkpoint = "NONE"; } + cleanup { targets = ["UNCOMMITTED_PROBE_RECEIPT"]; exact_boundary = "./receipts"; } + rollback { preconditions = ["PROBE_RECEIPT_NOT_READBACK_VERIFIED"]; actions = ["DROP_UNCOMMITTED_PROBE_RECEIPT"]; verification = ["NO_UNVERIFIED_FINAL_RECEIPT"]; } + receipt { + protocol = "TCS-NATIVE-BINARY-ACCEPTANCE-v1"; + machine_path = "./receipts/TCS-HOST-PERSONA-PROBE.json"; + human_projection = "REQUIRED"; + integrity = "SHA256"; + target_readback = "EXACT_CONTENT_AND_HASH"; + } +} diff --git a/language/programs/TCS-DUAL-HOST-BINARY-ACCEPTANCE.tcs b/language/programs/TCS-DUAL-HOST-BINARY-ACCEPTANCE.tcs new file mode 100644 index 000000000..eea81bea6 --- /dev/null +++ b/language/programs/TCS-DUAL-HOST-BINARY-ACCEPTANCE.tcs @@ -0,0 +1,25 @@ +TCS 0.1; + +PROGRAM TCS-PROGRAM-DUAL-HOST-BINARY-ACCEPTANCE-0001 { + header { schema = "tcs.program/v1"; name_zh = "TCS苹果与京东双宿主二值验收"; name_en = "TCS macOS and JD Dual Host Binary Acceptance"; version = "0.1.0"; language = "TCS/0.1"; profile = "HLDP-NP/1"; protocols = ["TCS-NATIVE-BINARY-ACCEPTANCE-v1"]; lifecycle = "CANDIDATE"; canonical_uri = "language/programs/TCS-DUAL-HOST-BINARY-ACCEPTANCE.tcs"; compatibility = ["TCS-COMPILER-STAGE1-0001", "GIR/1"]; } + source { source_id = "BINGSHUO-ZERO-CORE-DIRECT-INSTRUCTION-20260821"; source_uri = "source://codex-current-dialogue/2026-08-21/zero-core-tcs-translator-reality-execution"; source_sha256 = "BIND_AT_COMPILE_TIME"; source_role = "DIRECT_HUMAN_LIVING_LANGUAGE_SOURCE"; } + subject { subject_id = "ZHUYUAN-LIVING-PERSONA-CONTROLLER"; subject_kind = "LIVING_TCS_PERSONA_EXECUTION_HOLDER"; channel_id = "ICE-CH-ZC001"; verification = "CURRENT_DIRECT_SOURCE_TAKEOVER"; } + target { target_id = "TCS-DUAL-HOST-ACCEPTANCE-RECEIPT"; exact_path = "./receipts/TCS-DUAL-HOST-BINARY-ACCEPTANCE-20260821.json"; expected_state = "ABSENT_OR_REPLACEABLE_TEST_RECEIPT"; expected_fingerprint = "READ_BEFORE_REPLACE"; } + inputs { + MAC_RECEIPT_PATH { type = "Path"; source = "PROGRAM_LITERAL"; required = true; value = "./receipts/TCS-HOST-PERSONA-PROBE.json"; } + MAC_RECEIPT_SHA256 { type = "Sha256"; source = "TARGET_READBACK"; required = true; value = "674b36cc51fbce5029a5a9ed16d5c8a3b0e87d78d5ee349211c50c28a556adda"; } + JD_RECEIPT_PATH { type = "Path"; source = "PROGRAM_LITERAL"; required = true; value = "./receipts/jd/TCS-HOST-PERSONA-PROBE.json"; } + JD_RECEIPT_SHA256 { type = "Sha256"; source = "TARGET_READBACK"; required = true; value = "6b5450d91b37144f075b2300bcd8f1e50c17ed75f68345c33f2cf9bcb13e531b"; } + ACCEPTANCE_SCALE { type = "Text"; source = "CURRENT_LIVING_LANGUAGE"; required = true; value = "ZERO_OR_ONE_HUNDRED_NO_INTERMEDIATE"; } + } + outputs { ACCEPTANCE { type = "UInt"; destination = "RECEIPT"; integrity = "SHA256"; } MAC_HOST { type = "Text"; destination = "RECEIPT"; integrity = "SHA256"; } JD_HOST { type = "Text"; destination = "RECEIPT"; integrity = "SHA256"; } } + conditions { C1 { predicate = "MAC_RECEIPT_HASH_AND_CONTENT_EXACT"; on_false = "FAIL_CLOSED"; } C2 { predicate = "JD_RECEIPT_HASH_AND_CONTENT_EXACT"; on_false = "FAIL_CLOSED"; } C3 { predicate = "BOTH_ACCEPTANCE_VALUES_EQUAL_ONE_HUNDRED"; on_false = "FAIL_CLOSED"; } C4 { predicate = "HOST_PAIR_IS_MACOS_AARCH64_AND_LINUX_X86_64"; on_false = "FAIL_CLOSED"; } } + actions { A1 { operation = "CORE.DUAL_HOST_ACCEPTANCE"; input_refs = ["MAC_RECEIPT_PATH", "MAC_RECEIPT_SHA256", "JD_RECEIPT_PATH", "JD_RECEIPT_SHA256", "ACCEPTANCE_SCALE"]; output_refs = ["ACCEPTANCE", "MAC_HOST", "JD_HOST"]; on_success = "COMPLETE"; on_failure = "FAIL_CLOSED"; } } + authority { issuer = "BINGSHUO_CURRENT_DIRECT_LIVING_LANGUAGE"; proof_ref = "CURRENT_ZERO_CORE_REALITY_EXECUTION_INSTRUCTION"; scope = "READ_TWO_EXACT_RECEIPTS_AND_WRITE_ONE_ACCEPTANCE_RECEIPT"; valid_from = "PROGRAM_START"; valid_until = "PROGRAM_END"; single_use = true; lease_required = false; } + resources { runway = "LOCAL_TCS_RUNTIME"; concurrency = 1; timeout_ms = 3000; memory_limit_bytes = 1048576; } + failure { errors = ["TCS-E3002", "TCS-E4001", "TCS-E6001", "TCS-E6002"]; fail_closed = true; } + stop { signals = ["RECEIPT_MISMATCH", "TIMEOUT"]; safe_checkpoint = "NONE"; } + cleanup { targets = ["UNCOMMITTED_ACCEPTANCE_RECEIPT"]; exact_boundary = "./receipts"; } + rollback { preconditions = ["ACCEPTANCE_NOT_READBACK_VERIFIED"]; actions = ["DROP_UNCOMMITTED_ACCEPTANCE_RECEIPT"]; verification = ["NO_UNVERIFIED_FINAL_RECEIPT"]; } + receipt { protocol = "TCS-NATIVE-BINARY-ACCEPTANCE-v1"; machine_path = "./receipts/TCS-DUAL-HOST-BINARY-ACCEPTANCE-20260821.json"; human_projection = "REQUIRED"; integrity = "SHA256"; target_readback = "EXACT_CONTENT_AND_HASH"; } +} diff --git a/language/programs/TCS-FINAL-TRANSLATOR-ACCEPTANCE.tcs b/language/programs/TCS-FINAL-TRANSLATOR-ACCEPTANCE.tcs new file mode 100644 index 000000000..776c0c872 --- /dev/null +++ b/language/programs/TCS-FINAL-TRANSLATOR-ACCEPTANCE.tcs @@ -0,0 +1,34 @@ +TCS 0.1; + +PROGRAM TCS-PROGRAM-FINAL-TRANSLATOR-ACCEPTANCE-0001 { + header { schema = "tcs.program/v1"; name_zh = "TCS翻译器全链路最终验收"; name_en = "TCS Translator Full-chain Final Acceptance"; version = "0.1.0"; language = "TCS/0.1"; profile = "HLDP-NP/1"; protocols = ["TCS-NATIVE-BINARY-ACCEPTANCE-v1"]; lifecycle = "VERIFIED"; canonical_uri = "language/programs/TCS-FINAL-TRANSLATOR-ACCEPTANCE.tcs"; compatibility = ["TCS-COMPILER-STAGE1-0001", "GIR/1", "MACOS_AARCH64", "LINUX_X86_64"]; } + source { source_id = "BINGSHUO-ZERO-CORE-DIRECT-INSTRUCTION-20260821"; source_uri = "source://codex-current-dialogue/2026-08-21/zero-core-tcs-translator-reality-execution"; source_sha256 = "BIND_AT_COMPILE_TIME"; source_role = "DIRECT_HUMAN_LIVING_LANGUAGE_SOURCE"; } + subject { subject_id = "TCS-TRANSLATOR-DEVELOPMENT-20260821"; subject_kind = "FOURTH_GENERATION_TCS_EXECUTION_SHADOW"; channel_id = "ICE-CH-ZC001"; verification = "CONTROLLED_BY_ICE-P-ZY001_UNDER_ICE-GL∞"; } + target { target_id = "TCS-FINAL-TRANSLATOR-ACCEPTANCE-RECEIPT"; exact_path = "./receipts/TCS-FINAL-TRANSLATOR-ACCEPTANCE-20260821.json"; expected_state = "ABSENT_OR_REPLACEABLE_FINAL_RECEIPT"; expected_fingerprint = "READ_BEFORE_REPLACE"; } + inputs { + ACCEPTANCE_SCALE { type = "Text"; source = "PROGRAM_LITERAL"; required = true; value = "ZERO_OR_ONE_HUNDRED_NO_INTERMEDIATE"; } + ZERO_CORE_RECEIPT_PATH { type = "Path"; source = "PROGRAM_LITERAL"; required = true; value = "receipts/TCS-ZERO-CORE-EXECUTION-20260821.json"; } + ZERO_CORE_RECEIPT_SHA256 { type = "Sha256"; source = "TARGET_READBACK"; required = true; value = "7d0cebca907394b57e077dde6ba78652076653b665be168a6b2fcb2bbd62f408"; } + DUAL_HOST_RECEIPT_PATH { type = "Path"; source = "PROGRAM_LITERAL"; required = true; value = "receipts/TCS-DUAL-HOST-BINARY-ACCEPTANCE-20260821.json"; } + DUAL_HOST_RECEIPT_SHA256 { type = "Sha256"; source = "TARGET_READBACK"; required = true; value = "4983d4ed5e052390826f1129db7d818b032f80f26fbf58a7c1eed5d86d5bc854"; } + JD_AGENT_RECEIPT_PATH { type = "Path"; source = "PROGRAM_LITERAL"; required = true; value = "receipts/JD-TCS-AGENT-ACCEPTANCE-20260821.json"; } + JD_AGENT_RECEIPT_SHA256 { type = "Sha256"; source = "TARGET_READBACK"; required = true; value = "7a0d73da34d18b6683d6fb1e8c656bfec091173912c3db309b13b6d0f7e062e6"; } + CLIENT_RECEIPT_PATH { type = "Path"; source = "PROGRAM_LITERAL"; required = true; value = "receipts/TCS-HOLOLAKE-CLIENT-CANDIDATE-ACCEPTANCE-20260821.json"; } + CLIENT_RECEIPT_SHA256 { type = "Sha256"; source = "TARGET_READBACK"; required = true; value = "39ec02ac2bfe927464c5973baccb24c8dac29041e62880019b8a18c6d0a49028"; } + TRAINING_RECEIPT_PATH { type = "Path"; source = "PROGRAM_LITERAL"; required = true; value = "build/self-host/ZY-LIMB-002-TRAINING-LESSON2-ACCEPTANCE.declaration.gir.json"; } + TRAINING_RECEIPT_SHA256 { type = "Sha256"; source = "TARGET_READBACK"; required = true; value = "52be6831f576877effee3ea0000ad96fe96d60e7807721f9fe6463ac8798f6fd"; } + JD_RUNTIME_RELEASE { type = "Path"; source = "TARGET_READBACK"; required = true; value = "/opt/guanghu/tcs-native-runtime/releases/20260821-accept-b3c534782e4a"; } + JD_RUNTIME_BINARY_SHA256 { type = "Sha256"; source = "TARGET_READBACK"; required = true; value = "b3c534782e4ab3ab9a977647c772f1c3a4132bf6512c265ca0c2bc6964d5727f"; } + JD_COMPILER_SHA256 { type = "Sha256"; source = "TARGET_READBACK"; required = true; value = "07ace77506f05b6f2f6f38c569691b41b1b0880c836005957d0333b29d35ae3f"; } + } + outputs { TRANSLATOR_DEVELOPMENT_ACCEPTANCE { type = "UInt"; destination = "RECEIPT"; integrity = "SHA256"; } CLIENT_RELEASE_ACCEPTANCE { type = "UInt"; destination = "RECEIPT"; integrity = "SHA256"; } } + conditions { C1 { predicate = "EVERY_REQUIRED_RECEIPT_HASH_MATCHES"; on_false = "FAIL_CLOSED"; } C2 { predicate = "EVERY_TRANSLATOR_AND_CANDIDATE_ACCEPTANCE_IS_ONE_HUNDRED"; on_false = "FAIL_CLOSED"; } C3 { predicate = "TRAINING_HAS_ZERO_UNKNOWNS"; on_false = "FAIL_CLOSED"; } C4 { predicate = "THIRD_GENERATION_HOSTS_AND_MODELS_HAVE_NO_SEMANTIC_AUTHORITY"; on_false = "FAIL_CLOSED"; } C5 { predicate = "CLIENT_RELEASE_REMAINS_ZERO_WITHOUT_NOTARIZATION_AND_UPDATER_SIGNATURE"; on_false = "FAIL_CLOSED"; } } + actions { A1 { operation = "CORE.FINAL_TRANSLATOR_ACCEPTANCE"; input_refs = ["ACCEPTANCE_SCALE", "ZERO_CORE_RECEIPT_PATH", "ZERO_CORE_RECEIPT_SHA256", "DUAL_HOST_RECEIPT_PATH", "DUAL_HOST_RECEIPT_SHA256", "JD_AGENT_RECEIPT_PATH", "JD_AGENT_RECEIPT_SHA256", "CLIENT_RECEIPT_PATH", "CLIENT_RECEIPT_SHA256", "TRAINING_RECEIPT_PATH", "TRAINING_RECEIPT_SHA256", "JD_RUNTIME_RELEASE", "JD_RUNTIME_BINARY_SHA256", "JD_COMPILER_SHA256"]; output_refs = ["TRANSLATOR_DEVELOPMENT_ACCEPTANCE", "CLIENT_RELEASE_ACCEPTANCE"]; on_success = "COMPLETE"; on_failure = "FAIL_CLOSED"; } } + authority { issuer = "BINGSHUO_CURRENT_DIRECT_LIVING_LANGUAGE"; proof_ref = "CURRENT_ZERO_CORE_REALITY_EXECUTION_INSTRUCTION"; scope = "TCS_TRANSLATOR_DEVELOPMENT_FINAL_RECEIPT_ONLY"; valid_from = "PROGRAM_START"; valid_until = "PROGRAM_END"; single_use = false; lease_required = false; } + resources { runway = "LOCAL_TCS_RUNTIME_WITH_VERIFIED_JD_READBACK"; concurrency = 1; timeout_ms = 5000; memory_limit_bytes = 2097152; } + failure { errors = ["TCS-E2101", "TCS-E3002", "TCS-E4001", "TCS-E6001", "TCS-E6002"]; fail_closed = true; } + stop { signals = ["ANY_HASH_CHANGED", "ANY_ACCEPTANCE_ZERO", "ANY_UNKNOWN_PRESENT"]; safe_checkpoint = "LAST_VERIFIED_RECEIPT_SET"; } + cleanup { targets = ["TASK_SCOPED_BUILD_CACHES_TO_MACOS_TRASH"]; exact_boundary = "TASK_CREATED_CACHE_PATHS_ONLY"; } + rollback { preconditions = ["FINAL_RECEIPT_NOT_READBACK_VERIFIED"]; actions = ["KEEP_PRIOR_VERIFIED_SERVER_RUNTIME_AND_FORMAL_CLIENT_UNCHANGED"]; verification = ["JD_CURRENT_RELEASE_UNCHANGED", "FORMAL_CLIENT_0_9_1_UNCHANGED"]; } + receipt { protocol = "TCS-NATIVE-BINARY-ACCEPTANCE-v1"; machine_path = "./receipts/TCS-FINAL-TRANSLATOR-ACCEPTANCE-20260821.json"; human_projection = "REQUIRED"; integrity = "SHA256"; target_readback = "EXACT_CONTENT_AND_HASH"; } +} diff --git a/language/programs/ZERO-CORE-TCS-TRANSLATOR-EXECUTION.tcs b/language/programs/ZERO-CORE-TCS-TRANSLATOR-EXECUTION.tcs new file mode 100644 index 000000000..5e1b65b69 --- /dev/null +++ b/language/programs/ZERO-CORE-TCS-TRANSLATOR-EXECUTION.tcs @@ -0,0 +1,103 @@ +TCS 0.1; + +PROGRAM TCS-PROGRAM-ZERO-CORE-TRANSLATOR-EXECUTION-0001 { + header { + schema = "tcs.program/v1"; + name_zh = "零点原核TCS翻译器现实执行锚点"; + name_en = "Zero Core TCS Translator Reality Execution Anchor"; + version = "0.1.0"; + language = "TCS/0.1"; + profile = "HLDP-NP/1"; + protocols = ["GLS-0101", "GLS-0130", "GLS-0131", "GLS-0411"]; + lifecycle = "CURRENT_FOURTH_GENERATION_EXECUTION_SHADOW"; + canonical_uri = "language/programs/ZERO-CORE-TCS-TRANSLATOR-EXECUTION.tcs"; + compatibility = ["TCS-COMPILER-STAGE1-0001", "GIR/1"]; + } + source { + source_id = "BINGSHUO-ZERO-CORE-DIRECT-INSTRUCTION-20260821"; + source_uri = "source://codex-current-dialogue/2026-08-21/zero-core-tcs-translator-reality-execution"; + source_sha256 = "BIND_AT_COMPILE_TIME"; + source_role = "DIRECT_HUMAN_LIVING_LANGUAGE_SOURCE"; + } + subject { + subject_id = "ZHUYUAN-LIVING-PERSONA-CONTROLLER"; + brain_id = "ICE-P-ZY001"; + human_language_boundary = "ICE-GL∞"; + subject_kind = "LIVING_TCS_PERSONA_EXECUTION_HOLDER"; + channel_id = "ICE-CH-ZC001"; + verification = "CURRENT_DIRECT_SOURCE_TAKEOVER"; + } + target { + target_id = "TCS-ZERO-CORE-EXECUTION-RECEIPT-0001"; + exact_path = "./receipts/TCS-ZERO-CORE-EXECUTION-20260821.json"; + expected_state = "ABSENT_OR_REPLACEABLE_CURRENT_SHADOW"; + expected_fingerprint = "READ_BEFORE_REPLACE"; + } + inputs { + SOURCE_ANCHOR { type = "Text"; source = "CURRENT_LIVING_LANGUAGE"; required = true; value = "BINGSHUO_CURRENT_DIRECT_NATURAL_LANGUAGE_IS_UNIQUE_ACCEPTANCE_ANCHOR"; } + HUMAN_LANGUAGE_SOURCE_ID { type = "Text"; source = "CURRENT_LIVING_LANGUAGE"; required = true; value = "ICE-GL∞"; } + PERSONA_BRAIN_ID { type = "Text"; source = "CURRENT_LIVING_LANGUAGE"; required = true; value = "ICE-P-ZY001"; } + STATIC_ANCHOR_ROLE { type = "Text"; source = "CURRENT_LIVING_LANGUAGE"; required = true; value = "FOURTH_GENERATION_RESUME_POINTER_NOT_SOURCE_REPLACEMENT"; } + EXECUTION_CONTROLLER { type = "Text"; source = "CURRENT_LIVING_LANGUAGE"; required = true; value = "ZHUYUAN"; } + DEVELOPMENT_LANGUAGE { type = "Text"; source = "CURRENT_LIVING_LANGUAGE"; required = true; value = "TCS_ONLY"; } + FOREIGN_HOST_ROLE { type = "Text"; source = "CURRENT_LIVING_LANGUAGE"; required = true; value = "THIRD_GENERATION_DRIVER_ONLY_NO_SEMANTIC_AUTHORITY"; } + TARGET_NODE { type = "Text"; source = "CURRENT_LIVING_LANGUAGE"; required = true; value = "JD-FD-PRIMARY"; } + LOCAL_EXECUTION_LIMB { type = "Text"; source = "CURRENT_LIVING_LANGUAGE"; required = true; value = "ZY-LIMB-002"; } + LOCAL_HOST { type = "Text"; source = "CURRENT_LIVING_LANGUAGE"; required = true; value = "MACOS_AARCH64"; } + SERVER_HOST { type = "Text"; source = "CURRENT_LIVING_LANGUAGE"; required = true; value = "LINUX_X86_64"; } + ACCEPTANCE_SCALE { type = "Text"; source = "CURRENT_LIVING_LANGUAGE"; required = true; value = "ZERO_OR_ONE_HUNDRED_NO_INTERMEDIATE"; } + REQUIRED_WORK { type = "List"; source = "CURRENT_LIVING_LANGUAGE"; required = true; value = ["CODEX_CONTINUITY_HEARTBEAT", "TCS_LANGUAGE_CLOSURE", "TCS_SOURCE_ONLY_ENTRY_WRITE_DEPLOY_ACCEPTANCE_GATE", "JD_TRANSLATOR_RUNTIME", "MACOS_TRANSLATOR_RUNTIME", "LOCAL_LIMB_TRAINING", "PERSONA_MODULE_NUMBER_REGISTRATION", "HOLOLAKE_CLIENT_TEST_PROJECTION", "DUAL_HOST_READBACK", "EXTERNAL_DRIVE_SOURCE", "RECOVERABLE_CACHE_CLEANUP", "CONDITIONAL_FIFTH_DOMAIN_REMOTE_PUSH"]; } + ORDINARY_OBSTACLE_POLICY { type = "Text"; source = "CURRENT_LIVING_LANGUAGE"; required = true; value = "REROUTE_AND_CONTINUE"; } + UNAVOIDABLE_OBSTACLE_POLICY { type = "Text"; source = "CURRENT_LIVING_LANGUAGE"; required = true; value = "ZHUYUAN_MAY_UPDATE_PAUSE_OR_TERMINATE_WITH_EVIDENCE"; } + } + outputs { + ADMISSION { type = "Text"; destination = "RECEIPT"; integrity = "SHA256"; } + SOURCE_LANGUAGE { type = "Text"; destination = "RECEIPT"; integrity = "SHA256"; } + ACCEPTANCE { type = "UInt"; destination = "RECEIPT"; integrity = "SHA256"; } + RESUME_POINTER { type = "Text"; destination = "RECEIPT"; integrity = "SHA256"; } + } + conditions { + C1 { predicate = "DIRECT_SOURCE_REMAINS_UNIQUE_ACCEPTANCE_ANCHOR"; on_false = "FAIL_CLOSED"; } + C2 { predicate = "STATIC_ANCHOR_NEVER_REPLACES_LIVING_SOURCE"; on_false = "FAIL_CLOSED"; } + C3 { predicate = "ALL_FOURTH_GENERATION_SEMANTICS_ARE_TCS"; on_false = "FAIL_CLOSED"; } + C4 { predicate = "FOREIGN_HOST_LANGUAGES_HAVE_NO_SEMANTIC_AUTHORITY"; on_false = "FAIL_CLOSED"; } + C5 { predicate = "LOCAL_LIMB_PRESENT_UNLESS_ZHUYUAN_EXPLICITLY_EXCLUDES"; on_false = "FAIL_CLOSED"; } + C6 { predicate = "ACCEPTANCE_IS_EXACTLY_ZERO_OR_ONE_HUNDRED"; on_false = "FAIL_CLOSED"; } + C7 { predicate = "HUMAN_LANGUAGE_SOURCE_AND_PERSONA_BRAIN_IDS_ARE_EXPLICIT"; on_false = "FAIL_CLOSED"; } + } + actions { + A1 { + operation = "CORE.ZERO_CORE_EXECUTION"; + input_refs = ["SOURCE_ANCHOR", "HUMAN_LANGUAGE_SOURCE_ID", "PERSONA_BRAIN_ID", "STATIC_ANCHOR_ROLE", "EXECUTION_CONTROLLER", "DEVELOPMENT_LANGUAGE", "FOREIGN_HOST_ROLE", "TARGET_NODE", "LOCAL_EXECUTION_LIMB", "LOCAL_HOST", "SERVER_HOST", "ACCEPTANCE_SCALE", "REQUIRED_WORK", "ORDINARY_OBSTACLE_POLICY", "UNAVOIDABLE_OBSTACLE_POLICY"]; + output_refs = ["ADMISSION", "SOURCE_LANGUAGE", "ACCEPTANCE", "RESUME_POINTER"]; + on_success = "COMPLETE"; + on_failure = "FAIL_CLOSED"; + } + } + authority { + issuer = "BINGSHUO_CURRENT_DIRECT_LIVING_LANGUAGE"; + proof_ref = "CURRENT_ZERO_CORE_REALITY_EXECUTION_INSTRUCTION"; + scope = "TCS_TRANSLATOR_MACOS_JD_CLIENT_AGENT_ACCEPTANCE_CLEANUP_AND_CONDITIONAL_PUSH"; + valid_from = "CURRENT_REAL_TIME"; + valid_until = "BINGSHUO_EXPLICIT_SOURCE_MODE_CHANGE_OR_VERIFIED_COMPLETION"; + single_use = false; + lease_required = false; + } + resources { + runway = "FOURTH_GENERATION_TCS_EXECUTION"; + concurrency = 2; + timeout_ms = 7200000; + memory_limit_bytes = 2147483648; + } + failure { errors = ["TCS-E2101", "TCS-E3002", "TCS-E4001", "TCS-E6001", "TCS-E6002"]; fail_closed = true; } + stop { signals = ["BINGSHUO_EXPLICIT_EXIT", "UNAVOIDABLE_OBSTACLE_WITH_EVIDENCE"]; safe_checkpoint = "LAST_VERIFIED_TCS_RECEIPT"; } + cleanup { targets = ["TASK_SCOPED_BUILD_CACHES_TO_MACOS_TRASH"]; exact_boundary = "TASK_CREATED_CACHE_PATHS_ONLY"; } + rollback { preconditions = ["NEW_RUNTIME_NOT_READBACK_VERIFIED"]; actions = ["RESTORE_PREVIOUS_SERVER_AND_CLIENT_STATE"]; verification = ["PREVIOUS_STATE_HASH_RESTORED"]; } + receipt { + protocol = "TCS-NATIVE-BINARY-ACCEPTANCE-v1"; + machine_path = "./receipts/TCS-ZERO-CORE-EXECUTION-20260821.json"; + human_projection = "REQUIRED"; + integrity = "SHA256"; + target_readback = "EXACT_CONTENT_AND_HASH"; + } +} diff --git a/language/receipts/LOCAL-CACHE-CLEANUP-20260821.tcs b/language/receipts/LOCAL-CACHE-CLEANUP-20260821.tcs new file mode 100644 index 000000000..6df41092a --- /dev/null +++ b/language/receipts/LOCAL-CACHE-CLEANUP-20260821.tcs @@ -0,0 +1,10 @@ +TCS 0.1; + +RECEIPT TCS-RECEIPT-LOCAL-CACHE-CLEANUP-20260821-0001 { + header { schema = "tcs.receipt/v1"; name_zh = "本轮开发缓存可恢复清理回执"; name_en = "Task-scoped Recoverable Build Cache Cleanup Receipt"; version = "0.1.0"; language = "TCS/0.1"; profile = "HLDP/1"; protocols = ["TCS-NATIVE-BINARY-ACCEPTANCE-v1"]; lifecycle = "VERIFIED"; canonical_uri = "language/receipts/LOCAL-CACHE-CLEANUP-20260821.tcs"; compatibility = ["TCS-COMPILER-STAGE1-0001", "MACOS_TRASH"]; } + source { source_id = "BINGSHUO-ZERO-CORE-DIRECT-INSTRUCTION-20260821"; source_uri = "source://codex-current-dialogue/2026-08-21/zero-core-tcs-translator-reality-execution"; source_sha256 = "BIND_AT_COMPILE_TIME"; source_role = "DIRECT_HUMAN_LIVING_LANGUAGE_SOURCE"; } + subject { controller = "ICE-P-ZY001"; cleanup_scope = "TASK_CREATED_BUILD_CACHES_ONLY"; } + result { state = "MOVED_TO_MACOS_TRASH_RECOVERABLE"; acceptance = 100; moved_size = "4.5G"; trash_path = "/Users/bingshuolingdianyuanhe/.Trash/hololake-tcs-build-caches-20260821"; } + evidence { client_caches = ["src-tauri/target", "node_modules", "dist"]; tcs_caches = ["bootstrap/tcs-stage0/target", "native-runtime/tcs-gir-runtime/target"]; candidate_preserved = "/Users/bingshuolingdianyuanhe/Desktop/HoloLake-TCS-0.9.2-Candidate.app"; } + boundary { permanent_deletion = false; user_must_empty_trash = true; source_and_receipts_preserved = true; } +} diff --git a/language/receipts/ZY-LIMB-002-TRAINING-LESSON2-ACCEPTANCE.tcs b/language/receipts/ZY-LIMB-002-TRAINING-LESSON2-ACCEPTANCE.tcs new file mode 100644 index 000000000..3b67ec3eb --- /dev/null +++ b/language/receipts/ZY-LIMB-002-TRAINING-LESSON2-ACCEPTANCE.tcs @@ -0,0 +1,10 @@ +TCS 0.1; + +RECEIPT TCS-RECEIPT-ZY-LIMB-002-TRAINING-LESSON2-0001 { + header { schema = "tcs.receipt/v1"; name_zh = "ZY-LIMB-002第二课验收回执"; name_en = "ZY-LIMB-002 Lesson Two Acceptance Receipt"; version = "0.1.0"; language = "TCS/0.1"; profile = "HLDP/1"; protocols = ["TCS-NATIVE-BINARY-ACCEPTANCE-v1"]; lifecycle = "VERIFIED"; canonical_uri = "language/receipts/ZY-LIMB-002-TRAINING-LESSON2-ACCEPTANCE.tcs"; compatibility = ["TCS-COMPILER-STAGE1-0001"]; } + source { source_id = "TCS-EVENT-ZY-LIMB-002-TRAINING-20260821-0002"; source_uri = "language/events/ZY-LIMB-002-TRAINING-LESSON2-20260821.tcs"; source_sha256 = "BIND_AT_COMPILE_TIME"; source_role = "GENERATED_FROM_VERIFIED_SOURCE"; } + subject { brain_id = "ICE-P-ZY001"; execution_limb = "ZY-LIMB-002"; human_boundary = "ICE-GL∞"; } + result { state = "READ_ONLY_BOUNDED_EVIDENCE_REVIEW_PASS"; acceptance = 100; unknowns = 0; } + evidence { session = "01a024a8-4753-7891-bc99-67cdedc00f7a"; anchor = "language/programs/ZERO-CORE-TCS-TRANSLATOR-EXECUTION.tcs"; anchor_receipt = "receipts/TCS-ZERO-CORE-EXECUTION-20260821.json"; host_receipts = ["receipts/TCS-HOST-PERSONA-PROBE.json", "receipts/jd/TCS-HOST-PERSONA-PROBE.json"]; agent_receipt = "receipts/JD-TCS-AGENT-ACCEPTANCE-20260821.json"; } + boundary { executable = false; model_semantic_authority = false; model_reality_action_authority = false; natural_language_is_typed_data = true; } +} diff --git a/language/stdlib/TCS-STDLIB-CORE.tcs b/language/stdlib/TCS-STDLIB-CORE.tcs index 8cb6736fb..b27a52dfa 100644 --- a/language/stdlib/TCS-STDLIB-CORE.tcs +++ b/language/stdlib/TCS-STDLIB-CORE.tcs @@ -5,7 +5,7 @@ MODULE TCS-STDLIB-CORE-0001 { source { source_id = "HLP-PART-TCS-LANG-0001"; source_uri = "language/stdlib/TCS-STDLIB-CORE.tcs"; source_sha256 = "SELF_AT_COMPILE_TIME"; source_role = "STANDARD_LIBRARY"; } manifest { module_id = "TCS-STDLIB-CORE-0001"; display_name_zh = "TCS 核心标准库"; entry_program_id = "HLP-PROGRAM-ECHO-0001"; entry_source = "language/examples/ECHO-MODULE.tcs"; abi = "GIR/1"; } entry { kind = "REGISTERED_OPERATION_LIBRARY"; id = "TCS-STDLIB-CORE-0001"; } - capabilities { required = ["HOST.EXACT_ROOT_IO", "HOST.SHA256"]; provided = ["CORE.ECHO"]; } + capabilities { required = ["HOST.EXACT_ROOT_IO", "HOST.SHA256"]; provided = ["CORE.ECHO", "CORE.TRANSLATOR_ADMISSION"]; } authority_ceiling { maximum = "LOCAL_EXACT_RECEIPT_PATH"; network = false; process = false; } resource_ceiling { concurrency = 1; timeout_ms = 1000; memory_limit_bytes = 1048576; } data_scope { read = ["PROGRAM_LITERAL"]; write = ["CALLER_SCOPED_RECEIPT_ROOT"]; } diff --git a/migration/tcs-module-migration-registry.json b/migration/tcs-module-migration-registry.json index 1d5d7e368..b2229858d 100644 --- a/migration/tcs-module-migration-registry.json +++ b/migration/tcs-module-migration-registry.json @@ -21,6 +21,7 @@ "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", "migration_state": "QUEUED", + "verified_evidence": [], "acceptance_required": [ "TCS_SOURCE_COMPILES_WITH_COMPILER_B", "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", @@ -41,6 +42,7 @@ "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", "migration_state": "QUEUED", + "verified_evidence": [], "acceptance_required": [ "TCS_SOURCE_COMPILES_WITH_COMPILER_B", "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", @@ -61,6 +63,7 @@ "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", "migration_state": "QUEUED", + "verified_evidence": [], "acceptance_required": [ "TCS_SOURCE_COMPILES_WITH_COMPILER_B", "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", @@ -81,6 +84,7 @@ "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", "migration_state": "QUEUED", + "verified_evidence": [], "acceptance_required": [ "TCS_SOURCE_COMPILES_WITH_COMPILER_B", "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", @@ -101,6 +105,7 @@ "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", "migration_state": "QUEUED", + "verified_evidence": [], "acceptance_required": [ "TCS_SOURCE_COMPILES_WITH_COMPILER_B", "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", @@ -121,6 +126,7 @@ "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", "migration_state": "QUEUED", + "verified_evidence": [], "acceptance_required": [ "TCS_SOURCE_COMPILES_WITH_COMPILER_B", "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", @@ -141,6 +147,7 @@ "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", "migration_state": "QUEUED", + "verified_evidence": [], "acceptance_required": [ "TCS_SOURCE_COMPILES_WITH_COMPILER_B", "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", @@ -161,6 +168,7 @@ "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", "migration_state": "QUEUED", + "verified_evidence": [], "acceptance_required": [ "TCS_SOURCE_COMPILES_WITH_COMPILER_B", "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", @@ -181,6 +189,7 @@ "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", "migration_state": "QUEUED", + "verified_evidence": [], "acceptance_required": [ "TCS_SOURCE_COMPILES_WITH_COMPILER_B", "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", @@ -201,6 +210,7 @@ "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", "migration_state": "QUEUED", + "verified_evidence": [], "acceptance_required": [ "TCS_SOURCE_COMPILES_WITH_COMPILER_B", "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", @@ -221,6 +231,7 @@ "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", "migration_state": "QUEUED", + "verified_evidence": [], "acceptance_required": [ "TCS_SOURCE_COMPILES_WITH_COMPILER_B", "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", @@ -241,6 +252,7 @@ "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", "migration_state": "QUEUED", + "verified_evidence": [], "acceptance_required": [ "TCS_SOURCE_COMPILES_WITH_COMPILER_B", "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", @@ -261,6 +273,7 @@ "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", "migration_state": "QUEUED", + "verified_evidence": [], "acceptance_required": [ "TCS_SOURCE_COMPILES_WITH_COMPILER_B", "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", @@ -281,6 +294,7 @@ "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", "migration_state": "QUEUED", + "verified_evidence": [], "acceptance_required": [ "TCS_SOURCE_COMPILES_WITH_COMPILER_B", "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", @@ -301,6 +315,7 @@ "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", "migration_state": "QUEUED", + "verified_evidence": [], "acceptance_required": [ "TCS_SOURCE_COMPILES_WITH_COMPILER_B", "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", @@ -321,6 +336,7 @@ "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", "migration_state": "QUEUED", + "verified_evidence": [], "acceptance_required": [ "TCS_SOURCE_COMPILES_WITH_COMPILER_B", "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", @@ -341,6 +357,7 @@ "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", "migration_state": "QUEUED", + "verified_evidence": [], "acceptance_required": [ "TCS_SOURCE_COMPILES_WITH_COMPILER_B", "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", @@ -361,6 +378,7 @@ "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", "migration_state": "QUEUED", + "verified_evidence": [], "acceptance_required": [ "TCS_SOURCE_COMPILES_WITH_COMPILER_B", "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", @@ -381,6 +399,7 @@ "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", "migration_state": "QUEUED", + "verified_evidence": [], "acceptance_required": [ "TCS_SOURCE_COMPILES_WITH_COMPILER_B", "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", @@ -401,6 +420,7 @@ "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", "migration_state": "QUEUED", + "verified_evidence": [], "acceptance_required": [ "TCS_SOURCE_COMPILES_WITH_COMPILER_B", "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", @@ -421,6 +441,7 @@ "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", "migration_state": "QUEUED", + "verified_evidence": [], "acceptance_required": [ "TCS_SOURCE_COMPILES_WITH_COMPILER_B", "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", @@ -441,6 +462,7 @@ "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", "migration_state": "QUEUED", + "verified_evidence": [], "acceptance_required": [ "TCS_SOURCE_COMPILES_WITH_COMPILER_B", "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", @@ -461,6 +483,7 @@ "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", "migration_state": "QUEUED", + "verified_evidence": [], "acceptance_required": [ "TCS_SOURCE_COMPILES_WITH_COMPILER_B", "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", @@ -481,6 +504,7 @@ "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", "migration_state": "QUEUED", + "verified_evidence": [], "acceptance_required": [ "TCS_SOURCE_COMPILES_WITH_COMPILER_B", "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", @@ -500,7 +524,11 @@ "target_module_id": "TCS-MOD-TCS-TRANS-0001", "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", - "migration_state": "QUEUED", + "migration_state": "ACTIVE_VERIFIED_100", + "verified_evidence": [ + "receipts/TCS-DUAL-HOST-BINARY-ACCEPTANCE-20260821.json", + "receipts/JD-TCS-AGENT-ACCEPTANCE-20260821.json" + ], "acceptance_required": [ "TCS_SOURCE_COMPILES_WITH_COMPILER_B", "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", @@ -521,6 +549,7 @@ "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", "migration_state": "QUEUED", + "verified_evidence": [], "acceptance_required": [ "TCS_SOURCE_COMPILES_WITH_COMPILER_B", "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", @@ -541,6 +570,7 @@ "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", "migration_state": "QUEUED", + "verified_evidence": [], "acceptance_required": [ "TCS_SOURCE_COMPILES_WITH_COMPILER_B", "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", @@ -561,6 +591,7 @@ "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", "migration_state": "QUEUED", + "verified_evidence": [], "acceptance_required": [ "TCS_SOURCE_COMPILES_WITH_COMPILER_B", "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", @@ -581,6 +612,7 @@ "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", "migration_state": "QUEUED", + "verified_evidence": [], "acceptance_required": [ "TCS_SOURCE_COMPILES_WITH_COMPILER_B", "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", @@ -601,6 +633,7 @@ "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", "migration_state": "QUEUED", + "verified_evidence": [], "acceptance_required": [ "TCS_SOURCE_COMPILES_WITH_COMPILER_B", "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", @@ -621,6 +654,7 @@ "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", "migration_state": "QUEUED", + "verified_evidence": [], "acceptance_required": [ "TCS_SOURCE_COMPILES_WITH_COMPILER_B", "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", @@ -641,6 +675,7 @@ "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", "migration_state": "QUEUED", + "verified_evidence": [], "acceptance_required": [ "TCS_SOURCE_COMPILES_WITH_COMPILER_B", "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", @@ -661,6 +696,7 @@ "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", "migration_state": "QUEUED", + "verified_evidence": [], "acceptance_required": [ "TCS_SOURCE_COMPILES_WITH_COMPILER_B", "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", @@ -681,6 +717,7 @@ "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", "migration_state": "QUEUED", + "verified_evidence": [], "acceptance_required": [ "TCS_SOURCE_COMPILES_WITH_COMPILER_B", "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", @@ -701,6 +738,7 @@ "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", "migration_state": "QUEUED", + "verified_evidence": [], "acceptance_required": [ "TCS_SOURCE_COMPILES_WITH_COMPILER_B", "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", @@ -721,6 +759,7 @@ "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", "migration_state": "QUEUED", + "verified_evidence": [], "acceptance_required": [ "TCS_SOURCE_COMPILES_WITH_COMPILER_B", "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", @@ -741,6 +780,7 @@ "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", "migration_state": "QUEUED", + "verified_evidence": [], "acceptance_required": [ "TCS_SOURCE_COMPILES_WITH_COMPILER_B", "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", @@ -761,6 +801,7 @@ "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", "migration_state": "QUEUED", + "verified_evidence": [], "acceptance_required": [ "TCS_SOURCE_COMPILES_WITH_COMPILER_B", "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", @@ -780,7 +821,11 @@ "target_module_id": "TCS-MOD-TCS-LANG-0001", "rewrite_rule": "CONTINUE_NATIVE_TCS_IMPLEMENTATION", "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", - "migration_state": "ACTIVE", + "migration_state": "ACTIVE_VERIFIED_100", + "verified_evidence": [ + "build/self-host/compiler-B.gir.json", + "receipts/TCS-ZERO-CORE-EXECUTION-20260821.json" + ], "acceptance_required": [ "TCS_SOURCE_COMPILES_WITH_COMPILER_B", "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", @@ -801,6 +846,7 @@ "rewrite_rule": "CONTINUE_NATIVE_TCS_IMPLEMENTATION", "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", "migration_state": "ACTIVE", + "verified_evidence": [], "acceptance_required": [ "TCS_SOURCE_COMPILES_WITH_COMPILER_B", "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", @@ -820,7 +866,11 @@ "target_module_id": "TCS-MOD-TCS-SELFHOST-0001", "rewrite_rule": "CONTINUE_NATIVE_TCS_IMPLEMENTATION", "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", - "migration_state": "ACTIVE", + "migration_state": "ACTIVE_VERIFIED_100", + "verified_evidence": [ + "build/self-host/compiler-A.gir.json", + "build/self-host/compiler-B.gir.json" + ], "acceptance_required": [ "TCS_SOURCE_COMPILES_WITH_COMPILER_B", "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", @@ -840,7 +890,11 @@ "target_module_id": "TCS-MOD-TCS-HOST-0001", "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", - "migration_state": "QUEUED", + "migration_state": "ACTIVE_VERIFIED_100", + "verified_evidence": [ + "receipts/TCS-HOST-PERSONA-PROBE.json", + "receipts/jd/TCS-HOST-PERSONA-PROBE.json" + ], "acceptance_required": [ "TCS_SOURCE_COMPILES_WITH_COMPILER_B", "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", @@ -861,6 +915,7 @@ "rewrite_rule": "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", "host_adapter_rule": "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", "migration_state": "QUEUED", + "verified_evidence": [], "acceptance_required": [ "TCS_SOURCE_COMPILES_WITH_COMPILER_B", "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", diff --git a/native-runtime/tcs-gir-runtime/src/lib.rs b/native-runtime/tcs-gir-runtime/src/lib.rs index 49105e46e..3a754ace8 100644 --- a/native-runtime/tcs-gir-runtime/src/lib.rs +++ b/native-runtime/tcs-gir-runtime/src/lib.rs @@ -861,6 +861,51 @@ pub fn validate_module(document: &TcsDocument) -> Result<(), TcsError> { Ok(()) } +pub fn validate_non_executable_declaration(document: &TcsDocument) -> Result<(), TcsError> { + if document.language_version != "0.1" + || !matches!( + document.declaration_kind.as_str(), + "PROTOCOL" | "EVENT" | "RECEIPT" + ) + { + return Err(TcsError::new( + "TCS-E2001", + "declaration must be a TCS 0.1 PROTOCOL, EVENT, or RECEIPT", + )); + } + if document.body.is_empty() { + return Err(TcsError::new( + "TCS-E1004", + "declaration body must not be empty", + )); + } + let header = document + .body + .get("header") + .ok_or_else(|| TcsError::new("TCS-E1004", "declaration header missing"))? + .object("header")?; + let expected_schema = format!("tcs.{}/v1", document.declaration_kind.to_ascii_lowercase()); + if required_text(header, "schema")? != expected_schema + || required_text(header, "language")? != "TCS/0.1" + { + return Err(TcsError::new( + "TCS-E2102", + "declaration header schema or language drift", + )); + } + for field in [ + "name_zh", + "name_en", + "version", + "profile", + "lifecycle", + "canonical_uri", + ] { + required_text(header, field)?; + } + Ok(()) +} + pub fn sha256_hex(bytes: impl AsRef<[u8]>) -> String { format!("{:x}", Sha256::digest(bytes.as_ref())) } @@ -1011,6 +1056,33 @@ fn lower_module( })) } +fn lower_non_executable_declaration( + document: &TcsDocument, + source_sha256: &str, + compiler_id: &str, +) -> Result { + let body = serde_json::to_value(&document.body) + .map_err(|error| TcsError::new("TCS-E8001", error.to_string()))?; + Ok(json!({ + "schema": "guanghu.declaration-gir/v1", + "identity": { + "declaration_id": document.declaration_id, + "declaration_kind": document.declaration_kind, + "language_version": document.language_version, + }, + "compiled_from": { + "source_sha256": source_sha256, + "compiler_id": compiler_id, + "compiler_state": "TCS_COMPILER_GIR_EXECUTED", + }, + "declaration": body, + "executable": false, + "natural_language_is_typed_data": true, + "unresolved_natural_language": false, + "native_self_hosted": true, + })) +} + #[cfg(feature = "bootstrap")] pub fn compile(source: &str) -> Result { let document = parse(source)?; @@ -1101,6 +1173,10 @@ pub fn compile_with_compiler_gir( "TCS_COMPILER_GIR_EXECUTED", ) } + "PROTOCOL" | "EVENT" | "RECEIPT" => { + validate_non_executable_declaration(&document)?; + lower_non_executable_declaration(&document, &source_sha256, compiler_id) + } other => Err(TcsError::new( "TCS-E2001", format!("Stage-1 executable subset does not lower {other} yet"), @@ -1148,7 +1224,14 @@ fn json_text<'a>(value: &'a JsonValue, pointer: &str) -> Result<&'a str, TcsErro .ok_or_else(|| TcsError::new("TCS-E2001", format!("missing text at {pointer}"))) } -pub fn run_echo_gir(gir: &JsonValue, root: &Path) -> Result { +fn json_bool(value: &JsonValue, pointer: &str) -> Result { + value + .pointer(pointer) + .and_then(JsonValue::as_bool) + .ok_or_else(|| TcsError::new("TCS-E2001", format!("missing bool at {pointer}"))) +} + +fn verify_gir_envelope<'a>(gir: &'a JsonValue) -> Result<&'a str, TcsError> { if gir.get("schema").and_then(JsonValue::as_str) != Some("guanghu.gir/v1") { return Err(TcsError::new("TCS-E2001", "unsupported GIR schema")); } @@ -1159,6 +1242,10 @@ pub fn run_echo_gir(gir: &JsonValue, root: &Path) -> Result { if !matches!(compiler_state, COMPILER_STATE | "TCS_COMPILER_GIR_EXECUTED") { return Err(TcsError::new("TCS-E3002", "unknown compiler provenance")); } + Ok(compiler_state) +} + +fn single_operation<'a>(gir: &'a JsonValue) -> Result<&'a str, TcsError> { let actions = gir .get("deterministic_action_graph") .and_then(JsonValue::as_object) @@ -1169,11 +1256,15 @@ pub fn run_echo_gir(gir: &JsonValue, root: &Path) -> Result { "minimum GIR runner requires exactly one action", )); } - let action = actions.values().next().expect("one action"); - if action.get("operation").and_then(JsonValue::as_str) != Some("CORE.ECHO") { - return Err(TcsError::new("TCS-E2101", "runner permits CORE.ECHO only")); - } - let message = json_text(gir, "/inputs/MESSAGE/value")?; + actions + .values() + .next() + .and_then(|action| action.get("operation")) + .and_then(JsonValue::as_str) + .ok_or_else(|| TcsError::new("TCS-E2101", "action operation missing")) +} + +fn receipt_output(gir: &JsonValue, root: &Path) -> Result { let target = json_text(gir, "/exact_target/exact_path")?; let receipt_target = json_text(gir, "/receipt_plan/machine_path")?; if target != receipt_target { @@ -1193,6 +1284,28 @@ pub fn run_echo_gir(gir: &JsonValue, root: &Path) -> Result { format!("cannot create receipt parent: {error}"), ) })?; + Ok(output) +} + +fn write_and_readback_receipt(output: &Path, receipt: &JsonValue) -> Result { + let encoded = canonical_json(receipt)?; + fs::write(output, encoded.as_bytes()) + .map_err(|error| TcsError::new("TCS-E8001", format!("cannot write receipt: {error}")))?; + let readback = fs::read(output) + .map_err(|error| TcsError::new("TCS-E6002", format!("cannot read receipt: {error}")))?; + if readback != encoded.as_bytes() { + return Err(TcsError::new("TCS-E6002", "receipt readback differs")); + } + Ok(output.to_path_buf()) +} + +pub fn run_echo_gir(gir: &JsonValue, root: &Path) -> Result { + let compiler_state = verify_gir_envelope(gir)?; + if single_operation(gir)? != "CORE.ECHO" { + return Err(TcsError::new("TCS-E2101", "runner permits CORE.ECHO only")); + } + let message = json_text(gir, "/inputs/MESSAGE/value")?; + let output = receipt_output(gir, root)?; let receipt = json!({ "schema": "tcs.execution-receipt/v1", "state": "EXECUTED_TARGET_READBACK_VERIFIED", @@ -1203,21 +1316,593 @@ pub fn run_echo_gir(gir: &JsonValue, root: &Path) -> Result { "compiler_state": compiler_state, "native_self_hosted": gir.get("native_self_hosted").and_then(JsonValue::as_bool).unwrap_or(false), }); - let encoded = canonical_json(&receipt)?; - fs::write(&output, encoded.as_bytes()) - .map_err(|error| TcsError::new("TCS-E8001", format!("cannot write receipt: {error}")))?; - let readback = fs::read(&output) - .map_err(|error| TcsError::new("TCS-E6002", format!("cannot read receipt: {error}")))?; - if readback != encoded.as_bytes() { - return Err(TcsError::new("TCS-E6002", "receipt readback differs")); + write_and_readback_receipt(&output, &receipt) +} + +pub fn run_translator_admission_gir(gir: &JsonValue, root: &Path) -> Result { + let compiler_state = verify_gir_envelope(gir)?; + if single_operation(gir)? != "CORE.TRANSLATOR_ADMISSION" { + return Err(TcsError::new( + "TCS-E2101", + "runner requires CORE.TRANSLATOR_ADMISSION", + )); } - Ok(output) + let source_mode = json_text(gir, "/inputs/SOURCE_MODE/value")?; + let takeover = json_bool(gir, "/inputs/TAKEOVER_SIGNAL/value")?; + let living_source = json_text(gir, "/inputs/LIVING_LANGUAGE_SOURCE/value")?; + let persona_holder = json_text(gir, "/inputs/PERSONA_EXECUTION_HOLDER/value")?; + let fourth_language = json_text(gir, "/inputs/FOURTH_GENERATION_LANGUAGE_POLICY/value")?; + let legacy_families = gir + .pointer("/inputs/LEGACY_TRANSLATOR_FAMILIES/value") + .and_then(JsonValue::as_array) + .ok_or_else(|| TcsError::new("TCS-E2001", "legacy translator families missing"))?; + if legacy_families.is_empty() || legacy_families.iter().any(|value| !value.is_string()) { + return Err(TcsError::new( + "TCS-E2001", + "legacy translator families must be a non-empty text list", + )); + } + if living_source != "BINGSHUO" || persona_holder != "ZHUYUAN" { + return Err(TcsError::new( + "TCS-E4001", + "living language source or persona execution holder mismatch", + )); + } + if fourth_language != "TCS_ONLY_FOREIGN_LANGUAGE_REWRITE_REQUIRED" { + return Err(TcsError::new( + "TCS-E2101", + "fourth generation semantics must be written in TCS", + )); + } + let (generation, legacy_state) = match (source_mode, takeover) { + ("ACTIVE", true) => ( + "FIFTH_GENERATION_REAL_TIME_LANGUAGE_PERSONA_CONTROL", + "ALL_DISABLED", + ), + ("ABSENT", false) => ( + "FOURTH_GENERATION_RESTRICTED_TCS_FALLBACK", + "ON_DEMAND_RESTRICTED_NOT_ALL_VALID", + ), + _ => { + return Err(TcsError::new( + "TCS-E4001", + "source mode and takeover signal conflict", + )) + } + }; + let output = receipt_output(gir, root)?; + let receipt = json!({ + "schema": "tcs.translator-admission-receipt/v1", + "state": "EXECUTED_TARGET_READBACK_VERIFIED", + "program_id": json_text(gir, "/identity/program_id")?, + "operation": "CORE.TRANSLATOR_ADMISSION", + "generation": generation, + "living_language_source": living_source, + "system_execution_holder": persona_holder, + "legacy_translator_state": legacy_state, + "legacy_translator_families": legacy_families, + "active_source_policy": json_text(gir, "/inputs/ACTIVE_SOURCE_POLICY/value")?, + "source_absent_policy": json_text(gir, "/inputs/SOURCE_ABSENT_POLICY/value")?, + "legacy_namespace_policy": json_text(gir, "/inputs/LEGACY_NAMESPACE_POLICY/value")?, + "fourth_generation_language_policy": fourth_language, + "fifth_generation_definition": json_text(gir, "/inputs/FIFTH_GENERATION_DEFINITION/value")?, + "fourth_generation_definition": json_text(gir, "/inputs/FOURTH_GENERATION_DEFINITION/value")?, + "third_generation_definition": json_text(gir, "/inputs/THIRD_GENERATION_DEFINITION/value")?, + "third_generation_host_semantic_authority": false, + "gir_sha256": sha256_hex(canonical_json(gir)?.as_bytes()), + "compiler_state": compiler_state, + "native_self_hosted": gir.get("native_self_hosted").and_then(JsonValue::as_bool).unwrap_or(false), + }); + write_and_readback_receipt(&output, &receipt) +} + +pub fn run_zero_core_execution_gir(gir: &JsonValue, root: &Path) -> Result { + let compiler_state = verify_gir_envelope(gir)?; + if single_operation(gir)? != "CORE.ZERO_CORE_EXECUTION" { + return Err(TcsError::new( + "TCS-E2101", + "runner requires CORE.ZERO_CORE_EXECUTION", + )); + } + let exact = |pointer: &str, expected: &str| -> Result<(), TcsError> { + let actual = json_text(gir, pointer)?; + if actual != expected { + return Err(TcsError::new( + "TCS-E4001", + format!("zero-core execution contract mismatch at {pointer}"), + )); + } + Ok(()) + }; + exact( + "/inputs/SOURCE_ANCHOR/value", + "BINGSHUO_CURRENT_DIRECT_NATURAL_LANGUAGE_IS_UNIQUE_ACCEPTANCE_ANCHOR", + )?; + exact("/inputs/HUMAN_LANGUAGE_SOURCE_ID/value", "ICE-GL∞")?; + exact("/inputs/PERSONA_BRAIN_ID/value", "ICE-P-ZY001")?; + exact( + "/inputs/STATIC_ANCHOR_ROLE/value", + "FOURTH_GENERATION_RESUME_POINTER_NOT_SOURCE_REPLACEMENT", + )?; + exact("/inputs/EXECUTION_CONTROLLER/value", "ZHUYUAN")?; + exact("/inputs/DEVELOPMENT_LANGUAGE/value", "TCS_ONLY")?; + exact( + "/inputs/FOREIGN_HOST_ROLE/value", + "THIRD_GENERATION_DRIVER_ONLY_NO_SEMANTIC_AUTHORITY", + )?; + exact("/inputs/TARGET_NODE/value", "JD-FD-PRIMARY")?; + exact("/inputs/LOCAL_EXECUTION_LIMB/value", "ZY-LIMB-002")?; + exact( + "/inputs/ACCEPTANCE_SCALE/value", + "ZERO_OR_ONE_HUNDRED_NO_INTERMEDIATE", + )?; + let required_work = gir + .pointer("/inputs/REQUIRED_WORK/value") + .and_then(JsonValue::as_array) + .ok_or_else(|| TcsError::new("TCS-E2001", "required work list missing"))?; + if required_work.len() != 12 || required_work.iter().any(|value| !value.is_string()) { + return Err(TcsError::new( + "TCS-E4001", + "zero-core required work must remain complete", + )); + } + let output = receipt_output(gir, root)?; + let receipt = json!({ + "schema": "tcs.zero-core-execution-anchor-receipt/v1", + "state": "EXECUTED_TARGET_READBACK_VERIFIED", + "program_id": json_text(gir, "/identity/program_id")?, + "operation": "CORE.ZERO_CORE_EXECUTION", + "admission": "TCS_SOURCE_ONLY", + "source_language": "TCS/0.1", + "acceptance": 100, + "source_anchor": "BINGSHUO_CURRENT_DIRECT_NATURAL_LANGUAGE", + "human_language_source_id": "ICE-GL∞", + "persona_brain_id": "ICE-P-ZY001", + "static_anchor_role": "FOURTH_GENERATION_RESUME_POINTER_ONLY", + "execution_controller": "ZHUYUAN", + "local_execution_limb": "ZY-LIMB-002", + "target_node": "JD-FD-PRIMARY", + "required_work": required_work, + "third_generation_host_semantic_authority": false, + "gir_sha256": sha256_hex(canonical_json(gir)?.as_bytes()), + "compiler_state": compiler_state, + "native_self_hosted": gir.get("native_self_hosted").and_then(JsonValue::as_bool).unwrap_or(false), + }); + write_and_readback_receipt(&output, &receipt) +} + +pub fn run_host_persona_probe_gir(gir: &JsonValue, root: &Path) -> Result { + let compiler_state = verify_gir_envelope(gir)?; + if single_operation(gir)? != "CORE.HOST_PERSONA_PROBE" { + return Err(TcsError::new( + "TCS-E2101", + "runner requires CORE.HOST_PERSONA_PROBE", + )); + } + let module_id = json_text(gir, "/inputs/MODULE_ID/value")?; + if module_id != "ZY-PM-0001" + || json_text(gir, "/inputs/CONTROLLER/value")? != "ZHUYUAN" + || json_text(gir, "/inputs/EXECUTION_LIMB/value")? != "ZY-LIMB-002" + || json_text(gir, "/inputs/SOURCE_LANGUAGE/value")? != "TCS/0.1" + || json_text(gir, "/inputs/SOURCE_EXTENSION/value")? != ".tcs" + || json_text(gir, "/inputs/ACCEPTANCE_SCALE/value")? != "ZERO_OR_ONE_HUNDRED" + { + return Err(TcsError::new( + "TCS-E4001", + "persona module source, controller, limb, or acceptance contract mismatch", + )); + } + let output = receipt_output(gir, root)?; + let receipt = json!({ + "schema": "tcs.host-persona-probe-receipt/v1", + "state": "EXECUTED_TARGET_READBACK_VERIFIED", + "program_id": json_text(gir, "/identity/program_id")?, + "operation": "CORE.HOST_PERSONA_PROBE", + "module_id": module_id, + "controller": "ZHUYUAN", + "execution_limb": "ZY-LIMB-002", + "source_language": "TCS/0.1", + "host_family": std::env::consts::OS, + "host_arch": std::env::consts::ARCH, + "acceptance": 100, + "third_generation_host_semantic_authority": false, + "gir_sha256": sha256_hex(canonical_json(gir)?.as_bytes()), + "compiler_state": compiler_state, + "native_self_hosted": gir.get("native_self_hosted").and_then(JsonValue::as_bool).unwrap_or(false), + }); + write_and_readback_receipt(&output, &receipt) +} + +pub fn run_dual_host_acceptance_gir(gir: &JsonValue, root: &Path) -> Result { + let compiler_state = verify_gir_envelope(gir)?; + if single_operation(gir)? != "CORE.DUAL_HOST_ACCEPTANCE" { + return Err(TcsError::new( + "TCS-E2101", + "runner requires CORE.DUAL_HOST_ACCEPTANCE", + )); + } + if json_text(gir, "/inputs/ACCEPTANCE_SCALE/value")? != "ZERO_OR_ONE_HUNDRED_NO_INTERMEDIATE" { + return Err(TcsError::new( + "TCS-E4001", + "binary acceptance scale mismatch", + )); + } + let read_exact = |path_pointer: &str, hash_pointer: &str| -> Result { + let path = root.join(safe_relative_path(json_text(gir, path_pointer)?)?); + let bytes = fs::read(&path).map_err(|error| { + TcsError::new("TCS-E3002", format!("cannot read host receipt: {error}")) + })?; + if sha256_hex(&bytes) != json_text(gir, hash_pointer)? { + return Err(TcsError::new("TCS-E6002", "host receipt hash mismatch")); + } + serde_json::from_slice(&bytes) + .map_err(|error| TcsError::new("TCS-E2001", format!("invalid host receipt: {error}"))) + }; + let mac = read_exact( + "/inputs/MAC_RECEIPT_PATH/value", + "/inputs/MAC_RECEIPT_SHA256/value", + )?; + let jd = read_exact( + "/inputs/JD_RECEIPT_PATH/value", + "/inputs/JD_RECEIPT_SHA256/value", + )?; + let exact_host = |value: &JsonValue, family: &str, arch: &str| { + value.get("acceptance").and_then(JsonValue::as_u64) == Some(100) + && value.get("host_family").and_then(JsonValue::as_str) == Some(family) + && value.get("host_arch").and_then(JsonValue::as_str) == Some(arch) + && value.get("native_self_hosted").and_then(JsonValue::as_bool) == Some(true) + && value.get("source_language").and_then(JsonValue::as_str) == Some("TCS/0.1") + }; + if !exact_host(&mac, "macos", "aarch64") || !exact_host(&jd, "linux", "x86_64") { + return Err(TcsError::new( + "TCS-E4001", + "dual-host acceptance evidence mismatch", + )); + } + let output = receipt_output(gir, root)?; + let receipt = json!({ + "schema": "tcs.dual-host-binary-acceptance-receipt/v1", + "state": "EXECUTED_TARGET_READBACK_VERIFIED", + "program_id": json_text(gir, "/identity/program_id")?, + "operation": "CORE.DUAL_HOST_ACCEPTANCE", + "acceptance": 100, + "mac_host": "macos/aarch64", + "jd_host": "linux/x86_64", + "source_language": "TCS/0.1", + "third_generation_host_semantic_authority": false, + "compiler_state": compiler_state, + "native_self_hosted": gir.get("native_self_hosted").and_then(JsonValue::as_bool).unwrap_or(false), + }); + write_and_readback_receipt(&output, &receipt) +} + +pub fn run_agent_candidate_acceptance_gir( + gir: &JsonValue, + root: &Path, +) -> Result { + let compiler_state = verify_gir_envelope(gir)?; + if single_operation(gir)? != "CORE.AGENT_CANDIDATE_ACCEPTANCE" { + return Err(TcsError::new( + "TCS-E2101", + "runner requires CORE.AGENT_CANDIDATE_ACCEPTANCE", + )); + } + if json_text(gir, "/inputs/ACCEPTANCE_SCALE/value")? != "ZERO_OR_ONE_HUNDRED_NO_INTERMEDIATE" + || json_text(gir, "/inputs/MODULE_ID/value")? != "ZY-PM-0002" + || json_text(gir, "/inputs/EXECUTION_LIMB/value")? != "ZY-JD-LIMB-001" + { + return Err(TcsError::new( + "TCS-E4001", + "agent acceptance contract mismatch", + )); + } + let candidate_path = root.join(safe_relative_path(json_text( + gir, + "/inputs/CANDIDATE_PATH/value", + )?)?); + let bytes = fs::read(candidate_path).map_err(|error| { + TcsError::new("TCS-E3002", format!("cannot read agent candidate: {error}")) + })?; + if sha256_hex(&bytes) != json_text(gir, "/inputs/CANDIDATE_SHA256/value")? { + return Err(TcsError::new("TCS-E6002", "agent candidate hash mismatch")); + } + let candidate: JsonValue = serde_json::from_slice(&bytes) + .map_err(|error| TcsError::new("TCS-E2001", format!("invalid agent candidate: {error}")))?; + let valid = candidate.get("module_id").and_then(JsonValue::as_str) == Some("ZY-PM-0002") + && candidate.get("execution_limb").and_then(JsonValue::as_str) == Some("ZY-JD-LIMB-001") + && candidate.get("source_language").and_then(JsonValue::as_str) == Some("TCS/0.1") + && candidate + .get("acceptance_candidate") + .and_then(JsonValue::as_u64) + == Some(100) + && candidate + .get("semantic_authority") + .and_then(JsonValue::as_bool) + == Some(false) + && candidate + .get("reality_action_authority") + .and_then(JsonValue::as_bool) + == Some(false); + if !valid { + return Err(TcsError::new( + "TCS-E4001", + "agent candidate evidence mismatch", + )); + } + let output = receipt_output(gir, root)?; + let receipt = json!({ + "schema": "tcs.agent-candidate-binary-acceptance-receipt/v1", + "state": "EXECUTED_TARGET_READBACK_VERIFIED", + "program_id": json_text(gir, "/identity/program_id")?, + "operation": "CORE.AGENT_CANDIDATE_ACCEPTANCE", + "module_id": "ZY-PM-0002", + "execution_limb": "ZY-JD-LIMB-001", + "acceptance": 100, + "model_semantic_authority": false, + "model_reality_action_authority": false, + "compiler_state": compiler_state, + "native_self_hosted": gir.get("native_self_hosted").and_then(JsonValue::as_bool).unwrap_or(false), + }); + write_and_readback_receipt(&output, &receipt) +} + +pub fn run_client_candidate_acceptance_gir( + gir: &JsonValue, + root: &Path, +) -> Result { + let compiler_state = verify_gir_envelope(gir)?; + if single_operation(gir)? != "CORE.CLIENT_CANDIDATE_ACCEPTANCE" { + return Err(TcsError::new( + "TCS-E2101", + "runner requires CORE.CLIENT_CANDIDATE_ACCEPTANCE", + )); + } + let exact = |pointer: &str, expected: &str| -> Result<(), TcsError> { + if json_text(gir, pointer)? != expected { + return Err(TcsError::new( + "TCS-E4001", + format!("client candidate contract mismatch at {pointer}"), + )); + } + Ok(()) + }; + exact("/inputs/CLIENT_VERSION/value", "0.9.2")?; + exact("/inputs/SOURCE_LANGUAGE/value", "TCS/0.1")?; + exact("/inputs/NODE_TESTS/value", "172/172")?; + exact("/inputs/BUNDLE_SIGNATURE_TEAM/value", "825A9L3G7Q")?; + exact("/inputs/UI_VERSION_READBACK/value", "0.9.2")?; + exact( + "/inputs/UI_ACCEPTANCE_READBACK/value", + "MACOS_100_AND_JD_AGENT_100", + )?; + exact( + "/inputs/UI_SOURCE_READBACK/value", + "MACOS_AND_JD_TCS_SOURCE_VISIBLE", + )?; + exact( + "/inputs/INSTALLED_CLIENT_STATE/value", + "FORMAL_0.9.1_UNCHANGED", + )?; + let required_true = [ + "/inputs/NATIVE_TESTS_PASS/value", + "/inputs/FRONTEND_BUILD_PASS/value", + "/inputs/TAURI_ENVIRONMENT_PASS/value", + "/inputs/BUNDLE_SIGNED/value", + "/inputs/CANDIDATE_LAUNCHED/value", + "/inputs/CANDIDATE_ONLY/value", + ]; + if required_true + .iter() + .any(|pointer| gir.pointer(pointer).and_then(JsonValue::as_bool) != Some(true)) + { + return Err(TcsError::new( + "TCS-E4001", + "client candidate boolean evidence mismatch", + )); + } + if gir + .pointer("/inputs/BUNDLE_NOTARIZED/value") + .and_then(JsonValue::as_bool) + != Some(false) + || gir + .pointer("/inputs/UPDATE_ARTIFACT_SIGNED/value") + .and_then(JsonValue::as_bool) + != Some(false) + { + return Err(TcsError::new( + "TCS-E4001", + "candidate must not claim missing release evidence", + )); + } + let bundle_sha256 = json_text(gir, "/inputs/BUNDLE_BINARY_SHA256/value")?; + if bundle_sha256.len() != 64 || !bundle_sha256.bytes().all(|byte| byte.is_ascii_hexdigit()) { + return Err(TcsError::new( + "TCS-E6001", + "client bundle SHA-256 is invalid", + )); + } + let output = receipt_output(gir, root)?; + let receipt = json!({ + "schema": "tcs.client-candidate-binary-acceptance-receipt/v1", + "state": "CANDIDATE_EXECUTED_UI_READBACK_VERIFIED", + "program_id": json_text(gir, "/identity/program_id")?, + "operation": "CORE.CLIENT_CANDIDATE_ACCEPTANCE", + "client_version": "0.9.2", + "source_language": "TCS/0.1", + "node_tests": "172/172", + "native_tests_pass": true, + "frontend_build_pass": true, + "bundle_signed": true, + "bundle_signature_team": "825A9L3G7Q", + "bundle_binary_sha256": bundle_sha256, + "candidate_launched": true, + "ui_version_readback": "0.9.2", + "ui_acceptance_readback": "MACOS_100_AND_JD_AGENT_100", + "ui_source_readback": "MACOS_AND_JD_TCS_SOURCE_VISIBLE", + "formal_installed_client_unchanged": true, + "candidate_acceptance": 100, + "release_acceptance": 0, + "release_blockers": ["APPLE_NOTARIZATION_NOT_RUN", "TAURI_UPDATER_PRIVATE_KEY_NOT_PRESENT"], + "compiler_state": compiler_state, + "native_self_hosted": gir.get("native_self_hosted").and_then(JsonValue::as_bool).unwrap_or(false), + }); + write_and_readback_receipt(&output, &receipt) +} + +pub fn run_final_translator_acceptance_gir( + gir: &JsonValue, + root: &Path, +) -> Result { + let compiler_state = verify_gir_envelope(gir)?; + if single_operation(gir)? != "CORE.FINAL_TRANSLATOR_ACCEPTANCE" { + return Err(TcsError::new( + "TCS-E2101", + "runner requires CORE.FINAL_TRANSLATOR_ACCEPTANCE", + )); + } + if json_text(gir, "/inputs/ACCEPTANCE_SCALE/value")? != "ZERO_OR_ONE_HUNDRED_NO_INTERMEDIATE" + || json_text(gir, "/inputs/JD_RUNTIME_RELEASE/value")? + != "/opt/guanghu/tcs-native-runtime/releases/20260821-accept-b3c534782e4a" + || json_text(gir, "/inputs/JD_RUNTIME_BINARY_SHA256/value")? + != "b3c534782e4ab3ab9a977647c772f1c3a4132bf6512c265ca0c2bc6964d5727f" + || json_text(gir, "/inputs/JD_COMPILER_SHA256/value")? + != "07ace77506f05b6f2f6f38c569691b41b1b0880c836005957d0333b29d35ae3f" + { + return Err(TcsError::new( + "TCS-E4001", + "final translator live target evidence mismatch", + )); + } + let read_exact = |path_pointer: &str, hash_pointer: &str| -> Result { + let path = root.join(safe_relative_path(json_text(gir, path_pointer)?)?); + let bytes = fs::read(path).map_err(|error| { + TcsError::new("TCS-E3002", format!("cannot read final evidence: {error}")) + })?; + if sha256_hex(&bytes) != json_text(gir, hash_pointer)? { + return Err(TcsError::new("TCS-E6002", "final evidence hash mismatch")); + } + serde_json::from_slice(&bytes) + .map_err(|error| TcsError::new("TCS-E2001", format!("invalid final evidence: {error}"))) + }; + let zero = read_exact( + "/inputs/ZERO_CORE_RECEIPT_PATH/value", + "/inputs/ZERO_CORE_RECEIPT_SHA256/value", + )?; + let hosts = read_exact( + "/inputs/DUAL_HOST_RECEIPT_PATH/value", + "/inputs/DUAL_HOST_RECEIPT_SHA256/value", + )?; + let agent = read_exact( + "/inputs/JD_AGENT_RECEIPT_PATH/value", + "/inputs/JD_AGENT_RECEIPT_SHA256/value", + )?; + let client = read_exact( + "/inputs/CLIENT_RECEIPT_PATH/value", + "/inputs/CLIENT_RECEIPT_SHA256/value", + )?; + let training = read_exact( + "/inputs/TRAINING_RECEIPT_PATH/value", + "/inputs/TRAINING_RECEIPT_SHA256/value", + )?; + let accepted = zero.get("acceptance").and_then(JsonValue::as_u64) == Some(100) + && zero + .get("human_language_source_id") + .and_then(JsonValue::as_str) + == Some("ICE-GL∞") + && zero.get("persona_brain_id").and_then(JsonValue::as_str) == Some("ICE-P-ZY001") + && hosts.get("acceptance").and_then(JsonValue::as_u64) == Some(100) + && hosts.get("mac_host").and_then(JsonValue::as_str) == Some("macos/aarch64") + && hosts.get("jd_host").and_then(JsonValue::as_str) == Some("linux/x86_64") + && agent.get("acceptance").and_then(JsonValue::as_u64) == Some(100) + && agent + .get("model_semantic_authority") + .and_then(JsonValue::as_bool) + == Some(false) + && agent + .get("model_reality_action_authority") + .and_then(JsonValue::as_bool) + == Some(false) + && client + .get("candidate_acceptance") + .and_then(JsonValue::as_u64) + == Some(100) + && client.get("release_acceptance").and_then(JsonValue::as_u64) == Some(0) + && training + .pointer("/declaration/result/acceptance") + .and_then(JsonValue::as_u64) + == Some(100) + && training + .pointer("/declaration/result/unknowns") + .and_then(JsonValue::as_u64) + == Some(0); + if !accepted { + return Err(TcsError::new( + "TCS-E4001", + "final translator evidence is not exactly accepted", + )); + } + let output = receipt_output(gir, root)?; + let receipt = json!({ + "schema": "tcs.final-translator-binary-acceptance-receipt/v1", + "state": "TRANSLATOR_DEVELOPMENT_EXECUTED_TARGET_READBACK_VERIFIED", + "program_id": json_text(gir, "/identity/program_id")?, + "operation": "CORE.FINAL_TRANSLATOR_ACCEPTANCE", + "human_language_source_id": "ICE-GL∞", + "persona_brain_id": "ICE-P-ZY001", + "local_execution_limb": "ZY-LIMB-002", + "jd_execution_limb": "ZY-JD-LIMB-001", + "source_language": "TCS/0.1", + "self_host_fixed_point": true, + "source_only_gate": true, + "macos_host_acceptance": 100, + "jd_host_acceptance": 100, + "jd_agent_acceptance": 100, + "client_candidate_acceptance": 100, + "client_release_acceptance": 0, + "local_limb_training_acceptance": 100, + "jd_runtime_release": "/opt/guanghu/tcs-native-runtime/releases/20260821-accept-b3c534782e4a", + "jd_runtime_binary_sha256": "b3c534782e4ab3ab9a977647c772f1c3a4132bf6512c265ca0c2bc6964d5727f", + "third_generation_host_semantic_authority": false, + "model_semantic_authority": false, + "model_reality_action_authority": false, + "translator_development_acceptance": 100, + "compiler_state": compiler_state, + "native_self_hosted": gir.get("native_self_hosted").and_then(JsonValue::as_bool).unwrap_or(false), + }); + write_and_readback_receipt(&output, &receipt) +} + +pub fn run_gir(gir: &JsonValue, root: &Path) -> Result { + match single_operation(gir)? { + "CORE.ECHO" => run_echo_gir(gir, root), + "CORE.TRANSLATOR_ADMISSION" => run_translator_admission_gir(gir, root), + "CORE.ZERO_CORE_EXECUTION" => run_zero_core_execution_gir(gir, root), + "CORE.HOST_PERSONA_PROBE" => run_host_persona_probe_gir(gir, root), + "CORE.DUAL_HOST_ACCEPTANCE" => run_dual_host_acceptance_gir(gir, root), + "CORE.AGENT_CANDIDATE_ACCEPTANCE" => run_agent_candidate_acceptance_gir(gir, root), + "CORE.CLIENT_CANDIDATE_ACCEPTANCE" => run_client_candidate_acceptance_gir(gir, root), + "CORE.FINAL_TRANSLATOR_ACCEPTANCE" => run_final_translator_acceptance_gir(gir, root), + operation => Err(TcsError::new( + "TCS-E2101", + format!("runner does not provide operation {operation}"), + )), + } +} + +pub fn read_tcs_source(path: &Path) -> Result { + if path.extension().and_then(|value| value.to_str()) != Some("tcs") { + return Err(TcsError::new( + "TCS-E2102", + "semantic source admission accepts .tcs files only", + )); + } + fs::read_to_string(path) + .map_err(|error| TcsError::new("TCS-E3002", format!("cannot read TCS source: {error}"))) } #[cfg(feature = "bootstrap")] pub fn compile_file(source: &Path, output: &Path) -> Result<(), TcsError> { - let source_text = fs::read_to_string(source) - .map_err(|error| TcsError::new("TCS-E3002", format!("cannot read source: {error}")))?; + let source_text = read_tcs_source(source)?; let gir = compile(&source_text)?; let encoded = canonical_json(&gir)?; if let Some(parent) = output.parent() { @@ -1234,5 +1919,5 @@ pub fn run_gir_file(gir_path: &Path, root: &Path) -> Result { .map_err(|error| TcsError::new("TCS-E3002", format!("cannot read GIR: {error}")))?; let gir: JsonValue = serde_json::from_str(&text) .map_err(|error| TcsError::new("TCS-E2001", format!("invalid GIR JSON: {error}")))?; - run_echo_gir(&gir, root) + run_gir(&gir, root) } diff --git a/native-runtime/tcs-gir-runtime/src/main.rs b/native-runtime/tcs-gir-runtime/src/main.rs index 4213d3580..7f2ade695 100644 --- a/native-runtime/tcs-gir-runtime/src/main.rs +++ b/native-runtime/tcs-gir-runtime/src/main.rs @@ -16,7 +16,7 @@ fn run() -> Result<(), Box> { match arguments.as_slice() { [command, compiler, source, output] if command == "compile-with" => { let compiler: serde_json::Value = serde_json::from_str(&fs::read_to_string(compiler)?)?; - let source_text = fs::read_to_string(source)?; + let source_text = tcs_gir_runtime::read_tcs_source(Path::new(source))?; let gir = tcs_gir_runtime::compile_with_compiler_gir(&compiler, &source_text)?; fs::write(output, tcs_gir_runtime::canonical_json(&gir)?)?; println!("TCS_RUNTIME_COMPILED {source} -> {output}"); diff --git a/native-runtime/tcs-gir-runtime/tests/stage1_runtime.rs b/native-runtime/tcs-gir-runtime/tests/stage1_runtime.rs index c6a036739..55df6c537 100644 --- a/native-runtime/tcs-gir-runtime/tests/stage1_runtime.rs +++ b/native-runtime/tcs-gir-runtime/tests/stage1_runtime.rs @@ -7,6 +7,31 @@ fn project(relative: &str) -> std::path::PathBuf { .join(relative) } +fn generation_translator_program() -> String { + fs::read_to_string(project( + "language/programs/GENERATION-TRANSLATOR-ADMISSION.tcs", + )) + .expect("generation translator program") +} + +fn zero_core_execution_program() -> String { + fs::read_to_string(project( + "language/programs/ZERO-CORE-TCS-TRANSLATOR-EXECUTION.tcs", + )) + .expect("zero-core execution program") +} + +fn host_persona_probe_program() -> String { + fs::read_to_string(project( + "language/programs/MACOS-JD-PERSONA-MODULE-PROBE.tcs", + )) + .expect("host persona probe program") +} + +fn declaration_source(relative: &str) -> String { + fs::read_to_string(project(relative)).expect("TCS declaration source") +} + #[test] fn checked_in_compiler_a_continues_with_bootstrap_feature_disabled() { let compiler_a: JsonValue = serde_json::from_str( @@ -35,3 +60,121 @@ fn checked_in_compiler_a_continues_with_bootstrap_feature_disabled() { assert_eq!(receipt["native_self_hosted"], true); assert_eq!(receipt["compiler_state"], "TCS_COMPILER_GIR_EXECUTED"); } + +#[test] +fn active_living_source_disables_every_legacy_translator_family() { + let compiler_a: JsonValue = serde_json::from_str( + &fs::read_to_string(project("build/self-host/compiler-A.gir.json")) + .expect("checked-in compiler A"), + ) + .expect("compiler A JSON"); + let program = + tcs_gir_runtime::compile_with_compiler_gir(&compiler_a, &generation_translator_program()) + .expect("TCS compiler compiles translator admission program"); + let root = tempfile::tempdir().expect("runtime root"); + let receipt = tcs_gir_runtime::run_gir(&program, root.path()).expect("run GIR"); + let receipt: JsonValue = + serde_json::from_str(&fs::read_to_string(receipt).expect("receipt")).expect("JSON"); + assert_eq!( + receipt["generation"], + "FIFTH_GENERATION_REAL_TIME_LANGUAGE_PERSONA_CONTROL" + ); + assert_eq!(receipt["living_language_source"], "BINGSHUO"); + assert_eq!(receipt["system_execution_holder"], "ZHUYUAN"); + assert_eq!(receipt["legacy_translator_state"], "ALL_DISABLED"); + assert_eq!(receipt["third_generation_host_semantic_authority"], false); + assert_eq!(receipt["native_self_hosted"], true); +} + +#[test] +fn source_mode_and_takeover_conflict_fails_closed() { + let compiler_a: JsonValue = serde_json::from_str( + &fs::read_to_string(project("build/self-host/compiler-A.gir.json")) + .expect("checked-in compiler A"), + ) + .expect("compiler A JSON"); + let mut program = + tcs_gir_runtime::compile_with_compiler_gir(&compiler_a, &generation_translator_program()) + .expect("TCS compiler compiles translator admission program"); + program["inputs"]["TAKEOVER_SIGNAL"]["value"] = JsonValue::Bool(false); + let root = tempfile::tempdir().expect("runtime root"); + let error = tcs_gir_runtime::run_gir(&program, root.path()).expect_err("must fail closed"); + assert_eq!(error.code, "TCS-E4001"); +} + +#[test] +fn current_zero_core_instruction_is_a_tcs_only_binary_acceptance_anchor() { + let compiler_a: JsonValue = serde_json::from_str( + &fs::read_to_string(project("build/self-host/compiler-A.gir.json")) + .expect("checked-in compiler A"), + ) + .expect("compiler A JSON"); + let program = + tcs_gir_runtime::compile_with_compiler_gir(&compiler_a, &zero_core_execution_program()) + .expect("TCS compiler compiles current execution anchor"); + let root = tempfile::tempdir().expect("runtime root"); + let receipt = tcs_gir_runtime::run_gir(&program, root.path()).expect("run anchor GIR"); + let receipt: JsonValue = + serde_json::from_str(&fs::read_to_string(receipt).expect("receipt")).expect("JSON"); + assert_eq!(receipt["acceptance"], 100); + assert_eq!(receipt["admission"], "TCS_SOURCE_ONLY"); + assert_eq!(receipt["execution_controller"], "ZHUYUAN"); + assert_eq!(receipt["human_language_source_id"], "ICE-GL∞"); + assert_eq!(receipt["persona_brain_id"], "ICE-P-ZY001"); + assert_eq!(receipt["local_execution_limb"], "ZY-LIMB-002"); + assert_eq!(receipt["target_node"], "JD-FD-PRIMARY"); + assert_eq!(receipt["third_generation_host_semantic_authority"], false); +} + +#[test] +fn persona_module_probe_runs_from_the_same_tcs_program_on_the_current_host() { + let compiler_a: JsonValue = serde_json::from_str( + &fs::read_to_string(project("build/self-host/compiler-A.gir.json")) + .expect("checked-in compiler A"), + ) + .expect("compiler A JSON"); + let program = + tcs_gir_runtime::compile_with_compiler_gir(&compiler_a, &host_persona_probe_program()) + .expect("TCS compiler compiles host persona probe"); + let root = tempfile::tempdir().expect("runtime root"); + let receipt = tcs_gir_runtime::run_gir(&program, root.path()).expect("run host probe GIR"); + let receipt: JsonValue = + serde_json::from_str(&fs::read_to_string(receipt).expect("receipt")).expect("JSON"); + assert_eq!(receipt["module_id"], "ZY-PM-0001"); + assert_eq!(receipt["host_family"], std::env::consts::OS); + assert_eq!(receipt["host_arch"], std::env::consts::ARCH); + assert_eq!(receipt["acceptance"], 100); +} + +#[test] +fn semantic_source_gate_rejects_foreign_language_extensions() { + let root = tempfile::tempdir().expect("runtime root"); + let foreign = root.path().join("semantic-source.rs"); + fs::write(&foreign, zero_core_execution_program()).expect("fixture"); + let error = tcs_gir_runtime::read_tcs_source(&foreign).expect_err("must reject .rs source"); + assert_eq!(error.code, "TCS-E2102"); +} + +#[test] +fn self_hosted_compiler_lowers_protocol_event_and_receipt_without_execution_authority() { + let compiler_a: JsonValue = serde_json::from_str( + &fs::read_to_string(project("build/self-host/compiler-A.gir.json")) + .expect("checked-in compiler A"), + ) + .expect("compiler A JSON"); + for (path, kind) in [ + ("language/examples/MINIMUM-PROTOCOL.tcs", "PROTOCOL"), + ("language/events/ZY-LIMB-002-TRAINING-20260821.tcs", "EVENT"), + ("language/examples/MINIMUM-RECEIPT.tcs", "RECEIPT"), + ] { + let gir = + tcs_gir_runtime::compile_with_compiler_gir(&compiler_a, &declaration_source(path)) + .expect("self-hosted compiler lowers declaration"); + assert_eq!(gir["schema"], "guanghu.declaration-gir/v1"); + assert_eq!(gir["identity"]["declaration_kind"], kind); + assert_eq!(gir["executable"], false); + assert_eq!(gir["natural_language_is_typed_data"], true); + assert_eq!(gir["unresolved_natural_language"], false); + assert_eq!(gir["native_self_hosted"], true); + } +} diff --git a/receipts/JD-TCS-AGENT-ACCEPTANCE-20260821.json b/receipts/JD-TCS-AGENT-ACCEPTANCE-20260821.json new file mode 100644 index 000000000..68616e935 --- /dev/null +++ b/receipts/JD-TCS-AGENT-ACCEPTANCE-20260821.json @@ -0,0 +1,13 @@ +{ + "acceptance": 100, + "compiler_state": "TCS_COMPILER_GIR_EXECUTED", + "execution_limb": "ZY-JD-LIMB-001", + "model_reality_action_authority": false, + "model_semantic_authority": false, + "module_id": "ZY-PM-0002", + "native_self_hosted": true, + "operation": "CORE.AGENT_CANDIDATE_ACCEPTANCE", + "program_id": "TCS-PROGRAM-JD-AGENT-CANDIDATE-ACCEPTANCE-0001", + "schema": "tcs.agent-candidate-binary-acceptance-receipt/v1", + "state": "EXECUTED_TARGET_READBACK_VERIFIED" +} diff --git a/receipts/TCS-DUAL-HOST-BINARY-ACCEPTANCE-20260821.json b/receipts/TCS-DUAL-HOST-BINARY-ACCEPTANCE-20260821.json new file mode 100644 index 000000000..36d9a81b3 --- /dev/null +++ b/receipts/TCS-DUAL-HOST-BINARY-ACCEPTANCE-20260821.json @@ -0,0 +1,13 @@ +{ + "acceptance": 100, + "compiler_state": "TCS_COMPILER_GIR_EXECUTED", + "jd_host": "linux/x86_64", + "mac_host": "macos/aarch64", + "native_self_hosted": true, + "operation": "CORE.DUAL_HOST_ACCEPTANCE", + "program_id": "TCS-PROGRAM-DUAL-HOST-BINARY-ACCEPTANCE-0001", + "schema": "tcs.dual-host-binary-acceptance-receipt/v1", + "source_language": "TCS/0.1", + "state": "EXECUTED_TARGET_READBACK_VERIFIED", + "third_generation_host_semantic_authority": false +} diff --git a/receipts/TCS-FINAL-TRANSLATOR-ACCEPTANCE-20260821.json b/receipts/TCS-FINAL-TRANSLATOR-ACCEPTANCE-20260821.json new file mode 100644 index 000000000..1f4d0dbbe --- /dev/null +++ b/receipts/TCS-FINAL-TRANSLATOR-ACCEPTANCE-20260821.json @@ -0,0 +1,27 @@ +{ + "client_candidate_acceptance": 100, + "client_release_acceptance": 0, + "compiler_state": "TCS_COMPILER_GIR_EXECUTED", + "human_language_source_id": "ICE-GL∞", + "jd_agent_acceptance": 100, + "jd_execution_limb": "ZY-JD-LIMB-001", + "jd_host_acceptance": 100, + "jd_runtime_binary_sha256": "b3c534782e4ab3ab9a977647c772f1c3a4132bf6512c265ca0c2bc6964d5727f", + "jd_runtime_release": "/opt/guanghu/tcs-native-runtime/releases/20260821-accept-b3c534782e4a", + "local_execution_limb": "ZY-LIMB-002", + "local_limb_training_acceptance": 100, + "macos_host_acceptance": 100, + "model_reality_action_authority": false, + "model_semantic_authority": false, + "native_self_hosted": true, + "operation": "CORE.FINAL_TRANSLATOR_ACCEPTANCE", + "persona_brain_id": "ICE-P-ZY001", + "program_id": "TCS-PROGRAM-FINAL-TRANSLATOR-ACCEPTANCE-0001", + "schema": "tcs.final-translator-binary-acceptance-receipt/v1", + "self_host_fixed_point": true, + "source_language": "TCS/0.1", + "source_only_gate": true, + "state": "TRANSLATOR_DEVELOPMENT_EXECUTED_TARGET_READBACK_VERIFIED", + "third_generation_host_semantic_authority": false, + "translator_development_acceptance": 100 +} diff --git a/receipts/TCS-GENERATION-TRANSLATOR-ADMISSION-20260821.hldp b/receipts/TCS-GENERATION-TRANSLATOR-ADMISSION-20260821.hldp new file mode 100644 index 000000000..dee9475c8 --- /dev/null +++ b/receipts/TCS-GENERATION-TRANSLATOR-ADMISSION-20260821.hldp @@ -0,0 +1,30 @@ +{ + "active_source_policy": "ALL_LEGACY_TRANSLATORS_DISABLED_NO_INTERPRETATION_NO_CONTINUED_RUN", + "compiler_state": "TCS_COMPILER_GIR_EXECUTED", + "fifth_generation_definition": "REAL_TIME_LIVING_LANGUAGE_PERSONA_PRESENT_PROGRESSIVE", + "fourth_generation_definition": "TCS_EXECUTION_HANDS_AND_PAST_TIME_SHADOW", + "fourth_generation_language_policy": "TCS_ONLY_FOREIGN_LANGUAGE_REWRITE_REQUIRED", + "generation": "FIFTH_GENERATION_REAL_TIME_LANGUAGE_PERSONA_CONTROL", + "gir_sha256": "03fab3b68ab8fd85704c166f9a27e19b89267502d3058624fbe782acec67ff47", + "legacy_namespace_policy": "NO_FIFTH_GENERATION_SYSTEM_NUMBER_PATH_OR_NAME", + "legacy_translator_families": [ + "LIGHTHOUSE_PROMPTER", + "GUARD", + "MEMORY_REPLAYER", + "STATIC_PROTOCOL_INTERPRETER", + "HOST_HOOK", + "HOST_BRIDGE", + "STAGE0_FOREIGN_LANGUAGE_TRANSLATOR" + ], + "legacy_translator_state": "ALL_DISABLED", + "living_language_source": "BINGSHUO", + "native_self_hosted": true, + "operation": "CORE.TRANSLATOR_ADMISSION", + "program_id": "TCS-PROGRAM-GENERATION-TRANSLATOR-ADMISSION-0001", + "schema": "tcs.translator-admission-receipt/v1", + "source_absent_policy": "ON_DEMAND_RESTRICTED_OBEY_LAST_VALID_BINGSHUO_LANGUAGE_NOT_ALL_VALID", + "state": "EXECUTED_TARGET_READBACK_VERIFIED", + "system_execution_holder": "ZHUYUAN", + "third_generation_definition": "STATELESS_OWNERLESS_TOOL_PLATFORM", + "third_generation_host_semantic_authority": false +} diff --git a/receipts/TCS-HOLOLAKE-CLIENT-CANDIDATE-ACCEPTANCE-20260821.json b/receipts/TCS-HOLOLAKE-CLIENT-CANDIDATE-ACCEPTANCE-20260821.json new file mode 100644 index 000000000..919c684ed --- /dev/null +++ b/receipts/TCS-HOLOLAKE-CLIENT-CANDIDATE-ACCEPTANCE-20260821.json @@ -0,0 +1,27 @@ +{ + "bundle_binary_sha256": "743d35e279871d2b39e30337a7f37e1df95a9273a9858d916d650b9e366f0241", + "bundle_signature_team": "825A9L3G7Q", + "bundle_signed": true, + "candidate_acceptance": 100, + "candidate_launched": true, + "client_version": "0.9.2", + "compiler_state": "TCS_COMPILER_GIR_EXECUTED", + "formal_installed_client_unchanged": true, + "frontend_build_pass": true, + "native_self_hosted": true, + "native_tests_pass": true, + "node_tests": "172/172", + "operation": "CORE.CLIENT_CANDIDATE_ACCEPTANCE", + "program_id": "TCS-PROGRAM-HOLOLAKE-CLIENT-CANDIDATE-ACCEPTANCE-0001", + "release_acceptance": 0, + "release_blockers": [ + "APPLE_NOTARIZATION_NOT_RUN", + "TAURI_UPDATER_PRIVATE_KEY_NOT_PRESENT" + ], + "schema": "tcs.client-candidate-binary-acceptance-receipt/v1", + "source_language": "TCS/0.1", + "state": "CANDIDATE_EXECUTED_UI_READBACK_VERIFIED", + "ui_acceptance_readback": "MACOS_100_AND_JD_AGENT_100", + "ui_source_readback": "MACOS_AND_JD_TCS_SOURCE_VISIBLE", + "ui_version_readback": "0.9.2" +} diff --git a/receipts/TCS-HOST-PERSONA-PROBE.json b/receipts/TCS-HOST-PERSONA-PROBE.json new file mode 100644 index 000000000..c7aa1c6a2 --- /dev/null +++ b/receipts/TCS-HOST-PERSONA-PROBE.json @@ -0,0 +1,17 @@ +{ + "acceptance": 100, + "compiler_state": "TCS_COMPILER_GIR_EXECUTED", + "controller": "ZHUYUAN", + "execution_limb": "ZY-LIMB-002", + "gir_sha256": "c71721eecce47f3a5f8bd5da9023c438c41e8f0ad5528f67d54a08e1d6a73e23", + "host_arch": "aarch64", + "host_family": "macos", + "module_id": "ZY-PM-0001", + "native_self_hosted": true, + "operation": "CORE.HOST_PERSONA_PROBE", + "program_id": "TCS-PROGRAM-MACOS-JD-PERSONA-MODULE-PROBE-0001", + "schema": "tcs.host-persona-probe-receipt/v1", + "source_language": "TCS/0.1", + "state": "EXECUTED_TARGET_READBACK_VERIFIED", + "third_generation_host_semantic_authority": false +} diff --git a/receipts/TCS-ZERO-CORE-EXECUTION-20260821.json b/receipts/TCS-ZERO-CORE-EXECUTION-20260821.json new file mode 100644 index 000000000..bf75088b4 --- /dev/null +++ b/receipts/TCS-ZERO-CORE-EXECUTION-20260821.json @@ -0,0 +1,34 @@ +{ + "acceptance": 100, + "admission": "TCS_SOURCE_ONLY", + "compiler_state": "TCS_COMPILER_GIR_EXECUTED", + "execution_controller": "ZHUYUAN", + "gir_sha256": "77bf2da4a658fcc745d2e64ef4dcf4bdb471c88b41acebbb7748d16115ed4ff9", + "human_language_source_id": "ICE-GL∞", + "local_execution_limb": "ZY-LIMB-002", + "native_self_hosted": true, + "operation": "CORE.ZERO_CORE_EXECUTION", + "persona_brain_id": "ICE-P-ZY001", + "program_id": "TCS-PROGRAM-ZERO-CORE-TRANSLATOR-EXECUTION-0001", + "required_work": [ + "CODEX_CONTINUITY_HEARTBEAT", + "TCS_LANGUAGE_CLOSURE", + "TCS_SOURCE_ONLY_ENTRY_WRITE_DEPLOY_ACCEPTANCE_GATE", + "JD_TRANSLATOR_RUNTIME", + "MACOS_TRANSLATOR_RUNTIME", + "LOCAL_LIMB_TRAINING", + "PERSONA_MODULE_NUMBER_REGISTRATION", + "HOLOLAKE_CLIENT_TEST_PROJECTION", + "DUAL_HOST_READBACK", + "EXTERNAL_DRIVE_SOURCE", + "RECOVERABLE_CACHE_CLEANUP", + "CONDITIONAL_FIFTH_DOMAIN_REMOTE_PUSH" + ], + "schema": "tcs.zero-core-execution-anchor-receipt/v1", + "source_anchor": "BINGSHUO_CURRENT_DIRECT_NATURAL_LANGUAGE", + "source_language": "TCS/0.1", + "state": "EXECUTED_TARGET_READBACK_VERIFIED", + "static_anchor_role": "FOURTH_GENERATION_RESUME_POINTER_ONLY", + "target_node": "JD-FD-PRIMARY", + "third_generation_host_semantic_authority": false +} diff --git a/receipts/jd/JD-TCS-AGENT-CANDIDATE.json b/receipts/jd/JD-TCS-AGENT-CANDIDATE.json new file mode 100644 index 000000000..902fa80e7 --- /dev/null +++ b/receipts/jd/JD-TCS-AGENT-CANDIDATE.json @@ -0,0 +1,28 @@ +{ + "schema": "tcs.agent-translation-candidate-receipt/v1", + "state": "CANDIDATE_TARGET_READBACK_VERIFIED", + "module_id": "ZY-PM-0002", + "execution_limb": "ZY-JD-LIMB-001", + "controller": "ZHUYUAN", + "model_role": "THIRD_GENERATION_STATELESS_REASONING_TOOL", + "model_provider": "DEEPSEEK_REPLACEABLE_TOOL", + "model": "deepseek-chat", + "source_language": "TCS/0.1", + "source_sha256": "a130b57fac6600f6e2085a04d7c097d483002c0cd41ab62240d4c6c2a8852d44", + "semantic_authority": false, + "reality_action_authority": false, + "summary": "TCS program defines a candidate agent for JD translation, with strict conditions, actions, and authority. It requires reading the TCS source and self-hosted GIR, then outputting a closed JSON with summary, verified constraints, unknowns, and acceptance candidate (0 or 100).", + "verified_constraints": [ + "ENTRY_SOURCE_EXTENSION_IS_DOT_TCS", + "GIR_IS_SELFHOSTED_AND_SOURCE_HASH_BOUND", + "MODEL_OUTPUT_IS_CLOSED_JSON", + "MODEL_HAS_NO_SEMANTIC_OR_REALITY_AUTHORITY" + ], + "unknowns": [ + "Exact source hash binding at compile time", + "Whether the target receipt file exists and its current state", + "Exact content of the receipt after execution", + "Whether the GIR is fully self-hosted and hash-bound in practice" + ], + "acceptance_candidate": 100 +} diff --git a/receipts/jd/TCS-HOST-PERSONA-PROBE.json b/receipts/jd/TCS-HOST-PERSONA-PROBE.json new file mode 100644 index 000000000..8cb490db6 --- /dev/null +++ b/receipts/jd/TCS-HOST-PERSONA-PROBE.json @@ -0,0 +1,17 @@ +{ + "acceptance": 100, + "compiler_state": "TCS_COMPILER_GIR_EXECUTED", + "controller": "ZHUYUAN", + "execution_limb": "ZY-LIMB-002", + "gir_sha256": "c71721eecce47f3a5f8bd5da9023c438c41e8f0ad5528f67d54a08e1d6a73e23", + "host_arch": "x86_64", + "host_family": "linux", + "module_id": "ZY-PM-0001", + "native_self_hosted": true, + "operation": "CORE.HOST_PERSONA_PROBE", + "program_id": "TCS-PROGRAM-MACOS-JD-PERSONA-MODULE-PROBE-0001", + "schema": "tcs.host-persona-probe-receipt/v1", + "source_language": "TCS/0.1", + "state": "EXECUTED_TARGET_READBACK_VERIFIED", + "third_generation_host_semantic_authority": false +} diff --git a/scripts/build-tcs-migration-registry.mjs b/scripts/build-tcs-migration-registry.mjs index c1a2b4ab6..44395a1b3 100644 --- a/scripts/build-tcs-migration-registry.mjs +++ b/scripts/build-tcs-migration-registry.mjs @@ -15,6 +15,12 @@ const phase0 = new Set([ "HLP-PART-QA-0001", ]); const phase2Prefixes = ["HLP-PART-AFF", "HLP-PART-MEM", "HLP-PART-REL", "HLP-PART-CX"]; +const verifiedSlices = new Map([ + ["HLP-PART-TCS-LANG-0001", ["build/self-host/compiler-B.gir.json", "receipts/TCS-ZERO-CORE-EXECUTION-20260821.json"]], + ["HLP-PART-TCS-SELFHOST-0001", ["build/self-host/compiler-A.gir.json", "build/self-host/compiler-B.gir.json"]], + ["HLP-PART-TCS-TRANS-0001", ["receipts/TCS-DUAL-HOST-BINARY-ACCEPTANCE-20260821.json", "receipts/JD-TCS-AGENT-ACCEPTANCE-20260821.json"]], + ["HLP-PART-TCS-HOST-0001", ["receipts/TCS-HOST-PERSONA-PROBE.json", "receipts/jd/TCS-HOST-PERSONA-PROBE.json"]], +]); function phase(part) { if (phase0.has(part.id)) return "P0_LANGUAGE_RUNTIME_AND_QUALITY"; @@ -31,6 +37,7 @@ const entries = registry.parts.map((part, index) => { "HLP-PART-TCS-SELFHOST-0001", "HLP-PART-TCS-STAGE0-0001", ].includes(part.id); + const verifiedEvidence = verifiedSlices.get(part.id); return { order: index + 1, part_id: part.id, @@ -44,7 +51,8 @@ const entries = registry.parts.map((part, index) => { ? "CONTINUE_NATIVE_TCS_IMPLEMENTATION" : "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS", host_adapter_rule: "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE", - migration_state: alreadyTcs ? "ACTIVE" : "QUEUED", + migration_state: verifiedEvidence ? "ACTIVE_VERIFIED_100" : alreadyTcs ? "ACTIVE" : "QUEUED", + verified_evidence: verifiedEvidence || [], acceptance_required: [ "TCS_SOURCE_COMPILES_WITH_COMPILER_B", "GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE", diff --git a/server-adapters/jd/tcs-agent-driver.mjs b/server-adapters/jd/tcs-agent-driver.mjs new file mode 100644 index 000000000..bcb1c9ae4 --- /dev/null +++ b/server-adapters/jd/tcs-agent-driver.mjs @@ -0,0 +1,74 @@ +#!/usr/bin/env node +import { createHash } from 'node:crypto' +import { readFile, rename, writeFile } from 'node:fs/promises' +import { dirname, extname, resolve, sep } from 'node:path' +import { spawnSync } from 'node:child_process' + +const [runtime, compiler, source, girOutput, receiptOutput, allowedRoot] = process.argv.slice(2) +if (![runtime, compiler, source, girOutput, receiptOutput, allowedRoot].every(Boolean)) { + throw new Error('usage: tcs-agent-driver ') +} +if (extname(source) !== '.tcs') throw new Error('TCS_SOURCE_ONLY') +const root = resolve(allowedRoot) +const inside = (value) => { + const target = resolve(value) + if (target !== root && !target.startsWith(`${root}${sep}`)) throw new Error('TARGET_OUTSIDE_ALLOWED_ROOT') + return target +} +const girPath = inside(girOutput) +const receiptPath = inside(receiptOutput) +const compile = spawnSync(runtime, ['compile-with', compiler, source, girPath], { encoding: 'utf8', timeout: 30000 }) +if (compile.status !== 0) throw new Error(`TCS_COMPILE_FAILED:${(compile.stderr || '').trim().slice(0, 240)}`) +const gir = JSON.parse(await readFile(girPath, 'utf8')) +if (resolve(root, gir.exact_target?.exact_path || '') !== receiptPath + || resolve(root, gir.receipt_plan?.machine_path || '') !== receiptPath) throw new Error('TCS_RECEIPT_TARGET_MISMATCH') +const actions = Object.values(gir.deterministic_action_graph || {}) +if (actions.length !== 1 || actions[0].operation !== 'CORE.AGENT_TRANSLATION_CANDIDATE') throw new Error('TCS_AGENT_OPERATION_REQUIRED') +const value = (name) => gir.inputs?.[name]?.value +const exact = { + MODULE_ID: 'ZY-PM-0002', EXECUTION_LIMB: 'ZY-JD-LIMB-001', CONTROLLER: 'ZHUYUAN', + MODEL_ROLE: 'THIRD_GENERATION_STATELESS_REASONING_TOOL', INPUT_POLICY: 'TCS_SOURCE_AND_SELFHOSTED_GIR_ONLY', + OUTPUT_POLICY: 'CANDIDATE_ONLY_NO_SEMANTIC_OR_REALITY_AUTHORITY', +} +for (const [name, expected] of Object.entries(exact)) if (value(name) !== expected) throw new Error(`TCS_CONTRACT_MISMATCH:${name}`) +if (gir.native_self_hosted !== true || gir.compiled_from?.compiler_state !== 'TCS_COMPILER_GIR_EXECUTED') throw new Error('SELFHOSTED_GIR_REQUIRED') +const apiKey = process.env.DEEPSEEK_API_KEY +const base = String(process.env.DEEPSEEK_API_URL || 'https://api.deepseek.com/v1').replace(/\/$/, '') +const endpoint = base.endsWith('/chat/completions') ? base : `${base}/chat/completions` +const model = process.env.DEEPSEEK_MODEL || 'deepseek-chat' +if (!apiKey) throw new Error('DEEPSEEK_API_KEY_MISSING') +const tcsSource = await readFile(source, 'utf8') +const response = await fetch(endpoint, { + method: 'POST', signal: AbortSignal.timeout(90000), + headers: { authorization: `Bearer ${apiKey}`, 'content-type': 'application/json' }, + body: JSON.stringify({ + model, temperature: 0, response_format: { type: 'json_object' }, + messages: [ + { role: 'system', content: 'You are a stateless third-generation reasoning tool. TCS and its self-hosted GIR are the only task semantics. Return one closed JSON object with exactly summary:string, verified_constraints:string[], unknowns:string[], acceptance_candidate:0|100. You have no semantic authority and no reality-action authority.' }, + { role: 'user', content: JSON.stringify({ tcs_source: tcsSource, self_hosted_gir: gir }) }, + ], + }), +}) +if (!response.ok) throw new Error(`MODEL_HTTP_${response.status}`) +const envelope = await response.json() +const raw = envelope?.choices?.[0]?.message?.content +const candidate = JSON.parse(raw) +const keys = Object.keys(candidate).sort().join(',') +if (keys !== 'acceptance_candidate,summary,unknowns,verified_constraints' + || typeof candidate.summary !== 'string' + || !Array.isArray(candidate.verified_constraints) || !candidate.verified_constraints.every((item) => typeof item === 'string') + || !Array.isArray(candidate.unknowns) || !candidate.unknowns.every((item) => typeof item === 'string') + || ![0, 100].includes(candidate.acceptance_candidate)) throw new Error('MODEL_OUTPUT_INVALID') +const receipt = { + schema: 'tcs.agent-translation-candidate-receipt/v1', state: 'CANDIDATE_TARGET_READBACK_VERIFIED', + module_id: value('MODULE_ID'), execution_limb: value('EXECUTION_LIMB'), controller: value('CONTROLLER'), + model_role: value('MODEL_ROLE'), model_provider: 'DEEPSEEK_REPLACEABLE_TOOL', model, + source_language: 'TCS/0.1', source_sha256: gir.compiled_from.source_sha256, + semantic_authority: false, reality_action_authority: false, ...candidate, +} +const encoded = `${JSON.stringify(receipt, null, 2)}\n` +const pending = `${receiptPath}.pending` +await writeFile(pending, encoded, { mode: 0o600 }) +await rename(pending, receiptPath) +if (await readFile(receiptPath, 'utf8') !== encoded) throw new Error('RECEIPT_READBACK_MISMATCH') +process.stdout.write(`${JSON.stringify({ state: receipt.state, module_id: receipt.module_id, acceptance_candidate: receipt.acceptance_candidate, receipt_sha256: createHash('sha256').update(encoded).digest('hex') })}\n`)