docs: Phase 7 — record m's decisions (§0); Q4 override (show both task sources)

m approved the design + answered all 6 questions (via head). Five matched
the inventor pick; Q4 overridden to (b): a CalDAV-bound project with
mBrian-native tasks renders BOTH as sub-sections rather than hiding the
mBrian ones. §0 captures the picks; §5 updated to the two-section render.
Implementation: t-projax-7b-tasks (gated on the type-field API ask).
This commit is contained in:
mAi
2026-06-01 17:28:29 +02:00
parent 6e4fabfab9
commit 1020d60c75

View File

@@ -8,6 +8,23 @@
---
## §0 — m's decisions (2026-06-01, relayed via head)
m approved the design and answered all six §9 questions. Five matched the inventor pick; Q4 was overridden.
- **Q1 (Tasklist)**: (a) — one container + `metadata.projax.render='checklist'` hint, no new type. *(pick)*
- **Q2 (Done-state)**: (a) — reuse `status='done'`. *(pick)*
- **Q3 (Hybrid selector)**: (a) — `caldav-list` link presence ALONE selects the backend; `management` is orthogonal, NOT a gate. *(pick)*
- **Q4 (CalDAV + mBrian tasks on one project)**: **(b) — OVERRIDE.** Show **both** as separate sub-sections, don't hide the mBrian tasks. *(pick was (a) hide; m wants both visible — so a CalDAV-bound project can still carry mBrian-native tasks alongside its VTODOs, both rendered.)*
- **Q5 (Ordering)**: (a) — `created_at` order only; defer drag-reorder. *(pick)*
- **Q6 (Task edge)**: (a) — `child_of` + render-filter tasks out of `/tree`+`/graph`. *(pick)*
**Cross-repo ask** (POST `/api/projax/nodes` accept `type ∈ {project, task}`): head opened it with mBrian/head (msg 2719); the slug-control fix (2711) is also in flight. mBrian-native task CREATE is gated on the `type` field landing; everything else builds now.
Implementation tracked under `t-projax-7b-tasks-implement` (branch `mai/kahn/phase-7b-tasks`).
---
## §1 — Diagnosis: what exists, what's missing
**Verified against the live system (not docs):**
@@ -86,7 +103,7 @@ The detail-page Tasks section, dashboard task rollups, and timeline render the u
## §5 — UI / render implications
- **Detail page Tasks section** (`/i/{path}`): today CalDAV-only. Extend to render the uniform Task shape. For a CalDAV-bound project → VTODOs (as now). For an mBrian-native project → its `type=['task']` child nodes, with an "add task" affordance, a done checkbox (→ `status` flip), inline title/due edit, and delete — mirroring the CalDAV affordances so the two sources feel identical.
- **Detail page Tasks section** (`/i/{path}`): today CalDAV-only. Extend to render the uniform Task shape. For a CalDAV-bound project → VTODOs (as now). For an mBrian-native project → its `type=['task']` child nodes, with an "add task" affordance, a done checkbox (→ `status` flip), inline title/due edit, and delete — mirroring the CalDAV affordances so the two sources feel identical. **Per m's Q4=(b): a CalDAV-bound project that ALSO has mBrian-native task nodes renders BOTH — a CalDAV sub-section (VTODOs) and an mBrian sub-section (task nodes) — rather than hiding the mBrian tasks. The backend selector (§3.1) decides where a *newly created* task lands (CalDAV-bound → VTODO), but both sources always render when present.**
- **Checklist render mode**: a container with `metadata.projax.render='checklist'` renders tasks as a dense checkbox list (no per-row chrome) vs the default roomier task rows.
- **Tree / graph / tiles**: filter to `type=['project']` so tasks don't clutter the project DAG. `Item.Kind` already distinguishes — a one-line predicate in each renderer. (If Q6 picks the dedicated-edge alternative, this filtering is unnecessary.)
- **Dashboard / timeline**: task rollups + the chronological spine consume the uniform shape, so mBrian-native tasks appear alongside CalDAV ones with no per-surface special-casing.