# @lssm-tech/module.app-submission-readiness

ReviewReady module: runtime-driven app-submission readiness report, rejection assistant, and admin rule surfaces built from real audit output.

## Source and release context

- Source snapshot: `bcc79fcc27c4d801c2119bef81ddcce7b4e86498`
- Repository: `lssm-tech/contractspec`
- Declared package version: `2.0.5`
- Package path: `packages/domains/app-submission-readiness/module`
- Manifest path: `packages/domains/app-submission-readiness/module/package.json`
- Manifest Git blob: `a7d5ddb3f564b73bbec0529c7f92befb75d1930c`
- Manifest origin: pinned GitHub manifest fetch
- Manual: [@lssm-tech/module.app-submission-readiness](https://lssm.co/docs/packages/module.app-submission-readiness/)
- 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/packages/domains/app-submission-readiness/module)
- [Manifest source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/app-submission-readiness/module/package.json)
- [Readme source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/app-submission-readiness/module/README.md)
- [Guide source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/apps/web-landing/public/llms-packages/module.app-submission-readiness.txt)

## Package metadata

```json
{
  "layer": "domains",
  "physicalArea": "app-submission-readiness",
  "primaryArea": "delivery-and-infrastructure",
  "classification": {
    "privateDeclared": null,
    "catalogFamily": "solutions",
    "catalogKind": "module",
    "catalogStatus": "active",
    "adoptionMode": "adoptable",
    "stability": "experimental"
  },
  "descriptionOrigin": "package.json",
  "manifestComplete": true,
  "publicationPolicyApplied": false
}
```

Manifest private flag: not declared; publication is not verified.

