Skip to main content

max / goingson

Retire the task-to-problem migration plan, its migration done
Co-Authored-By
Claude Opus 5 (1M context) <noreply@anthropic.com>
Author: Max Johnson <me@maxj.phd> · 2026-08-09 23:57 UTC
Signed with PGP, not checked
Commit: 23f7f9b4dc9410a6205a545bab27af2d86ed83dd
Parent: 8dac65b
1 file changed, +0 insertions, -133 deletions
@@ -1,133 +1,0 @@
1 - # Task-to-Problem migration plan
2 -
3 - Written 2026-07-25. One-time triage of the GoingsOn backlog against the Problems
4 - inbox that migration 061 introduces.
5 -
6 - ## Why
7 -
8 - GoingsOn is the list of solutions. The Tasks view had 643 open rows, most of them
9 - candidates rather than committed work: audit findings, deferred piles, numbered
10 - backlog phases. That is the same shape as an unread inbox, and the fix is the same
11 - one email got. A problem is pre-triage; promoting it is what creates a task.
12 -
13 - Target: Tasks drops from 643 open to roughly 90.
14 -
15 - ## The line
16 -
17 - A row stays a task only if it is committed work:
18 -
19 - - tagged with an active ship set (`af-ship`, `go-ship`, `bb-ship`)
20 - - tagged `phase-0` (security and de-risk that gates a credible ship)
21 - - `status = Started`
22 -
23 - Everything else becomes a problem. That includes, explicitly:
24 -
25 - - every `deepaudit` / `deepexorcise` / `fuzz` rollup and finding
26 - - everything tagged `deferred`
27 - - mnw-server Phase 8 through Phase 12
28 - - sando Phase 5 through Phase 9
29 - - the goingson `dellm` `sprint-*` pile
30 - - feature wishlists, UX polish, open questions, "decide X" stubs
31 -
32 - ## The move, per task
33 -
34 - 1. `report_problems` with:
35 - - `source`: `task-migration`
36 - - `source_ref`: the original task id (provenance survives, and a re-run
37 - upserts rather than duplicating)
38 - - `title`: the task's first line
39 - - `body`: the full task description, plus a `Migrated from task <id>` line
40 - - `project`: the task's project name
41 - - `tags`: the task's tags, unchanged
42 - - `pain` / `scale`: scored per the table below
43 - 2. `update_task` with `status: "Deleted"`.
44 -
45 - ### On step 2
46 -
47 - There is no `delete_task` tool in go-mcp. `Deleted` is the app's real soft-delete:
48 - every repo query filters `status != 'Deleted'`, so the row leaves all views without
49 - being faked into `Completed` and polluting the done history. It is reversible by
50 - setting `status` back to `Pending`.
51 -
52 - ### Scoring
53 -
54 - `pain` is how much it hurts a hit user; `scale` is how broadly it hits. Both 1-5.
55 - Together with age they drive the painhours ranking, so an untriaged problem climbs
56 - on its own.
57 -
58 - | Input | Effect |
59 - |---|---|
60 - | priority High | pain 4, scale 4 |
61 - | priority Medium | pain 3, scale 3 |
62 - | priority Low | pain 2, scale 2 |
63 - | tagged `deferred` | pain 1 (overrides the above) |
64 - | tagged `security` | pain +1, capped at 5 |
65 - | tagged `blocked` or `human` | scale unchanged, no boost (it is not ours to move) |
66 -
67 - Age is taken from the task's own creation instant, not the migration run, so a
68 - finding filed weeks ago does not read as new.
69 -
70 - ## Order
71 -
72 - Run project by project, largest first, verifying the count after each:
73 -
74 - goingson (140), mnw-server (102), sando (64), synckit-client (52), audiofiles (42),
75 - multithreaded (39), balanced_breakfast (33), everycycle (33), alloy (19), spaghetti
76 - (12), pom (12), infra (10), buckets_of_money (10), livechat (9), wam (9), deox (9),
77 - docengine (8), kberg (7), haircut (6), bento (6), mnw-cli (6), tagtree (5),
78 - pom-contract (4), ops-exec (3), MNW (1), s3-storage (1), pter (1).
79 -
80 - ## Rollback
81 -
82 - Pre-migration DB snapshot: `~/.local/share/com.goingson.app/goingson.db.pre-problems-20260725`
83 - (6.7 MB, 1082 tasks, 35 projects, schema at migration 058).
84 -
85 - Per-task rollback without restoring: `update_task {id, status: "Pending"}`. The
86 - problem row can stay; it is a mirror, and a task that returns simply has both.
87 -
88 - ## Prerequisites
89 -
90 - - [x] DB snapshot taken
91 - - [x] go-mcp rebuilt from `bfa70e9` and installed to `~/.local/bin/go-mcp`
92 - (previous binary kept as `go-mcp.bak-20260725`)
93 - - [x] goingson-desktop rebuilt; `GoingsOn_0.5.0_amd64.deb` bundled and installed
94 - over the stale 0.4.2 package
95 - - [x] App launched once: migrations 059, 060, 061 applied, `problems` table
96 - created empty, 688 Pending tasks intact, no errors in the launch log
97 - - [x] Claude Code restarted so the four problem tools load (the running go-mcp
98 - process still holds the old inode; only a respawn picks up the new binary)
99 -
100 - ## Run record (2026-07-25)
101 -
102 - Executed. 706 open rows in, **663 migrated**, 43 kept: 18 Started, 15
103 - ship/`phase-0`, 10 launch-blocking. Problems table 0 -> 663; open tasks 706 -> 43.
104 -
105 - Two departures from the rule as written above:
106 -
107 - - **`launch` was not in the keep set and had to be.** The written line kept only
108 - `af-ship`/`go-ship`/`bb-ship`/`phase-0`/Started, which is 33 rows, against this
109 - plan's own target of ~90 and its estimate of ~40 committed launch items. The
110 - `launch` tag carries both: 10 are launch blockers (Phase 0 Stripe/webhook gates,
111 - signed-build distribution, tester invites) and were kept; 20 are prefixed
112 - `(post-launch)` and migrated, since that pile is candidates by definition.
113 - - **Written in SQL, not through `report_problems`.** The MCP tool has no
114 - `created_at` field, so every problem would have been born today and lost the age
115 - input the ranking depends on. The insert carries each task's own `created_at`.
116 - Sync-safe either way: `problems` has no sync triggers (local mirror, off the
117 - SyncKit manifest), and the task soft-delete went through `tasks`, firing the
118 - existing `sync_tasks_update` and FTS triggers exactly as the repo layer does.
119 -
120 - Verified by reading all 663 back through `list_problems`, which parses each row
121 - via the real repository layer. Ranking is live: top band is the CDN unsigned-serving
122 - check at painhours 85, then a run of 74s.
123 -
124 - Extra snapshot taken immediately before the write:
125 - `~/.local/share/com.goingson.app/goingson.db.pre-taskmigration-20260725`. The app
126 - was running during the migration, so it needs a restart to show the new state.
127 -
128 - ## Open question for the next session
129 -
130 - `deox` still reads Active in GoingsOn but was archived 2026-07-25 in favour of
131 - `wright`. Its 9 tasks are all candidates under this rule and will migrate, which is
132 - harmless, but the project status wants flipping to Archived either way. `wright` and
133 - `shop` have no GoingsOn project at all yet.