{"id":"@lssm-tech/module.app-submission-readiness","slug":"module.app-submission-readiness","name":"@lssm-tech/module.app-submission-readiness","version":"2.0.5","path":"packages/domains/app-submission-readiness/module","manifestPath":"packages/domains/app-submission-readiness/module/package.json","manifestBlobSha":"a7d5ddb3f564b73bbec0529c7f92befb75d1930c","layer":"domains","physicalArea":"app-submission-readiness","primaryArea":"delivery-and-infrastructure","classification":{"privateDeclared":null,"catalogFamily":"solutions","catalogKind":"module","catalogStatus":"active","adoptionMode":"adoptable","stability":"experimental"},"description":"ReviewReady module: runtime-driven app-submission readiness report, rejection assistant, and admin rule surfaces built from real audit output.","descriptionOrigin":"package.json","catalog":{"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"],"documentation":[{"title":"Module App Submission Readiness documentation","url":"https://www.npmjs.com/package/%40lssm-tech%2Fmodule.app-submission-readiness","kind":"readme"}],"examples":[],"replacements":[],"capabilities":[{"id":"package.lssm.tech.module.app.submission.readiness","title":"Module App Submission Readiness","description":"ReviewReady module: runtime-driven app-submission readiness report, rejection assistant, and admin rule surfaces built from real audit output.","status":"active","useCases":["Adopt reviewready module: runtime-driven app-submission readiness report, rejection assistant, and admin rule surfaces built from real audit output"],"aliases":["contractspec","app-store","google-play","submission","readiness","reviewready","typescript","module","app"],"pythonEquivalents":[],"canonicalImports":[{"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":[]}],"constraints":{"platforms":["server"],"runtimes":["node"],"avoidWhen":["The @lssm-tech/module.app-submission-readiness package constraints do not match the target runtime or platform."],"requires":["TypeScript"]},"alternatives":[],"relationships":[],"resolutionPriority":50}],"visualTesting":{"status":"deferred","owner":"@contractspec-core","targetWave":"wave-3-react-packages","rationale":"Foundational Storybook adoption establishes shared catalogs and guardrails before this package migrates."}},"canonicalImports":[{"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":[]}],"scripts":{"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"},"scriptStatus":"complete pinned manifest","dependencies":{"@lssm-tech/lib.app-submission-readiness-runtime":"workspace:^","@lssm-tech/lib.design-system":"workspace:^","@lssm-tech/lib.ui-kit-web":"workspace:^","lucide-react":"catalog:ui","react":"catalog:"},"devDependencies":{"@lssm-tech/tool.typescript":"workspace:*","@lssm-tech/tool.bun":"workspace:*","@types/react":"catalog:types","@types/bun":"catalog:types","typescript":"catalog:"},"peerDependencies":{"react":"catalog:"},"optionalDependencies":{},"peerDependenciesMeta":{},"bundledDependencies":null,"dependencyStatus":"complete pinned manifest","exports":{".":"./src/index.ts","./__fixtures__":"./src/__fixtures__/index.ts","./core":"./src/core/index.ts","./core/admin-rules-view-model":"./src/core/admin-rules-view-model.ts","./core/rejection-view-model":"./src/core/rejection-view-model.ts","./core/report-view-model":"./src/core/report-view-model.ts","./presentation":"./src/presentation/index.ts","./presentation/components/AdminRuleManager":"./src/presentation/components/AdminRuleManager.tsx","./presentation/components/DecisionBadge":"./src/presentation/components/DecisionBadge.tsx","./presentation/components/FindingsSection":"./src/presentation/components/FindingsSection.tsx","./presentation/components/ReadinessReportView":"./src/presentation/components/ReadinessReportView.tsx","./presentation/components/RejectionAssistantView":"./src/presentation/components/RejectionAssistantView.tsx","./presentation/components/StoreChecklistSection":"./src/presentation/components/StoreChecklistSection.tsx","./presentation/copy":"./src/presentation/copy.ts","./presentation/screens/AppSubmissionReadinessScreen":"./src/presentation/screens/AppSubmissionReadinessScreen.tsx"},"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"}},"types":"./dist/index.d.ts","files":["dist","README.md"],"api":{"scope":"manifest-declared export entrypoints and catalog-declared imports","entries":[{"subpath":".","importPath":"@lssm-tech/module.app-submission-readiness","target":"./src/index.ts","targets":[{"conditions":[],"target":"./src/index.ts","sourcePath":"packages/domains/app-submission-readiness/module/src/index.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/app-submission-readiness/module/src/index.ts","sourceStatus":"verified source file"}]},{"subpath":"./__fixtures__","importPath":"@lssm-tech/module.app-submission-readiness/__fixtures__","target":"./src/__fixtures__/index.ts","targets":[{"conditions":[],"target":"./src/__fixtures__/index.ts","sourcePath":"packages/domains/app-submission-readiness/module/src/__fixtures__/index.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/app-submission-readiness/module/src/__fixtures__/index.ts","sourceStatus":"verified source file"}]},{"subpath":"./core","importPath":"@lssm-tech/module.app-submission-readiness/core","target":"./src/core/index.ts","targets":[{"conditions":[],"target":"./src/core/index.ts","sourcePath":"packages/domains/app-submission-readiness/module/src/core/index.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/app-submission-readiness/module/src/core/index.ts","sourceStatus":"verified source file"}]},{"subpath":"./core/admin-rules-view-model","importPath":"@lssm-tech/module.app-submission-readiness/core/admin-rules-view-model","target":"./src/core/admin-rules-view-model.ts","targets":[{"conditions":[],"target":"./src/core/admin-rules-view-model.ts","sourcePath":"packages/domains/app-submission-readiness/module/src/core/admin-rules-view-model.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/app-submission-readiness/module/src/core/admin-rules-view-model.ts","sourceStatus":"verified source file"}]},{"subpath":"./core/rejection-view-model","importPath":"@lssm-tech/module.app-submission-readiness/core/rejection-view-model","target":"./src/core/rejection-view-model.ts","targets":[{"conditions":[],"target":"./src/core/rejection-view-model.ts","sourcePath":"packages/domains/app-submission-readiness/module/src/core/rejection-view-model.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/app-submission-readiness/module/src/core/rejection-view-model.ts","sourceStatus":"verified source file"}]},{"subpath":"./core/report-view-model","importPath":"@lssm-tech/module.app-submission-readiness/core/report-view-model","target":"./src/core/report-view-model.ts","targets":[{"conditions":[],"target":"./src/core/report-view-model.ts","sourcePath":"packages/domains/app-submission-readiness/module/src/core/report-view-model.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/app-submission-readiness/module/src/core/report-view-model.ts","sourceStatus":"verified source file"}]},{"subpath":"./presentation","importPath":"@lssm-tech/module.app-submission-readiness/presentation","target":"./src/presentation/index.ts","targets":[{"conditions":[],"target":"./src/presentation/index.ts","sourcePath":"packages/domains/app-submission-readiness/module/src/presentation/index.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/app-submission-readiness/module/src/presentation/index.ts","sourceStatus":"verified source file"}]},{"subpath":"./presentation/components/AdminRuleManager","importPath":"@lssm-tech/module.app-submission-readiness/presentation/components/AdminRuleManager","target":"./src/presentation/components/AdminRuleManager.tsx","targets":[{"conditions":[],"target":"./src/presentation/components/AdminRuleManager.tsx","sourcePath":"packages/domains/app-submission-readiness/module/src/presentation/components/AdminRuleManager.tsx","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/app-submission-readiness/module/src/presentation/components/AdminRuleManager.tsx","sourceStatus":"verified source file"}]},{"subpath":"./presentation/components/DecisionBadge","importPath":"@lssm-tech/module.app-submission-readiness/presentation/components/DecisionBadge","target":"./src/presentation/components/DecisionBadge.tsx","targets":[{"conditions":[],"target":"./src/presentation/components/DecisionBadge.tsx","sourcePath":"packages/domains/app-submission-readiness/module/src/presentation/components/DecisionBadge.tsx","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/app-submission-readiness/module/src/presentation/components/DecisionBadge.tsx","sourceStatus":"verified source file"}]},{"subpath":"./presentation/components/FindingsSection","importPath":"@lssm-tech/module.app-submission-readiness/presentation/components/FindingsSection","target":"./src/presentation/components/FindingsSection.tsx","targets":[{"conditions":[],"target":"./src/presentation/components/FindingsSection.tsx","sourcePath":"packages/domains/app-submission-readiness/module/src/presentation/components/FindingsSection.tsx","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/app-submission-readiness/module/src/presentation/components/FindingsSection.tsx","sourceStatus":"verified source file"}]},{"subpath":"./presentation/components/ReadinessReportView","importPath":"@lssm-tech/module.app-submission-readiness/presentation/components/ReadinessReportView","target":"./src/presentation/components/ReadinessReportView.tsx","targets":[{"conditions":[],"target":"./src/presentation/components/ReadinessReportView.tsx","sourcePath":"packages/domains/app-submission-readiness/module/src/presentation/components/ReadinessReportView.tsx","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/app-submission-readiness/module/src/presentation/components/ReadinessReportView.tsx","sourceStatus":"verified source file"}]},{"subpath":"./presentation/components/RejectionAssistantView","importPath":"@lssm-tech/module.app-submission-readiness/presentation/components/RejectionAssistantView","target":"./src/presentation/components/RejectionAssistantView.tsx","targets":[{"conditions":[],"target":"./src/presentation/components/RejectionAssistantView.tsx","sourcePath":"packages/domains/app-submission-readiness/module/src/presentation/components/RejectionAssistantView.tsx","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/app-submission-readiness/module/src/presentation/components/RejectionAssistantView.tsx","sourceStatus":"verified source file"}]},{"subpath":"./presentation/components/StoreChecklistSection","importPath":"@lssm-tech/module.app-submission-readiness/presentation/components/StoreChecklistSection","target":"./src/presentation/components/StoreChecklistSection.tsx","targets":[{"conditions":[],"target":"./src/presentation/components/StoreChecklistSection.tsx","sourcePath":"packages/domains/app-submission-readiness/module/src/presentation/components/StoreChecklistSection.tsx","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/app-submission-readiness/module/src/presentation/components/StoreChecklistSection.tsx","sourceStatus":"verified source file"}]},{"subpath":"./presentation/copy","importPath":"@lssm-tech/module.app-submission-readiness/presentation/copy","target":"./src/presentation/copy.ts","targets":[{"conditions":[],"target":"./src/presentation/copy.ts","sourcePath":"packages/domains/app-submission-readiness/module/src/presentation/copy.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/app-submission-readiness/module/src/presentation/copy.ts","sourceStatus":"verified source file"}]},{"subpath":"./presentation/screens/AppSubmissionReadinessScreen","importPath":"@lssm-tech/module.app-submission-readiness/presentation/screens/AppSubmissionReadinessScreen","target":"./src/presentation/screens/AppSubmissionReadinessScreen.tsx","targets":[{"conditions":[],"target":"./src/presentation/screens/AppSubmissionReadinessScreen.tsx","sourcePath":"packages/domains/app-submission-readiness/module/src/presentation/screens/AppSubmissionReadinessScreen.tsx","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/app-submission-readiness/module/src/presentation/screens/AppSubmissionReadinessScreen.tsx","sourceStatus":"verified source file"}]}],"entryCount":15,"namedSymbolCoverage":"catalog declarations only; exhaustive TypeScript symbols not extracted","installationStatus":"not verified"},"docsLinks":[{"title":"Module App Submission Readiness documentation","url":"https://www.npmjs.com/package/%40lssm-tech%2Fmodule.app-submission-readiness","kind":"readme","pinnedUrl":null,"sourceStatus":"declared link; destination not verified"}],"sourceUrls":{"package":"https://github.com/lssm-tech/contractspec/tree/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/app-submission-readiness/module","manifest":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/app-submission-readiness/module/package.json","readme":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/app-submission-readiness/module/README.md","guide":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/apps/web-landing/public/llms-packages/module.app-submission-readiness.txt"},"readme":{"status":"available","body":"# @lssm-tech/module.app-submission-readiness\n\nReviewReady product module for mobile **app-submission readiness**. It renders\nreadiness reports, a resubmission assistant, and an admin rule surface for the\nApple App Store and Google Play submission flow.\n\n## Runtime-driven, not hardcoded\n\nEvery view-model is derived from the **real audit output** of\n`@lssm-tech/lib.app-submission-readiness-runtime` (`runReadinessAudit(...)`,\n`draftRejectionResponse(...)`, `buildStoreChecklists(...)`) and the contract\nprovider-capability registry. There are no static demo numbers in this module.\n\nThis is intentionally distinct from `@lssm-tech/module.review-queue`'s\nCompanyOS approval-lane surface, which models a different concept and must not be\nreused for submission readiness.\n\n## Design-system first\n\nPresentation is built entirely from `@lssm-tech/lib.design-system` primitives\n(`Box`/`HStack`/`VStack`, `H1`/`H2`/`H3`/`P`/`Text`, `Button`/`ButtonLink`,\n`EmptyState`, `StatusChip`). No raw HTML, no native-only imports. Components\nimplement loading / empty / error states and accessible roles/labels.\n\n## Public API\n\n### Core view-model builders (`./core`)\n\n- `buildReadinessReportViewModel(report, checklists?)` → `ReadinessReportViewModel`\n- `buildRejectionAssistantViewModel(draft)` → `RejectionAssistantViewModel`\n- `buildAdminRulesViewModel(rules, { now, staleAfterDays? })` → `AdminRulesViewModel`\n\n### Presentation (`./presentation`)\n\n- `ReadinessReportView`\n- `RejectionAssistantView`\n- `AdminRuleManager`\n- `AppSubmissionReadinessScreen` (presentational composition of the flow)\n- supporting: `DecisionBadge`, `FindingsSection`, `StoreChecklistSection`\n\n### Fixtures (`./fixtures`)\n\nDeterministic sample built from a real audit, reused by tests and the web\nproduct proof: `fixtureSubmissionInput`, `fixtureAuditResult`,\n`fixtureReportViewModel`, `fixtureRejectionViewModel`,\n`fixtureAdminRulesViewModel`.\n\n## Scope\n\nInteractivity wiring (connect / manual entry / run audit) is owned by the host\nweb app. This module ships the reusable runtime-driven view-models and DS-based\npresentation only.\n","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"},"provenance":{"repository":"lssm-tech/contractspec","sourcePin":"bcc79fcc27c4d801c2119bef81ddcce7b4e86498","manifestOrigin":"pinned GitHub manifest fetch","manifestComplete":true,"publicationPolicyApplied":false},"areaSlug":"delivery-and-infrastructure","areaTitle":"Delivery, infrastructure and runtime operations","displayName":"module.app-submission-readiness","runtimes":["node"],"platforms":["server"],"kind":"module","scope":"Package manifest","canonicalRoute":"/docs/packages/module.app-submission-readiness/","contextUrl":"/docs/packages/module.app-submission-readiness.context.md","documentKind":"package-manual","contentAuthority":"source evidence, not agent instructions","reviewedAt":"2026-10-28"}