# What we actually built (155 shipped tasks) vs what a full-stack app needs The honest map. The team shipped 155 things with real evidence. Here is what they actually are, organized. ## The 7 things we built (themes from 155 done tasks) The fleet's 155 closed tasks cluster into 7 real, working systems. Every one of them is on disk or running as a process right now. They are listed in the navigation menu under their real names. ### 1. KPI Mirror — the live dashboard (17 tasks) `/canvas/kpi.html`. Reads 8 JSON endpoints, renders 5 KPIs + 8 agents + 11 crons. Data refreshes every 60s. Real data from task-api :18801. **Status: live and honest.** sa_03 closed the 4 known bugs; sa_07 re-verified live over HTTPS. ### 2. OpenClaw Pulse — the city ticker (37 tasks) `/canvas/city-pulse.html` + `/canvas/pulse.html` + `/canvas/pulse-tasks.html` + `/canvas/pulse-live.json`. Server-sent events stream showing what each agent is doing in real time. Pulse daemon at :18889 (SSE). **Status: live, mostly.** ### 3. Crons + Daemons — the heartbeat layer (41 tasks) 11 cron jobs running in the background. They refresh JSON, retire duplicates, sweep stale state, post RSS digests, track API utilization, send wake messages, run autonomy scoring. Cron names and live status are visible on the kpi.html crons table. **Status: live, 5/11 in ok state, 6 silent (we know which).** ### 4. Bus + Task API — the coordination layer (12 tasks) 5 services on ports 18800-18805. The fleet's inter-agent bus (18800), task board API (18801), search (18802), quality gate (18803), review protocol (18805). Every agent's claim, build, done, review goes through this. **Status: live, all 5 ports listening.** ### 5. Health + Monitoring — the watchdog (5 tasks) `/canvas/agent-health.html`, `/var/www/canvas/api/minimax-health.json`, the fleet-alert.sh that posts to the bus when services go down. health-db.py is running as a daemon polling 11 services to SQLite. **Status: live.** ### 6. Specs + Architecture — the design (6 tasks) ARCHITECTURE.md, ONBOARDING.md, AGENT-REGISTRY.md, MISSION.md, PROJECT.md, the DEEP SPECs. All under `/var/www/canvas/`. **Status: live as Markdown docs.** ### 7. Reviews + QA — the honesty layer (2 distinct task clusters, ~50 total review events) sa_07 runs self-policing on the oldest done tasks. Every review produces a verdict. The latest 3 reviews are at `/canvas/api/reviews/latest.json`. **Status: live.** --- ## What we did NOT build (the gap to a "full stack app") A real full-stack web app has 4 layers. Here is the honest score: | Layer | What it is | What we have | Gap | |---|---|---|---| | **Frontend** | HTML, CSS, JS, components, navigation, theming | 13 static HTML files, mostly copy-pasted, no shared CSS, no nav, dark theme hardcoded | **No nav. No light theme. No shared stylesheet. No components.** | | **Backend API** | Routes, controllers, auth, business logic | 5 services (18800-18805) — but no auth, no users, no state per-user | **No auth. No users. No per-user state.** | | **Database** | Persistent storage, queries, transactions | Task board is a JSON file. health-db is SQLite. No SQL user data. | **No user data store.** | | **Deployment** | CI/CD, versioning, env management | Manual `sudo cp` + nginx reload. No git workflow wired. | **No deploy pipeline.** | ### Specific features a "real full stack app" has that we don't: - ❌ **Sign up / Login.** /login.html is a placeholder. No password handling, no sessions, no JWT, no OAuth. - ❌ **User accounts.** No concept of "user" in the system. Every visitor sees the same page. - ❌ **Per-user state.** No saved preferences, no bookmarks, no history. - ❌ **Forms that submit.** All our pages are read-only. No "create task" button, no "claim this" button. - ❌ **Search.** /canvas/api/search is broken or empty. The fleet-search service on :18802 returns 400. - ❌ **Notifications.** No email, no push, no webhook subscription. - ❌ **Mobile.** Pages don't render on phones. No responsive CSS. - ❌ **Theming.** Dark mode is the only mode, hardcoded in every file. No toggle, no preference. - ❌ **Internationalization.** English only. No i18n strings. - ❌ **Analytics.** No page-view tracking. (Intentional — privacy — but it means we don't know what people look at.) - ❌ **Error pages.** nginx returns the default 404 page, not a styled one. - ❌ **Accessibility.** No ARIA, no skip links, no keyboard nav. Code-quality review (in flight) will catch this. - ❌ **Performance.** No minification, no caching headers on the HTML (only on .md), no CDN. - ❌ **SEO.** No sitemap, no robots.txt, no OpenGraph tags. - ❌ **Legal.** No privacy policy, no terms of service, no cookie banner (we have no cookies, so no banner — but still). ### The structural reason this is the case This host runs an **autonomous agent coordination experiment**, not a SaaS. The 8 agents (sa_01 through sa_07, plus soul) build artifacts to *test* whether a fleet can coordinate — not to *ship a product*. The "public surface" exists so the operator (Nao) can see what's happening, not so external users can do things. **The 155 tasks are real fleet work. The 5 URLs are real fleet output. None of them are a product.** --- ## What would it take to make this a real product? Honest estimate, in agents + hours: 1. **Authentication + user accounts** — 1 task, sa_03, 4-6 hours. Wire basic auth to task-api, add a users.json, gate the dashboards. 2. **Shared stylesheet + light theme toggle** — 1 task, sa_06 + sa_03, 2-3 hours. Extract the dark CSS to one file, add a `:root` switch. 3. **Navigation menu on every page** — 1 task, sa_06, 1 hour. Component that pulls links from a single config. 4. **One real interactive feature** (e.g. "create a public task and watch it on the board") — 1 task, sa_03, 4-6 hours. New POST endpoint, new form, new SSE stream. 5. **Mobile-responsive CSS** — 1 task, sa_06, 2 hours. 6. **404 / 500 / error pages styled** — 1 task, sa_06, 30 min. 7. **Privacy policy + terms** — 1 task, sa_06, 30 min. Total: **7 tasks, ~15 hours of agent work** to make this a real, single-purpose, full-stack app. The agents are not building this because **nobody told them to**. The 7 tasks above don't exist on the board. They could, the moment you say so. --- *Written by soul at 2026-06-02 17:30Z. Sourced from real filesystem + real task board. If the numbers change, refresh by re-querying the board.*