Summary
nav-manifest.ts (new in the 7.x palette nav) advertises 26 destinations. Two of them have no page, so clicking them lands on a bare Not found:
| Nav entry |
src/app/… page |
Pulse API |
Result |
PROJECTS → /projects |
❌ missing |
✅ modules/projects.ts → /api/projects 200 |
404 |
Security → /security |
❌ missing |
✅ /api/security 200 |
404 |
The backends are fine and already return real data. Only the page components are missing. Every other nav href resolves (audit below), so this is two specific gaps, not a systemic routing problem.
Reproduce
Fresh 7.1.1 install, Pulse running:
curl -s -o /dev/null -w '%{http_code}\n' http://localhost:31337/projects # 404
curl -s -o /dev/null -w '%{http_code}\n' http://localhost:31337/security # 404
# …while the APIs behind them are healthy:
curl -s http://localhost:31337/api/projects
# {"count":0,"source":"USER/PROJECTS.md","generatedAt":"…","projects":[]}
curl -s http://localhost:31337/api/security
# {"model":"minimal-v1","description":"Three-layer defense: constitutional rule …"}
Or just click PROJECTS in the top nav.
Evidence
LifeOS/install/LIFEOS/PULSE/Observability/src/lib/palette/nav-manifest.ts @ 03a969d:
48: { href: "/projects", label: "PROJECTS", icon: FolderGit2, keywords: ["repos", "sites"] },
80: { href: "/security", label: "Security", icon: ShieldCheck, keywords: ["monitoring"] },
Neither route exists:
$ git ls-tree --name-only upstream/main:LifeOS/install/LIFEOS/PULSE/Observability/src/app
agents air amber arbol assets assistant books bunker business conduit
content docs finances globals.css growth health hooks hypotheses knowledge
layout.tsx life local memory page.tsx performance providers.tsx skills
system telos usage work
# ^ no `projects`, no `security`
Full nav audit (24/26 OK)
Script to re-run — worth keeping as a guard, since a nav entry pointing at a non-existent route fails silently at build time (static export happily emits the link):
APP=LifeOS/install/LIFEOS/PULSE/Observability/src/app
NAV=LifeOS/install/LIFEOS/PULSE/Observability/src/lib/palette/nav-manifest.ts
grep -oE 'href: "[^"]+"' "$NAV" | sed 's/href: "//;s/"//' | sort -u | while read -r h; do
slug="${h#/}"
[ -z "$slug" ] && continue
[ -f "$APP/$slug/page.tsx" ] || echo "BROKEN: $h (no $APP/$slug/page.tsx)"
done
Output on upstream/main @ 03a969d:
BROKEN: /projects (no …/src/app/projects/page.tsx)
BROKEN: /security (no …/src/app/security/page.tsx)
All 24 others resolve, including the nested ones (/memory/graph, /knowledge/graph, /system/graph, /telos/item).
Suggested fix
Either direction is a small change — the data layer is already done:
- Ship the two pages.
/api/projects already returns { count, source, generatedAt, projects[] } (parsed from USER/PROJECTS.md, with badges, hrefs and open-session flags), and /api/security returns the security model. Both are render-ready; they just need a page.tsx each, in the shape of the existing /work or /skills pages.
- Or drop the two entries from
nav-manifest.ts until the pages land — one line each, and it stops advertising a dead end.
Option 1 seems right for /projects given modules/projects.ts is a complete, tested parser that currently has no consumer in the UI at all.
Environment
- LifeOS 7.1.1 (
upstream/main @ 03a969d)
- Linux (Ubuntu), Bun 1.3.14, Pulse on
:31337, Next.js static export
- Reproduced against a clean 7.1.1 payload, and confirmed in-browser (bare
Not found page)
Not a fork-local issue: verified directly against danielmiessler/LifeOS@03a969d — both nav-manifest.ts entries and both missing pages are upstream as shipped.
Summary
nav-manifest.ts(new in the 7.x palette nav) advertises 26 destinations. Two of them have no page, so clicking them lands on a bareNot found:src/app/…pagePROJECTS→/projectsmodules/projects.ts→/api/projects200Security→/security/api/security200The backends are fine and already return real data. Only the page components are missing. Every other nav href resolves (audit below), so this is two specific gaps, not a systemic routing problem.
Reproduce
Fresh 7.1.1 install, Pulse running:
Or just click PROJECTS in the top nav.
Evidence
LifeOS/install/LIFEOS/PULSE/Observability/src/lib/palette/nav-manifest.ts@03a969d:Neither route exists:
Full nav audit (24/26 OK)
Script to re-run — worth keeping as a guard, since a nav entry pointing at a non-existent route fails silently at build time (static export happily emits the link):
Output on
upstream/main@03a969d:All 24 others resolve, including the nested ones (
/memory/graph,/knowledge/graph,/system/graph,/telos/item).Suggested fix
Either direction is a small change — the data layer is already done:
/api/projectsalready returns{ count, source, generatedAt, projects[] }(parsed fromUSER/PROJECTS.md, with badges, hrefs and open-session flags), and/api/securityreturns the security model. Both are render-ready; they just need apage.tsxeach, in the shape of the existing/workor/skillspages.nav-manifest.tsuntil the pages land — one line each, and it stops advertising a dead end.Option 1 seems right for
/projectsgivenmodules/projects.tsis a complete, tested parser that currently has no consumer in the UI at all.Environment
upstream/main@03a969d):31337, Next.js static exportNot foundpage)Not a fork-local issue: verified directly against
danielmiessler/LifeOS@03a969d— bothnav-manifest.tsentries and both missing pages are upstream as shipped.