The visitor and the rater read what the page says first

iris now hands a task the cards that lead nowhere as `page` context;
the answerer shows it before the options and the rater before the
cards, and the gutted twin loses it like everything else. The Tomter
Vel plan keeps its four doors and gains the opener, the mails and the
member's own move: flat scored worse and the doors stay.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Bendik Aagaard Lynghaug
2026-09-23 22:36:13 +02:00
co-authored by Claude Fable 5.1
parent e3dae063d4
commit 09aea7061c
3 changed files with 31 additions and 1 deletions
+6 -1
View File
@@ -487,7 +487,12 @@ pub(crate) fn answer_blind(cmd: &str, tasks: &str, repo: Option<&Path>) -> anyho
format!("{}. {body}", i + 1)
})
.collect();
let head = page.as_ref().map(card::page_head).unwrap_or_default();
let mut head = page.as_ref().map(card::page_head).unwrap_or_default();
// What the page says before it offers anything (the opener, the
// look around): read, not picked.
if let Some(context) = task["state"]["page"].as_str().filter(|c| !c.trim().is_empty()) {
head.push_str(&format!("The page first says:\n{context}\n\n"));
}
let prompt = format!(
"You are this person: {body}\n\n{instructions}\n{head}The page offers these options:\n\n{}\n\nWhich one do you pick? Judge only from your own situation and the wording in front of you. Give your honest confidence between 0 and 1; if two options fit you about equally, confidence is low.\nReply as JSON: {{\"choice\": <the option's number>, \"confidence\": 0.00}}",
listed.join("\n\n")
+5
View File
@@ -72,6 +72,11 @@ fn page_text(step: &Value, page: Option<&Value>, followup: Option<&Value>, gutte
(false, Some(p)) => card::page_head(p),
_ => format!("{}\n", step["question"].as_str().unwrap_or_default()),
};
// The cards that lead nowhere (the opener, the look around) are
// read before the options; the gutted twin loses them too.
if let Some(context) = step["context"].as_str().filter(|c| !c.trim().is_empty() && !gutted) {
text.push_str(&format!("\n{context}\n"));
}
for (i, option) in step["options"].as_array().into_iter().flatten().enumerate() {
if gutted {
text.push_str(&format!("\n- Option {}\n", i + 1));