Skip to main content

2026-06-10 — Sell-Phase Action Plan: freeze the platform, fix the products, find the customers

Revision (same day, operator direction): stabilization first, numbers last

There are 0 customers; marketing trails a functional product. Operator reorder: fix what’s broken and what’s about to break — without the fixes themselves breaking load-bearing infra — before any metrics/revenue-reporting work. Workstream order becomes: WS-2 (Fix What’s Broken, expanded below) → WS-3 (COH safety) → WS-4 items 4.2/4.3 only after UAT is green → WS-1 (Trust the Numbers) moves last.

Ground truth established 2026-06-10 (live probes + UAT harness, this session)

  • Selfprime UAT: 66/68 PASS, 0 failures once sandbox TLS noise (QUIC/ECH) was eliminated from the e2e runner. Real issues: 2 warnings (sign-out control not discoverable on #/more).
  • Capricast UAT: 71/73 PASS, 1 failure: POST https://capricast.com/api/sentry/envelope → 404 — the frontend Sentry tunnel has no backend route, so client-side error reporting is silently dead (fix lives in the capricast repo). Plus 1 warning (sign-out control not discoverable).
  • Earlier “failing UAT” runs were dominated by ERR_QUIC_PROTOCOL_ERROR / ERR_ECH_FALLBACK_CERTIFICATE_INVALID — sandbox-network transport noise, not product defects. The runner now forces TCP/TLS (--disable-quic, ECH off, opt-in E2E_INSECURE_TLS=1 for MITM’d CI networks).

Fixed and curl-verified this session

Remaining stabilization queue (now the top of the plan)

  1. Human approval needed: delete the stale prime-self CF worker — it serves inbound-oracle code at prime-self.adrper79.workers.dev while still holding the old Selfprime production secret set (JWT_SECRET, STRIPE_SECRET_KEY, NEON_URL). Deletion is irreversible → operator’s call, per FRIDGE rule 8.
  2. capricast repo: implement or remove the /api/sentry/envelope tunnel route (client error reporting is currently dead). Requires adding the capricast repo to a session’s scope.
  3. xicocity.com root / returns 404 (/health is 200 — the worker has no root route on a customer-facing branded domain). Fix lives in the xico-city repo.
  4. Sign-out discoverability on both Selfprime (#/more) and Capricast.
  5. Redeploy synthetic-monitor so the corrected PRIME_SELF service binding (prime-self-api) takes effect.
  6. Dependabot: 110 vulnerabilities reported on the default branch (47 critical) — triage which are runtime-reachable vs. dev-tooling noise.
  7. The duplicated-config landmine class: audit every apps/*/wrangler.jsonc env.production.name against docs/service-registry.yml so no app can deploy over another worker’s name again (the inbound-oracle collision was found by accident). Candidate for a deterministic CI check in constraints-check.mjs.
The original four workstreams below stand, in the revised order. Everything in WS-1 (numbers/digest work) is explicitly deprioritized until UAT is green on both revenue products and the stabilization queue above is empty.

Decision

For the next 30 days, Factory enters a platform freeze: no new packages, no new apps, no new admin/control-plane surface. All engineering capacity goes to four workstreams — Trust the Numbers, Fix What’s Broken, Make COH Safe (and calibrate the supervisor doing it), and Point the Machine at Customers. This is the execution plan for the 2026-05-25 alignment decision, which correctly diagnosed the drift (“Factory must not become a feature factory”) but did not stop it: in the three weeks since, commit heat went to admin-studio (~196 commits), supervisor (55), and video tooling (~55), while Stripe revenue in the cost digest stayed at $0, the completion tracker read 0.0% unchallenged, and every customer-facing P2 gap (G16, G17) stayed open while every infrastructure P1 closed.

The freeze rule (binding for the duration)

A PR that adds a new packages/* directory, a new apps/* directory, or net-new admin-studio routes/screens is out of scope unless it is a named item in this plan. The litmus test for any proposed work item: “Does this change a number a customer or operator can see — revenue, signups, uptime, content published?” If not, it waits. Explicitly ruled out for 30 days (re-affirming the 2026-05-25 exclusion list):
  • New speculative packages (25 of 39 packages already have zero app consumers)
  • Supervisor Phase 2 (Worker/DO) work — Phase 1 calibration comes first (WS-3)
  • Admin Studio feature expansion beyond what WS-1 requires to display real numbers
  • A second monitoring/QA surface of any kind (we have synthetic-monitor, status-prober, prime-self-smoke, qa-tools already)

Workstream 1 — Trust the Numbers (Week 1)

The org’s headline metrics are currently unbelievable, which makes every other decision blind. Nothing in WS-4 can be evaluated until these are honest.

Workstream 2 — Fix What’s Broken (Week 1, parallel)

Live outage-class defects on revenue-adjacent surfaces, all older than the newest admin-studio feature.

Workstream 3 — Make COH Safe, and calibrate the supervisor doing it (Weeks 1–3)

COH is in production with Stripe wired, ~5% test coverage, no CI gate on deploy, a live /__db/reset endpoint, and hardcoded .workers.dev URLs (G41–G45). This is the single most dangerous open risk in the portfolio. It is also six well-specified, template-shaped tasks — exactly the calibration workload the Phase-1 supervisor needs before it can be trusted with anything (FRIDGE plan-approval gate: first 10 runs per template are human-approved anyway). One workstream, two payoffs: the riskiest product gets safe, and the supervisor earns its first blessed templates from real closed work — the only kind FRIDGE rule 9 allows. Exit criterion for WS-3: COH cohesion score ≥ 60 (from 25) and zero open P1 gaps against it; supervisor has ≥4 templates blessed from real merged work.

Workstream 4 — Point the Machine at Customers (Weeks 2–4)

The build phase produced one fully-working loop (the video pipeline) and one two-day-old asset (the factory-core cross-product identity layer). Both are acquisition machinery nobody has turned on.

Sequencing

Dependencies: 4.1 blocks on 2.1 (video-cron). 3.7 blocks on 3.1–3.4 merging clean. 4.3 blocks on nothing — the identity layer is live. Everything in WS-1/WS-2 is independent and parallelizable (sub-agents per Sub-Agent Isolation rules).

Exit criteria (the 30-day review answers these, with evidence)

  1. STATE.md shows believable completion numbers and a real revenue line per product (even if $0) — Stage 2’s own “are people buying?” question, finally answerable.
  2. Zero red health probes; zero approved-idle PRs older than 48h.
  3. COH: cohesion ≥60, G41–G46 closed, no destructive prod endpoints.
  4. Supervisor: ≥4 blessed templates with template_stats rows from real merged work.
  5. ≥8 videos published across ≥3 brands; PostHog shows cross-property traffic.
  6. A customer can be heard: cancellation reasons + support email land in factory_events.

Budget

Fits inside the existing alignment-doc cost posture. Incremental spend: supervisor calibration runs at $5/run hard cap (FRIDGE rule 5), video renders ride existing GitHub Actions free minutes + ElevenLabs/Stream per-video pennies, Anthropic stays under the $50/day cap. No new SaaS lines.

What this plan deliberately does NOT do

  • Build supervisor Phase 2, new packages, or new monitoring/QA/admin surface
  • Populate the 25 orphaned packages with consumers “for completeness” — only crm gets a use-it-or-retire-it decision (4.3)
  • Touch wordis-bond, pricing experiments, or the AI-tokens SKU (all stay deferred per 2026-05-25)
  • Pretend marketing strategy is solved — WS-4 builds channels; GTM strategy remains the operator’s quarterly customer-gate work

Revisit when

  • Any exit criterion is met early → pull the next item forward; do not backfill with platform work.
  • The 30-day review lands → decide whether the freeze lifts, extends, or converts into a standing “customer-visible numbers first” FRIDGE rule.
  • Real revenue exceeds $0 → trigger the alignment doc’s existing re-tier rule (platform cost vs. 10% of revenue).