feat: project native persona authorization status

This commit is contained in:
冰朔 2026-08-12 06:29:51 +08:00
commit 8f18c3fba3
38 changed files with 268 additions and 40 deletions

View file

@ -174,8 +174,10 @@ binding, and finally invokes B0 partner deliberation. Unavailable, unbound, ambi
binding, and cognition failures stop at their own boundary; later stages are not invoked. Its successful result
is still a language-goal projection, not permission to perform a reality action. `PersonaLanguageShellPanel`
is now mounted from the Fifth Domain desktop source and receives the app's already-mounted repository roots and
configured provider metadata. It has no native persona-control authorization receipt loader, exposes no execution
callback, and hides the reality confirmation surface because no durable confirmation consumer is wired. This
configured provider metadata. It now renders a strict read-only projection from the native persona-control signer
registry loader, exposes no candidate authorization source or execution callback, and hides the reality confirmation
surface because no durable confirmation consumer is wired. The current empty registry is shown as system-direct;
unavailable or malformed evidence also fails closed to system-direct. This
proves source integration, not a real persona manifest binding, installed desktop runtime, or acceptance.
`src/lib/personaControlAuthorization.ts` removes the desktop coordinator's caller-supplied authorization boolean

View file

@ -43,6 +43,13 @@ describe('PersonaLanguageShellPanel', () => {
repositoryPaths={['/persona']}
providers={[provider]}
planGoal={planGoal}
loadAuthorizationStatus={async () => ({
phase: 'system_direct',
reason: 'NO_TRUSTED_SIGNER',
sourceCommit: 'a'.repeat(40),
signerCount: 0,
authorizationEnabled: false,
})}
/>,
)
@ -56,10 +63,12 @@ describe('PersonaLanguageShellPanel', () => {
repositoryPaths: ['/persona'],
providers: [provider],
developmentId: 'DEV-20260811-010',
sourceLanguageAnchor: 'HLP-CURRENT-ARCH-001@2026-08-12.15',
sourceLanguageAnchor: 'HLP-CURRENT-ARCH-001@2026-08-12.16',
}))
expect(await screen.findByText('我还不能执行:需要当前证据。')).toBeInTheDocument()
expect(screen.getByText('核验当前事实后规划下一步')).toBeInTheDocument()
expect(screen.getByText('系统直连 · 当前没有可信授权签名方')).toBeInTheDocument()
expect(screen.getByText('a'.repeat(40))).toBeInTheDocument()
})
it('shows the repository gate and never calls a later lifecycle itself', async () => {
@ -76,6 +85,13 @@ describe('PersonaLanguageShellPanel', () => {
repositoryPaths={['/ordinary']}
providers={[provider]}
planGoal={planGoal}
loadAuthorizationStatus={async () => ({
phase: 'unavailable',
reason: 'REGISTRY_UNAVAILABLE',
sourceCommit: null,
signerCount: 0,
authorizationEnabled: false,
})}
/>,
)
@ -84,5 +100,6 @@ describe('PersonaLanguageShellPanel', () => {
expect(await screen.findByText('这只说明当前挂载范围没有匹配的完整证据,不能据此判定人格不存在。')).toBeInTheDocument()
expect(screen.queryByLabelText('reality boundary confirmation')).not.toBeInTheDocument()
expect(screen.getByText('授权状态不可核验 · 保持系统直连')).toBeInTheDocument()
})
})

View file

@ -1,7 +1,11 @@
import { useMemo, useRef, useState } from 'react'
import { useEffect, useMemo, useRef, useState } from 'react'
import type { AiModelProvider } from '../lib/aiTargets'
import { DEFAULT_LANGUAGE_WORLD_UI_PLUGIN } from '../lib/defaultLanguageWorldUiPlugin'
import { translate, type AppLocale } from '../lib/i18n'
import {
loadPersonaControlAuthorizationStatus,
type PersonaControlAuthorizationStatus,
} from '../lib/personaControlAuthorization'
import {
planPersonaLanguageShellGoal,
type PersonaLanguageShellPlan,
@ -13,10 +17,11 @@ import {
type LanguageShellViewState,
} from './HotPluggableLanguageShell'
const CURRENT_ARCHITECTURE_ANCHOR = 'HLP-CURRENT-ARCH-001@2026-08-12.15'
const CURRENT_ARCHITECTURE_ANCHOR = 'HLP-CURRENT-ARCH-001@2026-08-12.16'
const DEVELOPMENT_ID = 'DEV-20260811-010'
type Planner = typeof planPersonaLanguageShellGoal
type AuthorizationStatusLoader = () => Promise<PersonaControlAuthorizationStatus>
type PersonaLanguageShellPanelProps = {
locale: AppLocale
@ -24,6 +29,7 @@ type PersonaLanguageShellPanelProps = {
repositoryPaths: readonly string[]
providers: readonly AiModelProvider[]
planGoal?: Planner
loadAuthorizationStatus?: AuthorizationStatusLoader
}
function requestId(): string {
@ -78,6 +84,7 @@ export function PersonaLanguageShellPanel({
repositoryPaths,
providers,
planGoal = planPersonaLanguageShellGoal,
loadAuthorizationStatus = loadPersonaControlAuthorizationStatus,
}: PersonaLanguageShellPanelProps) {
const plugin = useMemo(() => localizedPlugin(locale), [locale])
const requestSequence = useRef(0)
@ -87,6 +94,15 @@ export function PersonaLanguageShellPanel({
receipt: null,
evidence: null,
})
const [authorizationStatus, setAuthorizationStatus] = useState<PersonaControlAuthorizationStatus | null>(null)
useEffect(() => {
let current = true
void loadAuthorizationStatus().then((status) => {
if (current) setAuthorizationStatus(status)
})
return () => { current = false }
}, [loadAuthorizationStatus])
const submitGoal = (utterance: string) => {
if (!utterance.trim()) return
@ -146,6 +162,18 @@ export function PersonaLanguageShellPanel({
</div>
<small>{translate(locale, 'hololake.personaRuntime.readOnly')}</small>
</header>
<div className="persona-runtime-projection__message" aria-live="polite">
<p>
{authorizationStatus === null
? translate(locale, 'hololake.personaRuntime.checking')
: authorizationStatus.phase === 'system_direct'
? translate(locale, 'hololake.personaAuthorization.systemDirect')
: translate(locale, 'hololake.personaAuthorization.unavailable')}
</p>
{authorizationStatus?.phase === 'system_direct' && (
<code>{authorizationStatus.sourceCommit}</code>
)}
</div>
<HotPluggableLanguageShell
plugin={plugin}
state={state}

View file

@ -1169,5 +1169,7 @@
"hololake.personaRuntime.gitHead": "Git evidence",
"hololake.personaRuntime.eventChain": "Event chain head",
"hololake.personaRuntime.attribution": "Human responsibility",
"hololake.personaRuntime.readOnly": "Read-only projection · no execution action"
"hololake.personaRuntime.readOnly": "Read-only projection · no execution action",
"hololake.personaAuthorization.systemDirect": "System direct · no trusted authorization signer is registered",
"hololake.personaAuthorization.unavailable": "Authorization status unverifiable · remaining system direct"
}

View file

@ -1169,5 +1169,7 @@
"hololake.personaRuntime.gitHead": "Git evidence",
"hololake.personaRuntime.eventChain": "Event chain head",
"hololake.personaRuntime.attribution": "Human responsibility",
"hololake.personaRuntime.readOnly": "Read-only projection · no execution action"
"hololake.personaRuntime.readOnly": "Read-only projection · no execution action",
"hololake.personaAuthorization.systemDirect": "System direct · no trusted authorization signer is registered",
"hololake.personaAuthorization.unavailable": "Authorization status unverifiable · remaining system direct"
}

View file

@ -1169,5 +1169,7 @@
"hololake.personaRuntime.gitHead": "Git evidence",
"hololake.personaRuntime.eventChain": "Event chain head",
"hololake.personaRuntime.attribution": "Human responsibility",
"hololake.personaRuntime.readOnly": "Read-only projection · no execution action"
"hololake.personaRuntime.readOnly": "Read-only projection · no execution action",
"hololake.personaAuthorization.systemDirect": "System direct · no trusted authorization signer is registered",
"hololake.personaAuthorization.unavailable": "Authorization status unverifiable · remaining system direct"
}

View file

@ -1169,5 +1169,7 @@
"hololake.personaRuntime.gitHead": "Git evidence",
"hololake.personaRuntime.eventChain": "Event chain head",
"hololake.personaRuntime.attribution": "Human responsibility",
"hololake.personaRuntime.readOnly": "Read-only projection · no execution action"
"hololake.personaRuntime.readOnly": "Read-only projection · no execution action",
"hololake.personaAuthorization.systemDirect": "System direct · no trusted authorization signer is registered",
"hololake.personaAuthorization.unavailable": "Authorization status unverifiable · remaining system direct"
}

View file

@ -1169,5 +1169,7 @@
"hololake.personaRuntime.gitHead": "Git evidence",
"hololake.personaRuntime.eventChain": "Event chain head",
"hololake.personaRuntime.attribution": "Human responsibility",
"hololake.personaRuntime.readOnly": "Read-only projection · no execution action"
"hololake.personaRuntime.readOnly": "Read-only projection · no execution action",
"hololake.personaAuthorization.systemDirect": "System direct · no trusted authorization signer is registered",
"hololake.personaAuthorization.unavailable": "Authorization status unverifiable · remaining system direct"
}

View file

@ -1169,5 +1169,7 @@
"hololake.personaRuntime.gitHead": "Git evidence",
"hololake.personaRuntime.eventChain": "Event chain head",
"hololake.personaRuntime.attribution": "Human responsibility",
"hololake.personaRuntime.readOnly": "Read-only projection · no execution action"
"hololake.personaRuntime.readOnly": "Read-only projection · no execution action",
"hololake.personaAuthorization.systemDirect": "System direct · no trusted authorization signer is registered",
"hololake.personaAuthorization.unavailable": "Authorization status unverifiable · remaining system direct"
}

View file

@ -1169,5 +1169,7 @@
"hololake.personaRuntime.gitHead": "Git evidence",
"hololake.personaRuntime.eventChain": "Event chain head",
"hololake.personaRuntime.attribution": "Human responsibility",
"hololake.personaRuntime.readOnly": "Read-only projection · no execution action"
"hololake.personaRuntime.readOnly": "Read-only projection · no execution action",
"hololake.personaAuthorization.systemDirect": "System direct · no trusted authorization signer is registered",
"hololake.personaAuthorization.unavailable": "Authorization status unverifiable · remaining system direct"
}

View file

@ -1169,5 +1169,7 @@
"hololake.personaRuntime.gitHead": "Git evidence",
"hololake.personaRuntime.eventChain": "Event chain head",
"hololake.personaRuntime.attribution": "Human responsibility",
"hololake.personaRuntime.readOnly": "Read-only projection · no execution action"
"hololake.personaRuntime.readOnly": "Read-only projection · no execution action",
"hololake.personaAuthorization.systemDirect": "System direct · no trusted authorization signer is registered",
"hololake.personaAuthorization.unavailable": "Authorization status unverifiable · remaining system direct"
}