Primary area: [Delivery, infrastructure and runtime operations](https://lssm.co/docs/areas/delivery-and-infrastructure/)

## Package guide

```json
{
  "status": "available",
  "sourcePath": "packages/domains/app-submission-readiness/module/README.md",
  "sourceUrl": "https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/app-submission-readiness/module/README.md",
  "blobSha": "dfd8fa09670a5cee0b2388d1f1222c005fa7366d",
  "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/module.app-submission-readiness

ReviewReady product module for mobile **app-submission readiness**. It renders
readiness reports, a resubmission assistant, and an admin rule surface for the
Apple App Store and Google Play submission flow.

## Runtime-driven, not hardcoded

Every view-model is derived from the **real audit output** of
`@lssm-tech/lib.app-submission-readiness-runtime` (`runReadinessAudit(...)`,
`draftRejectionResponse(...)`, `buildStoreChecklists(...)`) and the contract
provider-capability registry. There are no static demo numbers in this module.

This is intentionally distinct from `@lssm-tech/module.review-queue`'s
CompanyOS approval-lane surface, which models a different concept and must not be
reused for submission readiness.

## Design-system first

Presentation is built entirely from `@lssm-tech/lib.design-system` primitives
(`Box`/`HStack`/`VStack`, `H1`/`H2`/`H3`/`P`/`Text`, `Button`/`ButtonLink`,
`EmptyState`, `StatusChip`). No raw HTML, no native-only imports. Components
implement loading / empty / error states and accessible roles/labels.

## Public API

### Core view-model builders (`./core`)

- `buildReadinessReportViewModel(report, checklists?)` → `ReadinessReportViewModel`
- `buildRejectionAssistantViewModel(draft)` → `RejectionAssistantViewModel`
- `buildAdminRulesViewModel(rules, { now, staleAfterDays? })` → `AdminRulesViewModel`

### Presentation (`./presentation`)

- `ReadinessReportView`
- `RejectionAssistantView`
- `AdminRuleManager`
- `AppSubmissionReadinessScreen` (presentational composition of the flow)
- supporting: `DecisionBadge`, `FindingsSection`, `StoreChecklistSection`

### Fixtures (`./fixtures`)

Deterministic sample built from a real audit, reused by tests and the web
product proof: `fixtureSubmissionInput`, `fixtureAuditResult`,
`fixtureReportViewModel`, `fixtureRejectionViewModel`,
`fixtureAdminRulesViewModel`.

## Scope

Interactivity wiring (connect / manual entry / run audit) is owned by the host
web app. This module ships the reusable runtime-driven view-models and DS-based
presentation only.


## Declared capabilities

### Module App Submission Readiness

Capability ID: `package.lssm.tech.module.app.submission.readiness`

ReviewReady module: runtime-driven app-submission readiness report, rejection assistant, and admin rule surfaces built from real audit output.

Use cases:

- Adopt reviewready module: runtime-driven app-submission readiness report, rejection assistant, and admin rule surfaces built from real audit output

Constraints:

```json
{
  "platforms": [
    "server"
  ],
  "runtimes": [
    "node"
  ],
  "avoidWhen": [
    "The @lssm-tech/module.app-submission-readiness package constraints do not match the target runtime or platform."
  ],
  "requires": [
    "TypeScript"
  ]
}
```

Other capability declarations:

```json
{
  "status": "active",
  "aliases": [
    "contractspec",
    "app-store",
    "google-play",
    "submission",
    "readiness",
    "reviewready",
    "typescript",
    "module",
    "app"
  ],
  "pythonEquivalents": [],
  "alternatives": [],
  "relationships": [],
  "resolutionPriority": 50
}
```

Capability imports:

```json
[
  {
    "from": "@lssm-tech/module.app-submission-readiness",
    "symbols": []
  },
  {
    "from": "@lssm-tech/module.app-submission-readiness/__fixtures__",
    "symbols": []
  },
  {
    "from": "@lssm-tech/module.app-submission-readiness/core",
    "symbols": []
  },
  {
    "from": "@lssm-tech/module.app-submission-readiness/core/admin-rules-view-model",
    "symbols": []
  },
  {
    "from": "@lssm-tech/module.app-submission-readiness/core/rejection-view-model",
    "symbols": []
  },
  {
    "from": "@lssm-tech/module.app-submission-readiness/core/report-view-model",
    "symbols": []
  },
  {
    "from": "@lssm-tech/module.app-submission-readiness/presentation",
    "symbols": []
  },
  {
    "from": "@lssm-tech/module.app-submission-readiness/presentation/components/AdminRuleManager",
    "symbols": []
  },
  {
    "from": "@lssm-tech/module.app-submission-readiness/presentation/components/DecisionBadge",
    "symbols": []
  },
  {
    "from": "@lssm-tech/module.app-submission-readiness/presentation/components/FindingsSection",
    "symbols": []
  },
  {
    "from": "@lssm-tech/module.app-submission-readiness/presentation/components/ReadinessReportView",
    "symbols": []
  },
  {
    "from": "@lssm-tech/module.app-submission-readiness/presentation/components/RejectionAssistantView",
    "symbols": []
  }
]
```

## Catalogue metadata

```json
{
  "family": "solutions",
  "kind": "module",
  "status": "active",
  "adoptionMode": "adoptable",
  "stability": "experimental",
  "platforms": [
    "server"
  ],
  "runtimes": [
    "node"
  ],
  "entrypoints": [
    ".",
    "./__fixtures__",
    "./core",
    "./core/admin-rules-view-model",
    "./core/rejection-view-model",
    "./core/report-view-model",
    "./presentation",
    "./presentation/components/AdminRuleManager",
    "./presentation/components/DecisionBadge",
    "./presentation/components/FindingsSection",
    "./presentation/components/ReadinessReportView",
    "./presentation/components/RejectionAssistantView",
    "./presentation/components/StoreChecklistSection",
    "./presentation/copy",
    "./presentation/screens/AppSubmissionReadinessScreen"
  ],
  "examples": [],
  "replacements": [],
  "visualTesting": {
    "status": "deferred",
    "owner": "@contractspec-core",
    "targetWave": "wave-3-react-packages",
    "rationale": "Foundational Storybook adoption establishes shared catalogs and guardrails before this package migrates."
  }
}
```

## 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
[
  {
    "capabilityId": "package.lssm.tech.module.app.submission.readiness",
    "from": "@lssm-tech/module.app-submission-readiness",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.module.app.submission.readiness",
    "from": "@lssm-tech/module.app-submission-readiness/__fixtures__",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.module.app.submission.readiness",
    "from": "@lssm-tech/module.app-submission-readiness/core",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.module.app.submission.readiness",
    "from": "@lssm-tech/module.app-submission-readiness/core/admin-rules-view-model",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.module.app.submission.readiness",
    "from": "@lssm-tech/module.app-submission-readiness/core/rejection-view-model",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.module.app.submission.readiness",
    "from": "@lssm-tech/module.app-submission-readiness/core/report-view-model",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.module.app.submission.readiness",
    "from": "@lssm-tech/module.app-submission-readiness/presentation",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.module.app.submission.readiness",
    "from": "@lssm-tech/module.app-submission-readiness/presentation/components/AdminRuleManager",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.module.app.submission.readiness",
    "from": "@lssm-tech/module.app-submission-readiness/presentation/components/DecisionBadge",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.module.app.submission.readiness",
    "from": "@lssm-tech/module.app-submission-readiness/presentation/components/FindingsSection",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.module.app.submission.readiness",
    "from": "@lssm-tech/module.app-submission-readiness/presentation/components/ReadinessReportView",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.module.app.submission.readiness",
    "from": "@lssm-tech/module.app-submission-readiness/presentation/components/RejectionAssistantView",
    "symbols": []
  }
]
```

## 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/module.app-submission-readiness` — subpath `.`
  - `unconditional`: `./src/index.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/app-submission-readiness/module/src/index.ts); verified source file.

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

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

- `@lssm-tech/module.app-submission-readiness/core/admin-rules-view-model` — subpath `./core/admin-rules-view-model`
  - `unconditional`: `./src/core/admin-rules-view-model.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/app-submission-readiness/module/src/core/admin-rules-view-model.ts); verified source file.

