Product · Ops

Coverage & QA Ledger

One glance at Beta page health, doc references, and preset readiness. Use it to decide which experiments are ready to wire into Supabase or Convex.

  • Track how many experiments are Ready/Drafting/Reference
  • Flag Beta pages that still need a canonical doc link
  • Surface saved grid layouts so QA can reproduce scenarios

Ready for wiring

9

Docs + Beta page done — waiting on data/engineering.

Drafting

13

Beta write-up exists but still collecting requirements.

Reference only

3

Docs exist; no immediate implementation work.

Shipped

0

Implemented in product (still keep doc handy).

Missing doc references

All Beta pages link to a briefing — keep it that way.

Preset health snapshots

Auto-generated from Preset Lab sample builders.

2/5 passing

Course Week

course-week

WARN

Nodes: 2

Required kinds: section, discussion, resource

Missing: discussion

View JSON
[
  {
    "id": "week5",
    "kind": "section",
    "ownerId": "demo-owner",
    "info": {
      "title": "Week 5 — Translation + AI",
      "summary": "How AI transforms translation patterns."
    },
    "structural": {
      "allowedChildren": [
        "section",
        "session",
        "resource",
        "discussion"
      ]
    },
    "temporal": {
      "scheduledStart": "2024-10-07T00:00:00.000Z",
      "scheduledEnd": "2024-10-13T23:59:59.000Z",
      "showOnCalendar": true
    },
    "access": {
      "visibility": "members"
    },
    "meta": {
      "createdAt": "2025-12-15T22:52:16.946Z",
      "updatedAt": "2025-12-15T22:52:16.946Z"
    }
  },
  {
    "id": "week5-reading-1",
    "kind": "resource",
    "ownerId": "demo-owner",
    "info": {
      "title": "Thinking in Languages",
      "summary": "Key framing on translation patterns",
      "tags": [
        "translation",
        "ai"
      ]
    },
    "structural": {
      "parentId": "week5"
    },
    "attachments": {
      "externalUrl": "https://example.com/thinking-in-languages"
    },
    "access": {
      "visibility": "members"
    },
    "meta": {
      "createdAt": "2025-12-15T22:52:16.946Z",
      "updatedAt": "2025-12-15T22:52:16.946Z"
    }
  }
]

Workshop Day

workshop-day

WARN

Nodes: 2

Required kinds: section, event, session, composition, discussion

Missing: event, composition, discussion

View JSON
[
  {
    "id": "ai-ethics-workshop",
    "kind": "section",
    "ownerId": "demo-owner",
    "info": {
      "title": "AI Ethics Workshop",
      "summary": "One-day intensive session."
    },
    "structural": {
      "allowedChildren": [
        "session",
        "resource",
        "discussion"
      ]
    },
    "temporal": {
      "scheduledStart": "2024-11-02T14:00:00.000Z",
      "scheduledEnd": "2024-11-02T18:00:00.000Z",
      "showOnCalendar": true
    },
    "access": {
      "visibility": "members"
    },
    "meta": {
      "createdAt": "2025-12-15T22:52:16.946Z",
      "updatedAt": "2025-12-15T22:52:16.946Z"
    }
  },
  {
    "id": "ai-ethics-session",
    "kind": "session",
    "ownerId": "demo-owner",
    "info": {
      "title": "Live Workshop"
    },
    "structural": {
      "parentId": "ai-ethics-workshop"
    },
    "temporal": {
      "scheduledStart": "2024-11-02T14:00:00.000Z",
      "scheduledEnd": "2024-11-02T18:00:00.000Z"
    },
    "access": {
      "visibility": "members"
    },
    "meta": {
      "createdAt": "2025-12-15T22:52:16.946Z",
      "updatedAt": "2025-12-15T22:52:16.946Z"
    }
  }
]

Research Sprint

research-sprint

PASS

Nodes: 3

Required kinds: session, composition

Missing: none

