PULSE/modules/projects.ts parseProjects() locates the projects table by requiring a header row containing both Project and Deploy — an assumption baked in from the original software-project table shape (Project | Path | URL | Deploy | Stack). A PROJECTS.md using a general life/work schema (e.g. Project | Domain | Client | Type | Notes) has no Deploy column, so header detection fails, the table is never found, and the "live" group parses 0 rows.
The Work page compounds this: its project-count badge and empty-state guide (app/work/page.tsx) read only the "live" group's count, so a user with a fully populated PROJECTS.md sees "no projects" and a prompt to wire up a tracker, even though /api/projects/health correctly reports status: "degraded" with a drift message. That drift signal never reaches the UI.
Suggested direction: decouple the "live" parser from the Deploy-column assumption (detect by Project alone, treat Path/URL/Deploy/Stack as optional columns), and surface group.error/health-drift in the Work page UI instead of only in the API.
PULSE/modules/projects.ts parseProjects() locates the projects table by requiring a header row containing both Project and Deploy — an assumption baked in from the original software-project table shape (Project | Path | URL | Deploy | Stack). A PROJECTS.md using a general life/work schema (e.g. Project | Domain | Client | Type | Notes) has no Deploy column, so header detection fails, the table is never found, and the "live" group parses 0 rows.
The Work page compounds this: its project-count badge and empty-state guide (app/work/page.tsx) read only the "live" group's count, so a user with a fully populated PROJECTS.md sees "no projects" and a prompt to wire up a tracker, even though /api/projects/health correctly reports status: "degraded" with a drift message. That drift signal never reaches the UI.
Suggested direction: decouple the "live" parser from the Deploy-column assumption (detect by Project alone, treat Path/URL/Deploy/Stack as optional columns), and surface group.error/health-drift in the Work page UI instead of only in the API.