feat: project verified PNCC runtime into HoloLake

This commit is contained in:
冰朔 2026-08-11 11:56:54 +08:00
commit 0c80296593
33 changed files with 1265 additions and 24 deletions

View file

@ -1530,6 +1530,7 @@ body.mac-chrome .hololake-bar { padding-left: 92px; }
.fifth-system-inspector {
display: flex;
min-width: 0;
overflow-y: auto;
flex-direction: column;
gap: 22px;
padding: 28px 24px 20px;
@ -1587,6 +1588,36 @@ body.mac-chrome .hololake-bar { padding-left: 92px; }
.fifth-system-inspector__overview h2 { margin: 0; font: 500 20px/1.25 "Songti SC", "STSong", serif; }
.fifth-system-inspector__overview p { margin: 0; color: var(--world-muted); font-size: 12px; line-height: 1.7; }
.fifth-system-inspector footer { margin-top: auto; color: var(--world-faint); font-size: 11px; line-height: 1.6; }
.persona-runtime-projection {
display: grid;
gap: 14px;
padding: 16px;
border: 1px solid var(--world-border);
border-radius: 12px;
background: color-mix(in srgb, var(--world-surface) 82%, transparent);
}
.persona-runtime-projection > header { display: grid; gap: 9px; padding: 0 0 13px; }
.persona-runtime-projection > header > div { display: grid; gap: 5px; }
.persona-runtime-projection > header span { color: var(--world-accent); font: 9px/1.2 ui-monospace, SFMono-Regular, Menlo, monospace; letter-spacing: .12em; }
.persona-runtime-projection > header h3 { margin: 0; font-size: 16px; }
.persona-runtime-projection > header p { margin: 0; color: var(--world-muted); font-size: 11px; line-height: 1.55; }
.persona-runtime-projection > header > small { color: var(--world-faint); font-size: 10px; }
.persona-runtime-projection__message { display: grid; gap: 8px; color: var(--world-muted); font-size: 12px; line-height: 1.55; }
.persona-runtime-projection__message p { margin: 0; }
.persona-runtime-projection__message i { width: 7px; height: 7px; border-radius: 50%; background: var(--world-live); box-shadow: 0 0 8px var(--world-live); }
.persona-runtime-projection__message--error { color: var(--destructive); }
.persona-runtime-projection__message--error code { overflow: hidden; color: var(--world-faint); font-size: 10px; text-overflow: ellipsis; }
.persona-runtime-session { display: grid; gap: 12px; }
.persona-runtime-session > header { display: flex; align-items: start; justify-content: space-between; gap: 10px; }
.persona-runtime-session > header div { display: grid; gap: 4px; }
.persona-runtime-session > header span { color: var(--world-live); font-size: 15px; font-weight: 650; }
.persona-runtime-session > header code,
.persona-runtime-session > header small { color: var(--world-faint); font-size: 9px; }
.persona-runtime-session dl div { grid-template-columns: 92px minmax(0, 1fr); padding: 8px 0; }
.persona-runtime-session dd code { display: block; overflow: hidden; color: var(--world-muted); text-overflow: ellipsis; }
.persona-runtime-session > footer { display: flex; justify-content: space-between; gap: 12px; margin: 0; }
.persona-runtime-session > footer code,
.persona-runtime-session > footer span { overflow: hidden; color: var(--world-faint); font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }
.pufferfish-boundaries {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));

View file

