{{ title() }}

@if (detail().business; as business) {
@for (field of business.context; track field.key) {
{{ text(field.label) }}:
{{ field.value || ('XP.AgentEvolution.ChangeDetail.NotProvided' | translate) }}
}
} @else {

{{ 'XP.AgentEvolution.ChangeDetail.Resource' | translate }}: {{ change().presentation?.resourceLabel || ('XP.AgentEvolution.ResourceContextUnavailable' | translate) }}

@if (change().presentation?.contextLabel; as context) {

{{ 'XP.AgentEvolution.ChangeDetail.Context' | translate }}: {{ context }}

} }

{{ 'XP.AgentEvolution.ChangeDetail.Result.' + detail().result | translate: { subject: adoptionSubject(), status: stagedStatus() } }}

@if (detail().failed) {

{{ 'XP.AgentEvolution.ChangeDetail.FailureReason' | translate }}

@for (reason of detail().reasons; track $index) {

{{ reason }}

} @empty {

{{ 'XP.AgentEvolution.ChangeDetail.NoFailureReason' | translate }}

}
}

{{ 'XP.AgentEvolution.ChangeDetail.NextStep' | translate }}: {{ 'XP.AgentEvolution.ChangeDetail.' + (detail().guidanceKey || 'Next.' + detail().result) | translate: { subject: adoptionSubject() } }}

@if (!canReview() && !canPublish() && link(); as target) { {{ 'XP.AgentEvolution.ChangeDetail.Action.' + detail().action | translate: { subject: adoptionSubject() } }} } @else if (change().presentationUnavailable || detail().failed) {

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

} @if (canReview()) { @if (combinedPublication()) {

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

}
} @if (canPublish()) { @if (combinedPublication()) {

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

} }

{{ 'XP.AgentEvolution.ChangeDetail.EvidenceTitle' | translate }}

{{ text(detail().business?.rationale) || text(change().presentation?.description) || ('XP.AgentEvolution.ChangeDetail.NoRationale' | translate) }}

@for (source of detail().business?.evidence ?? []; track source.key) {

{{ source.documentName || ('XP.AgentEvolution.ChangeDetail.NoFileName' | translate) }}

@if (source.page !== undefined) { {{ 'XP.AgentEvolution.ChangeDetail.Page' | translate: { page: source.page } }} } @if (source.location) { {{ 'XP.AgentEvolution.ChangeDetail.Location' | translate }}: {{ source.location }} } @if (source.page === undefined && !source.location) { {{ 'XP.AgentEvolution.ChangeDetail.NoLocation' | translate }} }

{{ source.quote || ('XP.AgentEvolution.ChangeDetail.NoQuote' | translate) }}
@if (source.document; as document) { {{ 'XP.AgentEvolution.ChangeDetail.ViewSource' | translate }} } @else if (link(); as target) { {{ 'XP.AgentEvolution.ChangeDetail.CheckSourceInWorkbench' | translate }} }
} @empty {

{{ 'XP.AgentEvolution.ChangeDetail.NoEvidence' | translate }}

}

{{ 'XP.AgentEvolution.ChangeDetail.ProposalTitle' | translate }}

@if (change().candidate) {

{{ 'XP.AgentEvolution.ChangeDetail.DraftComparisonHint' | translate }}

@for (delta of detail().business?.changes ?? []; track delta.key) {

{{ text(delta.label) }}

{{ 'XP.AgentEvolution.ChangeDetail.Before' | translate }}
{{ text(delta.before) || ('XP.AgentEvolution.ChangeDetail.NotProvided' | translate) }}
{{ 'XP.AgentEvolution.ChangeDetail.AfterDraft' | translate }}
{{ text(delta.after) }}
} @empty {

{{ 'XP.AgentEvolution.ChangeDetail.NoComparison' | translate }}

} } @else {

{{ 'XP.AgentEvolution.ChangeDetail.ProposalOnly' | translate }}

}

{{ 'XP.AgentEvolution.ChangeDetail.OriginalProposal' | translate }}

{{ text(detail().business?.proposal) || ('XP.AgentEvolution.ChangeDetail.NoProposal' | translate) }}

