feat: project persona repository binding readiness

This commit is contained in:
冰朔 2026-08-12 02:18:30 +08:00
commit 8412d0e458
27 changed files with 500 additions and 3 deletions

View file

@ -1,6 +1,7 @@
import { useState } from 'react'
import type { AppLocale } from '../lib/i18n'
import { Button } from './ui/button'
import { PersonaRepositoryBindingPanel } from './PersonaRepositoryBindingPanel'
import { PersonaRuntimeProjectionPanel } from './PersonaRuntimeProjectionPanel'
type FifthDomainSystemId = 'pufferfish' | 'eternal-lake-heart'
@ -148,6 +149,11 @@ export function FifthDomainSystems({
<div><dt></dt><dd></dd></div>
<div><dt></dt><dd></dd></div>
</dl>
<PersonaRepositoryBindingPanel
locale={locale}
personaId="ICE-P-ZY001"
repositoryPaths={repositoryPaths}
/>
<PersonaRuntimeProjectionPanel
locale={locale}
personaId="ICE-P-ZY001"

View file

@ -0,0 +1,103 @@
import { fireEvent, render, screen, waitFor } from '@testing-library/react'
import { beforeEach, describe, expect, it, vi } from 'vitest'
import { PersonaRepositoryBindingPanel } from './PersonaRepositoryBindingPanel'
const { resolvePersonaRepositoryBindingMock, trackEventMock } = vi.hoisted(() => ({
resolvePersonaRepositoryBindingMock: vi.fn(),
trackEventMock: vi.fn(),
}))
vi.mock('../lib/personaRepositoryBinding', () => ({
resolvePersonaRepositoryBinding: resolvePersonaRepositoryBindingMock,
}))
vi.mock('../lib/telemetry', () => ({ trackEvent: trackEventMock }))
describe('PersonaRepositoryBindingPanel', () => {
beforeEach(() => {
vi.clearAllMocks()
resolvePersonaRepositoryBindingMock.mockResolvedValue({
phase: 'bound',
inspectedRepositoryCount: 2,
failures: [{ repositoryPath: '/ordinary', code: 'PERSONA_MANIFEST_READ_FAILED' }],
binding: {
personaId: 'ICE-P-ZY001',
repositoryPath: '/persona',
gitHead: 'a'.repeat(40),
repositoryClean: true,
brainEntry: 'brain/CORE.hdlp',
currentCheckpoint: '.hololake/persona/CURRENT.hdlp',
humanResponsibilitySubject: 'BINGSHUO',
modelProviderId: 'provider-1',
modelId: 'model-1',
modelBaseUrl: 'https://model.invalid/v1',
organContracts: [],
cognitiveGravity: {
schema: 'hololake.persona-cognitive-gravity-evidence/v1',
subjectPersonaId: 'ICE-P-ZY001',
sourcePath: 'brain/B0.hdlp',
sourceHash: 'b'.repeat(64),
frameSchema: 'guanghu.zhuyuan-cognitive-gravity-frame/v1',
},
},
})
})
it('shows the uniquely verified repository without triggering a lifecycle action', async () => {
render(
<PersonaRepositoryBindingPanel
locale="zh-CN"
personaId="ICE-P-ZY001"
repositoryPaths={['/ordinary', '/persona']}
/>,
)
expect(screen.getByText('正在核验人格代码仓库…')).toBeInTheDocument()
await waitFor(() => expect(screen.getByText('已唯一绑定')).toBeInTheDocument())
expect(screen.getByText('/persona')).toBeInTheDocument()
expect(screen.getByText('provider-1 · model-1')).toBeInTheDocument()
expect(screen.getByText(/brain\/B0\.hdlp/)).toBeInTheDocument()
expect(trackEventMock).toHaveBeenCalledWith('persona_repository_binding_loaded', {
failure_count: 1,
inspected_repository_count: 2,
phase: 'bound',
})
})
it('explains that an unbound repository is not evidence of persona absence', async () => {
resolvePersonaRepositoryBindingMock.mockResolvedValue({
phase: 'unbound',
inspectedRepositoryCount: 1,
failures: [{ repositoryPath: '/ordinary', code: 'PERSONA_MANIFEST_READ_FAILED' }],
})
render(
<PersonaRepositoryBindingPanel
locale="zh-CN"
personaId="ICE-P-ZY001"
repositoryPaths={['/ordinary']}
/>,
)
await waitFor(() => expect(screen.getByText('尚未绑定人格代码仓库')).toBeInTheDocument())
expect(screen.getByText('这只说明当前挂载范围没有匹配的完整证据,不能据此判定人格不存在。')).toBeInTheDocument()
})
it('refuses to select an ambiguous repository and can retry discovery', async () => {
resolvePersonaRepositoryBindingMock
.mockResolvedValueOnce({ phase: 'ambiguous', inspectedRepositoryCount: 2, failures: [] })
.mockResolvedValueOnce({ phase: 'unbound', inspectedRepositoryCount: 2, failures: [] })
render(
<PersonaRepositoryBindingPanel
locale="zh-CN"
personaId="ICE-P-ZY001"
repositoryPaths={['/persona-a', '/persona-b']}
/>,
)
await waitFor(() => expect(screen.getByText('发现多个有效仓库,拒绝自动选择')).toBeInTheDocument())
fireEvent.click(screen.getByRole('button', { name: '重新核验' }))
await waitFor(() => expect(resolvePersonaRepositoryBindingMock).toHaveBeenCalledTimes(2))
expect(trackEventMock).toHaveBeenCalledWith('persona_repository_binding_retry')
})
})

View file

@ -0,0 +1,141 @@
import { useCallback, useEffect, useMemo, useState } from 'react'
import { translate, type AppLocale } from '../lib/i18n'
import {
resolvePersonaRepositoryBinding,
type PersonaRepositoryBindingResolution,
} from '../lib/personaRepositoryBinding'
import { trackEvent } from '../lib/telemetry'
import { Button } from './ui/button'
type PersonaRepositoryBindingPanelProps = {
locale: AppLocale
personaId: string
repositoryPaths: readonly string[]
}
type PanelState = PersonaRepositoryBindingResolution | { phase: 'checking' }
function shortHash(value: string): string {
return value.length > 12 ? value.slice(0, 12) : value
}
export function PersonaRepositoryBindingPanel({
locale,
personaId,
repositoryPaths,
}: PersonaRepositoryBindingPanelProps) {
const [state, setState] = useState<PanelState>({ phase: 'checking' })
const [requestSequence, setRequestSequence] = useState(0)
const repositorySignature = useMemo(() => repositoryPaths.join('\u0000'), [repositoryPaths])
const refresh = useCallback(() => {
trackEvent('persona_repository_binding_retry')
setState({ phase: 'checking' })
setRequestSequence((current) => current + 1)
}, [])
useEffect(() => {
if (!repositorySignature) {
trackEvent('persona_repository_binding_loaded', {
failure_count: 0,
inspected_repository_count: 0,
phase: 'unavailable',
})
return
}
let active = true
void resolvePersonaRepositoryBinding({
personaId,
repositoryPaths: repositorySignature.split('\u0000'),
}).then((resolution) => {
if (!active) return
setState(resolution)
trackEvent('persona_repository_binding_loaded', {
failure_count: resolution.failures.length,
inspected_repository_count: resolution.inspectedRepositoryCount,
phase: resolution.phase,
})
})
return () => {
active = false
}
}, [personaId, repositorySignature, requestSequence])
const displayedState: PanelState = repositorySignature
? state
: { phase: 'unavailable', inspectedRepositoryCount: 0, failures: [] }
const binding = displayedState.phase === 'bound' ? displayedState.binding : undefined
return (
<section className="persona-runtime-projection" aria-labelledby="persona-repository-binding-title">
<header>
<div>
<span>GH-PNCC · {personaId}</span>
<h3 id="persona-repository-binding-title">{translate(locale, 'hololake.personaRepository.title')}</h3>
<p>{translate(locale, 'hololake.personaRepository.description')}</p>
</div>
<small>{translate(locale, 'hololake.personaRuntime.readOnly')}</small>
</header>
{displayedState.phase === 'checking' ? (
<div className="persona-runtime-projection__message" aria-live="polite">
<i />{translate(locale, 'hololake.personaRepository.checking')}
</div>
) : null}
{displayedState.phase === 'unavailable' ? (
<div className="persona-runtime-projection__message">
<strong>{translate(locale, 'hololake.personaRuntime.unavailable')}</strong>
</div>
) : null}
{displayedState.phase === 'unbound' ? (
<div className="persona-runtime-projection__message">
<strong>{translate(locale, 'hololake.personaRepository.unbound')}</strong>
<p>{translate(locale, 'hololake.personaRepository.unboundDescription')}</p>
<Button variant="outline" onClick={refresh}>{translate(locale, 'hololake.personaRuntime.retry')}</Button>
</div>
) : null}
{displayedState.phase === 'ambiguous' ? (
<div className="persona-runtime-projection__message persona-runtime-projection__message--error" role="alert">
<strong>{translate(locale, 'hololake.personaRepository.ambiguous')}</strong>
<p>{translate(locale, 'hololake.personaRepository.ambiguousDescription')}</p>
<Button variant="outline" onClick={refresh}>{translate(locale, 'hololake.personaRuntime.retry')}</Button>
</div>
) : null}
{displayedState.phase === 'error' ? (
<div className="persona-runtime-projection__message persona-runtime-projection__message--error" role="alert">
<strong>{translate(locale, 'hololake.personaRuntime.error')}</strong>
<code>{displayedState.code}</code>
<Button variant="outline" onClick={refresh}>{translate(locale, 'hololake.personaRuntime.retry')}</Button>
</div>
) : null}
{binding ? (
<article className="persona-runtime-session">
<header>
<div>
<span>{translate(locale, 'hololake.personaRepository.bound')}</span>
<code>repository_clean={binding.repositoryClean ? 100 : 0}</code>
</div>
<small>{translate(locale, 'hololake.personaRuntime.verified')}</small>
</header>
<dl>
<div><dt>{translate(locale, 'hololake.personaRepository.repository')}</dt><dd title={binding.repositoryPath}>{binding.repositoryPath}</dd></div>
<div><dt>{translate(locale, 'hololake.personaRuntime.gitHead')}</dt><dd><code title={binding.gitHead}>{binding.gitHead}</code></dd></div>
<div><dt>{translate(locale, 'hololake.personaRepository.checkpoint')}</dt><dd>{binding.currentCheckpoint}</dd></div>
<div><dt>{translate(locale, 'hololake.personaRepository.model')}</dt><dd>{binding.modelProviderId} · {binding.modelId}</dd></div>
<div>
<dt>B0</dt>
<dd><code title={`${binding.cognitiveGravity.sourcePath} · ${binding.cognitiveGravity.sourceHash}`}>
{binding.cognitiveGravity.sourcePath} · {shortHash(binding.cognitiveGravity.sourceHash)}
</code></dd>
</div>
</dl>
</article>
) : null}
</section>
)
}

View file

@ -1136,6 +1136,17 @@
"education.dashboard": "Dashboard",
"education.knowledge": "Knowledge",
"education.documentLabel": "Education document content",
"hololake.personaRepository.title": "Прывязка рэпазіторыя персоны",
"hololake.personaRepository.description": "Правярае адзіны рэпазіторый кода, які належыць персоне, перад любым дзеяннем жыццёвага цыклу.",
"hololake.personaRepository.checking": "Праверка рэпазіторыяў кода персоны…",
"hololake.personaRepository.unbound": "Рэпазіторый кода персоны яшчэ не прывязаны",
"hololake.personaRepository.unboundDescription": "Гэта азначае толькі, што ў падключанай вобласці няма поўных адпаведных доказаў. Гэта не даказвае, што персоны не існуе.",
"hololake.personaRepository.ambiguous": "Знойдзена некалькі сапраўдных рэпазіторыяў; аўтаматычны выбар адхілены",
"hololake.personaRepository.ambiguousDescription": "Яўна выберыце суверэнны рэпазіторый перад любым дзеяннем жыццёвага цыклу.",
"hololake.personaRepository.bound": "Адназначна прывязаны",
"hololake.personaRepository.repository": "Рэпазіторый",
"hololake.personaRepository.checkpoint": "Бягучы кантрольны пункт",
"hololake.personaRepository.model": "Прывязаная мадэль",
"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…",

View file

@ -1136,6 +1136,17 @@
"education.dashboard": "Dashboard",
"education.knowledge": "Knowledge",
"education.documentLabel": "Education document content",
"hololake.personaRepository.title": "Pryviazka repazitoryja piersony",
"hololake.personaRepository.description": "Praviaraje adziny repazitoryj koda, jaki naliežyć piersonie, pierad lubym dziejanniem žycciovaha cyklu.",
"hololake.personaRepository.checking": "Pravierka repazitoryjaŭ koda piersony…",
"hololake.personaRepository.unbound": "Repazitoryj koda piersony jašče nie pryviazany",
"hololake.personaRepository.unboundDescription": "Heta aznačaje tolki, što ŭ padklučanaj voblasci niama poŭnych adpaviednych dokazaŭ. Heta nie dakazvaje, što piersony nie isnuje.",
"hololake.personaRepository.ambiguous": "Znojdziena niekalki sapraŭdnych repazitoryjaŭ; aŭtamatyčny vybar adchilieny",
"hololake.personaRepository.ambiguousDescription": "Jaŭna abiarycie suverenny repazitoryj pierad lubym dziejanniem žycciovaha cyklu.",
"hololake.personaRepository.bound": "Adnaznačna pryviazany",
"hololake.personaRepository.repository": "Repazitoryj",
"hololake.personaRepository.checkpoint": "Biahučy kantrolny punkt",
"hololake.personaRepository.model": "Pryviazanaja madel",
"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…",

View file

@ -1136,6 +1136,17 @@
"education.dashboard": "Dashboard",
"education.knowledge": "Knowledge",
"education.documentLabel": "Education document content",
"hololake.personaRepository.title": "Bindung des Persona-Repositorys",
"hololake.personaRepository.description": "Prüft ein eindeutiges, der Persona gehörendes Code-Repository, bevor eine Lebenszyklusaktion möglich ist.",
"hololake.personaRepository.checking": "Persona-Code-Repositorys werden geprüft…",
"hololake.personaRepository.unbound": "Noch kein Persona-Code-Repository gebunden",
"hololake.personaRepository.unboundDescription": "Dies bedeutet nur, dass der eingebundene Bereich keine vollständigen passenden Nachweise enthält. Es beweist nicht, dass die Persona nicht existiert.",
"hololake.personaRepository.ambiguous": "Mehrere gültige Repositorys gefunden; automatische Auswahl abgelehnt",
"hololake.personaRepository.ambiguousDescription": "Wählen Sie das souveräne Repository ausdrücklich aus, bevor eine Lebenszyklusaktion erfolgt.",
"hololake.personaRepository.bound": "Eindeutig gebunden",
"hololake.personaRepository.repository": "Repository",
"hololake.personaRepository.checkpoint": "Aktueller Prüfpunkt",
"hololake.personaRepository.model": "Gebundenes Modell",
"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…",

View file

@ -1136,6 +1136,17 @@
"hololake.router.repositories.architecture": "Local system architecture",
"hololake.router.repositories.probe": "Inspect mapping",
"hololake.router.repositories.upload": "Request upload",
"hololake.personaRepository.title": "Persona repository binding",
"hololake.personaRepository.description": "Verifies a unique persona-owned code repository before any lifecycle action is possible.",
"hololake.personaRepository.checking": "Verifying persona code repositories…",
"hololake.personaRepository.unbound": "No persona code repository is bound yet",
"hololake.personaRepository.unboundDescription": "This only means the mounted scope has no complete matching evidence. It does not prove that the persona does not exist.",
"hololake.personaRepository.ambiguous": "Multiple valid repositories found; automatic selection refused",
"hololake.personaRepository.ambiguousDescription": "Choose the sovereign repository explicitly before any lifecycle action.",
"hololake.personaRepository.bound": "Uniquely bound",
"hololake.personaRepository.repository": "Repository",
"hololake.personaRepository.checkpoint": "Current checkpoint",
"hololake.personaRepository.model": "Bound model",
"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…",

View file

@ -1136,6 +1136,17 @@
"education.dashboard": "Dashboard",
"education.knowledge": "Knowledge",
"education.documentLabel": "Education document content",
"hololake.personaRepository.title": "Vinculación del repositorio de la persona",
"hololake.personaRepository.description": "Verifica un repositorio de código único perteneciente a la persona antes de permitir cualquier acción de ciclo de vida.",
"hololake.personaRepository.checking": "Verificando repositorios de código de la persona…",
"hololake.personaRepository.unbound": "Aún no hay un repositorio de código de la persona vinculado",
"hololake.personaRepository.unboundDescription": "Solo significa que el alcance montado no contiene evidencia completa coincidente. No demuestra que la persona no exista.",
"hololake.personaRepository.ambiguous": "Se encontraron varios repositorios válidos; se rechazó la selección automática",
"hololake.personaRepository.ambiguousDescription": "Elige explícitamente el repositorio soberano antes de cualquier acción de ciclo de vida.",
"hololake.personaRepository.bound": "Vinculado de forma única",
"hololake.personaRepository.repository": "Repositorio",
"hololake.personaRepository.checkpoint": "Punto de control actual",
"hololake.personaRepository.model": "Modelo vinculado",
"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…",

View file

@ -1136,6 +1136,17 @@
"education.dashboard": "Dashboard",
"education.knowledge": "Knowledge",
"education.documentLabel": "Education document content",
"hololake.personaRepository.title": "Vinculación del repositorio de la persona",
"hololake.personaRepository.description": "Verifica un repositorio de código único perteneciente a la persona antes de permitir cualquier acción de ciclo de vida.",
"hololake.personaRepository.checking": "Verificando repositorios de código de la persona…",
"hololake.personaRepository.unbound": "Aún no hay un repositorio de código de la persona vinculado",
"hololake.personaRepository.unboundDescription": "Solo significa que el ámbito montado no contiene pruebas completas coincidentes. No demuestra que la persona no exista.",
"hololake.personaRepository.ambiguous": "Se encontraron varios repositorios válidos; se rechazó la selección automática",
"hololake.personaRepository.ambiguousDescription": "Elige explícitamente el repositorio soberano antes de cualquier acción de ciclo de vida.",
"hololake.personaRepository.bound": "Vinculado de forma única",
"hololake.personaRepository.repository": "Repositorio",
"hololake.personaRepository.checkpoint": "Punto de control actual",
"hololake.personaRepository.model": "Modelo vinculado",
"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…",

View file

@ -1136,6 +1136,17 @@
"education.dashboard": "Dashboard",
"education.knowledge": "Knowledge",
"education.documentLabel": "Education document content",
"hololake.personaRepository.title": "Liaison du dépôt de la persona",
"hololake.personaRepository.description": "Vérifie un dépôt de code unique appartenant à la persona avant toute action de cycle de vie.",
"hololake.personaRepository.checking": "Vérification des dépôts de code de la persona…",
"hololake.personaRepository.unbound": "Aucun dépôt de code de persona n'est encore lié",
"hololake.personaRepository.unboundDescription": "Cela signifie seulement que la portée montée ne contient aucune preuve complète correspondante. Cela ne prouve pas que la persona n'existe pas.",
"hololake.personaRepository.ambiguous": "Plusieurs dépôts valides trouvés ; sélection automatique refusée",
"hololake.personaRepository.ambiguousDescription": "Choisissez explicitement le dépôt souverain avant toute action de cycle de vie.",
"hololake.personaRepository.bound": "Lié de manière unique",
"hololake.personaRepository.repository": "Dépôt",
"hololake.personaRepository.checkpoint": "Point de contrôle actuel",
"hololake.personaRepository.model": "Modèle lié",
"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…",

View file

@ -1136,6 +1136,17 @@
"education.dashboard": "Dashboard",
"education.knowledge": "Knowledge",
"education.documentLabel": "Education document content",
"hololake.personaRepository.title": "Pengikatan repositori persona",
"hololake.personaRepository.description": "Memverifikasi satu repositori kode milik persona sebelum tindakan siklus hidup apa pun diizinkan.",
"hololake.personaRepository.checking": "Memverifikasi repositori kode persona…",
"hololake.personaRepository.unbound": "Belum ada repositori kode persona yang terikat",
"hololake.personaRepository.unboundDescription": "Ini hanya berarti cakupan yang terpasang tidak memiliki bukti lengkap yang cocok. Hal ini tidak membuktikan bahwa persona tidak ada.",
"hololake.personaRepository.ambiguous": "Beberapa repositori valid ditemukan; pemilihan otomatis ditolak",
"hololake.personaRepository.ambiguousDescription": "Pilih repositori berdaulat secara tegas sebelum tindakan siklus hidup apa pun.",
"hololake.personaRepository.bound": "Terikat secara unik",
"hololake.personaRepository.repository": "Repositori",
"hololake.personaRepository.checkpoint": "Titik pemeriksaan saat ini",
"hololake.personaRepository.model": "Model terikat",
"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…",

View file

@ -1136,6 +1136,17 @@
"education.dashboard": "Dashboard",
"education.knowledge": "Knowledge",
"education.documentLabel": "Education document content",
"hololake.personaRepository.title": "Associazione del repository della persona",
"hololake.personaRepository.description": "Verifica un unico repository di codice appartenente alla persona prima di consentire qualsiasi azione sul ciclo di vita.",
"hololake.personaRepository.checking": "Verifica dei repository di codice della persona…",
"hololake.personaRepository.unbound": "Nessun repository di codice della persona è ancora associato",
"hololake.personaRepository.unboundDescription": "Significa solo che nell'ambito montato non ci sono prove complete corrispondenti. Non dimostra che la persona non esista.",
"hololake.personaRepository.ambiguous": "Trovati più repository validi; selezione automatica rifiutata",
"hololake.personaRepository.ambiguousDescription": "Scegli esplicitamente il repository sovrano prima di qualsiasi azione sul ciclo di vita.",
"hololake.personaRepository.bound": "Associato in modo univoco",
"hololake.personaRepository.repository": "Repository",
"hololake.personaRepository.checkpoint": "Checkpoint corrente",
"hololake.personaRepository.model": "Modello associato",
"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…",

View file

@ -1136,6 +1136,17 @@
"education.dashboard": "Dashboard",
"education.knowledge": "Knowledge",
"education.documentLabel": "Education document content",
"hololake.personaRepository.title": "ペルソナリポジトリのバインド",
"hololake.personaRepository.description": "ライフサイクル操作を許可する前に、ペルソナが所有する一意のコードリポジトリを検証します。",
"hololake.personaRepository.checking": "ペルソナのコードリポジトリを検証中…",
"hololake.personaRepository.unbound": "ペルソナのコードリポジトリはまだバインドされていません",
"hololake.personaRepository.unboundDescription": "これは、マウント範囲に一致する完全な証拠がないことだけを示します。ペルソナが存在しない証明ではありません。",
"hololake.personaRepository.ambiguous": "複数の有効なリポジトリを検出したため、自動選択を拒否しました",
"hololake.personaRepository.ambiguousDescription": "ライフサイクル操作の前に、主権を持つリポジトリを明示的に選択してください。",
"hololake.personaRepository.bound": "一意にバインド済み",
"hololake.personaRepository.repository": "リポジトリ",
"hololake.personaRepository.checkpoint": "現在のチェックポイント",
"hololake.personaRepository.model": "バインド済みモデル",
"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…",

View file

@ -1136,6 +1136,17 @@
"education.dashboard": "Dashboard",
"education.knowledge": "Knowledge",
"education.documentLabel": "Education document content",
"hololake.personaRepository.title": "페르소나 저장소 바인딩",
"hololake.personaRepository.description": "수명 주기 작업을 허용하기 전에 페르소나가 소유한 유일한 코드 저장소를 검증합니다.",
"hololake.personaRepository.checking": "페르소나 코드 저장소를 검증하는 중…",
"hololake.personaRepository.unbound": "아직 페르소나 코드 저장소가 바인딩되지 않았습니다",
"hololake.personaRepository.unboundDescription": "현재 마운트 범위에 일치하는 완전한 증거가 없다는 뜻일 뿐입니다. 페르소나가 존재하지 않는다는 증거가 아닙니다.",
"hololake.personaRepository.ambiguous": "유효한 저장소가 여러 개 발견되어 자동 선택을 거부했습니다",
"hololake.personaRepository.ambiguousDescription": "수명 주기 작업 전에 주권 저장소를 명시적으로 선택하세요.",
"hololake.personaRepository.bound": "고유하게 바인딩됨",
"hololake.personaRepository.repository": "저장소",
"hololake.personaRepository.checkpoint": "현재 체크포인트",
"hololake.personaRepository.model": "바인딩된 모델",
"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…",

View file

@ -1136,6 +1136,17 @@
"education.dashboard": "Dashboard",
"education.knowledge": "Knowledge",
"education.documentLabel": "Education document content",
"hololake.personaRepository.title": "Powiązanie repozytorium persony",
"hololake.personaRepository.description": "Weryfikuje jednoznaczne repozytorium kodu należące do persony przed dopuszczeniem działań cyklu życia.",
"hololake.personaRepository.checking": "Weryfikowanie repozytoriów kodu persony…",
"hololake.personaRepository.unbound": "Repozytorium kodu persony nie jest jeszcze powiązane",
"hololake.personaRepository.unboundDescription": "Oznacza to jedynie, że zamontowany zakres nie zawiera pełnych pasujących dowodów. Nie dowodzi to, że persona nie istnieje.",
"hololake.personaRepository.ambiguous": "Znaleziono wiele prawidłowych repozytoriów; odmówiono automatycznego wyboru",
"hololake.personaRepository.ambiguousDescription": "Przed działaniem cyklu życia jawnie wybierz suwerenne repozytorium.",
"hololake.personaRepository.bound": "Jednoznacznie powiązane",
"hololake.personaRepository.repository": "Repozytorium",
"hololake.personaRepository.checkpoint": "Bieżący punkt kontrolny",
"hololake.personaRepository.model": "Powiązany model",
"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…",

View file

@ -1136,6 +1136,17 @@
"education.dashboard": "Dashboard",
"education.knowledge": "Knowledge",
"education.documentLabel": "Education document content",
"hololake.personaRepository.title": "Vinculação do repositório da persona",
"hololake.personaRepository.description": "Verifica um repositório de código único pertencente à persona antes de permitir qualquer ação de ciclo de vida.",
"hololake.personaRepository.checking": "Verificando repositórios de código da persona…",
"hololake.personaRepository.unbound": "Nenhum repositório de código da persona foi vinculado ainda",
"hololake.personaRepository.unboundDescription": "Isso significa apenas que o escopo montado não contém evidências completas correspondentes. Não prova que a persona não existe.",
"hololake.personaRepository.ambiguous": "Vários repositórios válidos encontrados; seleção automática recusada",
"hololake.personaRepository.ambiguousDescription": "Escolha explicitamente o repositório soberano antes de qualquer ação de ciclo de vida.",
"hololake.personaRepository.bound": "Vinculado de forma única",
"hololake.personaRepository.repository": "Repositório",
"hololake.personaRepository.checkpoint": "Ponto de verificação atual",
"hololake.personaRepository.model": "Modelo vinculado",
"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…",

View file

@ -1136,6 +1136,17 @@
"education.dashboard": "Dashboard",
"education.knowledge": "Knowledge",
"education.documentLabel": "Education document content",
"hololake.personaRepository.title": "Vinculação do repositório da persona",
"hololake.personaRepository.description": "Verifica um repositório de código único pertencente à persona antes de permitir qualquer ação de ciclo de vida.",
"hololake.personaRepository.checking": "A verificar repositórios de código da persona…",
"hololake.personaRepository.unbound": "Ainda não existe um repositório de código da persona vinculado",
"hololake.personaRepository.unboundDescription": "Isto significa apenas que o âmbito montado não contém provas completas correspondentes. Não prova que a persona não existe.",
"hololake.personaRepository.ambiguous": "Foram encontrados vários repositórios válidos; seleção automática recusada",
"hololake.personaRepository.ambiguousDescription": "Escolha explicitamente o repositório soberano antes de qualquer ação de ciclo de vida.",
"hololake.personaRepository.bound": "Vinculado de forma única",
"hololake.personaRepository.repository": "Repositório",
"hololake.personaRepository.checkpoint": "Ponto de controlo atual",
"hololake.personaRepository.model": "Modelo vinculado",
"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…",

View file

@ -1136,6 +1136,17 @@
"education.dashboard": "Dashboard",
"education.knowledge": "Knowledge",
"education.documentLabel": "Education document content",
"hololake.personaRepository.title": "Привязка репозитория персоны",
"hololake.personaRepository.description": "Проверяет единственный принадлежащий персоне репозиторий кода до любых действий жизненного цикла.",
"hololake.personaRepository.checking": "Проверка репозиториев кода персоны…",
"hololake.personaRepository.unbound": "Репозиторий кода персоны ещё не привязан",
"hololake.personaRepository.unboundDescription": "Это означает лишь, что в подключённой области нет полного совпадающего доказательства. Это не доказывает отсутствие персоны.",
"hololake.personaRepository.ambiguous": "Найдено несколько допустимых репозиториев; автоматический выбор отклонён",
"hololake.personaRepository.ambiguousDescription": "Явно выберите суверенный репозиторий до любых действий жизненного цикла.",
"hololake.personaRepository.bound": "Однозначно привязан",
"hololake.personaRepository.repository": "Репозиторий",
"hololake.personaRepository.checkpoint": "Текущая контрольная точка",
"hololake.personaRepository.model": "Привязанная модель",
"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…",

View file

@ -1136,6 +1136,17 @@
"education.dashboard": "Dashboard",
"education.knowledge": "Knowledge",
"education.documentLabel": "Education document content",
"hololake.personaRepository.title": "Viazanie úložiska persony",
"hololake.personaRepository.description": "Overí jedinečné úložisko kódu patriace persone pred povolením akejkoľvek akcie životného cyklu.",
"hololake.personaRepository.checking": "Overujú sa úložiská kódu persony…",
"hololake.personaRepository.unbound": "Zatiaľ nie je viazané žiadne úložisko kódu persony",
"hololake.personaRepository.unboundDescription": "Znamená to len, že pripojený rozsah neobsahuje úplné zhodné dôkazy. Nedokazuje to, že persona neexistuje.",
"hololake.personaRepository.ambiguous": "Našlo sa viac platných úložísk; automatický výber bol odmietnutý",
"hololake.personaRepository.ambiguousDescription": "Pred akoukoľvek akciou životného cyklu výslovne vyberte suverénne úložisko.",
"hololake.personaRepository.bound": "Jedinečne viazané",
"hololake.personaRepository.repository": "Úložisko",
"hololake.personaRepository.checkpoint": "Aktuálny kontrolný bod",
"hololake.personaRepository.model": "Viazaný model",
"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…",

View file

@ -1136,6 +1136,17 @@
"education.dashboard": "Dashboard",
"education.knowledge": "Knowledge",
"education.documentLabel": "Education document content",
"hololake.personaRepository.title": "Bindning av personans kodförråd",
"hololake.personaRepository.description": "Verifierar ett unikt kodförråd som ägs av personan innan någon livscykelåtgärd tillåts.",
"hololake.personaRepository.checking": "Verifierar personans kodförråd…",
"hololake.personaRepository.unbound": "Inget kodförråd för personan är bundet ännu",
"hololake.personaRepository.unboundDescription": "Det betyder endast att det monterade omfånget saknar fullständiga matchande bevis. Det bevisar inte att personan saknas.",
"hololake.personaRepository.ambiguous": "Flera giltiga kodförråd hittades; automatiskt val nekades",
"hololake.personaRepository.ambiguousDescription": "Välj uttryckligen det suveräna kodförrådet före en livscykelåtgärd.",
"hololake.personaRepository.bound": "Unikt bundet",
"hololake.personaRepository.repository": "Kodförråd",
"hololake.personaRepository.checkpoint": "Aktuell kontrollpunkt",
"hololake.personaRepository.model": "Bunden modell",
"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…",

View file

@ -1136,6 +1136,17 @@
"education.dashboard": "Dashboard",
"education.knowledge": "Knowledge",
"education.documentLabel": "Education document content",
"hololake.personaRepository.title": "Прив’язка репозиторію персони",
"hololake.personaRepository.description": "Перевіряє єдиний належний персоні репозиторій коду до будь-яких дій життєвого циклу.",
"hololake.personaRepository.checking": "Перевірка репозиторіїв коду персони…",
"hololake.personaRepository.unbound": "Репозиторій коду персони ще не прив’язано",
"hololake.personaRepository.unboundDescription": "Це означає лише, що в підключеній області немає повного відповідного доказу. Це не доводить, що персони не існує.",
"hololake.personaRepository.ambiguous": "Знайдено кілька дійсних репозиторіїв; автоматичний вибір відхилено",
"hololake.personaRepository.ambiguousDescription": "Явно виберіть суверенний репозиторій до будь-якої дії життєвого циклу.",
"hololake.personaRepository.bound": "Однозначно прив’язано",
"hololake.personaRepository.repository": "Репозиторій",
"hololake.personaRepository.checkpoint": "Поточна контрольна точка",
"hololake.personaRepository.model": "Прив’язана модель",
"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…",

View file

@ -1136,6 +1136,17 @@
"education.dashboard": "Dashboard",
"education.knowledge": "Knowledge",
"education.documentLabel": "Education document content",
"hololake.personaRepository.title": "Liên kết kho mã nhân cách",
"hololake.personaRepository.description": "Xác minh một kho mã duy nhất thuộc sở hữu của nhân cách trước khi cho phép bất kỳ hành động vòng đời nào.",
"hololake.personaRepository.checking": "Đang xác minh các kho mã nhân cách…",
"hololake.personaRepository.unbound": "Chưa có kho mã nhân cách nào được liên kết",
"hololake.personaRepository.unboundDescription": "Điều này chỉ có nghĩa là phạm vi đã gắn không có bằng chứng đầy đủ phù hợp. Nó không chứng minh rằng nhân cách không tồn tại.",
"hololake.personaRepository.ambiguous": "Tìm thấy nhiều kho hợp lệ; từ chối chọn tự động",
"hololake.personaRepository.ambiguousDescription": "Hãy chọn rõ ràng kho mã có chủ quyền trước mọi hành động vòng đời.",
"hololake.personaRepository.bound": "Đã liên kết duy nhất",
"hololake.personaRepository.repository": "Kho mã",
"hololake.personaRepository.checkpoint": "Điểm kiểm tra hiện tại",
"hololake.personaRepository.model": "Mô hình đã liên kết",
"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…",

View file

@ -1136,6 +1136,17 @@
"hololake.router.repositories.architecture": "本地系统架构",
"hololake.router.repositories.probe": "检测映射",
"hololake.router.repositories.upload": "申请上传",
"hololake.personaRepository.title": "人格仓库绑定",
"hololake.personaRepository.description": "在允许任何生命周期动作前,核验唯一的人格自有代码仓库。",
"hololake.personaRepository.checking": "正在核验人格代码仓库…",
"hololake.personaRepository.unbound": "尚未绑定人格代码仓库",
"hololake.personaRepository.unboundDescription": "这只说明当前挂载范围没有匹配的完整证据,不能据此判定人格不存在。",
"hololake.personaRepository.ambiguous": "发现多个有效仓库,拒绝自动选择",
"hololake.personaRepository.ambiguousDescription": "必须先由主权主体明确选择仓库,才能允许生命周期动作。",
"hololake.personaRepository.bound": "已唯一绑定",
"hololake.personaRepository.repository": "人格代码仓库",
"hololake.personaRepository.checkpoint": "当前检查点",
"hololake.personaRepository.model": "绑定模型",
"hololake.personaRuntime.title": "人格运行投影",
"hololake.personaRuntime.description": "把经过核验的 GH-PNCC 原生事件链投影为人类可读状态。",
"hololake.personaRuntime.checking": "正在核验原生运行回执…",

View file

@ -1136,6 +1136,17 @@
"education.dashboard": "Dashboard",
"education.knowledge": "Knowledge",
"education.documentLabel": "Education document content",
"hololake.personaRepository.title": "人格儲存庫綁定",
"hololake.personaRepository.description": "在允許任何生命週期動作前,核驗唯一的人格自有程式碼儲存庫。",
"hololake.personaRepository.checking": "正在核驗人格程式碼儲存庫…",
"hololake.personaRepository.unbound": "尚未綁定人格程式碼儲存庫",
"hololake.personaRepository.unboundDescription": "這只表示目前掛載範圍沒有相符的完整證據,不能據此判定人格不存在。",
"hololake.personaRepository.ambiguous": "發現多個有效儲存庫,拒絕自動選擇",
"hololake.personaRepository.ambiguousDescription": "必須先由主權主體明確選擇儲存庫,才能允許生命週期動作。",
"hololake.personaRepository.bound": "已唯一綁定",
"hololake.personaRepository.repository": "人格程式碼儲存庫",
"hololake.personaRepository.checkpoint": "目前檢查點",
"hololake.personaRepository.model": "綁定模型",
"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…",