Some checks failed
PR Fast Feedback / fast-feedback (pull_request) Failing after 4m7s
Implemented deterministic Baseline Result Semantics (Spec 383), introducing CompareSubjectResult and CompareEvidenceResult. Replaced generic arrays with strict Data Transfer Objects for Baseline engine output.
5.9 KiB
5.9 KiB
Implementation Close-Out: Spec 383 - Baseline Compare Result Semantics and Gap Classification v1
Scope Delivered
- Added provider-neutral compare result semantics under
apps/platform/app/Support/Baselines/CompareSemantics/. - Replaced authoritative baseline compare gap/result reasons with V1 values such as
missing_local_evidence,missing_provider_resource,unresolved_duplicate_candidates,foundation_inventory_only,compare_not_supported, andcompare_failed. - Added structured
baseline_compare.result_semanticspayloads with run outcome, operation outcome, counts by reason/category/actionability/readiness impact, and bounded subject outcomes. - Extended
baseline_compare.evidence_gapswith structured category/actionability/readiness counts while keeping existingsummary_countskeys compatible. - Updated existing Filament/Livewire compare surfaces to render provider-neutral labels from persisted context.
- Updated compare, matching, coverage, matrix, monitoring, and presentation regression tests.
Explicit Boundaries
- No new database tables, migrations, indexes, persisted entities, env vars, queues, scheduler entries, routes, navigation entries, Filament panel providers, actions, modals, drawers, wizards, assets, or storage paths were added.
- No Spec 384 operator resolution UI, manual bind/exclude/accept-limitation workflow, or operator decision screen was implemented.
- No Spec 385 final Evidence Snapshot readiness mapping, Review Pack publication blocker mapping, or customer-facing report/review wording was implemented.
- Existing
missing_policyfindingchange_typesemantics remain unchanged because they are drift-finding evidence, not baseline compare result truth. - Remaining legacy strings are limited to capture flows, historical/capture enum cases, portfolio preview matching, or negative guard tests that prove old values are not authoritative in the new semantics model.
Filament Contract
- Livewire v4 compliance: project package state is Livewire v4.x and no Livewire v3 APIs were introduced.
- Provider registration: no Filament panel provider changes were made; Laravel provider registration remains in
apps/platform/bootstrap/providers.php. - Global search: no globally searchable Filament resources were added or changed.
- Destructive/high-impact actions: no actions were added or changed; therefore no new confirmation or authorization path was introduced.
- Asset strategy: no Filament or frontend assets were registered; no
filament:assetsdeployment step is newly required by this spec.
Validation
cd apps/platform && ./vendor/bin/sail artisan test tests/Unit/Support/Baselines/CompareSemanticscd apps/platform && ./vendor/bin/sail artisan test tests/Unit/Support/Baselines/Matching tests/Unit/Baselines/CompareStrategyRegistryTest.phpcd apps/platform && ./vendor/bin/sail artisan test tests/Unit/Support/Baselines/CompareSemantics/BaselineCompareOutcomeClassifierTest.php tests/Unit/Support/Baselines/Matching/MatchingOutcomeTest.php tests/Unit/Support/Baselines/Matching/SubjectMatchingPipelineTest.php tests/Unit/Services/Baselines/Matching/FoundationCoverageResolverTest.php tests/Unit/Support/Baselines/SubjectResolverTest.php tests/Unit/Baselines/CompareSubjectResultContractTest.php tests/Feature/Baselines/BaselineCompareGapClassificationTest.php tests/Feature/Baselines/BaselineCompareAmbiguousMatchGapTest.php tests/Feature/Baselines/BaselineCompareExecutionGuardTest.php tests/Feature/Baselines/BaselineCompareResumeTokenTest.php tests/Feature/Baselines/BaselineCompareProviderResourceBindingCanonicalIdentityTest.php tests/Feature/BaselineDriftEngine/CompareFidelityMismatchTest.php tests/Feature/Filament/BaselineCompareEvidenceGapTableTest.php tests/Feature/Filament/BaselineGapSurfacesDbOnlyRenderTest.php tests/Feature/Filament/OperationRunEnterpriseDetailPageTest.php tests/Feature/Filament/BaselineCompareLandingAdminTenantParityTest.php tests/Feature/Filament/BaselineCompareLandingWhyNoFindingsTest.php tests/Feature/Filament/NeedsAttentionWidgetTest.php tests/Feature/Filament/OperationRunBaselineTruthSurfaceTest.phpcd apps/platform && ./vendor/bin/sail artisan test tests/Feature/Baselines/BaselineCompareCoverageGuardTest.php tests/Feature/Baselines/BaselineCompareWhyNoFindingsReasonCodeTest.php tests/Feature/Baselines/BaselineCompareMatrixBuilderTest.php tests/Feature/Monitoring/GovernanceOperationRunSummariesTest.php tests/Feature/Baselines/BaselineGapContractCleanupTest.phpcd apps/platform && ./vendor/bin/sail artisan test tests/Feature/Evidence/BaselineDriftPostureSourceTest.php tests/Feature/ReviewPack/Spec347ReviewPackReadinessSemanticsTest.php tests/Feature/ReviewPack/Spec349ReviewPackResolutionGuidanceTest.phpcd apps/platform && ./vendor/bin/sail artisan test tests/Feature/Filament/BaselineCompareExplanationSurfaceTest.php tests/Feature/Filament/BaselineCompareLandingWhyNoFindingsTest.php tests/Feature/Filament/BaselineCompareSummaryConsistencyTest.php tests/Feature/Filament/BaselineCompareEvidenceGapTableTest.phpcd apps/platform && ./vendor/bin/sail pint ...changed files...cd apps/platform && ./vendor/bin/sail bin pint --dirty --format agentgit diff --check
Browser Decision
Browser smoke was not run. The implementation changed persisted compare semantics, labels, and Livewire/Filament context rendering only; it did not change layout structure, navigation, actions, JavaScript behavior, routes, or assets. Existing Livewire/Filament feature tests cover the affected rendered surfaces.
Deployment Impact
- Staging/production require code deploy only.
- No migrations or data backfill are required.
- Existing historical OperationRun payloads are not rewritten.
- Queue workers should be restarted as part of the normal Laravel deploy so queued compare jobs use the new semantics code.
- No new environment variables, storage volumes, cron/scheduler entries, or Dokploy-specific configuration changes are required.