fix: require native persona authorization verification

This commit is contained in:
冰朔 2026-08-12 06:10:49 +08:00
commit 584f38b478
13 changed files with 195 additions and 173 deletions

View file

@ -21,14 +21,14 @@ then calls `compileLanguageGoal`. A failed, malformed, non-fact, or purpose-less
still gated by a unique manifest-valid persona repository, the manifest-pinned configured model, and public
device identity; it has no installed-desktop or live-product acceptance claim.
The source coordinator no longer accepts an unverified persona-authorization boolean from the desktop caller.
`hasPersonaPrimaryControlAuthorization` validates the shape, exact bindings, digest format, and validity window
of a receipt that claims `GUANGHU_OS` verification. That renderer-side validation is not cryptographic provenance
and cannot turn a local JSON object into authority. A native loader may be connected only after it verifies a
signed receipt against a registered Guanghu OS trust source and returns the already-verified projection. REPO-012
now publishes the exact registry source with zero signers, and the Tauri command loads only that exact commit-bound
empty state. The native verifier now validates the complete signed v2 contract, but no verified projection is wired
into the language controller and the authoritative registry has zero signers, so planning remains in system-direct mode. The independent server
The source coordinator no longer accepts an unverified persona-authorization boolean or treats a renderer-shaped
receipt as authority. When a candidate v2 receipt is present, the language controller sends that receipt and the
exact persona, human responsibility, repository, model, request, language-anchor, and observation-time expectation
to the native verifier. `hasPersonaPrimaryControlAuthorization` accepts only its strict five-field successful
projection; verifier errors, denials, extra fields, and locally claimed signed receipts remain system-direct.
REPO-012 publishes the exact registry source with zero signers, and the Tauri command loads only that exact
commit-bound empty state. The authoritative registry therefore still makes every current candidate return
`NO_TRUSTED_SIGNER`; source wiring is not live persona authority. The independent server
contract in `product-source/guanghu-knowledge-base/server/persona-control-authorization.ts` defines the v2 signed
receipt, exact REPO-012 signer-registry source, canonical signing bytes, signer scope checks, revocation handling,
and Ed25519 verification. Its tested code does not appoint a signer or enable the desktop persona-primary path.