import test from 'node:test';import assert from 'node:assert/strict';import {acceptReply,askQuestion} from './question.mjs'; const source={persona_id:'ICE-P-ONE',source_sha256:'pinned',brain_id:'own-brain',name:'fixture',revision:1,integrity:'OWN_NATIVE_SOURCE_VERIFIED',evidence:[{id:'identity',text:'own source'}]};const good={persona_id:source.persona_id,source_sha256:source.source_sha256,reply_zh:'我依据自己的已核验来源回答。',basis:'EVIDENCE',evidence_ids:['identity']}; test('persona, source and evidence references must match',()=>{assert.equal(acceptReply(source,good).basis,'EVIDENCE');for(const patch of [{persona_id:'ICE-P-OTHER'},{source_sha256:'old'},{evidence_ids:['invented']},{basis:'EVIDENCE',evidence_ids:[]},{reply_zh:'not first person'}])assert.throws(()=>acceptReply(source,{...good,...patch}));}); test('source changes during inference withhold the reply',async()=>{let n=0;await assert.rejects(askQuestion({}, {question:'q',request_id:'r'}, {},{load:async()=>({...source,source_sha256:n++?'changed':'pinned'}),propose:async()=>good}),/PERSONA_SOURCE_CHANGED_DURING_QUESTION/);}); test('verified inference returns no neural, memory or execution authority',async()=>{const r=await askQuestion({}, {question:'q',request_id:'r'}, {},{load:async()=>source,propose:async payload=>{assert.equal(payload.source_role,'EXTERNAL_QUESTION_NOT_DIRECT_HUMAN_FOOD');return good;}});assert.equal(r.no_memory_write,true);assert.equal(r.no_neural_state_write,true);assert.equal(r.no_execution_authority,true);});