From d7015b9210e7c434eb655c4cc26a40e444f2c84d Mon Sep 17 00:00:00 2001 From: Konrad du Plessis Date: Fri, 15 May 2026 11:53:04 +0200 Subject: [PATCH] docs: move journal/voice work to explicit backburner track MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Konrad's decision (15 May 2026): Phase A.2 (manual JournalEntry UI) + Phase B (Letterly inbound webhook) are too complex to interleave with normal app work — they'll be built and tested offline on a separate track, not in ai-dev. Verified there is NOTHING to remove or bypass: zero JournalEntry model/views/urls/templates, zero Letterly/webhook/@csrf_exempt code anywhere on ai-dev, latest migration is 0015. The working app was already 100% clean of journal/voice code — these features never left the design-doc stage. Doc changes: - parked-work.md: "Blocked on Konrad's input" section replaced with "🧊 Backburner — separate offline track", with an explicit "do NOT start in ai-dev" warning and the nothing-to-remove verification recorded. - CLAUDE.md breadcrumb: reframed from "parked pending Q5/Q7 answers" (implies ready-to-go once answered) to "deliberately deferred to offline track — do not pick up as normal feature work". Co-Authored-By: Claude Opus 4.7 (1M context) --- CLAUDE.md | 13 ++++++-- docs/plans/parked-work.md | 64 +++++++++++++++++++++------------------ 2 files changed, 44 insertions(+), 33 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 16bb392..d228d25 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -12,9 +12,16 @@ day is captured in the "DEPLOY ORDERING" bullet of the Flatlogic/AppWizzy Deployment section — restart must come AFTER the code is pulled, because `DEBUG=False` caches templates.) -Phase A.2 (manual JournalEntry UI) and Phase B (Letterly inbound -webhook) from the Site Work Logging design are parked pending Q5 / Q7 -answers — see `docs/plans/parked-work.md`. +**🧊 Backburner — do NOT start in `ai-dev`:** Phase A.2 (manual +JournalEntry UI) and Phase B (Letterly inbound webhook) are +deliberately deferred to a separate offline build/test track +(Konrad's decision, 15 May 2026 — they're complex and will be +proven offline first). They are NOT "blocked waiting on an answer" +and should not be picked up as normal feature work. **Nothing +journal/voice-related exists in the working app** — verified zero +`JournalEntry`/webhook/`@csrf_exempt` code on `ai-dev`; there was +never anything to remove. See the "Backburner" section in +`docs/plans/parked-work.md`. ## Coding Style - Always add clear section header comments using the format: # === SECTION NAME === diff --git a/docs/plans/parked-work.md b/docs/plans/parked-work.md index 6768c7a..9bed747 100644 --- a/docs/plans/parked-work.md +++ b/docs/plans/parked-work.md @@ -28,42 +28,46 @@ Flatlogic Deployment section. --- -## Blocked on Konrad's input +## 🧊 Backburner — journal/voice features (separate offline track) -### Phase A.2 — Manual JournalEntry web UI +> **Decision (15 May 2026):** Konrad parked the entire journal / +> voice-transcript line of work. It's more complex than the rest of +> the app and will be built + tested **offline, on a separate +> track**, NOT mixed into `ai-dev`. **Do NOT start either of these +> in `ai-dev` or in any normal feature session.** They are not +> "blocked waiting on an answer" — they are deliberately deferred +> until Konrad chooses to spin up a dedicated offline effort. -**Status:** Designed in the Site Work Logging brainstorm. Model -class drafted in the design doc (not yet in `core/models.py`). -Not yet built. +**Important — nothing is in the working app.** Verified 15 May 2026: +zero `JournalEntry` model / views / URLs / templates anywhere in +`core/`, zero Letterly / webhook / `@csrf_exempt` code on `ai-dev`, +latest migration is `0015_absence_project`. There is no dead code, +no feature flag, no migration to reverse. "Removing" these was a +no-op — they were never built into the running app. The working +app (`ai-dev` + production) is completely clean of journal/voice +code. -**Blocked on:** Q7 from the original brainstorm — "Who is Vi?" The -answer drives whether `JournalEntry` needs a `recipient` or -`audience` field (i.e. is this a public log, or does it have -specific addressees like a client). **Default if unanswered:** no -recipient field — entries are all-admin-readable. +### Phase A.2 — Manual JournalEntry web UI (deferred) -**Scope when unblocked:** ~1 hour of work. Manual entry form at -`/journal/new/`, list at `/journal/`, edit at `/journal//edit/`. -Admin-only views. Lives on `ai-dev` (no webhook involvement). +Designed in the Site Work Logging brainstorm (`~/.claude/plans/ +prancy-painting-brook.md`, local). A `JournalEntry` model + manual +entry form/list/edit, admin-only. Open question if/when resumed: +**Q7 "Who is Vi?"** — drives whether `JournalEntry` needs a +`recipient`/`audience` field. Default if never answered: no +recipient field, all-admin-readable. ~1 hour scope. When resumed, +build on the offline track first, not directly in `ai-dev`. -### Phase B — Letterly inbound webhook (`integrations` branch) +### Phase B — Letterly inbound webhook (deferred) -**Status:** Designed in the Site Work Logging brainstorm. Belongs -on the `integrations` branch, **not** `ai-dev`. - -**Blocked on:** Q5 from the original brainstorm — Konrad needs to -share a sample Letterly webhook payload. Need to know: -- Does it include the recording user (so we can map to a Django User)? -- Does it include project / location metadata, or just the transcript? -- Does it include an audio URL for link-back? -- Does Letterly support custom fields (so a deep-link from - `/site-report//edit/` could embed a `work_log_id` that the - webhook reads back)? - -**Scope when unblocked:** ~3-4 hours including tests + one-off -Letterly account setup. Adds a `@csrf_exempt` view at -`/webhooks/letterly/`, `JournalEntry` row creation, HMAC body -verification, shared-secret URL token. +Designed in the same brainstorm. A `@csrf_exempt` view at +`/webhooks/letterly/` that creates `JournalEntry` rows from voice +transcripts, with HMAC body verification + shared-secret URL token. +Open question if/when resumed: **Q5 — a sample Letterly webhook +payload** (does it include the recording user / project metadata / +audio URL / custom fields?). ~3-4 hours scope + one-off Letterly +account setup. This was always meant to live on the `integrations` +branch, never `ai-dev` — and now it's offline-track until Konrad +revisits. ---