This PR contains the committed changes for specs/265-decision-register-approval.
Commit: b5671cbf
Automated PR created by Copilot at user's request.
Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de>
Reviewed-on: #321
57 lines
4.4 KiB
Markdown
57 lines
4.4 KiB
Markdown
# Specification Quality Checklist: Decision Register & Approval Workflow v1
|
|
|
|
**Purpose**: Validate specification completeness and repo fit before implementation
|
|
**Created**: 2026-05-02
|
|
**Feature**: [spec.md](../spec.md)
|
|
|
|
## Content Quality
|
|
|
|
- [x] The spec stays on one bounded manual-promotion follow-up over current `FindingException` and `FindingExceptionDecision` truth instead of inventing a second decision domain.
|
|
- [x] The spec is product- and behavior-oriented and does not read like a low-level implementation diff.
|
|
- [x] The spec explicitly names the repo-real foundations it builds on: accepted-risk lifecycle, append-only decision history, current exception-detail approval actions, and the adjacent decision-home specs.
|
|
- [x] Mandatory repo sections for scope, RBAC, disclosure, testing, proportionality, and candidate rationale are completed.
|
|
|
|
## Requirement Completeness
|
|
|
|
- [x] No `[NEEDS CLARIFICATION]` markers remain.
|
|
- [x] Requirements are testable and bounded to current exception and accepted-risk decision truth only.
|
|
- [x] The package distinguishes default-unfiltered `403` access denial from user-applied filtered zero-result empty states.
|
|
- [x] The package explicitly carries the tenant-prefilter reset rule: clearing the tenant filter returns the page to the workspace-wide open register.
|
|
- [x] The spec explains what remains in scope versus what is intentionally deferred.
|
|
- [x] Acceptance scenarios cover register visibility, detail launch continuity, and bounded decision-history behavior.
|
|
- [x] Recently closed rows explicitly require closure reason in both the formal requirements and implementation tasks.
|
|
- [x] Edge cases cover hidden tenants, missing proof links, the 30-calendar-day recently-closed boundary, and missing owner context.
|
|
|
|
## Candidate Selection Gate
|
|
|
|
- [x] The selected candidate exists in `docs/product/spec-candidates.md` and `docs/product/roadmap.md`.
|
|
- [x] The active queue is explicitly empty, so this package records itself as a deliberate manual promotion rather than an automatic next-best-prep target.
|
|
- [x] No existing spec package already covers this bounded decision-register slice; related specs `154`, `250`, and `257` are treated as context only.
|
|
- [x] The chosen slice is smaller and more repo-ready than the deferred alternatives because the repo already contains append-only decision persistence and the existing detail workflow.
|
|
|
|
## Feature Readiness
|
|
|
|
- [x] The package reuses current `finding_exception_decisions` truth and current exception detail actions instead of introducing a new decision table or approval engine.
|
|
- [x] The spec explicitly keeps the register read-only and detail-owned for mutations.
|
|
- [x] The spec forbids new panel, provider, global-search, asset, queue, and persistence changes.
|
|
- [x] The plan and tasks keep any related review or run link optional and derived from existing proof only.
|
|
- [x] The register is explicitly planned as a Filament-native table or list surface, and later implementation review must use `docs/product/standards/list-surface-review-checklist.md`.
|
|
- [x] Decision-surface proof stays explicit: one dominant next action, diagnostics-secondary treatment, and no duplicate visible decision summary between register and detail.
|
|
|
|
## Test Governance
|
|
|
|
- [x] Planned proof stays bounded to focused `Unit` plus `Feature` families with one later manual smoke path.
|
|
- [x] No new heavy-governance or dedicated browser family is introduced.
|
|
- [x] Runtime proof commands stay consistent across spec, plan, and tasks, including `FindingExceptionDecisionRegisterBoundariesTest`, while Pint remains standard implementation hygiene.
|
|
|
|
## Notes
|
|
|
|
- Reviewed against `docs/product/spec-candidates.md`, `docs/product/roadmap.md`, `docs/product/implementation-ledger.md`, `specs/154-finding-risk-acceptance/spec.md`, `specs/250-decision-governance-inbox/spec.md`, `specs/257-governance-decision-convergence/spec.md`, current finding-exception models and services under `apps/platform`, and `.specify/memory/constitution.md` on 2026-05-02.
|
|
- No application implementation was performed while preparing this package.
|
|
|
|
## Review Outcome
|
|
|
|
- **Outcome class**: `acceptable-special-case`
|
|
- **Outcome**: `keep`
|
|
- **Reason**: The selected slice is an explicit manual promotion, but it stays on repo-real exception-decision truth, narrows the broader candidate to one bounded register, and keeps all mutations on the current action-owning detail surface.
|
|
- **Workflow result**: Ready for implementation. |