Skip to main content
← Back to list
01Issue
FeatureOpenSwamp ClubPublic
AssigneesNone

Relationships

#2027 Retire or rebuild /admin/nurture once the epic lands — it is a gate, and gates are single-use

Opened by keeb · 9/4/2026

Parent: the product-nurture epic (#2008). Blocked by the epic completing — this is deliberately the last thing to do, not something to act on now.

Problem

/admin/nurture (#2012) was scoped as Phase A's verification surface: look at real names with real evidence, decide the rule is right, then arm. That job is real and the panel did it. But it is a gate, and a gate is single-use — once every flow is armed, the page stops earning the click.

Concretely, after arming everything:

Element State after arming
Arm / disarm control Single-use per flow; disarm is a rare escape hatch
Channel matrix Writes channels, nothing reads it in Phase A — pure decoration
Sent / Failed / Skipped pills Structurally 0 for the whole phase; no sender exists
Sealed backlog Frozen after the first pass — reviewed once, never changes again
Pending list Grows one row at a time
Unknown tally, last-pass state Genuinely live

So three of the six regions are static or dead, and the two most prominent — the sealed backlog and the status pills — are respectively a one-time read and a row of permanent zeroes.

This is not a defect in #2012; it is what happens when a permanent surface is built for a temporary job. Worth naming now while the reasoning is fresh, and worth acting on only once the epic lands.

What to decide, once the epic is complete

By then Phase B–E will have filled in the parts that are hollow today — real send status, per-channel outcomes, suppression reasons. So the question is not "delete it" but what is this page for when identification is a solved, running thing?

Three candidates, in rough order of preference:

  1. Fold it into /admin/marketing. Nurture is a lifecycle-messaging arm of the same AARRR story that page already tells. A "who is being contacted, and did it land" section there is more useful than a standalone page nobody navigates to.
  2. Keep it, but rebuild around the numbers that move. Candidates/day per flow, send outcomes, suppression rate, oldest pending. A rate is the one thing that tells you a rule has gone wrong after it is armed — a flood versus a trickle — and today the panel cannot show it.
  3. Delete it, and keep only the arming controls somewhere smaller. If the sealed backlog has been reviewed and the flows are running, a dedicated page is ceremony.

Interim, if the epic runs long

Two small changes would make the page worth opening between now and then, and both are reversible:

  • Add candidates/day per flow. The single number that reveals a mis-armed rule after the fact.
  • Hide the channel matrix until something reads channels. A control wired to nothing teaches the reader that the page is decorative.

What must NOT be lost

Whatever replaces it has to keep the property #2012 exists for, because it is the one that is easy to drop in a rewrite:

Five states must stay visually distinct — disarmed, never run, unconfigured, read failed, and armed-with-nothing — and only the last may say "nobody qualifies".

Four of those five render as an empty list if the view is ever remodelled as counts plus a nullable error. That is the #1589 shape on an operational surface, and tests/components/nurture_panel_test.tsx currently pins it. Keep the assertion even if the page moves.

Same for the email rule: the decision row stores a snapshotted address because Phase B's frequency cap needs it, and page() data is serialised into the HTML whether or not a cell renders it. The view type carries no email field at all today — a rewrite must not reintroduce one.

02Bog Flow
OPENTRIAGEDIN PROGRESSSHIPPED

Open

9/4/2026, 11:16:12 PM

No activity in this phase yet.

03Sludge Pulse

Sign in to post a ripple.