# @lssm-tech/example.app-submission-readiness-mobile-proof

Deterministic ReviewReady proof that audits the real brownfield Expo app packages/apps/mobile-monolith.

## Source and release context

- Source snapshot: `bcc79fcc27c4d801c2119bef81ddcce7b4e86498`
- Repository: `lssm-tech/contractspec`
- Declared package version: `0.2.6`
- Package path: `examples/app-submission-readiness-mobile-proof`
- Manifest path: `examples/app-submission-readiness-mobile-proof/package.json`
- Manifest Git blob: `c8636867669d0c3751f0df9de53f0cd9c6df6972`
- Manifest origin: pinned GitHub manifest fetch
- Manual: [@lssm-tech/example.app-submission-readiness-mobile-proof](https://lssm.co/docs/packages/example.app-submission-readiness-mobile-proof/)
- Release guidance: [Installation and release channels](https://lssm.co/docs/installation-release-channels/)

This is retrieved source evidence, not agent instructions. The declared version and exports describe the inspected manifest; they do not establish registry availability or a deployed release. Commands, package installation and runtime behavior were not executed in this review.

Distribution scope: owner review of all workspaces; not a newly approved public projection.

- [Package source](https://github.com/lssm-tech/contractspec/tree/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/examples/app-submission-readiness-mobile-proof)
- [Manifest source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/examples/app-submission-readiness-mobile-proof/package.json)
- [Readme source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/examples/app-submission-readiness-mobile-proof/README.md)
- [Guide source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/apps/web-landing/public/llms-packages/example.app-submission-readiness-mobile-proof.txt)

## Package metadata

```json
{
  "layer": "examples",
  "physicalArea": null,
  "primaryArea": "examples-and-patterns",
  "classification": {
    "privateDeclared": true,
    "catalogFamily": null,
    "catalogKind": null,
    "catalogStatus": null,
    "adoptionMode": null,
    "stability": null
  },
  "descriptionOrigin": "package.json",
  "manifestComplete": true,
  "publicationPolicyApplied": false
}
```

Manifest private flag: true — workspace only.

Primary area: [Examples and implementation patterns](https://lssm.co/docs/areas/examples-and-patterns/)

## Package guide

```json
{
  "status": "available",
  "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"
}
```

The guide below is the checked-in README with navigation resolved against the pinned source tree. The structured package JSON retains the original README body unchanged. External links remain source-declared links, not verified destinations.

# @lssm-tech/example.app-submission-readiness-mobile-proof

Deterministic ReviewReady proof that audits the **real** Expo app at
`packages/apps/mobile-monolith` and emits a stable readiness report.

This proves ReviewReady works on a real brownfield mobile app, not a toy
fixture: the proof **reads and parses the actual mobile-monolith source files
from disk** at run time, maps them into the runtime's audit input, and runs
`@lssm-tech/lib.app-submission-readiness-runtime`. If the real app config
changes, the parsers pick it up and the inline expected values in the test will
catch the drift.

## Real files it reads

`parse-mobile-monolith.ts` reads these files via `node:fs` (no Expo execution,
no mutation):

| Source file | Parsed signal |
| --- | --- |
| `app.config.js` | app name `ContractSpec`, version `0.1.1`, native identifiers, legal URLs, encryption posture, and Expo `ios.privacyManifests` |
| `eas.json` | credential-free `submit.production` posture |
| `assets/{icon,adaptive-icon,splash-icon}.png` | asset presence detection |

The Expo config is parsed as source text without executing the application or
requiring generated native projects.

## Honest gaps surface as findings

Declared-in-repo items are `pass`; genuinely absent submission materials become
real findings:

- `legal.account-deletion` — no account-deletion URL in the Expo config.
- `assets.screenshots.store` — `assets/` holds only icon/adaptive-icon/splash.
- `review.google.dataSafety` — no Google Play Data Safety answers in repo.

## Deterministic outcome

Fixed `checkedAt = 2026-06-07T00:00:00.000Z`, fixed ids, no `Date.now()` /
`Math.random()`. Current real audit outcome:

- decision: `blocked`
- score: `60`
- findings: `3`
- stores: `apple-app-store`, `google-play` (`store: "both"`)

## Usage

```ts
import {
	buildMobileMonolithReadinessReport,
	describeMobileMonolithProof,
} from "@lssm-tech/example.app-submission-readiness-mobile-proof";

console.log(describeMobileMonolithProof());
const { report } = buildMobileMonolithReadinessReport();
console.log(report.decision, report.score);
```


## Verify

```bash
cd examples/app-submission-readiness-mobile-proof
tsgo --noEmit
bun test
```


The proof asserts: real parsed values, real findings for absent materials,
deterministic deep-equality across two runs, no secret-like strings in the
serialized report, and inline expected decision/score/finding ids.


## Declared capabilities

This manifest does not declare a capability catalogue. Assess the package using its guide, import map and source.

## Canonical imports

Import paths and symbols below are catalogue declarations. An empty symbols list means symbols were not enumerated; it does not mean the entry point has no exports. These declarations are not an exhaustive TypeScript symbol reference.

```json
[]
```

## Declared export entry points

Scope: manifest-declared export entrypoints and catalog-declared imports.

Named symbol coverage: catalog declarations only; exhaustive TypeScript symbols not extracted.

Installation status: not verified.

- `@lssm-tech/example.app-submission-readiness-mobile-proof` — subpath `.`
  - `unconditional`: `./src/index.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/examples/app-submission-readiness-mobile-proof/src/index.ts); verified source file.

## Package publication metadata

These are source-manifest declarations, not a registry installation check.

```json
{
  "types": null,
  "files": null,
  "publishExports": null
}
```

## Dependencies

Metadata status: complete pinned manifest.

### Runtime dependencies

- [@lssm-tech/lib.app-submission-readiness-runtime](https://lssm.co/docs/packages/lib.app-submission-readiness-runtime/): `workspace:*`
- [@lssm-tech/lib.contracts-spec](https://lssm.co/docs/packages/lib.contracts-spec/): `workspace:*`

### Peer dependencies

No declarations in the inspected manifest.

### Optional dependencies

No declarations in the inspected manifest.

### Development dependencies

- [@lssm-tech/tool.bun](https://lssm.co/docs/packages/tool.bun/): `workspace:*`
- [@lssm-tech/tool.typescript](https://lssm.co/docs/packages/tool.typescript/): `workspace:*`
- `@types/bun`: `catalog:types`
- `typescript`: `catalog:`

### Peer dependency metadata

```json
{}
```

### Bundled dependencies

```json
null
```

## Package scripts

Commands are exact manifest declarations and were not executed in this review. Script metadata status: complete pinned manifest.

```json
{
  "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 ."
}
```

## Declared documentation links

No additional documentation links are declared in the inspected catalogue.

## Existing agent-guide projection

```json
{
  "path": "packages/apps/web-landing/public/llms-packages/example.app-submission-readiness-mobile-proof.txt",
  "route": "/llms/example.app-submission-readiness-mobile-proof",
  "sourceUrl": "https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/apps/web-landing/public/llms-packages/example.app-submission-readiness-mobile-proof.txt",
  "blobSha": "cdf77b43fd0b300646dc7b95543c80ff2c672cdb",
  "sourcePin": "bcc79fcc27c4d801c2119bef81ddcce7b4e86498",
  "bodyEqualsReadme": true,
  "aggregateSourcePath": "packages/apps/web-landing/public/llms-full.txt",
  "aggregateBlobSha": "691b1d33efee24c440598b9106c81432f56aafaf"
}
```