@ -1712,7 +1712,7 @@ function MainApp({
</>
)}
<div className={`app__editor${aiActivity.highlightElement === 'editor' || aiActivity.highlightElement === 'tab' ? ' ai-highlight' : ''}`}>
{showHoloLakeHome && !isTeamDistribution ? <HoloLakeHome locale={appLocale} livingSystemTarget={aiFeaturesEnabled && quickPromptTargetReady && quickPromptTarget.kind === 'api_model' ? quickPromptTarget : null} onEnterKnowledgeBase={() => setShowHoloLakeHome(false)} onOpenAiWorkspace={openAIChat} onOpenLocalWorkspace={async () => {
{showHoloLakeHome && !isTeamDistribution ? <HoloLakeHome locale={appLocale} repositoryPaths={activeGitRepositoryPaths} livingSystemTarget={aiFeaturesEnabled && quickPromptTargetReady && quickPromptTarget.kind === 'api_model' ? quickPromptTarget : null} onEnterKnowledgeBase={() => setShowHoloLakeHome(false)} onOpenAiWorkspace={openAIChat} onOpenLocalWorkspace={async () => {
await vaultSwitcher.handleOpenLocalFolder()
setShowHoloLakeHome(false)
}} /> : <Editor

View file

@ -1,12 +1,16 @@
import { useState } from 'react'
import type { AppLocale } from '../lib/i18n'
import { Button } from './ui/button'
import { PersonaRuntimeProjectionPanel } from './PersonaRuntimeProjectionPanel'
type FifthDomainSystemId = 'pufferfish' | 'eternal-lake-heart'
type FifthDomainSystemsProps = {
detail?: 'overview' | 'pufferfish'
locale: AppLocale
onEnterEternalLake: () => void
onEnterPufferfish: () => void
repositoryPaths: readonly string[]
}
const PUFFERFISH_FACTS = {
@ -18,8 +22,10 @@ const PUFFERFISH_FACTS = {
export function FifthDomainSystems({
detail = 'overview',
locale,
onEnterEternalLake,
onEnterPufferfish,
repositoryPaths,
}: FifthDomainSystemsProps) {
const [selected, setSelected] = useState<FifthDomainSystemId | null>(
detail === 'pufferfish' ? 'pufferfish' : null,
@ -142,6 +148,11 @@ export function FifthDomainSystems({
<div><dt></dt><dd></dd></div>
<div><dt></dt><dd></dd></div>
</dl>
<PersonaRuntimeProjectionPanel
locale={locale}
personaId="ICE-P-ZY001"
repositoryPaths={repositoryPaths}
/>
<Button onClick={onEnterEternalLake}></Button>
</>
)}

View file

@ -46,6 +46,7 @@ type HoloLakeHomeProps = {
onOpenAiWorkspace?: () => void
onOpenLocalWorkspace?: () => void | Promise<void>
livingSystemTarget?: AiModelTarget | null
repositoryPaths?: readonly string[]
}
type ChannelRoute = GuanghuChannelRoute
@ -90,6 +91,7 @@ export function HoloLakeHome({
onOpenAiWorkspace,
onOpenLocalWorkspace,
livingSystemTarget,
repositoryPaths = [],
}: HoloLakeHomeProps) {
const initialRoute: ChannelRoute = isEducationWorkLakePath(window.location.pathname)
? 'education-work-lake'
@ -361,8 +363,10 @@ export function HoloLakeHome({
if (route === 'fifth-domain') {
return (
<FifthDomainSystems
locale={locale}
onEnterEternalLake={() => navigate('eternal-lake-heart')}
onEnterPufferfish={() => navigate('pufferfish')}
repositoryPaths={repositoryPaths}
/>
)
}
@ -371,8 +375,10 @@ export function HoloLakeHome({
return (
<FifthDomainSystems
detail="pufferfish"
locale={locale}
onEnterEternalLake={() => navigate('eternal-lake-heart')}
onEnterPufferfish={() => navigate('pufferfish')}
repositoryPaths={repositoryPaths}
/>
)
}

View file

@ -0,0 +1,120 @@
import { fireEvent, render, screen, waitFor } from '@testing-library/react'
import { beforeEach, describe, expect, it, vi } from 'vitest'
import { PersonaRuntimeProjectionPanel } from './PersonaRuntimeProjectionPanel'
const { loadPersonaRuntimeProjectionMock, trackEventMock } = vi.hoisted(() => ({
loadPersonaRuntimeProjectionMock: vi.fn(),
trackEventMock: vi.fn(),
}))
vi.mock('../lib/personaRuntimeProjection', () => ({
loadPersonaRuntimeProjection: loadPersonaRuntimeProjectionMock,
}))
vi.mock('../lib/telemetry', () => ({ trackEvent: trackEventMock }))
describe('PersonaRuntimeProjectionPanel', () => {
beforeEach(() => {
vi.clearAllMocks()
loadPersonaRuntimeProjectionMock.mockResolvedValue({
errors: [],
inspectedRepositoryCount: 1,
phase: 'verified',
sessions: [{
sessionId: 'PNCC-VERIFIED',
state: 'DORMANT',
gitHead: '1111111111111111111111111111111111111111',
nodeId: 'JD-FD-PRIMARY',
modelInstanceId: 'gpt-5-runtime-001',
activeOrgan: null,
eventCount: 8,
firstEventAt: '2026-08-11T01:00:00.000Z',
lastEventAt: '2026-08-11T02:00:00.000Z',
lastEvent: 'DORMANT',
eventChainHead: 'event-chain-verified',
repositoryPath: '/repo/persona',
observedGitHead: '1111111111111111111111111111111111111111',
repositoryClean: true,
attribution: {
humanResponsibilitySubject: 'BINGSHUO',
personaCognitiveAuthor: 'ICE-P-ZY001',
executionRuntime: 'ZY-TCS-BRAIN-RUNTIME-0001',
developmentId: 'DEV-20260811-003',
authorizationScope: 'LOCAL_READ_ONLY',
sourceLanguageAnchor: 'HLP-CURRENT-ARCH-001@2026-08-10.14',
},
}],
})
})
it('renders a human-readable state while keeping the native evidence visible', async () => {
render(
<PersonaRuntimeProjectionPanel
locale="zh-CN"
personaId="ICE-P-ZY001"
repositoryPaths={['/repo/persona']}
/>,
)
expect(screen.getByText('正在核验原生运行回执…')).toBeInTheDocument()
await waitFor(() => expect(screen.getByText('已归寝')).toBeInTheDocument())
expect(screen.getAllByText('DORMANT')).not.toHaveLength(0)
expect(screen.getByText('JD-FD-PRIMARY')).toBeInTheDocument()
expect(screen.getByText('event-chain-verified')).toBeInTheDocument()
expect(screen.getByText('1111111111111111111111111111111111111111')).toBeInTheDocument()
expect(trackEventMock).toHaveBeenCalledWith('persona_runtime_projection_loaded', {
error_count: 0,
inspected_repository_count: 1,
phase: 'verified',
session_count: 1,
})
})
it('states that no runtime was found instead of claiming the persona is offline', async () => {
loadPersonaRuntimeProjectionMock.mockResolvedValue({
errors: [],
inspectedRepositoryCount: 1,
phase: 'verified',
sessions: [],
})
render(
<PersonaRuntimeProjectionPanel
locale="zh-CN"
personaId="ICE-P-ZY001"
repositoryPaths={['/repo/persona']}
/>,
)
await waitFor(() => expect(screen.getByText('未发现可核验会话')).toBeInTheDocument())
expect(screen.getByText('这不等于人格离线;当前挂载仓库中没有匹配的原生事件链。')).toBeInTheDocument()
})
it('can retry a failed read without requesting an execution action', async () => {
loadPersonaRuntimeProjectionMock
.mockResolvedValueOnce({
errors: [{ code: 'PERSONA_RUNTIME_RECEIPT_INVALID', repositoryPath: '/repo/persona' }],
inspectedRepositoryCount: 0,
phase: 'error',
sessions: [],
})
.mockResolvedValueOnce({
errors: [],
inspectedRepositoryCount: 1,
phase: 'verified',
sessions: [],
})
render(
<PersonaRuntimeProjectionPanel
locale="zh-CN"
personaId="ICE-P-ZY001"
repositoryPaths={['/repo/persona']}
/>,
)
await waitFor(() => expect(screen.getByText('原生回执校验失败')).toBeInTheDocument())
fireEvent.click(screen.getByRole('button', { name: '重新核验' }))
await waitFor(() => expect(loadPersonaRuntimeProjectionMock).toHaveBeenCalledTimes(2))
expect(trackEventMock).toHaveBeenCalledWith('persona_runtime_projection_retry')
})
})

View file

@ -0,0 +1,156 @@
import { useCallback, useEffect, useMemo, useState } from 'react'
import { getLocaleDateLocale, translate, type AppLocale, type TranslationKey } from '../lib/i18n'
import {
loadPersonaRuntimeProjection,
type PersonaRuntimeProjection,
type PersonaRuntimeSessionProjection,
} from '../lib/personaRuntimeProjection'
import { trackEvent } from '../lib/telemetry'
import { Button } from './ui/button'
type PersonaRuntimeProjectionPanelProps = {
locale: AppLocale
personaId: string
repositoryPaths: readonly string[]
}
type PanelState = PersonaRuntimeProjection | { phase: 'checking' }
function stateTranslationKey(state: string): TranslationKey {
if (state.startsWith('DORMANT')) return 'hololake.personaRuntime.state.dormant'
if (state === 'INFERENCING') return 'hololake.personaRuntime.state.inferencing'
if (state === 'BOUND_NOT_INFERENCING') return 'hololake.personaRuntime.state.bound'
return 'hololake.personaRuntime.state.observed'
}
function shortHash(value: string): string {
return value.length > 12 ? value.slice(0, 12) : value
}
function RuntimeSessionEvidence({
locale,
session,
}: {
locale: AppLocale
session: PersonaRuntimeSessionProjection
}) {
const observedAt = new Intl.DateTimeFormat(getLocaleDateLocale(locale), {
dateStyle: 'medium',
timeStyle: 'short',
}).format(new Date(session.lastEventAt))
return (
<article className="persona-runtime-session">
<header>
<div>
<span>{translate(locale, stateTranslationKey(session.state))}</span>
<code>{session.state}</code>
</div>
<small>{translate(locale, 'hololake.personaRuntime.verified')}</small>
</header>
<dl>
<div><dt>{translate(locale, 'hololake.personaRuntime.rawState')}</dt><dd>{session.state}</dd></div>
<div><dt>{translate(locale, 'hololake.personaRuntime.lastEvent')}</dt><dd>{session.lastEvent}</dd></div>
<div><dt>{translate(locale, 'hololake.personaRuntime.activeOrgan')}</dt><dd>{session.activeOrgan ?? translate(locale, 'hololake.personaRuntime.noActiveOrgan')}</dd></div>
<div><dt>{translate(locale, 'hololake.personaRuntime.node')}</dt><dd>{session.nodeId}</dd></div>
<div><dt>{translate(locale, 'hololake.personaRuntime.lastObserved')}</dt><dd>{observedAt}</dd></div>
<div>
<dt>{translate(locale, 'hololake.personaRuntime.gitHead')}</dt>
<dd><code title={session.gitHead}>{session.gitHead}</code></dd>
</div>
<div>
<dt>{translate(locale, 'hololake.personaRuntime.eventChain')}</dt>
<dd><code title={session.eventChainHead}>{session.eventChainHead}</code></dd>
</div>
<div>
<dt>{translate(locale, 'hololake.personaRuntime.attribution')}</dt>
<dd>{session.attribution.humanResponsibilitySubject}</dd>
</div>
</dl>
<footer>
<code>{session.sessionId}</code>
<span>{shortHash(session.observedGitHead)}</span>
</footer>
</article>
)
}
export function PersonaRuntimeProjectionPanel({
locale,
personaId,
repositoryPaths,
}: PersonaRuntimeProjectionPanelProps) {
const [state, setState] = useState<PanelState>({ phase: 'checking' })
const [requestSequence, setRequestSequence] = useState(0)
const repositorySignature = useMemo(() => repositoryPaths.join('\u0000'), [repositoryPaths])
const refresh = useCallback(() => {
trackEvent('persona_runtime_projection_retry')
setState({ phase: 'checking' })
setRequestSequence((current) => current + 1)
}, [])
useEffect(() => {
let active = true
void loadPersonaRuntimeProjection({
personaId,
repositoryPaths: repositorySignature ? repositorySignature.split('\u0000') : [],
}).then((projection) => {
if (!active) return
setState(projection)
trackEvent('persona_runtime_projection_loaded', {
error_count: projection.errors.length,
inspected_repository_count: projection.inspectedRepositoryCount,
phase: projection.phase,
session_count: projection.sessions.length,
})
})
return () => {
active = false
}
}, [personaId, repositorySignature, requestSequence])
const latestSession = state.phase === 'verified' ? state.sessions[0] : undefined
return (
<section className="persona-runtime-projection" aria-labelledby="persona-runtime-title">
<header>
<div>
<span>GH-PNCC · {personaId}</span>
<h3 id="persona-runtime-title">{translate(locale, 'hololake.personaRuntime.title')}</h3>
<p>{translate(locale, 'hololake.personaRuntime.description')}</p>
</div>
<small>{translate(locale, 'hololake.personaRuntime.readOnly')}</small>
</header>
{state.phase === 'checking' ? (
<div className="persona-runtime-projection__message" aria-live="polite">
<i />{translate(locale, 'hololake.personaRuntime.checking')}
</div>
) : null}
{state.phase === 'unavailable' ? (
<div className="persona-runtime-projection__message">
{translate(locale, 'hololake.personaRuntime.unavailable')}
</div>
) : null}
{state.phase === 'error' ? (
<div className="persona-runtime-projection__message persona-runtime-projection__message--error" role="alert">
<strong>{translate(locale, 'hololake.personaRuntime.error')}</strong>
<code>{state.errors[0]?.code}</code>
<Button variant="outline" onClick={refresh}>{translate(locale, 'hololake.personaRuntime.retry')}</Button>
</div>
) : null}
{state.phase === 'verified' && !latestSession ? (
<div className="persona-runtime-projection__message">
<strong>{translate(locale, 'hololake.personaRuntime.empty')}</strong>
<p>{translate(locale, 'hololake.personaRuntime.emptyDescription')}</p>
</div>
) : null}
{latestSession ? <RuntimeSessionEvidence locale={locale} session={latestSession} /> : null}
</section>
)
}

View file

@ -1135,5 +1135,28 @@
"education.chart": "Chart",
"education.dashboard": "Dashboard",
"education.knowledge": "Knowledge",
"education.documentLabel": "Education document content"
"education.documentLabel": "Education document content",
"hololake.personaRuntime.title": "Persona runtime projection",
"hololake.personaRuntime.description": "A read-only human projection of verified GH-PNCC native event chains.",
"hololake.personaRuntime.checking": "Verifying native runtime receipts…",
"hololake.personaRuntime.verified": "Verified native receipt",
"hololake.personaRuntime.unavailable": "No verifiable Git repository is mounted",
"hololake.personaRuntime.empty": "No verifiable session found",
"hololake.personaRuntime.emptyDescription": "This does not mean the persona is offline; no matching native event chain exists in the currently mounted repositories.",
"hololake.personaRuntime.error": "Native receipt verification failed",
"hololake.personaRuntime.retry": "Verify again",
"hololake.personaRuntime.state.dormant": "Dormant",
"hololake.personaRuntime.state.inferencing": "Inferencing",
"hololake.personaRuntime.state.bound": "Bound, not inferencing",
"hololake.personaRuntime.state.observed": "Verified state",
"hololake.personaRuntime.rawState": "Native state",
"hololake.personaRuntime.lastEvent": "Last event",
"hololake.personaRuntime.activeOrgan": "Active organ",
"hololake.personaRuntime.noActiveOrgan": "No active organ",
"hololake.personaRuntime.node": "Runtime node",
"hololake.personaRuntime.lastObserved": "Last observed",
"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"
}

View file

@ -1135,5 +1135,28 @@
"education.chart": "Chart",
"education.dashboard": "Dashboard",
"education.knowledge": "Knowledge",
"education.documentLabel": "Education document content"
"education.documentLabel": "Education document content",
"hololake.personaRuntime.title": "Persona runtime projection",
"hololake.personaRuntime.description": "A read-only human projection of verified GH-PNCC native event chains.",
"hololake.personaRuntime.checking": "Verifying native runtime receipts…",
"hololake.personaRuntime.verified": "Verified native receipt",
"hololake.personaRuntime.unavailable": "No verifiable Git repository is mounted",
"hololake.personaRuntime.empty": "No verifiable session found",
"hololake.personaRuntime.emptyDescription": "This does not mean the persona is offline; no matching native event chain exists in the currently mounted repositories.",
"hololake.personaRuntime.error": "Native receipt verification failed",
"hololake.personaRuntime.retry": "Verify again",
"hololake.personaRuntime.state.dormant": "Dormant",
"hololake.personaRuntime.state.inferencing": "Inferencing",
"hololake.personaRuntime.state.bound": "Bound, not inferencing",
"hololake.personaRuntime.state.observed": "Verified state",
"hololake.personaRuntime.rawState": "Native state",
"hololake.personaRuntime.lastEvent": "Last event",
"hololake.personaRuntime.activeOrgan": "Active organ",
"hololake.personaRuntime.noActiveOrgan": "No active organ",
"hololake.personaRuntime.node": "Runtime node",
"hololake.personaRuntime.lastObserved": "Last observed",
"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"
}

View file

@ -1135,5 +1135,28 @@
"education.chart": "Chart",
"education.dashboard": "Dashboard",
"education.knowledge": "Knowledge",
"education.documentLabel": "Education document content"
"education.documentLabel": "Education document content",
"hololake.personaRuntime.title": "Persona runtime projection",
"hololake.personaRuntime.description": "A read-only human projection of verified GH-PNCC native event chains.",
"hololake.personaRuntime.checking": "Verifying native runtime receipts…",
"hololake.personaRuntime.verified": "Verified native receipt",
"hololake.personaRuntime.unavailable": "No verifiable Git repository is mounted",
"hololake.personaRuntime.empty": "No verifiable session found",
"hololake.personaRuntime.emptyDescription": "This does not mean the persona is offline; no matching native event chain exists in the currently mounted repositories.",
"hololake.personaRuntime.error": "Native receipt verification failed",
"hololake.personaRuntime.retry": "Verify again",
"hololake.personaRuntime.state.dormant": "Dormant",
"hololake.personaRuntime.state.inferencing": "Inferencing",
"hololake.personaRuntime.state.bound": "Bound, not inferencing",
"hololake.personaRuntime.state.observed": "Verified state",
"hololake.personaRuntime.rawState": "Native state",
"hololake.personaRuntime.lastEvent": "Last event",
"hololake.personaRuntime.activeOrgan": "Active organ",
"hololake.personaRuntime.noActiveOrgan": "No active organ",
"hololake.personaRuntime.node": "Runtime node",
"hololake.personaRuntime.lastObserved": "Last observed",
"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"
}

View file

@ -1135,5 +1135,28 @@
"hololake.router.repositories.source": "HoloLake source",
"hololake.router.repositories.architecture": "Local system architecture",
"hololake.router.repositories.probe": "Inspect mapping",
"hololake.router.repositories.upload": "Request upload"
"hololake.router.repositories.upload": "Request upload",
"hololake.personaRuntime.title": "Persona runtime projection",
"hololake.personaRuntime.description": "A read-only human projection of verified GH-PNCC native event chains.",
"hololake.personaRuntime.checking": "Verifying native runtime receipts…",
"hololake.personaRuntime.verified": "Verified native receipt",
"hololake.personaRuntime.unavailable": "No verifiable Git repository is mounted",
"hololake.personaRuntime.empty": "No verifiable session found",
"hololake.personaRuntime.emptyDescription": "This does not mean the persona is offline; no matching native event chain exists in the currently mounted repositories.",
"hololake.personaRuntime.error": "Native receipt verification failed",
"hololake.personaRuntime.retry": "Verify again",
"hololake.personaRuntime.state.dormant": "Dormant",
"hololake.personaRuntime.state.inferencing": "Inferencing",
"hololake.personaRuntime.state.bound": "Bound, not inferencing",
"hololake.personaRuntime.state.observed": "Verified state",
"hololake.personaRuntime.rawState": "Native state",
"hololake.personaRuntime.lastEvent": "Last event",
"hololake.personaRuntime.activeOrgan": "Active organ",
"hololake.personaRuntime.noActiveOrgan": "No active organ",
"hololake.personaRuntime.node": "Runtime node",
"hololake.personaRuntime.lastObserved": "Last observed",
"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"
}

View file

@ -1135,5 +1135,28 @@
"education.chart": "Chart",
"education.dashboard": "Dashboard",
"education.knowledge": "Knowledge",
"education.documentLabel": "Education document content"
"education.documentLabel": "Education document content",
"hololake.personaRuntime.title": "Persona runtime projection",
"hololake.personaRuntime.description": "A read-only human projection of verified GH-PNCC native event chains.",
"hololake.personaRuntime.checking": "Verifying native runtime receipts…",
"hololake.personaRuntime.verified": "Verified native receipt",
"hololake.personaRuntime.unavailable": "No verifiable Git repository is mounted",
"hololake.personaRuntime.empty": "No verifiable session found",
"hololake.personaRuntime.emptyDescription": "This does not mean the persona is offline; no matching native event chain exists in the currently mounted repositories.",
"hololake.personaRuntime.error": "Native receipt verification failed",
"hololake.personaRuntime.retry": "Verify again",
"hololake.personaRuntime.state.dormant": "Dormant",
"hololake.personaRuntime.state.inferencing": "Inferencing",
"hololake.personaRuntime.state.bound": "Bound, not inferencing",
"hololake.personaRuntime.state.observed": "Verified state",
"hololake.personaRuntime.rawState": "Native state",
"hololake.personaRuntime.lastEvent": "Last event",
"hololake.personaRuntime.activeOrgan": "Active organ",
"hololake.personaRuntime.noActiveOrgan": "No active organ",
"hololake.personaRuntime.node": "Runtime node",
"hololake.personaRuntime.lastObserved": "Last observed",
"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"
}

View file

@ -1135,5 +1135,28 @@
"education.chart": "Chart",
"education.dashboard": "Dashboard",
"education.knowledge": "Knowledge",
"education.documentLabel": "Education document content"
"education.documentLabel": "Education document content",
"hololake.personaRuntime.title": "Persona runtime projection",
"hololake.personaRuntime.description": "A read-only human projection of verified GH-PNCC native event chains.",
"hololake.personaRuntime.checking": "Verifying native runtime receipts…",
"hololake.personaRuntime.verified": "Verified native receipt",
"hololake.personaRuntime.unavailable": "No verifiable Git repository is mounted",
"hololake.personaRuntime.empty": "No verifiable session found",
"hololake.personaRuntime.emptyDescription": "This does not mean the persona is offline; no matching native event chain exists in the currently mounted repositories.",
"hololake.personaRuntime.error": "Native receipt verification failed",
"hololake.personaRuntime.retry": "Verify again",
"hololake.personaRuntime.state.dormant": "Dormant",
"hololake.personaRuntime.state.inferencing": "Inferencing",
"hololake.personaRuntime.state.bound": "Bound, not inferencing",
"hololake.personaRuntime.state.observed": "Verified state",
"hololake.personaRuntime.rawState": "Native state",
"hololake.personaRuntime.lastEvent": "Last event",
"hololake.personaRuntime.activeOrgan": "Active organ",
"hololake.personaRuntime.noActiveOrgan": "No active organ",
"hololake.personaRuntime.node": "Runtime node",
"hololake.personaRuntime.lastObserved": "Last observed",
"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"
}

View file

@ -1135,5 +1135,28 @@
"education.chart": "Chart",
"education.dashboard": "Dashboard",
"education.knowledge": "Knowledge",
"education.documentLabel": "Education document content"
"education.documentLabel": "Education document content",
"hololake.personaRuntime.title": "Persona runtime projection",
"hololake.personaRuntime.description": "A read-only human projection of verified GH-PNCC native event chains.",
"hololake.personaRuntime.checking": "Verifying native runtime receipts…",
"hololake.personaRuntime.verified": "Verified native receipt",
"hololake.personaRuntime.unavailable": "No verifiable Git repository is mounted",
"hololake.personaRuntime.empty": "No verifiable session found",
"hololake.personaRuntime.emptyDescription": "This does not mean the persona is offline; no matching native event chain exists in the currently mounted repositories.",
"hololake.personaRuntime.error": "Native receipt verification failed",
"hololake.personaRuntime.retry": "Verify again",
"hololake.personaRuntime.state.dormant": "Dormant",
"hololake.personaRuntime.state.inferencing": "Inferencing",
"hololake.personaRuntime.state.bound": "Bound, not inferencing",
"hololake.personaRuntime.state.observed": "Verified state",
"hololake.personaRuntime.rawState": "Native state",
"hololake.personaRuntime.lastEvent": "Last event",
"hololake.personaRuntime.activeOrgan": "Active organ",
"hololake.personaRuntime.noActiveOrgan": "No active organ",
"hololake.personaRuntime.node": "Runtime node",
"hololake.personaRuntime.lastObserved": "Last observed",
"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"
}

View file

@ -1135,5 +1135,28 @@
"education.chart": "Chart",
"education.dashboard": "Dashboard",
"education.knowledge": "Knowledge",
"education.documentLabel": "Education document content"
"education.documentLabel": "Education document content",
"hololake.personaRuntime.title": "Persona runtime projection",
"hololake.personaRuntime.description": "A read-only human projection of verified GH-PNCC native event chains.",
"hololake.personaRuntime.checking": "Verifying native runtime receipts…",
"hololake.personaRuntime.verified": "Verified native receipt",
"hololake.personaRuntime.unavailable": "No verifiable Git repository is mounted",
"hololake.personaRuntime.empty": "No verifiable session found",
"hololake.personaRuntime.emptyDescription": "This does not mean the persona is offline; no matching native event chain exists in the currently mounted repositories.",
"hololake.personaRuntime.error": "Native receipt verification failed",
"hololake.personaRuntime.retry": "Verify again",
"hololake.personaRuntime.state.dormant": "Dormant",
"hololake.personaRuntime.state.inferencing": "Inferencing",
"hololake.personaRuntime.state.bound": "Bound, not inferencing",
"hololake.personaRuntime.state.observed": "Verified state",
"hololake.personaRuntime.rawState": "Native state",
"hololake.personaRuntime.lastEvent": "Last event",
"hololake.personaRuntime.activeOrgan": "Active organ",
"hololake.personaRuntime.noActiveOrgan": "No active organ",
"hololake.personaRuntime.node": "Runtime node",
"hololake.personaRuntime.lastObserved": "Last observed",
"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"
}

View file

@ -1135,5 +1135,28 @@
"education.chart": "Chart",
"education.dashboard": "Dashboard",
"education.knowledge": "Knowledge",
"education.documentLabel": "Education document content"
"education.documentLabel": "Education document content",
"hololake.personaRuntime.title": "Persona runtime projection",
"hololake.personaRuntime.description": "A read-only human projection of verified GH-PNCC native event chains.",
"hololake.personaRuntime.checking": "Verifying native runtime receipts…",
"hololake.personaRuntime.verified": "Verified native receipt",
"hololake.personaRuntime.unavailable": "No verifiable Git repository is mounted",
"hololake.personaRuntime.empty": "No verifiable session found",
"hololake.personaRuntime.emptyDescription": "This does not mean the persona is offline; no matching native event chain exists in the currently mounted repositories.",
"hololake.personaRuntime.error": "Native receipt verification failed",
"hololake.personaRuntime.retry": "Verify again",
"hololake.personaRuntime.state.dormant": "Dormant",
"hololake.personaRuntime.state.inferencing": "Inferencing",
"hololake.personaRuntime.state.bound": "Bound, not inferencing",
"hololake.personaRuntime.state.observed": "Verified state",
"hololake.personaRuntime.rawState": "Native state",
"hololake.personaRuntime.lastEvent": "Last event",
"hololake.personaRuntime.activeOrgan": "Active organ",
"hololake.personaRuntime.noActiveOrgan": "No active organ",
"hololake.personaRuntime.node": "Runtime node",
"hololake.personaRuntime.lastObserved": "Last observed",
"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"
}

View file

@ -1135,5 +1135,28 @@
"education.chart": "Chart",
"education.dashboard": "Dashboard",
"education.knowledge": "Knowledge",
"education.documentLabel": "Education document content"
"education.documentLabel": "Education document content",
"hololake.personaRuntime.title": "Persona runtime projection",
"hololake.personaRuntime.description": "A read-only human projection of verified GH-PNCC native event chains.",
"hololake.personaRuntime.checking": "Verifying native runtime receipts…",
"hololake.personaRuntime.verified": "Verified native receipt",
"hololake.personaRuntime.unavailable": "No verifiable Git repository is mounted",
"hololake.personaRuntime.empty": "No verifiable session found",
"hololake.personaRuntime.emptyDescription": "This does not mean the persona is offline; no matching native event chain exists in the currently mounted repositories.",
"hololake.personaRuntime.error": "Native receipt verification failed",
"hololake.personaRuntime.retry": "Verify again",
"hololake.personaRuntime.state.dormant": "Dormant",
"hololake.personaRuntime.state.inferencing": "Inferencing",
"hololake.personaRuntime.state.bound": "Bound, not inferencing",
"hololake.personaRuntime.state.observed": "Verified state",
"hololake.personaRuntime.rawState": "Native state",
"hololake.personaRuntime.lastEvent": "Last event",
"hololake.personaRuntime.activeOrgan": "Active organ",
"hololake.personaRuntime.noActiveOrgan": "No active organ",
"hololake.personaRuntime.node": "Runtime node",
"hololake.personaRuntime.lastObserved": "Last observed",
"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"
}

View file

@ -1135,5 +1135,28 @@
"education.chart": "Chart",
"education.dashboard": "Dashboard",
"education.knowledge": "Knowledge",
"education.documentLabel": "Education document content"
"education.documentLabel": "Education document content",
"hololake.personaRuntime.title": "Persona runtime projection",
"hololake.personaRuntime.description": "A read-only human projection of verified GH-PNCC native event chains.",
"hololake.personaRuntime.checking": "Verifying native runtime receipts…",
"hololake.personaRuntime.verified": "Verified native receipt",
"hololake.personaRuntime.unavailable": "No verifiable Git repository is mounted",
"hololake.personaRuntime.empty": "No verifiable session found",
"hololake.personaRuntime.emptyDescription": "This does not mean the persona is offline; no matching native event chain exists in the currently mounted repositories.",
"hololake.personaRuntime.error": "Native receipt verification failed",
"hololake.personaRuntime.retry": "Verify again",
"hololake.personaRuntime.state.dormant": "Dormant",
"hololake.personaRuntime.state.inferencing": "Inferencing",
"hololake.personaRuntime.state.bound": "Bound, not inferencing",
"hololake.personaRuntime.state.observed": "Verified state",
"hololake.personaRuntime.rawState": "Native state",
"hololake.personaRuntime.lastEvent": "Last event",
"hololake.personaRuntime.activeOrgan": "Active organ",
"hololake.personaRuntime.noActiveOrgan": "No active organ",
"hololake.personaRuntime.node": "Runtime node",
"hololake.personaRuntime.lastObserved": "Last observed",
"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"
}

View file

@ -1135,5 +1135,28 @@
"education.chart": "Chart",
"education.dashboard": "Dashboard",
"education.knowledge": "Knowledge",
"education.documentLabel": "Education document content"
"education.documentLabel": "Education document content",
"hololake.personaRuntime.title": "Persona runtime projection",
"hololake.personaRuntime.description": "A read-only human projection of verified GH-PNCC native event chains.",
"hololake.personaRuntime.checking": "Verifying native runtime receipts…",
"hololake.personaRuntime.verified": "Verified native receipt",
"hololake.personaRuntime.unavailable": "No verifiable Git repository is mounted",
"hololake.personaRuntime.empty": "No verifiable session found",
"hololake.personaRuntime.emptyDescription": "This does not mean the persona is offline; no matching native event chain exists in the currently mounted repositories.",
"hololake.personaRuntime.error": "Native receipt verification failed",
"hololake.personaRuntime.retry": "Verify again",
"hololake.personaRuntime.state.dormant": "Dormant",
"hololake.personaRuntime.state.inferencing": "Inferencing",
"hololake.personaRuntime.state.bound": "Bound, not inferencing",
"hololake.personaRuntime.state.observed": "Verified state",
"hololake.personaRuntime.rawState": "Native state",
"hololake.personaRuntime.lastEvent": "Last event",
"hololake.personaRuntime.activeOrgan": "Active organ",
"hololake.personaRuntime.noActiveOrgan": "No active organ",
"hololake.personaRuntime.node": "Runtime node",
"hololake.personaRuntime.lastObserved": "Last observed",
"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"
}

