From 3a9402998afe2a273f9ec7fc8dede9325853af16 Mon Sep 17 00:00:00 2001 From: ahmido Date: Wed, 17 Jun 2026 22:54:11 +0000 Subject: [PATCH] feat(evidence): implement baseline review readiness integration (#456) Added `BaselineReadinessGate`, resolution propagation, and disclosure semantics logic per Spec 385. Integrates baseline unreadiness into Customer Review Workspace and Review Packs to prevent report generation when identity bindings are unresolved. Co-authored-by: Ahmed Darrazi Reviewed-on: https://git.cloudarix.de/ahmido/TenantAtlas/pulls/456 --- .../app/Jobs/GenerateReviewPackJob.php | 325 ++++++++++-- .../EnvironmentReviewComposer.php | 13 +- .../EnvironmentReviewReadinessGate.php | 27 + .../EnvironmentReviewSectionFactory.php | 103 +++- .../Sources/BaselineDriftPostureSource.php | 50 +- .../BaselineEvidenceReadinessDeriver.php | 428 ++++++++++++++++ .../ReviewPacks/ReportDisclosurePolicy.php | 77 ++- .../ReviewPacks/ReviewPackOutputReadiness.php | 53 ++ .../ReviewPackOutputResolutionGuidance.php | 159 +++++- apps/platform/lang/de/localization.php | 38 ++ apps/platform/lang/en/localization.php | 38 ++ ...pec385EvidenceReviewReadinessSmokeTest.php | 161 ++++++ ...EnvironmentReviewBaselineReadinessTest.php | 125 +++++ .../BaselineDriftPostureSourceTest.php | 215 +++++++- ...erReviewWorkspaceBaselineReadinessTest.php | 95 ++++ ...Spec385ReviewPackBaselineReadinessTest.php | 280 +++++++++++ apps/platform/tests/Pest.php | 53 +- ...85BaselineEvidenceReadinessDeriverTest.php | 242 +++++++++ .../Spec385ReportDisclosurePolicyTest.php | 28 ++ .../ui-006-customer-review-workspace.md | 14 + .../page-reports/ui-011-reviews.md | 8 + .../page-reports/ui-042-review-pack-detail.md | 9 + .../ui-046-evidence-snapshot-detail.md | 8 + .../01-baseline-readiness-blocked.png | Bin 0 -> 495815 bytes .../checklists/requirements.md | 70 +++ specs/385-evidence-review-readiness/plan.md | 355 +++++++++++++ specs/385-evidence-review-readiness/spec.md | 467 ++++++++++++++++++ specs/385-evidence-review-readiness/tasks.md | 161 ++++++ 28 files changed, 3510 insertions(+), 92 deletions(-) create mode 100644 apps/platform/app/Support/Baselines/Readiness/BaselineEvidenceReadinessDeriver.php create mode 100644 apps/platform/tests/Browser/Spec385EvidenceReviewReadinessSmokeTest.php create mode 100644 apps/platform/tests/Feature/EnvironmentReview/Spec385EnvironmentReviewBaselineReadinessTest.php create mode 100644 apps/platform/tests/Feature/Filament/Spec385CustomerReviewWorkspaceBaselineReadinessTest.php create mode 100644 apps/platform/tests/Feature/ReviewPack/Spec385ReviewPackBaselineReadinessTest.php create mode 100644 apps/platform/tests/Unit/Support/Baselines/Readiness/Spec385BaselineEvidenceReadinessDeriverTest.php create mode 100644 apps/platform/tests/Unit/Support/ReviewPacks/Spec385ReportDisclosurePolicyTest.php create mode 100644 specs/385-evidence-review-readiness/artifacts/screenshots/01-baseline-readiness-blocked.png create mode 100644 specs/385-evidence-review-readiness/checklists/requirements.md create mode 100644 specs/385-evidence-review-readiness/plan.md create mode 100644 specs/385-evidence-review-readiness/spec.md create mode 100644 specs/385-evidence-review-readiness/tasks.md diff --git a/apps/platform/app/Jobs/GenerateReviewPackJob.php b/apps/platform/app/Jobs/GenerateReviewPackJob.php index c543c371..9eab592b 100644 --- a/apps/platform/app/Jobs/GenerateReviewPackJob.php +++ b/apps/platform/app/Jobs/GenerateReviewPackJob.php @@ -4,20 +4,20 @@ namespace App\Jobs; +use App\Models\EnvironmentReview; use App\Models\EvidenceSnapshot; use App\Models\Finding; +use App\Models\ManagedEnvironment; use App\Models\OperationRun; use App\Models\ReviewPack; -use App\Models\ManagedEnvironment; -use App\Models\EnvironmentReview; use App\Services\Intune\SecretClassificationService; use App\Services\OperationRunService; use App\Services\ReviewPackService; use App\Support\OperationRunOutcome; use App\Support\OperationRunStatus; use App\Support\RedactionIntegrity; -use App\Support\ReviewPackStatus; use App\Support\ReviewPacks\ReviewPackOutputReadiness; +use App\Support\ReviewPackStatus; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Queue\Queueable; use Illuminate\Support\Collection; @@ -155,8 +155,9 @@ private function executeGeneration(ReviewPack $reviewPack, OperationRun $operati // 9. Store on exports disk $filePath = sprintf( - 'review-packs/%s/%s.zip', + 'review-packs/%s/pack-%d-%s.zip', $tenant->external_id, + (int) $reviewPack->getKey(), now()->format('Y-m-d-His'), ); @@ -268,9 +269,10 @@ private function executeReviewDerivedGeneration( $sha256 = hash_file('sha256', $tempFile); $fileSize = filesize($tempFile); $filePath = sprintf( - 'review-packs/%s/review-%d-%s.zip', + 'review-packs/%s/review-%d-pack-%d-%s.zip', $tenant->external_id, (int) $review->getKey(), + (int) $reviewPack->getKey(), $generatedAt->format('Y-m-d-His'), ); @@ -371,7 +373,7 @@ private function buildFileMap( $files['hardening.json'] = json_encode($hardening, JSON_PRETTY_PRINT | JSON_THROW_ON_ERROR); // metadata.json - $files['metadata.json'] = json_encode([ + $metadataPayload = [ 'version' => '1.0', 'managed_environment_id' => $tenant->external_id, 'tenant_name' => $includePii ? $tenant->name : '[REDACTED]', @@ -390,7 +392,11 @@ private function buildFileMap( 'include_pii' => $includePii, 'include_operations' => $includeOperations, ], - ], JSON_PRETTY_PRINT | JSON_THROW_ON_ERROR); + ]; + $files['metadata.json'] = json_encode( + $this->redactReportPayload($metadataPayload, $includePii), + JSON_PRETTY_PRINT | JSON_THROW_ON_ERROR, + ); // operations.csv $files['operations.csv'] = $this->buildOperationsCsv($recentOperations, $includePii); @@ -408,14 +414,18 @@ private function buildFileMap( ); // summary.json - $files['summary.json'] = json_encode([ + $summaryPayload = [ 'data_freshness' => $dataFreshness, 'finding_count' => $findings->count(), 'report_count' => count(array_filter([$permissionPosture, $entraAdminRoles], static fn (array $payload): bool => $payload !== [])), 'operation_count' => $recentOperations->count(), 'risk_acceptance' => $riskAcceptance, 'snapshot_id' => (int) $snapshot->getKey(), - ], JSON_PRETTY_PRINT | JSON_THROW_ON_ERROR); + ]; + $files['summary.json'] = json_encode( + $this->redactReportPayload($summaryPayload, $includePii), + JSON_PRETTY_PRINT | JSON_THROW_ON_ERROR, + ); return $files; } @@ -525,7 +535,13 @@ private function redactReportPayload(array $payload, bool $includePii): array { $payload = $this->redactProtectedPayload($payload); - return $includePii ? $payload : $this->redactArrayPii($payload); + if (! $includePii) { + $payload = $this->redactBaselineReadinessDiagnostics($payload); + $payload = $this->redactCustomerSafeIdentifiers($payload); + $payload = $this->redactArrayPii($payload); + } + + return $payload; } /** @@ -566,6 +582,195 @@ private function redactArrayPii(array $data): array return $data; } + /** + * @param array $data + * @return array + */ + private function redactBaselineReadinessDiagnostics(array $data): array + { + foreach ($data as $key => $value) { + if ($key === 'baseline_readiness' && is_array($value)) { + $data[$key] = $this->customerSafeBaselineReadiness($value); + + continue; + } + + if ($key === 'output_readiness' && is_array($value)) { + $data[$key] = $this->customerSafeOutputReadiness($value); + + continue; + } + + if (is_array($value)) { + $data[$key] = $this->redactBaselineReadinessDiagnostics($value); + } + } + + return $data; + } + + /** + * @param array $baselineReadiness + * @return array + */ + private function customerSafeBaselineReadiness(array $baselineReadiness): array + { + $summary = is_array($baselineReadiness['customer_safe_summary'] ?? null) + ? $baselineReadiness['customer_safe_summary'] + : []; + unset($summary['readiness_state']); + + $publicationBlockers = collect($baselineReadiness['publication_blockers'] ?? []) + ->filter(static fn (mixed $blocker): bool => is_scalar($blocker)) + ->map(fn (mixed $blocker): string => $this->plainText($blocker, '')) + ->filter(static fn (string $blocker): bool => $blocker !== '') + ->values() + ->all(); + $limitations = collect($baselineReadiness['limitations'] ?? []) + ->filter(static fn (mixed $limitation): bool => is_array($limitation)) + ->map(fn (array $limitation): array => [ + 'summary' => $this->plainText( + $limitation['summary'] ?? null, + 'Baseline limitation requires review before relying on this output.', + ), + ]) + ->values() + ->all(); + + return [ + 'claim_label' => $this->baselineClaimLabel((string) ($baselineReadiness['customer_safe_claim'] ?? '')), + 'readiness_label' => $this->baselineReadinessStateLabel((string) ($baselineReadiness['readiness_state'] ?? '')), + 'publication_blocker_count' => count($publicationBlockers), + 'publication_blockers' => $publicationBlockers, + 'limitations' => $limitations, + 'summary' => $summary, + ]; + } + + /** + * @param array $outputReadiness + * @return array + */ + private function customerSafeOutputReadiness(array $outputReadiness): array + { + $limitations = collect($outputReadiness['limitations'] ?? []) + ->filter(static fn (mixed $limitation): bool => is_array($limitation)) + ->values(); + $safe = [ + 'review_status' => (string) ($outputReadiness['review_status'] ?? ''), + 'review_completeness_state' => (string) ($outputReadiness['review_completeness_state'] ?? ''), + 'evidence_completeness_state' => (string) ($outputReadiness['evidence_completeness_state'] ?? ''), + 'has_ready_export' => (bool) ($outputReadiness['has_ready_export'] ?? false), + 'contains_pii' => false, + 'protected_values_hidden' => true, + 'disclosure_present' => (bool) ($outputReadiness['disclosure_present'] ?? false), + 'sharing_boundary' => $this->sharingBoundaryLabel((string) ($outputReadiness['customer_safe_state'] ?? 'requires_review')), + 'readiness_label' => $this->outputReadinessStateLabel((string) ($outputReadiness['readiness_state'] ?? '')), + 'limitation_count' => $limitations->count(), + 'section_summary' => is_array($outputReadiness['section_summary'] ?? null) + ? $outputReadiness['section_summary'] + : [], + ]; + + if (is_array($outputReadiness['baseline_readiness'] ?? null)) { + $safe['baseline_readiness'] = $this->customerSafeBaselineReadiness($outputReadiness['baseline_readiness']); + } + + return $safe; + } + + /** + * @param array $data + * @return array + */ + private function redactCustomerSafeIdentifiers(array $data): array + { + foreach ($data as $key => $value) { + if (is_string($key) && $this->isInternalIdentifierKey($key) && $this->isNumericIdentifierValue($value)) { + unset($data[$key]); + + continue; + } + + if (is_array($value)) { + $data[$key] = $this->redactCustomerSafeIdentifiers($value); + } + } + + return $data; + } + + private function isInternalIdentifierKey(string $key): bool + { + return $key === 'id' || str_ends_with($key, '_id') || str_ends_with($key, '_ids'); + } + + private function isNumericIdentifierValue(mixed $value): bool + { + if (is_int($value)) { + return true; + } + + if (is_string($value)) { + return ctype_digit($value); + } + + if (! is_array($value) || $value === []) { + return false; + } + + return collect($value)->every(static fn (mixed $item): bool => is_int($item) || (is_string($item) && ctype_digit($item))); + } + + private function baselineReadinessStateLabel(string $state): string + { + return match ($state) { + 'customer_ready' => 'Customer-ready baseline evidence', + 'trusted_drift_detected', 'drift_findings_present' => 'Trusted drift findings present', + 'baseline_compare_limited' => 'Customer-ready with disclosed baseline limitations', + 'baseline_identity_unresolved' => 'Baseline subject identity unresolved', + 'baseline_local_evidence_missing' => 'Baseline local evidence missing', + 'baseline_provider_resource_missing' => 'Provider resource evidence missing', + 'baseline_required_coverage_unsupported' => 'Required baseline coverage unsupported', + 'baseline_compare_unproven' => 'Baseline compare proof missing', + 'baseline_compare_stale' => 'Baseline compare evidence stale', + 'baseline_compare_failed' => 'Baseline compare failed', + 'baseline_compare_blocked', 'baseline_compare_not_completed' => 'Baseline compare blocked', + default => 'Baseline readiness unavailable', + }; + } + + private function baselineClaimLabel(string $claim): string + { + return match ($claim) { + 'customer_ready' => 'Customer-ready', + 'customer_ready_with_findings' => 'Customer-ready with findings', + 'customer_ready_with_disclosed_limitations' => 'Customer-ready with disclosed limitations', + default => 'Not customer-ready', + }; + } + + private function outputReadinessStateLabel(string $state): string + { + return match ($state) { + ReviewPackOutputReadiness::STATE_CUSTOMER_SAFE_READY => 'Customer-safe review pack ready', + ReviewPackOutputReadiness::STATE_PUBLISHED_WITH_LIMITATIONS => 'Published with limitations', + ReviewPackOutputReadiness::STATE_INTERNAL_REVIEW_PACKAGE_AVAILABLE => 'Internal review package available', + ReviewPackOutputReadiness::STATE_EXPORT_NOT_READY => 'Export not ready', + default => 'Requires review', + }; + } + + private function sharingBoundaryLabel(string $state): string + { + return match ($state) { + 'customer_safe_ready' => 'Customer-safe', + 'internal_only' => 'Internal only', + 'not_ready' => 'Not ready', + default => 'Requires review', + }; + } + /** * @param array $data * @param array $segments @@ -681,36 +886,41 @@ private function buildReviewDerivedFileMap( : [], ); + $metadataPayload = [ + 'version' => '1.0', + 'managed_environment_id' => $tenant->external_id, + 'tenant_name' => $includePii ? $tenant->name : '[REDACTED]', + 'generated_at' => $generatedAt->toIso8601String(), + 'delivery_bundle' => $deliveryMetadata, + 'environment_review' => [ + 'id' => (int) $review->getKey(), + 'status' => (string) $review->status, + 'completeness_state' => (string) $review->completeness_state, + 'published_at' => $review->published_at?->toIso8601String(), + 'fingerprint' => (string) $review->fingerprint, + ], + 'evidence_snapshot' => [ + 'id' => (int) $snapshot->getKey(), + 'fingerprint' => (string) $snapshot->fingerprint, + 'completeness_state' => (string) $snapshot->completeness_state, + 'generated_at' => $snapshot->generated_at?->toIso8601String(), + ], + 'options' => [ + 'include_pii' => $includePii, + 'include_operations' => $includeOperations, + ], + 'output_readiness' => data_get($summaryPayload, 'output_readiness', []), + 'redaction_integrity' => [ + 'protected_values_hidden' => true, + 'note' => RedactionIntegrity::protectedValueNote(), + ], + ]; + $files = [ - 'metadata.json' => json_encode([ - 'version' => '1.0', - 'managed_environment_id' => $tenant->external_id, - 'tenant_name' => $includePii ? $tenant->name : '[REDACTED]', - 'generated_at' => $generatedAt->toIso8601String(), - 'delivery_bundle' => $deliveryMetadata, - 'environment_review' => [ - 'id' => (int) $review->getKey(), - 'status' => (string) $review->status, - 'completeness_state' => (string) $review->completeness_state, - 'published_at' => $review->published_at?->toIso8601String(), - 'fingerprint' => (string) $review->fingerprint, - ], - 'evidence_snapshot' => [ - 'id' => (int) $snapshot->getKey(), - 'fingerprint' => (string) $snapshot->fingerprint, - 'completeness_state' => (string) $snapshot->completeness_state, - 'generated_at' => $snapshot->generated_at?->toIso8601String(), - ], - 'options' => [ - 'include_pii' => $includePii, - 'include_operations' => $includeOperations, - ], - 'output_readiness' => data_get($summaryPayload, 'output_readiness', []), - 'redaction_integrity' => [ - 'protected_values_hidden' => true, - 'note' => RedactionIntegrity::protectedValueNote(), - ], - ], JSON_PRETTY_PRINT | JSON_THROW_ON_ERROR), + 'metadata.json' => json_encode( + $this->redactReportPayload($metadataPayload, $includePii), + JSON_PRETTY_PRINT | JSON_THROW_ON_ERROR, + ), 'summary.json' => json_encode( $this->redactReportPayload($summaryPayload, $includePii), JSON_PRETTY_PRINT | JSON_THROW_ON_ERROR, @@ -881,7 +1091,7 @@ private function buildExecutiveEntrypoint( '# Executive summary', '', 'ManagedEnvironment: '.$this->plainText($tenantName, '[REDACTED]'), - 'Released review: #'.((int) $review->getKey()), + 'Released review: '.($includePii ? '#'.((int) $review->getKey()) : 'current released review'), 'Review status: '.$this->plainText($review->status, 'unknown'), 'Generated at: '.$generatedAt->toIso8601String(), '', @@ -893,7 +1103,9 @@ private function buildExecutiveEntrypoint( '', $this->plainText( $package['evidence_basis_summary'] ?? null, - sprintf('Anchored to evidence snapshot #%d with %s completeness.', (int) $snapshot->getKey(), (string) $snapshot->completeness_state), + $includePii + ? sprintf('Anchored to evidence snapshot #%d with %s completeness.', (int) $snapshot->getKey(), (string) $snapshot->completeness_state) + : sprintf('Anchored to the released evidence snapshot with %s completeness.', (string) $snapshot->completeness_state), ), '', ...($limitations === [] ? [] : [ @@ -1001,6 +1213,9 @@ private function reviewDerivedSummaryPayload( includePii: $includePii, protectedValuesHidden: true, disclosurePresent: $this->nonCertificationDisclosurePresent($reviewSummary), + baselineReadiness: is_array($reviewSummary['baseline_readiness'] ?? null) + ? $reviewSummary['baseline_readiness'] + : [], ); $governancePackage = is_array($reviewSummary['governance_package'] ?? null) @@ -1110,6 +1325,34 @@ private function executiveLimitationsLines(array $outputReadiness): array $lines[] = '- Publish blockers remain recorded in the released review summary.'; } + if (in_array('baseline_publication_blockers_present', $codes, true)) { + $lines[] = '- Baseline readiness blockers remain recorded; do not treat this output as customer-ready until they are resolved.'; + } + + if (in_array('baseline_compare_unproven', $codes, true)) { + $lines[] = '- Baseline compare proof was not available for the customer-ready claim.'; + } + + if (in_array('baseline_compare_stale', $codes, true)) { + $lines[] = '- Baseline compare evidence was stale at generation time.'; + } + + if (in_array('baseline_compare_failed', $codes, true)) { + $lines[] = '- Baseline compare failed and should be rerun or investigated before external reliance.'; + } + + if (in_array('baseline_foundation_limitations', $codes, true)) { + $lines[] = '- Some baseline subjects rely on inventory, identity, or canonical foundation evidence rather than direct comparable proof.'; + } + + if (in_array('baseline_accepted_limitations', $codes, true)) { + $lines[] = '- Accepted baseline limitations qualify the customer-ready claim.'; + } + + if (in_array('baseline_exclusions_present', $codes, true)) { + $lines[] = '- Excluded non-governed baseline subjects are outside the governed no-drift claim.'; + } + if (in_array('disclosure_missing', $codes, true)) { $lines[] = '- The non-certification disclosure was not fully available in the released review payload.'; } diff --git a/apps/platform/app/Services/EnvironmentReviews/EnvironmentReviewComposer.php b/apps/platform/app/Services/EnvironmentReviews/EnvironmentReviewComposer.php index 06e24804..2946526a 100644 --- a/apps/platform/app/Services/EnvironmentReviews/EnvironmentReviewComposer.php +++ b/apps/platform/app/Services/EnvironmentReviews/EnvironmentReviewComposer.php @@ -4,8 +4,8 @@ namespace App\Services\EnvironmentReviews; -use App\Models\EvidenceSnapshot; use App\Models\EnvironmentReview; +use App\Models\EvidenceSnapshot; use App\Support\EnvironmentReviewStatus; final class EnvironmentReviewComposer @@ -46,6 +46,8 @@ public function compose(EvidenceSnapshot $snapshot, ?EnvironmentReview $review = ->firstWhere('section_key', 'open_risks'); $acceptedRisksSection = collect($sections) ->firstWhere('section_key', 'accepted_risks'); + $baselineSection = collect($sections) + ->firstWhere('section_key', 'baseline_drift_posture'); $operationsSection = collect($sections) ->firstWhere('section_key', 'operations_health'); @@ -68,6 +70,15 @@ public function compose(EvidenceSnapshot $snapshot, ?EnvironmentReview $review = 'section_state_counts' => $sectionStateCounts, 'publish_blockers' => $blockers, 'has_ready_export' => false, + 'baseline_readiness' => is_array(data_get($baselineSection, 'summary_payload.baseline_readiness')) + ? data_get($baselineSection, 'summary_payload.baseline_readiness') + : [], + 'baseline_publication_blockers' => is_array(data_get($baselineSection, 'summary_payload.publication_blockers')) + ? data_get($baselineSection, 'summary_payload.publication_blockers') + : [], + 'baseline_limitations' => is_array(data_get($baselineSection, 'summary_payload.limitations')) + ? data_get($baselineSection, 'summary_payload.limitations') + : [], 'finding_count' => (int) data_get($sections, '0.summary_payload.finding_count', 0), 'finding_outcomes' => is_array(data_get($sections, '0.summary_payload.finding_outcomes')) ? data_get($sections, '0.summary_payload.finding_outcomes') diff --git a/apps/platform/app/Services/EnvironmentReviews/EnvironmentReviewReadinessGate.php b/apps/platform/app/Services/EnvironmentReviews/EnvironmentReviewReadinessGate.php index 70080c99..11751928 100644 --- a/apps/platform/app/Services/EnvironmentReviews/EnvironmentReviewReadinessGate.php +++ b/apps/platform/app/Services/EnvironmentReviews/EnvironmentReviewReadinessGate.php @@ -35,6 +35,10 @@ public function blockersForSections(iterable $sections): array if ($state === EnvironmentReviewCompletenessState::Stale->value) { $blockers[] = sprintf('%s is stale and must be refreshed before publication.', $title); } + + foreach ($this->sectionPublicationBlockers($section) as $sectionBlocker) { + $blockers[] = sprintf('%s: %s', $title, $sectionBlocker); + } } return array_values(array_unique($blockers)); @@ -92,6 +96,7 @@ public function blockersForReview(EnvironmentReview $review): array 'title' => (string) $section->title, 'required' => (bool) $section->required, 'completeness_state' => (string) $section->completeness_state, + 'summary_payload' => is_array($section->summary_payload) ? $section->summary_payload : [], ]; })->all()); } @@ -134,4 +139,26 @@ public function sectionStateCounts(iterable $sections): array 'stale' => (int) ($counts[EnvironmentReviewCompletenessState::Stale->value] ?? 0), ]; } + + /** + * @param array $section + * @return list + */ + private function sectionPublicationBlockers(array $section): array + { + $summary = is_array($section['summary_payload'] ?? null) ? $section['summary_payload'] : []; + $blockers = is_array($summary['publication_blockers'] ?? null) ? $summary['publication_blockers'] : []; + + if ($blockers === []) { + $baselineReadiness = is_array($summary['baseline_readiness'] ?? null) ? $summary['baseline_readiness'] : []; + $blockers = is_array($baselineReadiness['publication_blockers'] ?? null) + ? $baselineReadiness['publication_blockers'] + : []; + } + + return collect($blockers) + ->filter(static fn (mixed $blocker): bool => is_string($blocker) && trim($blocker) !== '') + ->values() + ->all(); + } } diff --git a/apps/platform/app/Services/EnvironmentReviews/EnvironmentReviewSectionFactory.php b/apps/platform/app/Services/EnvironmentReviews/EnvironmentReviewSectionFactory.php index f60fc3c2..60b953ba 100644 --- a/apps/platform/app/Services/EnvironmentReviews/EnvironmentReviewSectionFactory.php +++ b/apps/platform/app/Services/EnvironmentReviews/EnvironmentReviewSectionFactory.php @@ -6,9 +6,9 @@ use App\Models\EvidenceSnapshot; use App\Models\EvidenceSnapshotItem; +use App\Support\EnvironmentReviewCompletenessState; use App\Support\Findings\FindingOutcomeSemantics; use App\Support\Governance\Controls\ComplianceEvidenceMappingV1; -use App\Support\EnvironmentReviewCompletenessState; use Illuminate\Support\Arr; use Illuminate\Support\Collection; @@ -61,6 +61,7 @@ private function executiveSummarySection( $findingReportBuckets = is_array($findingsSummary['report_bucket_counts'] ?? null) ? $findingsSummary['report_bucket_counts'] : []; $riskAcceptance = is_array($findingsSummary['risk_acceptance'] ?? null) ? $findingsSummary['risk_acceptance'] : []; $canonicalControls = is_array($findingsSummary['canonical_controls'] ?? null) ? $findingsSummary['canonical_controls'] : []; + $baselineReadiness = $this->baselineReadiness($baselineSummary); $openCount = (int) ($findingsSummary['open_count'] ?? 0); $findingCount = (int) ($findingsSummary['count'] ?? 0); @@ -106,6 +107,7 @@ private function executiveSummarySection( 'canonical_control_count' => count($canonicalControls), 'canonical_controls' => $canonicalControls, 'risk_acceptance' => $riskAcceptance, + 'baseline_readiness' => $baselineReadiness, ], 'render_payload' => [ 'highlights' => $highlights, @@ -115,6 +117,7 @@ private function executiveSummarySection( operationFailures: $operationFailures, postureScore: is_numeric($postureScore) ? (int) $postureScore : null, riskWarnings: (int) ($riskAcceptance['warning_count'] ?? 0), + baselineReadiness: $baselineReadiness, ), 'included_dimensions' => collect($snapshot->items) ->map(static fn (EvidenceSnapshotItem $item): array => [ @@ -242,6 +245,9 @@ private function permissionPostureSection(?EvidenceSnapshotItem $permissionItem, private function baselineDriftSection(?EvidenceSnapshotItem $baselineItem): array { $summary = $this->summary($baselineItem); + $baselineReadiness = $this->baselineReadiness($summary); + $publicationBlockers = $this->baselinePublicationBlockers($baselineReadiness); + $limitations = $this->baselineLimitations($baselineReadiness); return [ 'section_key' => 'baseline_drift_posture', @@ -253,11 +259,16 @@ private function baselineDriftSection(?EvidenceSnapshotItem $baselineItem): arra 'summary_payload' => [ 'drift_count' => (int) ($summary['drift_count'] ?? 0), 'open_drift_count' => (int) ($summary['open_drift_count'] ?? 0), + 'baseline_readiness' => $baselineReadiness, + 'publication_blockers' => $publicationBlockers, + 'limitations' => $limitations, ], 'render_payload' => [ - 'disclosure' => (int) ($summary['open_drift_count'] ?? 0) > 0 - ? 'Baseline drift remains visible in this review and should be discussed as hardening work.' - : 'No open baseline drift findings are present in the anchored evidence basis.', + 'disclosure' => $this->baselineDisclosure( + baselineReadiness: $baselineReadiness, + openDriftCount: (int) ($summary['open_drift_count'] ?? 0), + ), + 'next_actions' => $this->baselineNextActions($baselineReadiness), 'artifact_sources' => $this->artifactSourceSummaries($baselineItem), ], 'measured_at' => $baselineItem?->measured_at, @@ -389,6 +400,7 @@ private function nextActions( int $operationFailures, ?int $postureScore, int $riskWarnings, + array $baselineReadiness = [], ): array { $actions = []; @@ -408,6 +420,10 @@ private function nextActions( $actions[] = 'Schedule remediation for recurring baseline drift to reduce repeated review findings.'; } + foreach ($this->baselineNextActions($baselineReadiness) as $baselineAction) { + $actions[] = $baselineAction; + } + if ($operationFailures > 0) { $actions[] = 'Inspect recent failed operations to confirm tenant management workflows are stable.'; } @@ -418,4 +434,83 @@ private function nextActions( return $actions; } + + /** + * @param array $summary + * @return array + */ + private function baselineReadiness(array $summary): array + { + return is_array($summary['baseline_readiness'] ?? null) ? $summary['baseline_readiness'] : []; + } + + /** + * @param array $baselineReadiness + * @return list + */ + private function baselinePublicationBlockers(array $baselineReadiness): array + { + return collect($baselineReadiness['publication_blockers'] ?? []) + ->filter(static fn (mixed $blocker): bool => is_string($blocker) && trim($blocker) !== '') + ->values() + ->all(); + } + + /** + * @param array $baselineReadiness + * @return list> + */ + private function baselineLimitations(array $baselineReadiness): array + { + return collect($baselineReadiness['limitations'] ?? []) + ->filter(static fn (mixed $limitation): bool => is_array($limitation) && is_string($limitation['code'] ?? null)) + ->values() + ->all(); + } + + /** + * @param array $baselineReadiness + */ + private function baselineDisclosure(array $baselineReadiness, int $openDriftCount): string + { + $blockerCount = count($this->baselinePublicationBlockers($baselineReadiness)); + $limitationCount = count($this->baselineLimitations($baselineReadiness)); + + if ($blockerCount > 0) { + return sprintf('%d baseline readiness blocker(s) must be resolved before customer-ready publication.', $blockerCount); + } + + if ($limitationCount > 0) { + return sprintf('%d baseline limitation(s) qualify the customer-ready claim and must remain disclosed.', $limitationCount); + } + + if ($openDriftCount > 0) { + return 'Baseline drift remains visible in this review and should be discussed as hardening work.'; + } + + $claim = (string) ($baselineReadiness['customer_safe_claim'] ?? ''); + + if ($claim === 'customer_ready') { + return 'Baseline compare readiness supports the customer-ready no-drift claim.'; + } + + return 'No open baseline drift findings are present in the anchored evidence basis.'; + } + + /** + * @param array $baselineReadiness + * @return list + */ + private function baselineNextActions(array $baselineReadiness): array + { + $action = (string) ($baselineReadiness['next_action'] ?? ''); + + return match ($action) { + 'open_baseline_subject_resolution' => ['Resolve baseline subject identity and provider-resource decisions before publication.'], + 'open_evidence_basis' => ['Refresh baseline compare evidence before relying on the review output.'], + 'open_operation_proof' => ['Inspect the latest baseline compare operation proof and rerun if needed.'], + 'review_output_limitations' => ['Review and disclose baseline limitations before customer delivery.'], + default => [], + }; + } } diff --git a/apps/platform/app/Services/Evidence/Sources/BaselineDriftPostureSource.php b/apps/platform/app/Services/Evidence/Sources/BaselineDriftPostureSource.php index 5fe6f594..3cc25cdb 100644 --- a/apps/platform/app/Services/Evidence/Sources/BaselineDriftPostureSource.php +++ b/apps/platform/app/Services/Evidence/Sources/BaselineDriftPostureSource.php @@ -8,14 +8,16 @@ use App\Models\ManagedEnvironment; use App\Models\OperationRun; use App\Services\Evidence\Contracts\EvidenceSourceProvider; -use App\Support\Evidence\EvidenceCompletenessState; +use App\Support\Baselines\Readiness\BaselineEvidenceReadinessDeriver; use App\Support\OperationCatalog; -use App\Support\OperationRunOutcome; -use App\Support\OperationRunStatus; use App\Support\OperationRunType; final class BaselineDriftPostureSource implements EvidenceSourceProvider { + public function __construct( + private readonly BaselineEvidenceReadinessDeriver $readinessDeriver, + ) {} + public function key(): string { return 'baseline_drift_posture'; @@ -36,16 +38,20 @@ public function collect(ManagedEnvironment $tenant): array $latest = $findings->max('updated_at') ?? $findings->max('created_at') ?? $latestCompareAt; $isStale = $latest !== null && $latest->lt(now()->subDays(30)); - $state = match (true) { - $isStale => EvidenceCompletenessState::Stale->value, - $latestCompareRun instanceof OperationRun => $this->stateForCompareRun($latestCompareRun), - $findings->isEmpty() => EvidenceCompletenessState::Missing->value, - default => EvidenceCompletenessState::Complete->value, - }; + $driftCount = $findings->count(); + $openDriftCount = $findings->filter(fn (Finding $finding): bool => $finding->hasOpenStatus())->count(); + $baselineReadiness = $this->readinessDeriver->deriveForEnvironment( + tenant: $tenant, + latestCompareRun: $latestCompareRun, + driftCount: $driftCount, + openDriftCount: $openDriftCount, + measuredAt: $latest, + isStale: $isStale, + ); return [ 'dimension_key' => $this->key(), - 'state' => $state, + 'state' => (string) ($baselineReadiness['state'] ?? 'missing'), 'required' => true, 'source_kind' => 'model_summary', 'source_record_type' => Finding::class, @@ -54,18 +60,23 @@ public function collect(ManagedEnvironment $tenant): array 'measured_at' => $latest, 'freshness_at' => $latest, 'summary_payload' => [ - 'drift_count' => $findings->count(), - 'open_drift_count' => $findings->filter(fn (Finding $finding): bool => $finding->hasOpenStatus())->count(), + 'drift_count' => $driftCount, + 'open_drift_count' => $openDriftCount, 'latest_compare_run_id' => $latestCompareRun instanceof OperationRun ? (int) $latestCompareRun->getKey() : null, 'latest_compare_outcome' => $latestCompareRun instanceof OperationRun ? (string) $latestCompareRun->outcome : null, 'latest_compare_completed_at' => $latestCompareRun?->completed_at?->toIso8601String(), + 'baseline_readiness' => $baselineReadiness, ], 'fingerprint_payload' => [ 'latest' => $latest?->format(DATE_ATOM), - 'count' => $findings->count(), + 'count' => $driftCount, 'latest_compare_run_id' => $latestCompareRun instanceof OperationRun ? (int) $latestCompareRun->getKey() : null, 'latest_compare_outcome' => $latestCompareRun instanceof OperationRun ? (string) $latestCompareRun->outcome : null, 'latest_compare_completed_at' => $latestCompareRun?->completed_at?->toIso8601String(), + 'baseline_readiness_state' => (string) ($baselineReadiness['readiness_state'] ?? 'unknown'), + 'baseline_readiness_counts' => is_array($baselineReadiness['counts'] ?? null) ? $baselineReadiness['counts'] : [], + 'baseline_readiness_limitations' => is_array($baselineReadiness['limitation_codes'] ?? null) ? $baselineReadiness['limitation_codes'] : [], + 'baseline_readiness_blocker_count' => count(is_array($baselineReadiness['publication_blockers'] ?? null) ? $baselineReadiness['publication_blockers'] : []), ], 'sort_order' => 40, ]; @@ -81,17 +92,4 @@ private function latestBaselineCompareRun(ManagedEnvironment $tenant): ?Operatio ->latest('id') ->first(); } - - private function stateForCompareRun(OperationRun $operationRun): string - { - if ((string) $operationRun->status !== OperationRunStatus::Completed->value) { - return EvidenceCompletenessState::Missing->value; - } - - return match ((string) $operationRun->outcome) { - OperationRunOutcome::Succeeded->value => EvidenceCompletenessState::Complete->value, - OperationRunOutcome::PartiallySucceeded->value => EvidenceCompletenessState::Partial->value, - default => EvidenceCompletenessState::Missing->value, - }; - } } diff --git a/apps/platform/app/Support/Baselines/Readiness/BaselineEvidenceReadinessDeriver.php b/apps/platform/app/Support/Baselines/Readiness/BaselineEvidenceReadinessDeriver.php new file mode 100644 index 00000000..6b3b2976 --- /dev/null +++ b/apps/platform/app/Support/Baselines/Readiness/BaselineEvidenceReadinessDeriver.php @@ -0,0 +1,428 @@ + + */ + public function deriveForEnvironment( + ManagedEnvironment $tenant, + ?OperationRun $latestCompareRun, + int $driftCount, + int $openDriftCount, + ?CarbonInterface $measuredAt, + bool $isStale, + ): array { + return $this->derive( + latestCompareRun: $latestCompareRun, + driftCount: $driftCount, + openDriftCount: $openDriftCount, + bindingDecisionCounts: $this->bindingDecisionCounts($tenant, $latestCompareRun), + measuredAt: $measuredAt, + isStale: $isStale, + ); + } + + /** + * @param array $bindingDecisionCounts + * @return array + */ + public function derive( + ?OperationRun $latestCompareRun, + int $driftCount, + int $openDriftCount, + array $bindingDecisionCounts = [], + ?CarbonInterface $measuredAt = null, + bool $isStale = false, + ): array { + $bindingDecisionCounts = $this->normalizeCounts($bindingDecisionCounts); + $semantics = $this->structuredCompareSemantics($latestCompareRun); + $counts = $this->semanticCounts($semantics, $driftCount, $bindingDecisionCounts); + $publicationBlockers = []; + $limitations = []; + $readinessState = 'customer_ready'; + $state = EvidenceCompletenessState::Complete; + $nextAction = 'download_customer_safe_review_pack'; + $proofState = $semantics === [] ? 'missing_structured_compare' : 'structured_compare'; + + if (! $latestCompareRun instanceof OperationRun) { + if ($driftCount > 0) { + $readinessState = 'drift_findings_present'; + $proofState = 'drift_findings_only'; + $nextAction = 'review_baseline_drift_findings'; + } else { + $state = EvidenceCompletenessState::Missing; + $readinessState = 'baseline_compare_unproven'; + $publicationBlockers[] = 'Baseline compare proof is missing; refresh evidence before presenting a no-drift claim.'; + $nextAction = 'open_evidence_basis'; + } + } elseif ((string) $latestCompareRun->status !== OperationRunStatus::Completed->value) { + $state = EvidenceCompletenessState::Missing; + $readinessState = 'baseline_compare_not_completed'; + $publicationBlockers[] = 'Baseline compare has not completed; rerun or wait for completion before publication.'; + $nextAction = 'open_operation_proof'; + } elseif ((string) $latestCompareRun->outcome === OperationRunOutcome::Failed->value || $counts['failed_subject_count'] > 0) { + $state = EvidenceCompletenessState::Missing; + $readinessState = 'baseline_compare_failed'; + $publicationBlockers[] = 'Baseline compare failed; rerun or investigate before publication.'; + $nextAction = 'open_operation_proof'; + } elseif ($isStale) { + $state = EvidenceCompletenessState::Stale; + $readinessState = 'baseline_compare_stale'; + $publicationBlockers[] = 'Baseline compare evidence is stale and must be refreshed before publication.'; + $nextAction = 'open_evidence_basis'; + } elseif ($semantics === []) { + if ($driftCount > 0) { + $readinessState = 'drift_findings_present'; + $proofState = 'drift_findings_only'; + $nextAction = 'review_baseline_drift_findings'; + } else { + $state = EvidenceCompletenessState::Missing; + $readinessState = 'baseline_compare_unproven'; + $publicationBlockers[] = 'Baseline compare did not produce structured readiness proof; refresh evidence before publication.'; + $nextAction = 'open_evidence_basis'; + } + } else { + [$publicationBlockers, $limitations, $nextAction] = $this->reasonsToReadinessActions($counts); + + if ($publicationBlockers !== []) { + $state = $counts['missing_local_evidence_subject_count'] > 0 || $counts['failed_subject_count'] > 0 + ? EvidenceCompletenessState::Missing + : EvidenceCompletenessState::Partial; + $readinessState = $this->blockingReadinessState($counts); + } elseif ($limitations !== []) { + $state = EvidenceCompletenessState::Partial; + $readinessState = 'baseline_compare_limited'; + } elseif ($counts['drift_subject_count'] > 0 || $driftCount > 0) { + $readinessState = 'trusted_drift_detected'; + $nextAction = 'review_baseline_drift_findings'; + } + } + + $limitationCodes = array_values(array_unique(array_map( + static fn (array $limitation): string => (string) $limitation['code'], + $limitations, + ))); + + return [ + 'version' => self::VERSION, + 'state' => $state->value, + 'readiness_state' => $readinessState, + 'proof_state' => $proofState, + 'customer_safe_claim' => $this->customerSafeClaim($state, $readinessState, $publicationBlockers, $limitations), + 'publication_blockers' => array_values(array_unique($publicationBlockers)), + 'limitations' => $limitations, + 'limitation_codes' => $limitationCodes, + 'next_action' => $nextAction, + 'counts' => $counts, + 'customer_safe_summary' => [ + 'state' => $state->value, + 'readiness_state' => $readinessState, + 'verified_subject_count' => $counts['verified_subject_count'], + 'drift_subject_count' => max($counts['drift_subject_count'], $driftCount), + 'open_drift_count' => $openDriftCount, + 'blocker_count' => count(array_unique($publicationBlockers)), + 'limitation_count' => count($limitationCodes), + 'excluded_subject_count' => $counts['excluded_subject_count'], + ], + 'internal_diagnostics' => [ + 'latest_compare_run_id' => $latestCompareRun instanceof OperationRun ? (int) $latestCompareRun->getKey() : null, + 'latest_compare_status' => $latestCompareRun instanceof OperationRun ? (string) $latestCompareRun->status : null, + 'latest_compare_outcome' => $latestCompareRun instanceof OperationRun ? (string) $latestCompareRun->outcome : null, + 'latest_compare_completed_at' => $latestCompareRun?->completed_at?->toIso8601String(), + 'measured_at' => $measuredAt?->toIso8601String(), + 'has_structured_compare_semantics' => $semantics !== [], + 'run_outcome' => is_string($semantics['run_outcome'] ?? null) ? $semantics['run_outcome'] : null, + 'operation_outcome' => is_string($semantics['operation_outcome'] ?? null) ? $semantics['operation_outcome'] : null, + 'binding_decision_counts' => $bindingDecisionCounts, + 'semantic_counts' => is_array($semantics['counts'] ?? null) ? $semantics['counts'] : [], + ], + ]; + } + + /** + * @return array + */ + private function bindingDecisionCounts(ManagedEnvironment $tenant, ?OperationRun $latestCompareRun): array + { + $counts = ProviderResourceBinding::query() + ->active() + ->where('managed_environment_id', (int) $tenant->getKey()) + ->where('workspace_id', (int) $tenant->workspace_id) + ->selectRaw('resolution_mode, count(*) as aggregate') + ->groupBy('resolution_mode') + ->pluck('aggregate', 'resolution_mode') + ->map(static fn (mixed $count): int => max(0, (int) $count)) + ->all(); + + $compareAt = $latestCompareRun?->completed_at + ?? $latestCompareRun?->updated_at + ?? $latestCompareRun?->created_at; + + if ($compareAt !== null) { + $counts['revoked_after_latest_compare'] = ProviderResourceBinding::query() + ->where('managed_environment_id', (int) $tenant->getKey()) + ->where('workspace_id', (int) $tenant->workspace_id) + ->where('binding_status', ProviderResourceBindingStatus::Revoked->value) + ->where('ended_at', '>', $compareAt) + ->count(); + } + + return $counts; + } + + /** + * @return array + */ + private function structuredCompareSemantics(?OperationRun $operationRun): array + { + if (! $operationRun instanceof OperationRun) { + return []; + } + + $context = is_array($operationRun->context) ? $operationRun->context : []; + $semantics = data_get($context, 'baseline_compare.result_semantics'); + + if (! is_array($semantics)) { + return []; + } + + $version = $semantics['version'] ?? null; + $counts = $semantics['counts'] ?? null; + + if (! is_string($version) || ! is_array($counts)) { + return []; + } + + return $semantics; + } + + /** + * @param array $semantics + * @return array + */ + private function semanticCounts(array $semantics, int $driftCount, array $bindingDecisionCounts): array + { + $byReason = $this->normalizeCounts(data_get($semantics, 'counts.by_reason', [])); + $byReadiness = $this->normalizeCounts(data_get($semantics, 'counts.by_readiness_impact', [])); + + $identityBlockerCount = $this->sumReasons($byReason, [ + CompareResultReason::IdentityRequired, + CompareResultReason::UnresolvedDuplicateCandidates, + CompareResultReason::UnresolvedLowTrustMatch, + CompareResultReason::UnresolvedAmbiguousIdentity, + ]); + $foundationLimitationCount = $this->sumReasons($byReason, [ + CompareResultReason::FoundationInventoryOnly, + CompareResultReason::FoundationIdentityOnly, + CompareResultReason::FoundationCanonicalOnly, + ]); + $unsupportedCount = $this->sumReasons($byReason, [ + CompareResultReason::UnsupportedResourceClass, + CompareResultReason::CompareNotSupported, + ]); + + $bindingVerifiedCount = $this->sumResolutionModes($bindingDecisionCounts, [ + ProviderResourceResolutionMode::ExactProviderIdentity, + ProviderResourceResolutionMode::CanonicalBuiltin, + ProviderResourceResolutionMode::CanonicalVirtualTarget, + ProviderResourceResolutionMode::ManualBinding, + ]); + $bindingAcceptedLimitationCount = (int) ($bindingDecisionCounts[ProviderResourceResolutionMode::AcceptedLimitation->value] ?? 0); + $bindingExcludedCount = (int) ($bindingDecisionCounts[ProviderResourceResolutionMode::ExcludedNonGoverned->value] ?? 0); + $bindingUnsupportedCount = (int) ($bindingDecisionCounts[ProviderResourceResolutionMode::UnsupportedCoverage->value] ?? 0); + $bindingMissingExpectedCount = (int) ($bindingDecisionCounts[ProviderResourceResolutionMode::MissingExpected->value] ?? 0); + + return [ + 'verified_subject_count' => $this->sumReasons($byReason, [ + CompareResultReason::VerifiedNoDrift, + CompareResultReason::ResolvedActiveBinding, + CompareResultReason::ResolvedCanonicalIdentity, + CompareResultReason::ResolvedProviderIdentity, + ]) + $bindingVerifiedCount, + 'drift_subject_count' => max(0, (int) ($byReason[CompareResultReason::VerifiedDriftDetected->value] ?? 0), $driftCount), + 'identity_blocker_subject_count' => $identityBlockerCount, + 'missing_local_evidence_subject_count' => (int) ($byReason[CompareResultReason::MissingLocalEvidence->value] ?? 0), + 'missing_provider_resource_subject_count' => max((int) ($byReason[CompareResultReason::MissingProviderResource->value] ?? 0), $bindingMissingExpectedCount), + 'unsupported_subject_count' => max($unsupportedCount, $bindingUnsupportedCount), + 'foundation_limited_subject_count' => $foundationLimitationCount, + 'accepted_limitation_subject_count' => max((int) ($byReason[CompareResultReason::AcceptedLimitation->value] ?? 0), $bindingAcceptedLimitationCount), + 'excluded_subject_count' => max((int) ($byReason[CompareResultReason::ExcludedNonGoverned->value] ?? 0), $bindingExcludedCount), + 'failed_subject_count' => (int) ($byReason[CompareResultReason::CompareFailed->value] ?? 0), + 'customer_blocker_subject_count' => (int) ($byReadiness[CompareResultReadinessImpact::CustomerBlocker->value] ?? 0), + 'internal_blocker_subject_count' => (int) ($byReadiness[CompareResultReadinessImpact::InternalBlocker->value] ?? 0), + 'customer_limitation_subject_count' => (int) ($byReadiness[CompareResultReadinessImpact::CustomerLimitation->value] ?? 0), + 'internal_limitation_subject_count' => (int) ($byReadiness[CompareResultReadinessImpact::InternalLimitation->value] ?? 0), + 'revoked_binding_after_compare_count' => (int) ($bindingDecisionCounts['revoked_after_latest_compare'] ?? 0), + ]; + } + + /** + * @param array $counts + * @return array{0:list,1:list,2:string} + */ + private function reasonsToReadinessActions(array $counts): array + { + $blockers = []; + $limitations = []; + $nextAction = 'download_customer_safe_review_pack'; + + if ($counts['identity_blocker_subject_count'] > 0) { + $blockers[] = 'Baseline subject identity must be resolved before customer-ready publication.'; + $nextAction = 'open_baseline_subject_resolution'; + } + + if ($counts['missing_local_evidence_subject_count'] > 0) { + $blockers[] = 'Baseline local evidence is missing and must be refreshed before publication.'; + $nextAction = 'open_evidence_basis'; + } + + if ($counts['missing_provider_resource_subject_count'] > 0) { + $blockers[] = 'Baseline provider resources are missing and need operator review before publication.'; + $nextAction = 'open_baseline_subject_resolution'; + } + + if ($counts['unsupported_subject_count'] > 0) { + $blockers[] = 'Required baseline coverage is unsupported and must be accepted or resolved before publication.'; + $nextAction = 'review_output_limitations'; + } + + if ($counts['failed_subject_count'] > 0 || $counts['internal_blocker_subject_count'] > 0) { + $blockers[] = 'Baseline compare contains failed subjects and must be rerun or investigated before publication.'; + $nextAction = 'open_operation_proof'; + } + + if ($counts['revoked_binding_after_compare_count'] > 0) { + $blockers[] = 'Baseline subject decisions changed after the latest compare; refresh evidence before publication.'; + $nextAction = 'open_evidence_basis'; + } + + if ($counts['foundation_limited_subject_count'] > 0) { + $limitations[] = [ + 'code' => 'baseline_foundation_limitations', + 'summary' => 'Some baseline subjects are supported only by inventory, identity, or canonical foundation evidence.', + ]; + } + + if ($counts['accepted_limitation_subject_count'] > 0) { + $limitations[] = [ + 'code' => 'baseline_accepted_limitations', + 'summary' => 'Accepted baseline limitations qualify the customer-ready claim.', + ]; + } + + if ($counts['excluded_subject_count'] > 0) { + $limitations[] = [ + 'code' => 'baseline_exclusions_present', + 'summary' => 'Excluded non-governed baseline subjects are outside the governed no-drift claim.', + ]; + } + + if ($blockers === [] && $limitations !== []) { + $nextAction = 'review_output_limitations'; + } + + return [$blockers, $limitations, $nextAction]; + } + + /** + * @param array $counts + */ + private function blockingReadinessState(array $counts): string + { + if ($counts['missing_local_evidence_subject_count'] > 0) { + return 'baseline_local_evidence_missing'; + } + + if ($counts['identity_blocker_subject_count'] > 0) { + return 'baseline_identity_unresolved'; + } + + if ($counts['missing_provider_resource_subject_count'] > 0) { + return 'baseline_provider_resource_missing'; + } + + if ($counts['unsupported_subject_count'] > 0) { + return 'baseline_required_coverage_unsupported'; + } + + return 'baseline_compare_blocked'; + } + + /** + * @param array $counts + * @param list $reasons + */ + private function sumReasons(array $counts, array $reasons): int + { + return collect($reasons) + ->sum(static fn (CompareResultReason $reason): int => (int) ($counts[$reason->value] ?? 0)); + } + + /** + * @param array $counts + * @param list $modes + */ + private function sumResolutionModes(array $counts, array $modes): int + { + return collect($modes) + ->sum(static fn (ProviderResourceResolutionMode $mode): int => (int) ($counts[$mode->value] ?? 0)); + } + + /** + * @return array + */ + private function normalizeCounts(mixed $counts): array + { + if (! is_array($counts)) { + return []; + } + + return collect($counts) + ->filter(static fn (mixed $count, mixed $key): bool => is_string($key) && $key !== '') + ->map(static fn (mixed $count): int => max(0, (int) $count)) + ->all(); + } + + /** + * @param list $publicationBlockers + * @param list $limitations + */ + private function customerSafeClaim( + EvidenceCompletenessState $state, + string $readinessState, + array $publicationBlockers, + array $limitations, + ): string { + if ($publicationBlockers !== [] || in_array($state, [EvidenceCompletenessState::Missing, EvidenceCompletenessState::Stale], true)) { + return 'not_customer_ready'; + } + + if ($limitations !== []) { + return 'customer_ready_with_disclosed_limitations'; + } + + return match ($readinessState) { + 'trusted_drift_detected', 'drift_findings_present' => 'customer_ready_with_findings', + default => 'customer_ready', + }; + } +} diff --git a/apps/platform/app/Support/ReviewPacks/ReportDisclosurePolicy.php b/apps/platform/app/Support/ReviewPacks/ReportDisclosurePolicy.php index 8d8affa4..96f03f8d 100644 --- a/apps/platform/app/Support/ReviewPacks/ReportDisclosurePolicy.php +++ b/apps/platform/app/Support/ReviewPacks/ReportDisclosurePolicy.php @@ -24,7 +24,7 @@ final class ReportDisclosurePolicy * mandatory_disclosures:list, * warnings:list, * blocking_reasons:list, - * proof_states:array{audience_boundary:string,evidence_basis:string,protected_values:string,non_certification:string}, + * proof_states:array{audience_boundary:string,evidence_basis:string,baseline_readiness:string,protected_values:string,non_certification:string}, * show_section_appendix:bool, * show_technical_details:bool * } @@ -35,6 +35,7 @@ public static function evaluate(array $profile, array $readiness, array $metadat $containsPii = (bool) ($readiness['contains_pii'] ?? false); $protectedValuesHidden = (bool) ($readiness['protected_values_hidden'] ?? false); $disclosurePresent = (bool) ($readiness['disclosure_present'] ?? false); + $baselineReadiness = is_array($readiness['baseline_readiness'] ?? null) ? $readiness['baseline_readiness'] : []; $displayedDisclosure = self::plainText( $metadata['non_certification_disclosure'] ?? null, __('localization.review.non_certification_disclosure_text'), @@ -43,6 +44,7 @@ public static function evaluate(array $profile, array $readiness, array $metadat $proofStates = [ 'audience_boundary' => self::PROOF_VERIFIED, 'evidence_basis' => self::evidenceBasisProofState((string) ($readiness['evidence_completeness_state'] ?? '')), + 'baseline_readiness' => self::baselineReadinessProofState($baselineReadiness), 'protected_values' => self::protectedValuesProofState( isCustomerFacing: $isCustomerFacing, containsPii: $containsPii, @@ -63,6 +65,14 @@ public static function evaluate(array $profile, array $readiness, array $metadat ]; } + if ($isCustomerFacing && self::baselineBlockers($baselineReadiness) !== []) { + $blockingReasons[] = [ + 'key' => 'baseline_readiness_blocked', + 'label' => __('localization.review.baseline_publication_blocked'), + 'summary' => __('localization.review.report_disclosure_baseline_readiness_blocked'), + ]; + } + $warnings = []; if ((bool) ($profile['is_fallback'] ?? false)) { @@ -89,6 +99,14 @@ public static function evaluate(array $profile, array $readiness, array $metadat ]; } + if ($isCustomerFacing && self::baselineLimitations($baselineReadiness) !== []) { + $warnings[] = [ + 'key' => 'baseline_limitations_present', + 'label' => __('localization.review.baseline_limitations_short_reason'), + 'summary' => __('localization.review.report_disclosure_baseline_limitations_present'), + ]; + } + $showDetailedContent = ! ($isCustomerFacing && $containsPii); return [ @@ -122,6 +140,17 @@ public static function evaluate(array $profile, array $readiness, array $metadat }, 'proof_state' => $proofStates['protected_values'], ], + [ + 'key' => 'baseline_readiness', + 'label' => __('localization.review.report_disclosure_baseline_readiness'), + 'summary' => match ($proofStates['baseline_readiness']) { + self::PROOF_VERIFIED => __('localization.review.report_disclosure_baseline_verified'), + self::PROOF_ASSUMED => __('localization.review.report_disclosure_baseline_limited'), + self::PROOF_MISSING => __('localization.review.report_disclosure_baseline_missing'), + default => __('localization.review.report_disclosure_baseline_unknown'), + }, + 'proof_state' => $proofStates['baseline_readiness'], + ], [ 'key' => 'non_certification', 'label' => __('localization.review.non_certification_disclosure'), @@ -137,6 +166,28 @@ public static function evaluate(array $profile, array $readiness, array $metadat ]; } + /** + * @param array $baselineReadiness + */ + private static function baselineReadinessProofState(array $baselineReadiness): string + { + if ($baselineReadiness === []) { + return self::PROOF_UNKNOWN; + } + + if (self::baselineBlockers($baselineReadiness) !== []) { + return self::PROOF_MISSING; + } + + if (self::baselineLimitations($baselineReadiness) !== []) { + return self::PROOF_ASSUMED; + } + + return (string) ($baselineReadiness['state'] ?? '') === 'complete' + ? self::PROOF_VERIFIED + : self::PROOF_MISSING; + } + private static function evidenceBasisProofState(string $evidenceCompletenessState): string { return match ($evidenceCompletenessState) { @@ -162,6 +213,30 @@ private static function protectedValuesProofState( return self::PROOF_ASSUMED; } + /** + * @param array $baselineReadiness + * @return list + */ + private static function baselineBlockers(array $baselineReadiness): array + { + return collect($baselineReadiness['publication_blockers'] ?? []) + ->filter(static fn (mixed $blocker): bool => is_string($blocker) && trim($blocker) !== '') + ->values() + ->all(); + } + + /** + * @param array $baselineReadiness + * @return list + */ + private static function baselineLimitations(array $baselineReadiness): array + { + return collect($baselineReadiness['limitation_codes'] ?? []) + ->filter(static fn (mixed $code): bool => is_string($code) && trim($code) !== '') + ->values() + ->all(); + } + private static function plainText(mixed $value, string $fallback): string { if (! is_scalar($value) && $value !== null) { diff --git a/apps/platform/app/Support/ReviewPacks/ReviewPackOutputReadiness.php b/apps/platform/app/Support/ReviewPacks/ReviewPackOutputReadiness.php index 50b5a807..5adebc5e 100644 --- a/apps/platform/app/Support/ReviewPacks/ReviewPackOutputReadiness.php +++ b/apps/platform/app/Support/ReviewPacks/ReviewPackOutputReadiness.php @@ -37,6 +37,7 @@ final class ReviewPackOutputReadiness * primary_reason: string, * primary_action: string, * limitations: list, + * baseline_readiness: array, * section_summary: array{ * required_total: int, * required_complete: int, @@ -59,9 +60,11 @@ public static function derive( bool $includePii, bool $protectedValuesHidden = true, bool $disclosurePresent = true, + array $baselineReadiness = [], ): array { $sectionStateCounts = self::normalizeCounts($sectionStateCounts); $requiredSectionStateCounts = self::normalizeCounts($requiredSectionStateCounts); + $baselineReadiness = is_array($baselineReadiness) ? $baselineReadiness : []; $requiredLimitedCount = max( 0, @@ -100,6 +103,8 @@ public static function derive( $limitations[] = ['code' => 'disclosure_missing']; } + array_push($limitations, ...self::baselineLimitations($baselineReadiness)); + $readinessState = match (true) { ! $hasReadyExport => self::STATE_EXPORT_NOT_READY, self::hasMaterialLimitations($limitations) => self::STATE_PUBLISHED_WITH_LIMITATIONS, @@ -144,6 +149,7 @@ public static function derive( 'primary_reason' => $primaryReason, 'primary_action' => $primaryAction, 'limitations' => $limitations, + 'baseline_readiness' => $baselineReadiness, 'section_summary' => [ 'required_total' => $requiredSectionCount, 'required_complete' => $requiredComplete, @@ -175,4 +181,51 @@ private static function hasMaterialLimitations(array $limitations): bool ->pluck('code') ->contains(static fn (string $code): bool => $code !== 'contains_pii'); } + + /** + * @param array $baselineReadiness + * @return list + */ + private static function baselineLimitations(array $baselineReadiness): array + { + if ($baselineReadiness === []) { + return []; + } + + $limitations = []; + $blockers = is_array($baselineReadiness['publication_blockers'] ?? null) + ? $baselineReadiness['publication_blockers'] + : []; + $readinessState = (string) ($baselineReadiness['readiness_state'] ?? ''); + + if ($blockers !== []) { + $limitations[] = ['code' => 'baseline_publication_blockers_present']; + } + + if ($readinessState === 'baseline_compare_unproven') { + $limitations[] = ['code' => 'baseline_compare_unproven']; + } + + if ($readinessState === 'baseline_compare_stale') { + $limitations[] = ['code' => 'baseline_compare_stale']; + } + + if ($readinessState === 'baseline_compare_failed') { + $limitations[] = ['code' => 'baseline_compare_failed']; + } + + $codes = collect($baselineReadiness['limitation_codes'] ?? []) + ->filter(static fn (mixed $code): bool => is_string($code) && trim($code) !== '') + ->values() + ->all(); + + foreach ($codes as $code) { + $limitations[] = ['code' => $code]; + } + + return collect($limitations) + ->unique('code') + ->values() + ->all(); + } } diff --git a/apps/platform/app/Support/ReviewPacks/ReviewPackOutputResolutionGuidance.php b/apps/platform/app/Support/ReviewPacks/ReviewPackOutputResolutionGuidance.php index dde5ae2f..a999deb4 100644 --- a/apps/platform/app/Support/ReviewPacks/ReviewPackOutputResolutionGuidance.php +++ b/apps/platform/app/Support/ReviewPacks/ReviewPackOutputResolutionGuidance.php @@ -53,7 +53,14 @@ public static function readinessForReview(EnvironmentReview $review): array ->filter(static fn (mixed $section): bool => (bool) $section->required) ->values(); $includePii = (bool) (is_array($pack?->options ?? null) ? ($pack->options['include_pii'] ?? true) : true); - $nonCertificationDisclosure = trim((string) ($controlInterpretation['non_certification_disclosure'] ?? '')); + $reviewControlInterpretation = is_array($summary['control_interpretation'] ?? null) + ? $summary['control_interpretation'] + : []; + $nonCertificationDisclosure = trim((string) ( + $controlInterpretation['non_certification_disclosure'] + ?? $reviewControlInterpretation['non_certification_disclosure'] + ?? '' + )); return ReviewPackOutputReadiness::derive( reviewStatus: (string) $review->status, @@ -69,6 +76,7 @@ public static function readinessForReview(EnvironmentReview $review): array includePii: $includePii, protectedValuesHidden: ! $includePii, disclosurePresent: $nonCertificationDisclosure !== '', + baselineReadiness: self::baselineReadiness($review), ); } @@ -187,7 +195,8 @@ private static function state(array $readiness, array $limitations): string $limitationKeys = collect($limitations)->pluck('key'); return match (true) { - $limitationKeys->contains('publish_blockers_present') => self::STATE_PUBLICATION_BLOCKED, + $limitationKeys->contains('publish_blockers_present') + || $limitationKeys->contains('baseline_publication_blockers_present') => self::STATE_PUBLICATION_BLOCKED, ! (bool) ($readiness['has_ready_export'] ?? false) => self::STATE_EXPORT_NOT_READY, (bool) ($readiness['contains_pii'] ?? false) => self::STATE_INTERNAL_ONLY, $limitations !== [] => self::STATE_PUBLISHED_WITH_LIMITATIONS, @@ -222,6 +231,15 @@ private static function limitations(array $readiness, array $urls): array ], 'priority' => 100, ], + 'baseline_publication_blockers_present' => [ + 'key' => $code, + 'label' => __('localization.review.baseline_publication_blocked'), + 'severity' => 'danger', + 'reason' => __('localization.review.baseline_publication_blocked_reason'), + 'action' => self::action('open_baseline_subject_resolution', $urls['evidence'] ?? $urls['review'] ?? null), + 'details' => self::baselineDetails($readiness), + 'priority' => 98, + ], 'export_not_ready' => [ 'key' => $code, 'label' => __('localization.review.export_not_ready'), @@ -290,6 +308,49 @@ private static function limitations(array $readiness, array $urls): array ], 'priority' => 50, ], + 'baseline_compare_unproven', 'baseline_compare_stale', 'baseline_compare_failed' => [ + 'key' => $code, + 'label' => __('localization.review.baseline_evidence_incomplete'), + 'severity' => 'warning', + 'reason' => match ($code) { + 'baseline_compare_stale' => __('localization.review.baseline_compare_stale_reason'), + 'baseline_compare_failed' => __('localization.review.baseline_compare_failed_reason'), + default => __('localization.review.baseline_compare_unproven_reason'), + }, + 'action' => self::action( + $code === 'baseline_compare_failed' ? 'open_operation_proof' : 'open_evidence_basis', + $code === 'baseline_compare_failed' + ? ($urls['operation'] ?? $urls['evidence'] ?? $urls['review'] ?? null) + : ($urls['evidence'] ?? $urls['review'] ?? null), + ), + 'details' => self::baselineDetails($readiness), + 'priority' => match ($code) { + 'baseline_compare_failed' => 88, + 'baseline_compare_stale' => 87, + default => 86, + }, + ], + 'baseline_foundation_limitations', 'baseline_accepted_limitations', 'baseline_exclusions_present' => [ + 'key' => $code, + 'label' => match ($code) { + 'baseline_accepted_limitations' => __('localization.review.baseline_accepted_limitations'), + 'baseline_exclusions_present' => __('localization.review.baseline_exclusions_present'), + default => __('localization.review.baseline_foundation_limitations'), + }, + 'severity' => 'warning', + 'reason' => match ($code) { + 'baseline_accepted_limitations' => __('localization.review.baseline_accepted_limitations_reason'), + 'baseline_exclusions_present' => __('localization.review.baseline_exclusions_present_reason'), + default => __('localization.review.baseline_foundation_limitations_reason'), + }, + 'action' => self::action('review_output_limitations', $urls['review'] ?? $urls['evidence'] ?? null), + 'details' => self::baselineDetails($readiness), + 'priority' => match ($code) { + 'baseline_accepted_limitations' => 44, + 'baseline_exclusions_present' => 43, + default => 42, + }, + ], default => null, }; }) @@ -309,7 +370,10 @@ private static function primaryAction(string $state, ?string $primaryLimitationK { $actionKey = match ($primaryLimitationKey) { 'publish_blockers_present' => 'resolve_review_blockers', + 'baseline_publication_blockers_present' => 'open_baseline_subject_resolution', 'evidence_basis_missing', 'evidence_basis_stale', 'evidence_basis_incomplete' => 'open_evidence_basis', + 'baseline_compare_unproven', 'baseline_compare_stale' => 'open_evidence_basis', + 'baseline_compare_failed' => 'open_operation_proof', 'required_sections_incomplete' => 'review_section_limitations', 'contains_pii' => 'review_pii_redaction_state', 'disclosure_missing' => 'review_output_limitations', @@ -378,6 +442,7 @@ private static function primaryActionUrl(string $actionKey, array $urls): ?strin { return match ($actionKey) { 'download_customer_safe_review_pack', 'download_internal_review_pack', 'download_review_pack_with_limitations' => $urls['download'] ?? null, + 'open_baseline_subject_resolution' => $urls['evidence'] ?? $urls['review'] ?? null, 'open_evidence_basis' => $urls['evidence'] ?? $urls['review'] ?? null, 'review_section_limitations', 'resolve_review_blockers', 'review_output_limitations', 'review_pii_redaction_state', 'open_review' => $urls['review'] ?? $urls['evidence'] ?? $urls['download'] ?? null, 'open_operation_proof' => $urls['operation'] ?? null, @@ -400,6 +465,7 @@ private static function action(string $actionKey, ?string $url): ?array 'review_section_limitations' => __('localization.review.review_section_limitations'), 'review_pii_redaction_state' => __('localization.review.review_pii_redaction_state'), 'resolve_review_blockers' => __('localization.review.resolve_review_blockers'), + 'open_baseline_subject_resolution' => __('localization.review.open_baseline_subject_resolution'), 'open_operation_proof' => __('localization.review.open_operation_proof'), 'open_review' => __('localization.review.open_review'), default => __('localization.review.review_output_limitations'), @@ -504,8 +570,11 @@ private static function shortReason(string $limitationKey): string { return match ($limitationKey) { 'publish_blockers_present' => __('localization.review.publication_blocked_short_reason'), + 'baseline_publication_blockers_present' => __('localization.review.baseline_publication_blocked_short_reason'), 'export_not_ready' => __('localization.review.export_not_ready_short_reason'), 'evidence_basis_missing', 'evidence_basis_stale', 'evidence_basis_incomplete' => __('localization.review.evidence_basis_incomplete_short_reason'), + 'baseline_compare_unproven', 'baseline_compare_stale', 'baseline_compare_failed' => __('localization.review.baseline_evidence_incomplete_short_reason'), + 'baseline_foundation_limitations', 'baseline_accepted_limitations', 'baseline_exclusions_present' => __('localization.review.baseline_limitations_short_reason'), 'required_sections_incomplete' => __('localization.review.required_review_sections_missing_short_reason'), 'contains_pii' => __('localization.review.internal_package_includes_pii_short_reason'), 'disclosure_missing' => __('localization.review.output_disclosure_missing_short_reason'), @@ -578,6 +647,92 @@ private static function technicalDetails(array $readiness): array __('localization.review.disclosure') => (bool) ($readiness['disclosure_present'] ?? false) ? __('localization.review.disclosure_present') : __('localization.review.no'), + __('localization.review.baseline_readiness') => self::baselineTechnicalSummary($readiness), ]; } + + /** + * @return array + */ + private static function baselineReadiness(EnvironmentReview $review): array + { + $summary = is_array($review->summary) ? $review->summary : []; + $baselineReadiness = is_array($summary['baseline_readiness'] ?? null) ? $summary['baseline_readiness'] : []; + + if ($baselineReadiness !== []) { + return $baselineReadiness; + } + + $section = $review->sections->firstWhere('section_key', 'baseline_drift_posture'); + $sectionSummary = is_array($section?->summary_payload ?? null) ? $section->summary_payload : []; + + return is_array($sectionSummary['baseline_readiness'] ?? null) ? $sectionSummary['baseline_readiness'] : []; + } + + /** + * @param array $readiness + * @return list + */ + private static function baselineDetails(array $readiness): array + { + $baseline = is_array($readiness['baseline_readiness'] ?? null) ? $readiness['baseline_readiness'] : []; + $summary = is_array($baseline['customer_safe_summary'] ?? null) ? $baseline['customer_safe_summary'] : []; + + return [ + __('localization.review.baseline_detail_state_value', [ + 'value' => self::baselineReadinessLabel($baseline, $summary), + ]), + __('localization.review.baseline_detail_counts_value', [ + 'verified' => (int) ($summary['verified_subject_count'] ?? 0), + 'drift' => (int) ($summary['drift_subject_count'] ?? 0), + 'blockers' => (int) ($summary['blocker_count'] ?? 0), + 'limitations' => (int) ($summary['limitation_count'] ?? 0), + ]), + ]; + } + + /** + * @param array $readiness + */ + private static function baselineTechnicalSummary(array $readiness): string + { + $baseline = is_array($readiness['baseline_readiness'] ?? null) ? $readiness['baseline_readiness'] : []; + $summary = is_array($baseline['customer_safe_summary'] ?? null) ? $baseline['customer_safe_summary'] : []; + + if ($baseline === []) { + return __('localization.review.unavailable'); + } + + return __('localization.review.baseline_technical_summary_value', [ + 'state' => self::baselineReadinessLabel($baseline, $summary), + 'verified' => (int) ($summary['verified_subject_count'] ?? 0), + 'drift' => (int) ($summary['drift_subject_count'] ?? 0), + 'blockers' => (int) ($summary['blocker_count'] ?? 0), + 'limitations' => (int) ($summary['limitation_count'] ?? 0), + ]); + } + + /** + * @param array $baseline + * @param array $summary + */ + private static function baselineReadinessLabel(array $baseline, array $summary): string + { + $state = (string) ($summary['readiness_state'] ?? $baseline['readiness_state'] ?? ''); + + return match ($state) { + 'customer_ready' => __('localization.review.baseline_state_customer_ready'), + 'trusted_drift_detected', 'drift_findings_present' => __('localization.review.baseline_state_trusted_drift'), + 'baseline_compare_limited' => __('localization.review.baseline_state_limited'), + 'baseline_identity_unresolved' => __('localization.review.baseline_state_identity_unresolved'), + 'baseline_local_evidence_missing' => __('localization.review.baseline_state_local_evidence_missing'), + 'baseline_provider_resource_missing' => __('localization.review.baseline_state_provider_resource_missing'), + 'baseline_required_coverage_unsupported' => __('localization.review.baseline_state_required_coverage_unsupported'), + 'baseline_compare_unproven' => __('localization.review.baseline_state_compare_unproven'), + 'baseline_compare_stale' => __('localization.review.baseline_state_compare_stale'), + 'baseline_compare_failed' => __('localization.review.baseline_state_compare_failed'), + 'baseline_compare_blocked', 'baseline_compare_not_completed' => __('localization.review.baseline_state_compare_blocked'), + default => __('localization.review.unavailable'), + }; + } } diff --git a/apps/platform/lang/de/localization.php b/apps/platform/lang/de/localization.php index f8d46620..773f20be 100644 --- a/apps/platform/lang/de/localization.php +++ b/apps/platform/lang/de/localization.php @@ -676,6 +676,36 @@ 'publication_blocked_description' => 'Review-Blocker müssen aufgelöst werden, bevor dieser Output als kundenbereit behandelt werden kann.', 'publication_blocked_short_reason' => 'Für diesen Output sind weiterhin Review-Blocker erfasst.', 'publication_blocked_impact' => 'Behandeln Sie diese Review-Ausgabe erst als kundenbereit, wenn die Blocker aufgelöst sind.', + 'baseline_publication_blocked' => 'Baseline-Readiness blockiert', + 'baseline_publication_blocked_reason' => 'Baseline-Identität, Evidence, Provider-Ressourcen oder Coverage-Readiness müssen aufgelöst werden, bevor dieser Output als kundenbereit behandelt werden kann.', + 'baseline_publication_blocked_short_reason' => 'Für diesen Output sind weiterhin Baseline-Readiness-Blocker erfasst.', + 'baseline_evidence_incomplete' => 'Baseline-Evidence unvollständig', + 'baseline_compare_unproven_reason' => 'Der Baseline-Compare hat keinen strukturierten Readiness-Nachweis für die kundenbereite Aussage erzeugt.', + 'baseline_compare_stale_reason' => 'Die Baseline-Compare-Evidence ist veraltet und sollte vor externer Weitergabe aktualisiert werden.', + 'baseline_compare_failed_reason' => 'Der Baseline-Compare ist fehlgeschlagen und sollte vor externer Weitergabe neu gestartet oder untersucht werden.', + 'baseline_evidence_incomplete_short_reason' => 'Baseline-Evidence ist unvollständig.', + 'baseline_foundation_limitations' => 'Baseline-Foundation-Einschränkung', + 'baseline_foundation_limitations_reason' => 'Einige Baseline-Subjects stützen sich nur auf Inventory-, Identity- oder kanonische Foundation-Evidence.', + 'baseline_accepted_limitations' => 'Baseline-Einschränkung akzeptiert', + 'baseline_accepted_limitations_reason' => 'Akzeptierte Baseline-Einschränkungen qualifizieren die kundenbereite Aussage.', + 'baseline_exclusions_present' => 'Baseline-Ausschlüsse vorhanden', + 'baseline_exclusions_present_reason' => 'Ausgeschlossene, nicht governed Baseline-Subjects liegen außerhalb der governed No-Drift-Aussage.', + 'baseline_limitations_short_reason' => 'Baseline-Einschränkungen qualifizieren diesen Output.', + 'baseline_readiness' => 'Baseline-Readiness', + 'baseline_detail_state_value' => 'Baseline-Readiness-Status: :value', + 'baseline_detail_counts_value' => 'Baseline-Subjects - verifiziert: :verified, Drift: :drift, Blocker: :blockers, Einschränkungen: :limitations', + 'baseline_technical_summary_value' => ':state; verifiziert :verified, Drift :drift, Blocker :blockers, Einschränkungen :limitations', + 'baseline_state_customer_ready' => 'Kundenbereite Baseline-Evidence', + 'baseline_state_trusted_drift' => 'Vertrauenswürdige Drift-Findings vorhanden', + 'baseline_state_limited' => 'Kundenbereit mit offengelegten Baseline-Einschränkungen', + 'baseline_state_identity_unresolved' => 'Baseline-Subject-Identität nicht aufgelöst', + 'baseline_state_local_evidence_missing' => 'Lokale Baseline-Evidence fehlt', + 'baseline_state_provider_resource_missing' => 'Provider-Ressourcen-Evidence fehlt', + 'baseline_state_required_coverage_unsupported' => 'Erforderliche Baseline-Coverage nicht unterstützt', + 'baseline_state_compare_unproven' => 'Baseline-Compare-Nachweis fehlt', + 'baseline_state_compare_stale' => 'Baseline-Compare-Evidence ist veraltet', + 'baseline_state_compare_failed' => 'Baseline-Compare fehlgeschlagen', + 'baseline_state_compare_blocked' => 'Baseline-Compare blockiert', 'output_limitations' => 'Output-Einschränkungen', 'output_limitations_summary' => '{1} 1 Einschränkung benötigt Prüfung|[2,*] :count Einschränkungen benötigen Prüfung', 'technical_details' => 'Technische Details', @@ -750,6 +780,7 @@ 'review_section_limitations' => 'Abschnittseinschränkungen prüfen', 'review_pii_redaction_state' => 'PII-/Redaktionsstatus prüfen', 'resolve_review_blockers' => 'Review-Blocker prüfen', + 'open_baseline_subject_resolution' => 'Baseline-Auflösung öffnen', 'refresh_review' => 'Review aktualisieren', 'publish_review' => 'Review veröffentlichen', 'create_next_review' => 'Nächstes Review erstellen', @@ -851,6 +882,8 @@ 'report_disclosure_customer_profile_internal_only_summary' => 'Das gewählte kundenseitige Profil darf diesen Bericht nicht freigeben, solange interne oder PII-tragende Details im Scope bleiben.', 'report_disclosure_customer_profile_requires_review' => 'Dieses kundenseitige Profil erfordert vor externer Weitergabe weiterhin eine Operator-Prüfung.', 'report_disclosure_non_certification_missing' => 'Die erforderliche Nicht-Zertifizierungs-Offenlegung musste aus Fallback-Text erzwungen werden. Behandeln Sie das als fehlenden Nachweis, bis die gespeicherte Quelle korrigiert ist.', + 'report_disclosure_baseline_readiness_blocked' => 'Für diesen kundenseitigen Bericht sind weiterhin Baseline-Readiness-Blocker im Scope.', + 'report_disclosure_baseline_limitations_present' => 'Baseline-Einschränkungen sind enthalten und müssen vor externer Weitergabe offengelegt bleiben.', 'report_disclosure_audience_boundary' => 'Zielgruppen-Grenze', 'report_disclosure_audience_boundary_summary' => 'Dieser gerenderte Bericht ist auf :audience begrenzt.', 'report_disclosure_evidence_basis' => 'Evidence-Basis-Nachweis', @@ -862,6 +895,11 @@ 'report_disclosure_protected_values_missing' => 'Geschützte Werte können für dieses kundenseitige Profil nicht als sicher verborgen behandelt werden.', 'report_disclosure_protected_values_unknown' => 'Die Behandlung geschützter Werte konnte aus der gespeicherten Berichtswahrheit nicht sauber abgeleitet werden.', 'report_disclosure_protected_values_not_applicable' => 'Dieses Profil ist intern oder auditor-begrenzt, daher ist der Nachweis verborgener Werte hier nicht die maßgebliche Disclosure-Grenze.', + 'report_disclosure_baseline_readiness' => 'Baseline-Readiness-Nachweis', + 'report_disclosure_baseline_verified' => 'Baseline-Readiness stützt die governed kundenbereite Aussage für diesen Bericht.', + 'report_disclosure_baseline_limited' => 'Baseline-Readiness ist mit offengelegten Einschränkungen verfügbar. No-Drift-Aussagen sind qualifiziert zu behandeln.', + 'report_disclosure_baseline_missing' => 'Baseline-Readiness ist unvollständig, veraltet, fehlgeschlagen oder blockiert. Baseline-gestützte Aussagen sind eingeschränkt zu behandeln.', + 'report_disclosure_baseline_unknown' => 'Baseline-Readiness konnte aus der gespeicherten Review-Wahrheit nicht sauber zugeordnet werden.', 'report_state_customer_safe_ready' => 'Kundensicherer Bericht bereit', 'report_state_with_limitations' => 'Bericht mit Einschränkungen', 'report_state_internal_with_limitations' => 'Interner Bericht mit Einschränkungen', diff --git a/apps/platform/lang/en/localization.php b/apps/platform/lang/en/localization.php index e570d3cd..912b0007 100644 --- a/apps/platform/lang/en/localization.php +++ b/apps/platform/lang/en/localization.php @@ -676,6 +676,36 @@ 'publication_blocked_description' => 'Review blockers must be resolved before this output can be treated as customer-ready.', 'publication_blocked_short_reason' => 'Review blockers are still recorded for this output.', 'publication_blocked_impact' => 'Do not present this review output as customer-ready until the blockers are resolved.', + 'baseline_publication_blocked' => 'Baseline readiness blocked', + 'baseline_publication_blocked_reason' => 'Baseline identity, evidence, provider-resource, or coverage readiness must be resolved before this output can be treated as customer-ready.', + 'baseline_publication_blocked_short_reason' => 'Baseline readiness blockers are still recorded for this output.', + 'baseline_evidence_incomplete' => 'Baseline evidence incomplete', + 'baseline_compare_unproven_reason' => 'The baseline compare did not produce structured readiness proof for the customer-ready claim.', + 'baseline_compare_stale_reason' => 'The baseline compare evidence is stale and should be refreshed before external sharing.', + 'baseline_compare_failed_reason' => 'The baseline compare failed and should be rerun or investigated before external sharing.', + 'baseline_evidence_incomplete_short_reason' => 'Baseline evidence is incomplete.', + 'baseline_foundation_limitations' => 'Baseline foundation limitation', + 'baseline_foundation_limitations_reason' => 'Some baseline subjects rely only on inventory, identity, or canonical foundation evidence.', + 'baseline_accepted_limitations' => 'Baseline limitation accepted', + 'baseline_accepted_limitations_reason' => 'Accepted baseline limitations qualify the customer-ready claim.', + 'baseline_exclusions_present' => 'Baseline exclusions present', + 'baseline_exclusions_present_reason' => 'Excluded non-governed baseline subjects are outside the governed no-drift claim.', + 'baseline_limitations_short_reason' => 'Baseline limitations qualify this output.', + 'baseline_readiness' => 'Baseline readiness', + 'baseline_detail_state_value' => 'Baseline readiness state: :value', + 'baseline_detail_counts_value' => 'Baseline subjects - verified: :verified, drift: :drift, blockers: :blockers, limitations: :limitations', + 'baseline_technical_summary_value' => ':state; verified :verified, drift :drift, blockers :blockers, limitations :limitations', + 'baseline_state_customer_ready' => 'Customer-ready baseline evidence', + 'baseline_state_trusted_drift' => 'Trusted drift findings present', + 'baseline_state_limited' => 'Customer-ready with disclosed baseline limitations', + 'baseline_state_identity_unresolved' => 'Baseline subject identity unresolved', + 'baseline_state_local_evidence_missing' => 'Baseline local evidence missing', + 'baseline_state_provider_resource_missing' => 'Provider resource evidence missing', + 'baseline_state_required_coverage_unsupported' => 'Required baseline coverage unsupported', + 'baseline_state_compare_unproven' => 'Baseline compare proof missing', + 'baseline_state_compare_stale' => 'Baseline compare evidence stale', + 'baseline_state_compare_failed' => 'Baseline compare failed', + 'baseline_state_compare_blocked' => 'Baseline compare blocked', 'output_limitations' => 'Output limitations', 'output_limitations_summary' => '{1} 1 limitation requires review|[2,*] :count limitations require review', 'technical_details' => 'Technical details', @@ -750,6 +780,7 @@ 'review_section_limitations' => 'Review section limitations', 'review_pii_redaction_state' => 'Review PII/redaction state', 'resolve_review_blockers' => 'Inspect review blockers', + 'open_baseline_subject_resolution' => 'Open baseline resolution', 'refresh_review' => 'Refresh review', 'publish_review' => 'Publish review', 'create_next_review' => 'Create next review', @@ -851,6 +882,8 @@ 'report_disclosure_customer_profile_internal_only_summary' => 'The selected customer-facing profile cannot expose this report while internal or PII-bearing detail remains in scope.', 'report_disclosure_customer_profile_requires_review' => 'This customer-facing profile still requires operator review before external sharing.', 'report_disclosure_non_certification_missing' => 'The required non-certification disclosure had to be enforced from fallback copy. Treat that as missing proof until the stored source is corrected.', + 'report_disclosure_baseline_readiness_blocked' => 'Baseline readiness blockers remain in scope for this customer-facing report.', + 'report_disclosure_baseline_limitations_present' => 'Baseline limitations are included and must remain disclosed before external sharing.', 'report_disclosure_audience_boundary' => 'Audience boundary', 'report_disclosure_audience_boundary_summary' => 'This rendered report is constrained to :audience.', 'report_disclosure_evidence_basis' => 'Evidence basis proof', @@ -862,6 +895,11 @@ 'report_disclosure_protected_values_missing' => 'Protected values cannot be treated as safely hidden for this customer-facing profile.', 'report_disclosure_protected_values_unknown' => 'Protected value handling could not be established cleanly from stored report truth.', 'report_disclosure_protected_values_not_applicable' => 'This profile is internal or auditor-bounded, so hidden-value proof is not the governing disclosure boundary.', + 'report_disclosure_baseline_readiness' => 'Baseline readiness proof', + 'report_disclosure_baseline_verified' => 'Baseline readiness supports the governed customer-ready claim for this report.', + 'report_disclosure_baseline_limited' => 'Baseline readiness is available with disclosed limitations. Treat no-drift claims as qualified.', + 'report_disclosure_baseline_missing' => 'Baseline readiness is incomplete, stale, failed, or blocked. Treat baseline-backed claims as limited.', + 'report_disclosure_baseline_unknown' => 'Baseline readiness could not be mapped cleanly from stored review truth.', 'report_state_customer_safe_ready' => 'Customer-safe report ready', 'report_state_with_limitations' => 'Report with limitations', 'report_state_internal_with_limitations' => 'Internal report with limitations', diff --git a/apps/platform/tests/Browser/Spec385EvidenceReviewReadinessSmokeTest.php b/apps/platform/tests/Browser/Spec385EvidenceReviewReadinessSmokeTest.php new file mode 100644 index 00000000..3e6dd381 --- /dev/null +++ b/apps/platform/tests/Browser/Spec385EvidenceReviewReadinessSmokeTest.php @@ -0,0 +1,161 @@ +browser()->timeout(60_000); + +beforeEach(function (): void { + Storage::fake('exports'); +}); + +it('Spec385 smokes baseline readiness blockers on the customer review workspace', function (): void { + $environment = ManagedEnvironment::factory()->create(['name' => 'Spec385 Browser Baseline']); + [$user, $environment] = createUserWithTenant(tenant: $environment, role: 'owner', workspaceRole: 'manager'); + [$profile, $baselineSnapshot] = seedActiveBaselineForTenant($environment); + + seedBaselineCompareRun( + tenant: $environment, + profile: $profile, + snapshot: $baselineSnapshot, + compareContext: spec385BrowserCompareContext([CompareResultReason::UnresolvedAmbiguousIdentity]), + outcome: OperationRunOutcome::PartiallySucceeded->value, + ); + + $snapshot = seedEnvironmentReviewEvidence($environment, findingCount: 0, driftCount: 0); + $review = composeEnvironmentReviewForTest($environment, $user, $snapshot); + $filePath = 'review-packs/spec385-baseline-readiness.zip'; + + Storage::disk('exports')->put($filePath, 'PK-spec385-browser'); + + $review->forceFill([ + 'status' => EnvironmentReviewStatus::Published->value, + 'published_at' => now(), + 'published_by_user_id' => (int) $user->getKey(), + ])->save(); + + $pack = ReviewPack::factory()->ready()->create([ + 'managed_environment_id' => (int) $environment->getKey(), + 'workspace_id' => (int) $environment->workspace_id, + 'environment_review_id' => (int) $review->getKey(), + 'evidence_snapshot_id' => (int) $snapshot->getKey(), + 'initiated_by_user_id' => (int) $user->getKey(), + 'options' => [ + 'include_pii' => false, + 'include_operations' => true, + ], + 'file_path' => $filePath, + 'file_disk' => 'exports', + 'generated_at' => now(), + ]); + $review->forceFill(['current_export_review_pack_id' => (int) $pack->getKey()])->save(); + + spec385AuthenticateBrowser($this, $user, $environment); + + $page = visit(CustomerReviewWorkspace::environmentFilterUrl($environment)) + ->resize(1366, 920) + ->waitForText('Output not customer-ready') + ->assertSee('Review blockers are still recorded for this output.') + ->assertScript('document.querySelector("[data-testid=\"customer-review-output-limitations\"]")?.open === false', true) + ->click('[data-testid="customer-review-output-limitations"] summary') + ->assertSee('Baseline readiness blocked') + ->assertSee('Open baseline resolution') + ->assertDontSee('baseline_identity_unresolved') + ->assertDontSee('provider_resource_id') + ->assertDontSee('canonical_subject_key') + ->assertDontSee('internal_diagnostics') + ->assertNoJavaScriptErrors() + ->assertNoConsoleLogs(); + + $page->screenshot(true, spec385BrowserScreenshotName('01-baseline-readiness-blocked')); + spec385CopyBrowserScreenshot('01-baseline-readiness-blocked'); +}); + +function spec385AuthenticateBrowser(mixed $test, User $user, ManagedEnvironment $environment): void +{ + $workspaceId = (int) $environment->workspace_id; + + $test->actingAs($user)->withSession([ + WorkspaceContext::SESSION_KEY => $workspaceId, + WorkspaceContext::LAST_ENVIRONMENT_IDS_SESSION_KEY => [ + (string) $workspaceId => (int) $environment->getKey(), + ], + ]); + + session()->put(WorkspaceContext::SESSION_KEY, $workspaceId); + session()->put(WorkspaceContext::LAST_ENVIRONMENT_IDS_SESSION_KEY, [ + (string) $workspaceId => (int) $environment->getKey(), + ]); + + setAdminPanelContext($environment); +} + +/** + * @param list $reasons + * @return array + */ +function spec385BrowserCompareContext(array $reasons): array +{ + $byReason = []; + $byReadinessImpact = []; + + foreach ($reasons as $reason) { + $byReason[$reason->value] = ($byReason[$reason->value] ?? 0) + 1; + + $impact = $reason->readinessImpact()->value; + $byReadinessImpact[$impact] = ($byReadinessImpact[$impact] ?? 0) + 1; + } + + return [ + 'result_semantics' => [ + 'version' => 'compare_semantics.v1', + 'run_outcome' => 'partial', + 'operation_outcome' => OperationRunOutcome::PartiallySucceeded->value, + 'counts' => [ + 'by_reason' => $byReason, + 'by_readiness_impact' => $byReadinessImpact, + ], + ], + ]; +} + +function spec385BrowserScreenshotName(string $name): string +{ + return 'spec385-evidence-review-readiness-'.$name; +} + +function spec385CopyBrowserScreenshot(string $name): void +{ + $filename = spec385BrowserScreenshotName($name).'.png'; + $source = base_path('tests/Browser/Screenshots/'.$filename); + $targetDirectory = repo_path('specs/385-evidence-review-readiness/artifacts/screenshots'); + + if (! is_dir($targetDirectory)) { + @mkdir($targetDirectory, 0755, true); + } + + if (! is_file($source)) { + $source = \Pest\Browser\Support\Screenshot::path($filename); + } + + for ($attempt = 0; $attempt < 10 && ! is_file($source); $attempt++) { + usleep(100_000); + clearstatcache(true, $source); + } + + if (is_file($source) && is_dir($targetDirectory) && is_writable($targetDirectory)) { + @copy($source, $targetDirectory.DIRECTORY_SEPARATOR.$name.'.png'); + } +} diff --git a/apps/platform/tests/Feature/EnvironmentReview/Spec385EnvironmentReviewBaselineReadinessTest.php b/apps/platform/tests/Feature/EnvironmentReview/Spec385EnvironmentReviewBaselineReadinessTest.php new file mode 100644 index 00000000..5a93a161 --- /dev/null +++ b/apps/platform/tests/Feature/EnvironmentReview/Spec385EnvironmentReviewBaselineReadinessTest.php @@ -0,0 +1,125 @@ +value, + ); + + $snapshot = seedEnvironmentReviewEvidence($tenant, findingCount: 0, driftCount: 0); + $review = composeEnvironmentReviewForTest($tenant, $user, $snapshot); + $baselineSection = $review->sections->firstWhere('section_key', 'baseline_drift_posture'); + + expect($baselineSection->completeness_state)->toBe(EnvironmentReviewCompletenessState::Partial->value) + ->and($baselineSection->summary_payload['baseline_readiness']['readiness_state'])->toBe('baseline_identity_unresolved') + ->and($baselineSection->summary_payload['publication_blockers'])->not->toBeEmpty() + ->and($review->status)->toBe(EnvironmentReviewStatus::Draft->value) + ->and($review->publishBlockers())->toContain('Baseline drift posture: Baseline subject identity must be resolved before customer-ready publication.'); +}); + +it('keeps trusted baseline drift complete with findings and publication-ready', function (): void { + [$user, $tenant] = createUserWithTenant(role: 'owner'); + [$profile, $baselineSnapshot] = seedActiveBaselineForTenant($tenant); + + seedBaselineCompareRun( + tenant: $tenant, + profile: $profile, + snapshot: $baselineSnapshot, + compareContext: spec385EnvironmentCompareContext([CompareResultReason::VerifiedDriftDetected]), + ); + + $snapshot = seedEnvironmentReviewEvidence($tenant, findingCount: 0, driftCount: 1); + $review = composeEnvironmentReviewForTest($tenant, $user, $snapshot); + + expect($review->status)->toBe(EnvironmentReviewStatus::Ready->value) + ->and($review->publishBlockers())->toBeEmpty() + ->and($review->summary['baseline_readiness']['customer_safe_claim'])->toBe('customer_ready_with_findings') + ->and($review->summary['baseline_readiness']['publication_blockers'])->toBe([]); +}); + +it('carries accepted baseline limitations without blocking publication', function (): void { + [$user, $tenant] = createUserWithTenant(role: 'owner'); + [$profile, $baselineSnapshot] = seedActiveBaselineForTenant($tenant); + + seedBaselineCompareRun( + tenant: $tenant, + profile: $profile, + snapshot: $baselineSnapshot, + compareContext: spec385EnvironmentCompareContext([CompareResultReason::AcceptedLimitation]), + outcome: OperationRunOutcome::PartiallySucceeded->value, + ); + + $snapshot = seedEnvironmentReviewEvidence($tenant, findingCount: 1, driftCount: 0); + $review = composeEnvironmentReviewForTest($tenant, $user, $snapshot); + + expect($review->publishBlockers())->toBeEmpty() + ->and($review->status)->toBe(EnvironmentReviewStatus::Ready->value) + ->and($review->summary['baseline_readiness']['state'])->toBe(EnvironmentReviewCompletenessState::Partial->value) + ->and($review->summary['baseline_readiness']['limitation_codes'])->toBe(['baseline_accepted_limitations']) + ->and($review->summary['baseline_readiness']['publication_blockers'])->toBe([]); +}); + +it('turns missing baseline local evidence into refresh guidance and a review blocker', function (): void { + [$user, $tenant] = createUserWithTenant(role: 'owner'); + [$profile, $baselineSnapshot] = seedActiveBaselineForTenant($tenant); + + seedBaselineCompareRun( + tenant: $tenant, + profile: $profile, + snapshot: $baselineSnapshot, + compareContext: spec385EnvironmentCompareContext([CompareResultReason::MissingLocalEvidence]), + outcome: OperationRunOutcome::PartiallySucceeded->value, + ); + + $snapshot = seedEnvironmentReviewEvidence($tenant, findingCount: 1, driftCount: 0); + $review = composeEnvironmentReviewForTest($tenant, $user, $snapshot); + $baselineSection = $review->sections->firstWhere('section_key', 'baseline_drift_posture'); + + expect($review->status)->toBe(EnvironmentReviewStatus::Draft->value) + ->and($review->summary['baseline_readiness']['readiness_state'])->toBe('baseline_local_evidence_missing') + ->and($review->summary['baseline_readiness']['next_action'])->toBe('open_evidence_basis') + ->and($review->publishBlockers())->toContain('Baseline drift posture: Baseline local evidence is missing and must be refreshed before publication.') + ->and($baselineSection->render_payload['next_actions'])->toContain('Refresh baseline compare evidence before relying on the review output.'); +}); + +/** + * @param list $reasons + * @return array + */ +function spec385EnvironmentCompareContext(array $reasons): array +{ + $byReason = []; + $byReadinessImpact = []; + + foreach ($reasons as $reason) { + $byReason[$reason->value] = ($byReason[$reason->value] ?? 0) + 1; + + $impact = $reason->readinessImpact()->value; + $byReadinessImpact[$impact] = ($byReadinessImpact[$impact] ?? 0) + 1; + } + + return [ + 'result_semantics' => [ + 'version' => 'compare_semantics.v1', + 'run_outcome' => 'completed', + 'operation_outcome' => OperationRunOutcome::Succeeded->value, + 'counts' => [ + 'by_reason' => $byReason, + 'by_readiness_impact' => $byReadinessImpact, + ], + ], + ]; +} diff --git a/apps/platform/tests/Feature/Evidence/BaselineDriftPostureSourceTest.php b/apps/platform/tests/Feature/Evidence/BaselineDriftPostureSourceTest.php index 9d7f33ae..765df655 100644 --- a/apps/platform/tests/Feature/Evidence/BaselineDriftPostureSourceTest.php +++ b/apps/platform/tests/Feature/Evidence/BaselineDriftPostureSourceTest.php @@ -4,8 +4,10 @@ use App\Models\ProviderResourceBinding; use App\Services\Evidence\Sources\BaselineDriftPostureSource; +use App\Support\Baselines\CompareSemantics\CompareResultReason; use App\Support\Evidence\EvidenceCompletenessState; use App\Support\OperationRunOutcome; +use App\Support\Resources\ProviderResourceResolutionMode; it('keeps baseline drift posture missing when no drift findings or compare proof exist', function (): void { [, $tenant] = createUserWithTenant(role: 'owner'); @@ -23,11 +25,11 @@ ->and($payload['summary_payload']['latest_compare_run_id'])->toBeNull(); }); -it('marks no baseline drift as complete when the latest compare succeeded', function (): void { +it('does not mark old successful compare context as complete without structured readiness semantics', function (): void { [, $tenant] = createUserWithTenant(role: 'owner'); [$profile, $snapshot] = seedActiveBaselineForTenant($tenant); - $run = seedBaselineCompareRun( + seedBaselineCompareRun( tenant: $tenant, profile: $profile, snapshot: $snapshot, @@ -37,14 +39,13 @@ $payload = app(BaselineDriftPostureSource::class)->collect($tenant); - expect($payload['state'])->toBe(EvidenceCompletenessState::Complete->value) - ->and($payload['measured_at']?->equalTo($run->completed_at))->toBeTrue() + expect($payload['state'])->toBe(EvidenceCompletenessState::Missing->value) ->and($payload['summary_payload']['drift_count'])->toBe(0) - ->and($payload['summary_payload']['latest_compare_run_id'])->toBe((int) $run->getKey()) - ->and($payload['summary_payload']['latest_compare_outcome'])->toBe(OperationRunOutcome::Succeeded->value); + ->and($payload['summary_payload']['baseline_readiness']['readiness_state'])->toBe('baseline_compare_unproven') + ->and($payload['summary_payload']['baseline_readiness']['publication_blockers'])->not->toBeEmpty(); }); -it('marks no baseline drift as partial when the latest compare completed with warnings', function (): void { +it('marks no baseline drift complete when structured compare semantics verify no drift', function (): void { [, $tenant] = createUserWithTenant(role: 'owner'); [$profile, $snapshot] = seedActiveBaselineForTenant($tenant); @@ -52,18 +53,200 @@ tenant: $tenant, profile: $profile, snapshot: $snapshot, - compareContext: [ - 'reason_code' => 'baseline.compare.no_drift_detected', - 'evidence_gaps' => ['count' => 3], - ], + compareContext: spec385EvidenceCompareContext([CompareResultReason::VerifiedNoDrift]), + ); + + $payload = app(BaselineDriftPostureSource::class)->collect($tenant); + + expect($payload['state'])->toBe(EvidenceCompletenessState::Complete->value) + ->and($payload['measured_at']?->equalTo($run->completed_at))->toBeTrue() + ->and($payload['summary_payload']['drift_count'])->toBe(0) + ->and($payload['summary_payload']['latest_compare_run_id'])->toBe((int) $run->getKey()) + ->and($payload['summary_payload']['latest_compare_outcome'])->toBe(OperationRunOutcome::Succeeded->value) + ->and($payload['summary_payload']['baseline_readiness']['customer_safe_claim'])->toBe('customer_ready'); +}); + +it('honors active provider resource decisions from stored bindings', function (): void { + [, $tenant] = createUserWithTenant(role: 'owner'); + [$profile, $snapshot] = seedActiveBaselineForTenant($tenant); + + seedBaselineCompareRun( + tenant: $tenant, + profile: $profile, + snapshot: $snapshot, + compareContext: spec385EvidenceCompareContext([CompareResultReason::VerifiedNoDrift]), + ); + + ProviderResourceBinding::factory()->create([ + 'managed_environment_id' => (int) $tenant->getKey(), + 'workspace_id' => (int) $tenant->workspace_id, + 'resolution_mode' => ProviderResourceResolutionMode::AcceptedLimitation->value, + ]); + + $payload = app(BaselineDriftPostureSource::class)->collect($tenant); + + expect($payload['state'])->toBe(EvidenceCompletenessState::Partial->value) + ->and($payload['summary_payload']['baseline_readiness']['readiness_state'])->toBe('baseline_compare_limited') + ->and($payload['summary_payload']['baseline_readiness']['limitation_codes'])->toBe(['baseline_accepted_limitations']) + ->and($payload['summary_payload']['baseline_readiness']['publication_blockers'])->toBe([]); +}); + +it('blocks when stored binding decisions were revoked after the latest compare', function (): void { + [, $tenant] = createUserWithTenant(role: 'owner'); + [$profile, $snapshot] = seedActiveBaselineForTenant($tenant); + + seedBaselineCompareRun( + tenant: $tenant, + profile: $profile, + snapshot: $snapshot, + compareContext: spec385EvidenceCompareContext([CompareResultReason::VerifiedNoDrift]), + completedAt: now()->subMinutes(5), + ); + + ProviderResourceBinding::factory() + ->revoked() + ->create([ + 'managed_environment_id' => (int) $tenant->getKey(), + 'workspace_id' => (int) $tenant->workspace_id, + 'ended_at' => now(), + ]); + + $payload = app(BaselineDriftPostureSource::class)->collect($tenant); + + expect($payload['state'])->toBe(EvidenceCompletenessState::Partial->value) + ->and($payload['summary_payload']['baseline_readiness']['readiness_state'])->toBe('baseline_compare_blocked') + ->and($payload['summary_payload']['baseline_readiness']['publication_blockers'])->toContain('Baseline subject decisions changed after the latest compare; refresh evidence before publication.'); +}); + +it('surfaces structured baseline evidence gaps as readiness blockers', function (): void { + [, $tenant] = createUserWithTenant(role: 'owner'); + [$profile, $snapshot] = seedActiveBaselineForTenant($tenant); + + seedBaselineCompareRun( + tenant: $tenant, + profile: $profile, + snapshot: $snapshot, + compareContext: spec385EvidenceCompareContext([CompareResultReason::MissingLocalEvidence]), outcome: OperationRunOutcome::PartiallySucceeded->value, ); $payload = app(BaselineDriftPostureSource::class)->collect($tenant); - expect($payload['state'])->toBe(EvidenceCompletenessState::Partial->value) - ->and($payload['measured_at']?->equalTo($run->completed_at))->toBeTrue() - ->and($payload['summary_payload']['drift_count'])->toBe(0) - ->and($payload['summary_payload']['latest_compare_run_id'])->toBe((int) $run->getKey()) - ->and($payload['summary_payload']['latest_compare_outcome'])->toBe(OperationRunOutcome::PartiallySucceeded->value); + expect($payload['state'])->toBe(EvidenceCompletenessState::Missing->value) + ->and($payload['summary_payload']['baseline_readiness']['readiness_state'])->toBe('baseline_local_evidence_missing') + ->and($payload['summary_payload']['baseline_readiness']['next_action'])->toBe('open_evidence_basis') + ->and($payload['summary_payload']['baseline_readiness']['publication_blockers'])->not->toBeEmpty(); }); + +it('maps structured baseline readiness source edge cases through the evidence item', function ( + CompareResultReason $reason, + int $driftCount, + string $outcome, + ?int $completedDaysAgo, + string $expectedState, + string $expectedReadinessState, + array $expectedLimitationCodes, +): void { + [, $tenant] = createUserWithTenant(role: 'owner'); + [$profile, $snapshot] = seedActiveBaselineForTenant($tenant); + + if ($driftCount > 0) { + \App\Models\Finding::factory() + ->count($driftCount) + ->create([ + 'managed_environment_id' => (int) $tenant->getKey(), + 'workspace_id' => (int) $tenant->workspace_id, + 'finding_type' => \App\Models\Finding::FINDING_TYPE_DRIFT, + ]); + } + + seedBaselineCompareRun( + tenant: $tenant, + profile: $profile, + snapshot: $snapshot, + compareContext: spec385EvidenceCompareContext([$reason]), + outcome: $outcome, + completedAt: $completedDaysAgo === null ? now() : now()->subDays($completedDaysAgo), + ); + + $payload = app(BaselineDriftPostureSource::class)->collect($tenant); + + expect($payload['state'])->toBe($expectedState) + ->and($payload['summary_payload']['baseline_readiness']['readiness_state'])->toBe($expectedReadinessState) + ->and($payload['summary_payload']['baseline_readiness']['limitation_codes'])->toBe($expectedLimitationCodes); +})->with([ + 'trusted drift' => [ + CompareResultReason::VerifiedDriftDetected, + 1, + OperationRunOutcome::Succeeded->value, + null, + EvidenceCompletenessState::Complete->value, + 'trusted_drift_detected', + [], + ], + 'accepted limitation' => [ + CompareResultReason::AcceptedLimitation, + 0, + OperationRunOutcome::PartiallySucceeded->value, + null, + EvidenceCompletenessState::Partial->value, + 'baseline_compare_limited', + ['baseline_accepted_limitations'], + ], + 'excluded subject' => [ + CompareResultReason::ExcludedNonGoverned, + 0, + OperationRunOutcome::PartiallySucceeded->value, + null, + EvidenceCompletenessState::Partial->value, + 'baseline_compare_limited', + ['baseline_exclusions_present'], + ], + 'failed compare' => [ + CompareResultReason::CompareFailed, + 0, + OperationRunOutcome::Failed->value, + null, + EvidenceCompletenessState::Missing->value, + 'baseline_compare_failed', + [], + ], + 'stale compare' => [ + CompareResultReason::VerifiedNoDrift, + 0, + OperationRunOutcome::Succeeded->value, + 45, + EvidenceCompletenessState::Stale->value, + 'baseline_compare_stale', + [], + ], +]); + +/** + * @param list $reasons + * @return array + */ +function spec385EvidenceCompareContext(array $reasons): array +{ + $byReason = []; + $byReadinessImpact = []; + + foreach ($reasons as $reason) { + $byReason[$reason->value] = ($byReason[$reason->value] ?? 0) + 1; + + $impact = $reason->readinessImpact()->value; + $byReadinessImpact[$impact] = ($byReadinessImpact[$impact] ?? 0) + 1; + } + + return [ + 'result_semantics' => [ + 'version' => 'compare_semantics.v1', + 'run_outcome' => 'completed', + 'operation_outcome' => OperationRunOutcome::Succeeded->value, + 'counts' => [ + 'by_reason' => $byReason, + 'by_readiness_impact' => $byReadinessImpact, + ], + ], + ]; +} diff --git a/apps/platform/tests/Feature/Filament/Spec385CustomerReviewWorkspaceBaselineReadinessTest.php b/apps/platform/tests/Feature/Filament/Spec385CustomerReviewWorkspaceBaselineReadinessTest.php new file mode 100644 index 00000000..6c79645b --- /dev/null +++ b/apps/platform/tests/Feature/Filament/Spec385CustomerReviewWorkspaceBaselineReadinessTest.php @@ -0,0 +1,95 @@ +create(['name' => 'Spec385 Baseline Blocked']); + [$user, $environment] = createUserWithTenant(tenant: $environment, role: 'owner', workspaceRole: 'manager'); + [$profile, $baselineSnapshot] = seedActiveBaselineForTenant($environment); + + seedBaselineCompareRun( + tenant: $environment, + profile: $profile, + snapshot: $baselineSnapshot, + compareContext: spec385FilamentCompareContext([CompareResultReason::UnresolvedAmbiguousIdentity]), + outcome: OperationRunOutcome::PartiallySucceeded->value, + ); + + $snapshot = seedEnvironmentReviewEvidence($environment, findingCount: 0, driftCount: 0); + $review = composeEnvironmentReviewForTest($environment, $user, $snapshot); + $review->forceFill([ + 'status' => EnvironmentReviewStatus::Published->value, + 'published_at' => now(), + 'published_by_user_id' => (int) $user->getKey(), + ])->save(); + + $pack = ReviewPack::factory()->ready()->create([ + 'managed_environment_id' => (int) $environment->getKey(), + 'workspace_id' => (int) $environment->workspace_id, + 'environment_review_id' => (int) $review->getKey(), + 'evidence_snapshot_id' => (int) $snapshot->getKey(), + 'initiated_by_user_id' => (int) $user->getKey(), + 'options' => [ + 'include_pii' => false, + 'include_operations' => true, + ], + ]); + $review->forceFill(['current_export_review_pack_id' => (int) $pack->getKey()])->save(); + + spec385WorkspaceComponent($user, $environment) + ->assertSee('Output not customer-ready') + ->assertSee('Baseline readiness blocked') + ->assertSee('Open baseline resolution') + ->assertDontSee('baseline_identity_unresolved') + ->assertDontSee('provider_resource_id') + ->assertDontSee('canonical_subject_key') + ->assertDontSee('internal_diagnostics'); +}); + +function spec385WorkspaceComponent(User $user, ManagedEnvironment $environment): mixed +{ + session()->put(WorkspaceContext::SESSION_KEY, (int) $environment->workspace_id); + setAdminPanelContext(); + + return Livewire::actingAs($user) + ->test(CustomerReviewWorkspace::class); +} + +/** + * @param list $reasons + * @return array + */ +function spec385FilamentCompareContext(array $reasons): array +{ + $byReason = []; + $byReadinessImpact = []; + + foreach ($reasons as $reason) { + $byReason[$reason->value] = ($byReason[$reason->value] ?? 0) + 1; + + $impact = $reason->readinessImpact()->value; + $byReadinessImpact[$impact] = ($byReadinessImpact[$impact] ?? 0) + 1; + } + + return [ + 'result_semantics' => [ + 'version' => 'compare_semantics.v1', + 'run_outcome' => 'partial', + 'operation_outcome' => OperationRunOutcome::PartiallySucceeded->value, + 'counts' => [ + 'by_reason' => $byReason, + 'by_readiness_impact' => $byReadinessImpact, + ], + ], + ]; +} diff --git a/apps/platform/tests/Feature/ReviewPack/Spec385ReviewPackBaselineReadinessTest.php b/apps/platform/tests/Feature/ReviewPack/Spec385ReviewPackBaselineReadinessTest.php new file mode 100644 index 00000000..3e5a2dbf --- /dev/null +++ b/apps/platform/tests/Feature/ReviewPack/Spec385ReviewPackBaselineReadinessTest.php @@ -0,0 +1,280 @@ + 'partial', + 'readiness_state' => 'baseline_identity_unresolved', + 'publication_blockers' => [ + 'Baseline subject identity must be resolved before customer-ready publication.', + ], + 'customer_safe_summary' => [ + 'readiness_state' => 'baseline_identity_unresolved', + 'verified_subject_count' => 0, + 'drift_subject_count' => 0, + 'blocker_count' => 1, + 'limitation_count' => 0, + ], + ]); + + $guidance = ReviewPackOutputResolutionGuidance::fromReadiness($readiness, [ + 'review' => '/reviews/1', + 'evidence' => '/evidence/1', + ]); + + expect($guidance['state'])->toBe(ReviewPackOutputResolutionGuidance::STATE_PUBLICATION_BLOCKED) + ->and($guidance['limitations'][0]['key'])->toBe('baseline_publication_blockers_present') + ->and($guidance['limitations'][0]['label'])->toBe('Baseline readiness blocked') + ->and($guidance['primary_action']['label'])->toBe('Open baseline resolution') + ->and($guidance['technical_details']['Baseline readiness'])->toContain('Baseline subject identity unresolved') + ->and(json_encode($guidance, JSON_THROW_ON_ERROR))->not->toContain('baseline_identity_unresolved') + ->and($guidance)->not->toHaveKey('provider_resource_bindings'); +}); + +it('maps accepted baseline limitations into published-with-limitations guidance', function (): void { + $readiness = spec385ReviewPackReadiness([ + 'state' => 'partial', + 'readiness_state' => 'baseline_compare_limited', + 'publication_blockers' => [], + 'limitation_codes' => ['baseline_accepted_limitations'], + 'customer_safe_summary' => [ + 'readiness_state' => 'baseline_compare_limited', + 'verified_subject_count' => 0, + 'drift_subject_count' => 0, + 'blocker_count' => 0, + 'limitation_count' => 1, + ], + ]); + + $guidance = ReviewPackOutputResolutionGuidance::fromReadiness($readiness, [ + 'review' => '/reviews/1', + ]); + + expect($guidance['state'])->toBe(ReviewPackOutputResolutionGuidance::STATE_PUBLISHED_WITH_LIMITATIONS) + ->and(collect($guidance['limitations'])->pluck('key')->all())->toContain('baseline_accepted_limitations') + ->and($guidance['primary_reason'])->toBe('Baseline limitations qualify this output.'); +}); + +it('adds baseline readiness to customer-facing report disclosure proof', function (): void { + $readiness = spec385ReviewPackReadiness([ + 'state' => 'partial', + 'readiness_state' => 'baseline_identity_unresolved', + 'publication_blockers' => [ + 'Baseline subject identity must be resolved before customer-ready publication.', + ], + 'customer_safe_summary' => [ + 'readiness_state' => 'baseline_identity_unresolved', + 'verified_subject_count' => 0, + 'drift_subject_count' => 0, + 'blocker_count' => 1, + 'limitation_count' => 0, + ], + ]); + + $policy = ReportDisclosurePolicy::evaluate([ + 'is_customer_facing' => true, + 'audience_label' => 'Customer executive', + 'show_section_appendix' => false, + 'show_technical_details' => false, + ], $readiness); + + expect($policy['proof_states']['baseline_readiness'])->toBe(ReportDisclosurePolicy::PROOF_MISSING) + ->and(collect($policy['blocking_reasons'])->pluck('key')->all())->toContain('baseline_readiness_blocked') + ->and(collect($policy['mandatory_disclosures'])->pluck('key')->all())->toContain('baseline_readiness'); +}); + +it('maps stale failed and unproven baseline proof to explicit limitation codes', function ( + string $readinessState, + string $expectedCode, + string $expectedAction, +): void { + $readiness = spec385ReviewPackReadiness([ + 'state' => in_array($readinessState, ['baseline_compare_failed', 'baseline_compare_unproven'], true) ? 'missing' : 'stale', + 'readiness_state' => $readinessState, + 'publication_blockers' => [], + 'customer_safe_summary' => [ + 'readiness_state' => $readinessState, + 'verified_subject_count' => 0, + 'drift_subject_count' => 0, + 'blocker_count' => 0, + 'limitation_count' => 0, + ], + ]); + + $guidance = ReviewPackOutputResolutionGuidance::fromReadiness($readiness, [ + 'review' => '/reviews/1', + 'evidence' => '/evidence/1', + 'operation' => '/operations/1', + ]); + + expect(collect($guidance['limitations'])->pluck('key')->all())->toContain($expectedCode) + ->and($guidance['primary_action']['key'])->toBe($expectedAction); +})->with([ + 'unproven compare' => ['baseline_compare_unproven', 'baseline_compare_unproven', 'open_evidence_basis'], + 'stale compare' => ['baseline_compare_stale', 'baseline_compare_stale', 'open_evidence_basis'], + 'failed compare' => ['baseline_compare_failed', 'baseline_compare_failed', 'open_operation_proof'], +]); + +it('redacts baseline internal diagnostics from customer-safe review pack output but keeps them for internal output', function (): void { + [$user, $tenant] = createUserWithTenant(role: 'owner'); + $review = composeEnvironmentReviewForTest($tenant, $user); + $baselineReadiness = [ + 'version' => 'baseline_readiness.spec385.v1', + 'state' => 'partial', + 'readiness_state' => 'baseline_identity_unresolved', + 'publication_blockers' => [ + 'Baseline subject identity must be resolved before customer-ready publication.', + ], + 'limitations' => [ + [ + 'code' => 'baseline_accepted_limitations', + 'summary' => 'Accepted baseline limitations qualify the customer-ready claim.', + ], + ], + 'limitation_codes' => ['baseline_accepted_limitations'], + 'customer_safe_summary' => [ + 'readiness_state' => 'baseline_identity_unresolved', + 'verified_subject_count' => 1, + 'drift_subject_count' => 0, + 'blocker_count' => 1, + 'limitation_count' => 1, + ], + 'internal_diagnostics' => [ + 'latest_compare_run_id' => 12345, + 'binding_decision_counts' => ['exact_provider_identity' => 1], + 'provider_resource_id' => 'provider-policy-123', + 'canonical_subject_key' => 'baseline:policy:provider-policy-123', + ], + ]; + $review->forceFill([ + 'summary' => array_replace(is_array($review->summary) ? $review->summary : [], [ + 'baseline_readiness' => $baselineReadiness, + 'baseline_publication_blockers' => [], + 'baseline_limitations' => [], + 'publish_blockers' => [], + ]), + ])->save(); + + $customerPack = app(ReviewPackService::class)->generateFromReview($review->fresh(), $user, [ + 'include_pii' => false, + 'include_operations' => false, + ]); + app()->call([new GenerateReviewPackJob( + reviewPackId: (int) $customerPack->getKey(), + operationRunId: (int) $customerPack->operation_run_id, + ), 'handle']); + + $internalPack = app(ReviewPackService::class)->generateFromReview($review->fresh(), $user, [ + 'include_pii' => true, + 'include_operations' => false, + ]); + app()->call([new GenerateReviewPackJob( + reviewPackId: (int) $internalPack->getKey(), + operationRunId: (int) $internalPack->operation_run_id, + ), 'handle']); + + $customerPack->refresh(); + $internalPack->refresh(); + + $customerSummaryJson = json_encode(spec385ZipJson($customerPack, 'summary.json'), JSON_THROW_ON_ERROR); + $customerMetadataJson = json_encode(spec385ZipJson($customerPack, 'metadata.json'), JSON_THROW_ON_ERROR); + $customerExecutiveMarkdown = spec385ZipText($customerPack, ReviewPackService::EXECUTIVE_ENTRYPOINT_FILENAME); + $internalSummaryJson = json_encode(spec385ZipJson($internalPack, 'summary.json'), JSON_THROW_ON_ERROR); + + expect($customerSummaryJson)->toContain('baseline_readiness') + ->and($customerPack->file_path)->not->toBe($internalPack->file_path) + ->and($customerSummaryJson)->toContain('Baseline subject identity unresolved', 'Published with limitations') + ->and($customerSummaryJson)->not->toContain( + 'internal_diagnostics', + 'latest_compare_run_id', + 'binding_decision_counts', + 'provider_resource_id', + 'canonical_subject_key', + 'baseline_readiness.spec385.v1', + 'baseline_identity_unresolved', + 'baseline_publication_blockers_present', + 'baseline_accepted_limitations', + 'environment_review_id', + 'snapshot_id', + 'review_pack_id', + '"id":', + ) + ->and($customerMetadataJson)->not->toContain( + 'internal_diagnostics', + 'latest_compare_run_id', + 'binding_decision_counts', + 'provider_resource_id', + 'canonical_subject_key', + 'baseline_readiness.spec385.v1', + 'baseline_identity_unresolved', + 'baseline_publication_blockers_present', + 'baseline_accepted_limitations', + 'environment_review_id', + 'snapshot_id', + 'review_pack_id', + '"id":', + ) + ->and($customerExecutiveMarkdown)->toContain('current released review', 'Accepted baseline limitations qualify the customer-ready claim.') + ->and($customerExecutiveMarkdown)->not->toContain('#'.$review->getKey(), '#'.$review->evidence_snapshot_id, 'baseline_identity_unresolved', 'baseline_accepted_limitations') + ->and($internalSummaryJson)->toContain('internal_diagnostics', 'latest_compare_run_id', 'binding_decision_counts', 'baseline_identity_unresolved'); +}); + +/** + * @param array $baselineReadiness + * @return array + */ +function spec385ReviewPackReadiness(array $baselineReadiness): array +{ + return ReviewPackOutputReadiness::derive( + reviewStatus: 'published', + reviewCompletenessState: EnvironmentReviewCompletenessState::Complete->value, + evidenceCompletenessState: EnvironmentReviewCompletenessState::Complete->value, + sectionStateCounts: [EnvironmentReviewCompletenessState::Complete->value => 6], + requiredSectionCount: 6, + requiredSectionStateCounts: [EnvironmentReviewCompletenessState::Complete->value => 6], + publishBlockers: [], + hasReadyExport: true, + includePii: false, + protectedValuesHidden: true, + disclosurePresent: true, + baselineReadiness: $baselineReadiness, + ); +} + +/** + * @return array + */ +function spec385ZipJson(\App\Models\ReviewPack $pack, string $filename): array +{ + $payload = json_decode(spec385ZipText($pack, $filename), true, 512, JSON_THROW_ON_ERROR); + + return is_array($payload) ? $payload : []; +} + +function spec385ZipText(\App\Models\ReviewPack $pack, string $filename): string +{ + $zipContent = Storage::disk('exports')->get((string) $pack->file_path); + $tempFile = tempnam(sys_get_temp_dir(), 'spec385-review-pack-'); + file_put_contents($tempFile, $zipContent); + + $zip = new ZipArchive; + $zip->open($tempFile); + $payload = (string) $zip->getFromName($filename); + $zip->close(); + unlink($tempFile); + + return $payload; +} diff --git a/apps/platform/tests/Pest.php b/apps/platform/tests/Pest.php index b7389a8d..0a515114 100644 --- a/apps/platform/tests/Pest.php +++ b/apps/platform/tests/Pest.php @@ -1350,6 +1350,43 @@ function markEnvironmentReviewCustomerSafeReady(EnvironmentReview $review): Envi $review->loadMissing(['sections', 'evidenceSnapshot.items']); $disclosure = 'TenantPilot interprets available evidence for review readiness. This is not a certification, legal attestation, or compliance guarantee.'; + $baselineReadiness = [ + 'version' => 'baseline_readiness.test.v1', + 'state' => EnvironmentReviewCompletenessState::Complete->value, + 'readiness_state' => 'customer_ready', + 'proof_state' => 'test_complete', + 'customer_safe_claim' => 'customer_ready', + 'publication_blockers' => [], + 'limitations' => [], + 'limitation_codes' => [], + 'next_action' => 'download_customer_safe_review_pack', + 'counts' => [ + 'verified_subject_count' => 1, + 'drift_subject_count' => 0, + 'identity_blocker_subject_count' => 0, + 'missing_local_evidence_subject_count' => 0, + 'missing_provider_resource_subject_count' => 0, + 'unsupported_subject_count' => 0, + 'foundation_limited_subject_count' => 0, + 'accepted_limitation_subject_count' => 0, + 'excluded_subject_count' => 0, + 'failed_subject_count' => 0, + 'customer_blocker_subject_count' => 0, + 'internal_blocker_subject_count' => 0, + 'customer_limitation_subject_count' => 0, + 'internal_limitation_subject_count' => 0, + ], + 'customer_safe_summary' => [ + 'state' => EnvironmentReviewCompletenessState::Complete->value, + 'readiness_state' => 'customer_ready', + 'verified_subject_count' => 1, + 'drift_subject_count' => 0, + 'open_drift_count' => 0, + 'blocker_count' => 0, + 'limitation_count' => 0, + 'excluded_subject_count' => 0, + ], + ]; $controlSummary = [ 'control_key' => 'customer-output', 'control_name' => 'Customer output', @@ -1420,7 +1457,7 @@ function markEnvironmentReviewCustomerSafeReady(EnvironmentReview $review): Envi ])->save(); } - $review->sections->each(function (EnvironmentReviewSection $section) use ($controlExplanation, $disclosure): void { + $review->sections->each(function (EnvironmentReviewSection $section) use ($baselineReadiness, $controlExplanation, $disclosure): void { $attributes = [ 'completeness_state' => EnvironmentReviewCompletenessState::Complete->value, ]; @@ -1443,6 +1480,17 @@ function markEnvironmentReviewCustomerSafeReady(EnvironmentReview $review): Envi ], is_array($section->render_payload) ? $section->render_payload : []); } + if ($section->section_key === 'baseline_drift_posture') { + $attributes['summary_payload'] = array_replace( + is_array($section->summary_payload) ? $section->summary_payload : [], + [ + 'baseline_readiness' => $baselineReadiness, + 'publication_blockers' => [], + 'limitations' => [], + ], + ); + } + $section->forceFill($attributes)->save(); }); @@ -1473,6 +1521,9 @@ function markEnvironmentReviewCustomerSafeReady(EnvironmentReview $review): Envi ), ]; $summary['publish_blockers'] = []; + $summary['baseline_readiness'] = $baselineReadiness; + $summary['baseline_publication_blockers'] = []; + $summary['baseline_limitations'] = []; $summary['section_count'] = $sectionCount; $summary['section_state_counts'] = [ 'complete' => $sectionCount, diff --git a/apps/platform/tests/Unit/Support/Baselines/Readiness/Spec385BaselineEvidenceReadinessDeriverTest.php b/apps/platform/tests/Unit/Support/Baselines/Readiness/Spec385BaselineEvidenceReadinessDeriverTest.php new file mode 100644 index 00000000..9324a21e --- /dev/null +++ b/apps/platform/tests/Unit/Support/Baselines/Readiness/Spec385BaselineEvidenceReadinessDeriverTest.php @@ -0,0 +1,242 @@ +toBe(EvidenceCompletenessState::Complete->value) + ->and($readiness['readiness_state'])->toBe('customer_ready') + ->and($readiness['customer_safe_claim'])->toBe('customer_ready') + ->and($readiness['publication_blockers'])->toBe([]) + ->and($readiness['counts']['verified_subject_count'])->toBe(1); +}); + +it('keeps trusted drift complete with findings instead of blocking publication', function (): void { + $readiness = spec385DeriveBaselineReadiness( + reasons: [CompareResultReason::VerifiedDriftDetected], + driftCount: 1, + openDriftCount: 1, + ); + + expect($readiness['state'])->toBe(EvidenceCompletenessState::Complete->value) + ->and($readiness['readiness_state'])->toBe('trusted_drift_detected') + ->and($readiness['customer_safe_claim'])->toBe('customer_ready_with_findings') + ->and($readiness['publication_blockers'])->toBe([]) + ->and($readiness['customer_safe_summary']['drift_subject_count'])->toBe(1); +}); + +it('separates unresolved identity, missing local evidence, missing provider resource, and unsupported coverage', function ( + CompareResultReason $reason, + string $expectedState, + string $expectedReadinessState, + string $expectedAction, +): void { + $readiness = spec385DeriveBaselineReadiness([$reason]); + + expect($readiness['state'])->toBe($expectedState) + ->and($readiness['readiness_state'])->toBe($expectedReadinessState) + ->and($readiness['next_action'])->toBe($expectedAction) + ->and($readiness['publication_blockers'])->not->toBeEmpty(); +})->with([ + 'identity unresolved' => [ + CompareResultReason::UnresolvedAmbiguousIdentity, + EvidenceCompletenessState::Partial->value, + 'baseline_identity_unresolved', + 'open_baseline_subject_resolution', + ], + 'missing local evidence' => [ + CompareResultReason::MissingLocalEvidence, + EvidenceCompletenessState::Missing->value, + 'baseline_local_evidence_missing', + 'open_evidence_basis', + ], + 'missing provider resource' => [ + CompareResultReason::MissingProviderResource, + EvidenceCompletenessState::Partial->value, + 'baseline_provider_resource_missing', + 'open_baseline_subject_resolution', + ], + 'unsupported required coverage' => [ + CompareResultReason::UnsupportedResourceClass, + EvidenceCompletenessState::Partial->value, + 'baseline_required_coverage_unsupported', + 'review_output_limitations', + ], +]); + +it('treats foundation-only, accepted limitation, and exclusions as disclosed limitations instead of verified no drift', function (): void { + $readiness = spec385DeriveBaselineReadiness([ + CompareResultReason::FoundationInventoryOnly, + CompareResultReason::AcceptedLimitation, + CompareResultReason::ExcludedNonGoverned, + ]); + + expect($readiness['state'])->toBe(EvidenceCompletenessState::Partial->value) + ->and($readiness['readiness_state'])->toBe('baseline_compare_limited') + ->and($readiness['publication_blockers'])->toBe([]) + ->and($readiness['limitation_codes'])->toEqual([ + 'baseline_foundation_limitations', + 'baseline_accepted_limitations', + 'baseline_exclusions_present', + ]) + ->and($readiness['customer_safe_claim'])->toBe('customer_ready_with_disclosed_limitations'); +}); + +it('honors active provider resource decisions as readiness truth', function (): void { + $run = spec385BaselineOperationRun(spec385ResultSemantics([ + CompareResultReason::VerifiedNoDrift, + ])); + + $readiness = app(BaselineEvidenceReadinessDeriver::class)->derive( + latestCompareRun: $run, + driftCount: 0, + openDriftCount: 0, + bindingDecisionCounts: [ + ProviderResourceResolutionMode::AcceptedLimitation->value => 1, + ProviderResourceResolutionMode::ExcludedNonGoverned->value => 1, + ProviderResourceResolutionMode::UnsupportedCoverage->value => 1, + ], + measuredAt: now(), + ); + + expect($readiness['state'])->toBe(EvidenceCompletenessState::Partial->value) + ->and($readiness['readiness_state'])->toBe('baseline_required_coverage_unsupported') + ->and($readiness['publication_blockers'])->toContain('Required baseline coverage is unsupported and must be accepted or resolved before publication.') + ->and($readiness['limitation_codes'])->toEqual([ + 'baseline_accepted_limitations', + 'baseline_exclusions_present', + ]); +}); + +it('blocks publication when binding decisions changed after the latest compare', function (): void { + $run = spec385BaselineOperationRun(spec385ResultSemantics([ + CompareResultReason::VerifiedNoDrift, + ])); + + $readiness = app(BaselineEvidenceReadinessDeriver::class)->derive( + latestCompareRun: $run, + driftCount: 0, + openDriftCount: 0, + bindingDecisionCounts: [ + 'revoked_after_latest_compare' => 1, + ], + measuredAt: now(), + ); + + expect($readiness['state'])->toBe(EvidenceCompletenessState::Partial->value) + ->and($readiness['readiness_state'])->toBe('baseline_compare_blocked') + ->and($readiness['next_action'])->toBe('open_evidence_basis') + ->and($readiness['publication_blockers'])->toContain('Baseline subject decisions changed after the latest compare; refresh evidence before publication.'); +}); + +it('does not treat legacy successful compare context as trusted no-drift proof', function (): void { + $run = spec385BaselineOperationRun([ + 'reason_code' => 'baseline.compare.no_drift_detected', + ]); + + $readiness = app(BaselineEvidenceReadinessDeriver::class)->derive( + latestCompareRun: $run, + driftCount: 0, + openDriftCount: 0, + measuredAt: now(), + ); + + expect($readiness['state'])->toBe(EvidenceCompletenessState::Missing->value) + ->and($readiness['readiness_state'])->toBe('baseline_compare_unproven') + ->and($readiness['publication_blockers'])->not->toBeEmpty(); +}); + +it('marks stale and failed structured compare proof as not customer ready', function (): void { + $stale = spec385DeriveBaselineReadiness( + reasons: [CompareResultReason::VerifiedNoDrift], + isStale: true, + ); + $failed = spec385DeriveBaselineReadiness( + reasons: [CompareResultReason::CompareFailed], + outcome: OperationRunOutcome::Failed->value, + ); + + expect($stale['state'])->toBe(EvidenceCompletenessState::Stale->value) + ->and($stale['readiness_state'])->toBe('baseline_compare_stale') + ->and($failed['state'])->toBe(EvidenceCompletenessState::Missing->value) + ->and($failed['readiness_state'])->toBe('baseline_compare_failed'); +}); + +/** + * @param list $reasons + * @return array + */ +function spec385DeriveBaselineReadiness( + array $reasons, + int $driftCount = 0, + int $openDriftCount = 0, + string $outcome = OperationRunOutcome::Succeeded->value, + bool $isStale = false, +): array { + return app(BaselineEvidenceReadinessDeriver::class)->derive( + latestCompareRun: spec385BaselineOperationRun(spec385ResultSemantics($reasons), $outcome), + driftCount: $driftCount, + openDriftCount: $openDriftCount, + measuredAt: now(), + isStale: $isStale, + ); +} + +/** + * @param array $compareContext + */ +function spec385BaselineOperationRun( + array $compareContext, + string $outcome = OperationRunOutcome::Succeeded->value, +): OperationRun { + return new OperationRun([ + 'type' => OperationRunType::BaselineCompare->value, + 'status' => OperationRunStatus::Completed->value, + 'outcome' => $outcome, + 'context' => [ + 'baseline_compare' => $compareContext, + ], + 'completed_at' => now(), + ]); +} + +/** + * @param list $reasons + * @return array + */ +function spec385ResultSemantics(array $reasons): array +{ + $byReason = []; + $byReadinessImpact = []; + + foreach ($reasons as $reason) { + $byReason[$reason->value] = ($byReason[$reason->value] ?? 0) + 1; + + $impact = $reason->readinessImpact()->value; + $byReadinessImpact[$impact] = ($byReadinessImpact[$impact] ?? 0) + 1; + } + + return [ + 'result_semantics' => [ + 'version' => 'compare_semantics.v1', + 'run_outcome' => 'completed', + 'operation_outcome' => OperationRunOutcome::Succeeded->value, + 'counts' => [ + 'by_reason' => $byReason, + 'by_readiness_impact' => $byReadinessImpact, + ], + ], + ]; +} diff --git a/apps/platform/tests/Unit/Support/ReviewPacks/Spec385ReportDisclosurePolicyTest.php b/apps/platform/tests/Unit/Support/ReviewPacks/Spec385ReportDisclosurePolicyTest.php new file mode 100644 index 00000000..8e948357 --- /dev/null +++ b/apps/platform/tests/Unit/Support/ReviewPacks/Spec385ReportDisclosurePolicyTest.php @@ -0,0 +1,28 @@ + true, + 'audience_label' => 'Customer executive', + ], [ + 'contains_pii' => false, + 'protected_values_hidden' => true, + 'disclosure_present' => true, + 'customer_safe_state' => 'requires_review', + 'evidence_completeness_state' => 'complete', + 'baseline_readiness' => [ + 'state' => 'partial', + 'readiness_state' => 'baseline_compare_limited', + 'publication_blockers' => [], + 'limitation_codes' => ['baseline_accepted_limitations'], + ], + ]); + + expect($policy['proof_states']['baseline_readiness'])->toBe(ReportDisclosurePolicy::PROOF_ASSUMED) + ->and(collect($policy['warnings'])->pluck('key')->all())->toContain('baseline_limitations_present') + ->and(collect($policy['blocking_reasons'])->pluck('key')->all())->not->toContain('baseline_readiness_blocked'); +}); diff --git a/docs/ui-ux-enterprise-audit/page-reports/ui-006-customer-review-workspace.md b/docs/ui-ux-enterprise-audit/page-reports/ui-006-customer-review-workspace.md index 2a2e9d77..fcda88a8 100644 --- a/docs/ui-ux-enterprise-audit/page-reports/ui-006-customer-review-workspace.md +++ b/docs/ui-ux-enterprise-audit/page-reports/ui-006-customer-review-workspace.md @@ -158,3 +158,17 @@ ### Browser proof - Spec372 screenshot: `specs/372-customer-auditor-surface-safety-pass/artifacts/screenshots/001-customer-review-workspace-after.png` - Browser smoke verified no JavaScript errors, no console logs, and no default `Operation proof` text in the workspace. + +## Spec 385 Follow-up + +Spec 385 keeps the existing customer workspace layout and routes baseline readiness through the shared review-output guidance. + +- baseline readiness blockers now appear as customer-output blockers in the existing decision card and limitation list +- trusted drift remains a finding-bearing ready state rather than a publication blocker +- accepted limitations, foundation-only coverage, and exclusions are shown as qualified limitations instead of verified no-drift proof +- raw provider-resource IDs, canonical subject keys, and baseline internal diagnostics remain out of the customer workspace rendering + +### Browser proof + +- Spec385 screenshot target: `specs/385-evidence-review-readiness/artifacts/screenshots/01-baseline-readiness-blocked.png` +- Browser smoke target verifies baseline readiness guidance, no JavaScript errors, no console logs, and no raw binding internals in the workspace. diff --git a/docs/ui-ux-enterprise-audit/page-reports/ui-011-reviews.md b/docs/ui-ux-enterprise-audit/page-reports/ui-011-reviews.md index a108b380..780e56f3 100644 --- a/docs/ui-ux-enterprise-audit/page-reports/ui-011-reviews.md +++ b/docs/ui-ux-enterprise-audit/page-reports/ui-011-reviews.md @@ -46,3 +46,11 @@ ## Top Issues ## Target Direction P1 strategic target paired with the Customer Review Workspace target. + +## Spec 385 Follow-up + +Spec 385 updates review readiness truth without adding a new register route. + +- baseline readiness blockers from the baseline drift section feed the existing publish blockers summary +- partial baseline sections remain publishable only when they carry disclosed limitations and no customer-ready blocker +- trusted drift is visible as review findings and does not demote the register state to blocked by itself diff --git a/docs/ui-ux-enterprise-audit/page-reports/ui-042-review-pack-detail.md b/docs/ui-ux-enterprise-audit/page-reports/ui-042-review-pack-detail.md index 21abe5bf..1858fb78 100644 --- a/docs/ui-ux-enterprise-audit/page-reports/ui-042-review-pack-detail.md +++ b/docs/ui-ux-enterprise-audit/page-reports/ui-042-review-pack-detail.md @@ -64,3 +64,12 @@ ### Browser proof - Spec372 screenshot: `specs/372-customer-auditor-surface-safety-pass/artifacts/screenshots/003-review-pack-view-after.png` - Browser smoke verified readiness before technical details and no JavaScript errors or console logs. + +## Spec 385 Follow-up + +Spec 385 extends the existing output-readiness contract on this surface. + +- baseline publication blockers now map to the existing `Output not customer-ready` guidance state +- baseline accepted limitations, foundation-only coverage, and exclusions map to disclosed limitation guidance +- customer-safe exports retain baseline state/counts but drop baseline internal diagnostics from customer payloads +- rendered-report disclosure policy now includes a baseline readiness proof row for customer-facing profiles diff --git a/docs/ui-ux-enterprise-audit/page-reports/ui-046-evidence-snapshot-detail.md b/docs/ui-ux-enterprise-audit/page-reports/ui-046-evidence-snapshot-detail.md index 00d7eeda..973658eb 100644 --- a/docs/ui-ux-enterprise-audit/page-reports/ui-046-evidence-snapshot-detail.md +++ b/docs/ui-ux-enterprise-audit/page-reports/ui-046-evidence-snapshot-detail.md @@ -31,3 +31,11 @@ ## Spec 372 Follow-up - Evidence Snapshot is no longer unresolved for this fixture. - OperationRun related-context entry was removed. - Browser smoke verified desktop and mobile rendering, section ordering, no JavaScript errors, no console logs, and no mobile horizontal overflow. + +## Spec 385 Follow-up + +Spec 385 changes the baseline drift posture item from drift-count-only evidence into a readiness-derived evidence item. + +- baseline readiness now distinguishes trusted no drift, trusted drift, missing evidence, unresolved identity, unsupported coverage, accepted limitations, exclusions, stale proof, and failed proof +- legacy compare `reason_code` context alone is not treated as trusted no-drift evidence +- provider-resource binding decisions are consumed only as internal derived diagnostics, not as raw customer-visible evidence fields diff --git a/specs/385-evidence-review-readiness/artifacts/screenshots/01-baseline-readiness-blocked.png b/specs/385-evidence-review-readiness/artifacts/screenshots/01-baseline-readiness-blocked.png new file mode 100644 index 0000000000000000000000000000000000000000..b96a2df48654b8ae917d743037c1b94aab2f9525 GIT binary patch literal 495815 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

C;ZSoN%eLTNG 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 VZZO0<2Y!MgBk@?gNc5@i{{UBWKlcCt literal 0 HcmV?d00001 diff --git a/specs/385-evidence-review-readiness/checklists/requirements.md b/specs/385-evidence-review-readiness/checklists/requirements.md new file mode 100644 index 00000000..046b4322 --- /dev/null +++ b/specs/385-evidence-review-readiness/checklists/requirements.md @@ -0,0 +1,70 @@ +# Requirements Checklist: Spec 385 - Evidence and Review Readiness Integration v1 + +**Purpose**: Preparation quality and constitution gate for Spec 385 before implementation. +**Created**: 2026-06-17 +**Feature**: `specs/385-evidence-review-readiness/spec.md` + +## Candidate And Scope + +- [x] CHK001 The selected candidate is directly user-provided and not invented from an empty auto-prep queue. +- [x] CHK002 The candidate is not already covered by an existing `specs/385-*` package. +- [x] CHK003 Completed dependency specs 381, 382, 383, and 384 are treated as read-only historical context. +- [x] CHK004 The smallest viable slice is Evidence, Environment Review, and Review Pack readiness integration only. +- [x] CHK005 Matching, compare semantics, resolution UI, workflow engines, report/PDF runtime, and legacy compatibility are explicitly out of scope. + +## Spec Approval Rubric + +- [x] CHK006 The Spec Candidate Check answers the operator workflow, trust/safety, smallest version, complexity, and why-now questions. +- [x] CHK007 The spec is classified as Core Enterprise. +- [x] CHK008 Red flags are named and defended. +- [x] CHK009 The score is at least 7/12 and the decision is approve. +- [x] CHK010 The proportionality review covers current problem, insufficiency, narrowest implementation, ownership cost, rejected alternative, and release truth. + +## Repository Truth + +- [x] CHK011 Existing affected surfaces are named from repo truth, including `BaselineDriftPostureSource`, `EvidenceCompletenessEvaluator`, `EnvironmentReviewReadinessGate`, `ReviewPackOutputReadiness`, `ReviewPackOutputResolutionGuidance`, and `ReportDisclosurePolicy`. +- [x] CHK012 Existing source-of-truth boundaries are preserved: OperationRun compare proof, provider resource bindings, Evidence Snapshot, Environment Review, Review Pack, and Stored Report. +- [x] CHK013 Readiness remains derived unless implementation updates the spec/plan/tasks before adding persistence. +- [x] CHK014 Pre-production compatibility posture rejects old payload compatibility readers. + +## UI And Surface Coverage + +- [x] CHK015 The spec includes a coherent UI Surface Impact decision for changed existing surfaces. +- [x] CHK016 UI/Productization Coverage names affected surfaces and page-report expectations. +- [x] CHK017 Customer-safe review requirements are explicit. +- [x] CHK018 Dangerous-action review is marked not applicable because no new destructive/high-impact action is planned. +- [x] CHK019 Tasks include UI coverage/page-report update decisions for affected existing surfaces. +- [x] CHK020 The spec includes a UI Action Matrix for changed existing Filament surfaces and records that no new actions are planned. + +## Shared Patterns And OperationRun + +- [x] CHK021 Cross-cutting shared pattern reuse names existing helpers before any new mapper. +- [x] CHK022 Any new mapper/helper is bounded to baseline readiness and barred from becoming a generic readiness/workflow framework. +- [x] CHK023 OperationRun impact is limited to proof and next-action links; no lifecycle transition or new run type is planned. +- [x] CHK024 Provider boundary rules keep provider identifiers internal/proof-only and primary readiness language provider-neutral. + +## RBAC, Security, And Disclosure + +- [x] CHK025 Workspace/environment entitlement and deny-as-not-found boundaries are required for all affected links and surfaces. +- [x] CHK026 Customer-safe output forbids raw provider IDs, canonical subject keys, binding internals, internal enum names, database IDs, and raw OperationRun JSON. +- [x] CHK027 Internal/support diagnostics are allowed only according to existing profile/disclosure rules. +- [x] CHK028 No Graph/provider calls are allowed during readiness derivation or UI render. + +## Test And Validation Readiness + +- [x] CHK029 Test purpose and lanes are explicit. +- [x] CHK030 Tasks include tests before runtime mapping implementation. +- [x] CHK031 Tasks cover false-green and false-red cases. +- [x] CHK032 Tasks include customer-safe leakage tests. +- [x] CHK033 Tasks include Filament/Livewire and browser-smoke decisions for changed rendered surfaces. +- [x] CHK034 Validation commands are present in the spec, plan, and tasks. + +## Review Outcome + +- [x] CHK035 Review outcome class: acceptable-special-case. +- [x] CHK036 Workflow outcome: keep. +- [x] CHK037 Final note location: implementation close-out entry `Evidence and Review Readiness Integration`. + +## Notes + +Preparation is ready for implementation review. The later implementation loop must stop and update spec/plan/tasks before adding any new persisted readiness entity, public state family, route, panel provider, provider call, workflow engine, report/PDF runtime change, or legacy compatibility reader. diff --git a/specs/385-evidence-review-readiness/plan.md b/specs/385-evidence-review-readiness/plan.md new file mode 100644 index 00000000..8331514b --- /dev/null +++ b/specs/385-evidence-review-readiness/plan.md @@ -0,0 +1,355 @@ +# Implementation Plan: Spec 385 - Evidence and Review Readiness Integration v1 + +**Branch**: `385-evidence-review-readiness` | **Date**: 2026-06-17 | **Spec**: [spec.md](./spec.md) +**Input**: Feature specification from `/specs/385-evidence-review-readiness/spec.md` + +## Summary + +Integrate Spec 383 baseline compare result semantics and Spec 384 provider-resource binding decisions into existing Evidence Snapshot, Environment Review, and Review Pack readiness paths. The implementation should derive one baseline readiness detail from existing OperationRun compare proof and `provider_resource_bindings`, then reuse existing evidence completeness, review readiness, review-pack readiness/guidance, disclosure, and badge/presentation helpers so customer output is honest about blockers and limitations. + +The plan explicitly excludes new matching logic, new compare semantics, new resolution UI, new report/PDF runtime work, new workflow/approval engines, new persisted readiness truth, and legacy compatibility readers. + +## Technical Context + +**Language/Version**: PHP 8.4.15 +**Primary Dependencies**: Laravel 12.52.0, Filament 5.2.1, Livewire 4.1.4, Pest 4.3.1, PostgreSQL via Sail/Dokploy +**Storage**: Existing OperationRun compare payloads, `provider_resource_bindings`, `EvidenceSnapshot`/items, `EnvironmentReview`/sections, `ReviewPack`, and `StoredReport`. No new primary table is approved. +**Testing**: Pest unit and feature tests; Filament/Livewire feature tests for changed surfaces; browser smoke for the customer/operator-visible readiness presentation changed by this spec. +**Validation Lanes**: fast-feedback, confidence, browser; PostgreSQL only if a migration/index/constraint is introduced after spec update. +**Target Platform**: Laravel monolith in `apps/platform`, Sail locally, Dokploy for staging/production. +**Project Type**: Laravel/Filament web application inside `apps/platform`. +**Performance Goals**: Readiness derivation uses DB-local OperationRun/evidence/review/pack data; no provider/Graph calls during UI render; keep derived counts bounded by existing compare payload windows. +**Constraints**: no old payload readers, no display-name readiness interpretation, no raw provider detail in customer-safe output, no OperationRun lifecycle transitions outside existing services, no new UI route/panel provider. +**Scale/Scope**: Existing Evidence Snapshot, Environment Review, Customer Review Workspace, and Review Pack surfaces. + +## Existing Repository Surfaces Likely Affected + +```text +apps/platform/app/Services/Evidence/Sources/BaselineDriftPostureSource.php +apps/platform/app/Services/Evidence/EvidenceCompletenessEvaluator.php +apps/platform/app/Services/Evidence/EvidenceSnapshotService.php +apps/platform/app/Services/EnvironmentReviews/EnvironmentReviewReadinessGate.php +apps/platform/app/Services/EnvironmentReviews/EnvironmentReviewComposer.php +apps/platform/app/Support/ReviewPacks/ReviewPackOutputReadiness.php +apps/platform/app/Support/ReviewPacks/ReviewPackOutputResolutionGuidance.php +apps/platform/app/Support/ReviewPacks/ReportDisclosurePolicy.php +apps/platform/app/Support/ReviewPacks/ReportProfileRegistry.php +apps/platform/app/Support/Badges/BadgeCatalog.php +apps/platform/app/Support/Badges/Domains/EvidenceCompletenessBadge.php +apps/platform/app/Filament/Resources/EvidenceSnapshotResource.php +apps/platform/app/Filament/Resources/EnvironmentReviewResource.php +apps/platform/app/Filament/Resources/ReviewPackResource.php +apps/platform/app/Filament/Pages/Reviews/CustomerReviewWorkspace.php +apps/platform/resources/views/filament/pages/reviews/customer-review-workspace.blade.php +apps/platform/app/Services/ReviewPackService.php +apps/platform/app/Jobs/GenerateEvidenceSnapshotJob.php +apps/platform/app/Jobs/ComposeEnvironmentReviewJob.php +apps/platform/app/Jobs/GenerateReviewPackJob.php +apps/platform/app/Support/Baselines/CompareSemantics/* +apps/platform/app/Support/OperationRunLinks.php +apps/platform/app/Support/ManagedEnvironmentLinks.php +docs/ui-ux-enterprise-audit/page-reports/ui-006-customer-review-workspace.md +docs/ui-ux-enterprise-audit/page-reports/ui-011-reviews.md +docs/ui-ux-enterprise-audit/page-reports/ui-042-review-pack-detail.md +docs/ui-ux-enterprise-audit/page-reports/ui-046-evidence-snapshot-detail.md +``` + +Likely new or extended support path if implementation keeps the planned shape: + +```text +apps/platform/app/Support/Baselines/Readiness/ +``` + +Do not create that namespace if existing helpers can absorb the mapping with less structure. If a new helper is added, keep it baseline-readiness-specific and do not turn it into a cross-domain readiness framework. + +## UI / Surface Guardrail Plan + +- **Guardrail scope**: existing evidence/review/review-pack/customer-safe readiness presentation changes. +- **Affected routes/pages/actions/states/navigation/panel/provider surfaces**: existing Evidence Snapshot detail/Evidence Overview, Environment Review detail/register, Customer Review Workspace, Review Pack detail/download/rendered output, and readiness/badge/guidance states inside those surfaces. +- **No-impact class, if applicable**: N/A. +- **Native vs custom classification summary**: reuse existing Filament resources, existing Blade composition in Customer Review Workspace, existing badge/disclosure helpers, and existing review-pack output helpers. No new design system. +- **Shared-family relevance**: status messaging, evidence/report viewers, publication blockers, action links, badges, customer-safe disclosure, internal technical details. +- **State layers in scope**: evidence item payload, review summary/blockers, review-pack readiness payload, rendered/customer-safe output, and page-level guidance. No shell/panel/provider state change. +- **Audience modes in scope**: customer-safe review consumer, operator-MSP, and support-platform. +- **Decision/diagnostic/raw hierarchy plan**: customer/operator default shows readiness, reason, limitation/blocker, and one next action; diagnostics and raw proof are secondary/internal. +- **Raw/support gating plan**: raw provider IDs, canonical subject keys, binding internals, internal enum names, DB IDs, and raw OperationRun JSON stay hidden from customer-safe output and diagnostics-only elsewhere. +- **One-primary-action / duplicate-truth control**: each affected surface should show one dominant next action: resolve baseline subjects, refresh evidence, rerun compare, review limitations, or download qualified package. +- **Handling modes by drift class or surface**: changed customer-safe readiness presentation is `review-mandatory`; existing page report updates are required or a checked no-new-route note must be recorded. +- **Repository-signal treatment**: UI-COV-001 applies because existing reachable customer/evidence/review surfaces change readiness presentation. +- **Special surface test profiles**: `shared-detail-family` for readiness/detail output; `standard-native-filament` relief for unchanged Filament layout/action hierarchy. +- **Required tests or manual smoke**: feature tests for mapping and rendered output; browser smoke is required for the changed customer-facing readiness rendering unless implementation updates spec/plan/tasks first to prove no rendered presentation changed. +- **Exception path and spread control**: none planned. +- **Active feature PR close-out entry**: Evidence and Review Readiness Integration. +- **UI/Productization coverage decision**: existing surfaces changed; update relevant page reports or record no-new-route/no-archetype notes. +- **Coverage artifacts to update**: relevant page reports under `docs/ui-ux-enterprise-audit/page-reports/`; `route-inventory.md`/matrix only if implementation changes route inventory or coverage matrix classification. +- **No-impact rationale**: N/A. +- **Navigation / Filament provider-panel handling**: no navigation or panel provider changes planned. Laravel 12 panel providers remain registered through `apps/platform/bootstrap/providers.php`. +- **Screenshot or page-report need**: screenshot/browser smoke for the affected customer-safe readiness state when implementation changes rendered customer output. + +## Shared Pattern & System Fit + +- **Cross-cutting feature marker**: yes. +- **Systems touched**: baseline compare semantics, provider resource binding decisions, evidence snapshot completeness, environment review readiness, review-pack readiness/guidance, report disclosure policy, customer review workspace, badge/status presentation, OperationRun proof links. +- **Shared abstractions reused**: Spec 383 `CompareSemantics` values, `provider_resource_bindings`, `EvidenceCompletenessEvaluator`, `EnvironmentReviewReadinessGate`, `ReviewPackOutputReadiness`, `ReviewPackOutputResolutionGuidance`, `ReportDisclosurePolicy`, `ReportProfileRegistry`, `BadgeCatalog`, existing OperationRun link helpers. +- **New abstraction introduced? why?**: possibly one bounded baseline readiness mapper if needed to avoid duplicate interpretation across Evidence, Review, and Review Pack. It must derive from existing truth and remain baseline-specific. +- **Why the existing abstraction was sufficient or insufficient**: existing review-pack and review readiness helpers are the right integration points, but they currently do not consume baseline compare readiness impact and operator subject-resolution decisions. +- **Bounded deviation / spread control**: no generic readiness framework, no cross-domain indicator framework, no workflow engine, and no new persisted readiness entity. + +## OperationRun UX Impact + +- **Touches OperationRun start/completion/link UX?**: yes for source proof and next-action links only. +- **Central contract reused**: existing OperationRun proof/link helpers and existing baseline compare/evidence/review operation UX. +- **Delegated UX behaviors**: any rerun/refresh/open-operation behavior must delegate to existing baseline compare/evidence/review start/link paths. +- **Surface-owned behavior kept local**: readiness explanation, limitation/blocker text, and which existing link is shown as the primary action. +- **Queued DB-notification policy**: no new queued DB notification. +- **Terminal notification path**: unchanged. +- **Exception path**: none. + +## Provider Boundary & Portability Fit + +- **Shared provider/platform boundary touched?**: yes. +- **Provider-owned seams**: provider key/resource type/resource ID, canonical subject key, source descriptor, raw proof payload. +- **Platform-core seams**: baseline subject readiness, evidence completeness, limitation, exclusion, missing evidence, missing provider resource, publication blocker, customer-ready/internal-only/published-with-limitations semantics. +- **Neutral platform terms / contracts preserved**: provider resource, governed subject, baseline subject, accepted limitation, exclusion, trusted compare, missing evidence, unsupported coverage, readiness, publication blocker. +- **Retained provider-specific semantics and why**: provider identifiers may remain internal proof data needed for support diagnosis; they cannot become customer-safe wording or primary operator labels. +- **Bounded extraction or follow-up path**: document-in-feature for profile/copy choices; follow-up-spec for limitation expiry, broader lifecycle, or external portal work. + +## Constitution Check + +- Inventory-first: evidence readiness consumes last-observed inventory/compare/evidence truth; Microsoft remains external truth. +- Read/write separation: no write action is added by default. Existing publish/export/download actions keep existing rules. +- Graph contract path: no new Graph calls and no provider calls during render. Any evidence refresh/rerun uses existing jobs/services through `GraphClientInterface`. +- Deterministic capabilities: no new capability family by default. +- RBAC-UX: existing `/admin` workspace/environment rules remain; non-members 404; entitled but missing capability follows existing 403 policy behavior. +- Workspace isolation: all evidence/review/pack/source operation links remain workspace scoped. +- Tenant/environment isolation: all readiness inputs must be scoped to managed environment before display. +- Global search: no new resource is added. Existing global search behavior remains unchanged. +- Destructive-like actions: none added; existing actions keep existing confirmations/authorization/audit. +- Run observability: no new operation type; source proof links use existing OperationRun truth. +- OperationRun start UX: local readiness surfaces must not compose queued toasts/links/events. +- Ops-UX lifecycle: no direct `OperationRun.status` or `OperationRun.outcome` transitions. +- Ops-UX summary counts: no new OperationRun summary count key unless `OperationSummaryKeys::all()` and tests are updated. +- Data minimization: customer output excludes raw provider IDs, canonical keys, binding internals, raw OperationRun JSON, DB IDs, and internal enum names. +- Test governance: Unit, Feature, Filament/Livewire, and limited Browser lanes are planned explicitly. +- Proportionality: any mapper/helper must solve current false-green/false-red output risk and stay bounded. +- No premature abstraction: do not add a generic readiness engine, workflow engine, approval layer, profile framework, or cross-domain indicator framework. +- Persisted truth: readiness remains derived; no new table/artifact by default. +- Behavioral state: derived states must alter guidance, publication readiness, disclosure, or output boundary. Presentation-only labels should map from existing truth. +- UI semantics: use existing badge/disclosure/guidance helpers; do not create page-local semantic color systems. +- Shared pattern first: extend existing evidence/review/pack readiness helpers before adding a new helper. +- Provider boundary: primary readiness language stays provider-neutral. +- V1 explicitness / few layers: use a direct derived mapping and thin adapters. +- UI/Productization coverage: affected existing surfaces need page-report updates or checked no-new-route/no-archetype rationale. + +Gate result for preparation: PASS. + +## Test Governance Check + +- **Test purpose / classification by changed surface**: Unit for baseline readiness mapping; Feature for Evidence/Review/ReviewPack integration; Filament/Livewire Feature for changed rendered surfaces; Browser for the customer-facing readiness smoke required by this presentation change. +- **Affected validation lanes**: fast-feedback, confidence, browser; pgsql only if schema/index behavior is added after spec update. +- **Why this lane mix is the narrowest sufficient proof**: the risk is deterministic readiness mapping and existing surface rendering; browser is needed to prove changed customer-facing output did not regress visually or leak raw details. +- **Narrowest proving command(s)**: + - `cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Unit/Support/Baselines tests/Unit/Evidence tests/Unit/Support/ReviewPacks` + - `cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Evidence/BaselineDriftPostureSourceTest.php tests/Feature/EnvironmentReview tests/Feature/ReviewPack` + - `cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Filament/Spec347CustomerReviewWorkspaceOutputReadinessTest.php tests/Feature/Filament/Spec349CustomerReviewWorkspaceOutputGuidanceTest.php` + - `cd apps/platform && ./vendor/bin/sail php vendor/bin/pest tests/Browser/Spec347ReviewPackOutputReadinessSmokeTest.php` or a new focused Spec 385 browser smoke covering changed customer-facing readiness rendering. + - `cd apps/platform && ./vendor/bin/sail bin pint --dirty --format agent` + - `git diff --check` +- **Fixture / helper / factory / seed / context cost risks**: baseline compare/evidence/review fixtures may be broad. Keep any new setup local to Spec 385 tests and avoid widening shared defaults. +- **Expensive defaults or shared helper growth introduced?**: none planned. +- **Heavy-family additions, promotions, or visibility changes**: none planned. +- **Surface-class relief / special coverage rule**: existing native Filament resources can use standard-native relief unless layout/action hierarchy changes; customer-safe output needs browser smoke for the readiness rendering changed by this spec. +- **Closing validation and reviewer handoff**: verify no false-green/no false-red, no raw provider leakage, no old-payload compatibility, no new workflow/report/PDF scope, and no hidden heavy/browser cost. +- **Budget / baseline / trend follow-up**: none expected; document-in-feature if browser fixture cost grows. +- **Review-stop questions**: readiness duplicate truth, customer leakage, profile/disclosure ambiguity, new state bloat, old payload compatibility, and scope bleed into report/PDF/runtime. +- **Escalation path**: document-in-feature for contained profile/copy choices; follow-up-spec for limitation lifecycle, external portal, or structural readiness framework. +- **Active feature PR close-out entry**: Evidence and Review Readiness Integration. +- **Why no dedicated follow-up spec is needed**: this spec is the dedicated integration over completed Specs 381-384. Follow-up candidates remain listed for larger lifecycle/productization work. + +## Project Structure + +### Documentation (this feature) + +```text +specs/385-evidence-review-readiness/ +├── checklists/ +│ └── requirements.md +├── plan.md +├── spec.md +└── tasks.md +``` + +### Source Code (repository root) + +```text +apps/platform/app/ +├── Services/ +│ ├── Evidence/ +│ │ ├── EvidenceCompletenessEvaluator.php +│ │ └── Sources/ +│ │ └── BaselineDriftPostureSource.php +│ └── EnvironmentReviews/ +│ ├── EnvironmentReviewComposer.php +│ └── EnvironmentReviewReadinessGate.php +├── Support/ +│ ├── Baselines/ +│ │ ├── CompareSemantics/ +│ │ └── Readiness/ # only if existing helpers cannot absorb the mapping +│ ├── ReviewPacks/ +│ │ ├── ReportDisclosurePolicy.php +│ │ ├── ReportProfileRegistry.php +│ │ ├── ReviewPackOutputReadiness.php +│ │ └── ReviewPackOutputResolutionGuidance.php +│ └── Badges/ +├── Filament/ +│ ├── Resources/ +│ │ ├── EvidenceSnapshotResource.php +│ │ ├── EnvironmentReviewResource.php +│ │ └── ReviewPackResource.php +│ └── Pages/ +│ └── Reviews/ +│ └── CustomerReviewWorkspace.php +└── Jobs/ + ├── GenerateEvidenceSnapshotJob.php + ├── ComposeEnvironmentReviewJob.php + └── GenerateReviewPackJob.php + +apps/platform/resources/views/filament/pages/reviews/ +└── customer-review-workspace.blade.php + +apps/platform/tests/ +├── Unit/ +├── Feature/ +│ ├── Evidence/ +│ ├── EnvironmentReview/ +│ ├── ReviewPack/ +│ └── Filament/ +└── Browser/ +``` + +**Structure Decision**: Use existing Laravel/Filament monolith structure. Add only bounded support classes if existing helpers cannot represent baseline readiness consistently. + +## Technical Approach + +1. Confirm completed dependency guardrails for Specs 381-384 and inspect current compare semantic payload shape. +2. Add focused tests for false-green/false-red evidence readiness cases before changing runtime code. +3. Create or extend a baseline readiness derivation over Spec 383 compare semantics and active `provider_resource_bindings`. +4. Update `BaselineDriftPostureSource` to use the derived readiness detail and populate summary/fingerprint payloads with safe counts and source IDs. +5. Update `EvidenceCompletenessEvaluator` or its callers only if existing `complete/partial/missing/stale` cannot express blockers/limitations without losing detail. +6. Update Environment Review readiness/composition so baseline blockers/limitations become precise publication blockers, limitation states, and next actions. +7. Update Review Pack readiness/guidance/disclosure so customer-ready, published-with-limitations, internal-only, blocked/export-not-ready, stale, and failed states reflect baseline readiness. +8. Update rendered/customer-facing copy to use safe limitation wording and hide raw provider/internal details. +9. Update affected UI coverage page reports or record checked no-new-route/no-archetype notes. +10. Run focused unit/feature/browser validation, Pint, and diff check. + +## Domain And Data Model Implications + +- `OperationRun` compare payloads remain execution/proof truth. +- `provider_resource_bindings` remains durable decision truth. +- Evidence readiness details should be derived and stored only as part of existing evidence item summary/fingerprint payloads where needed. +- Environment Review blockers should remain derived from sections/evidence/review summary, not a new persisted blocker table. +- Review Pack output readiness remains derived through existing support helpers. +- No new migration, index, queue name, scheduler entry, route, panel provider, or storage path is planned. +- If implementation proves a new persisted field/table/index is required, stop and update spec/plan/tasks before adding it. + +## Readiness Mapping Rules + +| Input truth | Evidence/Review output behavior | +|---|---| +| Trusted no drift | complete/verified; customer-safe if all other required dimensions pass | +| Trusted drift | complete with findings; customer-visible finding where profile allows; not a blocker by itself | +| Unresolved required identity | action-required blocker; link to Baseline Subject Resolution | +| Missing local evidence | missing evidence or refresh blocker; not provider drift | +| Missing provider resource with trusted identity | governance finding/drift or missing-resource issue; may be customer-ready with finding | +| Unsupported required coverage | blocker unless accepted or profile allows disclosed limitation | +| Inventory-only/foundation-only coverage | limitation; never verified no drift | +| Accepted limitation | published-with-limitations when profile allows; never verified no drift | +| Excluded non-governed subject | excluded from governed claims; not counted as pass | +| Compare failed/coverage unproven | blocked/internal-only with rerun or investigate guidance; use existing output state plus failed reason/limitation code unless a narrow helper extension is justified before implementation | +| Stale source | stale/refresh guidance; use existing output state plus stale reason/limitation code unless a narrow helper extension is justified before implementation | + +Default output-state strategy: do not introduce a new public readiness state family for stale/failed by default. Preserve distinct behavior through existing Review Pack output states, `primary_reason`, limitation codes, disclosure output, and next-action guidance unless the existing helpers cannot represent the consequence without ambiguity; if so, stop and update spec/plan/tasks before adding constants. + +## UI / Filament Implications + +- Filament v5 and Livewire v4.0+ compliance is required; project currently uses Filament 5.2.1 and Livewire 4.1.4. +- Provider registration remains unchanged in `apps/platform/bootstrap/providers.php`; no new panel provider is planned. +- No new globally searchable Filament Resource is planned. Existing resource global search behavior must remain tenant-safe. +- No new destructive/high-impact action is planned. Existing actions keep `->action(...)`, confirmation where applicable, authorization, audit, and tests. +- No new public readiness state family is planned by default. Stale and failed baseline readiness should map through existing output states with explicit reason/limitation codes unless this plan is updated first. +- No new Filament assets or heavy frontend assets are planned. Normal deploy can keep existing `cd apps/platform && php artisan filament:assets` behavior only if assets are registered elsewhere. +- Customer-safe output must avoid raw IDs, internal enum names, canonical keys, binding internals, and raw JSON. + +## Implementation Phases + +### Phase 1 - Dependency and Payload Discovery + +Verify Specs 381-384 are completed, inspect current Spec 383 semantic payload keys, inspect Spec 384 binding decision modes, and confirm current evidence/review/pack readiness helpers. + +### Phase 2 - Baseline Readiness Unit Coverage + +Add tests for trusted no drift, trusted drift, unresolved identity, missing local evidence, missing provider resource, unsupported coverage, inventory-only coverage, accepted limitation, exclusion, compare failed, stale, and zero-findings-without-trusted-compare. + +### Phase 3 - Evidence Integration + +Implement the bounded readiness derivation and update `BaselineDriftPostureSource` plus evidence completeness/detail payloads. Keep source IDs safe and deterministic. + +### Phase 4 - Environment Review Integration + +Feed baseline readiness details into `EnvironmentReviewReadinessGate` and `EnvironmentReviewComposer` so blockers, limitations, and next actions become specific without adding workflow/task entities. + +### Phase 5 - Review Pack Output Integration + +Update `ReviewPackOutputReadiness`, `ReviewPackOutputResolutionGuidance`, `ReportDisclosurePolicy`, and rendered/customer workspace consumers to use the same baseline readiness details. + +### Phase 6 - UI Coverage and Customer Safety + +Update affected page reports or no-new-route notes, add customer-safe rendered-output tests, and run browser smoke for the changed customer/operator readiness rendering unless the implementation updates spec/plan/tasks first to prove no rendered presentation changed. + +### Phase 7 - Validation and Close-Out + +Run targeted tests, customer-facing readiness browser smoke, Pint, diff check, and record implementation close-out with explicit Filament/Livewire/global-search/actions/assets/testing/deploy impact. + +## Risk Controls + +- Stop if implementation needs a new table, durable readiness entity, new route, panel provider, capability family, provider call, workflow/approval engine, or report/PDF runtime changes. +- Stop if old payload compatibility readers seem required; pre-production posture rejects them unless this spec is updated. +- Keep readiness mapping provider-neutral and derived from Spec 383/384 truth. +- Keep diagnostics secondary and customer output sanitized. +- Add tests before broadening shared helpers. +- Use existing disclosure/profile helpers before local copy/mapping. + +## Rollout And Deployment Considerations + +- Staging validation is required because customer-safe readiness/output semantics change. +- No environment variables, migrations, queue names, scheduler entries, storage volumes, reverse proxy changes, route changes, panel provider changes, or asset build changes are planned. +- Queue workers should be restarted during normal Laravel deployment so evidence/review/pack jobs use current code. +- `filament:assets` remains the normal Filament deploy step only if registered assets exist; this spec does not plan new assets. +- Existing local/dev evidence snapshots, reviews, and review packs may be regenerated instead of compatibility-mapped. + +## Complexity Tracking + +| Potential complexity | Why needed | Simpler alternative rejected because | +|---|---|---| +| Bounded baseline readiness mapper/helper | Evidence, Review, and Review Pack need one interpretation of Spec 383/384 truth | Page-local labels would preserve duplicate truth and false-green/false-red risk | +| Derived blocker/limitation detail payload | Review and pack output need actionable guidance and customer-safe limitation summaries | `complete/partial/missing/stale` alone cannot distinguish identity blockers, limitations, findings, and missing evidence | +| Customer-safe disclosure updates | Customer output must explain limitations without leaking proof internals | Internal diagnostics cannot be reused directly for customer-ready output | + +## Proportionality Review + +- **Current operator problem**: Evidence/review output can misstate baseline posture after compare and resolution truth are known. +- **Existing structure is insufficient because**: downstream surfaces infer readiness separately from findings, evidence state, review sections, export status, and generic limitations. +- **Narrowest correct implementation**: one derived readiness detail consumed by existing evidence/review/pack helpers. +- **Ownership cost created**: mapper/helper tests, cross-surface regression tests, customer-safe copy checks, and UI coverage notes. +- **Alternative intentionally rejected**: update only the Customer Review Workspace label. That would leave Evidence Snapshot, Environment Review, Review Pack detail, and rendered output inconsistent. +- **Release truth**: current-release truth after completed Specs 381-384. + +## Filament v5 Implementation Report + +- **Livewire v4.0+ compliance**: confirmed. Project uses Livewire 4.1.4 and this spec did not add Livewire v3 references. +- **Provider registration location**: unchanged. Laravel panel providers remain in `apps/platform/bootstrap/providers.php`; no new panel provider was added. +- **Global search**: no new Filament Resource was added, so no new globally searchable resource contract was introduced. +- **Destructive/high-impact actions**: no new destructive or high-impact Filament action was added. Existing publish/export/download/refresh actions keep their existing confirmation, authorization, audit, notification, and test responsibilities. +- **Asset strategy**: no new Filament, Vite, or heavy frontend asset was added. No Spec 385-specific `filament:assets` or asset-build deploy step is required beyond normal deploy behavior. +- **Testing result**: focused Spec 385 unit, feature, Filament/Livewire, and browser coverage passed with 36 tests and 160 assertions. `php vendor/bin/pint --dirty` and `git diff --check` were also run successfully. +- **Deployment impact**: no new environment variables, migrations, persisted states/entities/enums, provider/Graph calls, scheduler entries, queue names, storage volumes, reverse proxy changes, routes, or asset steps. Normal code deploy plus queue worker restart remains sufficient. diff --git a/specs/385-evidence-review-readiness/spec.md b/specs/385-evidence-review-readiness/spec.md new file mode 100644 index 00000000..402fe635 --- /dev/null +++ b/specs/385-evidence-review-readiness/spec.md @@ -0,0 +1,467 @@ +# Feature Specification: Spec 385 - Evidence and Review Readiness Integration v1 + +**Feature Branch**: `385-evidence-review-readiness` +**Created**: 2026-06-17 +**Status**: Implemented / Manual review close-out recorded +**Input**: User-provided draft candidate "Spec 385 - Evidence & Review Readiness Integration v1" from `/Users/ahmeddarrazi/.codex/attachments/ebb66191-6453-4e97-b245-eb040b3857d1/pasted-text.txt`. + +## Repo-Truth Adjustment + +The user supplied a complete numbered draft for Spec 385. Repo truth confirms the intended predecessor chain exists and is implemented or closed out: + +- `specs/381-provider-resource-identity-binding/` +- `specs/382-baseline-matching-canonicalization/` +- `specs/383-baseline-result-semantics/` +- `specs/384-baseline-subject-resolution-ui/` + +Those completed specs are dependency context only. This Spec 385 package does not modify their historical close-out notes, validation records, completed tasks, or smoke evidence. + +Spec 385 narrows the draft to one implementation-ready runtime and presentation slice: + +- consume Spec 383 structured baseline compare semantics and Spec 384 operator decisions in Evidence Snapshot completeness; +- make `BaselineDriftPostureSource` distinguish trusted no drift, trusted drift, unresolved identity, missing local evidence, missing provider resource, unsupported coverage, accepted limitations, exclusions, stale, and failed states; +- carry that baseline readiness into Environment Review readiness, publication blockers, and guidance; +- carry that baseline readiness into Review Pack output readiness, disclosure policy, customer-safe limitation summaries, and internal technical detail; +- keep customer-facing output safe and avoid false green or false red claims; +- avoid new matching, new compare semantics, new resolution UI, new report/PDF runtime work, new workflow engine, and legacy compatibility mappers. + +## Candidate Selection Gate + +- **Selected candidate**: Spec 385 - Evidence and Review Readiness Integration v1. +- **Source**: Direct user-provided candidate attachment. It is the fifth item in the 381-385 baseline identity/readiness sequence. +- **Why selected**: Specs 381-384 are present and completed, so the next bounded value is to make Evidence, Environment Review, and Review Pack readiness consume the new compare and operator-decision truth instead of old incomplete heuristics. +- **Roadmap relationship**: Supports R2 Evidence & Exception Workflows, customer-safe review consumption, provider-neutral baseline drift trust, and governance output correctness. It does not reopen the active candidate queue, which currently has no automatic next-best-prep target. +- **Close alternatives deferred**: + - Management Report PDF runtime validation remains tied to Specs 378-379 and is out of scope. + - Governance artifact lifecycle retention runtime remains manual-promotion backlog, not an automatic prep target. + - Provider readiness onboarding productization remains optional manual-promotion backlog. + - Cross-domain indicator runtime follow-through remains a broader guardrail lane and must not be hidden inside this spec. + - New resolution UI, matching, and compare semantics are already covered by Specs 382-384 and must not be reimplemented here. +- **Completed-spec guardrail result**: + - Specs 381, 382, 383, and 384 all contain implementation close-out or validation signals and are treated as completed dependency context only. + - Adjacent review/output specs such as `specs/347-review-pack-output-contract-readiness-semantics/`, `specs/349-review-output-resolution-guidance/`, `specs/351-review-output-resolve-actions/`, `specs/357-report-profile-disclosure-policy/`, and `specs/379-management-report-pdf-runtime/` are context only and must not be rewritten by this prep. + - No existing `specs/385-*` package or `385-*` local/remote branch was found before the Spec Kit create script ran. +- **Smallest viable implementation slice**: Derive baseline evidence readiness from existing compare semantics and binding decisions, then feed the derived blocker/limitation/detail payload into existing Evidence Snapshot, Environment Review, and Review Pack readiness paths. +- **Gate result**: PASS. The candidate is directly provided by the user, is not already specced or completed, follows completed dependencies, aligns with roadmap trust/customer-readiness priorities, and is bounded enough for a later implementation loop. + +## Spec Candidate Check *(mandatory - SPEC-GATE-001)* + +- **Problem**: Evidence and review output can still imply a stronger or weaker baseline posture than the new compare and subject-resolution truth supports. +- **Today's failure**: A review or customer package can treat zero findings as verified no drift even when compare identity is unresolved, treat accepted limitations as success, treat exclusions as compliant, confuse missing local evidence with provider drift, or keep resolved provider defaults as false blockers. +- **User-visible improvement**: Operators and customer-facing reviewers see honest readiness: trusted findings can be published, accepted limitations are disclosed, unresolved governed blockers stop customer-safe claims, and specific guidance points to subject resolution, evidence refresh, or review limitation handling. +- **Smallest enterprise-capable version**: Add or extend a bounded baseline evidence readiness mapper, update baseline evidence collection, update existing review readiness/publication blocker logic, update existing Review Pack readiness/guidance/disclosure mapping, and add focused tests and smoke coverage for affected customer/operator surfaces. +- **Explicit non-goals**: No new provider identity foundation, no matching pipeline changes, no compare result taxonomy rebuild, no Baseline Subject Resolution UI changes beyond linking to the existing page, no generic workflow engine, no approval workflow, no broad Governance Inbox, no customer portal redesign, no Management Report/PDF runtime validation, no old payload compatibility readers, and no new durable decision table. +- **Permanent complexity imported**: A bounded mapper or extension to existing readiness helpers, derived readiness/detail payloads, possible derived readiness constants if existing ones are insufficient, tests across evidence/review/review-pack surfaces, and UI copy/guidance updates. No new primary table, route family, panel provider, provider client, or queue family is approved. +- **Why now**: Specs 381-384 made identity, matching, compare semantics, and operator decisions repo-real. Leaving Evidence and Review readiness on older heuristics preserves the false-green/false-red gap at the customer output boundary. +- **Why not local**: Patching only one output label would leave `BaselineDriftPostureSource`, Evidence Snapshot completeness, Environment Review blockers, Review Pack output readiness, disclosure policy, and customer-safe guidance able to disagree. +- **Approval class**: Core Enterprise. +- **Red flags triggered**: Derived readiness semantics, cross-surface output mapping, customer-safe presentation, and possible helper layer. Defense: this spec consumes existing truth, avoids new persistence, avoids new UI/workflow engines, reuses existing review-pack readiness/disclosure paths, and tests concrete false-green/false-red cases. +- **Score**: Nutzen: 2 | Dringlichkeit: 2 | Scope: 2 | Komplexitaet: 1 | Produktnaehe: 2 | Wiederverwendung: 2 | **Gesamt: 11/12** +- **Decision**: approve as a narrowed Core Enterprise readiness-integration slice. + +## Problem Statement + +TenantPilot can now produce structured baseline compare outcomes and operator decisions through Specs 383 and 384, but downstream Evidence and Review surfaces can still infer readiness from older, incomplete signals such as operation success, drift finding count, or generic evidence completeness. + +That creates two customer-safety risks: + +1. **False green**: output appears customer-ready or verified when identity, coverage, evidence, or compare trust is unresolved. +2. **False red**: output stays blocked when provider defaults, accepted limitations, exclusions, or trusted drift findings are validly classified and safe to disclose. + +Spec 385 makes baseline evidence readiness the bridge between technical compare truth and customer/operator output truth. + +## Business / Product Value + +- Prevents customer-facing no-drift claims unless identity, comparison, coverage, and required evidence are trusted. +- Lets operators publish with explicit limitations when a limitation is accepted or allowed by the report profile. +- Preserves trusted drift as a valid customer-visible finding rather than a publication failure by default. +- Makes publication blockers specific enough to act on: resolve subject identity, refresh evidence, run compare, accept/disclose limitation, or review unsupported scope. +- Keeps internal proof available without leaking raw provider internals into customer-safe output. + +## Primary Users / Operators + +- MSP or tenant operator preparing an Environment Review or Review Pack for customer consumption. +- Workspace manager responsible for baseline governance output quality. +- Support/platform operator diagnosing why Evidence or Review output is blocked, limited, stale, internal-only, or ready. +- Customer/auditor consuming customer-safe review output where limitation wording must be clear and non-technical. + +## Spec Scope Fields *(mandatory)* + +- **Scope**: tenant-owned evidence/review/output readiness inside established workspace and managed-environment boundaries. +- **Primary Routes**: + - existing Evidence Snapshot resource/detail and Evidence Overview surfaces; + - existing Environment Review resource/detail/register and Customer Review Workspace surfaces; + - existing Review Pack resource/detail/download/rendered output readiness surfaces; + - existing Baseline Subject Resolution page only as a linked next action, not as a changed decision UI. +- **Data Ownership**: + - `OperationRun` baseline compare context/result remains execution/proof truth. + - `provider_resource_bindings` remains durable operator decision truth. + - `EvidenceSnapshot` and `EvidenceSnapshotItem` remain evidence artifact truth. + - `EnvironmentReview` and `EnvironmentReviewSection` remain review composition truth. + - `ReviewPack` and `StoredReport` remain output artifact truth. + - Spec 385 readiness details are derived unless implementation proves a current-release source-of-truth need and updates this spec before adding persistence. +- **RBAC**: Existing workspace and managed-environment entitlement rules remain mandatory. Non-members receive deny-as-not-found. Entitled members missing view/export/publish capabilities receive the existing forbidden behavior. Customer-safe output must not reveal tenant/provider internals across workspace or environment boundaries. + +For canonical-view specs: + +- **Default filter behavior when tenant-context is active**: existing page-level `environment_id` filter behavior remains; no hidden `/admin/t` or retired tenant-panel context is revived. +- **Explicit entitlement checks preventing cross-tenant leakage**: all evidence, review, pack, stored report, operation, and subject-resolution links must resolve through existing scoped routes/policies before data is rendered. + +## UI Surface Impact *(mandatory - UI-COV-001)* + +Does this spec add, remove, rename, or materially change any reachable UI surface? + +- [ ] No UI surface impact +- [x] Existing page changed +- [ ] New page/route added +- [ ] Navigation changed +- [ ] Filament panel/provider surface changed +- [ ] New modal/drawer/wizard/action added +- [ ] New table/form/state added +- [x] Customer-facing surface changed +- [ ] Dangerous action changed +- [x] Status/evidence/review presentation changed +- [ ] Workspace/environment context presentation changed + +Clarification: no new table, form, route, modal, wizard, panel provider, or action is planned. Derived readiness reason/state values may be narrowly extended only if existing helpers cannot preserve the required stale/failed/blocker/limitation behavior; any public state-family expansion must update this spec/plan/tasks before implementation. + +## UI/Productization Coverage *(mandatory when UI Surface Impact is not "No UI surface impact")* + +- **Route/page/surface**: Evidence Snapshot detail/Evidence Overview, Environment Review detail/register, Customer Review Workspace, Review Pack detail/download/rendered output, and baseline readiness/guidance sections within those existing surfaces. +- **Current or new page archetype**: existing evidence/review/output strategic and domain pattern surfaces; no new route archetype. +- **Design depth**: Strategic Surface for customer review/output readiness; Domain Pattern Surface for evidence and review detail readiness. +- **Repo-truth level**: repo-verified existing runtime surfaces. +- **Existing pattern reused**: existing `ReviewPackOutputReadiness`, `ReviewPackOutputResolutionGuidance`, `ReportDisclosurePolicy`, Environment Review readiness, Evidence Snapshot completeness, `BadgeCatalog`/badge domains, and existing customer-safe disclosure patterns. +- **New pattern required**: no new broad pattern. A bounded baseline readiness mapper or extension is allowed only to align existing surfaces. +- **Screenshot required**: yes. This spec changes customer/operator-visible readiness presentation, so implementation must include focused browser-smoke/screenshot evidence for the affected customer-safe review/output readiness unless the implementation updates this spec/plan first to prove no rendered presentation changed. +- **Page audit required**: implementation must update relevant existing page reports or record a checked no-new-route/no-archetype note, especially `ui-006-customer-review-workspace.md`, `ui-011-reviews.md`, `ui-042-review-pack-detail.md`, and `ui-046-evidence-snapshot-detail.md` where affected. +- **Customer-safe review required**: yes. This spec directly changes customer-ready, published-with-limitations, internal-only, and publication-blocked semantics. +- **Dangerous-action review required**: no new destructive/high-impact action is expected. Existing publish/export/download actions keep existing authorization and confirmation rules. +- **Coverage files updated or explicitly not needed**: + - [ ] `docs/ui-ux-enterprise-audit/route-inventory.md` + - [ ] `docs/ui-ux-enterprise-audit/design-coverage-matrix.md` + - [x] `docs/ui-ux-enterprise-audit/page-reports/...` + - [ ] `docs/ui-ux-enterprise-audit/strategic-surfaces.md` + - [ ] `docs/ui-ux-enterprise-audit/grouped-follow-up-candidates.md` + - [ ] `docs/ui-ux-enterprise-audit/unresolved-pages.md` + - [ ] `N/A - no reachable UI surface impact` +- **No-impact rationale when applicable**: N/A. + +## Cross-Cutting / Shared Pattern Reuse *(mandatory)* + +- **Cross-cutting feature?**: yes. +- **Interaction class(es)**: status messaging, readiness labels, publication blockers, action links, evidence/report viewers, customer-safe disclosure, internal technical detail, and badge/status presentation. +- **Systems touched**: + - `BaselineDriftPostureSource` + - `EvidenceCompletenessEvaluator` + - Evidence Snapshot creation/detail rendering + - `EnvironmentReviewReadinessGate` + - `EnvironmentReviewComposer` + - `ReviewPackOutputReadiness` + - `ReviewPackOutputResolutionGuidance` + - `ReportDisclosurePolicy` + - Customer Review Workspace + - Review Pack render/export/download support where readiness is displayed + - existing Baseline Subject Resolution links only as next-action targets +- **Existing pattern(s) to extend**: existing evidence completeness states, existing review readiness blockers, existing review-pack readiness/guidance/disclosure helpers, existing badge catalog/renderers, existing OperationRun/source-proof link helpers. +- **Shared contract / presenter / builder / renderer to reuse**: prefer extending `ReviewPackOutputReadiness`, `ReviewPackOutputResolutionGuidance`, `ReportDisclosurePolicy`, `EnvironmentReviewReadinessGate`, `EvidenceCompletenessEvaluator`, and badge helpers before adding local mappings. +- **Why the existing shared path is sufficient or insufficient**: Existing paths already own review/output readiness and disclosure. They are insufficient today because baseline compare semantics and subject-resolution decisions are not yet first-class inputs to their readiness calculations. +- **Allowed deviation and why**: one bounded baseline readiness mapper or support helper is allowed if it prevents duplicate interpretation across Evidence, Review, and Review Pack. It must remain baseline-readiness-owned and must not become a generic workflow/report engine. +- **Consistency impact**: Evidence completeness, review blockers, review-pack state, limitation summaries, customer-safe disclosure, and internal diagnostics must describe the same baseline truth. +- **Review focus**: no parallel readiness dialect, no customer leakage of raw provider IDs/canonical keys/OperationRun JSON, no false no-drift, no generic task/workflow layer. + +## OperationRun UX Impact *(mandatory)* + +- **Touches OperationRun start/completion/link UX?**: yes for source-proof and next-action links only; no new operation start/completion semantics. +- **Shared OperationRun UX contract/layer reused**: existing OperationRun proof/link helpers and existing baseline compare start UX for any "run compare again" or "open operation" action. +- **Delegated start/completion UX behaviors**: queued toast, run link, browser event, dedupe messaging, and terminal notifications remain delegated to existing compare/evidence/review operation paths. +- **Local surface-owned behavior that remains**: readiness explanation, limitation summary, blocker guidance, and link selection. +- **Queued DB-notification policy**: no new queued DB notifications. +- **Terminal notification path**: unchanged. +- **Exception required?**: none. + +Spec 385 may add source operation IDs and counts to derived evidence/readiness payloads, but it must not transition `OperationRun.status` or `OperationRun.outcome` outside existing services. + +## Provider Boundary / Platform Core Check *(mandatory)* + +- **Shared provider/platform boundary touched?**: yes. +- **Boundary classification**: platform-core for readiness, blockers, limitation, evidence completeness, publication state, and customer-safe wording; provider-owned for raw provider identifiers and resource descriptors that remain proof/diagnostics only. +- **Seams affected**: baseline compare semantic payloads, provider resource binding decisions, evidence readiness details, review blockers, review-pack disclosure, guidance links, and operator/customer vocabulary. +- **Neutral platform terms preserved or introduced**: baseline subject, provider resource, governed subject, trusted compare, accepted limitation, excluded subject, missing evidence, missing provider resource, unsupported coverage, publication blocker, internal-only, customer-ready, published with limitations. +- **Provider-specific semantics retained and why**: provider key/type/id and canonical subject key may remain in internal technical details because they prove source identity. They must not appear in customer-safe output or primary operator summary unless already redacted/truncated and explicitly internal. +- **Why this does not deepen provider coupling accidentally**: readiness maps Spec 383 provider-neutral reasons and Spec 384 provider-resource decisions; it does not branch on Microsoft/Intune display labels, Graph endpoints, or raw provider payload shapes. +- **Follow-up path**: document-in-feature for contained profile/copy decisions; follow-up-spec for limitation expiry, approval workflow, external portal, or broader lifecycle retention. + +## UI / Surface Guardrail Impact + +| Surface / Change | Operator-facing surface change? | Native vs Custom | Shared-Family Relevance | State Layers Touched | Exception Needed? | Low-Impact / N/A Note | +|---|---|---|---|---|---|---| +| Evidence Snapshot baseline completeness/readiness | yes | existing Filament resource/detail and badge patterns | evidence completeness, source proof, status messaging | detail, payload | no | Existing routes only | +| Environment Review readiness/publication blockers | yes | existing Filament resource/detail and review services | review readiness, blocker guidance, action links | detail, summary payload | no | Existing routes only | +| Customer Review Workspace readiness/guidance | yes | existing customer-safe review surface | customer-safe disclosure, next action, evidence basis | page, environment filter payload | no | Existing route only | +| Review Pack output readiness/disclosure | yes | existing resource/detail/rendered output helpers | output readiness, limitation summaries, report profile | detail, artifact payload | no | Existing routes/output artifacts only | +| Baseline Subject Resolution link target | no material surface change | existing Filament page | next-action link only | URL/query | no | Link target only; do not change Spec 384 UI unless implementation finds a broken link contract | + +## Decision-First Surface Role + +| Surface | Decision Role | Human-in-the-loop Moment | Immediately Visible for First Decision | On-Demand Detail / Evidence | Why This Is Primary or Why Not | Workflow Alignment | Attention-load Reduction | +|---|---|---|---|---|---|---|---| +| Customer Review Workspace baseline readiness | Primary Decision Surface | Operator decides whether customer output is ready, limited, internal-only, or blocked | readiness state, top blocker/limitation, customer-safe summary, one next action | evidence snapshot, review sections, source compare run, subject resolution link | Primary because customer handoff happens here | follows review publication/handoff workflow | avoids reading raw compare run payloads before deciding | +| Environment Review readiness | Secondary Context | Operator decides whether a review can be published/exported | blockers, required section/evidence state, baseline readiness impact | evidence snapshot detail, operation proof, section details | Secondary because it governs review lifecycle | supports publish/export decision | turns vague blockers into specific actions | +| Evidence Snapshot detail | Tertiary Evidence / Diagnostics | Operator verifies the evidence basis behind readiness | baseline completeness state, counts, source run ID, measured/freshness timestamps | structured reason counts and source proof | Not primary because it proves the output decision | supports evidence investigation | keeps proof out of customer default output | +| Review Pack detail/rendered output | Secondary Context | Operator/customer verifies package state and limitations | customer-safe state, limitation summary, download qualification | internal technical appendix where profile allows | Secondary because the workspace/review owns the decision | supports artifact handoff | makes limitations explicit without duplicate status blocks | + +## Audience-Aware Disclosure + +| Surface | Audience Modes In Scope | Decision-First Default-Visible Content | Operator Diagnostics | Support / Raw Evidence | One Dominant Next Action | Hidden / Gated By Default | Duplicate-Truth Prevention | +|---|---|---|---|---|---|---|---| +| Customer Review Workspace | customer-safe review consumer, operator-MSP, support-platform | state, reason, impact, limitation summary, qualified download/review action | counts by blocker/limitation/finding, source evidence, source compare run | raw provider IDs, canonical keys, raw OperationRun JSON | resolve blocker, review limitations, or download qualified pack | raw/provider/support detail collapsed or capability-gated | top state appears once; lower sections add proof only | +| Environment Review detail | operator-MSP, support-platform | publish/export readiness, specific blockers, refresh/resolve guidance | section details, evidence details, source operation links | raw section payloads/support diagnostics | resolve review blocker | raw details secondary | blockers share the same derived baseline readiness source | +| Review Pack output | customer-safe or internal profile reader | package readiness, allowed limitations, non-certification/evidence disclosure | internal appendix where allowed | provider IDs/canonical keys/raw JSON omitted from customer profile | review limitations or download package | internal technical details hidden from customer output | limitation wording aligns with readiness state | + +## UI/UX Surface Classification + +| Surface | Action Surface Class | Surface Type | Likely Next Operator Action | Primary Inspect/Open Model | Row Click | Secondary Actions Placement | Destructive Actions Placement | Canonical Collection Route | Canonical Detail Route | Scope Signals | Canonical Noun | Critical Truth Visible by Default | Exception Type / Justification | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| Customer Review Workspace | Utility / Workspace Decision | Read-only strategic review hub | resolve blocker, review limitations, or download qualified pack | explicit primary action in readiness block | N/A | secondary proof/action links in detail panels | none in scope | `/admin/reviews/workspace` | existing review/pack/evidence routes | workspace shell and environment filter | Customer review output | readiness, blocker/limitation, evidence basis | none | +| Environment Review detail | Utility / Review Detail | Lifecycle/detail surface | resolve publication blocker or export | existing detail page | current behavior only | proof/action links in sections | existing dangerous actions unchanged | existing Environment Review collection | existing Environment Review detail | workspace/environment context | Environment review | readiness/blockers | none | +| Evidence Snapshot detail | Utility / Evidence Detail | Evidence/proof surface | inspect evidence basis | existing detail page | current behavior only | source operation and diagnostics links | none in scope | existing Evidence Snapshot collection | existing Evidence Snapshot detail | workspace/environment context | Evidence snapshot | completeness and source proof | none | +| Review Pack detail/output | Utility / Artifact Detail | Output artifact proof | review limitations or download | existing detail/download/rendered output | current behavior only | secondary proof/download links | existing regenerate/expire actions out of scope | existing Review Pack collection | existing Review Pack detail | workspace/environment/artifact status | Review pack | output readiness and limitation summary | none | + +## UI Action Matrix *(mandatory when Filament is changed)* + +Spec 385 does not add a new Filament Resource, RelationManager, Page, route, navigation entry, modal, wizard, destructive action, or bulk action. It may modify readiness labels, badges, summaries, and guidance on existing Filament/Blade surfaces. The Action Surface Contract is satisfied when implementation preserves the existing inspect/open model, action placement, RBAC enforcement, confirmation behavior, and audit behavior for each affected surface. + +| Surface | Location | Header Actions | Inspect Affordance (List/Table) | Row Actions (max 2 visible) | Bulk Actions (grouped) | Empty-State CTA(s) | View Header Actions | Create/Edit Save+Cancel | Audit log? | Notes / Exemptions | +|---|---|---|---|---|---|---|---|---|---|---| +| Evidence Snapshot detail/readiness | `apps/platform/app/Filament/Resources/EvidenceSnapshotResource.php` and pages | Existing actions only; no new Spec 385 header action planned | Existing resource inspect model unchanged | Existing row actions unchanged | Existing bulk behavior unchanged | Existing empty states unchanged | Existing detail actions unchanged | N/A | Existing audit behavior unchanged | Readiness presentation only; no action-surface exemption planned; no raw provider IDs, DB IDs, internal enum names, binding internals, or raw OperationRun JSON in customer-safe output | +| Environment Review detail/readiness | `apps/platform/app/Filament/Resources/EnvironmentReviewResource.php` and pages | Existing publish/export/review actions only | Existing resource inspect model unchanged | Existing row actions unchanged | Existing bulk behavior unchanged | Existing empty states unchanged | Existing detail actions unchanged | Existing create/edit behavior unchanged if untouched | Existing audit behavior unchanged | Spec 385 may change blocker/guidance text only; one dominant next action should remain resolve subjects, refresh evidence, rerun compare, or review limitations | +| Customer Review Workspace readiness | `apps/platform/app/Filament/Pages/Reviews/CustomerReviewWorkspace.php` and Blade view | Existing page actions only | N/A | N/A | N/A | Existing empty states unchanged unless readiness wording changes | Existing links/download affordances only | N/A | Existing audit/download behavior unchanged | One dominant next action must remain; no new mutation; customer-facing stale/failed/blocker/limitation explanations must remain safe and non-technical | +| Review Pack detail/output readiness | `apps/platform/app/Filament/Resources/ReviewPackResource.php`, `ReviewPackService`, and rendered output helpers | Existing generate/download/render actions only | Existing resource inspect model unchanged | Existing row actions unchanged | Existing bulk behavior unchanged | Existing empty states unchanged | Existing detail actions unchanged | N/A | Existing generate/download audit behavior unchanged | Existing dangerous/high-impact actions stay in their current guarded paths; stale/failed may map to existing output states with explicit reason/limitation codes unless a narrow helper extension is recorded before implementation | + +UI-FIL-001 remains satisfied by using existing Filament resources/pages and shared badge/disclosure helpers. Any implementation that adds a new visible action, changes action placement, adds bulk actions, or changes dangerous-action behavior must update this matrix, tasks, and the implementation close-out before merge. + +## Operator Surface Contract + +| Surface | Primary Persona | Decision / Operator Action Supported | Surface Type | Primary Operator Question | Default-visible Information | Diagnostics-only Information | Status Dimensions Used | Mutation Scope | Primary Actions | Dangerous Actions | +|---|---|---|---|---|---|---|---|---|---|---| +| Customer Review Workspace | MSP/workspace operator | decide whether customer output can be shared, shared with limitations, kept internal, or blocked | workspace review hub | Can I safely share this review output, and what blocks it? | readiness state, reason, limitation summary, evidence basis, one next action | source compare run, subject resolution counts, raw proof links | evidence completeness, baseline readiness, review publication, output readiness | none by default | resolve blocker, review limitations, download qualified pack | none in scope | +| Environment Review detail | MSP/workspace operator | decide whether review can publish/export | review detail | What must be fixed before this review is ready? | blockers, required dimensions, section/evidence state | source proof and section diagnostics | review lifecycle, evidence completeness, baseline readiness | existing review lifecycle actions only | resolve blocker/open evidence/export if allowed | existing actions unchanged | +| Review Pack output | MSP/customer-safe reader | consume package with correct limitation boundary | output artifact | What does this package prove, and what does it not prove? | customer-safe readiness, disclosure, limitation text | internal appendix where profile allows | artifact state, disclosure, evidence basis, baseline readiness | none | download/review package | none in scope | + +## Proportionality Review *(mandatory when structural complexity is introduced)* + +- **New source of truth?**: no. Readiness is derived from existing compare, binding, evidence, review, and pack truth. +- **New persisted entity/table/artifact?**: no new primary table or artifact is approved. Existing evidence/review/pack payloads may carry derived detail if needed. +- **New abstraction?**: maybe one bounded baseline evidence readiness mapper or extension to existing helpers. +- **New enum/state/reason family?**: no new persisted family by default. Derived readiness constants may be added only if existing values cannot represent blocker/limitation/internal/customer-ready behavior without ambiguity. +- **New cross-domain UI framework/taxonomy?**: no. +- **Current operator problem**: customer and operator readiness can misstate baseline posture even though upstream compare/decision truth is now structured. +- **Existing structure is insufficient because**: each downstream path can infer readiness differently from operation success, finding counts, section completeness, export availability, or old evidence state. +- **Narrowest correct implementation**: one shared baseline readiness derivation consumed by existing Evidence, Review, and Review Pack helpers, with presentation using existing UI/disclosure patterns. +- **Ownership cost**: mapper/helper ownership, cross-surface tests, customer-safe copy review, and additional regression coverage for false-green/false-red cases. +- **Alternative intentionally rejected**: page-local label patches. They would leave Evidence, Review, Review Pack, and customer output semantics able to disagree. +- **Release truth**: current-release truth after completed Specs 381-384. + +### Compatibility posture + +This feature assumes a pre-production environment. + +Backward compatibility readers for old baseline compare payloads, old OperationRun context shapes, old reason codes, old display-name readiness interpretation, or old local/dev evidence/review/pack data are out of scope. + +## Testing / Lane / Runtime Impact *(mandatory for runtime behavior changes)* + +- **Test purpose / classification**: Unit for readiness mapping; Feature for evidence/review/review-pack integration; Filament/Livewire Feature for changed surfaces; Browser for customer/output smoke because this spec changes customer-facing readiness presentation. +- **Validation lane(s)**: fast-feedback, confidence, browser; PostgreSQL only if migrations/indexes/constraints are introduced after spec update. +- **Why this classification and these lanes are sufficient**: The main risk is deterministic mapping and existing DB-backed presentation, with limited browser smoke for customer-safe output/readiness rendering. +- **New or expanded test families**: focused baseline readiness tests under existing evidence/review/review-pack families; no new heavy-governance family by default. +- **Fixture / helper cost impact**: reuse existing baseline compare, subject resolution, evidence snapshot, environment review, and review pack fixtures. Keep any new fixture local and explicit. +- **Heavy-family visibility / justification**: none expected. +- **Special surface test profile**: shared-detail-family for readiness/detail output; standard-native-filament relief for existing Filament resources unless layout/action hierarchy changes. +- **Standard-native relief or required special coverage**: use ordinary feature coverage for existing native surfaces; browser smoke is required for changed customer-facing readiness presentation. +- **Reviewer handoff**: verify lane fit, no hidden browser/heavy-governance expansion, no raw provider leakage, no old payload compatibility, and no false-green/false-red regressions. +- **Budget / baseline / trend impact**: none expected; document-in-feature if browser fixture setup becomes materially heavier. +- **Escalation needed**: document-in-feature for contained disclosure/profile decisions; follow-up-spec for limitation expiry, approval workflow, external portal, or lifecycle retention. +- **Active feature PR close-out entry**: Evidence and Review Readiness Integration. +- **Planned validation commands**: + - `cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Unit/Support/Baselines tests/Unit/Evidence tests/Unit/Support/ReviewPacks` + - `cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Evidence/BaselineDriftPostureSourceTest.php tests/Feature/EnvironmentReview tests/Feature/ReviewPack` + - `cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Filament/Spec347CustomerReviewWorkspaceOutputReadinessTest.php tests/Feature/Filament/Spec349CustomerReviewWorkspaceOutputGuidanceTest.php` + - `cd apps/platform && ./vendor/bin/sail php vendor/bin/pest tests/Browser/Spec347ReviewPackOutputReadinessSmokeTest.php` or a new focused Spec 385 browser smoke covering changed customer-facing readiness rendering. + - `cd apps/platform && ./vendor/bin/sail bin pint --dirty --format agent` + - `git diff --check` + +## User Scenarios & Testing *(mandatory)* + +### User Story 1 - Evidence reflects trusted baseline posture (Priority: P1) + +As an MSP operator, I need Evidence Snapshot baseline completeness to distinguish trusted no drift, trusted drift, blockers, limitations, missing evidence, stale data, and failed compare, so review output does not rely on raw finding count alone. + +**Why this priority**: Evidence is the source basis for downstream review and pack readiness. If it is wrong, every customer-facing output can be wrong. + +**Independent Test**: Generate or evaluate baseline evidence from structured compare semantics and active subject-resolution decisions, then assert the evidence item state, summary payload, and fingerprint payload classify blockers and limitations correctly. + +**Acceptance Scenarios**: + +1. **Given** a completed trusted baseline compare with resolved identity and no drift, **When** baseline evidence is collected, **Then** the evidence dimension is complete and records verified no-drift counts. +2. **Given** a completed trusted baseline compare with drift findings, **When** baseline evidence is collected, **Then** the evidence dimension is complete with findings and does not become missing or publication-blocked solely because drift exists. +3. **Given** unresolved identity in required governed scope, **When** baseline evidence is collected, **Then** the evidence dimension is partial/action-required or blocked according to existing state shape and records a subject-resolution next action. +4. **Given** missing local evidence, **When** baseline evidence is collected, **Then** the evidence dimension records missing evidence and does not describe it as provider drift. +5. **Given** accepted limitations or excluded non-governed subjects, **When** baseline evidence is collected, **Then** they are not counted as verified no drift or compliant pass. + +--- + +### User Story 2 - Review readiness blocks and limitations are precise (Priority: P1) + +As an operator preparing a review, I need Environment Review readiness to turn baseline evidence blockers into actionable publication guidance, so I know whether to resolve identity, refresh evidence, accept/disclose a limitation, or proceed with findings. + +**Why this priority**: Review publish/export decisions are where false-ready claims become customer risk. + +**Independent Test**: Compose or evaluate an Environment Review with baseline evidence detail payloads for blocker, limitation, trusted finding, and clean cases, then assert review status, blockers, section completeness, and guidance. + +**Acceptance Scenarios**: + +1. **Given** unresolved required baseline identity remains, **When** review readiness is evaluated, **Then** publication is blocked with guidance to open Baseline Subject Resolution. +2. **Given** accepted limitations are allowed by profile/disclosure policy, **When** review readiness is evaluated, **Then** the review can be published with limitations instead of falsely reporting verified no drift. +3. **Given** trusted drift findings exist with complete evidence, **When** review readiness is evaluated, **Then** drift is reported as a finding and does not block publication by itself. +4. **Given** required evidence is missing or compare failed, **When** review readiness is evaluated, **Then** the review is blocked or internal-only with a specific refresh/rerun action. + +--- + +### User Story 3 - Review Pack output is customer-safe and limitation-aware (Priority: P1) + +As an operator or customer-safe reviewer, I need Review Pack readiness and rendered output to explain what is customer-ready, limited, internal-only, or blocked without exposing raw provider internals, so the package can be shared safely. + +**Why this priority**: Review Pack output is the customer handoff boundary and must not overstate assurance or leak internal proof. + +**Independent Test**: Build Review Pack readiness from reviews containing baseline blockers/limitations and assert readiness state, limitation summaries, disclosure policy output, and hidden raw technical detail. + +**Acceptance Scenarios**: + +1. **Given** no blockers and complete required evidence, **When** Review Pack readiness is derived, **Then** it is customer-safe ready. +2. **Given** accepted/customer-disclosable limitations exist and no required blocker remains, **When** Review Pack readiness is derived, **Then** it is published with limitations and includes customer-safe limitation wording. +3. **Given** unresolved required identity or missing required evidence remains, **When** Review Pack readiness is derived, **Then** publication is blocked or export not ready with one dominant next action. +4. **Given** internal-only technical details exist, **When** customer-safe output is rendered, **Then** raw provider IDs, canonical subject keys, binding internals, internal enum names, and OperationRun JSON are absent. + +--- + +### User Story 4 - Internal proof remains useful without customer leakage (Priority: P2) + +As a support/platform operator, I need internal technical detail to retain source run, evidence, compare, and decision counts, so I can diagnose readiness without exposing those details to customer-safe output. + +**Why this priority**: Support diagnosis remains necessary, but it must not pollute customer-ready surfaces. + +**Independent Test**: Evaluate internal profile/readiness output and customer-safe profile output from the same evidence state, then assert internal profile includes safe technical counts while customer-safe profile omits raw identifiers. + +**Acceptance Scenarios**: + +1. **Given** the internal profile is selected, **When** readiness details are rendered, **Then** source operation IDs, snapshot IDs, reason counts, and diagnostics are available according to existing profile rules. +2. **Given** the customer-safe profile is selected, **When** readiness details are rendered, **Then** only customer-safe limitation summaries and required next actions are visible. + +## Functional Requirements *(mandatory)* + +- **FR-385-001**: Baseline evidence readiness MUST consume Spec 383 structured compare semantics instead of relying only on drift finding count or OperationRun success. +- **FR-385-002**: Baseline evidence readiness MUST honor active operator decisions from `provider_resource_bindings`, including bindings, accepted limitations, exclusions, unsupported coverage, and revocations. +- **FR-385-003**: Unresolved identity in required governed scope MUST block customer-ready claims. +- **FR-385-004**: Missing local evidence MUST be classified separately from missing provider resource and drift. +- **FR-385-005**: Accepted limitations MUST remain limitations and MUST NOT be treated as verified no drift. +- **FR-385-006**: Excluded non-governed subjects MUST be excluded from governed claims and MUST NOT be counted as compliant/no-drift. +- **FR-385-007**: Unsupported or inventory-only coverage MUST be represented as limitation or blocker according to report profile/disclosure policy and required-scope rules. +- **FR-385-008**: Zero drift findings MUST NOT be considered complete unless compare completed with trusted identity and required comparable subjects or accepted/excluded outcomes. +- **FR-385-009**: Trusted drift findings MUST be allowed in customer-ready output with findings when evidence and identity are trusted and profile rules allow disclosure. +- **FR-385-010**: Review readiness MUST include precise blocker and limitation guidance derived from baseline evidence details. +- **FR-385-011**: Review Pack readiness MUST distinguish customer-ready, published-with-limitations, internal-only, publication-blocked/export-not-ready, stale, and failed output behavior using existing readiness states plus explicit primary reason/limitation codes by default; narrowly extended readiness helpers/constants are allowed only if the existing output contract cannot preserve distinct operator/customer consequences and this spec/plan/tasks are updated first. +- **FR-385-012**: Customer-safe output MUST use safe limitation wording and MUST NOT expose raw provider IDs, canonical subject keys, binding internals, internal enum names, database IDs, or raw OperationRun JSON. +- **FR-385-013**: Internal technical output MAY include source operation/snapshot IDs, reason counts, and technical diagnostics where existing profile/disclosure policy allows. +- **FR-385-014**: The implementation MUST NOT add legacy compare/evidence/review compatibility mappers or old OperationRun context readers. +- **FR-385-015**: The implementation MUST NOT introduce a generic workflow engine, approval engine, broad dashboard, or new resolution UI. +- **FR-385-016**: Any new readiness constants or helper abstractions MUST be justified in this spec/plan before implementation and must replace ambiguity rather than create duplicate truth. + +## Non-Functional Requirements + +- **NFR-385-001 - Customer Safety**: Customer output must never imply verified posture where identity, trust, coverage, evidence, or compare result is unresolved. +- **NFR-385-002 - Determinism**: The same compare, binding, evidence, review, and profile inputs must produce the same readiness state and guidance. +- **NFR-385-003 - Provider Agnosticism**: Readiness language and primary output must remain provider-neutral. +- **NFR-385-004 - Auditability**: Readiness details must be traceable to source compare run, evidence snapshot, and operator decision where available. +- **NFR-385-005 - No False Green**: Accepted limitation, exclusion, unsupported coverage, inventory-only coverage, or missing evidence must not become verified no drift. +- **NFR-385-006 - No False Red**: Resolved provider built-ins/defaults/virtual resources and allowed limitations must not create false publication blockers. +- **NFR-385-007 - Minimal UI Change**: UI changes should be limited to existing readiness labels, badges, summaries, guidance, and proof disclosure needed to reflect new semantics. +- **NFR-385-008 - No Legacy Compatibility**: Historical/local/dev payload compatibility is not a product requirement. + +## Key Entities / Truth Sources + +- **Baseline compare semantic payload**: Existing OperationRun/compare proof from Spec 383. +- **Provider resource binding decision**: Existing `provider_resource_bindings` durable decision truth from Specs 381/384. +- **Baseline readiness detail**: Derived payload that summarizes verified, drift, blocker, limitation, missing, stale, failed, excluded, and source proof counts. +- **Evidence Snapshot item**: Existing evidence artifact item that carries baseline completeness and summary/fingerprint payloads. +- **Environment Review readiness**: Existing review readiness and blocker calculation over composed sections and evidence. +- **Review Pack output readiness**: Existing derived output readiness/guidance/disclosure state over review, evidence, and pack truth. + +## Assumptions + +- Specs 381-384 stay completed and are not modified by this implementation. +- Existing `provider_resource_bindings` fields and resolution modes are sufficient for V1 readiness decisions. +- Existing Review Pack profile/disclosure helpers are the preferred place to decide customer-safe versus internal-only limitation handling. +- Accepted limitations require profile/disclosure allowance before customer-facing publication. +- Unsupported required scope defaults to a blocker unless the limitation is accepted or the profile explicitly allows disclosure. +- Drift findings do not block publication by themselves when evidence/identity are trusted. +- Missing provider resource can be a trusted governance finding when identity is trusted; missing local evidence is an evidence limitation/blocker. +- Limitation expiry/renewal is out of scope and belongs to a later governance lifecycle spec if needed. + +## Out of Scope + +- New baseline matching logic. +- New compare result semantics model beyond consumption of Spec 383. +- New provider identity foundation. +- New Baseline Subject Resolution UI or new decision actions. +- New generic workflow, task, or approval engine. +- Broad Governance Inbox changes. +- Customer portal redesign. +- Management Report/PDF runtime validation or renderer work. +- Legacy compatibility mapping for old compare/evidence/review payloads. +- Raw provider diagnostics in customer-safe output. +- New persistent readiness table or durable readiness entity. + +## Risks + +- **False green**: mitigated with mapping tests proving limitations, exclusions, unsupported coverage, and missing evidence do not become verified no drift. +- **False red**: mitigated with tests proving trusted drift, resolved built-ins/defaults, and allowed limitations do not block publication unnecessarily. +- **Customer leakage**: mitigated with customer-safe output tests that reject provider IDs, canonical keys, binding internals, internal enum names, and OperationRun JSON. +- **Scope creep into report/PDF/runtime**: mitigated by keeping Management Report/PDF out of scope and using existing Review Pack readiness/disclosure paths only. +- **Semantics duplication**: mitigated by reusing or extending existing shared readiness helpers rather than adding page-local mappings. +- **Fixture cost growth**: mitigated by local explicit fixtures and no heavy-governance family by default. + +## Success Criteria *(mandatory)* + +- Evidence Snapshot baseline readiness differentiates complete, complete-with-findings, blocked/action-required, limitation-only, missing, stale, and failed cases using existing or narrowly extended state shape. +- Environment Review blockers and guidance are specific and derived from the same baseline readiness detail. +- Review Pack readiness and customer-safe output correctly represent customer-ready, published-with-limitations, internal-only, and blocked/export-not-ready states. +- Customer-safe output contains no raw provider IDs, canonical subject keys, binding internals, internal enum names, database IDs, or raw OperationRun JSON. +- Tests cover false-green and false-red cases across Evidence, Review, and Review Pack surfaces. +- UI/productization coverage updates or no-new-route rationale are recorded for affected existing surfaces. + +## Implementation Close-Out + +- **Implementation status**: Implemented for the bounded Spec 385 evidence/review/output readiness slice. +- **Validation recorded**: Focused Spec 385 unit, feature, Filament/Livewire, and browser coverage passed with 36 tests and 160 assertions. `php vendor/bin/pint --dirty` and `git diff --check` were also run successfully. +- **Baseline readiness review**: Manual review confirmed active `provider_resource_bindings`, accepted limitations, exclusions, unsupported coverage, and revoked decisions after the latest compare are included in derived baseline readiness. +- **Customer-safe review**: Manual review confirmed customer-safe Review Pack JSON/Markdown and customer-safe UI paths avoid ProviderResourceBinding diagnostics, raw Compare/OperationRun diagnostics, raw baseline state codes, internal database IDs, raw provider IDs, and canonical subject keys. +- **Publication semantics**: Publish blockers are created only for baseline readiness blockers. Accepted limitations remain visible as published-with-limitations/customer-ready-with-disclosed-limitations instead of becoming verified no-drift or hard blockers. +- **Review Pack storage safety**: Customer-safe and internal Review Packs for the same review include distinct pack IDs in their ZIP paths, so same-second generation does not overwrite either artifact. +- **Filament/Livewire status**: Livewire v4.0+ compliance is preserved; the project uses Livewire 4.1.4. No new Filament Resource, global-search surface, panel provider, destructive/high-impact action, modal, route, or asset was added. +- **Deployment impact**: No new environment variables, migrations, persisted readiness states/entities/enums, provider/Graph calls, scheduler entries, queue names, storage volumes, reverse proxy changes, or asset build steps were introduced. Normal code deploy plus queue worker restart remains sufficient. +- **Residual risk**: Additional regression coverage would be useful if product semantics later require "latest compare" to mean latest completed compare when a newer in-flight compare exists. Future non-baseline customer-safe payloads that include string-based provider identifiers should receive explicit redaction tests before release. + +## Open Questions + +No open question blocks implementation preparation. + +Implementation must verify exact existing profile/disclosure hooks and update this spec/plan before adding a new public state family, persisted readiness entity, new route, or new workflow abstraction. + +## Follow-Up Spec Candidates + +- Limitation expiry/renewal and governance lifecycle handling. +- Customer portal/external consumption boundary, if product direction requires it. +- Broader cross-domain indicator runtime follow-through. +- Governance artifact lifecycle retention runtime. +- Report/PDF staging runtime validation follow-through under Specs 378-379. diff --git a/specs/385-evidence-review-readiness/tasks.md b/specs/385-evidence-review-readiness/tasks.md new file mode 100644 index 00000000..01004a93 --- /dev/null +++ b/specs/385-evidence-review-readiness/tasks.md @@ -0,0 +1,161 @@ +# Tasks: Spec 385 - Evidence and Review Readiness Integration v1 + +**Input**: Design documents from `/specs/385-evidence-review-readiness/` +**Prerequisites**: `spec.md`, `plan.md` +**Tests**: Required. This is a runtime and customer/operator-facing readiness change. + +## Test Governance Checklist + +- [x] Lane assignment is named and is the narrowest sufficient proof for the changed behavior. +- [x] New or changed tests stay in the smallest honest family, and any browser addition is explicit. +- [x] Shared helpers, factories, seeds, fixtures, and context defaults stay cheap by default; any widening is isolated or documented. +- [x] Planned validation commands cover the change without pulling in unrelated lane cost. +- [x] The declared surface test profile or `standard-native-filament` relief is explicit. +- [x] Any material budget, baseline, trend, or escalation note is recorded in the active spec or PR. + +## Phase 1: Preparation and Guardrails + +**Purpose**: Confirm dependency truth and prevent scope bleed before implementation. + +- [x] T001 Verify completed-spec guardrail for `specs/381-provider-resource-identity-binding/`, `specs/382-baseline-matching-canonicalization/`, `specs/383-baseline-result-semantics/`, and `specs/384-baseline-subject-resolution-ui/`; do not modify those packages. +- [x] T002 Inspect current Spec 383 semantic payload keys in `apps/platform/app/Support/Baselines/CompareSemantics/` and current compare OperationRun context shape before adding any mapper. +- [x] T003 Inspect current Spec 384 binding decision modes in `apps/platform/app/Models/ProviderResourceBinding.php` and `apps/platform/app/Support/Resources/ProviderResourceResolutionMode.php` before mapping decisions into readiness. +- [x] T004 Confirm no new migration, table, queue, scheduler, route, panel provider, capability family, provider call, workflow engine, or report/PDF runtime scope is needed; update spec/plan before implementation if this is false. +- [x] T005 Record the implementation close-out target as `Evidence and Review Readiness Integration` for guardrail, exception, smoke, and deployment notes. + +--- + +## Phase 2: Baseline Readiness Mapping Tests (Blocking) + +**Purpose**: Define false-green and false-red behavior before runtime changes. + +- [x] T006 Add unit tests for the baseline readiness derivation under `apps/platform/tests/Unit/Support/Baselines/` or the nearest existing baseline semantics test family. +- [x] T007 Cover trusted no-drift mapping to complete/verified readiness with source compare proof. +- [x] T008 Cover trusted drift mapping to complete-with-findings and prove drift does not block publication by itself. +- [x] T009 Cover unresolved required identity mapping to action-required/publication blocker with a Baseline Subject Resolution next-action target. +- [x] T010 Cover missing local evidence mapping as evidence missing/refresh guidance, not provider drift. +- [x] T011 Cover missing provider resource with trusted identity as a governance issue/finding, not local-evidence missing. +- [x] T012 Cover unsupported required coverage as blocker unless accepted or allowed by profile. +- [x] T013 Cover inventory-only/foundation-only coverage as limitation, never verified no drift. +- [x] T014 Cover accepted limitation as limitation, not verified no drift. +- [x] T015 Cover excluded non-governed subject as excluded from governed claims, not compliant/pass. +- [x] T016 Cover compare failed, stale source, and zero findings without trusted compare as not customer-ready, including the expected downstream reason/limitation code when existing Review Pack states are reused. + +**Checkpoint**: Tests in this phase should fail before runtime mapping is implemented. + +--- + +## Phase 3: Baseline Readiness Derivation + +**Purpose**: Build or extend the narrow shared interpretation layer. + +- [x] T017 Implement or extend a bounded baseline readiness derivation using existing Spec 383 compare semantics and active `provider_resource_bindings`; prefer existing helpers before creating `apps/platform/app/Support/Baselines/Readiness/`. +- [x] T018 Ensure the derivation returns safe counts for verified subjects, drift subjects, blocked subjects, limitation subjects, missing-evidence subjects, unsupported subjects, accepted limitations, excluded subjects, stale subjects, and failed subjects. +- [x] T019 Ensure the derivation records safe source references such as source OperationRun ID, baseline compare ID if available, and evidence snapshot ID where applicable without raw provider payloads. +- [x] T020 Ensure customer-safe fields never include raw provider IDs, canonical subject keys, binding internals, database IDs, internal enum names, or raw OperationRun JSON. +- [x] T021 Ensure any new derived state/constants replace ambiguity rather than adding duplicate truth; update spec/plan first if a new public state family becomes necessary. + +--- + +## Phase 4: Evidence Snapshot Integration (US1) + +**Purpose**: Make Evidence Snapshot baseline completeness consume the readiness derivation. + +- [x] T022 [US1] Update `apps/platform/app/Services/Evidence/Sources/BaselineDriftPostureSource.php` to use the baseline readiness derivation instead of relying only on drift finding count or OperationRun outcome. +- [x] T023 [US1] Update baseline evidence summary/fingerprint payloads with safe readiness counts, source IDs, and measured/freshness timestamps. +- [x] T024 [US1] Update `apps/platform/app/Services/Evidence/EvidenceCompletenessEvaluator.php` only if existing completeness aggregation cannot preserve blocker/limitation detail through existing item payloads. +- [x] T025 [US1] Add or update feature tests in `apps/platform/tests/Feature/Evidence/BaselineDriftPostureSourceTest.php` for trusted clean, trusted drift, unresolved identity, missing evidence, accepted limitation, exclusion, stale, and failed cases. +- [x] T026 [US1] Add regression coverage proving old display-name or old reason-code readiness interpretation is not authoritative. + +--- + +## Phase 5: Environment Review Integration (US2) + +**Purpose**: Turn baseline evidence detail into precise review readiness and blockers. + +- [x] T027 [US2] Update `apps/platform/app/Services/EnvironmentReviews/EnvironmentReviewReadinessGate.php` so required baseline blockers and stale/missing evidence create specific review blockers. +- [x] T028 [US2] Update `apps/platform/app/Services/EnvironmentReviews/EnvironmentReviewComposer.php` or section factory code so baseline limitation and blocker details appear in review summaries/sections without duplicating truth. +- [x] T029 [US2] Add guidance mapping for unresolved identity, missing evidence, compare failed, unsupported required scope, accepted limitation, and trusted drift findings. +- [x] T030 [US2] Ensure guidance links to existing destinations only: Baseline Subject Resolution, evidence basis, source operation, or existing compare rerun path. +- [x] T031 [US2] Add or update tests under `apps/platform/tests/Feature/EnvironmentReview/` covering publication blocked, published with limitations, trusted findings allowed, missing evidence refresh guidance, and internal-only behavior. +- [x] T032 [US2] Ensure review readiness does not create workflow/task/approval records or new durable blocker entities. + +--- + +## Phase 6: Review Pack Readiness and Disclosure Integration (US3) + +**Purpose**: Align Review Pack output readiness, guidance, and customer-safe disclosure. + +- [x] T033 [US3] Update `apps/platform/app/Support/ReviewPacks/ReviewPackOutputReadiness.php` to consume baseline readiness details through existing review/evidence inputs, representing stale and failed baseline readiness through existing states plus explicit reason/limitation codes unless spec/plan are updated first. +- [x] T034 [US3] Update `apps/platform/app/Support/ReviewPacks/ReviewPackOutputResolutionGuidance.php` so primary reason, limitation summary, qualified download label, and primary/secondary actions reflect baseline blockers, limitations, stale sources, and failed/unproven compare states. +- [x] T035 [US3] Update `apps/platform/app/Support/ReviewPacks/ReportDisclosurePolicy.php` so customer-facing profiles disclose allowed baseline limitations and block or warn when customer-safe claims are unsupported. +- [x] T036 [US3] Update rendered Review Pack or Customer Review Workspace consumers only where necessary to display customer-ready, published-with-limitations, internal-only, and blocked/export-not-ready states consistently. +- [x] T037 [US3] Add or update tests under `apps/platform/tests/Feature/ReviewPack/` for customer-safe ready, published-with-limitations, internal-only, blocked/export-not-ready, stale-source, failed/unproven-compare, and safe limitation wording. +- [x] T038 [US3] Add or update customer-safe output tests proving raw provider IDs, canonical subject keys, binding internals, internal enum names, database IDs, and raw OperationRun JSON are absent. +- [x] T039 [US3] Add or update report profile/disclosure unit tests under `apps/platform/tests/Unit/Support/ReviewPacks/` for allowed/disallowed limitation disclosure. + +--- + +## Phase 7: Internal Proof and Diagnostics (US4) + +**Purpose**: Preserve useful internal proof while keeping customer-safe output clean. + +- [x] T040 [US4] Ensure internal/support profile output can include safe source IDs, reason counts, and technical diagnostics where existing profile rules allow. +- [x] T041 [US4] Ensure customer-safe profile output omits internal proof fields by default. +- [x] T042 [US4] Add tests that compare internal and customer-safe profile output from the same baseline readiness state. +- [x] T043 [US4] Ensure any source OperationRun links use existing `OperationRunLinks` or established route helpers and do not compose local OperationRun start UX. + +--- + +## Phase 8: UI/Productization Coverage + +**Purpose**: Satisfy UI-COV-001 for changed reachable surfaces. + +- [x] T044 Review affected rendered surfaces and decide whether each page report needs an update or a checked no-new-route/no-archetype note. +- [x] T045 Update `docs/ui-ux-enterprise-audit/page-reports/ui-006-customer-review-workspace.md` if Customer Review Workspace readiness presentation changes. +- [x] T046 Update `docs/ui-ux-enterprise-audit/page-reports/ui-011-reviews.md` if Environment Review readiness presentation changes. +- [x] T047 Update `docs/ui-ux-enterprise-audit/page-reports/ui-042-review-pack-detail.md` if Review Pack detail/output readiness presentation changes. +- [x] T048 Update `docs/ui-ux-enterprise-audit/page-reports/ui-046-evidence-snapshot-detail.md` if Evidence Snapshot baseline readiness presentation changes. +- [x] T049 Add screenshot/browser-smoke artifact paths to implementation close-out for changed customer-facing readiness rendering, or update spec/plan/tasks first if implementation proves no rendered presentation changed. +- [x] T050 Confirm `route-inventory.md` and `design-coverage-matrix.md` do not need changes unless implementation changes route inventory, navigation, or surface classification. +- [x] T051 Verify the spec's `UI Action Matrix` still matches the implementation; update it before merge if any visible action, action placement, bulk action, dangerous-action behavior, or inspect/open model changes. + +--- + +## Phase 9: Filament, RBAC, and Security Regression Checks + +**Purpose**: Keep existing surfaces tenant-safe and Filament v5 compliant. + +- [x] T052 Confirm Livewire v4.0+ compliance and no Livewire v3 APIs were introduced. +- [x] T053 Confirm panel provider registration remains unchanged in `apps/platform/bootstrap/providers.php` and no new panel provider was added. +- [x] T054 Confirm no new globally searchable resource was added; if any existing Resource global-search code changes, verify View/Edit page and tenant-safe search rules. +- [x] T055 Confirm no new destructive/high-impact action was added; if an existing action is touched, verify `->action(...)`, confirmation where applicable, server-side authorization, audit, notification, and tests. +- [x] T056 Confirm existing workspace/environment entitlement checks prevent cross-tenant leakage for evidence, review, pack, stored report, operation, and subject-resolution links. +- [x] T057 Confirm no Graph/provider calls occur during UI render or readiness derivation. +- [x] T058 Confirm no secrets, raw credential payloads, raw provider payloads, or raw Graph errors are logged or rendered. + +--- + +## Phase 10: Validation + +**Purpose**: Prove the implementation and record residual risk. + +- [x] T059 Run `cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Unit/Support/Baselines tests/Unit/Evidence tests/Unit/Support/ReviewPacks`. +- [x] T060 Run `cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Evidence/BaselineDriftPostureSourceTest.php tests/Feature/EnvironmentReview tests/Feature/ReviewPack`. +- [x] T061 Run `cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Filament/Spec347CustomerReviewWorkspaceOutputReadinessTest.php tests/Feature/Filament/Spec349CustomerReviewWorkspaceOutputGuidanceTest.php` and any new Spec 385 Filament tests. +- [x] T062 Run browser smoke with `cd apps/platform && ./vendor/bin/sail php vendor/bin/pest tests/Browser/Spec347ReviewPackOutputReadinessSmokeTest.php` or a new focused Spec 385 smoke covering changed rendered customer readiness. +- [x] T063 Run `cd apps/platform && ./vendor/bin/sail bin pint --dirty --format agent`. +- [x] T064 Run `git diff --check`. +- [x] T065 Document implementation close-out with Livewire v4 compliance, provider registration location, global search status, destructive/high-impact action handling, asset strategy, tests run, browser smoke result, and deployment impact. + +--- + +## Explicit Non-Goals + +- [x] NT001 Do not modify completed Specs 381-384 except as read-only context. +- [x] NT002 Do not add matching pipeline logic or compare result semantics beyond consuming Spec 383. +- [x] NT003 Do not add or redesign Baseline Subject Resolution UI. +- [x] NT004 Do not add a generic workflow engine, approval workflow, task table, or broad Governance Inbox. +- [x] NT005 Do not add Management Report/PDF runtime validation or renderer changes. +- [x] NT006 Do not add legacy compare/evidence/review payload compatibility readers. +- [x] NT007 Do not create a new persisted readiness table/entity without updating spec/plan/tasks first.