MAC pre-launch readiness checklist
What this is
Distillation of the friction items the founder flagged on slides 51-52 of his own MG engineering deck ("What's cumbersome" + "Open invitations"). These are the things he knows he needs to fix before MAC ships commercially at $350. The deck audience (MG engineers in the room) won't care about most of these because they have founder-voice nearby to resolve ambiguity. The MAC commercial buyer at $350 won't have that voice — every item below is a place where the absence of founder-in-the-room would cause the buyer to bounce.
Source deck archived: [[06-reference/source-pdfs/2026-05-14-mg-dq-tdd-for-analytics-deck-progress-engagement.pdf]]
Sibling docs: [[01-projects/mac/2026-05-14-mac-pricing-intent]] · [[concepts/2026-05-14-test-id-grammar-mac-join-key-primitive]]
P0 (must fix before any external shipping)
1. Naming consistency in the skill family
Problem (from slide 51): /dq-audit-model plan vs /dq-audit-model audit vs /dq-generate-tests vs /dq-generate-tests --coverage. At least one mode is overloaded as a flag instead of being its own skill. Engineers stumble on which to invoke.
Fix: every verb gets its own skill name. Proposed:
/dq-plan— interactive interview to build new test plan/dq-audit— map existing tests onto matrix, surface gaps/dq-instrument— generate dbt schema.yml + singular SQL from plan/dq-coverage— generate timestamped coverage report by joining run_results.json to plan/dq-triage <test_id>— 7-step triage of a failing test/dq(read-only dashboard, unchanged)
Acceptance criterion: the skill family invocation surface is teachable in <90 seconds without a cheatsheet.
2. MG-specific scrub list
Problem: the deck currently exposes MG client context that cannot ship externally:
gold_txn_pipeline(the worked-model name) — replace with neutral canonical sample model- "Progress renewals" — replace with synthetic SaaS or e-commerce domain
- Podio — internal MG tool, replace with generic source-system reference
- PRO- ticket prefix — replace with generic
TICKET-or Linear-equivalent jim_uat_app— drop name reference; replace withuat_reviewor generic- "Nick and Jim read it" — drop name references entirely from copy
ofc_transaction_type— replace with generic field name- Footer file path
file:///Users/baw/code/mg/prg/cc-wrapped/apps/dbt-edw/docs/presentations/dq-skill-walkthrough.html— strip footer entirely or replace with MAC-branded URL
Fix: build a canonical sample dbt project (synthetic e-commerce or SaaS, ~5 models, ~3 sources, ~15 starting tests) that ships with MAC. All deck examples re-shot against the canonical project. The sample project IS part of the MAC starter — buyers can run the full loop end-to-end on day one against their own clone.
Acceptance criterion: zero references to MG, Progress, Podio, PRO, or any real person's name in any externally-shipped MAC artifact (deck, docs, sample project, copy).
3. Canonical sample dbt project
Problem: without a canonical sample project, the buyer has to apply the framework to their own data on day one, which is too high a friction. They will bounce.
Fix: ship a sample dbt project alongside MAC with:
- ~5 dbt models across bronze/silver/gold
- ~3 source-system stubs
- ~15 starting tests pre-instrumented (mix of built-ins + dbt_utils + dbt_expectations + singular SQL)
- A pre-built test plan markdown showing how the plan looks for one of the models
- A pre-generated coverage report showing the report shape
- Sample failure scenarios that triage cleanly through the 5-category × 4-state framework
Acceptance criterion: a buyer can git clone the sample, run /dq <model>, and see meaningful output within 5 minutes of purchase.
4. File organization in test-plans/
Problem (from slide 51): test-plans/ holds plans, coverage reports, audit reports, review docs side-by-side. Subfolders not yet enforced. Cumbersome for buyers who'll work across multiple models.
Fix: enforce subfolder structure in the MAC starter:
test-plans/
{model_name}/
plan.md
coverage/
YYYY-MM-DD-HHMM.md
audits/
YYYY-MM-DD-audit.md
reviews/
human-basis-{test_id}.md
/dq-coverage and /dq-audit write to the correct subfolder by default. The dashboard reads from the standard layout.
Acceptance criterion: tree test-plans/ is legible to a new engineer without explanation.
P1 (fix before MAC marketing campaign)
5. Pause state needs a deadline field
Problem (from slide 51): the Pause state in the 4-state triage (Stop / Go / Pause / Monitor) has no deadline. Tickets can drift in Pause forever.
Fix: Pause state requires a pause_until: YYYY-MM-DD field in the ticket. /dq dashboard surfaces "tickets paused past their pause_until date" as an explicit alert. Default pause duration if not specified: 30 days.
Acceptance criterion: no ticket can be in Pause state with a missing or past pause_until field without the dashboard surfacing it as drift.
6. Stakeholder-time bottleneck — reframe as feature
Problem (from slide 51): 30% of tickets are blocked on business decisions that need stakeholder sign-off. Decision latency outweighs implementation time. Currently named as friction.
Fix (reframe, not solve): in MAC commercial messaging, this is a FEATURE: "MAC tells you which decisions block which releases." The discipline of separating "what's blocking" from "what's broken" is the differentiated POV. The /dq dashboard should explicitly surface "Decisions Blocking Release" as a top-line metric alongside test pass/fail.
Acceptance criterion: the MAC landing page treats stakeholder-decision bottleneck as a discovered feature, not buried friction. The dashboard view names it as a primary surface.
7. Recon basis vs Rel:Production overlap
Problem (from slide 52): Recon basis may be redundant with Relative: Production. Need to decide whether to collapse or differentiate.
Fix: either (a) collapse Recon into Rel:Prod with a sub-flag for external ledger, or (b) sharpen the distinction by tying Recon explicitly to external systems-of-record (Salesforce as the source for ARR; ledger system as the source for revenue). Worked example needs to make the differentiation obvious.
Acceptance criterion: the 18-cell matrix on the hero slide answers "what goes in Recon" vs "what goes in Rel:Prod" in <30 seconds.
8. Human-scope freshness contract
Problem (from slide 52): how stale is a domain-expert sign-off allowed to be before it expires? Currently unspecified.
Fix: add expires_after: <duration> field to human-basis test reviews. Suggested defaults: 90 days for stable business rules, 30 days for actively-evolving products. /dq dashboard surfaces "human-basis sign-offs expiring this week" as an alert.
Acceptance criterion: the human-basis test cell in the matrix names its freshness contract explicitly in the docs.
P2 (post-launch backlog)
9. Cross-model umbrella detection
Problem (from slide 52): umbrella detection (the "10 tests, 3 root causes" pattern) is within-model only today. Cross-model umbrella patterns (e.g., a single source-system glitch hitting 4 downstream models) are not surfaced automatically.
Fix: add cross-model umbrella detection to /dq-triage — joins failures across all models in the project by shared source, shared field, or shared time window.
Acceptance criterion: the dashboard can answer "which failures across the whole project share a single root cause?"
10. Discovery Ticket layer abstraction
Problem (implicit in MG-specific scrub): the framework currently writes Discovery Tickets to Jira (PRO project, acli). MAC commercial buyers use Linear, GitHub Issues, plain markdown, or no ticket system at all.
Fix: abstract the Discovery Ticket layer behind adapters. Default mode: plain markdown in test-plans/{model}/tickets/. Optional adapters: Jira, Linear, GitHub Issues, Notion. Adapter choice is a config field in the MAC starter.
Acceptance criterion: a buyer with no ticket system can use MAC end-to-end with markdown-only Discovery Tickets and lose nothing.
11. Headless JSON mode + Loop heartbeat documentation
Problem (not a bug, an underleveraged feature): the headless mode (HEADLESS_MODE=true /dq --all emits structured JSON) is documented in the deck but not surfaced as a marquee feature. CI gating + Slack bot integration is a real selling point for engineering leaders.
Fix: make headless mode + /loop /dq --all heartbeat a primary feature in MAC marketing copy. Include a Slack bot reference implementation in the sample project.
Acceptance criterion: the MAC landing page names headless mode as a top-3 feature, not a buried footnote.
What's NOT on this checklist (deliberate)
- The 3×6 matrix structure — it's right. Don't touch.
- The plan / coverage split — it's right. Don't touch.
- The 5 discovery categories × 4 outcome states — it's right. Don't touch.
- The "Document, don't code around" principle for source data issues — it's right and differentiated. Don't touch.
- The test_id grammar — it's right. See [[concepts/2026-05-14-test-id-grammar-mac-join-key-primitive]] for the canonical write-up.
- Visual identity — the editorial Playfair + navy + coral design transfers cleanly to RDCO/SC umbrella. Already on-brand. Keep.
Sequencing recommendation
- Week 1 post-MG: items 1-3 (P0). Without these, MAC literally cannot ship externally.
- Week 2-3: items 4-6 (P0 cleanup + P1 feature reframes). These are the difference between MAC working and MAC selling.
- Pre-launch: items 7-8 (P1 framework tightening). Polish the matrix and human-scope freshness.
- Post-launch backlog: items 9-11 (P2). Cross-model + ticket abstraction + headless-as-feature are growth multipliers, not blockers.
Related
- [[01-projects/mac/2026-05-14-mac-pricing-intent]] — pricing decision with customer-zero validation numbers
- [[concepts/2026-05-14-test-id-grammar-mac-join-key-primitive]] — the durable primitive worth canonicalizing separately
- [[concepts/2026-05-14-four-tier-buy-build-stack-soloproneur-tam-filter]] — MAC sits in tier 2 (BUY narrow agentic workflow) at soloproneur TAM
- [[06-reference/source-pdfs/2026-05-14-mg-dq-tdd-for-analytics-deck-progress-engagement.pdf]] — source deck
- [[06-reference/2026-05-14-mg-ecoatm-proposal-structural-patterns]] — MG proposal-design patterns to absorb for MAC landing page