{
  "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"
}
