Troubleshooter
Diagnose and fix common issues in Open Mercato standalone apps. Follow the systematic approach: identify symptoms, check common causes, verify fixes.
Table of Contents
- Diagnostic Flow
- Module Issues
- Entity & Migration Issues
- API Route Issues
- UI & Widget Issues
- Build & Type Issues
- Extension Issues
- Database Issues
- Quick Diagnostics
1. Diagnostic Flow
When the developer reports a problem, follow this order:
Step 1: Identify the Layer
| Symptom |
Layer |
Go to |
| Module not discovered / route 404 |
Module wiring |
§2 |
| Database column/table errors |
Entity & Migration |
§3 |
| API returns 500 / wrong data |
API Route |
§4 |
| Page blank / component missing |
UI & Widget |
§5 |
| Build fails / type errors |
Build & Type |
§6 |
| Enricher/interceptor/widget not working |
Extension |
§7 |
| Connection refused / query errors |
Database |
§8 |
Step 2: Check Generated Files
Run these commands first — they fix 60%+ of issues:
yarn generate # Regenerate module discovery files
yarn dev # Restart dev server
If the issue persists after yarn generate, continue to the specific section.
Step 3: Verify the Basics
# Check module is registered
grep '<module_id>' src/modules.ts
# Check generated files exist
ls .mercato/generated/
# Check for TypeScript errors
yarn typecheck
2. Module Issues
Module not found / not loading
Symptoms: 404 on module routes, module not in sidebar, "module not registered" errors
Checklist:
Is the module registered in src/modules.ts?
// Must have this entry:
{ id: '<module_id>', from: '@app' }
Fix: Add the entry and run yarn generate.
Did you run yarn generate?
Check if .mercato/generated/ contains your module's entries.
Fix: Run yarn generate.
Is the module folder named correctly?
Must be plural, snake_case: src/modules/<module_id>/
Fix: Rename folder to match module ID.
Does index.ts export metadata?
export const metadata: ModuleInfo = { name: '<module_id>', ... }
Fix: Add the metadata export.
Is the dev server running with latest changes?
Fix: Restart with yarn dev.
Module loads but pages 404
Symptoms: Module appears in generated files but backend pages return 404
Checklist:
Are backend page files in the right location?
- List page:
backend/page.tsx (not backend/index.tsx)
- Detail page:
backend/<entities>/[id].tsx (bracket notation)
Fix: Rename to match auto-discovery convention.
Do pages export metadata with requireAuth?
export const metadata = { requireAuth: true, features: ['<module_id>.view'] }
Fix: Add metadata export.
Does the user have the required ACL features?
Check setup.ts has defaultRoleFeatures for the user's role.
Fix: Add features to role defaults, re-run setup.
3. Entity & Migration Issues
"Column does not exist" / "Table does not exist"
Symptoms: Database queries fail with missing column/table errors
Checklist:
Did you create a migration after adding/changing the entity?
yarn db:generate # Probes/creates migration file
Fix: Run yarn db:generate to inspect the required migration, then keep only the scoped SQL for your module and update src/modules/<module_id>/migrations/.snapshot-open-mercato.json.
Is the entity declared in the right file with the right imports?
Entity classes belong in src/modules/<module_id>/data/entities.ts and decorators must come from @mikro-orm/decorators/legacy.
Fix: move stale entities/<Entity>.ts patterns into data/entities.ts and fix the imports before regenerating the migration.
Did you apply the migration?
yarn db:migrate # Applies pending migrations
Fix: Run yarn db:migrate.
Is the migration file correct?
Check src/modules/<module_id>/migrations/ for the latest migration.
Verify it has the expected columns and types.
Fix: If wrong, delete the migration file, fix the entity, and regenerate.
Migration generation creates unexpected changes
Symptoms: yarn db:generate produces migrations for unrelated modules
Checklist:
Are node_modules up to date?
yarn install
Did you modify a core module entity without ejecting?
Never edit node_modules/@open-mercato/*.
Fix: Revert changes to node_modules. Use UMES extensions instead, or eject the module.
Is a module snapshot stale?
Check whether the generated SQL recreates a table or column that already has a committed migration.
Fix: update that module's migrations/.snapshot-open-mercato.json to include the already-migrated schema, then re-run yarn db:generate and expect no changes.
Entity changes not reflected
Symptoms: Changed entity file but API still returns old schema
Checklist:
- Verify the entity lives in
src/modules/<module_id>/data/entities.ts and imports decorators from @mikro-orm/decorators/legacy
- Run
yarn generate — entity discovery is cached
- Run
yarn db:generate — schema needs a migration
- Run
yarn db:migrate — migration needs to be applied
- Restart
yarn dev — server caches entity metadata
4. API Route Issues
Route returns 404
Checklist:
Is the file in the correct path?
src/modules/<module_id>/api/<method>/<route-path>.ts
Method folders: get/, post/, put/, delete/
Does it export a default handler?
export default handler
Does it export openApi?
export const openApi = { summary: '...', tags: ['...'] }
API routes without openApi export are not discovered.
Did you run yarn generate?
Route returns 500
Checklist:
- Check server logs — look for the actual error message
- Is the entity imported correctly? Verify import path
- Is
organization_id filtering applied? Required for all tenant-scoped queries
- Is the zod schema matching the request body? Schema validation errors return 422, not 500
Route returns 401 / 403
Checklist:
- Is the user authenticated? Check session/token
- Does the user have required features? Check
acl.ts + setup.ts role mapping
- Are features assigned to the user's role? Check role configuration in admin
5. UI & Widget Issues
Backend page is blank
Checklist:
- Does the page have
'use client' directive? Required for pages with interactivity
- Check browser console for errors — React rendering errors appear there
- Is the correct import path used? Use
@open-mercato/ui/backend/...
- Are API calls using
apiCall / apiCallOrThrow? Never use raw fetch
DataTable shows no data or missing rows
Checklist:
- Is the API path correct? Check
apiPath prop matches actual API route
- Is the entity ID correct? Check
entityId prop
- Does the API return data? Test with
curl or browser devtools
- Does the user have
view feature? Check ACL
- Are pagination props wired? Without
page, pageSize, totalCount, and onPageChange, the table only shows the first page with no pagination controls. Check the API returns totalCount in the response.
- Is
organization_id scoping correct? Records created without proper organization_id won't appear when the API filters by current org
- Are records soft-deleted? Records with
deletedAt set are filtered out by default
Sidebar icons broken or wrong
Checklist:
- Are icons using
lucide-react components? Import from lucide-react (e.g., import { Trophy } from 'lucide-react')
- AVOID
React.createElement('svg', ...) — inline SVG via React.createElement is fragile in bundler contexts and can produce broken icons after yarn generate
- Is the icon defined in
page.meta.ts? Export as part of metadata.icon
- Did you run
yarn generate? The generator reads icon metadata from page.meta.ts
Correct pattern:
// page.meta.ts
import { Trophy } from 'lucide-react'
export const metadata = { icon: <Trophy className="size-4" /> }
CrudForm doesn't save
Checklist:
- Check browser network tab — look for the POST/PUT request and response
- Is the zod schema matching the form fields? Mismatched field names cause silent failures
- Are required fields filled? Check form validation
- Does the API route handle the HTTP method? Check
api/post/ or api/put/ exists
6. Build & Type Issues
yarn build fails
Checklist:
- Run
yarn typecheck first — isolates type errors from build errors
- Run
yarn generate first — regenerates type-dependent files
- Check import paths — use
@open-mercato/<package>/... for framework imports
- Check for circular imports — module A importing from module B importing from module A
Type errors after adding a module
Checklist:
- Run
yarn generate — updates generated type files
- Check entity imports — use correct relative or package paths
- Check zod schema matches entity — types derived from zod must align
"Module not found" in imports
Checklist:
- Is the package installed? Check
package.json dependencies
- Is the import path correct? Framework packages use
@open-mercato/<package>/...
- Is the package built? Run
yarn install to link workspace packages
7. Extension Issues
Response Enricher data not appearing
Checklist:
Is data/enrichers.ts exporting enrichers array?
export const enrichers = [enricher]
Did you run yarn generate? Enrichers are auto-discovered
Is targetEntity correct? Must match the target module's entity ID exactly
(e.g., customers.person not customers.people)
Is the enricher throwing silently? Check critical: false (default) — errors are swallowed.
Temporarily set critical: true to surface errors.
Check enricher id is unique — duplicate IDs cause only one to run
Widget not appearing in target module
Checklist:
Is the widget mapped in injection-table.ts?
export const widgetInjections = {
'<spot-id>': { widgetId: '<your-widget-id>', priority: 50 },
}
Is the spot ID correct? Check the exact format:
- Forms:
crud-form:<entityId>:fields
- Tables:
data-table:<tableId>:columns
- Menus:
menu:sidebar:main
Does the widget file export default?
export default widget
Is the widget metadata.id unique? Duplicate IDs cause conflicts
Did you run yarn generate? Widgets are auto-discovered
API Interceptor not running
Checklist:
Is api/interceptors.ts exporting interceptors array?
export { interceptors }
Does targetRoute match? Check exact route path (without /api/ prefix)
Does methods include the HTTP method? e.g., ['GET', 'POST']
Is the interceptor throwing instead of returning { ok: false }?
Errors in interceptors are caught silently
Check priority — lower priority runs first. Another interceptor may be blocking
Component replacement not working
Checklist:
- Is
widgets/components.ts exporting componentOverrides?
- Is the
componentId handle correct? Use ComponentReplacementHandles helpers
- For
replacement mode: is propsSchema provided?
- Did you run
yarn generate?
8. Database Issues
Connection refused
Checklist:
Is PostgreSQL running?
docker compose ps # Check container status
docker compose up -d # Start if stopped
Is .env configured correctly? Check DATABASE_URL
Is the database created?
yarn initialize # Creates DB + first admin
Query timeout / slow queries
Checklist:
- Are indexes present on
organization_id and tenant_id? Check entity has @Index()
- Is the query filtering by
organization_id? Missing filter = full table scan
- Are enrichers using batch queries? Missing
enrichMany causes N+1
9. Quick Diagnostics
The "Fix Everything" Sequence
When nothing else works, run this full reset sequence:
yarn generate # 1. Regenerate all discovery files
yarn typecheck # 2. Check for type errors
yarn db:generate # 3. Check for pending migrations
yarn db:migrate # 4. Apply any pending migrations
yarn dev # 5. Restart dev server
Common Error → Fix Table
| Error Message |
Likely Cause |
Fix |
Module '<id>' not found |
Not in src/modules.ts |
Add entry, yarn generate |
Table '<name>' does not exist |
Missing migration |
yarn db:generate + yarn db:migrate |
Column '<name>' does not exist |
Entity changed without migration |
yarn db:generate + yarn db:migrate |
Cannot find module '@open-mercato/...' |
Package not installed |
yarn install |
Route not found / 404 |
Missing openApi export or wrong path |
Add export, yarn generate |
401 Unauthorized |
Missing auth or session expired |
Check login, check requireAuth |
403 Forbidden |
User lacks required feature |
Check acl.ts + setup.ts roles |
422 Unprocessable Entity |
Zod validation failed |
Check request body matches schema |
| Widget not showing |
Missing injection-table.ts mapping |
Add mapping, yarn generate |
| Enricher data missing |
critical: false hiding errors |
Set critical: true temporarily |
| Interceptor not running |
Wrong targetRoute or methods |
Check exact route path and methods |
ECONNREFUSED |
Database/service not running |
docker compose up -d |
| DataTable shows fewer rows than expected |
Missing pagination props or API totalCount |
Wire page/pageSize/totalCount/onPageChange props |
| Sidebar icons broken or wrong |
Inline SVG via React.createElement |
Use lucide-react components in page.meta.ts |
yarn generate changes unexpected files |
Stale generated files |
Delete .mercato/generated/, re-run |
Rules
- ALWAYS run
yarn generate as first diagnostic step
- ALWAYS check server logs / browser console for actual error messages
- NEVER edit files in
.mercato/generated/ or node_modules/
- NEVER assume the issue — verify with actual error output
- Fix the root cause, not the symptom — temporary workarounds become permanent bugs
- When suggesting a fix, include the exact command or code change needed
1---2name: troubleshooter3description: Diagnose and fix common issues in Open Mercato standalone apps. Use when encountering errors, unexpected behavior, modules not loading, widgets not appearing, migrations failing, build errors, or any "it doesn't work" situation. Triggers on "error", "not working", "broken", "fix", "debug", "why isn't", "can't", "fails", "crash", "missing", "404", "500", "module not found", "widget not showing".4---56# Troubleshooter78Diagnose and fix common issues in Open Mercato standalone apps. Follow the systematic approach: identify symptoms, check common causes, verify fixes.910## Table of Contents11121. [Diagnostic Flow](#1-diagnostic-flow)132. [Module Issues](#2-module-issues)143. [Entity & Migration Issues](#3-entity--migration-issues)154. [API Route Issues](#4-api-route-issues)165. [UI & Widget Issues](#5-ui--widget-issues)176. [Build & Type Issues](#6-build--type-issues)187. [Extension Issues](#7-extension-issues)198. [Database Issues](#8-database-issues)209. [Quick Diagnostics](#9-quick-diagnostics)2122---2324## 1. Diagnostic Flow2526When the developer reports a problem, follow this order:2728### Step 1: Identify the Layer2930| Symptom | Layer | Go to |31|---------|-------|-------|32| Module not discovered / route 404 | Module wiring | §2 |33| Database column/table errors | Entity & Migration | §3 |34| API returns 500 / wrong data | API Route | §4 |35| Page blank / component missing | UI & Widget | §5 |36| Build fails / type errors | Build & Type | §6 |37| Enricher/interceptor/widget not working | Extension | §7 |38| Connection refused / query errors | Database | §8 |3940### Step 2: Check Generated Files4142Run these commands first — they fix 60%+ of issues:4344```bash45yarn generate # Regenerate module discovery files46yarn dev # Restart dev server47```4849If the issue persists after `yarn generate`, continue to the specific section.5051### Step 3: Verify the Basics5253```bash54# Check module is registered55grep '<module_id>' src/modules.ts5657# Check generated files exist58ls .mercato/generated/5960# Check for TypeScript errors61yarn typecheck62```6364---6566## 2. Module Issues6768### Module not found / not loading6970**Symptoms**: 404 on module routes, module not in sidebar, "module not registered" errors7172**Checklist**:73741. **Is the module registered in `src/modules.ts`?**75 ```typescript76 // Must have this entry:77 { id: '<module_id>', from: '@app' }78 ```79 Fix: Add the entry and run `yarn generate`.80812. **Did you run `yarn generate`?**82 Check if `.mercato/generated/` contains your module's entries.83 Fix: Run `yarn generate`.84853. **Is the module folder named correctly?**86 Must be plural, snake_case: `src/modules/<module_id>/`87 Fix: Rename folder to match module ID.88894. **Does `index.ts` export `metadata`?**90 ```typescript91 export const metadata: ModuleInfo = { name: '<module_id>', ... }92 ```93 Fix: Add the metadata export.94955. **Is the dev server running with latest changes?**96 Fix: Restart with `yarn dev`.9798### Module loads but pages 40499100**Symptoms**: Module appears in generated files but backend pages return 404101102**Checklist**:1031041. **Are backend page files in the right location?**105 - List page: `backend/page.tsx` (not `backend/index.tsx`)106 - Detail page: `backend/<entities>/[id].tsx` (bracket notation)107 Fix: Rename to match auto-discovery convention.1081092. **Do pages export `metadata` with `requireAuth`?**110 ```typescript111 export const metadata = { requireAuth: true, features: ['<module_id>.view'] }112 ```113 Fix: Add metadata export.1141153. **Does the user have the required ACL features?**116 Check `setup.ts` has `defaultRoleFeatures` for the user's role.117 Fix: Add features to role defaults, re-run setup.118119---120121## 3. Entity & Migration Issues122123### "Column does not exist" / "Table does not exist"124125**Symptoms**: Database queries fail with missing column/table errors126127**Checklist**:1281291. **Did you create a migration after adding/changing the entity?**130 ```bash131 yarn db:generate # Probes/creates migration file132 ```133 Fix: Run `yarn db:generate` to inspect the required migration, then keep only the scoped SQL for your module and update `src/modules/<module_id>/migrations/.snapshot-open-mercato.json`.1341352. **Is the entity declared in the right file with the right imports?**136 Entity classes belong in `src/modules/<module_id>/data/entities.ts` and decorators must come from `@mikro-orm/decorators/legacy`.137 Fix: move stale `entities/<Entity>.ts` patterns into `data/entities.ts` and fix the imports before regenerating the migration.1381393. **Did you apply the migration?**140 ```bash141 yarn db:migrate # Applies pending migrations142 ```143 Fix: Run `yarn db:migrate`.1441454. **Is the migration file correct?**146 Check `src/modules/<module_id>/migrations/` for the latest migration.147 Verify it has the expected columns and types.148 Fix: If wrong, delete the migration file, fix the entity, and regenerate.149150### Migration generation creates unexpected changes151152**Symptoms**: `yarn db:generate` produces migrations for unrelated modules153154**Checklist**:1551561. **Are node_modules up to date?**157 ```bash158 yarn install159 ```1601612. **Did you modify a core module entity without ejecting?**162 Never edit `node_modules/@open-mercato/*`.163 Fix: Revert changes to node_modules. Use UMES extensions instead, or eject the module.1641653. **Is a module snapshot stale?**166 Check whether the generated SQL recreates a table or column that already has a committed migration.167 Fix: update that module's `migrations/.snapshot-open-mercato.json` to include the already-migrated schema, then re-run `yarn db:generate` and expect `no changes`.168169### Entity changes not reflected170171**Symptoms**: Changed entity file but API still returns old schema172173**Checklist**:1741751. Verify the entity lives in `src/modules/<module_id>/data/entities.ts` and imports decorators from `@mikro-orm/decorators/legacy`1762. Run `yarn generate` — entity discovery is cached1773. Run `yarn db:generate` — schema needs a migration1784. Run `yarn db:migrate` — migration needs to be applied1795. Restart `yarn dev` — server caches entity metadata180181---182183## 4. API Route Issues184185### Route returns 404186187**Checklist**:1881891. **Is the file in the correct path?**190 `src/modules/<module_id>/api/<method>/<route-path>.ts`191 Method folders: `get/`, `post/`, `put/`, `delete/`1921932. **Does it export a default handler?**194 ```typescript195 export default handler196 ```1971983. **Does it export `openApi`?**199 ```typescript200 export const openApi = { summary: '...', tags: ['...'] }201 ```202 API routes without `openApi` export are not discovered.2032044. **Did you run `yarn generate`?**205206### Route returns 500207208**Checklist**:2092101. **Check server logs** — look for the actual error message2112. **Is the entity imported correctly?** Verify import path2123. **Is `organization_id` filtering applied?** Required for all tenant-scoped queries2134. **Is the zod schema matching the request body?** Schema validation errors return 422, not 500214215### Route returns 401 / 403216217**Checklist**:2182191. **Is the user authenticated?** Check session/token2202. **Does the user have required features?** Check `acl.ts` + `setup.ts` role mapping2213. **Are features assigned to the user's role?** Check role configuration in admin222223---224225## 5. UI & Widget Issues226227### Backend page is blank228229**Checklist**:2302311. **Does the page have `'use client'` directive?** Required for pages with interactivity2322. **Check browser console for errors** — React rendering errors appear there2333. **Is the correct import path used?** Use `@open-mercato/ui/backend/...`2344. **Are API calls using `apiCall` / `apiCallOrThrow`?** Never use raw `fetch`235236### DataTable shows no data or missing rows237238**Checklist**:2392401. **Is the API path correct?** Check `apiPath` prop matches actual API route2412. **Is the entity ID correct?** Check `entityId` prop2423. **Does the API return data?** Test with `curl` or browser devtools2434. **Does the user have `view` feature?** Check ACL2445. **Are pagination props wired?** Without `page`, `pageSize`, `totalCount`, and `onPageChange`, the table only shows the first page with no pagination controls. Check the API returns `totalCount` in the response.2456. **Is `organization_id` scoping correct?** Records created without proper `organization_id` won't appear when the API filters by current org2467. **Are records soft-deleted?** Records with `deletedAt` set are filtered out by default247248### Sidebar icons broken or wrong249250**Checklist**:2512521. **Are icons using `lucide-react` components?** Import from `lucide-react` (e.g., `import { Trophy } from 'lucide-react'`)2532. **AVOID `React.createElement('svg', ...)`** — inline SVG via `React.createElement` is fragile in bundler contexts and can produce broken icons after `yarn generate`2543. **Is the icon defined in `page.meta.ts`?** Export as part of `metadata.icon`2554. **Did you run `yarn generate`?** The generator reads icon metadata from `page.meta.ts`256257**Correct pattern**:258```tsx259// page.meta.ts260import { Trophy } from 'lucide-react'261export const metadata = { icon: <Trophy className="size-4" /> }262```263264### CrudForm doesn't save265266**Checklist**:2672681. **Check browser network tab** — look for the POST/PUT request and response2692. **Is the zod schema matching the form fields?** Mismatched field names cause silent failures2703. **Are required fields filled?** Check form validation2714. **Does the API route handle the HTTP method?** Check `api/post/` or `api/put/` exists272273---274275## 6. Build & Type Issues276277### `yarn build` fails278279**Checklist**:2802811. **Run `yarn typecheck` first** — isolates type errors from build errors2822. **Run `yarn generate` first** — regenerates type-dependent files2833. **Check import paths** — use `@open-mercato/<package>/...` for framework imports2844. **Check for circular imports** — module A importing from module B importing from module A285286### Type errors after adding a module287288**Checklist**:2892901. **Run `yarn generate`** — updates generated type files2912. **Check entity imports** — use correct relative or package paths2923. **Check zod schema matches entity** — types derived from zod must align293294### "Module not found" in imports295296**Checklist**:2972981. **Is the package installed?** Check `package.json` dependencies2992. **Is the import path correct?** Framework packages use `@open-mercato/<package>/...`3003. **Is the package built?** Run `yarn install` to link workspace packages301302---303304## 7. Extension Issues305306### Response Enricher data not appearing307308**Checklist**:3093101. **Is `data/enrichers.ts` exporting `enrichers` array?**311 ```typescript312 export const enrichers = [enricher]313 ```3143152. **Did you run `yarn generate`?** Enrichers are auto-discovered3163173. **Is `targetEntity` correct?** Must match the target module's entity ID exactly318 (e.g., `customers.person` not `customers.people`)3193204. **Is the enricher throwing silently?** Check `critical: false` (default) — errors are swallowed.321 Temporarily set `critical: true` to surface errors.3223235. **Check enricher `id` is unique** — duplicate IDs cause only one to run324325### Widget not appearing in target module326327**Checklist**:3283291. **Is the widget mapped in `injection-table.ts`?**330 ```typescript331 export const widgetInjections = {332 '<spot-id>': { widgetId: '<your-widget-id>', priority: 50 },333 }334 ```3353362. **Is the spot ID correct?** Check the exact format:337 - Forms: `crud-form:<entityId>:fields`338 - Tables: `data-table:<tableId>:columns`339 - Menus: `menu:sidebar:main`3403413. **Does the widget file export default?**342 ```typescript343 export default widget344 ```3453464. **Is the widget `metadata.id` unique?** Duplicate IDs cause conflicts3473485. **Did you run `yarn generate`?** Widgets are auto-discovered349350### API Interceptor not running351352**Checklist**:3533541. **Is `api/interceptors.ts` exporting `interceptors` array?**355 ```typescript356 export { interceptors }357 ```3583592. **Does `targetRoute` match?** Check exact route path (without `/api/` prefix)3603613. **Does `methods` include the HTTP method?** e.g., `['GET', 'POST']`3623634. **Is the interceptor throwing instead of returning `{ ok: false }`?**364 Errors in interceptors are caught silently3653665. **Check `priority`** — lower priority runs first. Another interceptor may be blocking367368### Component replacement not working369370**Checklist**:3713721. **Is `widgets/components.ts` exporting `componentOverrides`?**3732. **Is the `componentId` handle correct?** Use `ComponentReplacementHandles` helpers3743. **For `replacement` mode**: is `propsSchema` provided?3754. **Did you run `yarn generate`?**376377---378379## 8. Database Issues380381### Connection refused382383**Checklist**:3843851. **Is PostgreSQL running?**386 ```bash387 docker compose ps # Check container status388 docker compose up -d # Start if stopped389 ```3903912. **Is `.env` configured correctly?** Check `DATABASE_URL`3923933. **Is the database created?**394 ```bash395 yarn initialize # Creates DB + first admin396 ```397398### Query timeout / slow queries399400**Checklist**:4014021. **Are indexes present on `organization_id` and `tenant_id`?** Check entity has `@Index()`4032. **Is the query filtering by `organization_id`?** Missing filter = full table scan4043. **Are enrichers using batch queries?** Missing `enrichMany` causes N+1405406---407408## 9. Quick Diagnostics409410### The "Fix Everything" Sequence411412When nothing else works, run this full reset sequence:413414```bash415yarn generate # 1. Regenerate all discovery files416yarn typecheck # 2. Check for type errors417yarn db:generate # 3. Check for pending migrations418yarn db:migrate # 4. Apply any pending migrations419yarn dev # 5. Restart dev server420```421422### Common Error → Fix Table423424| Error Message | Likely Cause | Fix |425|--------------|-------------|-----|426| `Module '<id>' not found` | Not in `src/modules.ts` | Add entry, `yarn generate` |427| `Table '<name>' does not exist` | Missing migration | `yarn db:generate` + `yarn db:migrate` |428| `Column '<name>' does not exist` | Entity changed without migration | `yarn db:generate` + `yarn db:migrate` |429| `Cannot find module '@open-mercato/...'` | Package not installed | `yarn install` |430| `Route not found` / 404 | Missing `openApi` export or wrong path | Add export, `yarn generate` |431| `401 Unauthorized` | Missing auth or session expired | Check login, check `requireAuth` |432| `403 Forbidden` | User lacks required feature | Check `acl.ts` + `setup.ts` roles |433| `422 Unprocessable Entity` | Zod validation failed | Check request body matches schema |434| Widget not showing | Missing `injection-table.ts` mapping | Add mapping, `yarn generate` |435| Enricher data missing | `critical: false` hiding errors | Set `critical: true` temporarily |436| Interceptor not running | Wrong `targetRoute` or `methods` | Check exact route path and methods |437| `ECONNREFUSED` | Database/service not running | `docker compose up -d` |438| DataTable shows fewer rows than expected | Missing pagination props or API `totalCount` | Wire `page`/`pageSize`/`totalCount`/`onPageChange` props |439| Sidebar icons broken or wrong | Inline SVG via `React.createElement` | Use `lucide-react` components in `page.meta.ts` |440| `yarn generate` changes unexpected files | Stale generated files | Delete `.mercato/generated/`, re-run |441442---443444## Rules445446- **ALWAYS** run `yarn generate` as first diagnostic step447- **ALWAYS** check server logs / browser console for actual error messages448- **NEVER** edit files in `.mercato/generated/` or `node_modules/`449- **NEVER** assume the issue — verify with actual error output450- Fix the root cause, not the symptom — temporary workarounds become permanent bugs451- When suggesting a fix, include the exact command or code change needed