{
  "schemaVersion": 2,
  "product": "PersonaEcho Hospital Factory",
  "version": "0.3.1",
  "status": "SOFTWARE_VERIFIED_MODEL_REAL_PERSON_AND_HOSPITAL_GATES_STILL_REQUIRED",
  "generatedAt": "2026-08-23T00:00:00.000Z",
  "sourceCommit": "c878e76a15abef425c8c55fae4c485387f8eadba",
  "sourceTree": "0c785fa47ce9f3f7fd356a65ce6956b6af8c691b",
  "tests": {
    "status": "PASS",
    "count": 51
  },
  "syntheticSandbox": {
    "status": "PASS",
    "count": 1,
    "realPersonDataUsed": false,
    "fixtureModelServicesUsed": true
  },
  "gates": {
    "speakerEnrollmentApiAndIndependentIdentityReview": "PASS",
    "transcriptAndSegmentReview": "PASS",
    "asynchronousPersistentJobQueue": "PASS",
    "sharedVolumeAndS3Transfer": "PASS",
    "oidcAndGatewayRoleSeparation": "PASS",
    "deploymentDependencyClosure": "PASS",
    "openApiDeliveryManifestAndSandbox": "PASS",
    "realModelAssetsOnHospitalHardware": "NOT_EXECUTED",
    "realPersonFidelity": "NOT_EXECUTED",
    "hospitalInfrastructureAndSecurityAcceptance": "NOT_EXECUTED"
  },
  "deploymentConstraint": "SINGLE_ACTIVE_APPLICATION_INSTANCE",
  "files": [
    {
      "path": ".dockerignore",
      "sizeBytes": 173,
      "sha256": "f221a35f3123de5edf2907f9c411bd732cf54944c651ccb833c58c3253ebbb49"
    },
    {
      "path": ".gitignore",
      "sizeBytes": 138,
      "sha256": "ddb19c74c6fd15e6b6428942518b930a5880cc232aff89bb020d62387cb38603"
    },
    {
      "path": "config/model-lock.example.json",
      "sizeBytes": 1010,
      "sha256": "f48280594534ee81f701408e50a10b9ef1a05867950a8fcccb60fb55e9386b8c"
    },
    {
      "path": "config/policy.json",
      "sizeBytes": 1387,
      "sha256": "fc12fbefc43856a3f2acb5b2b23b9177412d7c3c6e0ad7658619a6919c985126"
    },
    {
      "path": "config/reference-stack.example.json",
      "sizeBytes": 2784,
      "sha256": "7bf23b6b9dd4b5d95ecf79b08fa902047bfee8ce52add4179483c77f26b4934c"
    },
    {
      "path": "config/reference-stack.oidc.example.json",
      "sizeBytes": 3118,
      "sha256": "6e7985a91fde34e75383b10aeb6ac6eecb947d6b47f7d0f72978ed1db886e1a9"
    },
    {
      "path": "config/reference-stack.s3.example.json",
      "sizeBytes": 3159,
      "sha256": "5ea8b7bacdf7a8836e84cad1fc926d48b96d4edc21b87996fb1f0e69bda49f40"
    },
    {
      "path": "config/reference-stack.systemd.example.json",
      "sizeBytes": 2832,
      "sha256": "2621a314639691a576cfa95f640f703844422f59f41ff99c492e7ad6f6398e7a"
    },
    {
      "path": "deploy/docker-compose.yml",
      "sizeBytes": 1553,
      "sha256": "d63985e9ef4ce2734f42f68d02e51120e527f83f5e10f8e641592572d09848f7"
    },
    {
      "path": "deploy/nginx.conf",
      "sizeBytes": 2068,
      "sha256": "5ffa9652418d1deebcd1bcb34441c795d49e36213f42c11e7cf7a4a849c05643"
    },
    {
      "path": "deploy/personaecho.service",
      "sizeBytes": 791,
      "sha256": "b55056ddbb4fa560809b3659d987834e317856183781ed33e2f490d1cf224e6b"
    },
    {
      "path": "Dockerfile",
      "sizeBytes": 686,
      "sha256": "707c0319eab327d7a56dbf50adf6554c22218a7d4a5bba25c3bc977ad1fe69d5"
    },
    {
      "path": "docs/ACCEPTANCE_GATES.md",
      "sizeBytes": 3586,
      "sha256": "75d27987be82754f8290c35c82603630d57c6a6e39312d5cc457abd5301942ae"
    },
    {
      "path": "docs/ASYNC_JOBS_AND_STORAGE.md",
      "sizeBytes": 3765,
      "sha256": "157d0deb0941d7af1f081a05092a6c496c34dbe38b7a0542b2134f1d65e3945c"
    },
    {
      "path": "docs/AUTH_AND_ROLE_MAPPING.md",
      "sizeBytes": 4788,
      "sha256": "7a30aa54a1f94763c6c1506c1734d0fa452e340193c1f973b3d6be4610bbe4f8"
    },
    {
      "path": "docs/FIRST_PERSON_ONBOARDING.md",
      "sizeBytes": 4436,
      "sha256": "95fe7dd2864505d4a84e768cf5ded7a58cb2665ecfcccbda7958c21d0c343e23"
    },
    {
      "path": "docs/HOSPITAL_DEPLOYMENT_RUNBOOK.md",
      "sizeBytes": 5763,
      "sha256": "4086451f1ebcd44e033b7ad3e7620ff3484daf13bf161ccf106cbe34c89efee9"
    },
    {
      "path": "docs/HOSPITAL_INTEGRATION_CONTRACT.md",
      "sizeBytes": 3066,
      "sha256": "214f6d6b402b9b5d7ad9a79b3b66388552f50205f64daff1a92825ceb83dd673"
    },
    {
      "path": "docs/HUMAN_PILOT_PROTOCOL.md",
      "sizeBytes": 739,
      "sha256": "e45fc927480a1a81e086756af2a6c2637dcffb0784d263db88eaebdbadd4a14f"
    },
    {
      "path": "docs/PRODUCTION_LIMITATIONS.md",
      "sizeBytes": 2362,
      "sha256": "c90068e99684418c44468e8d34ff6c56a6906ac1f76201574448ec80544201e5"
    },
    {
      "path": "docs/REAL_MODEL_ADAPTER_GUIDE.md",
      "sizeBytes": 4999,
      "sha256": "886aa73d1cfcbffedb91125e9599d80e85a4883dd0758c01c53da7b2c5d81b15"
    },
    {
      "path": "docs/TRANSACTION_DELIVERABLES.md",
      "sizeBytes": 1476,
      "sha256": "2333cf1e7a8c9f33b2b90f7f80c02007eeaf1b9326000780043ba4eeb3e9c150"
    },
    {
      "path": "docs/V031_COMPLETION_REPORT.md",
      "sizeBytes": 3007,
      "sha256": "5b8a65e7f4faa986956869f86e738c5317eed326c89c54eed7dab4fec74a0ae8"
    },
    {
      "path": "openapi.yaml",
      "sizeBytes": 18893,
      "sha256": "93d528809f2cefc8a3018ba424ad8e30e7f345c3c2fb4a11d3c6bf3ad7975c4b"
    },
    {
      "path": "package.json",
      "sizeBytes": 644,
      "sha256": "55905be5e0794e4c470de6fa2e9638f541eccc246f2570d691cd746c488b6b42"
    },
    {
      "path": "public/app.js",
      "sizeBytes": 11231,
      "sha256": "63e96cacee89386e6612a3cfc7bad883f2256542e726a07c99e77c7a9be1ad8a"
    },
    {
      "path": "public/index.html",
      "sizeBytes": 6281,
      "sha256": "7bf2313fb3ffb6ff420a1efc82be1b95b255f445e902a6ff334f6cdf9b313f4e"
    },
    {
      "path": "public/styles.css",
      "sizeBytes": 2345,
      "sha256": "2f8d2aba256fafc465b001b856dd37119c67f1b946dcbe501d0b3d0f38fa4c96"
    },
    {
      "path": "README.md",
      "sizeBytes": 6756,
      "sha256": "9cedd0cee8cc5a52ac80851fc75321dc6d3ebe4502b554149fedad2f64989909"
    },
    {
      "path": "SBOM.cdx.json",
      "sizeBytes": 2444,
      "sha256": "3dfb04579ca3a823fcb060c99e54ac5b1b12dce7c312d50b3500aee4b5b69bc6"
    },
    {
      "path": "scripts/build-delivery-manifest.mjs",
      "sizeBytes": 2092,
      "sha256": "ab79b94f6210f7621abaf2c21b70d5208029f7c2a8d5d6cde515d0b4a5a15644"
    },
    {
      "path": "scripts/doctor.mjs",
      "sizeBytes": 7013,
      "sha256": "1f5a3b3fdfd4e222daea81730031d4a7f9979ebb0e3e2775ace5428ceaeab5b2"
    },
    {
      "path": "scripts/hash-model-directory.mjs",
      "sizeBytes": 994,
      "sha256": "d519cd0090b92e1e9186cb2e4365e7bff6bb4ae10b3d6f8edd32c70332baf8ba"
    },
    {
      "path": "scripts/run-hospital-sandbox.mjs",
      "sizeBytes": 722,
      "sha256": "6c1b435ada6c6ff7e336e9d55084e59f5b2eaf4f827de0994d44e4d2718a870d"
    },
    {
      "path": "scripts/run-synthetic-demo.mjs",
      "sizeBytes": 841,
      "sha256": "90d7ca8270204b96b7a3d3efe78baa84da0d24070ce249048d5636829f413333"
    },
    {
      "path": "scripts/verify.mjs",
      "sizeBytes": 11458,
      "sha256": "447a0d9fb387577878867d3d3d16ab590dcac2e2c2d166a4f3e2cd9a033a0005"
    },
    {
      "path": "services/command_gateway.py",
      "sizeBytes": 5524,
      "sha256": "bf1b8c55195de75c20efabbec1551ef9439356fad855ad4d783fd77cb6484ed0"
    },
    {
      "path": "src/app.mjs",
      "sizeBytes": 17510,
      "sha256": "158ea3ee0ba9a99205491d527cb8cd48336d17099da63d1e208d515636bfcea0"
    },
    {
      "path": "src/lib/adapters.mjs",
      "sizeBytes": 6622,
      "sha256": "0d5695203a299dbaf2075ee1ea18ae9f7ce26546ff910b584855a03f5699e977"
    },
    {
      "path": "src/lib/audit.mjs",
      "sizeBytes": 779,
      "sha256": "0da0a610adaaabdd43a0bf49a986aff53ca92cb5c4f48d9ed1e8edf3d8d30ca6"
    },
    {
      "path": "src/lib/auth.mjs",
      "sizeBytes": 10732,
      "sha256": "17f4502897a341dc9addf1534d7b2c458bd873ca4c928a7b9161dbbc6e910f43"
    },
    {
      "path": "src/lib/config.mjs",
      "sizeBytes": 8082,
      "sha256": "bf9808f7a5c72e8c1ab4bb82696bf80b0bbe1e9690f385f073bb24ef65ccefa4"
    },
    {
      "path": "src/lib/errors.mjs",
      "sizeBytes": 257,
      "sha256": "ee76dc404bd4ea61b6b078df30b3b7ccbaad7e44d3668d0bc6acb1b4eb0f0548"
    },
    {
      "path": "src/lib/factory.mjs",
      "sizeBytes": 45603,
      "sha256": "42f2aefb4ed571750bf9c65036aba96bbc45c242743a92af6497814b4ec6f84b"
    },
    {
      "path": "src/lib/http-client.mjs",
      "sizeBytes": 3690,
      "sha256": "20a9c36e6caf29e092e373a36b0682a616280f4149988aee9eabd6591b80737c"
    },
    {
      "path": "src/lib/jobs.mjs",
      "sizeBytes": 8181,
      "sha256": "84a43cc2408387a9fe832a2c8c0c70f0ec48861e55b25234d0f81c6dafc3be78"
    },
    {
      "path": "src/lib/model-lock.mjs",
      "sizeBytes": 3170,
      "sha256": "2233f9670020a98475b782c798215d64f7d1341795ecbf1146737906abb07ddf"
    },
    {
      "path": "src/lib/policy.mjs",
      "sizeBytes": 1829,
      "sha256": "6ca119f3a536a2fec7f95c4fc0e9fdd3b89d7c79c1fa74a778b9590d32db28ba"
    },
    {
      "path": "src/lib/retrieval.mjs",
      "sizeBytes": 1484,
      "sha256": "c0e9a2a477f373a3c025e4f2a52a431e77ec3a2c1762eb77f7c370bc46987b77"
    },
    {
      "path": "src/lib/runtime.mjs",
      "sizeBytes": 5732,
      "sha256": "dcf29056fcf96798be1a71cc766c5f7896078bb4a5aa96421a383e8b6337f522"
    },
    {
      "path": "src/lib/speech-token.mjs",
      "sizeBytes": 2709,
      "sha256": "bc5e2bfd5d652f0a5480f1cdaf87a7da3c50b8fcc50a2f14060433c96f8d5d00"
    },
    {
      "path": "src/lib/storage.mjs",
      "sizeBytes": 2266,
      "sha256": "6414a7ff5ed606e03e58fb678d259cf80d3ca179574805e1acf4f642b63d0f52"
    },
    {
      "path": "src/lib/transfer.mjs",
      "sizeBytes": 8198,
      "sha256": "af8eca82f5f99e6ba9b4cefe36b9dc5e7ca5415ee9332a2dcbf60fb818226697"
    },
    {
      "path": "src/lib/utils.mjs",
      "sizeBytes": 2454,
      "sha256": "1dc0d22339cbe8d177d9e70a21cebef9d0c669d9b3ade8c68498ff1cce5465a3"
    },
    {
      "path": "src/server.mjs",
      "sizeBytes": 378,
      "sha256": "c43f8c6c49f7c4014fcd42cf25785c41a26109d6c5a40c2cdc8b32961180c358"
    },
    {
      "path": "STATUS.json",
      "sizeBytes": 1499,
      "sha256": "b6a9a9faa1ed5bb869ec93c3c268c90601ec027c8b9e1a83089457cfa4c286ff"
    },
    {
      "path": "tests/adapters.test.mjs",
      "sizeBytes": 3351,
      "sha256": "db8a01a339ba23097c96451ba2e2d5ce76aede590d5ebaaf591db15b2612fe01"
    },
    {
      "path": "tests/audit.test.mjs",
      "sizeBytes": 363,
      "sha256": "77e67e7fd728e0b4e5dc9b5ce5c967f135a3872e9c10e585a8769b2bd82c98d6"
    },
    {
      "path": "tests/auth.test.mjs",
      "sizeBytes": 5131,
      "sha256": "91c388659427819a0a792df4366979b85150275054f2c7c2df269f3e619b8a37"
    },
    {
      "path": "tests/config.test.mjs",
      "sizeBytes": 2160,
      "sha256": "0e875b10ec6defb1f5a950331c145fd19afc57e3aab4faf6e017f399865d7c61"
    },
    {
      "path": "tests/core.test.mjs",
      "sizeBytes": 35084,
      "sha256": "414527cb7e1c0312a0f34f54578f9d16aee6236eec5b95352fc1eb5aac72f676"
    },
    {
      "path": "tests/delivery-contract.test.mjs",
      "sizeBytes": 1452,
      "sha256": "ac8ee11a0df858e31fbf7d371f5c4a12f2396df0ae0825024b407f82e7ae4c0d"
    },
    {
      "path": "tests/disclosure.test.mjs",
      "sizeBytes": 599,
      "sha256": "75eac7d8c99ff9ca0e021c103e3c148d4b625e53d285ab61f3dd37e8f60b451f"
    },
    {
      "path": "tests/doctor.test.mjs",
      "sizeBytes": 2538,
      "sha256": "5dccf472e6056fef5b83cdf6972e167dea5644f301ecc55e1cde79a12021d8f5"
    },
    {
      "path": "tests/e2e-sandbox.test.mjs",
      "sizeBytes": 9820,
      "sha256": "2ae549ed7b94bbd3d8a932cf8e8ce605c415e6c8b1dbce66e6d9f47428224480"
    },
    {
      "path": "tests/helpers.mjs",
      "sizeBytes": 11367,
      "sha256": "d1f4b59219f95a1516c9a696de508b7b3f16bd2845becb3def1f4cf1e863f28e"
    },
    {
      "path": "tests/http-client.test.mjs",
      "sizeBytes": 1874,
      "sha256": "3320af84825e1cbe03f77ca61cd447c71c39aaa67d4dd04abfb1ec1913cd6877"
    },
    {
      "path": "tests/jobs.test.mjs",
      "sizeBytes": 3182,
      "sha256": "673593c0541933ec7f6213082a7375d35395fd2d98e52813e64bfa81bb490b6f"
    },
    {
      "path": "tests/storage.test.mjs",
      "sizeBytes": 1220,
      "sha256": "7713d5c6af20624fbbf3d0902ede0d616c86adc803983d78f273c01d7507ffe0"
    },
    {
      "path": "tests/transfer.test.mjs",
      "sizeBytes": 3223,
      "sha256": "39631116b0884cfa0ba52df217175179477c52c6e310b521f119d12696b92891"
    }
  ]
}
