{
  "schemaVersion": 1,
  "evidenceId": "pos-v1.3.0-counter-session",
  "status": "passed",
  "testedAt": "2026-08-20T15:40:25.073Z",
  "canonicalPage": "https://posnic.com/features",
  "claimScope": "A compressed synthetic opening-to-close counter session through the real Posnic v1.3.0 Express API and an isolated local MongoDB database.",
  "source": {
    "repository": "Posnic/POS",
    "releaseTag": "v1.3.0",
    "commit": "b531ef4308c4dc3a25f250551a54fc5616e3b8d9",
    "cleanCheckout": true,
    "files": [
      {
        "path": "api/app.js",
        "sha256": "6ff6247f4bb4235a8df07090d79b9bc07ef75a6eccf49f387f987800ed78e82f"
      },
      {
        "path": "api/src/routes/install.routes.js",
        "sha256": "7ae76fbd2032dd7b9e47d0eab7599cceb4c0333b7f9a78ca68a34deef3a3feab"
      },
      {
        "path": "api/src/routes/receivings.routes.js",
        "sha256": "e2c893ef2a9311d69c76012a3ad37a179ffd9fc408730d9651ac429a699c478a"
      },
      {
        "path": "api/src/routes/registers.routes.js",
        "sha256": "1f8e82c71b9ea967b5750e910474927e45ca80e977bce678b18555836238f128"
      },
      {
        "path": "api/src/routes/sales.routes.js",
        "sha256": "885955494ccf987f5b235a07d74cca30abf5a22875458201e1faa1facbc3fba4"
      },
      {
        "path": "api/src/services/install.service.js",
        "sha256": "c954b088a9770e5acf1488cac5efe967d20faf59e39cb98090d3a33c34a9a5a7"
      },
      {
        "path": "api/src/services/sale.service.js",
        "sha256": "51b177d8f80e679aaf026cbbe109fe59fd0c67a554938f26f4790263999130cd"
      },
      {
        "path": "api/src/repositories/register.repository.js",
        "sha256": "bf577614f03435b445b862c82cef1141c09f5a7f0521324b6f7938f2cd40f159"
      },
      {
        "path": "api/src/repositories/sale.repository.js",
        "sha256": "9059163f628205b78382dd72f97e7b6e3af4ac6c56c2670c2a976e2714563703"
      }
    ]
  },
  "execution": {
    "interface": "Real HTTP requests to the assembled Express application",
    "database": "Isolated loopback MongoDB database created for the run and dropped during cleanup",
    "mongodbVersion": "7.0.14",
    "nodeVersion": "v24.19.0",
    "platform": "Windows x64",
    "timingsPublishedAsPerformanceBenchmark": false
  },
  "scenario": [
    "Installed one new synthetic supermarket shop",
    "Opened one register with an INR 500 opening float",
    "Recorded one INR 200 cash-in and one INR 100 cash-out movement",
    "Received 50 units into the seeded catalog",
    "Saved 12 sales covering 20 units across Cash, UPI and Card payment labels",
    "Replayed one identical billing transaction ID",
    "Returned one unit from a three-unit Card-labelled sale",
    "Replayed the identical return payload",
    "Reconciled sales, report, register and stock records",
    "Closed the register and confirmed that no open session remained"
  ],
  "result": {
    "assertionsPassed": 49,
    "assertionsFailed": 0,
    "inventory": {
      "startingQuantity": 100,
      "receivedQuantity": 50,
      "afterReceivingQuantity": 150,
      "soldQuantity": 20,
      "afterSalesQuantity": 130,
      "returnedQuantity": 1,
      "finalQuantity": 131,
      "equation": "100 + 50 - 20 + 1 = 131"
    },
    "sales": {
      "documents": 12,
      "grossSalesInr": 2760,
      "returnedValueInr": 138,
      "netSalesInr": 2622,
      "paymentLabels": {
        "Cash": 1518,
        "UPI": 552,
        "Card": 552
      },
      "duplicateSaleCountAfterReplay": 1,
      "returnTransactionsAfterReplay": 1
    },
    "duplicateGuards": {
      "saleReplayHttpStatus": 200,
      "saleReplayIdentified": true,
      "saleReplayCreatedSecondSale": false,
      "saleReplayDeductedStockAgain": false,
      "returnReplayHttpStatus": 409,
      "returnReplayRestoredStockAgain": false
    },
    "register": {
      "openingFloatInr": 500,
      "cashInInr": 200,
      "cashOutInr": 100,
      "expectedCashDrawerInr": 2118,
      "saleEntries": 12,
      "cashMovementEntries": 2,
      "finalStatus": "Closed",
      "openSessionsAfterClose": 0
    },
    "report": {
      "graphicalNetSalesInr": 2622
    },
    "persistence": {
      "receivingDocuments": 1,
      "salesDocuments": 12,
      "cashRegisterDocuments": 1,
      "stockLogDocuments": 14
    }
  },
  "limitations": [
    "This was a compressed synthetic counter session, not customer production data or a clock-length trading day.",
    "The run exercised the HTTP API, persistence and report calculation; it did not drive the packaged Electron interface.",
    "Cash, UPI and Card were stored payment-mode labels. No bank, acquirer, payment terminal, authorization, capture or settlement was exercised.",
    "The expected drawer amount was an arithmetic control. No physical cash was counted and no denomination entry was recorded.",
    "No barcode scanner, receipt printer, cash drawer, weighing scale or customer display was connected.",
    "No power loss, operating-system network loss, process crash, multi-device race, backup, restore or restart was simulated.",
    "Observed request durations were not published as a throughput or latency benchmark."
  ],
  "relatedEvidence": [
    "https://posnic.com/features",
    "https://posnic.com/posnic-facts",
    "https://posnic.com/assets/posnic-product-facts.json",
    "https://posnic.com/assets/posnic-inventory-lifecycle-evidence.json",
    "https://github.com/Posnic/POS/releases/tag/v1.3.0",
    "https://github.com/Posnic/POS/tree/b531ef4308c4dc3a25f250551a54fc5616e3b8d9"
  ]
}
