TenantAtlas/specs/265-decision-register-approval/checklists/requirements.md
Ahmed Darrazi b5671cbf47
Some checks failed
PR Fast Feedback / fast-feedback (pull_request) Failing after 3m49s
chore: commit all local changes (automated by Copilot)
2026-05-02 21:00:28 +02:00

4.4 KiB

Specification Quality Checklist: Decision Register & Approval Workflow v1

Purpose: Validate specification completeness and repo fit before implementation
Created: 2026-05-02
Feature: spec.md

Content Quality

  • The spec stays on one bounded manual-promotion follow-up over current FindingException and FindingExceptionDecision truth instead of inventing a second decision domain.
  • The spec is product- and behavior-oriented and does not read like a low-level implementation diff.
  • 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.
  • Mandatory repo sections for scope, RBAC, disclosure, testing, proportionality, and candidate rationale are completed.

Requirement Completeness

  • No [NEEDS CLARIFICATION] markers remain.
  • Requirements are testable and bounded to current exception and accepted-risk decision truth only.
  • The package distinguishes default-unfiltered 403 access denial from user-applied filtered zero-result empty states.
  • The package explicitly carries the tenant-prefilter reset rule: clearing the tenant filter returns the page to the workspace-wide open register.
  • The spec explains what remains in scope versus what is intentionally deferred.
  • Acceptance scenarios cover register visibility, detail launch continuity, and bounded decision-history behavior.
  • Recently closed rows explicitly require closure reason in both the formal requirements and implementation tasks.
  • Edge cases cover hidden tenants, missing proof links, the 30-calendar-day recently-closed boundary, and missing owner context.

Candidate Selection Gate

  • The selected candidate exists in docs/product/spec-candidates.md and docs/product/roadmap.md.
  • The active queue is explicitly empty, so this package records itself as a deliberate manual promotion rather than an automatic next-best-prep target.
  • No existing spec package already covers this bounded decision-register slice; related specs 154, 250, and 257 are treated as context only.
  • 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

  • The package reuses current finding_exception_decisions truth and current exception detail actions instead of introducing a new decision table or approval engine.
  • The spec explicitly keeps the register read-only and detail-owned for mutations.
  • The spec forbids new panel, provider, global-search, asset, queue, and persistence changes.
  • The plan and tasks keep any related review or run link optional and derived from existing proof only.
  • 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.
  • Decision-surface proof stays explicit: one dominant next action, diagnostics-secondary treatment, and no duplicate visible decision summary between register and detail.

Test Governance

  • Planned proof stays bounded to focused Unit plus Feature families with one later manual smoke path.
  • No new heavy-governance or dedicated browser family is introduced.
  • 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.