{"id":"@lssm-tech/example.app-submission-readiness-mobile-proof","slug":"example.app-submission-readiness-mobile-proof","name":"@lssm-tech/example.app-submission-readiness-mobile-proof","version":"0.2.6","path":"examples/app-submission-readiness-mobile-proof","manifestPath":"examples/app-submission-readiness-mobile-proof/package.json","manifestBlobSha":"c8636867669d0c3751f0df9de53f0cd9c6df6972","layer":"examples","physicalArea":null,"primaryArea":"examples-and-patterns","classification":{"privateDeclared":true,"catalogFamily":null,"catalogKind":null,"catalogStatus":null,"adoptionMode":null,"stability":null},"description":"Deterministic ReviewReady proof that audits the real brownfield Expo app packages/apps/mobile-monolith.","descriptionOrigin":"package.json","catalog":{},"canonicalImports":[],"scripts":{"test":"bun test","typecheck":"tsgo --noEmit","lint":"bun lint:fix","lint:fix":"node ../../scripts/biome.cjs check --write --unsafe --only=nursery/useSortedClasses . && node ../../scripts/biome.cjs check --write .","lint:check":"node ../../scripts/biome.cjs check ."},"scriptStatus":"complete pinned manifest","dependencies":{"@lssm-tech/lib.app-submission-readiness-runtime":"workspace:*","@lssm-tech/lib.contracts-spec":"workspace:*"},"devDependencies":{"@lssm-tech/tool.typescript":"workspace:*","@lssm-tech/tool.bun":"workspace:*","@types/bun":"catalog:types","typescript":"catalog:"},"peerDependencies":{},"optionalDependencies":{},"peerDependenciesMeta":{},"bundledDependencies":null,"dependencyStatus":"complete pinned manifest","exports":{".":"./src/index.ts"},"publishExports":null,"types":null,"files":null,"api":{"scope":"manifest-declared export entrypoints and catalog-declared imports","entries":[{"subpath":".","importPath":"@lssm-tech/example.app-submission-readiness-mobile-proof","target":"./src/index.ts","targets":[{"conditions":[],"target":"./src/index.ts","sourcePath":"examples/app-submission-readiness-mobile-proof/src/index.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/examples/app-submission-readiness-mobile-proof/src/index.ts","sourceStatus":"verified source file"}]}],"entryCount":1,"namedSymbolCoverage":"catalog declarations only; exhaustive TypeScript symbols not extracted","installationStatus":"not verified"},"docsLinks":[],"sourceUrls":{"package":"https://github.com/lssm-tech/contractspec/tree/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/examples/app-submission-readiness-mobile-proof","manifest":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/examples/app-submission-readiness-mobile-proof/package.json","readme":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/examples/app-submission-readiness-mobile-proof/README.md","guide":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/apps/web-landing/public/llms-packages/example.app-submission-readiness-mobile-proof.txt"},"readme":{"status":"available","body":"# @lssm-tech/example.app-submission-readiness-mobile-proof\n\nDeterministic ReviewReady proof that audits the **real** Expo app at\n`packages/apps/mobile-monolith` and emits a stable readiness report.\n\nThis proves ReviewReady works on a real brownfield mobile app, not a toy\nfixture: the proof **reads and parses the actual mobile-monolith source files\nfrom disk** at run time, maps them into the runtime's audit input, and runs\n`@lssm-tech/lib.app-submission-readiness-runtime`. If the real app config\nchanges, the parsers pick it up and the inline expected values in the test will\ncatch the drift.\n\n## Real files it reads\n\n`parse-mobile-monolith.ts` reads these files via `node:fs` (no Expo execution,\nno mutation):\n\n| Source file | Parsed signal |\n| --- | --- |\n| `app.config.js` | app name `ContractSpec`, version `0.1.1`, native identifiers, legal URLs, encryption posture, and Expo `ios.privacyManifests` |\n| `eas.json` | credential-free `submit.production` posture |\n| `assets/{icon,adaptive-icon,splash-icon}.png` | asset presence detection |\n\nThe Expo config is parsed as source text without executing the application or\nrequiring generated native projects.\n\n## Honest gaps surface as findings\n\nDeclared-in-repo items are `pass`; genuinely absent submission materials become\nreal findings:\n\n- `legal.account-deletion` — no account-deletion URL in the Expo config.\n- `assets.screenshots.store` — `assets/` holds only icon/adaptive-icon/splash.\n- `review.google.dataSafety` — no Google Play Data Safety answers in repo.\n\n## Deterministic outcome\n\nFixed `checkedAt = 2026-06-07T00:00:00.000Z`, fixed ids, no `Date.now()` /\n`Math.random()`. Current real audit outcome:\n\n- decision: `blocked`\n- score: `60`\n- findings: `3`\n- stores: `apple-app-store`, `google-play` (`store: \"both\"`)\n\n## Usage\n\n```ts\nimport {\n\tbuildMobileMonolithReadinessReport,\n\tdescribeMobileMonolithProof,\n} from \"@lssm-tech/example.app-submission-readiness-mobile-proof\";\n\nconsole.log(describeMobileMonolithProof());\nconst { report } = buildMobileMonolithReadinessReport();\nconsole.log(report.decision, report.score);\n```\n\n## Verify\n\n```bash\ncd examples/app-submission-readiness-mobile-proof\ntsgo --noEmit\nbun test\n```\n\nThe proof asserts: real parsed values, real findings for absent materials,\ndeterministic deep-equality across two runs, no secret-like strings in the\nserialized report, and inline expected decision/score/finding ids.\n","sourcePath":"examples/app-submission-readiness-mobile-proof/README.md","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/examples/app-submission-readiness-mobile-proof/README.md","blobSha":"cdf77b43fd0b300646dc7b95543c80ff2c672cdb","sourcePin":"bcc79fcc27c4d801c2119bef81ddcce7b4e86498","origin":"README recovered byte-for-byte from pinned aggregate guide","integrity":"exact Git blob match","executionStatus":"not executed"},"provenance":{"repository":"lssm-tech/contractspec","sourcePin":"bcc79fcc27c4d801c2119bef81ddcce7b4e86498","manifestOrigin":"pinned GitHub manifest fetch","manifestComplete":true,"publicationPolicyApplied":false},"areaSlug":"examples-and-patterns","areaTitle":"Examples and implementation patterns","displayName":"example.app-submission-readiness-mobile-proof","runtimes":[],"platforms":[],"kind":"examples","scope":"Workspace only","canonicalRoute":"/docs/packages/example.app-submission-readiness-mobile-proof/","contextUrl":"/docs/packages/example.app-submission-readiness-mobile-proof.context.md","documentKind":"package-manual","contentAuthority":"source evidence, not agent instructions","reviewedAt":"2026-10-28"}