View file

@ -1169,5 +1169,7 @@
"hololake.personaRuntime.gitHead": "Git evidence",
"hololake.personaRuntime.eventChain": "Event chain head",
"hololake.personaRuntime.attribution": "Human responsibility",
"hololake.personaRuntime.readOnly": "Read-only projection · no execution action"
"hololake.personaRuntime.readOnly": "Read-only projection · no execution action",
"hololake.personaAuthorization.systemDirect": "System direct · no trusted authorization signer is registered",
"hololake.personaAuthorization.unavailable": "Authorization status unverifiable · remaining system direct"
}

View file

@ -1169,5 +1169,7 @@
"hololake.personaRuntime.gitHead": "Git evidence",
"hololake.personaRuntime.eventChain": "Event chain head",
"hololake.personaRuntime.attribution": "Human responsibility",
"hololake.personaRuntime.readOnly": "Read-only projection · no execution action"
"hololake.personaRuntime.readOnly": "Read-only projection · no execution action",
"hololake.personaAuthorization.systemDirect": "System direct · no trusted authorization signer is registered",
"hololake.personaAuthorization.unavailable": "Authorization status unverifiable · remaining system direct"
}

View file

@ -1169,5 +1169,7 @@
"hololake.personaRuntime.gitHead": "Git evidence",
"hololake.personaRuntime.eventChain": "Event chain head",
"hololake.personaRuntime.attribution": "Human responsibility",
"hololake.personaRuntime.readOnly": "Read-only projection · no execution action"
"hololake.personaRuntime.readOnly": "Read-only projection · no execution action",
"hololake.personaAuthorization.systemDirect": "System direct · no trusted authorization signer is registered",
"hololake.personaAuthorization.unavailable": "Authorization status unverifiable · remaining system direct"
}

