@if (facade.providerError()) { } @if (facade.loading()) {

{{ 'XP.AgentEvolution.LoadingChanges' | translate }}

} @else if (selection()) { @for (change of resource() ? [resource()!] : []; track change.changeId) { } @if (usesReplay()) {
@if (candidate(); as item) {
{{ candidateTarget()?.displayName || item.targetId }} {{ 'XP.AgentEvolution.Scope' | translate }} {{ item.targetScope.type }} / {{ item.targetScope.key }} · {{ 'XP.AgentEvolution.Baseline' | translate }} {{ item.baseVersionId }} · {{ 'XP.AgentEvolution.Artifact' | translate }} {{ shortId(item.artifact.hash, 18) }} @if (!candidateTarget()?.capabilities?.install) { {{ 'XP.AgentEvolution.EvaluationOnlyNoRelease' | translate }} }
}
@if (showDatasetBuilder() && candidate()) { {{ 'XP.AgentEvolution.CreateImmutableDataset' | translate }} {{ 'XP.AgentEvolution.ImmutableDatasetDescription' | translate }}
{{ 'XP.AgentEvolution.GoldenCasesJson' | translate }}
{{ 'XP.AgentEvolution.DefaultGoldenGateHint' | translate }}
} @if (evaluation(); as run) {
{{ 'XP.AgentEvolution.TabEvaluation' | translate }}{{ run.datasetSnapshotId }}{{ run.runId }}

{{ candidateTarget()?.displayName || candidate()?.targetId || ('XP.AgentEvolution.CapabilityCandidate' | translate) }}

{{ 'XP.AgentEvolution.Status.' + run.status | translate: { Default: run.status } }} {{ 'XP.AgentEvolution.FixedSnapshotReplayCompleted' | translate }}

{{ 'XP.AgentEvolution.EvaluationSummary' | translate : { candidateId: run.candidateId, count: run.metrics.totalCases, decision: run.gate.decision } }}

@if (candidate()?.status === 'pending_approval') { } @if (candidateTarget()?.capabilities?.install) { }
@if (candidate()?.status === 'pending_approval' || candidate()?.status === 'approved') {
{{ (approvalGate().administratorPath ? 'XP.AgentEvolution.AdministratorApprovalProgress' : 'XP.AgentEvolution.ApprovalRoleProgress' ) | translate: { approved: approvalGate().progress, required: requiredApprovals() } }}
}
{{ 'XP.AgentEvolution.ProductionBaseline' | translate }}{{ 'XP.AgentEvolution.CurrentProduction' | translate }}
{{ run.baselineBundle.items[0]?.versionId || '—' }}
{{ 'XP.AgentEvolution.Bundle' | translate }} {{ shortId(run.baselineBundle.bundleHash, 20) }}
{{ 'XP.AgentEvolution.Candidate' | translate }}{{ 'XP.AgentEvolution.Status.' + (selection()?.status || 'ready') | translate }}
{{ run.candidateBundle.items[0]?.versionId || candidate()?.candidateId || '—' }}
{{ 'XP.AgentEvolution.Bundle' | translate }} {{ shortId(run.candidateBundle.bundleHash, 20) }}
{{ 'XP.AgentEvolution.GoldenCasesPassed' | translate }}
{{ run.metrics.passedCases }}/{{ run.metrics.totalCases }}
{{ 'XP.AgentEvolution.AllSamples' | translate }}
{{ 'XP.AgentEvolution.FieldAccuracy' | translate }}
{{ percent(run.metrics.candidateAccuracy) }}
+{{ (run.metrics.accuracyDelta * 100).toFixed(1) }}pp
{{ 'XP.AgentEvolution.UnmappedRate' | translate }}
{{ percent(1 - run.metrics.candidateAccuracy) }}
{{ 'XP.AgentEvolution.BelowBaseline' | translate }}
{{ 'XP.AgentEvolution.SevereErrors' | translate }}
{{ run.metrics.severeErrors }}
{{ 'XP.AgentEvolution.BlockingThresholdZero' | translate }}
{{ 'XP.AgentEvolution.P95Latency' | translate }}
{{ (run.metrics.p95LatencyMs / 1000).toFixed(2) }}s
{{ 'XP.AgentEvolution.Acceptable' | translate }}
{{ 'XP.AgentEvolution.AverageCost' | translate }}
${{ run.metrics.averageCost.toFixed(3) }}
{{ 'XP.AgentEvolution.PerExecution' | translate }}
{{ 'XP.AgentEvolution.GateRecommendation' | translate }}
{{ (run.gate.passed ? 'XP.AgentEvolution.Pass' : 'XP.AgentEvolution.Block') | translate }}
{{ run.gate.decision }}
{{ 'XP.AgentEvolution.ProductionVsCandidate' | translate }}{{ 'XP.AgentEvolution.ComparisonEnvironmentDescription' | translate }}
{{ 'XP.AgentEvolution.SampleComparison' | translate }}{{ 'XP.AgentEvolution.SampleComparisonDescription' | translate }}
{{ 'XP.AgentEvolution.CaseCount' | translate: { count: run.caseResults.length } }}
@for (result of run.caseResults; track result.caseId) { }
{{ 'XP.AgentEvolution.Sample' | translate }} {{ 'XP.AgentEvolution.Production' | translate }} {{ 'XP.AgentEvolution.Candidate' | translate }} {{ 'XP.AgentEvolution.Latency' | translate }} {{ 'XP.AgentEvolution.Cost' | translate }} {{ 'XP.AgentEvolution.Trace' | translate }}
{{ result.caseId }} {{ (result.baselinePassed ? 'XP.AgentEvolution.Pass' : 'XP.AgentEvolution.Fail') | translate }} {{ (result.candidatePassed ? 'XP.AgentEvolution.Pass' : 'XP.AgentEvolution.Fail') | translate }} {{ result.latencyMs }}ms ${{ result.cost.toFixed(3) }} {{ shortId(result.traceRef, 14) }}
{{ 'XP.AgentEvolution.SampleDetails' | translate }}{{ 'XP.AgentEvolution.ExplainableEvaluatorFeedback' | translate }}
@if (selectedCase(); as result) { {{ result.caseId }} }
@if (selectedCase(); as result) {

{{ 'XP.AgentEvolution.ProductionOutput' | translate }}

{{ (result.baselinePassed ? 'XP.AgentEvolution.Pass' : 'XP.AgentEvolution.Fail') | translate }}
@for (entry of outputEntries(result.baselineOutput); track entry[0]) {
{{ entry[0] }}
{{ entry[1] }}
}

{{ 'XP.AgentEvolution.CandidateOutput' | translate }}

{{ (result.candidatePassed ? 'XP.AgentEvolution.Pass' : 'XP.AgentEvolution.Fail') | translate }}
@for (entry of outputEntries(result.candidateOutput); track entry[0]) {
{{ entry[0] }}
{{ entry[1] }}
}
{{ 'XP.AgentEvolution.EvaluatorFeedback' | translate }}

{{ 'XP.AgentEvolution.EvaluatorFeedbackDescription' | translate: { severe: result.severeError ? 1 : 0, trace: result.traceRef } }}

} @else {
{{ 'XP.AgentEvolution.SelectReplaySample' | translate }}
}
Dataset {{ run.datasetSnapshotId }}Eval Run {{ run.runId }}{{ 'XP.AgentEvolution.CompletedAt' | translate }} {{ run.completedAt | date: 'yyyy-MM-dd HH:mm:ss' }}{{ 'XP.AgentEvolution.ReplayEnvironment' | translate }}
} @else {

{{ 'XP.AgentEvolution.NoCandidateEvaluation' | translate }}

{{ 'XP.AgentEvolution.EmptyEvaluationDescription' | translate }}

} } } @else {

{{ 'XP.AgentEvolution.NoChanges' | translate }}

}