View file

@ -1135,5 +1135,28 @@
"education.chart": "Chart",
"education.dashboard": "Dashboard",
"education.knowledge": "Knowledge",
"education.documentLabel": "Education document content"
"education.documentLabel": "Education document content",
"hololake.personaRuntime.title": "Persona runtime projection",
"hololake.personaRuntime.description": "A read-only human projection of verified GH-PNCC native event chains.",
"hololake.personaRuntime.checking": "Verifying native runtime receipts…",
"hololake.personaRuntime.verified": "Verified native receipt",
"hololake.personaRuntime.unavailable": "No verifiable Git repository is mounted",
"hololake.personaRuntime.empty": "No verifiable session found",
"hololake.personaRuntime.emptyDescription": "This does not mean the persona is offline; no matching native event chain exists in the currently mounted repositories.",
"hololake.personaRuntime.error": "Native receipt verification failed",
"hololake.personaRuntime.retry": "Verify again",
"hololake.personaRuntime.state.dormant": "Dormant",
"hololake.personaRuntime.state.inferencing": "Inferencing",
"hololake.personaRuntime.state.bound": "Bound, not inferencing",
"hololake.personaRuntime.state.observed": "Verified state",
"hololake.personaRuntime.rawState": "Native state",
"hololake.personaRuntime.lastEvent": "Last event",
"hololake.personaRuntime.activeOrgan": "Active organ",
"hololake.personaRuntime.noActiveOrgan": "No active organ",
"hololake.personaRuntime.node": "Runtime node",
"hololake.personaRuntime.lastObserved": "Last observed",
"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"
}

