Description
In a causal workload, one request with a Fault marks the metric window faulted (causalSpanWindow), and every span-metric row of the workload then switches from the legacy latency draw to real span durations. Rows for services the fault never touches jump (measured on acme-ai-platform authoring: auth verify-token 106 -> 508 ms, collab-editor 114 -> 507 ms) because real hop durations differ from the legacy draw distribution. Only rows whose hops actually carry a fault or failure in the window should cycle real durations; other rows keep the legacy draw (and the legacy engine draw count). Blocks SKT-0182.02 F1/F2 and the private demo’s causal stories.
Acceptance Criteria
- #1 In a faulted window, rows without faulted hops are byte-identical to the healthy-window projection
- #2 Faulted rows still follow real durations; engine draw counts unchanged
Definition of Done
- #1 just check (fmt-check, lint, gen-check, env-check, docs-check, test, race, hygiene, ui-check, compose-check, helm-test, lab-check, signal-fidelity)
- #2 just gen (only if a blueprint field, construct/workload config struct, or a skill under plugins/synthkit/skills/ changed)
- #3 just dump — inventory diffed against signals/
Implementation Notes
Historical evidence reconciliation: 27c05e87; untouched SERVER/CLIENT/graph rows and later sampler draw unchanged. Accepted interpretation of affected rows is real/healthy-real scaling over legacy draws, not literal raw-duration equality; cold-start flat behavior was a disclosed limitation at delivery. Full gate e029aa8e, run20261025T121935Z-synthkit-bb72a72a exit0. Conditional generation not applicable; no qualifying retained signals-inventory comparison, remaining boxes unchecked.