feat(rendering): compare the incremental shadow scene

Construct Slice F's non-drawing scene only for lifecycle automation, drain accepted static and live deltas at the final update boundary, and compare exact current-path fingerprints at cadence and checkpoints. Publish bounded mismatch, journal, index, digest, and memory evidence without changing normal launches or draw submission.

Release: 8,211 passed, 5 skipped.
This commit is contained in:
Erik 2026-07-24 22:24:30 +02:00
parent ff5d86175f
commit 0eb6648589
21 changed files with 937 additions and 20 deletions

View file

@ -91,6 +91,36 @@ internal sealed class NullRenderFramePostDiagnosticsPhase :
}
}
/// <summary>
/// Fixed-order post-diagnostic fan-out. The shadow referee must run before
/// lifecycle checkpoint publication so each artifact observes the comparison
/// made against that exact completed render frame.
/// </summary>
internal sealed class SerialRenderFramePostDiagnosticsPhase :
IRenderFramePostDiagnosticsPhase
{
private readonly IRenderFramePostDiagnosticsPhase[] _phases;
public SerialRenderFramePostDiagnosticsPhase(
params IRenderFramePostDiagnosticsPhase[] phases)
{
ArgumentNullException.ThrowIfNull(phases);
if (phases.Length == 0 || phases.Any(static phase => phase is null))
{
throw new ArgumentException(
"At least one non-null post-diagnostic phase is required.",
nameof(phases));
}
_phases = [.. phases];
}
public void Process(RenderFrameInput input, RenderFrameOutcome outcome)
{
for (int i = 0; i < _phases.Length; i++)
_phases[i].Process(input, outcome);
}
}
/// <summary>
/// Closes presentation transactions which may have opened before a later
/// render phase failed. Recovery is idempotent so failures before the