feat(POS-002): completed feature
This commit is contained in:
20
work/artifacts/POS-002/security.json
Normal file
20
work/artifacts/POS-002/security.json
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"feature_id": "POS-002",
|
||||
"agent": "security",
|
||||
"stage": "security_gate",
|
||||
"verdict": "APPROVED",
|
||||
"reviewed_at": "2026-08-21T19:55:30Z",
|
||||
"summary": "Schema hardening approved. The changes add DB-level tenancy isolation for stock, prevent ecommerce/admin orders without a customer, add explicit POS roles, and preserve existing authentication paths. No secrets or payment-card data are introduced.",
|
||||
"checks": [
|
||||
{"item":"Store scoping is enforced in inventory SQL","ok":true,"evidence":"All stock read/write operations include variant_id + store_id; composite unique constraint prevents cross-store overwrite"},
|
||||
{"item":"Foreign keys prevent orphaned POS references","ok":true,"evidence":"terminal/session/payment/quick/parked tables reference pos_stores and relevant existing tables with explicit ON DELETE policies"},
|
||||
{"item":"Walk-in customer exception is narrowly scoped","ok":true,"evidence":"CHECK (source = 'pos' OR user_id IS NOT NULL); ecommerce/admin NULL user_id rejected by PostgreSQL"},
|
||||
{"item":"Role extension does not weaken existing auth","ok":true,"evidence":"requireRole unchanged; requireAnyRole is additive; existing admin/editor/customer behavior preserved"},
|
||||
{"item":"No card PAN/CVV/payment secrets added","ok":true,"evidence":"Only payment method configuration rows are seeded; no sensitive payment fields or provider credentials introduced"},
|
||||
{"item":"Migrations are parameter/static SQL only","ok":true,"evidence":"Migration inputs are fixed constants and DDL; no user-controlled SQL interpolation"},
|
||||
{"item":"Rollback safety documented","ok":true,"evidence":"POS-002 architect/implementer notes document down ordering and the destructive implications of reverting store-scoped inventory"},
|
||||
{"item":"Turbopack root change has no runtime security effect","ok":true,"evidence":"next.config.ts only pins build workspace root; no auth, proxy, cookie or endpoint behavior changed"}
|
||||
],
|
||||
"issues": [],
|
||||
"notes":"The stock store_id is currently supplied by the default store for ecommerce/cart flows and by explicit storeId for future POS flows. POS routes must never trust a client-supplied storeId without validating it against the authenticated terminal; that enforcement belongs in POS-004."
|
||||
}
|
||||
Reference in New Issue
Block a user