View file

@ -1169,5 +1169,7 @@
"hololake.personaRuntime.gitHead": "Git evidence",
"hololake.personaRuntime.eventChain": "Event chain head",
"hololake.personaRuntime.attribution": "Human responsibility",
"hololake.personaRuntime.readOnly": "Read-only projection · no execution action"
"hololake.personaRuntime.readOnly": "Read-only projection · no execution action",
"hololake.personaAuthorization.systemDirect": "System direct · no trusted authorization signer is registered",
"hololake.personaAuthorization.unavailable": "Authorization status unverifiable · remaining system direct"
}

View file

@ -1169,5 +1169,7 @@
"hololake.personaRuntime.gitHead": "Git evidence",
"hololake.personaRuntime.eventChain": "Event chain head",
"hololake.personaRuntime.attribution": "Human responsibility",
"hololake.personaRuntime.readOnly": "Read-only projection · no execution action"
"hololake.personaRuntime.readOnly": "Read-only projection · no execution action",
"hololake.personaAuthorization.systemDirect": "System direct · no trusted authorization signer is registered",
"hololake.personaAuthorization.unavailable": "Authorization status unverifiable · remaining system direct"
}

View file

@ -1169,5 +1169,7 @@
"hololake.personaRuntime.gitHead": "Git evidence",
"hololake.personaRuntime.eventChain": "Event chain head",
"hololake.personaRuntime.attribution": "Human responsibility",
"hololake.personaRuntime.readOnly": "Read-only projection · no execution action"
"hololake.personaRuntime.readOnly": "Read-only projection · no execution action",
"hololake.personaAuthorization.systemDirect": "System direct · no trusted authorization signer is registered",
"hololake.personaAuthorization.unavailable": "Authorization status unverifiable · remaining system direct"
}