{{ 'XP.AgentEvolution.ChangeDetail.ProgressTitle' | translate }}

    @for (step of steps(); track step.key) {
  1. {{ step.labelKey | translate: { subject: adoptionSubject() } }}

    {{ 'XP.AgentEvolution.ChangeDetail.Stage.' + step.status | translate }}

    @if (step.blockedBy) {

    {{ 'XP.AgentEvolution.ChangeDetail.BlockedByPrevious' | translate }}

    }
  2. }
{{ text(detail().business?.baselineLabel) || ('XP.AgentEvolution.ChangeDetail.BaselineModel' | translate) }}
{{ change().baseline.version }}
{{ 'XP.AgentEvolution.ChangeDetail.CheckStep' | translate }}
{{ 'XP.AgentEvolution.ChangeDetail.Stage.' + detail().checkState | translate }}
@if (detail().checkBlockedBy) {

{{ (detail().checkBlockedBy === 'candidate' ? 'XP.AgentEvolution.ChangeDetail.ChecksBlocked' : 'XP.AgentEvolution.ChangeDetail.BlockedByPrevious' ) | translate }}

}
@if (detail().business?.adoption; as adoption) {
{{ 'XP.AgentEvolution.ChangeDetail.AdoptStep' | translate: { subject: adoptionSubject() } }}
{{ (detail().published ? 'XP.AgentEvolution.ChangeDetail.AdoptionCount' : 'XP.AgentEvolution.ChangeDetail.NotEffectiveCount' ) | translate: { adopted: adoption.adopted, total: adoption.total, subject: adoptionSubject() } }}
} @for (metric of metrics(); track metric.key) {
{{ text(metric.label) }}
{{ metric.value ?? '—' }} @if (metric.total !== undefined) { / {{ metric.total }} }
}
@if (change().evaluation; as evaluation) {

{{ 'XP.AgentEvolution.ChangeDetail.PublicationRequirements' | translate }}: {{ (evaluation.assessment === 'not_applicable' ? 'XP.AgentEvolution.AssessmentNotApplicable' : evaluation.passed ? 'XP.AgentEvolution.CheckPassed' : 'XP.AgentEvolution.CheckFailed' ) | translate }}

@for (readiness of evaluation.readiness; track readiness.key) {

{{ text(readiness.label) }}: {{ 'XP.AgentEvolution.ReadinessStatus.' + readiness.status | translate }}

}

{{ text(detail().business?.validationHint) || ('XP.AgentEvolution.ChangeDetail.CheckBoundaryHint' | translate) }}

} @if (change().presentation?.effect; as effect) {

{{ text(effect.description) }}

}
@if (change().approval; as approval) {

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

{{ approval.reason }}

{{ 'XP.AgentEvolution.ResourceStatus.' + approval.decision | translate }} · {{ approval.decidedAt | date: 'yyyy-MM-dd HH:mm' }}

} @if (change().evaluation?.assessment === 'not_applicable') {

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

} @else if (change().evaluation; as evaluation) {
{{ 'XP.AgentEvolution.TestResults' | translate }} · {{ passed() }} / {{ evaluation.checks.length }}
@for (check of evaluation.checks; track check.checkId) {

{{ check.title }}

{{ (check.passed ? 'XP.AgentEvolution.CheckPassed' : 'XP.AgentEvolution.CheckFailed') | translate }}

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

{{ check.details }}

}
@for (readiness of evaluation.readiness; track readiness.key) { @if (readiness.reasons.length) {

{{ text(readiness.label) }}

@for (reason of readiness.reasons; track $index) {

{{ reason }}

}
} }
}
{{ 'XP.AgentEvolution.ChangeDetail.TechnicalDetails' | translate }}
{{ 'XP.AgentEvolution.StrategyLabel' | translate }}
{{ text(change().strategy.definition.label) }} · {{ change().strategy.definition.version }}
{{ 'XP.AgentEvolution.ChangeDetail.Provider' | translate }}
{{ change().strategy.providerKey }} · {{ change().strategy.providerVersion }}
{{ 'XP.AgentEvolution.ChangeDetail.StrategyHash' | translate }}
{{ change().strategy.hash }}
{{ 'XP.AgentEvolution.ChangeRecord' | translate }}
{{ change().changeId }}
{{ 'XP.AgentEvolution.Target' | translate }}
{{ change().targetId }}
{{ 'XP.AgentEvolution.BaselineHash' | translate }}
{{ change().baseline.hash }}
{{ 'XP.AgentEvolution.CandidateHash' | translate }}
{{ change().candidate?.artifact?.hash || '—' }}
@if (change().receipt; as receipt) {
{{ 'XP.AgentEvolution.WriteReceipt' | translate }}
{{ receipt.receiptId }}
{{ 'XP.AgentEvolution.PublishedVersion' | translate }}
{{ receipt.resource.version }}
} @if (change().evaluation; as evaluation) {
{{ 'XP.AgentEvolution.EvaluatorVersion' | translate }}
{{ evaluation.datasetVersion }} · {{ evaluation.runId }}
} @if (change().approval; as approval) {
{{ 'XP.AgentEvolution.Actor' | translate }}
{{ approval.actorId }}
}
{{ 'XP.AgentEvolution.ImmutableResourceDetails' | translate }}
{{ change() | json }}