View file

@ -1135,5 +1135,28 @@
"education.chart": "Chart",
"education.dashboard": "Dashboard",
"education.knowledge": "Knowledge",
"education.documentLabel": "Education document content"
"education.documentLabel": "Education document content",
"hololake.personaRuntime.title": "Persona runtime projection",
"hololake.personaRuntime.description": "A read-only human projection of verified GH-PNCC native event chains.",
"hololake.personaRuntime.checking": "Verifying native runtime receipts…",
"hololake.personaRuntime.verified": "Verified native receipt",
"hololake.personaRuntime.unavailable": "No verifiable Git repository is mounted",
"hololake.personaRuntime.empty": "No verifiable session found",
"hololake.personaRuntime.emptyDescription": "This does not mean the persona is offline; no matching native event chain exists in the currently mounted repositories.",
"hololake.personaRuntime.error": "Native receipt verification failed",
"hololake.personaRuntime.retry": "Verify again",
"hololake.personaRuntime.state.dormant": "Dormant",
"hololake.personaRuntime.state.inferencing": "Inferencing",
"hololake.personaRuntime.state.bound": "Bound, not inferencing",
"hololake.personaRuntime.state.observed": "Verified state",
"hololake.personaRuntime.rawState": "Native state",
"hololake.personaRuntime.lastEvent": "Last event",
"hololake.personaRuntime.activeOrgan": "Active organ",
"hololake.personaRuntime.noActiveOrgan": "No active organ",
"hololake.personaRuntime.node": "Runtime node",
"hololake.personaRuntime.lastObserved": "Last observed",
"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"
}