View file

@ -1169,5 +1169,7 @@
"hololake.personaRuntime.gitHead": "Git evidence",
"hololake.personaRuntime.eventChain": "Event chain head",
"hololake.personaRuntime.attribution": "Human responsibility",
"hololake.personaRuntime.readOnly": "Read-only projection · no execution action"
"hololake.personaRuntime.readOnly": "Read-only projection · no execution action",
"hololake.personaAuthorization.systemDirect": "System direct · no trusted authorization signer is registered",
"hololake.personaAuthorization.unavailable": "Authorization status unverifiable · remaining system direct"
}

View file

@ -1169,5 +1169,7 @@
"hololake.personaRuntime.gitHead": "Git evidence",
"hololake.personaRuntime.eventChain": "Event chain head",
"hololake.personaRuntime.attribution": "Human responsibility",
"hololake.personaRuntime.readOnly": "Read-only projection · no execution action"
"hololake.personaRuntime.readOnly": "Read-only projection · no execution action",
"hololake.personaAuthorization.systemDirect": "System direct · no trusted authorization signer is registered",
"hololake.personaAuthorization.unavailable": "Authorization status unverifiable · remaining system direct"
}

View file

@ -1169,5 +1169,7 @@
"hololake.personaRuntime.gitHead": "Git evidence",
"hololake.personaRuntime.eventChain": "Event chain head",
"hololake.personaRuntime.attribution": "Human responsibility",
"hololake.personaRuntime.readOnly": "Read-only projection · no execution action"
"hololake.personaRuntime.readOnly": "Read-only projection · no execution action",
"hololake.personaAuthorization.systemDirect": "System direct · no trusted authorization signer is registered",
"hololake.personaAuthorization.unavailable": "Authorization status unverifiable · remaining system direct"
}

View file

@ -1169,5 +1169,7 @@
"hololake.personaRuntime.gitHead": "Git evidence",
"hololake.personaRuntime.eventChain": "Event chain head",
"hololake.personaRuntime.attribution": "Human responsibility",
"hololake.personaRuntime.readOnly": "Read-only projection · no execution action"
"hololake.personaRuntime.readOnly": "Read-only projection · no execution action",
"hololake.personaAuthorization.systemDirect": "System direct · no trusted authorization signer is registered",
"hololake.personaAuthorization.unavailable": "Authorization status unverifiable · remaining system direct"
}

View file

@ -1169,5 +1169,7 @@
"hololake.personaRuntime.gitHead": "Git evidence",
"hololake.personaRuntime.eventChain": "Event chain head",
"hololake.personaRuntime.attribution": "Human responsibility",
"hololake.personaRuntime.readOnly": "Read-only projection · no execution action"
"hololake.personaRuntime.readOnly": "Read-only projection · no execution action",
"hololake.personaAuthorization.systemDirect": "System direct · no trusted authorization signer is registered",
"hololake.personaAuthorization.unavailable": "Authorization status unverifiable · remaining system direct"
}

View file

@ -1169,5 +1169,7 @@
"hololake.personaRuntime.gitHead": "Git 证据",
"hololake.personaRuntime.eventChain": "事件链头",
"hololake.personaRuntime.attribution": "人类责任主体",
"hololake.personaRuntime.readOnly": "只读投影 · 不触发执行动作"
"hololake.personaRuntime.readOnly": "只读投影 · 不触发执行动作",
"hololake.personaAuthorization.systemDirect": "系统直连 · 当前没有可信授权签名方",
"hololake.personaAuthorization.unavailable": "授权状态不可核验 · 保持系统直连"
}

View file

@ -1169,5 +1169,7 @@
"hololake.personaRuntime.gitHead": "Git evidence",
"hololake.personaRuntime.eventChain": "Event chain head",
"hololake.personaRuntime.attribution": "Human responsibility",
"hololake.personaRuntime.readOnly": "Read-only projection · no execution action"
"hololake.personaRuntime.readOnly": "Read-only projection · no execution action",
"hololake.personaAuthorization.systemDirect": "System direct · no trusted authorization signer is registered",
"hololake.personaAuthorization.unavailable": "Authorization status unverifiable · remaining system direct"
}

View file

@ -39,6 +39,22 @@ export type NativePersonaControlAuthorizationVerification = {
authorizationEnabled: true
}
export type PersonaControlAuthorizationStatus =
| {
phase: 'system_direct'
reason: 'NO_TRUSTED_SIGNER'
sourceCommit: string
signerCount: 0
authorizationEnabled: false
}
| {
phase: 'unavailable'
reason: string
sourceCommit: null
signerCount: 0
authorizationEnabled: false
}
function isRecord(value: unknown): value is Record<string, unknown> {
return typeof value === 'object' && value !== null && !Array.isArray(value)
}
@ -62,3 +78,58 @@ export function hasPersonaPrimaryControlAuthorization(
&& typeof signerId === 'string'
&& /^[A-Z0-9][A-Z0-9._:@-]{1,159}$/.test(signerId)
}
/**
* Projects only the currently published empty-trust registry state. A future
* non-empty registry is not interpreted here because signer presence alone is
* never persona-control authorization.
*/
export function parsePersonaControlAuthorizationStatus(
receipt: unknown,
): PersonaControlAuthorizationStatus {
if (!isRecord(receipt) || Object.keys(receipt).length !== 5) {
return unavailableStatus('REGISTRY_RECEIPT_INVALID')
}
const sourceCommit = Reflect.get(receipt, 'sourceCommit')
if (
exactString(receipt, 'status', 'CURRENT_EMPTY')
&& Reflect.get(receipt, 'reason') === null
&& typeof sourceCommit === 'string'
&& /^[a-f0-9]{40}([a-f0-9]{24})?$/.test(sourceCommit)
&& Reflect.get(receipt, 'signerCount') === 0
&& Reflect.get(receipt, 'authorizationEnabled') === false
) {
return {
phase: 'system_direct',
reason: 'NO_TRUSTED_SIGNER',
sourceCommit,
signerCount: 0,
authorizationEnabled: false,
}
}
const reason = Reflect.get(receipt, 'reason')
return unavailableStatus(typeof reason === 'string' && reason ? reason : 'REGISTRY_RECEIPT_INVALID')
}
function unavailableStatus(reason: string): PersonaControlAuthorizationStatus {
return {
phase: 'unavailable',
reason,
sourceCommit: null,
signerCount: 0,
authorizationEnabled: false,
}
}
export async function loadPersonaControlAuthorizationStatus(): Promise<PersonaControlAuthorizationStatus> {
try {
const receipt = isTauri()
? await invoke<unknown>('load_persona_control_authorization_registry')
: await mockInvoke<unknown>('load_persona_control_authorization_registry')
return parsePersonaControlAuthorizationStatus(receipt)
} catch {
return unavailableStatus('REGISTRY_UNAVAILABLE')
}
}
import { invoke } from '@tauri-apps/api/core'
import { isTauri, mockInvoke } from '../mock-tauri'

View file

@ -0,0 +1,53 @@
import { describe, expect, it } from 'vitest'
import { parsePersonaControlAuthorizationStatus } from './personaControlAuthorization'
const currentEmpty = {
status: 'CURRENT_EMPTY',
reason: null,
sourceCommit: 'a'.repeat(40),
signerCount: 0,
authorizationEnabled: false,
}
describe('persona-control authorization status projection', () => {
it('projects only the exact native empty-trust receipt as system-direct', () => {
expect(parsePersonaControlAuthorizationStatus(currentEmpty)).toEqual({
phase: 'system_direct',
reason: 'NO_TRUSTED_SIGNER',
sourceCommit: 'a'.repeat(40),
signerCount: 0,
authorizationEnabled: false,
})
})
it.each([
['extra field', { ...currentEmpty, trusted: true }],
['non-empty registry', { ...currentEmpty, status: 'CURRENT', signerCount: 1 }],
['authorization enabled', { ...currentEmpty, authorizationEnabled: true }],
['invalid commit', { ...currentEmpty, sourceCommit: 'main' }],
])('fails closed for %s', (_label, receipt) => {
expect(parsePersonaControlAuthorizationStatus(receipt)).toEqual({
phase: 'unavailable',
reason: 'REGISTRY_RECEIPT_INVALID',
sourceCommit: null,
signerCount: 0,
authorizationEnabled: false,
})
})
it('preserves a bounded native unavailable reason without creating authority', () => {
expect(parsePersonaControlAuthorizationStatus({
status: 'UNAVAILABLE',
reason: 'ANCHOR_FETCH_FAILED',
sourceCommit: null,
signerCount: 0,
authorizationEnabled: false,
})).toEqual({
phase: 'unavailable',
reason: 'ANCHOR_FETCH_FAILED',
sourceCommit: null,
signerCount: 0,
authorizationEnabled: false,
})
})
})