View JSON
[
  {
    "id": "sprint-shell",
    "kind": "section",
    "ownerId": "demo-owner",
    "info": {
      "title": "AI Futures Sprint",
      "summary": "Five-day sprint exploring AI adoption scenarios."
    },
    "structural": {
      "allowedChildren": [
        "session",
        "composition"
      ]
    },
    "temporal": {
      "scheduledStart": "2024-11-18T00:00:00.000Z",
      "scheduledEnd": "2024-11-22T23:59:59.000Z",
      "showOnCalendar": true
    },
    "access": {
      "visibility": "members"
    },
    "meta": {
      "createdAt": "2025-12-15T22:52:16.946Z",
      "updatedAt": "2025-12-15T22:52:16.946Z"
    }
  },
  {
    "id": "sprint-session-kickoff",
    "kind": "session",
    "ownerId": "demo-owner",
    "info": {
      "title": "Kickoff — Signals + Stakes"
    },
    "structural": {
      "parentId": "sprint-shell"
    },
    "temporal": {
      "scheduledStart": "2024-11-18T15:00:00.000Z",
      "scheduledEnd": "2024-11-18T17:00:00.000Z",
      "showOnCalendar": true
    },
    "compositional": {
      "blockCount": 4
    },
    "access": {
      "visibility": "members"
    },
    "meta": {
      "createdAt": "2025-12-15T22:52:16.946Z",
      "updatedAt": "2025-12-15T22:52:16.946Z"
    }
  },
  {
    "id": "sprint-brief",
    "kind": "composition",
    "ownerId": "demo-owner",
    "info": {
      "title": "Sprint Brief — Outline"
    },
    "structural": {
      "parentId": "sprint-shell"
    },
    "compositional": {
      "blockCount": 6,
      "supportsSubsections": true
    },
    "access": {
      "visibility": "members"
    },
    "meta": {
      "createdAt": "2025-12-15T22:52:16.946Z",
      "updatedAt": "2025-12-15T22:52:16.946Z"
    }
  }
]

PRD Authoring

prd-authoring

PASS

Nodes: 4

Required kinds: composition, discussion, resource

Missing: none

View JSON
[
  {
    "id": "prd-section",
    "kind": "section",
    "ownerId": "demo-owner",
    "info": {
      "title": "AI Coach PRD",
      "summary": "Scope + requirements draft."
    },
    "structural": {
      "allowedChildren": [
        "composition",
        "discussion",
        "resource"
      ]
    },
    "access": {
      "visibility": "members"
    },
    "meta": {
      "createdAt": "2025-12-15T22:52:16.946Z",
      "updatedAt": "2025-12-15T22:52:16.946Z"
    }
  },
  {
    "id": "prd-composition",
    "kind": "composition",
    "ownerId": "demo-owner",
    "info": {
      "title": "PRD Draft"
    },
    "structural": {
      "parentId": "prd-section"
    },
    "compositional": {
      "blockCount": 10,
      "supportsSubsections": true
    },
    "access": {
      "visibility": "members"
    },
    "meta": {
      "createdAt": "2025-12-15T22:52:16.946Z",
      "updatedAt": "2025-12-15T22:52:16.946Z"
    }
  },
  {
    "id": "prd-review-thread",
    "kind": "discussion",
    "ownerId": "demo-owner",
    "info": {
      "title": "Peer Review Thread"
    },
    "structural": {
      "parentId": "prd-section"
    },
    "access": {
      "visibility": "members"
    },
    "meta": {
      "createdAt": "2025-12-15T22:52:16.946Z",
      "updatedAt": "2025-12-15T22:52:16.946Z"
    }
  },
  {
    "id": "prd-resource",
    "kind": "resource",
    "ownerId": "demo-owner",
    "info": {
      "title": "Latest PRD PDF",
      "summary": "Auto-exported from draft"
    },
    "structural": {
      "parentId": "prd-section"
    },
    "attachments": {
      "externalUrl": "https://example.com/prd.pdf"
    },
    "access": {
      "visibility": "members"
    },
    "meta": {
      "createdAt": "2025-12-15T22:52:16.946Z",
      "updatedAt": "2025-12-15T22:52:16.946Z"
    }
  }
]

Assignment Flow

assignment-flow

WARN

Nodes: 2

Required kinds: assignment, session, resource, discussion

Missing: resource, discussion

View JSON
[
  {
    "id": "week5-assignment",
    "kind": "assignment",
    "ownerId": "demo-owner",
    "info": {
      "title": "Field Interview Reflection"
    },
    "structural": {
      "parentId": "week5"
    },
    "temporal": {
      "assignedAt": "2024-10-01T09:00:00.000Z",
      "dueAt": "2024-10-15T23:59:59.000Z",
      "showOnCalendar": true
    },
    "access": {
      "visibility": "members"
    },
    "meta": {
      "createdAt": "2025-12-15T22:52:16.946Z",
      "updatedAt": "2025-12-15T22:52:16.946Z"
    }
  },
  {
    "id": "week5-studio",
    "kind": "session",
    "ownerId": "demo-owner",
    "info": {
      "title": "Studio Hour — Interviews"
    },
    "structural": {
      "parentId": "week5"
    },
    "temporal": {
      "scheduledStart": "2024-10-12T16:00:00.000Z",
      "scheduledEnd": "2024-10-12T17:00:00.000Z"
    },
    "access": {
      "visibility": "members"
    },
    "meta": {
      "createdAt": "2025-12-15T22:52:16.946Z",
      "updatedAt": "2025-12-15T22:52:16.946Z"
    }
  }
]

