heartbeat tests, tempo tests, golden for Pulse (tests WIP)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
056ca778d8
commit
b264865be4
4 changed files with 250 additions and 1142 deletions
|
|
@ -25,6 +25,7 @@ sample.instance yggdrasil:instance:self epiphany.pipeline.instance.v2 EpiphanyPi
|
|||
sample.stewardship yggdrasil:stewardship:gamecult_-epiphany.n1 epiphany.pipeline.stewardship.v2 EpiphanyPipelineStewardshipDocument 9185a8696e7374616e6365a979676764726173696ca47265706fb147616d6543756c742f4570697068616e79a873657175656e636501ab61737369676e65645f6f6eaa323032362d30392d3135a46e6f7465b954686520457572656b612063616d706169676e207265706f2e
|
||||
sample.hand_off yggdrasil:hand_off:thought-cage.gamecult_-epiphany.2026-09-15 epiphany.pipeline.hand_off.v2 EpiphanyPipelineHandOffDocument 9186ad66726f6d5f696e7374616e6365a979676764726173696cab746f5f696e7374616e6365ac74686f756768742d63616765a47265706fb147616d6543756c742f4570697068616e79a9646f63756d656e747392ac657572656b612d7374617465b6657572656b612d73746174653a72756c696e673a5238a6726561736f6ed92854686520776f726b73746174696f6e206d696e642074616b6573207468652063616d706169676e2ea968616e6465645f6f6eaa323032362d30392d3135
|
||||
sample.run yggdrasil:run:mind-2026-10-09-1 epiphany.pipeline.run.v2 EpiphanyPipelineRunDocument 9189a8696e7374616e6365a979676764726173696ca56c6162656cb16d696e642d323032362d31302d30392d31ab6f706572617465645f6279a44d696e64a47475726ea753656c6652756ea4686f7374a979676764726173696caa737461727465645f6f6eaa323032362d30392d3135aa6275646765745f757364a3372e35a6636c61696d739182a46b696e64a743757453706563a26964d925657572656b612d73746174653a6375745f737065633a6375742d72756e2d6b696e642e7232a963616d706169676e7391ac657572656b612d7374617465
|
||||
sample.pulse yggdrasil:pulse:2026-10-31t041200-t0 epiphany.pipeline.pulse.v2 EpiphanyPipelinePulseDocument 9185a8696e7374616e6365a979676764726173696ca56c6162656cb4323032362d31302d3331743034313230302d7430b174656d706f5f766f74655f626561745f73cd0258b0757267656e63795f7065726d696c6c65ccfaa46e6f7465d92254686520737761726d2069732069646c653b20612073686f7274657220626561742e
|
||||
resolution.superseded eureka-state:resolution:question.Q1.n1 epiphany.pipeline.resolution.v2 EpiphanyPipelineResolutionDocument 9185a77375626a65637482a46b696e64a85175657374696f6ea26964b8657572656b612d73746174653a7175657374696f6e3a5131a873657175656e636501a76f7574636f6d6581aa5375706572736564656481a262799282a46b696e64a652756c696e67a26964b6657572656b612d73746174653a72756c696e673a523882a46b696e64a85175657374696f6ea26964b8657572656b612d73746174653a7175657374696f6e3a5131a9726174696f6e616c65a852756c656420412eab7265736f6c7665645f6f6eaa323032362d30392d3135
|
||||
resolution.fixed-by-none eureka-state:resolution:question.Q1.n1 epiphany.pipeline.resolution.v2 EpiphanyPipelineResolutionDocument 9185a77375626a65637482a46b696e64a85175657374696f6ea26964b8657572656b612d73746174653a7175657374696f6e3a5131a873657175656e636501a76f7574636f6d6581a5466978656482a6636f6d6d6974a83566393832323864a26279c0a9726174696f6e616c65a852756c656420412eab7265736f6c7665645f6f6eaa323032362d30392d3135
|
||||
resolution.fixed-by-some eureka-state:resolution:question.Q1.n1 epiphany.pipeline.resolution.v2 EpiphanyPipelineResolutionDocument 9185a77375626a65637482a46b696e64a85175657374696f6ea26964b8657572656b612d73746174653a7175657374696f6e3a5131a873657175656e636501a76f7574636f6d6581a5466978656482a6636f6d6d6974a83566393832323864a2627982a46b696e64a94375745265706f7274a26964d921657572656b612d73746174653a6375745f7265706f72743a6375742d33612e6831a9726174696f6e616c65a852756c656420412eab7265736f6c7665645f6f6eaa323032362d30392d3135
|
||||
|
|
|
|||
|
|
@ -335,10 +335,7 @@ impl fmt::Display for Outcome {
|
|||
}
|
||||
|
||||
struct Turn {
|
||||
label: String,
|
||||
admitted: DateTime<Utc>,
|
||||
/// When it was resolved, and whether the resolution withdrew it unrun.
|
||||
resolved: Option<(DateTime<Utc>, bool)>,
|
||||
}
|
||||
|
||||
fn parse_time(text: &str) -> Result<DateTime<Utc>> {
|
||||
|
|
@ -398,16 +395,14 @@ fn recent_turns(mind: &dyn MindPort, instance: &Slug) -> Result<Vec<Turn>> {
|
|||
};
|
||||
let mut turns = Vec::new();
|
||||
for run in runs {
|
||||
let PipelineFacts::Run { label, .. } = &run.facts else {
|
||||
if !matches!(run.facts, PipelineFacts::Run { .. }) {
|
||||
continue;
|
||||
};
|
||||
let ending = latest_resolution(mind, &run.id)?
|
||||
.map(|(at, outcome)| (at, matches!(outcome, ResolutionOutcome::Withdrawn { .. })));
|
||||
turns.push(Turn {
|
||||
label: label.0.clone(),
|
||||
admitted: parse_time(&run.admission.admitted_at)?,
|
||||
resolved: ending,
|
||||
});
|
||||
}
|
||||
// A turn withdrawn unrun never happened: it neither resets her wait nor counts as her last turn.
|
||||
if let Some((_, ResolutionOutcome::Withdrawn { .. })) = latest_resolution(mind, &run.id)? {
|
||||
continue;
|
||||
}
|
||||
turns.push(Turn { admitted: parse_time(&run.admission.admitted_at)? });
|
||||
}
|
||||
Ok(turns)
|
||||
}
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -110,6 +110,11 @@ impl TestMind {
|
|||
this
|
||||
}
|
||||
|
||||
/// The next admission lands exactly at `when`.
|
||||
pub(crate) fn admit_at(&self, when: DateTime<Utc>) {
|
||||
self.now.set(when - Duration::seconds(1));
|
||||
}
|
||||
|
||||
/// Admits as Hands, one second after the last admission.
|
||||
pub(crate) fn put(&self, documents: Vec<PipelineDocument>) -> PipelineAdmissionOutcome {
|
||||
self.now.set(self.now.get() + Duration::seconds(1));
|
||||
|
|
|
|||
Loading…
Reference in a new issue