You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: specs/002-harden-checkout-tenancy/checklists/api.md
+12-6Lines changed: 12 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -35,11 +35,17 @@ Notes: This checklist tests the *requirements text* (not the implementation). Ea
35
35
- ✅ PASS: Assumptions section states "100 requests per minute per IP"; contracts/openapi.yaml shows 429 RateLimited response; tasks T3.1 calls simple limiter (100 rpm/IP); constitution references rate-limit.ts implementation
36
36
37
37
## Requirement Consistency
38
-
-[ ] CHK009 - Do authentication requirements align across spec/plan/tasks (no conflicting statements about anonymous checkout or default store fallbacks)? [Consistency, Spec §FR-001/FR-006]
39
-
-[ ] CHK010 - Are tenant-scoping semantics consistently described (session.storeId vs domain-resolver) and not contradictory across plan and tasks? [Consistency, Spec §FR-005/FR-009]
40
-
-[ ] CHK011 - Are the cache invalidation semantics (tags and revalidateTag signature) consistently used in plan and tasks (e.g., `revalidateTag(tag, 'max')`)? [Consistency, Plan P5]
38
+
-[X] CHK009 - Do authentication requirements align across spec/plan/tasks (no conflicting statements about anonymous checkout or default store fallbacks)? [Consistency, Spec §FR-001/FR-006]
39
+
- ✅ PASS: spec.md FR-001 requires "valid signed-in session" with no anonymous fallback mentioned; plan.md P1 enforces auth via getServerSession(); tasks.md T1.1 implements auth-helpers.ts; FR-006 cache revalidation requires auth context - no contradictions found
40
+
-[X] CHK010 - Are tenant-scoping semantics consistently described (session.storeId vs domain-resolver) and not contradictory across plan and tasks? [Consistency, Spec §FR-005/FR-009]
41
+
- ✅ PASS: spec.md FR-005 uses session.storeId for tenant isolation; FR-009 domain-resolver maps custom domains to storeId; plan.md P1/P2 creates store-resolver.ts for both flows; tasks.md T2.2 wires middleware - no contradictions, both mechanisms feed same storeId
42
+
-[X] CHK011 - Are the cache invalidation semantics (tags and revalidateTag signature) consistently used in plan and tasks (e.g., `revalidateTag(tag, 'max')`)? [Consistency, Plan P5]
43
+
- ✅ PASS: spec.md FR-006 requires explicit cache invalidation; plan.md P5 T5.1 creates cache-tags.ts with tag registry and revalidateTag(tag, 'max') signature per Next.js 16; tasks.md T5.1 shows implementation file; clarifications confirm 'max' cacheLife profile usage
41
44
42
45
## Acceptance Criteria Quality
43
-
-[ ] CHK012 - Are acceptance criteria measurable and tied to concrete checks (e.g., SC-003 specifies server-side recalculation validated by E2E across browsers)? [Measurability, Spec Success Criteria SC-003]
44
-
-[ ] CHK013 - Do success criteria include pass/fail thresholds for non-functional requirements (LCP/CLS/API p95) with explicit measurement contexts? [Measurability, Spec SC-010]
45
-
-[ ] CHK014 - Are rollback/compensation criteria specified for partial failures during checkout (what exact DB state indicates
46
+
-[X] CHK012 - Are acceptance criteria measurable and tied to concrete checks (e.g., SC-003 specifies server-side recalculation validated by E2E across browsers)? [Measurability, Spec Success Criteria SC-003]
47
+
- ✅ PASS: SC-003 states "server-side total recalculation occurs for 100% of checkouts with E2E test validating across Chrome/Firefox/Safari"; SC-007 requires "100% API conformity to standardized response shapes with X-Request-Id header"; all SC items include concrete verification methods
48
+
-[X] CHK013 - Do success criteria include pass/fail thresholds for non-functional requirements (LCP/CLS/API p95) with explicit measurement contexts? [Measurability, Spec SC-010]
49
+
- ✅ PASS: SC-010 specifies "LCP < 2.0s (desktop) and < 2.5s (mobile), CLS < 0.1, FID < 100ms, API p95 < 500ms"; SC-010a adds "DB query p95 < 100ms, JS bundle < 200KB gzipped"; all thresholds are quantified with measurement contexts (desktop/mobile, percentiles)
50
+
-[X] CHK014 - Are rollback/compensation criteria specified for partial failures during checkout (what exact DB state indicates need for cleanup/reversal)? [Measurability, Spec §FR-010/FR-012]
51
+
- ✅ PASS: FR-010 specifies atomic transaction pattern "if payment capture fails, roll back entire order creation"; FR-012 requires idempotency checks to prevent duplicate orders; plan.md P2 details transaction semantics with db.$transaction() and payment validation adapter; tasks T1.4 implements compensation logic
0 commit comments