View file

@ -1135,5 +1135,28 @@
"education.chart": "Chart",
"education.dashboard": "Dashboard",
"education.knowledge": "Knowledge",
"education.documentLabel": "Education document content"
"education.documentLabel": "Education document content",
"hololake.personaRuntime.title": "Persona runtime projection",
"hololake.personaRuntime.description": "A read-only human projection of verified GH-PNCC native event chains.",
"hololake.personaRuntime.checking": "Verifying native runtime receipts…",
"hololake.personaRuntime.verified": "Verified native receipt",
"hololake.personaRuntime.unavailable": "No verifiable Git repository is mounted",
"hololake.personaRuntime.empty": "No verifiable session found",
"hololake.personaRuntime.emptyDescription": "This does not mean the persona is offline; no matching native event chain exists in the currently mounted repositories.",
"hololake.personaRuntime.error": "Native receipt verification failed",
"hololake.personaRuntime.retry": "Verify again",
"hololake.personaRuntime.state.dormant": "Dormant",
"hololake.personaRuntime.state.inferencing": "Inferencing",
"hololake.personaRuntime.state.bound": "Bound, not inferencing",
"hololake.personaRuntime.state.observed": "Verified state",
"hololake.personaRuntime.rawState": "Native state",
"hololake.personaRuntime.lastEvent": "Last event",
"hololake.personaRuntime.activeOrgan": "Active organ",
"hololake.personaRuntime.noActiveOrgan": "No active organ",
"hololake.personaRuntime.node": "Runtime node",
"hololake.personaRuntime.lastObserved": "Last observed",
"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"
}

