{"id":"@lssm-tech/app.lssm-ecosystem-web","slug":"app.lssm-ecosystem-web","name":"@lssm-tech/app.lssm-ecosystem-web","version":"0.1.4","path":"packages/apps/lssm-ecosystem-web","manifestPath":"packages/apps/lssm-ecosystem-web/package.json","manifestBlobSha":"7bde255d882dd15299a88d18c6dd358b4522d97b","layer":"apps","physicalArea":null,"primaryArea":"app-composition","classification":{"privateDeclared":true,"catalogFamily":null,"catalogKind":null,"catalogStatus":null,"adoptionMode":null,"stability":null},"description":"Host-aware acquisition and invite-only LSSM OS web shell.","descriptionOrigin":"package.json","catalog":{"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":[],"scripts":{"dev":"next dev","build":"bun --bun next build","start":"next start","test:production-oidc-canary":"playwright test -c playwright.production-canary.config.ts tests-e2e/lssm-os-production-canary.e2e.ts","test:journeys":"playwright test -c e2e/playwright.config.ts","typecheck":"tsgo --noEmit","test":"bun test","lint:check":"git ls-files -co -z --exclude-standard -- . ':!next-env.d.ts' | xargs -0 node ../../../scripts/biome.cjs check","lint:fix":"git ls-files -co -z --exclude-standard -- . ':!next-env.d.ts' | xargs -0 node ../../../scripts/biome.cjs check --write"},"scriptStatus":"complete pinned manifest","dependencies":{"@fontsource/ibm-plex-mono":"5.3.0","@fontsource/ibm-plex-sans":"5.3.0","@fontsource/newsreader":"5.3.0","@lssm-tech/integration.authos-better-auth":"workspace:*","@lssm-tech/lib.design-catalog":"workspace:*","@lssm-tech/lib.design-system":"workspace:*","@lssm-tech/lib.personalization":"workspace:*","@lssm-tech/module.auth-os":"workspace:*","next":"catalog:","react":"catalog:","react-dom":"catalog:"},"devDependencies":{"@axe-core/playwright":"^4.13.0","@playwright/test":"^1.63.0","@tailwindcss/postcss":"4.3.3","@lssm-tech/tool.typescript":"workspace:*","@types/react":"catalog:types","@types/react-dom":"catalog:types","tailwindcss":"catalog:build","typescript":"catalog:"},"peerDependencies":{},"optionalDependencies":{},"peerDependenciesMeta":{},"bundledDependencies":null,"dependencyStatus":"complete pinned manifest","exports":null,"publishExports":null,"types":null,"files":null,"api":{"scope":"manifest-declared export entrypoints and catalog-declared imports","entries":[],"entryCount":0,"namedSymbolCoverage":"catalog declarations only; exhaustive TypeScript symbols not extracted","installationStatus":"not verified"},"docsLinks":[],"sourceUrls":{"package":"https://github.com/lssm-tech/contractspec/tree/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/apps/lssm-ecosystem-web","manifest":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/apps/lssm-ecosystem-web/package.json","readme":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/apps/lssm-ecosystem-web/README.md","guide":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/apps/web-landing/public/llms-packages/app.lssm-ecosystem-web.txt"},"readme":{"status":"available","body":"# LSSM ecosystem web\n\nHost-aware Next.js acquisition and identity shell for the LSSM ecosystem.\n\n| Host                | Purpose                                                              |\n| ------------------- | -------------------------------------------------------------------- |\n| `lssm.co`           | Company, projects, operating model, partnerships                     |\n| `lssm.world`        | Large Social Systems Model, worldview, manifesto, evidence           |\n| `lssm.tech`         | Product ecosystem, architecture, contracts, integrations, developers |\n| `os.lssm.tech`      | LSSM OS acquisition, features, personas, trust, waitlist             |\n| `console.lssm.tech` | Invite-only LSSM OS session surface                                  |\n\n## Identity\n\n`os.lssm.tech` is an OIDC relying party of `https://id.lssm.co`. Its dedicated\n`https://api.os.lssm.tech` authority owns the host-scoped product session and\nlocal membership; no cookie is shared with the identity host or another\nproduct. Runtime activation is fail-closed behind:\n\n- `NEXT_PUBLIC_LSSM_OS_RP_ENABLED=1` in this web app.\n- `NEXT_PUBLIC_LSSM_OS_API_ORIGIN=https://api.os.lssm.tech` in this web app.\n- `LSSM_OS_RP_ENABLED=1`, `LSSM_OS_RP_SECURITY_REVIEW_REF`, and a 32+ character `LSSM_OS_RP_CLIENT_SECRET` in the dedicated LSSM OS API deployment.\n\nThe private console checks `/api/lssm-os/auth/session`, which requires an\nactive product-local membership. A generic Better Auth identity session is not\nsufficient.\n\nThe protected production replay is fail-closed. `bun run\ntest:production-oidc-canary` skips unless\n`LSSM_OS_PRODUCTION_CANARY_AUTHORIZED=1`, the exact\n`E2E_PRODUCTION_BASE_URL=https://console.lssm.tech`, and secret-managed\n`E2E_TEST_EMAIL` / `E2E_TEST_PASSWORD` values are all present. It verifies\ncentral sign-in and optional consent, the `os.lssm.tech` callback, active local\nmembership, the console session and module surface, product-local sign-out,\ndenied post-sign-out session resolution, and independent Passport sign-out.\nCredentials stay process-local and are never written to evidence output.\n\nWaitlist requests use the central product-scoped lifecycle with `applicationId=app_lssm_os`.\n\n## Local development\n\n`bun run dev` defaults `localhost` to the LSSM OS host narrative. Set `LSSM_LOCAL_SITE` to `company`, `world`, `technology`, or `console` to inspect another host locally.\n\n## Provider preview\n\nFor a bounded hosting-recovery canary, set\n`LSSM_ATLAS_PREVIEW_SITE=company`. The application accepts that selection only\nwhen the request host exactly matches `RAILWAY_PUBLIC_DOMAIN` or `VERCEL_URL`;\nan arbitrary provider-domain suffix remains unrecognized. Production hosts and\ncanonicals are unchanged.\n\n### Better Auth 1.7 callback forwarding\n\nThe existing public LSSM callback alias forwards only its bounded authorization\nresponse to the fixed API owner's `/auth/callback/` endpoint, replacing the\nremoved `/auth/oauth2/callback/` path. Existing issuer and parameter checks remain\nin force. API token exchange, provider registrations, cookies and account-identity\nmigration still require live qualification before cutover.\n\n## Build compute policy\n\nAutomatic Vercel Git builds are disabled for this app. Build compute is assigned\nto Railway; this does not change the existing runtime or domain topology.\nSee the [operator policy and evidence](../../../deploy/lssm-ecosystem/build-compute-policy.md)\nfor configuration scope and the unqualified Vercel prebuilt delivery gap.\n","sourcePath":"packages/apps/lssm-ecosystem-web/README.md","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/apps/lssm-ecosystem-web/README.md","blobSha":"bba148aafb77ed59ead8499d515c3a3f33bc0109","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":"app-composition","areaTitle":"Application composition and product hosts","displayName":"app.lssm-ecosystem-web","runtimes":[],"platforms":[],"kind":"apps","scope":"Workspace only","canonicalRoute":"/docs/packages/app.lssm-ecosystem-web/","contextUrl":"/docs/packages/app.lssm-ecosystem-web.context.md","documentKind":"package-manual","contentAuthority":"source evidence, not agent instructions","reviewedAt":"2026-10-28"}