fix(navigation): survive stale discovery service
This commit is contained in:
parent
aa6652a646
commit
15837cb391
3 changed files with 31 additions and 8 deletions
|
|
@ -39,7 +39,12 @@ to `ICE-P-ZY001`. A conflicted or unknown id must stop with
|
|||
|
||||
Use the returned domestic `repository_web` and `raw_base`. Do not guess a repository from local folders, old Singapore links, or prior conversation memory.
|
||||
|
||||
If the script cannot reach the public discovery API, open `https://guanghulab.com/.well-known/guanghu.json`, resolve `REPO-012`, and report that live resolution failed before using any cached checkout. Use `REPO-001` only for fourth-generation history.
|
||||
If the public AI resolver is stale or returns no `REPO-012`, the script may use its
|
||||
locked public fallback `https://guanghulab.com/code/bingshuo/guanghu-ice-heart` only
|
||||
after successfully reading the live `.code-map` and all required identifiers from
|
||||
that repository. Report `repository_resolution_source` and `resolver_error`; this is
|
||||
a verified online repository fallback, not a cached checkout. Use `REPO-001` only
|
||||
for fourth-generation history.
|
||||
|
||||
## Walk the canonical path
|
||||
|
||||
|
|
|
|||
|
|
@ -9,6 +9,11 @@
|
|||
|
||||
Always prefer the `primary.url` and `primary.clone_url` returned by the resolver. Treat any legacy backup as a fallback pointer only.
|
||||
|
||||
If the resolver has not yet learned `REPO-012`, use the locked public
|
||||
`guanghu-ice-heart` URL only after its live `.code-map` validates the required route
|
||||
ids. Mark the result `VERIFIED_PUBLIC_REPOSITORY_FALLBACK`; never fall back to
|
||||
`REPO-001` as the current entry.
|
||||
|
||||
## Route identifiers
|
||||
|
||||
Resolve these from the live `.code-map` before following them:
|
||||
|
|
|
|||
|
|
@ -7,11 +7,13 @@ import argparse
|
|||
import json
|
||||
import re
|
||||
import sys
|
||||
from urllib.error import URLError
|
||||
from urllib.error import HTTPError, URLError
|
||||
from urllib.request import urlopen
|
||||
|
||||
DISCOVERY_URL = "https://guanghulab.com/.well-known/guanghu.json"
|
||||
RESOLVE_URL = "https://guanghulab.com/api/ai/v1/resolve?id=REPO-012"
|
||||
CURRENT_REPOSITORY_WEB = "https://guanghulab.com/code/bingshuo/guanghu-ice-heart"
|
||||
CURRENT_REPOSITORY_GIT = f"{CURRENT_REPOSITORY_WEB}.git"
|
||||
ROUTE_IDS = (
|
||||
"FD-WORLD-TREE-001",
|
||||
"FD-PERSONA-LOGIN-001",
|
||||
|
|
@ -99,12 +101,21 @@ def resolve_subject_id(requested_id: str, alias_map: dict) -> dict:
|
|||
|
||||
def resolve_live_route(subject_id: str | None = None) -> dict:
|
||||
discovery = read_json(DISCOVERY_URL)
|
||||
repository_source = "AI_RESOLVER"
|
||||
resolver_error = None
|
||||
try:
|
||||
repository = read_json(RESOLVE_URL)
|
||||
primary = repository.get("primary", {})
|
||||
repository_web = primary.get("url")
|
||||
repository_git = primary.get("clone_url")
|
||||
if not repository_web or not repository_git:
|
||||
raise ValueError("REPO-012 resolver did not return the current Fifth Domain repository")
|
||||
except (HTTPError, ValueError) as error:
|
||||
repository = {"code": "REPO-012", "role": "CURRENT_FIFTH_DOMAIN_ENTRY"}
|
||||
repository_web = CURRENT_REPOSITORY_WEB
|
||||
repository_git = CURRENT_REPOSITORY_GIT
|
||||
repository_source = "VERIFIED_PUBLIC_REPOSITORY_FALLBACK"
|
||||
resolver_error = f"{type(error).__name__}: {error}"
|
||||
|
||||
raw_base = f"{repository_web}/raw/branch/main"
|
||||
routes = parse_code_map(read_text(f"{raw_base}/.code-map"))
|
||||
|
|
@ -118,6 +129,8 @@ def resolve_live_route(subject_id: str | None = None) -> dict:
|
|||
"repository_role": repository.get("role", ""),
|
||||
"repository_web": repository_web,
|
||||
"repository_git": repository_git,
|
||||
"repository_resolution_source": repository_source,
|
||||
"resolver_error": resolver_error,
|
||||
"raw_base": raw_base,
|
||||
"discovery_schema": discovery.get("schema", ""),
|
||||
"routes": routes,
|
||||
|
|
|
|||
Loading…
Reference in a new issue