View file

@ -1135,5 +1135,28 @@
"education.chart": "Chart",
"education.dashboard": "Dashboard",
"education.knowledge": "Knowledge",
"education.documentLabel": "Education document content"
"education.documentLabel": "Education document content",
"hololake.personaRuntime.title": "Persona runtime projection",
"hololake.personaRuntime.description": "A read-only human projection of verified GH-PNCC native event chains.",
"hololake.personaRuntime.checking": "Verifying native runtime receipts…",
"hololake.personaRuntime.verified": "Verified native receipt",
"hololake.personaRuntime.unavailable": "No verifiable Git repository is mounted",
"hololake.personaRuntime.empty": "No verifiable session found",
"hololake.personaRuntime.emptyDescription": "This does not mean the persona is offline; no matching native event chain exists in the currently mounted repositories.",
"hololake.personaRuntime.error": "Native receipt verification failed",
"hololake.personaRuntime.retry": "Verify again",
"hololake.personaRuntime.state.dormant": "Dormant",
"hololake.personaRuntime.state.inferencing": "Inferencing",
"hololake.personaRuntime.state.bound": "Bound, not inferencing",
"hololake.personaRuntime.state.observed": "Verified state",
"hololake.personaRuntime.rawState": "Native state",
"hololake.personaRuntime.lastEvent": "Last event",
"hololake.personaRuntime.activeOrgan": "Active organ",
"hololake.personaRuntime.noActiveOrgan": "No active organ",
"hololake.personaRuntime.node": "Runtime node",
"hololake.personaRuntime.lastObserved": "Last observed",
"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"
}

View file

@ -1135,5 +1135,28 @@
"education.chart": "Chart",
"education.dashboard": "Dashboard",
"education.knowledge": "Knowledge",
"education.documentLabel": "Education document content"
"education.documentLabel": "Education document content",
"hololake.personaRuntime.title": "Persona runtime projection",
"hololake.personaRuntime.description": "A read-only human projection of verified GH-PNCC native event chains.",
"hololake.personaRuntime.checking": "Verifying native runtime receipts…",
"hololake.personaRuntime.verified": "Verified native receipt",
"hololake.personaRuntime.unavailable": "No verifiable Git repository is mounted",
"hololake.personaRuntime.empty": "No verifiable session found",
"hololake.personaRuntime.emptyDescription": "This does not mean the persona is offline; no matching native event chain exists in the currently mounted repositories.",
"hololake.personaRuntime.error": "Native receipt verification failed",
"hololake.personaRuntime.retry": "Verify again",
"hololake.personaRuntime.state.dormant": "Dormant",
"hololake.personaRuntime.state.inferencing": "Inferencing",
"hololake.personaRuntime.state.bound": "Bound, not inferencing",
"hololake.personaRuntime.state.observed": "Verified state",
"hololake.personaRuntime.rawState": "Native state",
"hololake.personaRuntime.lastEvent": "Last event",
"hololake.personaRuntime.activeOrgan": "Active organ",
"hololake.personaRuntime.noActiveOrgan": "No active organ",
"hololake.personaRuntime.node": "Runtime node",
"hololake.personaRuntime.lastObserved": "Last observed",
"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"
}

View file

@ -1135,5 +1135,28 @@
"education.chart": "Chart",
"education.dashboard": "Dashboard",
"education.knowledge": "Knowledge",
"education.documentLabel": "Education document content"
"education.documentLabel": "Education document content",
"hololake.personaRuntime.title": "Persona runtime projection",
"hololake.personaRuntime.description": "A read-only human projection of verified GH-PNCC native event chains.",
"hololake.personaRuntime.checking": "Verifying native runtime receipts…",
"hololake.personaRuntime.verified": "Verified native receipt",
"hololake.personaRuntime.unavailable": "No verifiable Git repository is mounted",
"hololake.personaRuntime.empty": "No verifiable session found",
"hololake.personaRuntime.emptyDescription": "This does not mean the persona is offline; no matching native event chain exists in the currently mounted repositories.",
"hololake.personaRuntime.error": "Native receipt verification failed",
"hololake.personaRuntime.retry": "Verify again",
"hololake.personaRuntime.state.dormant": "Dormant",
"hololake.personaRuntime.state.inferencing": "Inferencing",
"hololake.personaRuntime.state.bound": "Bound, not inferencing",
"hololake.personaRuntime.state.observed": "Verified state",
"hololake.personaRuntime.rawState": "Native state",
"hololake.personaRuntime.lastEvent": "Last event",
"hololake.personaRuntime.activeOrgan": "Active organ",
"hololake.personaRuntime.noActiveOrgan": "No active organ",
"hololake.personaRuntime.node": "Runtime node",
"hololake.personaRuntime.lastObserved": "Last observed",
"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"
}

View file

@ -1135,5 +1135,28 @@
"education.chart": "Chart",
"education.dashboard": "Dashboard",
"education.knowledge": "Knowledge",
"education.documentLabel": "Education document content"
"education.documentLabel": "Education document content",
"hololake.personaRuntime.title": "Persona runtime projection",
"hololake.personaRuntime.description": "A read-only human projection of verified GH-PNCC native event chains.",
"hololake.personaRuntime.checking": "Verifying native runtime receipts…",
"hololake.personaRuntime.verified": "Verified native receipt",
"hololake.personaRuntime.unavailable": "No verifiable Git repository is mounted",
"hololake.personaRuntime.empty": "No verifiable session found",
"hololake.personaRuntime.emptyDescription": "This does not mean the persona is offline; no matching native event chain exists in the currently mounted repositories.",
"hololake.personaRuntime.error": "Native receipt verification failed",
"hololake.personaRuntime.retry": "Verify again",
"hololake.personaRuntime.state.dormant": "Dormant",
"hololake.personaRuntime.state.inferencing": "Inferencing",
"hololake.personaRuntime.state.bound": "Bound, not inferencing",
"hololake.personaRuntime.state.observed": "Verified state",
"hololake.personaRuntime.rawState": "Native state",
"hololake.personaRuntime.lastEvent": "Last event",
"hololake.personaRuntime.activeOrgan": "Active organ",
"hololake.personaRuntime.noActiveOrgan": "No active organ",
"hololake.personaRuntime.node": "Runtime node",
"hololake.personaRuntime.lastObserved": "Last observed",
"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"
}

View file

