guanghu-ice-heart/skills/shared/hololake-current-architecture-prompter/scripts/current_architecture_prompt.py

346 lines
18 KiB
Python
Raw Normal View History

#!/usr/bin/env python3
"""Build a small, current HoloLake architecture prompt from online facts."""
from __future__ import annotations
import argparse
import fcntl
import hashlib
import json
import pathlib
import subprocess
import sys
from typing import Any
REPO_012_URL = "https://guanghulab.com/code/bingshuo/guanghu-ice-heart.git"
REPO_014_URL = "https://guanghulab.com/code/bingshuo/hololake-system-architecture.git"
REPO_012_MIRROR = pathlib.Path("/Volumes/JZAO/HoloLake/source-mirrors/guanghu-ice-heart.git")
REPO_014_MIRROR = pathlib.Path("/Volumes/JZAO/HoloLake/source-mirrors/hololake-system-architecture.git")
LANE_ROOT = pathlib.Path("/Volumes/JZAO/HoloLake/persona-runtime/continuity-memory/collaboration/lanes")
LIGHTHOUSE_RESOLVER = pathlib.Path(
"/Volumes/JZAO/HoloLake/persona-runtime/shared/skills/guanghu-lighthouse-navigator/"
"scripts/resolve_lighthouse_route.py"
)
LOCK_PATH = pathlib.Path("/tmp/hololake-current-architecture-prompter.lock")
ARCHITECTURE_POINTER = "routing/hololake-current-architecture.json"
TCS_STAGE_GATE = "routing/tcs-work-ownership-stage-gate-map.json"
FIFTH_DOMAIN_WORLD_TREE = "routing/fifth-domain-world-tree.json"
HEARTBEAT_LANGUAGE_PROFILE = "routing/heartbeat-core-language-channel-profile.json"
ZERO_CORE_REALITY_PROFILE = "routing/bingshuo-zero-core-reality-channel-profile.json"
PERSONA_LEARNING_CURRENT = pathlib.Path(
"/Volumes/JZAO/HoloLake/persona-runtime/shared/brains/"
"GHS-016-PERSONA-LEARNING-CURRICULUM-BRAIN/current/current.json"
)
class PromptError(RuntimeError):
pass
def run(*args: str) -> str:
result = subprocess.run(args, check=False, capture_output=True, text=True)
if result.returncode != 0:
detail = (result.stderr or result.stdout).strip().splitlines()
raise PromptError(detail[-1] if detail else f"command_failed:{args[0]}")
return result.stdout.strip()
def remote_sha(url: str) -> str:
output = run("git", "ls-remote", url, "refs/heads/main")
fields = output.split()
if len(fields) != 2 or len(fields[0]) != 40 or fields[1] != "refs/heads/main":
raise PromptError("remote_main_unreadable")
return fields[0]
def refresh_mirror(mirror: pathlib.Path, url: str, expected_sha: str, refresh: bool) -> None:
if not mirror.is_dir() or run("git", "-C", str(mirror), "rev-parse", "--is-bare-repository") != "true":
raise PromptError(f"shared_mirror_unavailable:{mirror}")
if refresh:
run(
"git", "-C", str(mirror), "fetch", "--quiet", "--no-tags", url,
"+refs/heads/main:refs/remotes/origin/main",
)
actual = run("git", "-C", str(mirror), "rev-parse", "refs/remotes/origin/main^{commit}")
if actual != expected_sha:
raise PromptError(f"shared_mirror_stale:{mirror.name}:{actual}:{expected_sha}")
def git_json(mirror: pathlib.Path, commit: str, path: str) -> dict[str, Any]:
try:
value = json.loads(run("git", "-C", str(mirror), "show", f"{commit}:{path}"))
except (json.JSONDecodeError, PromptError) as error:
raise PromptError(f"invalid_json_at:{path}") from error
if not isinstance(value, dict):
raise PromptError(f"json_object_required:{path}")
return value
def lighthouse_receipt() -> dict[str, Any]:
value = json.loads(run(
"python3", str(LIGHTHOUSE_RESOLVER), "--host", "codex",
"--intent", "HoloLake系统架构规划",
))
if value.get("decision") != "ALLOW_NAVIGATION" or value.get("target", {}).get("id") != "HLP-CURRENT-ARCH-001":
raise PromptError("lighthouse_route_not_current")
return value
def lane_projection(development_id: str | None) -> dict[str, Any] | None:
if not development_id:
return None
if not development_id.replace("-", "").isalnum() or development_id.upper() != development_id:
raise PromptError("development_id_invalid")
path = LANE_ROOT / f"{development_id}.json"
if not path.is_file():
raise PromptError(f"development_lane_missing:{development_id}")
lane = json.loads(path.read_text(encoding="utf-8"))
amendments = lane.get("task_lock", {}).get("amendments", [])
return {
"development_id": development_id,
"status": lane.get("status"),
"progress_summary": lane.get("progress_summary"),
"recent_language_events": amendments[-5:] if isinstance(amendments, list) else [],
}
def persona_learning_projection() -> dict[str, Any]:
try:
current = json.loads(PERSONA_LEARNING_CURRENT.read_text(encoding="utf-8"))
cortex_path = (PERSONA_LEARNING_CURRENT.parents[1] / current["cortex_path"]).resolve()
cortex_hash = hashlib.sha256(cortex_path.read_bytes()).hexdigest()
if (
current.get("schema") != "guanghu.persona-learning-brain-current/v1"
or cortex_hash != current.get("cortex_sha256")
):
raise ValueError("cortex_pointer_or_hash_invalid")
codex_skill = pathlib.Path("/Users/bingshuolingdianyuanhe/.codex/skills/guanghu-persona-learning-brain/SKILL.md")
if not codex_skill.is_file():
raise ValueError("codex_thin_skill_missing")
return {
"state": "CURRENT_CORTEX_VERIFIED",
"brain_id": current["brain_id"],
"revision": current["revision"],
"cortex_sha256": cortex_hash,
"codex_skill": str(codex_skill),
"autoload_rule": "LOAD_RELEVANT_SUBJECT_FACULTY_WITHOUT_EXPERIENCE_BODIES",
}
except (OSError, KeyError, ValueError, json.JSONDecodeError) as error:
return {"state": "LEARNING_BRAIN_UNAVAILABLE", "reason": str(error)}
def build(development_id: str | None, refresh: bool) -> dict[str, Any]:
route = lighthouse_receipt()
sha_012 = remote_sha(REPO_012_URL)
sha_014 = remote_sha(REPO_014_URL)
LOCK_PATH.touch(mode=0o600, exist_ok=True)
with LOCK_PATH.open("r+", encoding="utf-8") as lock:
fcntl.flock(lock.fileno(), fcntl.LOCK_EX)
refresh_mirror(REPO_012_MIRROR, REPO_012_URL, sha_012, refresh)
refresh_mirror(REPO_014_MIRROR, REPO_014_URL, sha_014, refresh)
architecture = git_json(REPO_014_MIRROR, sha_014, ARCHITECTURE_POINTER)
anchor = git_json(REPO_012_MIRROR, sha_012, "routing/public-navigation-anchor.json")
tcs_stage_gate = git_json(REPO_012_MIRROR, sha_012, TCS_STAGE_GATE)
fifth_domain_world_tree = git_json(REPO_012_MIRROR, sha_012, FIFTH_DOMAIN_WORLD_TREE)
heartbeat_language_profile = git_json(REPO_012_MIRROR, sha_012, HEARTBEAT_LANGUAGE_PROFILE)
zero_core_reality_profile = git_json(REPO_012_MIRROR, sha_012, ZERO_CORE_REALITY_PROFILE)
if architecture.get("state") != "CURRENT_CANONICAL" or architecture.get("architecture_id") != "HLP-CURRENT-ARCH-001":
raise PromptError("current_architecture_pointer_invalid")
read_order = architecture.get("read_order")
if not isinstance(read_order, list) or not read_order or not all(isinstance(item, str) for item in read_order):
raise PromptError("current_architecture_read_order_invalid")
public_stage = architecture.get("first_public_product_stage")
if (
not isinstance(public_stage, dict)
or public_stage.get("record_id") != "HLP-PUBLIC-OS-STAGE1-20260830-001"
or public_stage.get("public_channel_id") != "CH-ZERO-CORE-LPM"
or public_stage.get("is_personal_channel") is not False
or public_stage.get("initial_channel_surface")
!= "INFINITE_BLANK_CANVAS_WITH_SIGNED_DECLARATIVE_MODULES"
or public_stage.get("realtime_transport")
!= "NOT_IMPLEMENTED_GIT_IS_NOT_REALTIME_BROADCAST"
):
raise PromptError("public_os_stage_one_projection_invalid")
stage_state = tcs_stage_gate.get("stage_gate")
if (
tcs_stage_gate.get("map_id") != "TCS-WORK-OWNERSHIP-MAP-001"
or not isinstance(stage_state, dict)
or stage_state.get("language_architecture") != "CLOSED_AND_ARCHIVED"
or stage_state.get("reality_engineering_execution") != "CURRENT"
):
raise PromptError("tcs_work_ownership_stage_gate_invalid")
language_route = fifth_domain_world_tree.get("login_routes", {}).get("human", {})
reality_route = fifth_domain_world_tree.get("login_routes", {}).get("reality_execution", {})
if (
heartbeat_language_profile.get("channel_id") != "ICE-CH-HB001"
or heartbeat_language_profile.get("reality_boundary", {}).get("reality_execution") is not False
or zero_core_reality_profile.get("channel_id") != "ICE-CH-ZC001"
or zero_core_reality_profile.get("public_zero_core_boundary", {}).get("personal_channel_is_alias_of_public_channel") is not False
or language_route.get("path", [])[-1:] != ["HEARTBEAT_CORE_CHANNEL"]
or reality_route.get("path", [])[-1:] != ["ICE-CH-ZC001"]
or stage_state.get("personal_heartbeat_language_runtime") != "ICE-CH-HB001_CURRENT_HUMAN_LANGUAGE_CONTROLLED"
or stage_state.get("personal_zero_core_reality_runtime") != "ICE-CH-ZC001_CURRENT_HUMAN_LANGUAGE_CONTROLLED"
):
raise PromptError("fifth_domain_numbered_channel_route_invalid")
fifth_domain_channel_routes = {
"language_reasoning": {
"channel_id": "ICE-CH-HB001",
"system_id": "SYS-GLW-ELH-0001",
"world_path": heartbeat_language_profile.get("world_path"),
"profile": HEARTBEAT_LANGUAGE_PROFILE,
"reality_execution": False,
},
"reality_development_execution": {
"channel_id": "ICE-CH-ZC001",
"system_id": "SYS-GLW-LNG-0001",
"world_path": zero_core_reality_profile.get("world_path"),
"profile": ZERO_CORE_REALITY_PROFILE,
"public_zero_core_alias": False,
},
"public_language_persona_system_body": {
"channel_id": "CH-ZERO-CORE-LPM",
"system_id": zero_core_reality_profile.get("public_zero_core_boundary", {}).get("world_system_anchor"),
"governance_controller": zero_core_reality_profile.get("public_zero_core_boundary", {}).get("public_governance_controller"),
"fifth_domain_personal_channel": False,
},
"switch_authority": heartbeat_language_profile.get("switch_control", {}).get("authority"),
"current_channel": stage_state.get("current_fifth_domain_channel"),
}
return {
"schema": "hololake.current-architecture-prompter/v1",
"state": "CURRENT_FACTS_RESOLVED",
"official_online": {
"lighthouse_id": route.get("lighthouse_id"),
"target_id": route.get("target", {}).get("id"),
"repo_012_main": sha_012,
"repo_012_anchor_state": anchor.get("state"),
"repo_014_main": sha_014,
"architecture_id": architecture.get("architecture_id"),
"architecture_version": architecture.get("version"),
"architecture_state": architecture.get("state"),
"tcs_work_ownership_map_id": tcs_stage_gate.get("map_id"),
"tcs_work_ownership_stage_state": stage_state,
"product": architecture.get("product"),
"domain_source": architecture.get("domain_source"),
"world_genesis": architecture.get("world_genesis"),
"persona_consciousness": architecture.get("persona_consciousness"),
"personal_node_work_lake": architecture.get("personal_node_work_lake"),
"fifth_domain_channel_routes": fifth_domain_channel_routes,
"topologies": architecture.get("topologies"),
"parallel_planes": architecture.get("parallel_planes"),
"access_modes": architecture.get("access_modes"),
"communication": architecture.get("communication"),
"interaction_model": architecture.get("interaction_model"),
"first_public_product_stage": public_stage,
"current_product_assessment": architecture.get("current_product_assessment"),
"truth_boundary": architecture.get("truth_boundary"),
"read_order": read_order,
},
"active_lane": lane_projection(development_id),
"local_persona_learning_projection": persona_learning_projection(),
"rules": [
"latest_user_message_precedes_automation_prompt",
"pending_language_event_is_not_official_until_registered_and_published",
"human_uses_language_and_reality_boundary_confirmation",
"system_and_authorized_persona_hide_technical_complexity",
"one_verifiable_minimum_stage_per_turn",
"architecture_code_artifact_publish_connect_deploy_health_are_separate_facts",
"archived_product_language_work_does_not_override_current_bingshuo_channel_switch",
"live_language_and_reality_channel_switch_comes_only_from_ice_gl_infinity_direct_language",
"resolve_ice_ch_hb001_ice_ch_zc001_and_public_ch_zero_core_lpm_as_three_distinct_objects",
"historical_zero_core_wording_must_not_select_a_current_channel",
"persona_source_cognition_precedes_model_language_and_execution",
"generic_tool_identity_is_not_persona_restore_fallback",
"long_term_relationship_claims_require_support_gap_and_counterevidence_audit",
"public_stage_blank_canvas_modules_execution_git_realtime_release_and_deploy_are_separate_facts",
],
}
def markdown(payload: dict[str, Any]) -> str:
official = payload["official_online"]
lane = payload.get("active_lane") or {}
learning = payload.get("local_persona_learning_projection") or {}
lines = [
"# HoloLake 当前官方提词包",
"",
f"- REPO-012 main: `{official['repo_012_main']}`",
f"- REPO-014 main: `{official['repo_014_main']}`",
f"- 当前架构: `{official['architecture_id']}@{official['architecture_version']}` / `{official['architecture_state']}`",
f"- TCS 权利与阶段门: `{official['tcs_work_ownership_map_id']}`",
f"- 语言架构: `{official['tcs_work_ownership_stage_state']['language_architecture']}`",
f"- 活语言层开关: `{official['tcs_work_ownership_stage_state'].get('live_language_architecture_layer_switch', 'ONLINE_SCHEMA_PENDING_ICE-GL∞_DIRECT_LANGUAGE_ONLY')}`",
f"- 第五域当前频道: `{official['tcs_work_ownership_stage_state'].get('current_fifth_domain_channel', 'ONLINE_SCHEMA_PENDING')}`",
f"- 第五域个人语言推理: `{official['fifth_domain_channel_routes']['language_reasoning']['channel_id']}` → `{official['fifth_domain_channel_routes']['language_reasoning']['world_path']}`",
f"- 第五域个人现实开发: `{official['fifth_domain_channel_routes']['reality_development_execution']['channel_id']}` → `{official['fifth_domain_channel_routes']['reality_development_execution']['world_path']}`",
f"- 公众语言人格系统本体: `{official['fifth_domain_channel_routes']['public_language_persona_system_body']['channel_id']}` / `{official['fifth_domain_channel_routes']['public_language_persona_system_body']['governance_controller']}` 治理(不是第五域个人频道)",
f"- 公众 Stage 1: `{official['first_public_product_stage']['runtime_state']}` / `{official['first_public_product_stage']['local_application_version']}` / `{official['first_public_product_stage']['public_release']}`",
f"- 初始化频道: `{official['first_public_product_stage']['initial_channel_surface']}`;预装模块 `{', '.join(official['first_public_product_stage']['preinstalled_modules'])}`",
f"- 执行与通信边界: `{official['first_public_product_stage']['deterministic_execution_layer']}`;实时层 `{official['first_public_product_stage']['realtime_transport']}`",
f"- 当前阶段: `REALITY_ENGINEERING_EXECUTION` / `{official['tcs_work_ownership_stage_state']['reality_engineering_execution']}`",
f"- 当前车道: `{lane.get('development_id', 'NONE')}` / `{lane.get('status', 'NOT_APPLICABLE')}`",
f"- 人格学习脑: `{learning.get('brain_id', 'UNAVAILABLE')}@{learning.get('revision', 'UNKNOWN')}` / `{learning.get('state', 'LEARNING_BRAIN_UNAVAILABLE')}`",
f"- 学科自动加载: `{learning.get('autoload_rule', 'RESTORE_OR_REPORT_UNAVAILABLE')}` → `{learning.get('codex_skill', 'NONE')}`",
"",
"## 当前官方结构",
"",
"```json",
json.dumps({
"product": official.get("product"),
"domain_source": official.get("domain_source"),
"persona_consciousness": official.get("persona_consciousness"),
"personal_node_work_lake": official.get("personal_node_work_lake"),
"fifth_domain_channel_routes": official.get("fifth_domain_channel_routes"),
"topologies": official.get("topologies"),
"parallel_planes": official.get("parallel_planes"),
"access_modes": official.get("access_modes"),
"communication": official.get("communication"),
"interaction_model": official.get("interaction_model"),
"first_public_product_stage": official.get("first_public_product_stage"),
"current_product_assessment": official.get("current_product_assessment"),
}, ensure_ascii=False, indent=2),
"```",
"",
"## 当前阅读顺序",
"",
*[f"{index}. `{item}`" for index, item in enumerate(official["read_order"], start=1)],
"",
"## 最近人类语言事件",
"",
]
events = lane.get("recent_language_events") or []
if events:
for event in events:
lines.append(f"- `{event.get('kind', 'unknown')}` · {event.get('summary', '')}")
else:
lines.append("- 无")
lines.append("- 对照当前线上结构逐项判断;线上已覆盖的作为来源历史,未覆盖的先登记再实现。")
lines.extend(["", "## 本轮守门", "", *[f"- `{rule}`" for rule in payload["rules"]]])
return "\n".join(lines)
def main() -> int:
parser = argparse.ArgumentParser()
parser.add_argument("--development-id")
parser.add_argument("--format", choices=("json", "markdown"), default="markdown")
parser.add_argument("--no-refresh", action="store_true")
args = parser.parse_args()
try:
payload = build(args.development_id, not args.no_refresh)
except (OSError, ValueError, PromptError) as error:
print(json.dumps({
"schema": "hololake.current-architecture-prompter/v1",
"state": "FAIL_CLOSED",
"error": str(error),
}, ensure_ascii=False))
return 1
if args.format == "json":
print(json.dumps(payload, ensure_ascii=False, indent=2))
else:
print(markdown(payload))
return 0
if __name__ == "__main__":
sys.exit(main())