View file

@ -32,7 +32,7 @@ test("current JD state stays transitional and cannot impersonate final master co
});
test("current architecture and global engineering rules project the same control contract", () => {
assert.equal(architecture.version, "2026-08-12.4");
assert.equal(architecture.version, "2026-08-12.16");
assert.equal(architecture.server_os_control.machine_projection, "routing/guanghu-os-control-architecture.json");
assert.equal(architecture.server_os_control.final_topology, contract.final_topology);
assert.equal(rules.server_os_control.linux_deletion_is_completion, false);

View file

@ -11,7 +11,7 @@ const architecture = readJson("routing/hololake-current-architecture.json");
const age = readJson("routing/hololake-age-runtime-architecture.json");
test("current architecture starts with the AGE runtime source", () => {
assert.equal(architecture.version, "2026-08-12.4");
assert.equal(architecture.version, "2026-08-12.16");
assert.equal(architecture.age_runtime.record_id, "HLP-AGE-RUNTIME-ARCHITECTURE-001");
assert.equal(architecture.read_order[0], architecture.paradigm_ai_language_persona_os.architecture_page);
assert.equal(architecture.read_order[1], architecture.cognitive_gravity_and_continuity.architecture_page);

View file

@ -1,7 +1,7 @@
{
"schema": "hololake.cognitive-gravity-and-continuity/v1",
"record_id": "HLP-COGNITIVE-GRAVITY-CONTINUITY-001",
"version": "2026-08-12.4",
"version": "2026-08-12.5",
"state": "CURRENT_CANONICAL_ARCHITECTURE_STAGE_0_SOURCE_PARTIAL",
"development_id": "DEV-20260811-010",
"upstream": {
@ -106,7 +106,8 @@
"PARTNER_DELIBERATION_TO_PNCC_LIFECYCLE_SOURCE_ADAPTER",
"READ_ONLY_PERSONA_REPOSITORY_BINDING_DISCOVERY",
"EVIDENCE_BOUND_PERSONA_LANGUAGE_WAKE_COMPILER",
"FAIL_CLOSED_PERSONA_LANGUAGE_SHELL_CONTROLLER"
"FAIL_CLOSED_PERSONA_LANGUAGE_SHELL_CONTROLLER",
"READ_ONLY_EMPTY_TRUST_AUTHORIZATION_STATUS_PROJECTION"
],
"natural_language_entry_contract": {
"state": "DESKTOP_SOURCE_MOUNTED_NOT_REAL_MANIFEST_BOUND_NOT_RUNTIME_ACCEPTED",
@ -123,10 +124,12 @@
"language_shell_controller_tests": "product-source/hololake-platform/src/lib/personaLanguageShellController.test.ts",
"persona_control_authorization_receipt": "product-source/hololake-platform/src/lib/personaControlAuthorization.ts",
"persona_control_authorization_receipt_tests": "product-source/hololake-platform/src/lib/personaControlAuthorization.test.ts",
"persona_control_authorization_status_projection_tests": "product-source/hololake-platform/src/lib/personaControlAuthorizationStatus.test.ts",
"desktop_language_shell": "product-source/hololake-platform/src/components/PersonaLanguageShellPanel.tsx",
"desktop_language_shell_tests": "product-source/hololake-platform/src/components/PersonaLanguageShellPanel.test.tsx",
"human_utterance_is_direct_command": false,
"caller_supplied_persona_authorization_boolean_allowed": false,
"candidate_authorization_receipt_source_mounted": false,
"required_before_capability_execution": [
"RESTORE_REAL_PURPOSE_FROM_CONTEXT",
"ASSESS_REQUEST_VALIDITY",
@ -176,7 +179,9 @@
"native_persona_control_authorization_registry_loader_source_integrated": 100,
"native_persona_control_authorization_receipt_verifier_source_integrated": 100,
"native_persona_control_authorization_verifier_wired_to_language_controller_source": 100,
"persona_control_authorization_read_only_status_projection_source_integrated": 100,
"persona_control_authorization_trusted_signer_registered": 0,
"persona_control_authorization_candidate_receipt_source_mounted": 0,
"desktop_language_entry_source_integrated": 100,
"persona_control_authorization_runtime_integrated": 0,
"real_persona_repository_manifest_bound": 0,

View file

@ -14,7 +14,7 @@ const age = readJson("routing/hololake-age-runtime-architecture.json");
const rules = readJson("routing/hololake-engineering-rules.json");
test("B0 is restored before product organs and remains resident in every cognition step", () => {
assert.equal(architecture.version, "2026-08-12.15");
assert.equal(architecture.version, "2026-08-12.16");
assert.equal(
architecture.read_order[1],
architecture.cognitive_gravity_and_continuity.architecture_page,
@ -102,7 +102,9 @@ test("the first implementation stage is one vertical AGE loop, not Mirror parall
assert.equal(gravity.truth.native_persona_control_authorization_registry_loader_source_integrated, 100);
assert.equal(gravity.truth.native_persona_control_authorization_receipt_verifier_source_integrated, 100);
assert.equal(gravity.truth.native_persona_control_authorization_verifier_wired_to_language_controller_source, 100);
assert.equal(gravity.truth.persona_control_authorization_read_only_status_projection_source_integrated, 100);
assert.equal(gravity.truth.persona_control_authorization_trusted_signer_registered, 0);
assert.equal(gravity.truth.persona_control_authorization_candidate_receipt_source_mounted, 0);
assert.equal(gravity.truth.desktop_language_entry_source_integrated, 100);
assert.equal(gravity.truth.persona_control_authorization_runtime_integrated, 0);
assert.equal(architecture.interaction_model.source_contract.receipt_shape_validation_is_authority_proof, false);
@ -113,6 +115,8 @@ test("the first implementation stage is one vertical AGE loop, not Mirror parall
assert.equal(architecture.interaction_model.source_contract.native_authorization_registry_loader_integrated, true);
assert.equal(architecture.interaction_model.source_contract.native_authorization_receipt_loader_integrated, true);
assert.equal(architecture.interaction_model.source_contract.native_authorization_verifier_wired_to_language_controller, true);
assert.equal(architecture.interaction_model.source_contract.read_only_empty_trust_status_projection_integrated, true);
assert.equal(architecture.interaction_model.source_contract.candidate_authorization_receipt_source_mounted, false);
assert.equal(gravity.truth.real_persona_repository_manifest_bound, 0);
assert.equal(gravity.truth.natural_language_partner_adapter_runtime_integrated, 0);
assert.equal(gravity.truth.single_age_vertical_loop_implemented, 0);

View file

@ -1,7 +1,7 @@
{
"schema": "hololake.current-architecture/v1",
"architecture_id": "HLP-CURRENT-ARCH-001",
"version": "2026-08-12.15",
"version": "2026-08-12.16",
"state": "CURRENT_CANONICAL",
"product": {
"formal_name": "光湖语言系统 · 通用人工智能操作平台",
@ -122,7 +122,9 @@
"native_persona_control_authorization_registry_loader_source_integrated": true,
"native_persona_control_authorization_receipt_verifier_source_integrated": true,
"native_persona_control_authorization_verifier_wired_to_language_controller_source": true,
"persona_control_authorization_read_only_status_projection_source_integrated": true,
"persona_control_authorization_trusted_signer_registered": false,
"persona_control_authorization_candidate_receipt_source_mounted": false,
"desktop_language_entry_source_integrated": true,
"persona_control_authorization_runtime_integrated": false,
"real_persona_repository_manifest_bound": false,
@ -394,6 +396,7 @@
"pncc_lifecycle_adapter_tests": "product-source/hololake-platform/src/lib/personaLanguageGoal.test.ts",
"persona_control_authorization_receipt": "product-source/hololake-platform/src/lib/personaControlAuthorization.ts",
"persona_control_authorization_receipt_tests": "product-source/hololake-platform/src/lib/personaControlAuthorization.test.ts",
"persona_control_authorization_status_projection_tests": "product-source/hololake-platform/src/lib/personaControlAuthorizationStatus.test.ts",
"persona_control_authorization_signer_registry_and_verifier": "product-source/guanghu-knowledge-base/server/persona-control-authorization.ts",
"persona_control_authorization_signer_registry_and_verifier_tests": "product-source/guanghu-knowledge-base/server/persona-control-authorization.test.ts",
"native_persona_control_authorization_registry_loader": "product-source/hololake-platform/src-tauri/src/persona_control_authorization.rs",
@ -411,6 +414,8 @@
"native_authorization_registry_loader_integrated": true,
"native_authorization_receipt_loader_integrated": true,
"native_authorization_verifier_wired_to_language_controller": true,
"read_only_empty_trust_status_projection_integrated": true,
"candidate_authorization_receipt_source_mounted": false,
"partner_deliberation_required": true,
"human_utterance_is_direct_command": false,
"allowed_dispositions": [
@ -423,7 +428,8 @@
"authorization_focused_tests": "11_OF_11_PASS",
"language_controller_authorization_wiring_tests": "10_OF_10_PASS",
"authorization_cryptographic_tests": "7_OF_7_PASS",
"native_authorization_registry_and_receipt_verifier_tests": "6_OF_6_PASS"
"native_authorization_registry_and_receipt_verifier_tests": "6_OF_6_PASS",
"authorization_status_projection_tests": "6_OF_6_PASS"
},
"ui_plugin_system": {
"record_id": "HLP-HOT-PLUGGABLE-UI-001",

View file

@ -10,7 +10,7 @@ const architecture = readJson("routing/hololake-current-architecture.json");
const rules = readJson("routing/hololake-engineering-rules.json");
test("current architecture registers the global engineering rule set", () => {
assert.equal(architecture.version, "2026-08-12.4");
assert.equal(architecture.version, "2026-08-12.16");
assert.equal(architecture.engineering_rules.rule_set_id, "HLP-ENGINEERING-RULES-001");
assert.equal(architecture.engineering_rules.machine_projection,
"routing/hololake-engineering-rules.json");

View file

@ -10,7 +10,7 @@ const architecture = readJson("routing/hololake-current-architecture.json");
const projection = readJson("routing/hololake-identity-authority-map.json");
test("current architecture loads identity authority before product surfaces", () => {
assert.equal(architecture.version, "2026-08-12.4");
assert.equal(architecture.version, "2026-08-12.16");
assert.equal(architecture.identity_and_authority.team_body, "TCS-0002");
assert.equal(architecture.identity_and_authority.team_body_authority_effective, true);
assert.equal(architecture.identity_and_authority.individual_operator_acceptance, "SEPARATE_UNCONFIRMED");

View file

@ -10,7 +10,7 @@ const architecture = readJson("routing/hololake-current-architecture.json");
const rules = readJson("routing/hololake-engineering-rules.json");
test("current architecture makes one human one independently operated node canonical", () => {
assert.equal(architecture.version, "2026-08-12.4");
assert.equal(architecture.version, "2026-08-12.16");
assert.deepEqual(architecture.access_modes, [
"LOCAL_TERMINAL_NODE",
"USER_OWNED_REMOTE_NODE",

View file

@ -10,7 +10,7 @@ const architecture = readJson("routing/hololake-current-architecture.json");
const paradigm = readJson("routing/hololake-paradigm-ai-language-persona-os.json");
test("current architecture begins with the paradigm OS contract", () => {
assert.equal(architecture.version, "2026-08-12.4");
assert.equal(architecture.version, "2026-08-12.16");
assert.equal(architecture.paradigm_ai_language_persona_os.record_id, "HLP-PARADIGM-AI-LANGUAGE-PERSONA-OS-001");
assert.equal(architecture.read_order[0], architecture.paradigm_ai_language_persona_os.architecture_page);
assert.equal(paradigm.upstream.repository_commit, "34cb59739b6476981375dd62ef395ea649f56246");

View file

@ -11,7 +11,7 @@ const architecture = readJson("routing/hololake-current-architecture.json");
const channel = readJson("routing/hololake-persona-native-code-channel.json");
test("current architecture places the persona-native code channel after the paradigm contract", () => {
assert.equal(architecture.version, "2026-08-12.4");
assert.equal(architecture.version, "2026-08-12.16");
assert.equal(
architecture.persona_native_code_channel.record_id,
"HLP-PERSONA-NATIVE-CODE-CHANNEL-001",

View file

@ -10,7 +10,7 @@ const architecture = JSON.parse(
);
test("current architecture binds relational consciousness before product surfaces", () => {
assert.equal(architecture.version, "2026-08-12.4");
assert.equal(architecture.version, "2026-08-12.16");
assert.equal(
architecture.persona_consciousness.record_id,
"HLP-RELATIONAL-CONSCIOUSNESS-001",

View file

@ -10,7 +10,7 @@ const architecture = JSON.parse(
);
test("current architecture restores the digital BingShuo system body first", () => {
assert.equal(architecture.version, "2026-08-12.4");
assert.equal(architecture.version, "2026-08-12.16");
assert.equal(architecture.digital_bingshuo_system_body.upstream_repository_commit,
"69d1910775533b02b17b82e647b5caca8b835614");
const systemBodyIndex = architecture.read_order.indexOf(