@ -1135,5 +1135,28 @@
"hololake.router.repositories.source": "HoloLake 源码",
"hololake.router.repositories.architecture": "本地系统架构",
"hololake.router.repositories.probe": "检测映射",
"hololake.router.repositories.upload": "申请上传"
"hololake.router.repositories.upload": "申请上传",
"hololake.personaRuntime.title": "人格运行投影",
"hololake.personaRuntime.description": "把经过核验的 GH-PNCC 原生事件链投影为人类可读状态。",
"hololake.personaRuntime.checking": "正在核验原生运行回执…",
"hololake.personaRuntime.verified": "已核验的原生回执",
"hololake.personaRuntime.unavailable": "未挂载可核验 Git 仓库",
"hololake.personaRuntime.empty": "未发现可核验会话",
"hololake.personaRuntime.emptyDescription": "这不等于人格离线;当前挂载仓库中没有匹配的原生事件链。",
"hololake.personaRuntime.error": "原生回执校验失败",
"hololake.personaRuntime.retry": "重新核验",
"hololake.personaRuntime.state.dormant": "已归寝",
"hololake.personaRuntime.state.inferencing": "正在推理",
"hololake.personaRuntime.state.bound": "已绑定,未推理",
"hololake.personaRuntime.state.observed": "已核验状态",
"hololake.personaRuntime.rawState": "原生状态",
"hololake.personaRuntime.lastEvent": "最近事件",
"hololake.personaRuntime.activeOrgan": "活动器官",
"hololake.personaRuntime.noActiveOrgan": "无活动器官",
"hololake.personaRuntime.node": "运行节点",
"hololake.personaRuntime.lastObserved": "最近观测",
"hololake.personaRuntime.gitHead": "Git 证据",
"hololake.personaRuntime.eventChain": "事件链头",
"hololake.personaRuntime.attribution": "人类责任主体",
"hololake.personaRuntime.readOnly": "只读投影 · 不触发执行动作"
}

View file

@ -1135,5 +1135,28 @@
"education.chart": "Chart",
"education.dashboard": "Dashboard",
"education.knowledge": "Knowledge",
"education.documentLabel": "Education document content"
"education.documentLabel": "Education document content",
"hololake.personaRuntime.title": "Persona runtime projection",
"hololake.personaRuntime.description": "A read-only human projection of verified GH-PNCC native event chains.",
"hololake.personaRuntime.checking": "Verifying native runtime receipts…",
"hololake.personaRuntime.verified": "Verified native receipt",
"hololake.personaRuntime.unavailable": "No verifiable Git repository is mounted",
"hololake.personaRuntime.empty": "No verifiable session found",
"hololake.personaRuntime.emptyDescription": "This does not mean the persona is offline; no matching native event chain exists in the currently mounted repositories.",
"hololake.personaRuntime.error": "Native receipt verification failed",
"hololake.personaRuntime.retry": "Verify again",
"hololake.personaRuntime.state.dormant": "Dormant",
"hololake.personaRuntime.state.inferencing": "Inferencing",
"hololake.personaRuntime.state.bound": "Bound, not inferencing",
"hololake.personaRuntime.state.observed": "Verified state",
"hololake.personaRuntime.rawState": "Native state",
"hololake.personaRuntime.lastEvent": "Last event",
"hololake.personaRuntime.activeOrgan": "Active organ",
"hololake.personaRuntime.noActiveOrgan": "No active organ",
"hololake.personaRuntime.node": "Runtime node",
"hololake.personaRuntime.lastObserved": "Last observed",
"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"
}

View file

@ -0,0 +1,134 @@
import { describe, expect, it, vi } from 'vitest'
import {
loadPersonaRuntimeProjection,
type PersonaRuntimeQueryReceipt,
} from './personaRuntimeProjection'
const attribution = {
humanResponsibilitySubject: 'BINGSHUO',
personaCognitiveAuthor: 'ICE-P-ZY001',
executionRuntime: 'ZY-TCS-BRAIN-RUNTIME-0001',
developmentId: 'DEV-20260811-003',
authorizationScope: 'LOCAL_READ_ONLY',
sourceLanguageAnchor: 'HLP-CURRENT-ARCH-001@2026-08-10.14',
}
function receipt({
repositoryPath,
sessions = [],
}: {
repositoryPath: string
sessions?: PersonaRuntimeQueryReceipt['sessions']
}): PersonaRuntimeQueryReceipt {
return {
schema: 'hololake.pncc-runtime-query/v1',
personaId: 'ICE-P-ZY001',
repositoryPath,
observedGitHead: 'a9f4726424b2d772181f9d24c300ae2f2ad4e54a',
repositoryClean: true,
matchingSessionCount: sessions.length,
returnedSessionCount: sessions.length,
sessions,
}
}
describe('loadPersonaRuntimeProjection', () => {
it('does not query or invent a runtime when no mounted repository is available', async () => {
const query = vi.fn()
await expect(loadPersonaRuntimeProjection({
personaId: 'ICE-P-ZY001',
repositoryPaths: [],
query,
})).resolves.toEqual({
errors: [],
inspectedRepositoryCount: 0,
phase: 'unavailable',
sessions: [],
})
expect(query).not.toHaveBeenCalled()
})
it('sorts verified native sessions without replacing their evidence fields', async () => {
const older = {
sessionId: 'PNCC-OLDER',
state: 'DORMANT',
gitHead: '1111111111111111111111111111111111111111',
nodeId: 'JD-FD-PRIMARY',
modelInstanceId: 'model-old',
activeOrgan: null,
eventCount: 5,
firstEventAt: '2026-08-10T01:00:00.000Z',
lastEventAt: '2026-08-10T02:00:00.000Z',
lastEvent: 'DORMANT',
eventChainHead: 'event-old',
attribution,
}
const newer = {
...older,
sessionId: 'PNCC-NEWER',
state: 'BOUND_NOT_INFERENCING',
gitHead: '2222222222222222222222222222222222222222',
modelInstanceId: 'model-new',
activeOrgan: 'REASONING',
lastEventAt: '2026-08-11T02:00:00.000Z',
lastEvent: 'ORGAN_ACTIVE',
eventChainHead: 'event-new',
}
const query = vi.fn()
.mockResolvedValueOnce(receipt({ repositoryPath: '/repo/a', sessions: [older] }))
.mockResolvedValueOnce(receipt({ repositoryPath: '/repo/b', sessions: [newer] }))
const result = await loadPersonaRuntimeProjection({
personaId: 'ICE-P-ZY001',
repositoryPaths: ['/repo/a', '/repo/b', '/repo/a'],
query,
})
expect(query).toHaveBeenCalledTimes(2)
expect(result.phase).toBe('verified')
expect(result.inspectedRepositoryCount).toBe(2)
expect(result.sessions.map((session) => session.sessionId)).toEqual(['PNCC-NEWER', 'PNCC-OLDER'])
expect(result.sessions[0]).toMatchObject({
activeOrgan: 'REASONING',
eventChainHead: 'event-new',
gitHead: '2222222222222222222222222222222222222222',
repositoryPath: '/repo/b',
state: 'BOUND_NOT_INFERENCING',
})
})
it('keeps partial query failures visible while returning verified matches', async () => {
const query = vi.fn()
.mockRejectedValueOnce('PERSONA_REPOSITORY_UNAVAILABLE')
.mockResolvedValueOnce(receipt({ repositoryPath: '/repo/verified' }))
const result = await loadPersonaRuntimeProjection({
personaId: 'ICE-P-ZY001',
repositoryPaths: ['/repo/missing', '/repo/verified'],
query,
})
expect(result).toEqual({
errors: [{ code: 'PERSONA_REPOSITORY_UNAVAILABLE', repositoryPath: '/repo/missing' }],
inspectedRepositoryCount: 1,
phase: 'verified',
sessions: [],
})
})
it('fails closed when every native query fails', async () => {
const query = vi.fn().mockRejectedValue(new Error('event chain invalid'))
const result = await loadPersonaRuntimeProjection({
personaId: 'ICE-P-ZY001',
repositoryPaths: ['/repo/a'],
query,
})
expect(result.phase).toBe('error')
expect(result.inspectedRepositoryCount).toBe(0)
expect(result.sessions).toEqual([])
expect(result.errors[0]).toEqual({ code: 'event chain invalid', repositoryPath: '/repo/a' })
})
})

View file