Shared grid layouts

Layouts published from the custom builder. Use them to decide what gets wired next.

Open builder

No layouts shared yet. From the Grid Composer, click “Share to coverage” after saving a layout.

ExperimentDocsPhaseStatusNext move
Preset Lab

Presets

Spin up Course Week, Workshop Day, Research Sprint, PRD, and Assignment scaffolds.

Phase 0 → 1DraftingMap preset outputs directly to seed generator + Supabase snapshot.

Preview mocked Phase0Node arrays that the builders will output.

Phase 0Ready for wiringFeed simulator payloads into `generate:phase0-seed` for regression tests.

Templates + custom builder with preview rail, active cell metadata, and home* sandbox.

Phase 1 → 2Ready for wiringPersist saved layouts + feed featureMatrix home variants / preset exports.

Persona-specific wow experiences.

Phase 0 → 2DraftingFinish mapping each moment to preset + feature hooks.
Workspaces

Presets

Purpose-based workspace presets.

Phase 2 → 3DraftingAlign nav labels + default grids with /hub copy.

Facet dictionary, facet matrix, edge rules, domain rules, node vs row.

Phase 0Ready for wiringMirror blueprint validations inside Supabase schema + Convex adapter.

Mapping from resource.type → UI buckets.

Phase 1DraftingPromote taxonomy into Supabase enum + UI filters.

Mock counts per bucket (visual heatmap).

Phase 1Reference onlyConnect dashboard to Supabase materialized view once filters land.

Required vs optional facets per node kind.

Phase 0Ready for wiringAdd runbook for linting snapshots + Supabase rows.

Rules for structural parents, linking, visibility.

Phase 0Ready for wiringImplement ceiling enforcement inside Supabase policies.

Derived → session-aware → ambient plan.

Phase 2DraftingConnect tiers to actual feature flags (aiContextHints, etc.).

Invisible layer, session rooms, chains, memory.

Phase 1 → 2DraftingFlag which ideas need Supabase schema vs. pure UI work.

Tracks data/session/block rollout steps.

Phase 0 → 1Ready for wiringAdd Convex ↔ Supabase readiness column + blockers.

Cohorts, dependencies, rollback for new features.

Phase 1DraftingDesign storage plan shared by Convex + Supabase providers.
Dual Write Plan

Architecture

Local → Convex → Supabase sync strategy.

Phase 0 → 1DraftingList concrete adapters + write/rollback order.

DDD/event-driven/namespaces evaluation & next steps.

Phase 0 → 2Ready for wiringBreak out action items into Namespaces + Domain Events tasks.
Domain Events

Architecture

SectionCreated, SessionCompleted, AssignmentSubmitted plan.

Phase 1DraftingAdd emitting services + consumer hooks (Supabase/Convex).
Namespace Plan

Architecture

Domain/application/infrastructure/presentation layout.

Phase 1DraftingAdopt new folder plan inside `apps/stps/src` incrementally.
Facet Mixins

Architecture

Temporal.isActive, Visibility.canEdit, Compositional helpers.

Phase 1Reference onlyPrototype mixins in Convex functions + TypeScript helpers.
Microservice Notes

Architecture

Why we stay modular monolith + when to split.

Phase 3+ (only if needed)Reference onlyAdd link to future ops/infra briefing once it exists.
Ops & Telemetry

Architecture

Feature-flag status, dual-write checklist, Supabase/Convex telemetry (ties into featureMatrix + snapshot work).

Phase 0 → 1DraftingAutomate feed updates via Convex cron + surface featureMatrix deltas for rollout reviews.
Signal Facets

AI & Data

Design structured signal metadata.

Phase 1Ready for wiringBackfill signal taxonomy into Supabase + UI forms.
Signal Tuner

AI & Data

Interactive controls + JSON preview.

Phase 1DraftingConnect tuner output to actual composer defaults.
AI Rollout

AI & Data

Phased AI plan (foundation/guidance/collaboration).

Phase 1 → 2DraftingAlign guardrails with feature flag + audit-log work.

Seed vs Supabase vs Convex status board (Supabase path + RLS shipped, Convex query next).

Phase 0Ready for wiringAdd controls to regenerate/upload Supabase snapshot + wire Convex `phase0:loadSnapshot`.