{ "feature_id": "F-017", "agent": "qa", "verdict": "APPROVED", "summary": "QA approved. All F-017 acceptance criteria are traced to implementation and executable evidence. The PostgreSQL integration suite passed with TEST_DATABASE_URL, including server-side VAT calculation, ignored client price fields, and append-only price history.", "evidence": [ "PricingService.calculate AC covered by project/src/modules/pricing/tests/pricing-service.test.ts and project/src/app/tests/pricing.itest.ts", "Client-supplied price ignored AC covered by pricing.itest.ts payload with bogus netUnitAmountCents/totalCents/vatAmountCents", "Price history AC covered by pricing.itest.ts querying pricing_price_history after create and update", "cd project && TEST_DATABASE_URL='postgres://mdv:mdv_dev_only@localhost:5432/mdv_test' npm run test:integration -- pricing.itest migrations.itest passed: 9 integration files, 39 tests", "cd project && npm run lint passed", "cd project && npm run typecheck passed", "cd project && npm run build passed", "cd project && npm test passed: 21 passed, 9 skipped without TEST_DATABASE_URL", "./scripts/verify.sh passed" ], "acceptance": [ { "criterion": "Given variant and quantity When PricingService.calculate Then total with VAT returned", "status": "PASS", "evidence": "Pricing unit/integration tests calculate 1000 cents x2 with 21% VAT as totalCents=2420" }, { "criterion": "Given client-supplied price in any request Then price ignored and recalculated", "status": "PASS", "evidence": "pricing.itest.ts sends bogus client price fields to /pricing/calculate and response uses persisted server price 500 cents with reduced VAT" }, { "criterion": "Price change writes history row, never silent update", "status": "PASS", "evidence": "pricing.itest.ts verifies pricing_price_history has one row for initial create and one row for update with previous/new values" }, { "criterion": "verify.sh green", "status": "PASS", "evidence": "./scripts/verify.sh PASS" } ], "commands": [ "cd project && npm run lint: PASS", "cd project && npm run typecheck: PASS", "cd project && npm run build: PASS", "cd project && npm test: PASS; 21 passed, 9 skipped when TEST_DATABASE_URL absent", "cd project && TEST_DATABASE_URL='postgres://mdv:mdv_dev_only@localhost:5432/mdv_test' npm run test:integration -- pricing.itest migrations.itest: PASS; 9 files, 39 tests", "./scripts/verify.sh: PASS" ], "timestamp": "2026-08-15T16:24:50Z" }