Restore full investigation evidence and assessment history
This commit is contained in:
1 parent
77919c40f8
commit
61138955ec
11 files changed
+132
-16
No files matched your search
@@ -189,7 +189,7 @@ def test_case_builder_provider_outage_blocks_without_sealing(case_setup):
|
||||
assert reader.manifest["state"]=="BLOCKED" and reader.manifest["artifacts"].get("case") is None
|
||||
|
||||
|
||||
@pytest.mark.parametrize("recall", [False, True, "unknown"])
|
||||
@pytest.mark.parametrize("recall", [False, True, "unknown", "upgrade"])
|
||||
def test_model_loop_uses_project_tools_and_compact_previous_result(tool_case, recall):
|
||||
store=tool_case[0]
|
||||
with PackageReader(tool_case[1]) as reader:project=reader.manifest["project"]
|
||||
@@ -204,14 +204,14 @@ def test_model_loop_uses_project_tools_and_compact_previous_result(tool_case, re
|
||||
if previous:
|
||||
assert context["evidence"][eid]["content"]["items"]
|
||||
assert "inputs" not in context["case"]
|
||||
assert request["prompt_version"]=="investigation_project_v9"
|
||||
assert request["prompt_version"] in ({"investigation_project_v9","investigation_project_v10"} if recall == "upgrade" else {"investigation_project_v9" if recall else "investigation_project_v10"})
|
||||
reply={"assessment":{"semantic_score":50,"reason":"Scoped fact","evidence_refs":[eid]} if previous else None,
|
||||
"update":{"confidence":"plausible","evidence_refs":[eid] if previous else [],"resolve_questions":[],"add_questions":[],"note":"Query typed identity"},
|
||||
"next":{"kind":"finish","reason":"Check complete"} if previous else {"kind":"tool","operation":"project.query","arguments":rows()}}
|
||||
if recall:
|
||||
if previous:
|
||||
if previous and request['prompt_version']=='investigation_project_v9':
|
||||
reply['next'] = {'kind':'recall','evidence_refs':['E999999' if recall == 'unknown' else eid]}
|
||||
elif any(e['record']['hypothesis_id'] == context['selected_hypothesis'] for e in context.get('evidence', {}).values()):
|
||||
elif not previous and any(e['record']['hypothesis_id'] == context['selected_hypothesis'] for e in context.get('evidence', {}).values()):
|
||||
recalled = next(eid for eid,e in context['evidence'].items() if e['record']['hypothesis_id'] == context['selected_hypothesis'])
|
||||
assert context['evidence'][recalled]['content']['items']
|
||||
reply['update']['evidence_refs'] = [recalled]
|
||||
@@ -219,15 +219,30 @@ def test_model_loop_uses_project_tools_and_compact_previous_result(tool_case, re
|
||||
return ProviderResponse(reply,"fixture",100,10)
|
||||
adapter=Adapter()
|
||||
loop=Investigator(store,gateway(adapter),router=InvestigationToolRouter(project_research=service))
|
||||
if recall is True:
|
||||
if recall:
|
||||
original_context=loop._context
|
||||
def frozen_context(*args):
|
||||
context=original_context(*args)
|
||||
context['prompt_version']='investigation_project_v9'
|
||||
context['recalled_evidence']=args[0].get('recalled_evidence',{}).get(args[1],[])
|
||||
return context
|
||||
loop._context=frozen_context
|
||||
if recall is True or recall == "upgrade":
|
||||
partial=asyncio.run(loop.run("case-A","stable-package",max_steps=4))
|
||||
assert partial.status == 'YIELDED'
|
||||
loop=Investigator(store,gateway(adapter),router=InvestigationToolRouter(project_research=service))
|
||||
original_context=loop._context
|
||||
def frozen_resume_context(*args):
|
||||
context=original_context(*args)
|
||||
context['prompt_version']='investigation_project_v9'
|
||||
context['recalled_evidence']=args[0].get('recalled_evidence',{}).get(args[1],[])
|
||||
return context
|
||||
if recall is True:loop._context=frozen_resume_context
|
||||
result=asyncio.run(loop.run("case-A","stable-package",max_steps=20))
|
||||
if recall == 'unknown':
|
||||
assert result.status == 'BLOCKED' and result.code == 'INVESTIGATION_EVIDENCE_UNKNOWN'
|
||||
else:
|
||||
assert result.status=="COMPLETED" and len(adapter.contexts)==(9 if recall else 6)
|
||||
assert result.status=="COMPLETED" and len(adapter.contexts)==(7 if recall == "upgrade" else 9 if recall else 6)
|
||||
assert len(EvidenceStore(store).snapshot("case-A","stable-package").record_refs)==3
|
||||
accounts=BudgetManager(store).snapshot("case-A","stable-package").state['accounts']
|
||||
assert sum(len(a['actions']) for a in accounts.values()) == 3
|
||||
|
||||
Reference in new issue
Block a user