diff --git a/roadmap.dj b/roadmap.dj index 63a1f76..f5bf559 100644 --- a/roadmap.dj +++ b/roadmap.dj @@ -1,7 +1,9 @@ # roadmap When, in what order, gated by what. Why: [vision](vision.dj). How: -[architecture](architecture.dj). +[architecture](architecture.dj). What ships first: [plan/mvp.dj](plan/mvp.dj) +(the app0.linji.at MVP, incl. per-concept rationale and the P.R.C. hosting +rule). ## Phases @@ -65,9 +67,34 @@ would be what fails. setClock/getClock + expireTokens behind `ZDS_DEV_TOOLS`. - **S003** ✓ — `linji login`: OAuth loopback against zds (scripted consent for tests, browser URL for humans; multi-account store). -- **S004** ✓ — `linji post` / `read` / `watch`: `at.linji.post` records. -- **S005** ✓ — M001 scenario test, 19 checkpoints, PASS. -- **S006** — spaces backend: same schema, member-only mode (phase 001 entry). +- **S004** ✓ — `linji post` / `read` / `watch`: `at.linji.post` records + (superseded by S007: posts file under threads, space-only). +- **S005** ✓ — M001 scenario test, 19 checkpoints, PASS (retired in S007; + scenario-space is the strict superset). +- **S006** ✓ — spaces backend: member-only spaces end to end. zds fork + fixes (policy-gated writes/reads, local signing-key resolution, + credential ceremony in smoke); app0 `core/spaces.zig` + CLI + (`space create/add-member/remove-member/members`, `post/read --space`); + scenario-space 29 checkpoints, PASS; M001 scenario still green. +- **S007** ✓ — threads: `at.linji.thread` records (creator's repo, in the + space; `{title, tags[], createdAt}`), posts reference threads by + canonical AT-URI (`topic` string retired), `thread create/list --tag`, + `post --thread`, `move` (author, via `space.putRecord`), readSpace + resolves threads+posts into a grouped view; OAuth scope gains + `collection=at.linji.thread`; scenario-space 44 checkpoints, PASS. + Refinement to mvp.dj decision 1: thread records live in the creator's + repo like posts (authority-repo writes are impossible for members); + owner move/tag-anything deferred to S008 (needs a zds endpoint). +- **S008** ✓ — edits, moderation, inline hashtags. zds gains an authority + override: the space authority may `space.putRecord`/`space.deleteRecord` + in member repos of their own space (signed with the member repo's key, + single-host era). CLI: `edit` / `delete` (own posts always, any post as + owner), `move` leaves a trace message in the old thread naming the + target. Tags redesigned per user decision: tags live ONLY as inline + hashtags in message text (`#BlueSky`); `thread.tags` removed (records + keep raw text, normalization is the AppView's job); `read --tag` + surfaces threads containing a tagged message. scenario-space extended + (edits, owner powers, tag search, denials), PASS; zds smokes green. ## Open questions