2026-03-15 07:36:32Claude (MCP):
[mcp] Add completion status markers to VPS phase headings (2026-03-15)
Tasks/VPS_Phases.md ..
@@ 1,7 1,7 @@
---
category: reference
tags: [design, tasks, phases, vps]
-
last_updated: 2026-03-14
+
last_updated: 2026-03-15
confidence: medium
---
@@ 33,7 33,9 @@
---
-
## V0: VM Infrastructure
+
## V0: VM Infrastructure — COMPLETE
+
+
**Status:** Complete as of 2026-03-15. Ansible-provisioned VM is live, Caddy serving valid TLS on bare domain and wildcard subdomains.
**Goal:** Ansible-provisioned Debian 12 VM with Caddy serving valid TLS on bare domain and wildcard.
@@ 62,7 64,9 @@
These are throwaway prototypes, not production code. The point is to prove the protocol flows work against real counterparts (bsky.social PDS, Claude.ai MCP client) so that V3 and V5 are pure implementation, not discovery.
-
### VS-1: ATProto OAuth Spike
+
### VS-1: ATProto OAuth Spike — COMPLETE
+
+
**Status:** Complete as of 2026-03-15. Full ATProto OAuth flow validated end-to-end on robot.wtf.
Deploy the Bluesky cookbook Flask demo (`bluesky-social/cookbook/python-oauth-web-app`) directly on the VM behind Caddy. Minimal adaptation — just enough to run it at `robot.wtf/auth/` with the robot.wtf client JWK.
@@ 82,7 86,9 @@
**Expected time:** Half a day. The demo is ready to run.
-
### VS-2: MCP OAuth AS Stub
+
### VS-2: MCP OAuth AS Stub — COMPLETE
+
+
**Status:** Complete as of 2026-03-15. Persistent SQLite OAuth provider deployed; Claude.ai OAuth flow validated end-to-end.
Build a minimal, hard-coded OAuth 2.1 AS that implements the five endpoints Claude.ai needs. No real auth, no database, no ATProto — just the protocol surface with canned responses. Deploy behind Caddy and point Claude.ai at it.
@@ 115,7 121,9 @@
---
-
## V1: Otterwiki on Caddy
+
## V1: Otterwiki on Caddy — COMPLETE
+
+
**Status:** Complete as of 2026-03-15. Single Otterwiki instance running behind Gunicorn/Caddy with multi-tenant slug routing operational.
**Goal:** Single Otterwiki instance running behind Gunicorn behind Caddy, with multi-tenant slug-based routing on wildcard subdomains. No auth yet — test users hardcoded in SQLite.
**Status:** Partial as of 2026-03-15. Dev wiki (this wiki) migrated to dev.robot.wtf. The Third Gulf War wiki (3gw.robot.wtf / 3gw.robot.wtf) remains on the home server via DNS CNAME exception and has not been migrated.
**Goal:** The existing development wiki (Third Gulf War research + this dev wiki) running on the VPS under robot.wtf, proving the full Otterwiki stack works in the new environment with real data.
@@ 159,7 169,9 @@
---
-
## V3: ATProto OAuth (Browser Login)
+
## V3: ATProto OAuth (Browser Login) — COMPLETE
+
+
**Status:** Complete as of 2026-03-15. Production auth service live with full signup flow; real Bluesky users can sign in and create accounts.
**Goal:** Real users can sign in with their Bluesky handle and get a platform JWT.
@@ 184,7 196,9 @@
---
-
## V4: Management API + Wiki Lifecycle
+
## V4: Management API + Wiki Lifecycle — COMPLETE
+
+
**Status:** Complete as of 2026-03-15. Wiki CRUD, ACL management, tier limits, and git HTTP read all operational.
**Goal:** Authenticated users can create wikis, manage collaborators, and get MCP bearer tokens via API.
@@ 207,7 221,9 @@
---
-
## V5: MCP OAuth AS (Claude.ai)
+
## V5: MCP OAuth AS (Claude.ai) — COMPLETE
+
+
**Status:** Complete as of 2026-03-15. Claude.ai successfully connected to a robot.wtf wiki via OAuth; full MCP OAuth flow operational in production.
**Goal:** Claude.ai can connect to a robot.wtf wiki via its standard MCP OAuth flow.
@@ 229,7 245,9 @@
---
-
## V6: Frontend + Landing Page
+
## V6: Frontend + Landing Page — COMPLETE
+
+
**Status:** Complete as of 2026-03-15. Landing page live at robot.wtf/; management UI live at robot.wtf/app/*.
**Goal:** Web UI for account management and a landing page that explains what robot.wtf is.
@@ 252,7 270,9 @@
---
-
## V7: Semantic Search + Operational Hardening
+
## V7: Semantic Search + Operational Hardening — NOT STARTED
+
+
**Status:** Not started as of 2026-03-15. ChromaDB deployed and numpy pinned, but embedding worker and search integration not yet verified.
**Goal:** Semantic search works. Backups run. The service is ready for real users.