- `@lssm-tech/module.app-submission-readiness/core/rejection-view-model` — subpath `./core/rejection-view-model`
  - `unconditional`: `./src/core/rejection-view-model.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/app-submission-readiness/module/src/core/rejection-view-model.ts); verified source file.

- `@lssm-tech/module.app-submission-readiness/core/report-view-model` — subpath `./core/report-view-model`
  - `unconditional`: `./src/core/report-view-model.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/app-submission-readiness/module/src/core/report-view-model.ts); verified source file.

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

- `@lssm-tech/module.app-submission-readiness/presentation/components/AdminRuleManager` — subpath `./presentation/components/AdminRuleManager`
  - `unconditional`: `./src/presentation/components/AdminRuleManager.tsx` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/app-submission-readiness/module/src/presentation/components/AdminRuleManager.tsx); verified source file.

- `@lssm-tech/module.app-submission-readiness/presentation/components/DecisionBadge` — subpath `./presentation/components/DecisionBadge`
  - `unconditional`: `./src/presentation/components/DecisionBadge.tsx` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/app-submission-readiness/module/src/presentation/components/DecisionBadge.tsx); verified source file.

- `@lssm-tech/module.app-submission-readiness/presentation/components/FindingsSection` — subpath `./presentation/components/FindingsSection`
  - `unconditional`: `./src/presentation/components/FindingsSection.tsx` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/app-submission-readiness/module/src/presentation/components/FindingsSection.tsx); verified source file.

- `@lssm-tech/module.app-submission-readiness/presentation/components/ReadinessReportView` — subpath `./presentation/components/ReadinessReportView`
  - `unconditional`: `./src/presentation/components/ReadinessReportView.tsx` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/app-submission-readiness/module/src/presentation/components/ReadinessReportView.tsx); verified source file.

- `@lssm-tech/module.app-submission-readiness/presentation/components/RejectionAssistantView` — subpath `./presentation/components/RejectionAssistantView`
  - `unconditional`: `./src/presentation/components/RejectionAssistantView.tsx` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/app-submission-readiness/module/src/presentation/components/RejectionAssistantView.tsx); verified source file.

