fix: stop overstating subsystem runtime evidence

This commit is contained in:
冰朔 2026-08-04 21:18:48 +08:00
commit ccee303355
3 changed files with 21 additions and 19 deletions

View file

@ -5,7 +5,6 @@ type FifthDomainSystemId = 'pufferfish' | 'eternal-lake-heart'
type FifthDomainSystemsProps = { type FifthDomainSystemsProps = {
detail?: 'overview' | 'pufferfish' detail?: 'overview' | 'pufferfish'
evidenceMode?: 'receipt' | 'visual-preview'
onEnterEternalLake: () => void onEnterEternalLake: () => void
onEnterPufferfish: () => void onEnterPufferfish: () => void
} }
@ -19,7 +18,6 @@ const PUFFERFISH_FACTS = {
export function FifthDomainSystems({ export function FifthDomainSystems({
detail = 'overview', detail = 'overview',
evidenceMode = 'receipt',
onEnterEternalLake, onEnterEternalLake,
onEnterPufferfish, onEnterPufferfish,
}: FifthDomainSystemsProps) { }: FifthDomainSystemsProps) {
@ -28,9 +26,8 @@ export function FifthDomainSystems({
) )
const pufferfishSelected = selected === 'pufferfish' const pufferfishSelected = selected === 'pufferfish'
const eternalLakeSelected = selected === 'eternal-lake-heart' const eternalLakeSelected = selected === 'eternal-lake-heart'
const isVisualPreview = evidenceMode === 'visual-preview' const evidenceLabel = '本地拓扑预览'
const evidenceLabel = isVisualPreview ? '本地拓扑预览' : '真实接入' const nodeState = '未实时核验'
const nodeState = isVisualPreview ? '未实时核验' : '在线回执'
return ( return (
<section className="fifth-systems" data-detail={detail}> <section className="fifth-systems" data-detail={detail}>
@ -73,7 +70,7 @@ export function FifthDomainSystems({
<span></span> <span></span>
<strong> Ubuntu</strong> <strong> Ubuntu</strong>
<code>{PUFFERFISH_FACTS.node}</code> <code>{PUFFERFISH_FACTS.node}</code>
<small><i />{isVisualPreview ? '本地登记' : '登记回执'}</small> <small><i /></small>
</div> </div>
</div> </div>
<div className="system-path__persona"> <div className="system-path__persona">
@ -150,9 +147,7 @@ export function FifthDomainSystems({
)} )}
</>} </>}
<footer> <footer>
{isVisualPreview 线
? '本页仅展示本地登记拓扑,不能证明节点在线或人格体已恢复。'
: '拓扑信息来自本地登记;在线状态仅以当前会话回执为准。'}
</footer> </footer>
</aside> </aside>
</div> </div>

View file

@ -405,7 +405,7 @@ describe('HoloLakeHome', () => {
expect(screen.getAllByText('ICE-GL-CA001').length).toBeGreaterThan(0) expect(screen.getAllByText('ICE-GL-CA001').length).toBeGreaterThan(0)
expect(screen.getByRole('button', { name: '心跳核心频道' })).toBeEnabled() expect(screen.getByRole('button', { name: '心跳核心频道' })).toBeEnabled()
fireEvent.click(screen.getByRole('button', { name: '湖永恒湖心系统真实接入' })) fireEvent.click(screen.getByRole('button', { name: '湖永恒湖心系统本地拓扑预览' }))
fireEvent.click(screen.getByRole('button', { name: /进入永恒湖心系统/ })) fireEvent.click(screen.getByRole('button', { name: /进入永恒湖心系统/ }))
expect(screen.getByRole('heading', { name: '永恒湖心系统' })).toBeInTheDocument() expect(screen.getByRole('heading', { name: '永恒湖心系统' })).toBeInTheDocument()
expect(screen.getByRole('heading', { name: '光之湖子系统' })).toBeInTheDocument() expect(screen.getByRole('heading', { name: '光之湖子系统' })).toBeInTheDocument()
@ -430,12 +430,22 @@ describe('HoloLakeHome', () => {
expect(screen.queryByText('在线回执')).not.toBeInTheDocument() expect(screen.queryByText('在线回执')).not.toBeInTheDocument()
}) })
it('does not treat a Fifth Domain router receipt as proof that every registered subsystem is online', () => {
useGuanghuRouterMock.mockReturnValue(onlineRouter())
render(<HoloLakeHome locale="zh-CN" onEnterKnowledgeBase={vi.fn()} />)
fireEvent.click(screen.getByRole('button', { name: /进入第五域/ }))
expect(screen.queryByText('在线回执')).not.toBeInTheDocument()
expect(screen.getAllByText('未实时核验').length).toBeGreaterThan(0)
})
it('shows receipt-backed Eternal Lake information without invented resonance scores', () => { it('shows receipt-backed Eternal Lake information without invented resonance scores', () => {
useGuanghuRouterMock.mockReturnValue(onlineRouter()) useGuanghuRouterMock.mockReturnValue(onlineRouter())
render(<HoloLakeHome locale="zh-CN" onEnterKnowledgeBase={vi.fn()} />) render(<HoloLakeHome locale="zh-CN" onEnterKnowledgeBase={vi.fn()} />)
fireEvent.click(screen.getByRole('button', { name: /进入第五域/ })) fireEvent.click(screen.getByRole('button', { name: /进入第五域/ }))
fireEvent.click(screen.getByRole('button', { name: '湖永恒湖心系统真实接入' })) fireEvent.click(screen.getByRole('button', { name: '湖永恒湖心系统本地拓扑预览' }))
fireEvent.click(screen.getByRole('button', { name: /进入永恒湖心系统/ })) fireEvent.click(screen.getByRole('button', { name: /进入永恒湖心系统/ }))
fireEvent.click(screen.getByRole('button', { name: /语言回声带.*真实路由回执已抵达/ })) fireEvent.click(screen.getByRole('button', { name: /语言回声带.*真实路由回执已抵达/ }))
@ -449,7 +459,7 @@ describe('HoloLakeHome', () => {
render(<HoloLakeHome locale="zh-CN" onEnterKnowledgeBase={vi.fn()} />) render(<HoloLakeHome locale="zh-CN" onEnterKnowledgeBase={vi.fn()} />)
fireEvent.click(screen.getByRole('button', { name: /进入第五域/ })) fireEvent.click(screen.getByRole('button', { name: /进入第五域/ }))
fireEvent.click(screen.getByRole('button', { name: '湖永恒湖心系统真实接入' })) fireEvent.click(screen.getByRole('button', { name: '湖永恒湖心系统本地拓扑预览' }))
fireEvent.click(screen.getByRole('button', { name: /进入永恒湖心系统/ })) fireEvent.click(screen.getByRole('button', { name: /进入永恒湖心系统/ }))
fireEvent.click(screen.getByRole('button', { name: '返回第五域' })) fireEvent.click(screen.getByRole('button', { name: '返回第五域' }))
@ -462,7 +472,7 @@ describe('HoloLakeHome', () => {
render(<HoloLakeHome locale="zh-CN" onEnterKnowledgeBase={vi.fn()} />) render(<HoloLakeHome locale="zh-CN" onEnterKnowledgeBase={vi.fn()} />)
fireEvent.click(screen.getByRole('button', { name: /进入第五域/ })) fireEvent.click(screen.getByRole('button', { name: /进入第五域/ }))
fireEvent.click(screen.getByRole('button', { name: /胖头鱼语言子系统.*真实接入/ })) fireEvent.click(screen.getByRole('button', { name: /胖头鱼语言子系统.*本地拓扑预览/ }))
fireEvent.click(screen.getByRole('button', { name: '进入胖头鱼系统' })) fireEvent.click(screen.getByRole('button', { name: '进入胖头鱼系统' }))
expect(screen.getAllByRole('heading', { name: '胖头鱼语言子系统' }).length).toBeGreaterThan(0) expect(screen.getAllByRole('heading', { name: '胖头鱼语言子系统' }).length).toBeGreaterThan(0)
@ -486,7 +496,7 @@ describe('HoloLakeHome', () => {
render(<HoloLakeHome locale="zh-CN" onEnterKnowledgeBase={onEnterKnowledgeBase} />) render(<HoloLakeHome locale="zh-CN" onEnterKnowledgeBase={onEnterKnowledgeBase} />)
fireEvent.click(screen.getByRole('button', { name: /进入第五域/ })) fireEvent.click(screen.getByRole('button', { name: /进入第五域/ }))
fireEvent.click(screen.getByRole('button', { name: '湖永恒湖心系统真实接入' })) fireEvent.click(screen.getByRole('button', { name: '湖永恒湖心系统本地拓扑预览' }))
fireEvent.click(screen.getByRole('button', { name: /进入永恒湖心系统/ })) fireEvent.click(screen.getByRole('button', { name: /进入永恒湖心系统/ }))
fireEvent.click(screen.getByRole('button', { name: /进入心跳核心频道/ })) fireEvent.click(screen.getByRole('button', { name: /进入心跳核心频道/ }))
fireEvent.click(screen.getByRole('button', { name: /打开知识库/ })) fireEvent.click(screen.getByRole('button', { name: /打开知识库/ }))
@ -506,7 +516,7 @@ describe('HoloLakeHome', () => {
/>, />,
) )
fireEvent.click(screen.getByRole('button', { name: /进入第五域/ })) fireEvent.click(screen.getByRole('button', { name: /进入第五域/ }))
fireEvent.click(screen.getByRole('button', { name: '湖永恒湖心系统真实接入' })) fireEvent.click(screen.getByRole('button', { name: '湖永恒湖心系统本地拓扑预览' }))
fireEvent.click(screen.getByRole('button', { name: /进入永恒湖心系统/ })) fireEvent.click(screen.getByRole('button', { name: /进入永恒湖心系统/ }))
fireEvent.click(screen.getByRole('button', { name: /进入心跳核心频道/ })) fireEvent.click(screen.getByRole('button', { name: /进入心跳核心频道/ }))
fireEvent.click(screen.getByRole('button', { name: /打开人格体工作舱/ })) fireEvent.click(screen.getByRole('button', { name: /打开人格体工作舱/ }))
@ -609,7 +619,7 @@ describe('HoloLakeHome', () => {
render(<HoloLakeHome locale="zh-CN" onEnterKnowledgeBase={vi.fn()} />) render(<HoloLakeHome locale="zh-CN" onEnterKnowledgeBase={vi.fn()} />)
fireEvent.click(screen.getByRole('button', { name: /进入第五域/ })) fireEvent.click(screen.getByRole('button', { name: /进入第五域/ }))
fireEvent.click(screen.getByRole('button', { name: '湖永恒湖心系统真实接入' })) fireEvent.click(screen.getByRole('button', { name: '湖永恒湖心系统本地拓扑预览' }))
fireEvent.click(screen.getByRole('button', { name: /进入永恒湖心系统/ })) fireEvent.click(screen.getByRole('button', { name: /进入永恒湖心系统/ }))
fireEvent.click(screen.getByRole('button', { name: /进入心跳核心频道/ })) fireEvent.click(screen.getByRole('button', { name: /进入心跳核心频道/ }))
fireEvent.click(screen.getByRole('button', { name: /打开研发仓库/ })) fireEvent.click(screen.getByRole('button', { name: /打开研发仓库/ }))

View file

@ -115,7 +115,6 @@ export function HoloLakeHome({
const restoreAttempted = useRef(false) const restoreAttempted = useRef(false)
const livingRequestSequence = useRef(0) const livingRequestSequence = useRef(0)
const worldOpen = login.state.phase === 'online' const worldOpen = login.state.phase === 'online'
const isVisualPreview = login.state.workorderId === 'local-visual-preview'
const fifthDomainOpen = worldOpen && route !== 'world' const fifthDomainOpen = worldOpen && route !== 'world'
const worldRouterState = router.state const worldRouterState = router.state
const t = (key: TranslationKey) => translate(locale, key) const t = (key: TranslationKey) => translate(locale, key)
@ -315,7 +314,6 @@ export function HoloLakeHome({
if (route === 'fifth-domain') { if (route === 'fifth-domain') {
return ( return (
<FifthDomainSystems <FifthDomainSystems
evidenceMode={isVisualPreview ? 'visual-preview' : 'receipt'}
onEnterEternalLake={() => navigate('eternal-lake-heart')} onEnterEternalLake={() => navigate('eternal-lake-heart')}
onEnterPufferfish={() => navigate('pufferfish')} onEnterPufferfish={() => navigate('pufferfish')}
/> />
@ -326,7 +324,6 @@ export function HoloLakeHome({
return ( return (
<FifthDomainSystems <FifthDomainSystems
detail="pufferfish" detail="pufferfish"
evidenceMode={isVisualPreview ? 'visual-preview' : 'receipt'}
onEnterEternalLake={() => navigate('eternal-lake-heart')} onEnterEternalLake={() => navigate('eternal-lake-heart')}
onEnterPufferfish={() => navigate('pufferfish')} onEnterPufferfish={() => navigate('pufferfish')}
/> />