use crate::science::{Attempt, Outcome, Verdict};
pub(super) fn science() -> Vec<Attempt> {
let diffs = super::workdiff::attempts();
[
Outcome::Accepted {
commit: "ccc".to_owned(),
},
Outcome::Rejected {
by: Some("at-0badcafe".to_owned()),
},
Outcome::Rejected { by: None },
Outcome::Reworked,
Outcome::Pending,
]
.into_iter()
.zip(diffs.into_iter().cycle())
.enumerate()
.map(|(i, (outcome, diff))| row(diff, i, outcome))
.collect()
}
fn row(diff: crate::workdiff::Attempt, i: usize, outcome: Outcome) -> Attempt {
let full = i == 0;
let some = |text: &str| full.then(|| text.to_owned());
Attempt {
diff,
base: some("f00dbeef"),
conversation: some("20260815T101112Z-abcd1234"),
goal: some("ship it"),
pins: if full {
vec!["instructions/00-AGENTS.md=/p/AGENTS.md".to_owned()]
} else {
Vec::new()
},
governing: some("deadbeef"),
usage: super::super::spend(),
wall_secs: 90,
steps: 4,
response: some("done, tests green"),
verdicts: if full {
vec![Verdict {
sender: "judge-one".to_owned(),
body: "candidate B reads cleaner".to_owned(),
}]
} else {
Vec::new()
},
compacted: if full { 12 } else { 0 },
outcome,
}
}