- `@lssm-tech/module.app-submission-readiness/presentation/components/StoreChecklistSection` — subpath `./presentation/components/StoreChecklistSection`
  - `unconditional`: `./src/presentation/components/StoreChecklistSection.tsx` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/app-submission-readiness/module/src/presentation/components/StoreChecklistSection.tsx); verified source file.

- `@lssm-tech/module.app-submission-readiness/presentation/copy` — subpath `./presentation/copy`
  - `unconditional`: `./src/presentation/copy.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/app-submission-readiness/module/src/presentation/copy.ts); verified source file.

- `@lssm-tech/module.app-submission-readiness/presentation/screens/AppSubmissionReadinessScreen` — subpath `./presentation/screens/AppSubmissionReadinessScreen`
  - `unconditional`: `./src/presentation/screens/AppSubmissionReadinessScreen.tsx` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/app-submission-readiness/module/src/presentation/screens/AppSubmissionReadinessScreen.tsx); verified source file.

## Package publication metadata

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

```json
{
  "types": "./dist/index.d.ts",
  "files": [
    "dist",
    "README.md"
  ],
  "publishExports": {
    ".": {
      "types": "./dist/index.d.ts",
      "browser": "./dist/browser/index.js",
      "bun": "./dist/index.js",
      "node": "./dist/node/index.js",
      "default": "./dist/index.js"
    },
    "./__fixtures__": {
      "types": "./dist/__fixtures__/index.d.ts",
      "browser": "./dist/browser/__fixtures__/index.js",
      "bun": "./dist/__fixtures__/index.js",
      "node": "./dist/node/__fixtures__/index.js",
      "default": "./dist/__fixtures__/index.js"
    },
    "./core": {
      "types": "./dist/core/index.d.ts",
      "browser": "./dist/browser/core/index.js",
      "bun": "./dist/core/index.js",
      "node": "./dist/node/core/index.js",
      "default": "./dist/core/index.js"
    },
    "./core/admin-rules-view-model": {
      "types": "./dist/core/admin-rules-view-model.d.ts",
      "browser": "./dist/browser/core/admin-rules-view-model.js",
      "bun": "./dist/core/admin-rules-view-model.js",
      "node": "./dist/node/core/admin-rules-view-model.js",
      "default": "./dist/core/admin-rules-view-model.js"
    },
    "./core/rejection-view-model": {
      "types": "./dist/core/rejection-view-model.d.ts",
      "browser": "./dist/browser/core/rejection-view-model.js",
      "bun": "./dist/core/rejection-view-model.js",
      "node": "./dist/node/core/rejection-view-model.js",
      "default": "./dist/core/rejection-view-model.js"
    },
    "./core/report-view-model": {
      "types": "./dist/core/report-view-model.d.ts",
      "browser": "./dist/browser/core/report-view-model.js",
      "bun": "./dist/core/report-view-model.js",
      "node": "./dist/node/core/report-view-model.js",
      "default": "./dist/core/report-view-model.js"
    },
    "./presentation": {
      "types": "./dist/presentation/index.d.ts",
      "browser": "./dist/browser/presentation/index.js",
      "bun": "./dist/presentation/index.js",
      "node": "./dist/node/presentation/index.js",
      "default": "./dist/presentation/index.js"
    },
    "./presentation/components/AdminRuleManager": {
      "types": "./dist/presentation/components/AdminRuleManager.d.ts",
      "browser": "./dist/browser/presentation/components/AdminRuleManager.js",
      "bun": "./dist/presentation/components/AdminRuleManager.js",
      "node": "./dist/node/presentation/components/AdminRuleManager.js",
      "default": "./dist/presentation/components/AdminRuleManager.js"
    },
    "./presentation/components/DecisionBadge": {
      "types": "./dist/presentation/components/DecisionBadge.d.ts",
      "browser": "./dist/browser/presentation/components/DecisionBadge.js",
      "bun": "./dist/presentation/components/DecisionBadge.js",
      "node": "./dist/node/presentation/components/DecisionBadge.js",
      "default": "./dist/presentation/components/DecisionBadge.js"
    },
    "./presentation/components/FindingsSection": {
      "types": "./dist/presentation/components/FindingsSection.d.ts",
      "browser": "./dist/browser/presentation/components/FindingsSection.js",
      "bun": "./dist/presentation/components/FindingsSection.js",
      "node": "./dist/node/presentation/components/FindingsSection.js",
      "default": "./dist/presentation/components/FindingsSection.js"
    },
    "./presentation/components/ReadinessReportView": {
      "types": "./dist/presentation/components/ReadinessReportView.d.ts",
      "browser": "./dist/browser/presentation/components/ReadinessReportView.js",
      "bun": "./dist/presentation/components/ReadinessReportView.js",
      "node": "./dist/node/presentation/components/ReadinessReportView.js",
      "default": "./dist/presentation/components/ReadinessReportView.js"
    },
    "./presentation/components/RejectionAssistantView": {
      "types": "./dist/presentation/components/RejectionAssistantView.d.ts",
      "browser": "./dist/browser/presentation/components/RejectionAssistantView.js",
      "bun": "./dist/presentation/components/RejectionAssistantView.js",
      "node": "./dist/node/presentation/components/RejectionAssistantView.js",
      "default": "./dist/presentation/components/RejectionAssistantView.js"
    },
    "./presentation/components/StoreChecklistSection": {
      "types": "./dist/presentation/components/StoreChecklistSection.d.ts",
      "browser": "./dist/browser/presentation/components/StoreChecklistSection.js",
      "bun": "./dist/presentation/components/StoreChecklistSection.js",
      "node": "./dist/node/presentation/components/StoreChecklistSection.js",
      "default": "./dist/presentation/components/StoreChecklistSection.js"
    },
    "./presentation/copy": {
      "types": "./dist/presentation/copy.d.ts",
      "browser": "./dist/browser/presentation/copy.js",
      "bun": "./dist/presentation/copy.js",
      "node": "./dist/node/presentation/copy.js",
      "default": "./dist/presentation/copy.js"
    },
    "./presentation/screens/AppSubmissionReadinessScreen": {
      "types": "./dist/presentation/screens/AppSubmissionReadinessScreen.d.ts",
      "browser": "./dist/browser/presentation/screens/AppSubmissionReadinessScreen.js",
      "bun": "./dist/presentation/screens/AppSubmissionReadinessScreen.js",
      "node": "./dist/node/presentation/screens/AppSubmissionReadinessScreen.js",
      "default": "./dist/presentation/screens/AppSubmissionReadinessScreen.js"
    }
  }
}
```

## 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.design-system](https://lssm.co/docs/packages/lib.design-system/): `workspace:^`
- [@lssm-tech/lib.ui-kit-web](https://lssm.co/docs/packages/lib.ui-kit-web/): `workspace:^`
- `lucide-react`: `catalog:ui`
- `react`: `catalog:`

### Peer dependencies

- `react`: `catalog:`

### 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`
- `@types/react`: `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
{
  "publish:pkg": "bun publish --tolerate-republish --ignore-scripts --verbose",
  "publish:pkg:canary": "bun publish:pkg --tag canary",
  "build": "contractspec-bun-build build",
  "build:bundle": "contractspec-bun-build transpile",
  "build:types": "contractspec-bun-build types",
  "dev": "contractspec-bun-build dev",
  "clean": "rimraf dist .turbo",
  "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 .",
  "prebuild": "contractspec-bun-build prebuild",
  "typecheck": "tsgo --noEmit",
  "test": "bun test --pass-with-no-tests"
}
```

## Declared documentation links

- [Module App Submission Readiness documentation](https://www.npmjs.com/package/%40lssm-tech%2Fmodule.app-submission-readiness) — declared link; destination not verified.

```json
{
  "url": "https://www.npmjs.com/package/%40lssm-tech%2Fmodule.app-submission-readiness",
  "kind": "readme"
}
```

## Existing agent-guide projection

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