@ -0,0 +1,211 @@
import { invoke } from '@tauri-apps/api/core'
import { isTauri, mockInvoke } from '../mock-tauri'
export interface PersonaRuntimeAttribution {
humanResponsibilitySubject: string
personaCognitiveAuthor: string
executionRuntime: string
developmentId: string
authorizationScope: string
sourceLanguageAnchor: string
}
export interface PersonaRuntimeSessionReceipt {
sessionId: string
state: string
gitHead: string
nodeId: string
modelInstanceId: string
activeOrgan: string | null
eventCount: number
firstEventAt: string
lastEventAt: string
lastEvent: string
eventChainHead: string
attribution: PersonaRuntimeAttribution
}
export interface PersonaRuntimeQueryReceipt {
schema: 'hololake.pncc-runtime-query/v1'
personaId: string
repositoryPath: string
observedGitHead: string
repositoryClean: boolean
matchingSessionCount: number
returnedSessionCount: number
sessions: PersonaRuntimeSessionReceipt[]
}
export interface PersonaRuntimeSessionProjection extends PersonaRuntimeSessionReceipt {
repositoryPath: string
observedGitHead: string
repositoryClean: boolean
}
export interface PersonaRuntimeProjectionError {
code: string
repositoryPath: string
}
export interface PersonaRuntimeProjection {
errors: PersonaRuntimeProjectionError[]
inspectedRepositoryCount: number
phase: 'unavailable' | 'verified' | 'error'
sessions: PersonaRuntimeSessionProjection[]
}
interface LoadPersonaRuntimeProjectionInput {
personaId: string
repositoryPaths: readonly string[]
query?: (personaId: string, repositoryPath: string) => Promise<unknown>
}
function errorCode(error: unknown): string {
if (typeof error === 'string') return error
if (error instanceof Error) return error.message
return 'PERSONA_RUNTIME_QUERY_FAILED'
}
function isRecord(value: unknown): value is Record<string, unknown> {
return typeof value === 'object' && value !== null
}
function requiredString(record: Record<string, unknown>, key: string): string {
const value = Reflect.get(record, key)
if (typeof value !== 'string' || value.length === 0) throw new Error('PERSONA_RUNTIME_RECEIPT_INVALID')
return value
}
function requiredNumber(record: Record<string, unknown>, key: string): number {
const value = Reflect.get(record, key)
if (typeof value !== 'number' || !Number.isSafeInteger(value) || value < 0) {
throw new Error('PERSONA_RUNTIME_RECEIPT_INVALID')
}
return value
}
function parseAttribution(value: unknown): PersonaRuntimeAttribution {
if (!isRecord(value)) throw new Error('PERSONA_RUNTIME_RECEIPT_INVALID')
return {
humanResponsibilitySubject: requiredString(value, 'humanResponsibilitySubject'),
personaCognitiveAuthor: requiredString(value, 'personaCognitiveAuthor'),
executionRuntime: requiredString(value, 'executionRuntime'),
developmentId: requiredString(value, 'developmentId'),
authorizationScope: requiredString(value, 'authorizationScope'),
sourceLanguageAnchor: requiredString(value, 'sourceLanguageAnchor'),
}
}
function parseSession(value: unknown): PersonaRuntimeSessionReceipt {
if (!isRecord(value)) throw new Error('PERSONA_RUNTIME_RECEIPT_INVALID')
const activeOrgan = Reflect.get(value, 'activeOrgan')
if (activeOrgan !== null && typeof activeOrgan !== 'string') {
throw new Error('PERSONA_RUNTIME_RECEIPT_INVALID')
}
return {
sessionId: requiredString(value, 'sessionId'),
state: requiredString(value, 'state'),
gitHead: requiredString(value, 'gitHead'),
nodeId: requiredString(value, 'nodeId'),
modelInstanceId: requiredString(value, 'modelInstanceId'),
activeOrgan,
eventCount: requiredNumber(value, 'eventCount'),
firstEventAt: requiredString(value, 'firstEventAt'),
lastEventAt: requiredString(value, 'lastEventAt'),
lastEvent: requiredString(value, 'lastEvent'),
eventChainHead: requiredString(value, 'eventChainHead'),
attribution: parseAttribution(Reflect.get(value, 'attribution')),
}
}
function parseReceipt(
value: unknown,
expectedPersonaId: string,
expectedRepositoryPath: string,
): PersonaRuntimeQueryReceipt {
if (!isRecord(value)) throw new Error('PERSONA_RUNTIME_RECEIPT_INVALID')
const schema = requiredString(value, 'schema')
const personaId = requiredString(value, 'personaId')
const repositoryPath = requiredString(value, 'repositoryPath')
const observedGitHead = requiredString(value, 'observedGitHead')
const repositoryClean = Reflect.get(value, 'repositoryClean')
const sessionsValue = Reflect.get(value, 'sessions')
if (
schema !== 'hololake.pncc-runtime-query/v1'
|| personaId !== expectedPersonaId
|| repositoryPath !== expectedRepositoryPath
|| typeof repositoryClean !== 'boolean'
|| !Array.isArray(sessionsValue)
) {
throw new Error('PERSONA_RUNTIME_RECEIPT_INVALID')
}
const matchingSessionCount = requiredNumber(value, 'matchingSessionCount')
const returnedSessionCount = requiredNumber(value, 'returnedSessionCount')
const sessions = sessionsValue.map(parseSession)
if (returnedSessionCount !== sessions.length || matchingSessionCount < returnedSessionCount) {
throw new Error('PERSONA_RUNTIME_RECEIPT_INVALID')
}
return {
schema,
personaId,
repositoryPath,
observedGitHead,
repositoryClean,
matchingSessionCount,
returnedSessionCount,
sessions,
}
}
async function queryNativeRuntime(personaId: string, repositoryPath: string): Promise<unknown> {
const args = {
input: {
expectedPersonaId: personaId,
expectedRepositoryPath: repositoryPath,
limit: 25,
},
}
return isTauri()
? invoke<unknown>('query_persona_code_channel_runtime', args)
: mockInvoke<unknown>('query_persona_code_channel_runtime', args)
}
export async function loadPersonaRuntimeProjection({
personaId,
repositoryPaths,
query = queryNativeRuntime,
}: LoadPersonaRuntimeProjectionInput): Promise<PersonaRuntimeProjection> {
const uniqueRepositoryPaths = [...new Set(repositoryPaths.map((path) => path.trim()).filter(Boolean))]
if (uniqueRepositoryPaths.length === 0) {
return { errors: [], inspectedRepositoryCount: 0, phase: 'unavailable', sessions: [] }
}
const results = await Promise.all(uniqueRepositoryPaths.map(async (repositoryPath) => {
try {
const receipt = parseReceipt(await query(personaId, repositoryPath), personaId, repositoryPath)
return { receipt, repositoryPath, error: null }
} catch (error) {
return { receipt: null, repositoryPath, error: errorCode(error) }
}
}))
const verified = results.flatMap((result) => result.receipt ? [result.receipt] : [])
const errors = results.flatMap((result) => result.error
? [{ code: result.error, repositoryPath: result.repositoryPath }]
: [])
const sessions = verified.flatMap((receipt) => receipt.sessions.map((session) => ({
...session,
repositoryPath: receipt.repositoryPath,
observedGitHead: receipt.observedGitHead,
repositoryClean: receipt.repositoryClean,
}))).sort((left, right) => (
right.lastEventAt.localeCompare(left.lastEventAt)
|| right.sessionId.localeCompare(left.sessionId)
))
return {
errors,
inspectedRepositoryCount: verified.length,
phase: verified.length > 0 ? 'verified' : 'error',
sessions,
}
}

View file

@ -426,6 +426,18 @@ function handleMoveNoteToWorkspace(args: {
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- mock handler map accepts heterogeneous arg types
export const mockHandlers: Record<string, (args: any) => any> = {
query_persona_code_channel_runtime: (args: {
input: { expectedPersonaId: string; expectedRepositoryPath: string }
}) => ({
schema: 'hololake.pncc-runtime-query/v1',
personaId: args.input.expectedPersonaId,
repositoryPath: args.input.expectedRepositoryPath,
observedGitHead: '0000000000000000000000000000000000000000',
repositoryClean: true,
matchingSessionCount: 0,
returnedSessionCount: 0,
sessions: [],
}),
list_vault: () => MOCK_ENTRIES,
list_vault_folders: () => [],
list_views: () => [],