# Lane Decisions: Full Suite Green Signal Restoration

## Purpose

Document which tests remain in the default full suite, which belong to browser or heavy/workflow lanes, and which are obsolete or intentionally skipped. This file prevents "green by hiding failures".

## Default Decision

Until proven otherwise, every existing test remains in the default/full-suite expectation. Moving, skipping, or removing a test requires a row in this file and validation that no true product/runtime bug is hidden.

## Lane Ownership Rules

| Lane | Belongs here | Does not belong here |
|---|---|---|
| Default full suite | Unit/Feature tests that prove ordinary product behavior, route context, policy behavior, helper contracts, and non-browser Filament/Livewire actions. | Real browser layout, screenshot baseline, broad discovery-heavy governance scans, external-runtime-only checks. |
| Fast-feedback | Narrow behavior tests with cheap fixtures and no broad surface/discovery/browser cost. | Browser, broad surface guard, workflow fan-out, large fixture graph, or screenshot work. |
| Confidence | Product feature and bounded Livewire/Filament workflow coverage. | Discovery-heavy scans, browser-only behavior, and broad action-surface governance. |
| Heavy/Workflow | Broad action-surface, relation-manager, discovery-heavy, governance-wide, or expensive workflow checks. | Narrow behavior tests that should stay cheap. |
| Browser | Real browser smoke, DOM/layout/session continuity, screenshot baseline checks. | Feature tests that can assert server-rendered behavior without browser runtime. |
| External/environment | Tests requiring unavailable external runtime or nondeterministic infrastructure. | Product bugs, stale expectations, ordinary local Sail behavior. |

## Decisions Table

| Test file | Test name or group | Decision | Target lane | Reason | Product bug hidden? yes/no | Validation command | Status |
|---|---|---|---|---|---|---|---|
| All existing tests | Default initial posture | Keep | Default/full suite | Spec 296 starts from the premise that the raw suite should become green. | no | `cd apps/platform && ./vendor/bin/sail artisan test --compact` | prepared |
| Browser failures from Spec 295 | Browser smoke/login/screenshot groups | Keep in browser lane; repair stale route/panel/copy expectations | Browser | Browser smoke tests remain the correct lane for real browser session/layout checks. No screenshot baseline was updated. | no | `./scripts/platform-test-lane browser` | green: 49 passed, 837 assertions |
| Heavy-governance failures from Spec 295 | Operation/list/surface/summary-count groups | Keep in heavy-governance lane; repair stale route/panel/RBAC expectations | Heavy/Workflow | Heavy-governance remains the owner for broad action-surface, relation-manager, and workflow checks. No test was moved or skipped to hide a product bug. | no | `./scripts/platform-test-lane heavy-governance` | green: 340 passed, 2525 assertions |
| Final raw-suite proof | Raw `artisan test --compact` after repairs | Not claimed as final green | Default/full suite | Initial raw output was too broad and long-running; the current bounded proof set is the configured lane split plus guard lanes. This is documented as a raw rerun gap, not a lane move or skip. | no | `./scripts/platform-test-lane fast-feedback`; `./scripts/platform-test-lane confidence`; `./scripts/platform-test-lane heavy-governance`; `./scripts/platform-test-lane browser`; guard commands | lane split green; raw rerun not executed |

## Skip Rules

Skips are allowed only when all are true:

- The test is not meaningful in default full suite.
- The target lane is explicit and existing or added through a documented lane owner.
- The skip message is concrete.
- The row above says no product bug is hidden.
- A focused or lane validation command proves the remaining suite signal is honest.

Recommended skip message shape:

```php
it('...', function (): void {
    // ...
})->skip('Moved to browser lane: requires real browser layout baseline and screenshot evidence.');
```

## Obsolete-Test Rules

An obsolete test may be removed only when:

- It asserts retired behavior or duplicates a stronger current contract.
- The current contract is covered by another named test.
- The removal is listed in the table above.
- The affected lane and full suite are re-run.

## Tests Deliberately Not Moved

No tests were deliberately moved, skipped, deleted, or marked obsolete during this Spec 296 close-out. Browser and heavy-governance tests stayed in their existing lanes, and default/full-suite truth remains represented by the lane split plus guard evidence until the optional long raw rerun is executed.
