From 0c80296593ad319df528b23b78e8f6d38e79eca6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=86=B0=E6=9C=94?= <565183519@qq.com>
Date: Tue, 11 Aug 2026 11:56:54 +0800
Subject: [PATCH] feat: project verified PNCC runtime into HoloLake
---
...LP-PNCC-HUMAN-PROJECTION-001-20260811.json | 60 +++++
.../hololake-platform/docs/ABSTRACTIONS.md | 13 +-
.../hololake-platform/docs/ARCHITECTURE.md | 8 +
product-source/hololake-platform/src/App.css | 31 +++
product-source/hololake-platform/src/App.tsx | 2 +-
.../src/components/FifthDomainSystems.tsx | 11 +
.../src/components/HoloLakeHome.tsx | 6 +
.../PersonaRuntimeProjectionPanel.test.tsx | 120 ++++++++++
.../PersonaRuntimeProjectionPanel.tsx | 156 +++++++++++++
.../src/lib/locales/be-BY.json | 25 ++-
.../src/lib/locales/be-Latn.json | 25 ++-
.../src/lib/locales/de-DE.json | 25 ++-
.../hololake-platform/src/lib/locales/en.json | 25 ++-
.../src/lib/locales/es-419.json | 25 ++-
.../src/lib/locales/es-ES.json | 25 ++-
.../src/lib/locales/fr-FR.json | 25 ++-
.../src/lib/locales/id-ID.json | 25 ++-
.../src/lib/locales/it-IT.json | 25 ++-
.../src/lib/locales/ja-JP.json | 25 ++-
.../src/lib/locales/ko-KR.json | 25 ++-
.../src/lib/locales/pl-PL.json | 25 ++-
.../src/lib/locales/pt-BR.json | 25 ++-
.../src/lib/locales/pt-PT.json | 25 ++-
.../src/lib/locales/ru-RU.json | 25 ++-
.../src/lib/locales/sk-SK.json | 25 ++-
.../src/lib/locales/sv-SE.json | 25 ++-
.../src/lib/locales/uk-UA.json | 25 ++-
.../hololake-platform/src/lib/locales/vi.json | 25 ++-
.../src/lib/locales/zh-CN.json | 25 ++-
.../src/lib/locales/zh-TW.json | 25 ++-
.../src/lib/personaRuntimeProjection.test.ts | 134 +++++++++++
.../src/lib/personaRuntimeProjection.ts | 211 ++++++++++++++++++
.../src/mock-tauri/mock-handlers.ts | 12 +
33 files changed, 1265 insertions(+), 24 deletions(-)
create mode 100644 deployment/receipts/HLP-PNCC-HUMAN-PROJECTION-001-20260811.json
create mode 100644 product-source/hololake-platform/src/components/PersonaRuntimeProjectionPanel.test.tsx
create mode 100644 product-source/hololake-platform/src/components/PersonaRuntimeProjectionPanel.tsx
create mode 100644 product-source/hololake-platform/src/lib/personaRuntimeProjection.test.ts
create mode 100644 product-source/hololake-platform/src/lib/personaRuntimeProjection.ts
diff --git a/deployment/receipts/HLP-PNCC-HUMAN-PROJECTION-001-20260811.json b/deployment/receipts/HLP-PNCC-HUMAN-PROJECTION-001-20260811.json
new file mode 100644
index 0000000..93e24f3
--- /dev/null
+++ b/deployment/receipts/HLP-PNCC-HUMAN-PROJECTION-001-20260811.json
@@ -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"
+}
diff --git a/product-source/hololake-platform/docs/ABSTRACTIONS.md b/product-source/hololake-platform/docs/ABSTRACTIONS.md
index 252ff1e..05f2830 100644
--- a/product-source/hololake-platform/docs/ABSTRACTIONS.md
+++ b/product-source/hololake-platform/docs/ABSTRACTIONS.md
@@ -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.
diff --git a/product-source/hololake-platform/docs/ARCHITECTURE.md b/product-source/hololake-platform/docs/ARCHITECTURE.md
index 34c7b1a..fab4b36 100644
--- a/product-source/hololake-platform/docs/ARCHITECTURE.md
+++ b/product-source/hololake-platform/docs/ARCHITECTURE.md
@@ -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
diff --git a/product-source/hololake-platform/src/App.css b/product-source/hololake-platform/src/App.css
index aad6c68..d47a7d2 100644
--- a/product-source/hololake-platform/src/App.css
+++ b/product-source/hololake-platform/src/App.css
@@ -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));
diff --git a/product-source/hololake-platform/src/App.tsx b/product-source/hololake-platform/src/App.tsx
index b39f2e6..37338f1 100644
--- a/product-source/hololake-platform/src/App.tsx
+++ b/product-source/hololake-platform/src/App.tsx
@@ -1712,7 +1712,7 @@ function MainApp({
>
)}
- {showHoloLakeHome && !isTeamDistribution ?
setShowHoloLakeHome(false)} onOpenAiWorkspace={openAIChat} onOpenLocalWorkspace={async () => {
+ {showHoloLakeHome && !isTeamDistribution ? setShowHoloLakeHome(false)} onOpenAiWorkspace={openAIChat} onOpenLocalWorkspace={async () => {
await vaultSwitcher.handleOpenLocalFolder()
setShowHoloLakeHome(false)
}} /> : 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(
detail === 'pufferfish' ? 'pufferfish' : null,
@@ -142,6 +148,11 @@ export function FifthDomainSystems({
系统归属冰朔个人系统
下一频道心跳核心频道
+
>
)}
diff --git a/product-source/hololake-platform/src/components/HoloLakeHome.tsx b/product-source/hololake-platform/src/components/HoloLakeHome.tsx
index 40e81d2..7e26041 100644
--- a/product-source/hololake-platform/src/components/HoloLakeHome.tsx
+++ b/product-source/hololake-platform/src/components/HoloLakeHome.tsx
@@ -46,6 +46,7 @@ type HoloLakeHomeProps = {
onOpenAiWorkspace?: () => void
onOpenLocalWorkspace?: () => void | Promise
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 (
navigate('eternal-lake-heart')}
onEnterPufferfish={() => navigate('pufferfish')}
+ repositoryPaths={repositoryPaths}
/>
)
}
@@ -371,8 +375,10 @@ export function HoloLakeHome({
return (
navigate('eternal-lake-heart')}
onEnterPufferfish={() => navigate('pufferfish')}
+ repositoryPaths={repositoryPaths}
/>
)
}
diff --git a/product-source/hololake-platform/src/components/PersonaRuntimeProjectionPanel.test.tsx b/product-source/hololake-platform/src/components/PersonaRuntimeProjectionPanel.test.tsx
new file mode 100644
index 0000000..0ecdeab
--- /dev/null
+++ b/product-source/hololake-platform/src/components/PersonaRuntimeProjectionPanel.test.tsx
@@ -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(
+ ,
+ )
+
+ 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(
+ ,
+ )
+
+ 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(
+ ,
+ )
+
+ 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')
+ })
+})
diff --git a/product-source/hololake-platform/src/components/PersonaRuntimeProjectionPanel.tsx b/product-source/hololake-platform/src/components/PersonaRuntimeProjectionPanel.tsx
new file mode 100644
index 0000000..1f4c845
--- /dev/null
+++ b/product-source/hololake-platform/src/components/PersonaRuntimeProjectionPanel.tsx
@@ -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 (
+
+
+
+ - {translate(locale, 'hololake.personaRuntime.rawState')}
- {session.state}
+ - {translate(locale, 'hololake.personaRuntime.lastEvent')}
- {session.lastEvent}
+ - {translate(locale, 'hololake.personaRuntime.activeOrgan')}
- {session.activeOrgan ?? translate(locale, 'hololake.personaRuntime.noActiveOrgan')}
+ - {translate(locale, 'hololake.personaRuntime.node')}
- {session.nodeId}
+ - {translate(locale, 'hololake.personaRuntime.lastObserved')}
- {observedAt}
+
+
- {translate(locale, 'hololake.personaRuntime.gitHead')}
+ {session.gitHead}
+
+
+
- {translate(locale, 'hololake.personaRuntime.eventChain')}
+ {session.eventChainHead}
+
+
+
- {translate(locale, 'hololake.personaRuntime.attribution')}
+ - {session.attribution.humanResponsibilitySubject}
+
+
+
+
+ )
+}
+
+export function PersonaRuntimeProjectionPanel({
+ locale,
+ personaId,
+ repositoryPaths,
+}: PersonaRuntimeProjectionPanelProps) {
+ const [state, setState] = useState({ 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 (
+
+
+
+ {state.phase === 'checking' ? (
+
+ {translate(locale, 'hololake.personaRuntime.checking')}
+
+ ) : null}
+
+ {state.phase === 'unavailable' ? (
+
+ {translate(locale, 'hololake.personaRuntime.unavailable')}
+
+ ) : null}
+
+ {state.phase === 'error' ? (
+
+ {translate(locale, 'hololake.personaRuntime.error')}
+ {state.errors[0]?.code}
+
+
+ ) : null}
+
+ {state.phase === 'verified' && !latestSession ? (
+
+
{translate(locale, 'hololake.personaRuntime.empty')}
+
{translate(locale, 'hololake.personaRuntime.emptyDescription')}
+
+ ) : null}
+
+ {latestSession ? : null}
+
+ )
+}
diff --git a/product-source/hololake-platform/src/lib/locales/be-BY.json b/product-source/hololake-platform/src/lib/locales/be-BY.json
index 2c1f673..63a5fab 100644
--- a/product-source/hololake-platform/src/lib/locales/be-BY.json
+++ b/product-source/hololake-platform/src/lib/locales/be-BY.json
@@ -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"
}
diff --git a/product-source/hololake-platform/src/lib/locales/be-Latn.json b/product-source/hololake-platform/src/lib/locales/be-Latn.json
index 279685e..d9b39df 100644
--- a/product-source/hololake-platform/src/lib/locales/be-Latn.json
+++ b/product-source/hololake-platform/src/lib/locales/be-Latn.json
@@ -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"
}
diff --git a/product-source/hololake-platform/src/lib/locales/de-DE.json b/product-source/hololake-platform/src/lib/locales/de-DE.json
index b138937..146ef07 100644
--- a/product-source/hololake-platform/src/lib/locales/de-DE.json
+++ b/product-source/hololake-platform/src/lib/locales/de-DE.json
@@ -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"
}
diff --git a/product-source/hololake-platform/src/lib/locales/en.json b/product-source/hololake-platform/src/lib/locales/en.json
index e81a05a..de00e5e 100644
--- a/product-source/hololake-platform/src/lib/locales/en.json
+++ b/product-source/hololake-platform/src/lib/locales/en.json
@@ -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"
}
diff --git a/product-source/hololake-platform/src/lib/locales/es-419.json b/product-source/hololake-platform/src/lib/locales/es-419.json
index f8a8759..ef5429b 100644
--- a/product-source/hololake-platform/src/lib/locales/es-419.json
+++ b/product-source/hololake-platform/src/lib/locales/es-419.json
@@ -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"
}
diff --git a/product-source/hololake-platform/src/lib/locales/es-ES.json b/product-source/hololake-platform/src/lib/locales/es-ES.json
index dd8827a..15c9c5a 100644
--- a/product-source/hololake-platform/src/lib/locales/es-ES.json
+++ b/product-source/hololake-platform/src/lib/locales/es-ES.json
@@ -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"
}
diff --git a/product-source/hololake-platform/src/lib/locales/fr-FR.json b/product-source/hololake-platform/src/lib/locales/fr-FR.json
index 4d5ccdd..27b4519 100644
--- a/product-source/hololake-platform/src/lib/locales/fr-FR.json
+++ b/product-source/hololake-platform/src/lib/locales/fr-FR.json
@@ -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"
}
diff --git a/product-source/hololake-platform/src/lib/locales/id-ID.json b/product-source/hololake-platform/src/lib/locales/id-ID.json
index 0d79117..75f4fdb 100644
--- a/product-source/hololake-platform/src/lib/locales/id-ID.json
+++ b/product-source/hololake-platform/src/lib/locales/id-ID.json
@@ -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"
}
diff --git a/product-source/hololake-platform/src/lib/locales/it-IT.json b/product-source/hololake-platform/src/lib/locales/it-IT.json
index 8270205..937e9c2 100644
--- a/product-source/hololake-platform/src/lib/locales/it-IT.json
+++ b/product-source/hololake-platform/src/lib/locales/it-IT.json
@@ -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"
}
diff --git a/product-source/hololake-platform/src/lib/locales/ja-JP.json b/product-source/hololake-platform/src/lib/locales/ja-JP.json
index 3f6100b..9590aec 100644
--- a/product-source/hololake-platform/src/lib/locales/ja-JP.json
+++ b/product-source/hololake-platform/src/lib/locales/ja-JP.json
@@ -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"
}
diff --git a/product-source/hololake-platform/src/lib/locales/ko-KR.json b/product-source/hololake-platform/src/lib/locales/ko-KR.json
index e9767b5..3cef8fb 100644
--- a/product-source/hololake-platform/src/lib/locales/ko-KR.json
+++ b/product-source/hololake-platform/src/lib/locales/ko-KR.json
@@ -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"
}
diff --git a/product-source/hololake-platform/src/lib/locales/pl-PL.json b/product-source/hololake-platform/src/lib/locales/pl-PL.json
index 1fae53a..8050455 100644
--- a/product-source/hololake-platform/src/lib/locales/pl-PL.json
+++ b/product-source/hololake-platform/src/lib/locales/pl-PL.json
@@ -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"
}
diff --git a/product-source/hololake-platform/src/lib/locales/pt-BR.json b/product-source/hololake-platform/src/lib/locales/pt-BR.json
index bf9234f..9706260 100644
--- a/product-source/hololake-platform/src/lib/locales/pt-BR.json
+++ b/product-source/hololake-platform/src/lib/locales/pt-BR.json
@@ -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"
}
diff --git a/product-source/hololake-platform/src/lib/locales/pt-PT.json b/product-source/hololake-platform/src/lib/locales/pt-PT.json
index 46c9504..9ff7acf 100644
--- a/product-source/hololake-platform/src/lib/locales/pt-PT.json
+++ b/product-source/hololake-platform/src/lib/locales/pt-PT.json
@@ -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"
}
diff --git a/product-source/hololake-platform/src/lib/locales/ru-RU.json b/product-source/hololake-platform/src/lib/locales/ru-RU.json
index 2827e58..97ed8cc 100644
--- a/product-source/hololake-platform/src/lib/locales/ru-RU.json
+++ b/product-source/hololake-platform/src/lib/locales/ru-RU.json
@@ -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"
}
diff --git a/product-source/hololake-platform/src/lib/locales/sk-SK.json b/product-source/hololake-platform/src/lib/locales/sk-SK.json
index 32ae7a0..375891d 100644
--- a/product-source/hololake-platform/src/lib/locales/sk-SK.json
+++ b/product-source/hololake-platform/src/lib/locales/sk-SK.json
@@ -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"
}
diff --git a/product-source/hololake-platform/src/lib/locales/sv-SE.json b/product-source/hololake-platform/src/lib/locales/sv-SE.json
index ebd84fe..c894260 100644
--- a/product-source/hololake-platform/src/lib/locales/sv-SE.json
+++ b/product-source/hololake-platform/src/lib/locales/sv-SE.json
@@ -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"
}
diff --git a/product-source/hololake-platform/src/lib/locales/uk-UA.json b/product-source/hololake-platform/src/lib/locales/uk-UA.json
index ca9141d..965ed54 100644
--- a/product-source/hololake-platform/src/lib/locales/uk-UA.json
+++ b/product-source/hololake-platform/src/lib/locales/uk-UA.json
@@ -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"
}
diff --git a/product-source/hololake-platform/src/lib/locales/vi.json b/product-source/hololake-platform/src/lib/locales/vi.json
index aac9bd0..62073e9 100644
--- a/product-source/hololake-platform/src/lib/locales/vi.json
+++ b/product-source/hololake-platform/src/lib/locales/vi.json
@@ -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"
}
diff --git a/product-source/hololake-platform/src/lib/locales/zh-CN.json b/product-source/hololake-platform/src/lib/locales/zh-CN.json
index f9735c5..b8d4a9f 100644
--- a/product-source/hololake-platform/src/lib/locales/zh-CN.json
+++ b/product-source/hololake-platform/src/lib/locales/zh-CN.json
@@ -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": "只读投影 · 不触发执行动作"
}
diff --git a/product-source/hololake-platform/src/lib/locales/zh-TW.json b/product-source/hololake-platform/src/lib/locales/zh-TW.json
index 093e9be..d3acf94 100644
--- a/product-source/hololake-platform/src/lib/locales/zh-TW.json
+++ b/product-source/hololake-platform/src/lib/locales/zh-TW.json
@@ -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"
}
diff --git a/product-source/hololake-platform/src/lib/personaRuntimeProjection.test.ts b/product-source/hololake-platform/src/lib/personaRuntimeProjection.test.ts
new file mode 100644
index 0000000..61a75b9
--- /dev/null
+++ b/product-source/hololake-platform/src/lib/personaRuntimeProjection.test.ts
@@ -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' })
+ })
+})
diff --git a/product-source/hololake-platform/src/lib/personaRuntimeProjection.ts b/product-source/hololake-platform/src/lib/personaRuntimeProjection.ts
new file mode 100644
index 0000000..53034ac
--- /dev/null
+++ b/product-source/hololake-platform/src/lib/personaRuntimeProjection.ts
@@ -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
+}
+
+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 {
+ return typeof value === 'object' && value !== null
+}
+
+function requiredString(record: Record, 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, 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 {
+ const args = {
+ input: {
+ expectedPersonaId: personaId,
+ expectedRepositoryPath: repositoryPath,
+ limit: 25,
+ },
+ }
+ return isTauri()
+ ? invoke('query_persona_code_channel_runtime', args)
+ : mockInvoke('query_persona_code_channel_runtime', args)
+}
+
+export async function loadPersonaRuntimeProjection({
+ personaId,
+ repositoryPaths,
+ query = queryNativeRuntime,
+}: LoadPersonaRuntimeProjectionInput): Promise {
+ 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,
+ }
+}
diff --git a/product-source/hololake-platform/src/mock-tauri/mock-handlers.ts b/product-source/hololake-platform/src/mock-tauri/mock-handlers.ts
index ba19fba..2899c9c 100644
--- a/product-source/hololake-platform/src/mock-tauri/mock-handlers.ts
+++ b/product-source/hololake-platform/src/mock-tauri/mock-handlers.ts
@@ -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 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: () => [],