Capture approved issue map, P1 batch order, E2E plans, and implementation-pass scope for the next work batch.
14 KiB
Backlog triage, issues, E2E coverage, and next-batch planning
Date: 2026-07-03 Status: approved (design); implementation pass not started
Goal
Turn the post-v0.1 backlog into an actionable state: one Gitea issue per item (epics with sub-issues where needed), Playwright regression plans for every bug, P1 docs/tasks/ specs, ADR placeholders for cross-cutting choices, STATUS/ARCHITECTURE updates, and a prioritized next-batch plan.
Decisions (interview)
| Topic | Choice |
|---|---|
| Rich text for journal | Pull shared editor ADR + component into P1; full notes overhaul in the same batch (editor, render formatting everywhere, mobile overflow). |
| Batch ordering | Bugs first, then features. |
| Spec depth | Full backlog issues now; full docs/tasks/ only for P1; P2/P3 get issues + light epic checklists. |
| Organization model | Issue-centric: Gitea is source of truth for work items; task briefs are the agent execution format for P1. |
| API timing | API early: after bugs, API foundation for existing modules; journal and notes extend it; LLM agent last. |
Approaches considered
- Issue-centric (chosen). Gitea issues own tracking; P1 task briefs link from issues; ADRs gate cross-cutting work; E2E criteria live on issues and land with PRs.
- Task-doc-centric.
docs/tasks/primary; Gitea thin stubs. Weaker epic/sub-issue tracking. - Monolithic batch plan. One mega-issue per priority tier. Fights one-issue-per-item and partial progress.
Issue map and labels
Labels: bug | enhancement | feature | epic | research
Priority labels: priority/p1 | priority/p2 | priority/p3
| # | Title | Label | Priority | Notes |
|---|---|---|---|---|
| 1 | Quick-add opens create UI, not module page | bug | P1 | |
| 2 | Dashboard edit mode renders live widgets at true size | bug | P1 | |
| 3 | Garden container plant count wrong | bug | P1 | Audit sibling counts |
| 4 | Bangs not editable (add edit + delete) | bug | P1 | |
| 5 | Notes overflow horizontally on mobile | bug | P1 | Closed with / blocked by #10 |
| 6 | Missing back navigation — audit + shared affordance | bug | P1 | Sweep all detail routes |
| 7 | Calendar reminders overhaul | enhancement | P2 | Builds on task 41 |
| 8 | Lists index: inline task add + list property edit | enhancement | P2 | |
| 9 | Comments on lists and tasks | feature | P2 | Consider generic comment component |
| 10 | Notes editor overhaul (shared rich-text) | enhancement / epic children | P1 | Pulled into P1; ADR 0004 |
| 11 | Bang stats dashboard widget | enhancement | P2 | Related to #4; not blocking |
| 12 | Appearance / theming options | epic | P3 | Feasibility first |
| 13 | Journal module | epic | P1 | Sub-issues; depends on #10 + API foundation |
| 14 | API + LLM agent chat | epic | P1 | API children early; agent children last |
| 15 | Pets module | epic | P2 | Garden-shaped; light checklist |
| 16 | Shopping/pantry module | epic | P2 | Design before build; light checklist |
| 17 | Backups & exports | epic | P2 | Extends task 60; light checklist |
| 18 | GPS locations for calendar events | research | P3 | Issue only |
| 19 | Lists ↔ notes cohesion | research | P3 | Proposal/ADR later; not code |
Epic children (file as separate issues)
#10 Shared rich-text / notes overhaul
- Research ADR (library choice, storage format, shared component contract)
- Shared editor component
- Notes create/edit wiring
- Render formatting on all notes surfaces (index, widgets, share view)
- Mobile overflow fix (closes #5)
#13 Journal
- Research ADR (mood/journal libs; build-vs-adopt)
- Schema + CRUD
- Index (recent entries, browse all, entry-day calendar)
- Entry detail + create (date/time required; all else optional)
- Mood tracker view
- Insights/stats views
- E2E happy path
- Journal API endpoints (additive on API foundation)
#14 API + LLM
- Architecture ADR (token auth vs OIDC session; API shape; OpenAI-compatible provider; MCP yes/no)
- API surface + token auth + docs for existing modules (calendar, lists, notes, garden, bangs; dashboards as needed)
- Agent chat UI
- Tool-calling mapped to API
- Smoke tests (mock provider in CI)
P2/P3 epics (#12, #15–17): epic body holds a light checklist only — no child issues until that batch.
Issue body template
Every issue includes:
- Background / current behavior
- Expected behavior or feature description
- Acceptance criteria (including E2E where applicable)
- Priority label
- Links:
docs/tasks/…when present, blocked-by / related issues
P1 batch order
Strict sequence:
| Step | Work | Issues | Task brief(s) |
|---|---|---|---|
| 1 | Quick-add opens create dialogs/sheets | #1 | 80-quick-add-create-ui.md |
| 2 | Dashboard edit mode live widgets | #2 | 81-dashboard-edit-live-widgets.md |
| 3 | Garden plant count | #3 | 82-garden-plant-count.md |
| 4 | Bang edit + delete | #4 | 83-bang-edit-delete.md |
| 5 | Back-nav audit + shared header | #6 | 84-back-navigation.md |
| 6 | API ADR + token auth + endpoints for existing modules | #14 (API children) | ADR 0006-api-llm-agent.md + 87-api-surface.md |
| 7 | Shared rich-text + full notes overhaul (+ mobile overflow); extend notes API if needed | #10, #5 | ADR 0004-rich-text-editor.md + 85-rich-text-notes.md |
| 8 | Journal module (UI + journal API in same epic) | #13 (+ children) | ADR 0005-journal-research.md + 86-journal-module.md |
| 9 | LLM agent chat | #14 (agent children) | 88-llm-agent-chat.md |
Rules
- API is additive; no freeze that blocks journal. New modules document/register endpoints as they ship.
- #14 epic stays open across steps 6 and 9 (API early, agent late).
- #13 depends on #10 (editor) and on API foundation existing.
- #5 closes with #10.
- Task numbering continues after 76 (80+). Do not renumber existing tasks.
docs/tasks/README.mdgains Phase 9 — Post-v0.1.- P2/P3: Gitea issues only until their batch; STATUS may list them under Backlog.
E2E plan
Follow tests/e2e/*.spec.ts patterns (dev-login storage state, happy-path assertions). Regression tests land with each bug/feature PR, not as a separate upfront suite.
Bugs
| Bug | Spec strategy |
|---|---|
| Quick-add create UI | Extend dashboard.spec.ts and/or quick-add.spec.ts: FAB action opens dialog/sheet with create controls, not only navigation. |
| Dashboard edit live size | Extend dashboard.spec.ts: ?edit=1 shows real widget content (e.g. Recent activity); prefer stable height assertion only if non-flaky. |
| Garden plant count | Extend garden.spec.ts: plant in container → count ≥ 1. |
| Bang edit/delete | New bangs.spec.ts: record → edit date → assert → delete → assert gone. |
| Notes mobile overflow | Extend notes.spec.ts at 375px: no horizontal overflow; lands with #10. |
| Back navigation | navigation.spec.ts or per-module: detail routes expose Back and return to parent. |
P1 features
| Feature | Coverage |
|---|---|
| API surface | Vitest for auth + route handlers; optional Playwright smoke only if useful. |
| Rich-text / notes | notes.spec.ts: formatted note visible on detail + other surfaces. |
| Journal | New journal.spec.ts: minimal entry → recent list → detail → mood tracker loads. |
| LLM agent | Smoke with mock/stub provider in test env; no live LLM in CI. |
Docs and ADRs
P1 task briefs (implementation pass)
| File | Covers |
|---|---|
80–84 |
One brief per bug (quick-add, dashboard edit, plant count, bangs, back-nav) |
85-rich-text-notes.md |
Shared editor + full notes overhaul + mobile overflow |
86-journal-module.md |
Journal epic (split later only if execution needs it) |
87-api-surface.md |
Token auth + API for existing modules |
88-llm-agent-chat.md |
Agent UI + OpenAI-compatible tools |
Format: Goal / Why / Depends on / Scope / Out of scope / Acceptance criteria / Notes. Each brief links its Gitea issue(s).
ADRs
| ADR | Topic | Gates |
|---|---|---|
0004-rich-text-editor.md |
Library (e.g. TipTap), storage format, shared component contract | 85, journal body |
0005-journal-research.md |
Build-vs-adopt for mood/journal UI and charts | 86 implementation |
0006-api-llm-agent.md |
Token auth vs OIDC; API shape; OpenAI-compatible client; MCP decision | 87 then 88 |
Triage pass stubs titles in docs/decisions/README.md (and stub files pointing at epic issues). Full ADR bodies when that step runs.
P2/P3 research (#18, #19, appearance) remain issue-only until their batch.
STATUS / ARCHITECTURE
- STATUS.md: replace stale “Ready to tag v0.1.0” next-up with Phase 9 batch order, link to this design doc and Gitea issues.
- ARCHITECTURE.md: light placeholders only (
/api/v1, journal module) — no invented detail. Full diagrams when modules land.
Implementation pass (next execution session)
No application feature code in this pass.
- Commit this design doc (done when design is accepted).
- File Gitea issues on
gitea.ginnoir.com/ginnoir/famappfor all 19 items; full children for epics #10, #13, #14; light checklists on P2/P3 epics #12, #15–17. Labels + priority as above. On auth failure: writedocs/issues-drafts/<slug>.mdand report. - Write P1 task briefs
80–88and updatedocs/tasks/README.mdPhase 9. - Stub ADRs 0004–0006 (title + pointer to epic issues).
- Update STATUS.md Next-up; light ARCHITECTURE touch if needed.
- Vault write-back to
Famapp/_Claude.md.
Out of scope for implementation pass: Playwright code, schema changes, module implementation, full ADR research bodies.
Success criteria: every backlog item has a Gitea URL (or draft file); P1 has executable task briefs; STATUS points agents at step 1 (bugs).
Out of scope (this design)
- Implementing any bug fix or feature
- Renumbering or rewriting existing
docs/tasks/01–76 - P2/P3 full task briefs or ADRs
- Live LLM integration in CI
- Forward-auth for non-famapp services
- Multi-household UI