# Product Standards

> Canonical, living standards that govern new and modified product surfaces, lifecycle semantics, and shared review contracts.
> Specs reference these standards; they do not redefine them.
> Guard tests enforce critical UI constraints automatically where a standard has runtime enforcement.

**Last reviewed**: 2026-05-03

---

## Standards Index

| Standard | File | Governs |
|---|---|---|
| Table UX | [filament-table-ux.md](filament-table-ux.md) | Column tiers, sort, search, toggle, pagination, persistence, empty states, timestamps, IDs |
| Filter UX | [filament-filter-ux.md](filament-filter-ux.md) | Filter patterns, persistence, soft-delete, date range, enum sourcing, defaults |
| Actions UX | [filament-actions-ux.md](filament-actions-ux.md) | Row/bulk/header actions, grouping, destructive safety, inspect affordance |
| Filament Enterprise UI | [filament-native-enterprise-ui.md](filament-native-enterprise-ui.md) | Custom Blade/widget/page surfaces, primary action hierarchy, badge-first state semantics, and panel-consistent cards |
| Lifecycle Governance | [lifecycle-governance.md](lifecycle-governance.md) | Lifecycle taxonomy, source ownership, transition safeguards, follow-up boundaries |
| Review Checklist | [list-surface-review-checklist.md](list-surface-review-checklist.md) | PR/spec checklist for any new or modified list surface |

---

## How Standards Are Enforced

1. **Constitution** — Principles in `.specify/memory/constitution.md` govern why we build this way and whether new persistence, abstractions, or semantic frameworks are justified at all.
2. **Standards** (this directory) — Concrete rules for how every surface must behave.
3. **Guard tests** — Automated Pest tests that fail CI when critical standards are violated.
4. **PR review** — The [review checklist](list-surface-review-checklist.md) is checked for every spec or PR that touches a list surface.
5. **Lifecycle review** — The [lifecycle governance standard](lifecycle-governance.md) is checked for every spec or PR that introduces archive, delete, provider-missing, suppression, retention, purge, commercial lifecycle, or restoreability semantics.

---

## When to Update Standards

- When a spec introduces a new surface type or pattern not yet covered.
- When a standard proves too rigid or too loose after real usage.
- When Filament version changes invalidate or enable new native features.

Update the standard first, then adjust implementation to match.

---

## Related Docs

| Document | Location | Purpose |
|---|---|---|
| Constitution | `.specify/memory/constitution.md` | Permanent principles (PROP-001, BLOAT-001, OPS-UX-START-001, UI-CONST-001, DECIDE-001, DECIDE-AUD-001, UI-SURF-001, ACTSURF-001, UI-HARD-001, UI-EX-001, HDR-001, OPSURF-001, UI-FIL-001, UX-001, Action Surface Contract, RBAC-UX) |
| TenantPilot Enterprise UI Standard | `docs/ui/tenantpilot-enterprise-ui-standards.md` | Canonical detailed rules for custom Filament affordances, interaction honesty, and no ad-hoc styling |
| Product Principles | `docs/product/principles.md` | High-level product decisions |
| Table Rollout Audit | `docs/ui/filament-table-standard.md` | Rollout inventory and implementation state from Spec 125 |
| Action Surface Contract | `docs/ui/action-surface-contract.md` | Original action surface reference (now governed by this standard) |
