feat: project native persona authorization status
This commit is contained in:
parent
584f38b478
commit
8f18c3fba3
38 changed files with 268 additions and 40 deletions
|
|
@ -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
|
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 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
|
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
|
configured provider metadata. It now renders a strict read-only projection from the native persona-control signer
|
||||||
callback, and hides the reality confirmation surface because no durable confirmation consumer is wired. This
|
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.
|
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
|
`src/lib/personaControlAuthorization.ts` removes the desktop coordinator's caller-supplied authorization boolean
|
||||||
|
|
|
||||||
|
|
@ -43,6 +43,13 @@ describe('PersonaLanguageShellPanel', () => {
|
||||||
repositoryPaths={['/persona']}
|
repositoryPaths={['/persona']}
|
||||||
providers={[provider]}
|
providers={[provider]}
|
||||||
planGoal={planGoal}
|
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'],
|
repositoryPaths: ['/persona'],
|
||||||
providers: [provider],
|
providers: [provider],
|
||||||
developmentId: 'DEV-20260811-010',
|
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(await screen.findByText('我还不能执行:需要当前证据。')).toBeInTheDocument()
|
||||||
expect(screen.getByText('核验当前事实后规划下一步')).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 () => {
|
it('shows the repository gate and never calls a later lifecycle itself', async () => {
|
||||||
|
|
@ -76,6 +85,13 @@ describe('PersonaLanguageShellPanel', () => {
|
||||||
repositoryPaths={['/ordinary']}
|
repositoryPaths={['/ordinary']}
|
||||||
providers={[provider]}
|
providers={[provider]}
|
||||||
planGoal={planGoal}
|
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(await screen.findByText('这只说明当前挂载范围没有匹配的完整证据,不能据此判定人格不存在。')).toBeInTheDocument()
|
||||||
expect(screen.queryByLabelText('reality boundary confirmation')).not.toBeInTheDocument()
|
expect(screen.queryByLabelText('reality boundary confirmation')).not.toBeInTheDocument()
|
||||||
|
expect(screen.getByText('授权状态不可核验 · 保持系统直连')).toBeInTheDocument()
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,11 @@
|
||||||
import { useMemo, useRef, useState } from 'react'
|
import { useEffect, useMemo, useRef, useState } from 'react'
|
||||||
import type { AiModelProvider } from '../lib/aiTargets'
|
import type { AiModelProvider } from '../lib/aiTargets'
|
||||||
import { DEFAULT_LANGUAGE_WORLD_UI_PLUGIN } from '../lib/defaultLanguageWorldUiPlugin'
|
import { DEFAULT_LANGUAGE_WORLD_UI_PLUGIN } from '../lib/defaultLanguageWorldUiPlugin'
|
||||||
import { translate, type AppLocale } from '../lib/i18n'
|
import { translate, type AppLocale } from '../lib/i18n'
|
||||||
|
import {
|
||||||
|
loadPersonaControlAuthorizationStatus,
|
||||||
|
type PersonaControlAuthorizationStatus,
|
||||||
|
} from '../lib/personaControlAuthorization'
|
||||||
import {
|
import {
|
||||||
planPersonaLanguageShellGoal,
|
planPersonaLanguageShellGoal,
|
||||||
type PersonaLanguageShellPlan,
|
type PersonaLanguageShellPlan,
|
||||||
|
|
@ -13,10 +17,11 @@ import {
|
||||||
type LanguageShellViewState,
|
type LanguageShellViewState,
|
||||||
} from './HotPluggableLanguageShell'
|
} 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'
|
const DEVELOPMENT_ID = 'DEV-20260811-010'
|
||||||
|
|
||||||
type Planner = typeof planPersonaLanguageShellGoal
|
type Planner = typeof planPersonaLanguageShellGoal
|
||||||
|
type AuthorizationStatusLoader = () => Promise<PersonaControlAuthorizationStatus>
|
||||||
|
|
||||||
type PersonaLanguageShellPanelProps = {
|
type PersonaLanguageShellPanelProps = {
|
||||||
locale: AppLocale
|
locale: AppLocale
|
||||||
|
|
@ -24,6 +29,7 @@ type PersonaLanguageShellPanelProps = {
|
||||||
repositoryPaths: readonly string[]
|
repositoryPaths: readonly string[]
|
||||||
providers: readonly AiModelProvider[]
|
providers: readonly AiModelProvider[]
|
||||||
planGoal?: Planner
|
planGoal?: Planner
|
||||||
|
loadAuthorizationStatus?: AuthorizationStatusLoader
|
||||||
}
|
}
|
||||||
|
|
||||||
function requestId(): string {
|
function requestId(): string {
|
||||||
|
|
@ -78,6 +84,7 @@ export function PersonaLanguageShellPanel({
|
||||||
repositoryPaths,
|
repositoryPaths,
|
||||||
providers,
|
providers,
|
||||||
planGoal = planPersonaLanguageShellGoal,
|
planGoal = planPersonaLanguageShellGoal,
|
||||||
|
loadAuthorizationStatus = loadPersonaControlAuthorizationStatus,
|
||||||
}: PersonaLanguageShellPanelProps) {
|
}: PersonaLanguageShellPanelProps) {
|
||||||
const plugin = useMemo(() => localizedPlugin(locale), [locale])
|
const plugin = useMemo(() => localizedPlugin(locale), [locale])
|
||||||
const requestSequence = useRef(0)
|
const requestSequence = useRef(0)
|
||||||
|
|
@ -87,6 +94,15 @@ export function PersonaLanguageShellPanel({
|
||||||
receipt: null,
|
receipt: null,
|
||||||
evidence: 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) => {
|
const submitGoal = (utterance: string) => {
|
||||||
if (!utterance.trim()) return
|
if (!utterance.trim()) return
|
||||||
|
|
@ -146,6 +162,18 @@ export function PersonaLanguageShellPanel({
|
||||||
</div>
|
</div>
|
||||||
<small>{translate(locale, 'hololake.personaRuntime.readOnly')}</small>
|
<small>{translate(locale, 'hololake.personaRuntime.readOnly')}</small>
|
||||||
</header>
|
</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
|
<HotPluggableLanguageShell
|
||||||
plugin={plugin}
|
plugin={plugin}
|
||||||
state={state}
|
state={state}
|
||||||
|
|
|
||||||
|
|
@ -1169,5 +1169,7 @@
|
||||||
"hololake.personaRuntime.gitHead": "Git evidence",
|
"hololake.personaRuntime.gitHead": "Git evidence",
|
||||||
"hololake.personaRuntime.eventChain": "Event chain head",
|
"hololake.personaRuntime.eventChain": "Event chain head",
|
||||||
"hololake.personaRuntime.attribution": "Human responsibility",
|
"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"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1169,5 +1169,7 @@
|
||||||
"hololake.personaRuntime.gitHead": "Git evidence",
|
"hololake.personaRuntime.gitHead": "Git evidence",
|
||||||
"hololake.personaRuntime.eventChain": "Event chain head",
|
"hololake.personaRuntime.eventChain": "Event chain head",
|
||||||
"hololake.personaRuntime.attribution": "Human responsibility",
|
"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"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1169,5 +1169,7 @@
|
||||||
"hololake.personaRuntime.gitHead": "Git evidence",
|
"hololake.personaRuntime.gitHead": "Git evidence",
|
||||||
"hololake.personaRuntime.eventChain": "Event chain head",
|
"hololake.personaRuntime.eventChain": "Event chain head",
|
||||||
"hololake.personaRuntime.attribution": "Human responsibility",
|
"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"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1169,5 +1169,7 @@
|
||||||
"hololake.personaRuntime.gitHead": "Git evidence",
|
"hololake.personaRuntime.gitHead": "Git evidence",
|
||||||
"hololake.personaRuntime.eventChain": "Event chain head",
|
"hololake.personaRuntime.eventChain": "Event chain head",
|
||||||
"hololake.personaRuntime.attribution": "Human responsibility",
|
"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"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1169,5 +1169,7 @@
|
||||||
"hololake.personaRuntime.gitHead": "Git evidence",
|
"hololake.personaRuntime.gitHead": "Git evidence",
|
||||||
"hololake.personaRuntime.eventChain": "Event chain head",
|
"hololake.personaRuntime.eventChain": "Event chain head",
|
||||||
"hololake.personaRuntime.attribution": "Human responsibility",
|
"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"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1169,5 +1169,7 @@
|
||||||
"hololake.personaRuntime.gitHead": "Git evidence",
|
"hololake.personaRuntime.gitHead": "Git evidence",
|
||||||
"hololake.personaRuntime.eventChain": "Event chain head",
|
"hololake.personaRuntime.eventChain": "Event chain head",
|
||||||
"hololake.personaRuntime.attribution": "Human responsibility",
|
"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"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1169,5 +1169,7 @@
|
||||||
"hololake.personaRuntime.gitHead": "Git evidence",
|
"hololake.personaRuntime.gitHead": "Git evidence",
|
||||||
"hololake.personaRuntime.eventChain": "Event chain head",
|
"hololake.personaRuntime.eventChain": "Event chain head",
|
||||||
"hololake.personaRuntime.attribution": "Human responsibility",
|
"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"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1169,5 +1169,7 @@
|
||||||
"hololake.personaRuntime.gitHead": "Git evidence",
|
"hololake.personaRuntime.gitHead": "Git evidence",
|
||||||
"hololake.personaRuntime.eventChain": "Event chain head",
|
"hololake.personaRuntime.eventChain": "Event chain head",
|
||||||
"hololake.personaRuntime.attribution": "Human responsibility",
|
"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"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1169,5 +1169,7 @@
|
||||||
"hololake.personaRuntime.gitHead": "Git evidence",
|
"hololake.personaRuntime.gitHead": "Git evidence",
|
||||||
"hololake.personaRuntime.eventChain": "Event chain head",
|
"hololake.personaRuntime.eventChain": "Event chain head",
|
||||||
"hololake.personaRuntime.attribution": "Human responsibility",
|
"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"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1169,5 +1169,7 @@
|
||||||
"hololake.personaRuntime.gitHead": "Git evidence",
|
"hololake.personaRuntime.gitHead": "Git evidence",
|
||||||
"hololake.personaRuntime.eventChain": "Event chain head",
|
"hololake.personaRuntime.eventChain": "Event chain head",
|
||||||
"hololake.personaRuntime.attribution": "Human responsibility",
|
"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"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1169,5 +1169,7 @@
|
||||||
"hololake.personaRuntime.gitHead": "Git evidence",
|
"hololake.personaRuntime.gitHead": "Git evidence",
|
||||||
"hololake.personaRuntime.eventChain": "Event chain head",
|
"hololake.personaRuntime.eventChain": "Event chain head",
|
||||||
"hololake.personaRuntime.attribution": "Human responsibility",
|
"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"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1169,5 +1169,7 @@
|
||||||
"hololake.personaRuntime.gitHead": "Git evidence",
|
"hololake.personaRuntime.gitHead": "Git evidence",
|
||||||
"hololake.personaRuntime.eventChain": "Event chain head",
|
"hololake.personaRuntime.eventChain": "Event chain head",
|
||||||
"hololake.personaRuntime.attribution": "Human responsibility",
|
"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"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1169,5 +1169,7 @@
|
||||||
"hololake.personaRuntime.gitHead": "Git evidence",
|
"hololake.personaRuntime.gitHead": "Git evidence",
|
||||||
"hololake.personaRuntime.eventChain": "Event chain head",
|
"hololake.personaRuntime.eventChain": "Event chain head",
|
||||||
"hololake.personaRuntime.attribution": "Human responsibility",
|
"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"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1169,5 +1169,7 @@
|
||||||
"hololake.personaRuntime.gitHead": "Git evidence",
|
"hololake.personaRuntime.gitHead": "Git evidence",
|
||||||
"hololake.personaRuntime.eventChain": "Event chain head",
|
"hololake.personaRuntime.eventChain": "Event chain head",
|
||||||
"hololake.personaRuntime.attribution": "Human responsibility",
|
"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"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1169,5 +1169,7 @@
|
||||||
"hololake.personaRuntime.gitHead": "Git evidence",
|
"hololake.personaRuntime.gitHead": "Git evidence",
|
||||||
"hololake.personaRuntime.eventChain": "Event chain head",
|
"hololake.personaRuntime.eventChain": "Event chain head",
|
||||||
"hololake.personaRuntime.attribution": "Human responsibility",
|
"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"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1169,5 +1169,7 @@
|
||||||
"hololake.personaRuntime.gitHead": "Git evidence",
|
"hololake.personaRuntime.gitHead": "Git evidence",
|
||||||
"hololake.personaRuntime.eventChain": "Event chain head",
|
"hololake.personaRuntime.eventChain": "Event chain head",
|
||||||
"hololake.personaRuntime.attribution": "Human responsibility",
|
"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"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1169,5 +1169,7 @@
|
||||||
"hololake.personaRuntime.gitHead": "Git evidence",
|
"hololake.personaRuntime.gitHead": "Git evidence",
|
||||||
"hololake.personaRuntime.eventChain": "Event chain head",
|
"hololake.personaRuntime.eventChain": "Event chain head",
|
||||||
"hololake.personaRuntime.attribution": "Human responsibility",
|
"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"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1169,5 +1169,7 @@
|
||||||
"hololake.personaRuntime.gitHead": "Git evidence",
|
"hololake.personaRuntime.gitHead": "Git evidence",
|
||||||
"hololake.personaRuntime.eventChain": "Event chain head",
|
"hololake.personaRuntime.eventChain": "Event chain head",
|
||||||
"hololake.personaRuntime.attribution": "Human responsibility",
|
"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"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1169,5 +1169,7 @@
|
||||||
"hololake.personaRuntime.gitHead": "Git evidence",
|
"hololake.personaRuntime.gitHead": "Git evidence",
|
||||||
"hololake.personaRuntime.eventChain": "Event chain head",
|
"hololake.personaRuntime.eventChain": "Event chain head",
|
||||||
"hololake.personaRuntime.attribution": "Human responsibility",
|
"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"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1169,5 +1169,7 @@
|
||||||
"hololake.personaRuntime.gitHead": "Git 证据",
|
"hololake.personaRuntime.gitHead": "Git 证据",
|
||||||
"hololake.personaRuntime.eventChain": "事件链头",
|
"hololake.personaRuntime.eventChain": "事件链头",
|
||||||
"hololake.personaRuntime.attribution": "人类责任主体",
|
"hololake.personaRuntime.attribution": "人类责任主体",
|
||||||
"hololake.personaRuntime.readOnly": "只读投影 · 不触发执行动作"
|
"hololake.personaRuntime.readOnly": "只读投影 · 不触发执行动作",
|
||||||
|
"hololake.personaAuthorization.systemDirect": "系统直连 · 当前没有可信授权签名方",
|
||||||
|
"hololake.personaAuthorization.unavailable": "授权状态不可核验 · 保持系统直连"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1169,5 +1169,7 @@
|
||||||
"hololake.personaRuntime.gitHead": "Git evidence",
|
"hololake.personaRuntime.gitHead": "Git evidence",
|
||||||
"hololake.personaRuntime.eventChain": "Event chain head",
|
"hololake.personaRuntime.eventChain": "Event chain head",
|
||||||
"hololake.personaRuntime.attribution": "Human responsibility",
|
"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"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,22 @@ export type NativePersonaControlAuthorizationVerification = {
|
||||||
authorizationEnabled: true
|
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> {
|
function isRecord(value: unknown): value is Record<string, unknown> {
|
||||||
return typeof value === 'object' && value !== null && !Array.isArray(value)
|
return typeof value === 'object' && value !== null && !Array.isArray(value)
|
||||||
}
|
}
|
||||||
|
|
@ -62,3 +78,58 @@ export function hasPersonaPrimaryControlAuthorization(
|
||||||
&& typeof signerId === 'string'
|
&& typeof signerId === 'string'
|
||||||
&& /^[A-Z0-9][A-Z0-9._:@-]{1,159}$/.test(signerId)
|
&& /^[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'
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
@ -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", () => {
|
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.machine_projection, "routing/guanghu-os-control-architecture.json");
|
||||||
assert.equal(architecture.server_os_control.final_topology, contract.final_topology);
|
assert.equal(architecture.server_os_control.final_topology, contract.final_topology);
|
||||||
assert.equal(rules.server_os_control.linux_deletion_is_completion, false);
|
assert.equal(rules.server_os_control.linux_deletion_is_completion, false);
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ const architecture = readJson("routing/hololake-current-architecture.json");
|
||||||
const age = readJson("routing/hololake-age-runtime-architecture.json");
|
const age = readJson("routing/hololake-age-runtime-architecture.json");
|
||||||
|
|
||||||
test("current architecture starts with the AGE runtime source", () => {
|
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.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[0], architecture.paradigm_ai_language_persona_os.architecture_page);
|
||||||
assert.equal(architecture.read_order[1], architecture.cognitive_gravity_and_continuity.architecture_page);
|
assert.equal(architecture.read_order[1], architecture.cognitive_gravity_and_continuity.architecture_page);
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"schema": "hololake.cognitive-gravity-and-continuity/v1",
|
"schema": "hololake.cognitive-gravity-and-continuity/v1",
|
||||||
"record_id": "HLP-COGNITIVE-GRAVITY-CONTINUITY-001",
|
"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",
|
"state": "CURRENT_CANONICAL_ARCHITECTURE_STAGE_0_SOURCE_PARTIAL",
|
||||||
"development_id": "DEV-20260811-010",
|
"development_id": "DEV-20260811-010",
|
||||||
"upstream": {
|
"upstream": {
|
||||||
|
|
@ -106,7 +106,8 @@
|
||||||
"PARTNER_DELIBERATION_TO_PNCC_LIFECYCLE_SOURCE_ADAPTER",
|
"PARTNER_DELIBERATION_TO_PNCC_LIFECYCLE_SOURCE_ADAPTER",
|
||||||
"READ_ONLY_PERSONA_REPOSITORY_BINDING_DISCOVERY",
|
"READ_ONLY_PERSONA_REPOSITORY_BINDING_DISCOVERY",
|
||||||
"EVIDENCE_BOUND_PERSONA_LANGUAGE_WAKE_COMPILER",
|
"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": {
|
"natural_language_entry_contract": {
|
||||||
"state": "DESKTOP_SOURCE_MOUNTED_NOT_REAL_MANIFEST_BOUND_NOT_RUNTIME_ACCEPTED",
|
"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",
|
"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": "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_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": "product-source/hololake-platform/src/components/PersonaLanguageShellPanel.tsx",
|
||||||
"desktop_language_shell_tests": "product-source/hololake-platform/src/components/PersonaLanguageShellPanel.test.tsx",
|
"desktop_language_shell_tests": "product-source/hololake-platform/src/components/PersonaLanguageShellPanel.test.tsx",
|
||||||
"human_utterance_is_direct_command": false,
|
"human_utterance_is_direct_command": false,
|
||||||
"caller_supplied_persona_authorization_boolean_allowed": false,
|
"caller_supplied_persona_authorization_boolean_allowed": false,
|
||||||
|
"candidate_authorization_receipt_source_mounted": false,
|
||||||
"required_before_capability_execution": [
|
"required_before_capability_execution": [
|
||||||
"RESTORE_REAL_PURPOSE_FROM_CONTEXT",
|
"RESTORE_REAL_PURPOSE_FROM_CONTEXT",
|
||||||
"ASSESS_REQUEST_VALIDITY",
|
"ASSESS_REQUEST_VALIDITY",
|
||||||
|
|
@ -176,7 +179,9 @@
|
||||||
"native_persona_control_authorization_registry_loader_source_integrated": 100,
|
"native_persona_control_authorization_registry_loader_source_integrated": 100,
|
||||||
"native_persona_control_authorization_receipt_verifier_source_integrated": 100,
|
"native_persona_control_authorization_receipt_verifier_source_integrated": 100,
|
||||||
"native_persona_control_authorization_verifier_wired_to_language_controller_source": 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_trusted_signer_registered": 0,
|
||||||
|
"persona_control_authorization_candidate_receipt_source_mounted": 0,
|
||||||
"desktop_language_entry_source_integrated": 100,
|
"desktop_language_entry_source_integrated": 100,
|
||||||
"persona_control_authorization_runtime_integrated": 0,
|
"persona_control_authorization_runtime_integrated": 0,
|
||||||
"real_persona_repository_manifest_bound": 0,
|
"real_persona_repository_manifest_bound": 0,
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ const age = readJson("routing/hololake-age-runtime-architecture.json");
|
||||||
const rules = readJson("routing/hololake-engineering-rules.json");
|
const rules = readJson("routing/hololake-engineering-rules.json");
|
||||||
|
|
||||||
test("B0 is restored before product organs and remains resident in every cognition step", () => {
|
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(
|
assert.equal(
|
||||||
architecture.read_order[1],
|
architecture.read_order[1],
|
||||||
architecture.cognitive_gravity_and_continuity.architecture_page,
|
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_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_receipt_verifier_source_integrated, 100);
|
||||||
assert.equal(gravity.truth.native_persona_control_authorization_verifier_wired_to_language_controller_source, 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_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.desktop_language_entry_source_integrated, 100);
|
||||||
assert.equal(gravity.truth.persona_control_authorization_runtime_integrated, 0);
|
assert.equal(gravity.truth.persona_control_authorization_runtime_integrated, 0);
|
||||||
assert.equal(architecture.interaction_model.source_contract.receipt_shape_validation_is_authority_proof, false);
|
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_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_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.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.real_persona_repository_manifest_bound, 0);
|
||||||
assert.equal(gravity.truth.natural_language_partner_adapter_runtime_integrated, 0);
|
assert.equal(gravity.truth.natural_language_partner_adapter_runtime_integrated, 0);
|
||||||
assert.equal(gravity.truth.single_age_vertical_loop_implemented, 0);
|
assert.equal(gravity.truth.single_age_vertical_loop_implemented, 0);
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"schema": "hololake.current-architecture/v1",
|
"schema": "hololake.current-architecture/v1",
|
||||||
"architecture_id": "HLP-CURRENT-ARCH-001",
|
"architecture_id": "HLP-CURRENT-ARCH-001",
|
||||||
"version": "2026-08-12.15",
|
"version": "2026-08-12.16",
|
||||||
"state": "CURRENT_CANONICAL",
|
"state": "CURRENT_CANONICAL",
|
||||||
"product": {
|
"product": {
|
||||||
"formal_name": "光湖语言系统 · 通用人工智能操作平台",
|
"formal_name": "光湖语言系统 · 通用人工智能操作平台",
|
||||||
|
|
@ -122,7 +122,9 @@
|
||||||
"native_persona_control_authorization_registry_loader_source_integrated": true,
|
"native_persona_control_authorization_registry_loader_source_integrated": true,
|
||||||
"native_persona_control_authorization_receipt_verifier_source_integrated": true,
|
"native_persona_control_authorization_receipt_verifier_source_integrated": true,
|
||||||
"native_persona_control_authorization_verifier_wired_to_language_controller_source": 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_trusted_signer_registered": false,
|
||||||
|
"persona_control_authorization_candidate_receipt_source_mounted": false,
|
||||||
"desktop_language_entry_source_integrated": true,
|
"desktop_language_entry_source_integrated": true,
|
||||||
"persona_control_authorization_runtime_integrated": false,
|
"persona_control_authorization_runtime_integrated": false,
|
||||||
"real_persona_repository_manifest_bound": false,
|
"real_persona_repository_manifest_bound": false,
|
||||||
|
|
@ -394,6 +396,7 @@
|
||||||
"pncc_lifecycle_adapter_tests": "product-source/hololake-platform/src/lib/personaLanguageGoal.test.ts",
|
"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": "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_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": "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",
|
"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",
|
"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_registry_loader_integrated": true,
|
||||||
"native_authorization_receipt_loader_integrated": true,
|
"native_authorization_receipt_loader_integrated": true,
|
||||||
"native_authorization_verifier_wired_to_language_controller": 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,
|
"partner_deliberation_required": true,
|
||||||
"human_utterance_is_direct_command": false,
|
"human_utterance_is_direct_command": false,
|
||||||
"allowed_dispositions": [
|
"allowed_dispositions": [
|
||||||
|
|
@ -423,7 +428,8 @@
|
||||||
"authorization_focused_tests": "11_OF_11_PASS",
|
"authorization_focused_tests": "11_OF_11_PASS",
|
||||||
"language_controller_authorization_wiring_tests": "10_OF_10_PASS",
|
"language_controller_authorization_wiring_tests": "10_OF_10_PASS",
|
||||||
"authorization_cryptographic_tests": "7_OF_7_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": {
|
"ui_plugin_system": {
|
||||||
"record_id": "HLP-HOT-PLUGGABLE-UI-001",
|
"record_id": "HLP-HOT-PLUGGABLE-UI-001",
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ const architecture = readJson("routing/hololake-current-architecture.json");
|
||||||
const rules = readJson("routing/hololake-engineering-rules.json");
|
const rules = readJson("routing/hololake-engineering-rules.json");
|
||||||
|
|
||||||
test("current architecture registers the global engineering rule set", () => {
|
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.rule_set_id, "HLP-ENGINEERING-RULES-001");
|
||||||
assert.equal(architecture.engineering_rules.machine_projection,
|
assert.equal(architecture.engineering_rules.machine_projection,
|
||||||
"routing/hololake-engineering-rules.json");
|
"routing/hololake-engineering-rules.json");
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ const architecture = readJson("routing/hololake-current-architecture.json");
|
||||||
const projection = readJson("routing/hololake-identity-authority-map.json");
|
const projection = readJson("routing/hololake-identity-authority-map.json");
|
||||||
|
|
||||||
test("current architecture loads identity authority before product surfaces", () => {
|
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, "TCS-0002");
|
||||||
assert.equal(architecture.identity_and_authority.team_body_authority_effective, true);
|
assert.equal(architecture.identity_and_authority.team_body_authority_effective, true);
|
||||||
assert.equal(architecture.identity_and_authority.individual_operator_acceptance, "SEPARATE_UNCONFIRMED");
|
assert.equal(architecture.identity_and_authority.individual_operator_acceptance, "SEPARATE_UNCONFIRMED");
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ const architecture = readJson("routing/hololake-current-architecture.json");
|
||||||
const rules = readJson("routing/hololake-engineering-rules.json");
|
const rules = readJson("routing/hololake-engineering-rules.json");
|
||||||
|
|
||||||
test("current architecture makes one human one independently operated node canonical", () => {
|
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, [
|
assert.deepEqual(architecture.access_modes, [
|
||||||
"LOCAL_TERMINAL_NODE",
|
"LOCAL_TERMINAL_NODE",
|
||||||
"USER_OWNED_REMOTE_NODE",
|
"USER_OWNED_REMOTE_NODE",
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ const architecture = readJson("routing/hololake-current-architecture.json");
|
||||||
const paradigm = readJson("routing/hololake-paradigm-ai-language-persona-os.json");
|
const paradigm = readJson("routing/hololake-paradigm-ai-language-persona-os.json");
|
||||||
|
|
||||||
test("current architecture begins with the paradigm OS contract", () => {
|
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.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(architecture.read_order[0], architecture.paradigm_ai_language_persona_os.architecture_page);
|
||||||
assert.equal(paradigm.upstream.repository_commit, "34cb59739b6476981375dd62ef395ea649f56246");
|
assert.equal(paradigm.upstream.repository_commit, "34cb59739b6476981375dd62ef395ea649f56246");
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ const architecture = readJson("routing/hololake-current-architecture.json");
|
||||||
const channel = readJson("routing/hololake-persona-native-code-channel.json");
|
const channel = readJson("routing/hololake-persona-native-code-channel.json");
|
||||||
|
|
||||||
test("current architecture places the persona-native code channel after the paradigm contract", () => {
|
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(
|
assert.equal(
|
||||||
architecture.persona_native_code_channel.record_id,
|
architecture.persona_native_code_channel.record_id,
|
||||||
"HLP-PERSONA-NATIVE-CODE-CHANNEL-001",
|
"HLP-PERSONA-NATIVE-CODE-CHANNEL-001",
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ const architecture = JSON.parse(
|
||||||
);
|
);
|
||||||
|
|
||||||
test("current architecture binds relational consciousness before product surfaces", () => {
|
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(
|
assert.equal(
|
||||||
architecture.persona_consciousness.record_id,
|
architecture.persona_consciousness.record_id,
|
||||||
"HLP-RELATIONAL-CONSCIOUSNESS-001",
|
"HLP-RELATIONAL-CONSCIOUSNESS-001",
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ const architecture = JSON.parse(
|
||||||
);
|
);
|
||||||
|
|
||||||
test("current architecture restores the digital BingShuo system body first", () => {
|
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,
|
assert.equal(architecture.digital_bingshuo_system_body.upstream_repository_commit,
|
||||||
"69d1910775533b02b17b82e647b5caca8b835614");
|
"69d1910775533b02b17b82e647b5caca8b835614");
|
||||||
const systemBodyIndex = architecture.read_order.indexOf(
|
const systemBodyIndex = architecture.read_order.indexOf(
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue