# Quickstart: Provider Verification Runtime Semantics Stabilization ## Purpose `294` is the bounded follow-up to Spec `293`. It exists only to stabilize the remaining provider and verification runtime semantics block still failing inside: - `tests/Feature/ProviderConnections` - `tests/Feature/Verification` It is not a full-suite repair, not a route-cutover package, and not a broader provider-boundary refresh. ## Preconditions - Stay on branch `294-provider-verification-runtime-semantics`. - Run all PHP, Artisan, and formatter commands through Sail. - Keep the macOS PATH workaround when using terminal commands in this workspace: ```bash export PATH="/bin:/usr/bin:/usr/local/bin:$PATH" ``` - Treat Spec `293` as inherited context only. - Do not implement any route-cutover or `/admin/t/...` repair under this package. ## Read Order 1. `spec.md` 2. `plan.md` 3. `research.md` 4. `data-model.md` 5. `failure-classification.md` 6. `tasks.md` 7. `checklists/requirements.md` ## Implementation Intent - Classify the current failing lane before changing tests or runtime. - Clear fixture-contract drift before widening runtime changes. - Reuse the current shared owners: `StartVerification`, `ProviderOperationStartGate`, `OperationRunService`, `ProviderConnectionSurfaceSummary`, and `VerificationReportSchema`. - Keep provider-neutral disclosure primary and provider-specific identity detail nested. - Keep validation bounded to the target feature lane, with one conditional existing provider-connection scope browser smoke only if provider-connection disclosure changes visibly. ## Pinned Failure-Classification Categories - `surface-or-report-baseline-drift` - `fixture-contract-drift` - `provider-verification-runtime-regression` - `dedupe-concurrency-contract-drift` - `out-of-scope-existing-debt` - `resolved-or-not-needed` ## Pinned Stabilization Seams - `provider-neutrality-surface` - `shared-startable-fixtures` - `verification-start-contract` - `provider-dispatch-concurrency` - `verification-report-summary` ## Grouping Unit `294` tracks one failure group per failing test file or failing scenario cluster that shares one seam and one category. The authoritative grouped baseline lives in `failure-classification.md`. ## Review Scenarios ### Scenario 1: Verification start contract - Canonical startable verification fixtures should return `started`. - Repeated active starts should return `deduped`. - Post-completion starts should create a new run. - `blocked` should remain reserved for real prerequisite failures. ### Scenario 2: Provider-operation concurrency - Same-operation active reruns should dedupe. - Different active operations on the same provider connection should return one shared `scopeBusy` follow-through. - Queue counts and created runs must stay aligned with the shared gate contract. ### Scenario 3: Surface and report baselines - Provider connection surfaces should keep neutral target-scope disclosure as the primary truth. - Provider-specific Microsoft identity detail may stay nested, but must not replace the neutral disclosure. - Verification report counts must track the current emitted check inventory, not a stale literal ceiling. ## Planned Proof Commands ### Full in-scope lane ```bash export PATH="/bin:/usr/bin:/usr/local/bin:$PATH" && cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/ProviderConnections tests/Feature/Verification ``` ### Verification start cluster ```bash export PATH="/bin:/usr/bin:/usr/local/bin:$PATH" && cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Verification/VerificationAuthorizationTest.php tests/Feature/Verification/VerificationStartAfterCompletionTest.php tests/Feature/Verification/VerificationStartDedupeTest.php ``` ### Provider dispatch and concurrency cluster ```bash export PATH="/bin:/usr/bin:/usr/local/bin:$PATH" && cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/ProviderConnections/ProviderDispatchGateStartSurfaceTest.php tests/Feature/ProviderConnections/ProviderOperationConcurrencyTest.php ``` ### Surface and report baseline cluster ```bash export PATH="/bin:/usr/bin:/usr/local/bin:$PATH" && cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/ProviderConnections/ProviderConnectionNeutralitySpec238Test.php tests/Feature/Verification/ProviderConnectionHealthCheckWritesReportTest.php ``` ### Conditional existing browser smoke Run this only if implementation changes visible provider-connection disclosure: ```bash export PATH="/bin:/usr/bin:/usr/local/bin:$PATH" && cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Browser/Spec281ProviderConnectionScopeSmokeTest.php ``` ### Formatting ```bash export PATH="/bin:/usr/bin:/usr/local/bin:$PATH" && cd apps/platform && ./vendor/bin/sail bin pint --dirty --format agent ``` ## Stop Conditions Stop and split the work out of `294` if any of the following becomes necessary: - route-cutover or `/admin/t/...` repair - full-suite cleanup outside `tests/Feature/ProviderConnections` and `tests/Feature/Verification` - a new provider abstraction, provider-profile table, capability registry, or verification schema version - reopening historical Specs `238`, `188`, `084`, or `074` as implementation targets - adding a new browser family instead of reusing the existing provider-scope smoke ## Expected Close-Out State - the full in-scope ProviderConnections/Verification lane is green - `failure-classification.md` reflects the final disposition of every currently failing group - any visible provider-connection disclosure change is backed by the existing provider-connection scope browser smoke - no out-of-scope debt has been silently absorbed