{ "schemaVersion": "1.0", "id": "rows-entities-runtime", "title": "Rows and Entities Runtime", "classification": "mixed", "status": "review-needed", "owner": "core-pruning", "description": "Prisma, database access, rows, entity data structures, and minimal runtime pieces that other features build on.", "rationale": [ "Many features depend on Prisma, entities, and rows as data foundations.", "The runtime foundation is core, while no-code builders and code generation are candidates for extraction." ], "codeAreas": [ "packages/db", "prisma", "apps/web/app/modules/rows", "apps/web/app/utils/db/**", "apps/web/app/modules/templates/defaultEntityTemplates.ts", "apps/web/app/routes/admin/entities*", "apps/web/app/routes/app.$tenant/settings/entities*", "apps/api/src/app.ts", "/v1/entities/:entity", "/v1/entities/:entity/rows", "/v1/entities/:entity/rows/:rowId", "/v1/relationships", "/v1/relationships/:id", "/v1/exports/:exportJobId/download-url", "packages/exports/src", "apps/web/app/modules/codeGenerator", "apps/web/app/modules/formulas", "apps/web/app/modules/jsonProperties" ], "dependencies": [ "auth-tenancy" ], "consumers": [ "core", "billing", "plugin-candidates", "remove-candidates" ], "integration": { "ownership": "system-only", "surfaces": { "adminRoutes": [ "apps/web/app/routes/admin/entities*" ], "tenantRoutes": [ "apps/web/app/routes/app.$tenant/settings/entities*" ], "publicRoutes": [], "apiRoutes": [ "apps/api/src/app.ts", "/v1/entities/:entity", "/v1/entities/:entity/rows", "/v1/entities/:entity/rows/:rowId", "/v1/relationships", "/v1/relationships/:id", "/v1/exports/:exportJobId/download-url" ] }, "configuration": { "admin": [ "Entity schema and runtime policy" ], "tenant": [ "Tenant row/entity usage where enabled" ], "environment": [ "DATABASE_URL" ], "secrets": [ "Database credentials are deployment-owned." ] }, "workers": { "required": false, "queues": [], "jobs": [], "notes": [ "Rows runtime should not require workers unless a feature layer adds async processing." ] }, "externalProviders": [ "database" ], "permissions": [ "admin.entities.*", "app.rows.*" ], "auditEvents": [ "entity.updated", "row.created", "row.updated", "row.deleted" ], "billingImpacts": [ "May support plan limits or usage meters owned by billing/plugin manifests." ], "uat": [ "Rows runtime supports retained app data flows.", "CSV and XLSX exports neutralize spreadsheet formula injection prefixes before artifact delivery.", "No-code builder surfaces can be separated from runtime." ] }, "boundaries": { "mustKeep": [ "Prisma schema and database package foundation", "Rows runtime required by retained app data flows", "Entity data primitives used by core features" ], "mayMoveToPlugin": [ "No-code entity builder UI", "Code generator", "Formula and JSON property authoring surfaces", "Default CRM-oriented entity templates" ], "mustNotTouch": [ "Runtime routes or APIs during manifest Phase 1", "Route and navigation edits owned by parallel workers" ] }, "pruning": { "phase": "1", "action": "review", "notes": [ "Split core runtime from no-code product surfaces before deleting any rows or entity code.", "Audit CRM and email marketing coupling before changing default entity templates." ] }, "validation": { "source": [ "docs/feature-inventory.md" ], "lastReviewed": "2026-05-16" } }