{
  "schemaVersion": 1,
  "evidenceId": "pos-v1.3.0-backup-restore",
  "status": "reproduced",
  "testedAt": "2026-08-17T06:39:42.499Z",
  "canonicalPage": "https://posnic.com/guides/pos-backup-restore-discipline/",
  "claimScope": "One small synthetic backup, known post-backup mutation and drop-existing restore through the published Posnic v1.3.0 Windows x64 portable application in a disposable profile.",
  "source": {
    "repository": "Posnic/POS",
    "releaseTag": "v1.3.0",
    "commit": "b531ef4308c4dc3a25f250551a54fc5616e3b8d9",
    "artifact": {
      "id": "windows-portable",
      "filename": "Posnic-1.3.0-windows-x64-portable.exe",
      "bytes": 166461732,
      "sha256": "606be5f1e7f05d3fc5db28f9ec54301f097435d056cbd4e887244e3668831e4b",
      "matchedStableReleaseManifest": true
    },
    "files": [
      {
        "path": "backup-manager.js",
        "sha256": "75944a64b9fe145c0d2e23edfe266d62b3e5fd9e4d989dac33d7611c1a8ea5ca"
      },
      {
        "path": "tests/backup-paths.test.js",
        "sha256": "1a78b73f6c21ef487aaaeeb880eaadc19aad60498319ed8bfdf109751d28cd9e"
      },
      {
        "path": "docs/BACKUP_POLICY.md",
        "sha256": "33072107d782919f38058f9908e6da540ba0454a79c3238dd1058a10113ef9af"
      },
      {
        "path": "docs/DISASTER_RECOVERY.md",
        "sha256": "4377dadb5eff3217dde25cb7fe6a75dad0b3773d4c36e8b329abd353886bdcc8"
      }
    ]
  },
  "execution": {
    "interface": "Published Windows x64 portable Electron application",
    "operatingSystem": "Microsoft Windows NT 10.0.26200.0",
    "architecture": "x64",
    "electronVersion": "43.2.0",
    "profile": "Disposable repository-local Electron user-data directory",
    "data": "Synthetic shop records only",
    "restart": "The restore invoked the product restart path; the verifier manually relaunched the same artifact and profile when the automation endpoint did not reattach",
    "timingsPublishedAsPerformanceBenchmark": false
  },
  "scenario": [
    "Verified the portable artifact against the stable release manifest",
    "Prepared a disposable synthetic shop profile with 25 catalog items and one known sale",
    "Created a version-2 compressed EJSON backup with a manifest, counts and hashes",
    "Added one known post-backup item so a later merge or incomplete restore would be visible",
    "Ran a drop-existing restore from the selected backup",
    "Relaunched the same artifact and disposable profile after the product restart path",
    "Verified collection and document counts, original records, removal of the later item and catalog count"
  ],
  "result": {
    "backup": {
      "formatVersion": "2.0",
      "format": "ejson",
      "compressed": true,
      "encrypted": false,
      "collections": 20,
      "documents": 53,
      "dataBytes": 13308,
      "folderBytes": 16830,
      "durationMs": 183,
      "dataSha256": "faa001773e67401ab65231ce91f2c2ba274130d747773e5a7c44858123e39301",
      "perCollectionHashesPresent": true
    },
    "restore": {
      "dropExisting": true,
      "success": true,
      "collections": 20,
      "documents": 53,
      "durationMs": 197,
      "restartPathInvoked": true
    },
    "mutationCheck": {
      "addedAfterBackup": "Post-backup Item",
      "catalogItemsBeforeRestore": 26,
      "catalogItemsAfterRestore": 25,
      "postBackupItemRemoved": true,
      "originalItemRetained": true,
      "originalSaleRetained": true,
      "originalSaleNumber": "S-O2MA-000001"
    },
    "pathSecurityTests": {
      "command": "node --test tests/backup-paths.test.js",
      "tests": 14,
      "passed": 14,
      "failed": 0
    }
  },
  "methodReferences": [
    {
      "name": "NIST SP 1339, OT Backup Quick Start Guide",
      "url": "https://doi.org/10.6028/NIST.SP.1339",
      "boundary": "Current backup-management guidance for operational technology; not a Posnic, retail or security certification"
    },
    {
      "name": "NIST NCCoE guide to conducting, maintaining and testing backup files",
      "url": "https://csrc.nist.gov/pubs/other/2020/04/24/protecting-data-from-ransomware-and-other-data-los/final",
      "boundary": "General backup guidance; not evidence that this run meets a business recovery objective"
    }
  ],
  "limitations": [
    "This was publisher-supplied synthetic evidence, not customer production data or an independent review.",
    "The dataset was small: 20 collections, 53 documents and 13,308 uncompressed data bytes.",
    "The run covered the Windows x64 portable artifact only; macOS and Linux were not exercised.",
    "The 183 ms backup and 197 ms restore observations are not throughput benchmarks and do not establish a production RPO or RTO.",
    "The verifier manually relaunched the same artifact and profile after the product restart path when the automation endpoint did not reattach.",
    "No disk failure, theft, ransomware event, power loss, operating-system network outage or damaged backup was introduced.",
    "No second physical computer, off-machine copy, cloud provider, encrypted backup repository or production-sized database was tested.",
    "The EJSON backup was compressed but not encrypted; its hashes identify content and do not provide confidentiality or prove suitability.",
    "The result belongs only to the pinned v1.3.0 artifact and source commit and must be rerun for another release."
  ],
  "relatedEvidence": [
    "https://posnic.com/guides/pos-backup-restore-discipline/",
    "https://posnic.com/assets/pos-backup-restore-drill-record.csv",
    "https://posnic.com/posnic-facts",
    "https://posnic.com/trust",
    "https://github.com/Posnic/POS/releases/tag/v1.3.0",
    "https://github.com/Posnic/POS/tree/b531ef4308c4dc3a25f250551a54fc5616e3b8d9"
  ]
}
