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

@ -0,0 +1,60 @@
{
"schema": "hololake.pncc-human-projection-receipt/v1",
"receipt_id": "HLP-PNCC-HUMAN-PROJECTION-001-20260811",
"development_id": "DEV-20260811-003",
"repository_id": "REPO-014",
"branch": "main",
"baseline_before_development": "1b55f3407a81112f99951aa198e4db56d0c07a7d",
"source_commit": "SELF",
"architecture_anchor": "HLP-CURRENT-ARCH-001@2026-08-10.14",
"product_effect": {
"first_core": "GH-PNCC",
"persona_id": "ICE-P-ZY001",
"surface": "FIFTH_DOMAIN_ETERNAL_LAKE_INSPECTOR",
"truth_source": "query_persona_code_channel_runtime",
"repository_candidates": "CURRENTLY_MOUNTED_HOLOLAKE_GIT_REPOSITORIES",
"new_truth_store_created": false,
"wake_action_added": false,
"inference_action_added": false,
"lease_action_added": false,
"execution_action_added": false
},
"projection_contract": {
"human_state_and_raw_state_are_both_visible": true,
"git_head_visible": true,
"event_chain_head_visible": true,
"runtime_node_visible": true,
"active_organ_visible": true,
"human_responsibility_subject_visible": true,
"empty_match_does_not_claim_offline": true,
"malformed_or_mismatched_receipt_fails_closed": true,
"partial_repository_failures_remain_visible": true
},
"verification": {
"native_authority": "PASS_100",
"frontend_focused_tests": "PASS_31_OF_31",
"frontend_full_suite": "PASS_5015_OF_5015",
"rust_unit_tests": "PASS_1200_OF_1200_WITH_2_DESIGN_IGNORES",
"rust_integration_tests": "PASS_1_OF_1",
"native_core_tests": "PASS_15_OF_15",
"native_core_line_coverage": "PASS_100_PERCENT",
"eslint": "PASS_100",
"typescript": "PASS_100",
"locale_catalog_validation": "PASS_21_CATALOGS_1160_KEYS",
"production_build": "PASS_100",
"git_diff_check": "PASS_100"
},
"localization_note": {
"automated_translation": "NOT_RUN_LARA_CREDENTIALS_UNAVAILABLE",
"zh_cn": "HUMAN_TRANSLATED",
"other_catalogs": "VALIDATED_ENGLISH_FALLBACK"
},
"boundary": {
"desktop_artifact_rebuilt": false,
"desktop_installed": false,
"server_deployed": false,
"server_runtime_changed": false,
"publication_requires_finalizer_remote_readback": true
},
"state": "READY_FOR_PUBLICATION"
}

View file

@ -122,8 +122,14 @@ current lifecycle receipt after repository drift.
`PersonaRuntimeQueryReceipt` is a bounded projection of the durable runtime files, not another truth store.
It filters by the caller's expected persona and canonical repository, validates each matching event chain,
and returns at most 100 newest session summaries. Dormant sessions expose no active organ. The receipt keeps
the event-chain head and human/persona attribution so a future renderer can link a summary back to the same
machine evidence rather than trusting display state.
the event-chain head and human/persona attribution. `loadPersonaRuntimeProjection` supplies only the exact
persona id and HoloLake's mounted Git repository paths to that native query, rejects a mismatched schema,
persona, repository, count, or required evidence field, and aggregates successful receipts without hiding
per-repository failures. `PersonaRuntimeProjectionPanel` renders the newest verified session inside the
Fifth Domain Eternal Lake inspector. Human labels such as dormant or inferencing remain beside the raw native
state, Git head, event-chain head, node, active organ, timestamp, and human responsibility subject. An empty
match explicitly does not mean offline. The panel is read-only and cannot wake a persona, invoke an organ, or
acquire a lease.
## PersonaRemoteGitObjectChannel
@ -1202,6 +1208,9 @@ Managed by `useSettings` hook and `SettingsPanel` component. `theme_mode` is ins
- **AI feature visibility**`ai_features_visibility_changed` records only whether installation-level AI surfaces were enabled or hidden.
- **Automatic update checks**`automatic_update_checks_changed` records only whether startup/background update checks were enabled or disabled.
- **All Notes visibility**`all_notes_visibility_changed` records only the toggled category and enabled state.
- **Persona runtime projection**`persona_runtime_projection_loaded` and `persona_runtime_projection_retry`
record only coarse phase and count fields. Repository paths, persona session ids, event hashes, and runtime
attribution are never sent.
### Tauri Commands
- **`reinit_telemetry`** — Re-reads settings and toggles Rust Sentry on/off. Called from frontend when user changes crash reporting setting.

View file

@ -104,6 +104,14 @@ event, and returns lifecycle state, Git head, node/model instance, active organ,
structured attribution. It does not copy facts into a second database, expose hidden reasoning, acquire a
lease, or start inference. A corrupted matching journal fails the query closed.
The HoloLake renderer now provides the first human-readable GH-PNCC projection without introducing another
runtime source. `App` passes only its already mounted Git repository paths into `HoloLakeHome`; the Eternal
Lake inspector queries each path for `ICE-P-ZY001` through the native read model. The renderer validates the
receipt identity and required evidence, preserves partial query errors, and displays the newest verified
session with both a human state label and the raw state, Git and event-chain heads, node, organ, timestamp,
and human responsibility subject. No matching session is reported as absence of matching evidence, never as
proof that the persona is offline. This surface contains no wake, inference, lease, or execution control.
`read_persona_remote_git_object` is the non-UI remote object channel used when the persona needs one current
Git-backed fact without materializing another repository checkout. It accepts credential-free HTTPS remotes,
requires Git protocol v2 partial-object filtering, stores only a bounded bare `blob:none` object cache, and

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: () => [],