From 02217d11eae09d6e40b1f973a8f3ca3b1099cc8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=B0=E6=9C=94?= <565183519@qq.com> Date: Tue, 8 Sep 2026 16:46:06 +0800 Subject: [PATCH] fix: resolve lighthouse routes from canonical TCS root --- ...AND-FETCH-REFSPEC-REPAIR-20260908.gir.json | 81 +++++++++++++++++++ ...OUTE-AND-FETCH-REFSPEC-REPAIR-20260908.tcs | 11 +++ .../scripts/resolve_lighthouse_route.py | 22 ++++- .../scripts/sync_jzao_mirror.py | 21 ++++- .../scripts/test_resolve_lighthouse_route.py | 5 ++ 5 files changed, 135 insertions(+), 5 deletions(-) create mode 100644 runtime/fifth-domain-language-system/language/protocols/TCS-REPO012-ROUTE-AND-FETCH-REFSPEC-REPAIR-20260908.gir.json create mode 100644 runtime/fifth-domain-language-system/language/protocols/TCS-REPO012-ROUTE-AND-FETCH-REFSPEC-REPAIR-20260908.tcs diff --git a/runtime/fifth-domain-language-system/language/protocols/TCS-REPO012-ROUTE-AND-FETCH-REFSPEC-REPAIR-20260908.gir.json b/runtime/fifth-domain-language-system/language/protocols/TCS-REPO012-ROUTE-AND-FETCH-REFSPEC-REPAIR-20260908.gir.json new file mode 100644 index 0000000..3dcbfeb --- /dev/null +++ b/runtime/fifth-domain-language-system/language/protocols/TCS-REPO012-ROUTE-AND-FETCH-REFSPEC-REPAIR-20260908.gir.json @@ -0,0 +1,81 @@ +{ + "compiled_from": { + "compiler_id": "TCS-COMPILER-STAGE1-0001", + "compiler_state": "TCS_COMPILER_GIR_EXECUTED", + "source_sha256": "2ece9fbf2d4399fa1c0bcbdba6d8690771516eb87476a2198cca4291309adb8b" + }, + "declaration": { + "acceptance": { + "deployment": "NOT_IMPLIED", + "required": [ + "TCS_COMPILE_PASS", + "NAVIGATOR_7_OF_7_PASS", + "SHARED_MIRROR_IN_SYNC", + "CANONICAL_OFFLINE_PATH_EXISTS", + "STANDARD_REFSPEC_READBACK", + "FULL_TEST_PASS", + "REMOTE_MAIN_EXACT_SHA_READBACK" + ] + }, + "actions": { + "A1": "RESTORE_EXACT_LOCAL_BRANCH_REF_WITH_UPDATE_REF", + "A2": "REPLACE_MIRROR_FETCH_WITH_STANDARD_REMOTE_TRACKING_REFSPEC", + "A3": "MAKE_NAVIGATOR_RESOLVE_CANONICAL_REPO_FROM_TCS_ROOT_POINTER", + "A4": "SYNC_ALLOWLISTED_LIGHTHOUSE_MIRROR", + "A5": "RUN_TESTS_AND_FAST_FORWARD_PUBLISH_THROUGH_FINALIZER" + }, + "header": { + "canonical_uri": "runtime/fifth-domain-language-system/language/protocols/TCS-REPO012-ROUTE-AND-FETCH-REFSPEC-REPAIR-20260908.tcs", + "compatibility": [ + "REPO-012", + "GLW-LIGHTHOUSE-PATH-REGISTRY-001" + ], + "language": "TCS/0.1", + "lifecycle": "CANDIDATE", + "name_en": "REPO-012 Lighthouse Route and Git Fetch Refspec Repair", + "name_zh": "REPO-012灯塔路径与Git抓取映射修复", + "profile": "HLDP-HUMAN-ENGINEERING/0.1", + "protocols": [ + "GLS-0200" + ], + "schema": "tcs.protocol/v1", + "version": "0.1.0" + }, + "invariants": { + "I1": "DO_NOT_CREATE_OLD_WORKSPACE_COPY", + "I2": "REMOTE_DELETION_MUST_NOT_DELETE_LOCAL_BRANCH_REFS", + "I3": "HISTORICAL_REPOSITORY_URLS_REMAIN_HISTORY_ONLY", + "I4": "PRIVATE_MEMORY_NOT_INCLUDED_IN_PUBLIC_MIRROR", + "I5": "PUBLISH_REQUIRES_CLEAN_MAIN_EXACT_REMOTE_ANCESTRY_TESTS_AND_READBACK" + }, + "observations": { + "O1": "SHARED_LIGHTHOUSE_MIRROR_RETURNED_RETIRED_WORK_WORKSPACE_PATH", + "O2": "REMOTE_ORIGIN_WAS_CONFIGURED_AS_MIRROR_WITH_PLUS_REFS_ALL_TO_REFS_ALL", + "O3": "FETCH_PRUNE_REMOVED_CURRENT_LOCAL_DEVELOPMENT_BRANCH_REF", + "O4": "LAST_COMMIT_AND_WORKTREE_BYTES_REMAINED_INTACT" + }, + "scope": { + "branch": "main", + "canonical_worktree": "/Volumes/JZAO/HoloLake/persona-runtime/repo-012-main", + "navigator": "GHS-009-LIGHTHOUSE-HOST-NAVIGATION", + "remote": "https://guanghulab.com/code/bingshuo/guanghu-ice-heart.git", + "repository": "REPO-012" + }, + "source": { + "source_id": "BINGSHUO-DIRECT-REPO012-REMOTE-ROUTE-ORGANIZATION-20260908", + "source_role": "DIRECT_HUMAN", + "source_sha256": "BIND_AT_COMPILE_TIME", + "source_uri": "source://codex-current-dialogue/2026-09-08/repo012-publish-and-route-organization" + } + }, + "executable": false, + "identity": { + "declaration_id": "TCS-REPO012-ROUTE-AND-FETCH-REFSPEC-REPAIR-20260908", + "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/runtime/fifth-domain-language-system/language/protocols/TCS-REPO012-ROUTE-AND-FETCH-REFSPEC-REPAIR-20260908.tcs b/runtime/fifth-domain-language-system/language/protocols/TCS-REPO012-ROUTE-AND-FETCH-REFSPEC-REPAIR-20260908.tcs new file mode 100644 index 0000000..b7e0242 --- /dev/null +++ b/runtime/fifth-domain-language-system/language/protocols/TCS-REPO012-ROUTE-AND-FETCH-REFSPEC-REPAIR-20260908.tcs @@ -0,0 +1,11 @@ +TCS 0.1; + +PROTOCOL TCS-REPO012-ROUTE-AND-FETCH-REFSPEC-REPAIR-20260908 { + header { schema = "tcs.protocol/v1"; name_zh = "REPO-012灯塔路径与Git抓取映射修复"; name_en = "REPO-012 Lighthouse Route and Git Fetch Refspec Repair"; version = "0.1.0"; language = "TCS/0.1"; profile = "HLDP-HUMAN-ENGINEERING/0.1"; protocols = ["GLS-0200"]; lifecycle = "CANDIDATE"; canonical_uri = "runtime/fifth-domain-language-system/language/protocols/TCS-REPO012-ROUTE-AND-FETCH-REFSPEC-REPAIR-20260908.tcs"; compatibility = ["REPO-012", "GLW-LIGHTHOUSE-PATH-REGISTRY-001"]; } + source { source_id = "BINGSHUO-DIRECT-REPO012-REMOTE-ROUTE-ORGANIZATION-20260908"; source_uri = "source://codex-current-dialogue/2026-09-08/repo012-publish-and-route-organization"; source_sha256 = "BIND_AT_COMPILE_TIME"; source_role = "DIRECT_HUMAN"; } + scope { repository = "REPO-012"; canonical_worktree = "/Volumes/JZAO/HoloLake/persona-runtime/repo-012-main"; remote = "https://guanghulab.com/code/bingshuo/guanghu-ice-heart.git"; branch = "main"; navigator = "GHS-009-LIGHTHOUSE-HOST-NAVIGATION"; } + observations { O1 = "SHARED_LIGHTHOUSE_MIRROR_RETURNED_RETIRED_WORK_WORKSPACE_PATH"; O2 = "REMOTE_ORIGIN_WAS_CONFIGURED_AS_MIRROR_WITH_PLUS_REFS_ALL_TO_REFS_ALL"; O3 = "FETCH_PRUNE_REMOVED_CURRENT_LOCAL_DEVELOPMENT_BRANCH_REF"; O4 = "LAST_COMMIT_AND_WORKTREE_BYTES_REMAINED_INTACT"; } + actions { A1 = "RESTORE_EXACT_LOCAL_BRANCH_REF_WITH_UPDATE_REF"; A2 = "REPLACE_MIRROR_FETCH_WITH_STANDARD_REMOTE_TRACKING_REFSPEC"; A3 = "MAKE_NAVIGATOR_RESOLVE_CANONICAL_REPO_FROM_TCS_ROOT_POINTER"; A4 = "SYNC_ALLOWLISTED_LIGHTHOUSE_MIRROR"; A5 = "RUN_TESTS_AND_FAST_FORWARD_PUBLISH_THROUGH_FINALIZER"; } + invariants { I1 = "DO_NOT_CREATE_OLD_WORKSPACE_COPY"; I2 = "REMOTE_DELETION_MUST_NOT_DELETE_LOCAL_BRANCH_REFS"; I3 = "HISTORICAL_REPOSITORY_URLS_REMAIN_HISTORY_ONLY"; I4 = "PRIVATE_MEMORY_NOT_INCLUDED_IN_PUBLIC_MIRROR"; I5 = "PUBLISH_REQUIRES_CLEAN_MAIN_EXACT_REMOTE_ANCESTRY_TESTS_AND_READBACK"; } + acceptance { required = ["TCS_COMPILE_PASS", "NAVIGATOR_7_OF_7_PASS", "SHARED_MIRROR_IN_SYNC", "CANONICAL_OFFLINE_PATH_EXISTS", "STANDARD_REFSPEC_READBACK", "FULL_TEST_PASS", "REMOTE_MAIN_EXACT_SHA_READBACK"]; deployment = "NOT_IMPLIED"; } +} diff --git a/skills/shared/guanghu-lighthouse-navigator/scripts/resolve_lighthouse_route.py b/skills/shared/guanghu-lighthouse-navigator/scripts/resolve_lighthouse_route.py index 7adf2ba..facc421 100644 --- a/skills/shared/guanghu-lighthouse-navigator/scripts/resolve_lighthouse_route.py +++ b/skills/shared/guanghu-lighthouse-navigator/scripts/resolve_lighthouse_route.py @@ -10,9 +10,25 @@ import subprocess from pathlib import Path SCRIPT_PATH = Path(__file__).resolve() -REPO_ROOT = SCRIPT_PATH.parents[4] -SHARED_ROOT = SCRIPT_PATH.parents[3] -if (REPO_ROOT / "routing" / "lighthouse-path-registry.json").is_file(): +LOCAL_SOURCE_ROOT = SCRIPT_PATH.parents[3] +RUNTIME_ROOT = Path("/Volumes/JZAO/HoloLake/persona-runtime") +POINTER = RUNTIME_ROOT / "TCS-ROOT.json" +SHARED_ROOT = RUNTIME_ROOT / "shared" + + +def canonical_repo_root() -> Path | None: + if (LOCAL_SOURCE_ROOT / "routing" / "lighthouse-path-registry.json").is_file(): + return LOCAL_SOURCE_ROOT + if POINTER.is_file() and not POINTER.is_symlink(): + value = json.loads(POINTER.read_text(encoding="utf-8")) + candidate = Path(value.get("canonical_repo", "")) + if (candidate / "routing" / "lighthouse-path-registry.json").is_file(): + return candidate + return None + + +REPO_ROOT = canonical_repo_root() +if REPO_ROOT: DEFAULT_LIGHTHOUSE = REPO_ROOT / "routing" / "lighthouse-path-registry.json" DEFAULT_HOST_MAP = REPO_ROOT / "routing" / "host-skill-navigation-map.json" else: diff --git a/skills/shared/guanghu-lighthouse-navigator/scripts/sync_jzao_mirror.py b/skills/shared/guanghu-lighthouse-navigator/scripts/sync_jzao_mirror.py index 6937741..9b7f087 100644 --- a/skills/shared/guanghu-lighthouse-navigator/scripts/sync_jzao_mirror.py +++ b/skills/shared/guanghu-lighthouse-navigator/scripts/sync_jzao_mirror.py @@ -11,8 +11,25 @@ import shutil import subprocess from pathlib import Path -REPO_ROOT = Path(__file__).resolve().parents[4] -DEFAULT_TARGET = Path("/Volumes/JZAO/HoloLake/persona-runtime/shared") +SCRIPT_PATH = Path(__file__).resolve() +LOCAL_SOURCE_ROOT = SCRIPT_PATH.parents[3] +RUNTIME_ROOT = Path("/Volumes/JZAO/HoloLake/persona-runtime") +POINTER = RUNTIME_ROOT / "TCS-ROOT.json" + + +def canonical_repo_root() -> Path: + if (LOCAL_SOURCE_ROOT / "routing" / "lighthouse-path-registry.json").is_file(): + return LOCAL_SOURCE_ROOT + if POINTER.is_file() and not POINTER.is_symlink(): + value = json.loads(POINTER.read_text(encoding="utf-8")) + candidate = Path(value.get("canonical_repo", "")) + if (candidate / "routing" / "lighthouse-path-registry.json").is_file(): + return candidate + raise RuntimeError("CANONICAL_REPO012_UNAVAILABLE") + + +REPO_ROOT = canonical_repo_root() +DEFAULT_TARGET = RUNTIME_ROOT / "shared" ASSETS = { "routing/lighthouse-path-registry.json": "registries/lighthouse-path-registry.json", "routing/host-skill-navigation-map.json": "registries/host-skill-navigation-map.json", diff --git a/skills/shared/guanghu-lighthouse-navigator/scripts/test_resolve_lighthouse_route.py b/skills/shared/guanghu-lighthouse-navigator/scripts/test_resolve_lighthouse_route.py index 7073035..16863aa 100644 --- a/skills/shared/guanghu-lighthouse-navigator/scripts/test_resolve_lighthouse_route.py +++ b/skills/shared/guanghu-lighthouse-navigator/scripts/test_resolve_lighthouse_route.py @@ -18,6 +18,11 @@ class LighthouseNavigatorTests(unittest.TestCase): self.assertIn("finalize-development.mjs", route["intent"]["executor"]) self.assertFalse(route["authority_granted"]) self.assertFalse(route["transport_probe"]["secret_read"]) + self.assertEqual( + route["target"]["offline"], + "/Volumes/JZAO/HoloLake/persona-runtime/repo-012-main", + ) + self.assertTrue(route["offline_reality"]["exists"]) def test_qoder_and_qoderwork_resolve_same_brain_with_distinct_adapters(self): qoder = compile_route(self.registry, self.host_map, "qoder-cn", "大脑思维技能包")