feat(decide): memory rerank and paper triage on the decision tier
mission_memory::recall is two stages when a key is set: BM25 proposes 8
candidates, one Noul per candidate ('this earlier verdict is relevant to
the task') reorders them and drops those under 0.3, three are kept. BM25
measures keyword overlap, and a verdict about MICROVM.md shares words
with every task that names a file. Without a key the BM25 order stands.
continuous_research: topic_tags was written as [] on every manifest line
since the manifest existed. triage_papers asks, per harvested paper, a
Choice over the mission's topics (readable names, the arXiv query as the
description, 'none' offered) and a four-level relevance Score; the tags
(every topic ≥ 0.3) and {score, confidence} land on the line the agents
already read. Probe on PORTICO's abstract: relevance 3.0 at 1.0; topic
'none' 0.59 / verification 0.41 — true, the topic list has no
authority/sandboxing entry. Untriaged papers write the old empty line.
Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
co-authored by
Claude Opus 5
parent
2656d73def
commit
33560c7fe6
@@ -129,7 +129,12 @@ pub async fn on_launch(
|
||||
// rightly refuses the branch. See `write_manifest`.
|
||||
if mission.template_kind == crate::continuous_research::TEMPLATE_KIND {
|
||||
let date = crate::continuous_research::today();
|
||||
match crate::continuous_research::write_manifest(&path, &harvested, &date) {
|
||||
// Tag and score each paper before the agents see the list;
|
||||
// an untriaged manifest (no key) is the old, empty-tags one.
|
||||
let topics = crate::continuous_research::topics_for(&mission.config);
|
||||
let triage =
|
||||
crate::continuous_research::triage_papers(&harvested, &topics).await;
|
||||
match crate::continuous_research::write_manifest(&path, &harvested, &date, &triage) {
|
||||
Ok(at) => eprintln!(
|
||||
"mission_orchestrator: wrote {} paper(s) to {}",
|
||||
harvested.len(),
|
||||
|
||||
Reference in New Issue
Block a user