create(); $profile = BaselineProfile::factory()->active()->create([ 'workspace_id' => (int) $workspace->getKey(), ]); $snapshot = BaselineSnapshot::factory()->incomplete(BaselineReasonCodes::SNAPSHOT_CAPTURE_FAILED)->create([ 'workspace_id' => (int) $workspace->getKey(), 'baseline_profile_id' => (int) $profile->getKey(), 'completion_meta_jsonb' => [ 'producer_run_id' => 42, 'finalization_reason_code' => BaselineReasonCodes::SNAPSHOT_CAPTURE_FAILED, 'persisted_items' => 17, ], ]); expect(data_get($snapshot->completion_meta_jsonb, 'producer_run_id'))->toBe(42) ->and(data_get($snapshot->completion_meta_jsonb, 'finalization_reason_code'))->toBe(BaselineReasonCodes::SNAPSHOT_CAPTURE_FAILED) ->and(data_get($snapshot->completion_meta_jsonb, 'persisted_items'))->toBe(17); }); it('derives historical baseline truth from the latest complete snapshot instead of mutating older lifecycle state', function (): void { $workspace = Workspace::factory()->create(); $profile = BaselineProfile::factory()->active()->create([ 'workspace_id' => (int) $workspace->getKey(), ]); $historicalSnapshot = BaselineSnapshot::factory()->complete()->create([ 'workspace_id' => (int) $workspace->getKey(), 'baseline_profile_id' => (int) $profile->getKey(), 'captured_at' => now()->subDay(), 'completed_at' => now()->subDay(), ]); $currentSnapshot = BaselineSnapshot::factory()->complete()->create([ 'workspace_id' => (int) $workspace->getKey(), 'baseline_profile_id' => (int) $profile->getKey(), 'captured_at' => now(), 'completed_at' => now(), ]); $profile->update(['active_snapshot_id' => (int) $currentSnapshot->getKey()]); $truth = app(ArtifactTruthPresenter::class)->forBaselineSnapshot($historicalSnapshot->fresh()); expect($historicalSnapshot->lifecycleState()->value)->toBe('complete') ->and($truth->artifactExistence)->toBe('historical_only') ->and($truth->diagnosticLabel)->toBe('Superseded'); });