## Summary - remove remaining legacy scope query hint parsing from shared workspace and environment scoping seams so hubs only narrow via explicit `environment_id` - align canonical link generation across workspace hubs, provider connections, audit log, alerts, and decision register flows - add focused Spec 341 regression coverage for canonical link/query behavior and legacy alias rejection - include the Spec 341 artifacts and move the review screenshots into `specs/341-canonical-link-query-cleanup/artifacts/screenshots/` - ignore local `.playwright-mcp` browser tool output so it does not pollute future commits or pull requests ## Validation - `cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Navigation --filter=Spec341` - `cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Navigation/Spec341CanonicalLinkQueryCleanupTest.php tests/Feature/Navigation/WorkspaceHubEnvironmentFilterContractTest.php tests/Feature/ProviderConnections/ProviderConnectionsWorkspaceHubContractTest.php` - `cd apps/platform && ./vendor/bin/sail bin pint --dirty --format agent` - `git diff --check` ## Notes - Livewire v4 compliance unchanged - Filament provider registration remains in `apps/platform/bootstrap/providers.php` - no globally searchable resource behavior was changed in this slice - no destructive action behavior was changed - no new Filament assets; deploy `filament:assets` posture is unchanged Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #413
2.7 KiB
2.7 KiB
Specification Quality Checklist: Spec 341 - Canonical Link / Query Cleanup
Purpose: Validate Spec 341 preparation completeness before implementation.
Created: 2026-05-31
Feature: specs/341-canonical-link-query-cleanup/spec.md
Candidate Selection Gate
- CHK001 The selected candidate matches
canonical-link-query-cleanupindocs/product/spec-candidates.md. - CHK002 Related specs were checked for completed-spec signals and are treated as context only (no rewrites).
- CHK003 The package does not overwrite an existing
specs/341-*directory. - CHK004 Close alternatives (
environment-resource-context-follow-through,product-truth-docs-drift-cleanup) are deferred instead of hidden scope. - CHK005 The spec is scoped as link/query contract hygiene (no feature expansion).
Content Quality
- CHK006 The spec has a concrete problem statement, user value, and explicit non-goals.
- CHK007 The spec includes acceptance criteria, out-of-scope boundaries, assumptions, risks, and open questions.
- CHK008 The spec avoids new persistence, new abstractions, or frameworking without proportionality justification.
- CHK009 No placeholder markers (
[FEATURE],[DATE],NEEDS CLARIFICATION) remain inspec.md,plan.md, ortasks.md. - CHK010 The spec’s scope is small enough for a bounded implementation loop.
Constitution And Scope
- CHK011 The Spec Candidate Check is filled and scored above the approval threshold.
- CHK012 Pre-production posture is respected: no compatibility redirects or legacy alias preservation “just in case”.
- CHK013 Workspace/environment isolation and deny-as-not-found semantics are explicitly preserved.
- CHK014 UI/Productization Coverage is completed as “no new surface; contract hardening only”.
Plan Quality
- CHK015
plan.mdis repo-aware and lists the expected touched seams. - CHK016 The plan sequences work as inventory → failing tests → behavior change → regression guards → validation.
- CHK017 Test governance is explicit: Feature lane first; browser only if justified.
- CHK018 Deployment impact is explicitly none (no migrations/env/queues/assets).
Task Quality
- CHK019
tasks.mdexists and is dependency-ordered into small phases. - CHK020 Tasks reference concrete repo files and do not invent new architecture.
- CHK021 Tasks include explicit validation commands and formatting checks.
- CHK022 Tasks explicitly forbid schema/persistence/framework scope expansion.
Spec Readiness Gate
- CHK023
spec.md,plan.md, andtasks.mdexist. - CHK024 No open question blocks safe implementation (inventory-driven follow-ups are allowed).
- CHK025 Result: ready for implementation loop.