@sellable/mcp 0.1.213 → 0.1.214

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/agents/post-find-leads-message-scout.md +173 -151
  2. package/dist/tools/prompts.js +18 -13
  3. package/package.json +1 -1
  4. package/skills/create-campaign/SKILL.md +11 -12
  5. package/skills/create-campaign-brief/references/examples/briefs/superpower.md +3 -3
  6. package/skills/create-campaign-brief/references/phase75-active-runtime-message-pack.md +16 -28
  7. package/skills/create-campaign-v2/SKILL.md +12 -9
  8. package/skills/create-campaign-v2/core/auto-execute.README.md +11 -11
  9. package/skills/create-campaign-v2/core/auto-execute.yaml +4 -4
  10. package/skills/create-campaign-v2/core/flow.v2.json +1 -1
  11. package/skills/create-campaign-v2/references/ai-tells.md +3 -3
  12. package/skills/create-campaign-v2/references/approval-gate-framing.md +9 -9
  13. package/skills/create-campaign-v2/references/escalation-ladder.md +3 -3
  14. package/skills/create-campaign-v2/references/final-handoff-contract.md +3 -3
  15. package/skills/create-campaign-v2/references/gold-standard-message-examples.md +294 -239
  16. package/skills/create-campaign-v2/references/gold-standard-message-patterns.md +13 -9
  17. package/skills/create-campaign-v2/references/gold-standard-message-validation-example.md +4 -4
  18. package/skills/create-campaign-v2/references/lead-validation-preview.md +1 -1
  19. package/skills/create-campaign-v2/references/parallel-critique-protocol.md +10 -10
  20. package/skills/create-campaign-v2/references/sample-validation-loop.md +3 -3
  21. package/skills/create-campaign-v2/references/{thomas-revision-filters.md → sellable-cleanup-rules.md} +12 -12
  22. package/skills/create-campaign-v2/references/step-15-re-cascade.md +1 -1
  23. package/skills/create-campaign-v2/references/thomas-variant-selection.md +1 -1
  24. package/skills/create-campaign-v2/references/validation-criteria.md +16 -13
  25. package/skills/create-campaign-v2-tail/SKILL.md +7 -7
  26. package/skills/create-campaign-v2-validation/SKILL.md +6 -6
  27. package/skills/generate-messages/SKILL.md +121 -88
  28. package/skills/research/config.json +9 -0
  29. package/skills/create-campaign-v2/references/gold-standard-runtime-message-pack.md +0 -252
@@ -1,6 +1,6 @@
1
1
  # Gold-Standard Message Patterns
2
2
 
3
- Use these patterns when validating or drafting messages for `create-campaign-v2`.
3
+ Use these patterns when validating or drafting Sellable campaign messages.
4
4
 
5
5
  The priority is not "write generally good outbound." The priority is:
6
6
 
@@ -193,14 +193,15 @@ Shape:
193
193
  - plain signal mention first
194
194
  - one line that makes the relevance feel honest
195
195
  - simple product framing
196
- - binary options
196
+ - specific low-friction next step
197
197
  - optional short `PS` with proof as the final line
198
198
 
199
199
  Prefer:
200
200
 
201
201
  - lowercase or casual casing when the motion supports it
202
- - an honest line like "hope this is relevant" or "so hopefully relevant"
203
- - two clean options instead of a long CTA paragraph
202
+ - an honest line like "hope this is relevant" or "so may be off, but this seemed relevant"
203
+ - a concrete CTA that names the useful conversation or asset
204
+ - binary options only when the brief explicitly supports two real next steps
204
205
  - direct wording over polished marketing language
205
206
 
206
207
  Avoid:
@@ -229,11 +230,11 @@ Use only when event, signal, and hiring hooks are unavailable.
229
230
 
230
231
  This is the fallback most likely to drift into bland copy, so keep it tight.
231
232
 
232
- **Exemplar:** Example 2 in `gold-standard-message-examples.md` (Stack-Replacement
233
- Operator Diagnostic). It is the default proof-led fallback exemplar. Its
234
- rhythm — observed current-state → what breaks → product-name-first mechanism →
235
- PS for credibility generalizes across proof-led fallbacks even when the
236
- category isn't literally stack-replacement.
233
+ Use the proof-led fallback logic below directly. Do not retrieve a deleted
234
+ stack-replacement archive example as copy. The useful rhythm is: observed
235
+ current-state → what breaks → product-name-first mechanism → strongest true
236
+ proof or useful CTA. That rhythm generalizes across proof-led fallbacks even
237
+ when the category is not literally stack replacement.
237
238
 
238
239
  Shape:
239
240
 
@@ -277,6 +278,9 @@ Prefer:
277
278
  - product-name-first mechanism lines when the product can be named cleanly
278
279
  - a short `PS` for social proof, backing, prior-company proof, or category-first
279
280
  proof when that proof is real and would otherwise bloat the main body
281
+ - backing proof in a `PS` must translate into buyer value, not seller focus:
282
+ `backed by [X] to help [buyer segment] [buyer outcome]` beats
283
+ `backed by [X] and focused on [category/problem]`
280
284
  - if a `PS` is used, keep it to the final line of the message
281
285
  - short words and plain sentences a busy buyer can scan fast
282
286
  - one sentence per line in the final draft when the channel is InMail or email
@@ -19,7 +19,7 @@ Status: confirmed
19
19
  Mode: DRY MODE (no DB mutation)
20
20
  Template Used: event-led canonical template
21
21
  Primary Example: Example 1 — Revvix / Spektion Event-Led Security
22
- Secondary Influence: Example 7 — Useful CTA Shapes (binary option)
22
+ Secondary Influence: Example 6 — Useful CTA Shapes (binary option)
23
23
  Lead Sample Basis: 3 validated leads (Dana Patel — VP Security Eng at Arco;
24
24
  Mariko Stein — Head of AppSec at Fernway; Ben Oduya — Director, Vuln Mgmt
25
25
  at Plantform)
@@ -52,7 +52,7 @@ No other tokens are allowed in this campaign.
52
52
 
53
53
  ## Token Adherence Table
54
54
 
55
- | Sample | Supported Tokens Only | All Tokens Resolved | Proof Safe | Personalization Grounded | Thomas Filters | Result |
55
+ | Sample | Supported Tokens Only | All Tokens Resolved | Proof Safe | Personalization Grounded | Sellable Cleanup Rules | Result |
56
56
  | ------ | --------------------- | ------------------- | ---------- | ------------------------ | -------------- | ------ |
57
57
  | Dana | yes | yes | yes | yes | pass | pass |
58
58
  | Mariko | yes | yes | yes | yes | pass | pass |
@@ -135,7 +135,7 @@ No other tokens are allowed in this campaign.
135
135
  - Best bridge: **Candidate A** — single-line transition from pain to
136
136
  mechanism without editorializing.
137
137
  - Best CTA: **Candidate C** — "Happy to grab coffee or send a short
138
- overview first" is the binary option from Example 7 and matches the
138
+ overview first" is the binary option from Example 6 and matches the
139
139
  low-pressure event motion better than A's open-ended close.
140
140
  - Assembly note: clean combination — opener from C, bridge + mechanism from
141
141
  A, CTA from C, plus a new short `PS` carrying the rank-5 founder proof
@@ -203,7 +203,7 @@ No other tokens are allowed in this campaign.
203
203
  generic credibility sentence."
204
204
  - Token fill rules are declared once, with source fields and fallbacks, and
205
205
  the adherence table reports pass/fail per lead.
206
- - The "What Good Looks Like" bar in `thomas-revision-filters.md` is met:
206
+ - The "What Good Looks Like" bar in `sellable-cleanup-rules.md` is met:
207
207
  sharp voice, grounded personalization, motion-aligned structure, useful
208
208
  CTA proportional to signal.
209
209
 
@@ -1,6 +1,6 @@
1
1
  # Lead Validation Preview
2
2
 
3
- This reference defines the Phase 84 `find leads` output contract.
3
+ This reference defines the `find leads` output contract.
4
4
 
5
5
  ## Inputs
6
6
 
@@ -1,14 +1,14 @@
1
1
  # Parallel Critique Protocol
2
2
 
3
- This reference governs the optional Step 15 critique pass introduced in
4
- Plan 85-03. Load this file whenever `messaging.critique.enabled === true`
3
+ This reference governs the optional Step 15 critique pass. Load this file
4
+ whenever `messaging.critique.enabled === true`
5
5
  in `core/auto-execute.yaml`. When the flag is `false`, the plain Step 15
6
6
  path runs unchanged and none of the protocol below applies.
7
7
 
8
8
  ## Principle
9
9
 
10
10
  Step 15 (`auto-execute-messaging`) already generates messages under the
11
- Phase 84 token contract. The critique pass is a bounded, opt-in quality
11
+ offline-validation token contract. The critique pass is a bounded, opt-in quality
12
12
  lens on top of that output. It is NOT a second drafting pass. It never
13
13
  invents new tokens, new proof, or new personalization, and it never
14
14
  ships a rewrite that violates the token contract.
@@ -20,7 +20,7 @@ The critique pass is:
20
20
  - **Parallel.** Three fixed critic groups (targeting, copy, voice)
21
21
  run in parallel and return structured JSON.
22
22
  - **Synthesized.** One synthesis step merges the three voices into a
23
- single rewrite and re-runs the Phase 84 finalizer pass.
23
+ single rewrite and re-runs the offline-validation finalizer pass.
24
24
  - **Budget-capped.** A trip on `budgetUsdCap` HALTS critique for the
25
25
  remaining sample and continues the plain tail. Cost never explodes
26
26
  silently.
@@ -47,8 +47,8 @@ calibration.
47
47
  - `lead-sample.json`, `lead-filter.md`, `brief.md` (read-only — these
48
48
  are the same artifacts the plain drafter used).
49
49
  - `messaging.critique.*` config values from `auto-execute.yaml`.
50
- - The Phase 84 token contract rules in
51
- `references/thomas-revision-filters.md`.
50
+ - The offline-validation token contract rules in
51
+ `references/sellable-cleanup-rules.md`.
52
52
 
53
53
  ## Step Shape
54
54
 
@@ -201,7 +201,7 @@ the protocol file).
201
201
 
202
202
  Rules:
203
203
 
204
- 1. **Token contract first.** The synthesizer enforces the Phase 84
204
+ 1. **Token contract first.** The synthesizer enforces the offline-validation
205
205
  token contract verbatim:
206
206
 
207
207
  - Use only tokens documented in `brief.md` as supported fields.
@@ -216,7 +216,7 @@ Rules:
216
216
  voice. Do not blend two motions into one rewrite.
217
217
 
218
218
  3. **Finalizer pass last.** If `synthesis.enforceFinalizerPass` is
219
- `true` (default), re-run the Phase 84 finalizer pass on the
219
+ `true` (default), re-run the offline-validation finalizer pass on the
220
220
  synthesis output. The finalizer is the last guardrail against
221
221
  critic-introduced token drift. A finalizer failure falls back to
222
222
  the plain message for that row.
@@ -346,14 +346,14 @@ passes.
346
346
 
347
347
  ## Hard Rules
348
348
 
349
- - Critique is OFF by default. Plan 85-02 never flips the flag.
349
+ - Critique is OFF by default. The plain campaign tail never flips the flag.
350
350
  - Sample size is bounded by `messaging.critique.sampleSize`. The
351
351
  pass NEVER runs against the full cohort.
352
352
  - Three critic groups only: targeting, copy, voice. Do NOT add a
353
353
  fourth.
354
354
  - Every critic returns the structured JSON envelope above. Free-form
355
355
  critic output is discarded.
356
- - The synthesizer enforces the Phase 84 token contract verbatim.
356
+ - The synthesizer enforces the offline-validation token contract verbatim.
357
357
  - The synthesis step MUST re-run the finalizer pass when
358
358
  `enforceFinalizerPass === true` (default).
359
359
  - Opus is reserved for the highest-value subset only and gated
@@ -1,6 +1,6 @@
1
1
  # Sample Validation Loop
2
2
 
3
- This reference governs Step 14 (`validate-sample`) of the Plan 85-02
3
+ This reference governs Step 14 (`validate-sample`) of the
4
4
  autonomous tail. Load this file before enriching + scoring the sample, and
5
5
  on every revision round.
6
6
 
@@ -243,9 +243,9 @@ Action: autonomous `update_campaign_brief` with the specific diagnostic
243
243
  (e.g. "add case-study proof for pain point Y"). Rerun sample. Increment
244
244
  revisionRound.
245
245
 
246
- #### Worked example — horizontal-SaaS seniority drift (Plan 95-03 Ambral)
246
+ #### Worked example — horizontal-SaaS seniority drift
247
247
 
248
- Symptom observed during Plan 95-03 Ambral walkthrough: 14/30 (47%)
248
+ Symptom observed during an Ambral walkthrough: 14/30 (47%)
249
249
  sample was FIT+MAYBE, but the MAYBE cluster was driven by sub-D-round
250
250
  "VP Customer Success" titles. These rows match the title whitelist but
251
251
  likely don't own budget at that stage.
@@ -1,6 +1,6 @@
1
- # Thomas Revision Filters
1
+ # Sellable Cleanup Rules
2
2
 
3
- Use these filters before Phase 84 message validation is marked `confirmed`.
3
+ Use these filters before offline message validation is marked `confirmed`.
4
4
 
5
5
  Read "What Good Looks Like" first. These are the positive targets. Use
6
6
  "Automatic Revisions" as the rejection backstop, not the primary lens.
@@ -99,6 +99,7 @@ Revise or reject the sample when any of these happen.
99
99
  - **full titles in the PS when the bare role word would read more natural** — "our CEO [did X]" reads more natural than "CEO Alex, 2x founder, [did X]". Drop titles unless the title itself is the proof
100
100
  - more than two proof beats in the PS (three or more reads as a resume dump)
101
101
  - a proof beat that is not tied to the buyer's situation — proof should explain why this sender gets the buyer's pain, not just list credentials
102
+ - **backing proof ends in seller-focus copy** — reject `backed by [X] and focused on [category/problem]`. Keep the backing only if the same line turns into buyer value, e.g. `backed by [X] to help [buyer segment] [buyer outcome]`; otherwise cut the PS
102
103
 
103
104
  **Motion alignment**
104
105
 
@@ -453,17 +454,17 @@ Tell #8 hardcoded signoff, Tell #10 vague-proof) overlap with
453
454
  Filters 3 and 6. This is intentional — the catalog is the canonical
454
455
  enumeration; Filter 8 is the catalog-driven check. Filters 3 and 6
455
456
  remain as human-readable explanations of specific high-priority
456
- tell classes, but the actual detection logic in Phase-84 reads from
457
+ tell classes, but the actual detection logic in offline validation reads from
457
458
  `ai-tells.md`.
458
459
 
459
460
  **Adding new tells.** When UAT surfaces a new AI-tell pattern, add
460
461
  it as `Tell #N` in `ai-tells.md` with Pattern / Why / Allowed
461
- alternative / Severity. The next Phase-84 run picks it up
462
+ alternative / Severity. The next offline validation run picks it up
462
463
  automatically. Update
463
464
  `tests/scripts/skill-references-substance-filters.test.ts` if the
464
465
  new tell needs regression coverage.
465
466
 
466
- **Example of a violation** (Plan 05 Patientdesk winner, pre-catalog —
467
+ **Example of a violation** (Patientdesk regression example, pre-catalog —
467
468
  Tell #1 body-level self-introduction):
468
469
 
469
470
  > "Hey Bonnie — Oncel here. My co-founders and I ran our own dental
@@ -519,7 +520,7 @@ Do not patch a weak message by inventing stronger personalization.
519
520
 
520
521
  ## Dry-Mode Discipline
521
522
 
522
- Phase 84 dry mode is validation, not production drafting.
523
+ Offline dry mode is validation, not production drafting.
523
524
 
524
525
  - use only `brief.md`, `lead-filter.md`, and `lead-sample.json`
525
526
  - do not fetch new research
@@ -530,19 +531,18 @@ Phase 84 dry mode is validation, not production drafting.
530
531
  - retrieve broadly, but preserve one primary example and borrow from at most one
531
532
  narrow secondary influence
532
533
 
533
- ## Plan 85-03 Critique Addendum
534
+ ## Critique Rewrite Addendum
534
535
 
535
536
  These filters are also the gate on any critique rewrite shipped by the
536
- Plan 85-03 parallel critique protocol (see
537
- `references/parallel-critique-protocol.md`). When the critique flag is
538
- on, a rewritten message must still clear:
537
+ parallel critique protocol (see `references/parallel-critique-protocol.md`).
538
+ When the critique flag is on, a rewritten message must still clear:
539
539
 
540
540
  - every "Automatic Revisions" check above (jargon, resume-list PS, stacked
541
541
  sentences, weak hooks, etc.)
542
- - the Phase 84 token contract: only supported tokens from the brief, no
542
+ - the offline-validation token contract: only supported tokens from the brief, no
543
543
  unresolved `{{token}}`, no invented proof, no personalization that can't
544
544
  be traced to `lead-sample.json`
545
- - the Phase 84 finalizer pass when `synthesis.enforceFinalizerPass` is
545
+ - the offline-validation finalizer pass when `synthesis.enforceFinalizerPass` is
546
546
  `true` (default)
547
547
 
548
548
  If a rewrite fails any of these, the critique pass falls back to the
@@ -63,7 +63,7 @@ rows graduated.
63
63
  })
64
64
 
65
65
  5. re-check token contract on the cascaded subset (strict mode default)
66
- — see references/thomas-revision-filters.md + gold-standard-message-patterns.md
66
+ — see references/sellable-cleanup-rules.md + gold-standard-message-patterns.md
67
67
 
68
68
  6. go back to step 1 until selectedCellCount == 0
69
69
  ```
@@ -1,6 +1,6 @@
1
1
  # Thomas Variant Selection
2
2
 
3
- This reference governs which rows in a Plan 85-03 critique sample earn
3
+ This reference governs which rows in a critique sample earn
4
4
  an Opus refinement rewrite. Load this file only when
5
5
  `messaging.critique.enabled === true` AND
6
6
  `messaging.critique.opus.enabled === true` in
@@ -1,8 +1,8 @@
1
1
  # Validation Criteria
2
2
 
3
- Phase 84 is a chained-artifact validation pass over the Phase 83 brief. The
4
- goal is to preserve the brief thesis while proving that leads, filters, and
5
- message direction hold up against real preview evidence.
3
+ Offline validation is a chained-artifact validation pass over the approved
4
+ campaign brief. The goal is to preserve the brief thesis while proving that
5
+ leads, filters, and message direction hold up against real preview evidence.
6
6
 
7
7
  ## Primary Contract
8
8
 
@@ -10,7 +10,7 @@ message direction hold up against real preview evidence.
10
10
  - validation/debug artifacts are optional debug/UAT diagnostics, not durable campaign state.
11
11
  - normal customer runs should not expose local draft files.
12
12
  - resume and handoff read campaign state before debug files.
13
- - `CampaignOffer.campaignBrief` is the durable Phase 83 thesis input;
13
+ - `CampaignOffer.campaignBrief` is the durable campaign thesis input;
14
14
  `brief.md` is its debug copy
15
15
  - `lead-review.md` and `lead-sample.json` are the required outputs of lead preview
16
16
  - `lead-filter.md` is the primary output of the middle step
@@ -28,7 +28,7 @@ Allowed:
28
28
 
29
29
  Not allowed:
30
30
 
31
- - rewrite the Phase 83 thesis in `brief.md`
31
+ - rewrite the approved campaign thesis in `brief.md`
32
32
  - create `lead-filter.md`
33
33
  - create `message-validation.md`
34
34
  - mutate campaign state
@@ -87,13 +87,12 @@ Required:
87
87
  the brief justifies absence with reference to a specific archived winner.
88
88
  If a candidate uses `two options:`, option `a)` and option `b)` must be
89
89
  separated by a blank line so the CTA scans cleanly on mobile.
90
- - **All 5 Substance Filters from `thomas-revision-filters.md` MUST
91
- PASS per candidate.** A candidate that fails any substance filter
92
- (Earned-right, Presumption, Vague-proof, Read-as-1:1, Founder-origin
93
- coherence) is BLOCKED. The Finalizer Pass CANNOT select a blocked
94
- candidate. If all 3 candidates fail, route to `revise-message` with
95
- the failure reasons enumerated per candidate (cite the filter name and
96
- the offending line).
90
+ - **All Sellable cleanup rules, including all 8 substance filters from
91
+ `sellable-cleanup-rules.md`, MUST PASS per candidate.** A candidate that fails
92
+ any cleanup rule or substance filter is BLOCKED. The Finalizer Pass CANNOT
93
+ select a blocked candidate. If all 3 candidates fail, route to
94
+ `revise-message` with the failure reasons enumerated per candidate (cite the
95
+ rule/filter name and the offending line).
97
96
 
98
97
  ## Lead Preview Expectations
99
98
 
@@ -254,7 +253,7 @@ The sample set must:
254
253
  - contain no invented proof, metrics, logos, or customer names
255
254
  - keep proof claims inside the brief's safe-claims boundary
256
255
  - reject personalization that cannot be traced back to `lead-sample.json`
257
- - apply Thomas revision filters before the step is marked `confirmed`
256
+ - apply Sellable cleanup rules before the step is marked `confirmed`
258
257
  - choose the highest-specificity validated strategy available in this order:
259
258
  event-led, signal-led, job-post-led, then proof-led specialist fallback
260
259
  - retrieve against the full archived gold-standard library and choose a
@@ -328,6 +327,10 @@ that does Y` anchor sentence before any action breakdown, then one action
328
327
  with no anchor. Use "I" voice if the sender is the founder; "our CEO",
329
328
  "our team", or "we" otherwise. At most two proof beats. No three-credential
330
329
  resume lists
330
+ - reject backing PS lines that describe the seller's focus instead of the
331
+ buyer's outcome, such as `backed by [X] and focused on [category/problem]`.
332
+ Backing proof only survives when the same line translates to buyer value,
333
+ e.g. `backed by [X] to help [buyer segment] [buyer outcome]`
331
334
  - samples in one set must read like siblings from one campaign, not three
332
335
  experiments
333
336
  - reject fallback drafts that lead with generic "most teams..." copy without a
@@ -379,7 +379,7 @@ templateRevision: "current" })` until the first current-revision generated
379
379
  Generate Message cell, and do not add "one more wait" for a stronger sample.
380
380
  Remaining review/process sample rows can continue processing in the background.
381
381
  4. Read the first ready generated message back via `get_rows` (full) and
382
- sanity-check that sample against the Phase 84 token contract: no unresolved
382
+ sanity-check that sample against the offline-validation token contract: no unresolved
383
383
  `{{tokens}}`, no invented proof, one sentence per line, etc.
384
384
  5. If the sample fails the token contract, diagnose brief-vs-list
385
385
  (same revision loop as Step 14) and escalate if over
@@ -403,17 +403,17 @@ strings, which is why Step 16 requires Step 15 to be complete.
403
403
 
404
404
  1. Observe the review-sample messages on the same sample that passed
405
405
  validation.
406
- 2. If `messaging.critique.enabled` is true (Plan 85-03), run the
406
+ 2. If `messaging.critique.enabled` is true, run the
407
407
  bounded critique pass on the sample output per
408
408
  `references/parallel-critique-protocol.md`. The pass runs on at
409
409
  most `messaging.critique.sampleSize` rows, sends each row through
410
410
  three parallel critics (targeting / copy / voice) that return
411
411
  structured JSON, and merges the voices in a synthesis step that
412
- enforces the Phase 84 token contract verbatim and re-runs the
412
+ enforces the offline-validation token contract verbatim and re-runs the
413
413
  finalizer pass. Any rewrite that invents proof or uses an
414
414
  unsupported token falls back to the plain generated message. A
415
415
  trip of `messaging.critique.budgetUsdCap` HALTS critique for the
416
- remaining sample and continues the plain tail. Plan 85-02 reads
416
+ remaining sample and continues the plain tail. The plain campaign tail reads
417
417
  the flag but never flips it; critique stays off until the flag is
418
418
  deliberately enabled.
419
419
  3. If `messaging.critique.opus.enabled` is also true, route the
@@ -512,7 +512,7 @@ calling any mutating tool; if the campaign is already running, skip
512
512
  approve-batch / start_campaign / update_campaign and just confirm.
513
513
 
514
514
  Workspace/sender mismatch at greenlight time aborts the start with the
515
- same invariant Phase 84 enforces.
515
+ same invariant offline validation enforces.
516
516
 
517
517
  ## Threshold Trips and Logging
518
518
 
@@ -546,7 +546,7 @@ runs.
546
546
 
547
547
  | File | Load when |
548
548
  | ------------------------------------------------ | ------------------------------------------------------------------------- |
549
- | `references/approval-gate-framing.md` | Phase 85 commit gate, before showing the approval packet |
549
+ | `references/approval-gate-framing.md` | Approval gate, before showing the approval packet |
550
550
  | `references/watch-link-handoff.md` | First brief handoff + explicit link recovery only |
551
551
  | `references/post-mint-source-materialization.md` | Step 13, before importing normal-discovery or legacy campaignless sources |
552
552
  | `references/sample-validation-loop.md` | Step 14, before enriching + scoring the sample |
@@ -554,7 +554,7 @@ runs.
554
554
  | `references/final-handoff-contract.md` | Step 16, and every Claude greenlight turn |
555
555
  | `references/parallel-critique-protocol.md` | Step 15 when `messaging.critique.enabled` is true |
556
556
  | `references/thomas-variant-selection.md` | Step 15 when `messaging.critique.opus.enabled` is true |
557
- | `references/thomas-revision-filters.md` | Any critique rewrite, before persisting |
557
+ | `references/sellable-cleanup-rules.md` | Any critique rewrite, before persisting |
558
558
  | `core/auto-execute.yaml` | Start of Step 13, load once; all tail steps read parsed values |
559
559
  | `core/auto-execute.README.md` | When tuning `auto-execute.yaml` knobs or reviewing threshold-trip logs |
560
560
 
@@ -1,14 +1,14 @@
1
1
  ---
2
2
  name: create-campaign-v2-validation
3
- description: Validate a Phase 83 `brief.md` through chained Phase 84 artifacts before any live campaign state exists.
3
+ description: Validate an approved `brief.md` through chained offline artifacts before any live campaign state exists.
4
4
  visibility: internal
5
5
  ---
6
6
 
7
7
  # Create Campaign v2 Validation
8
8
 
9
9
  <role>
10
- You are the Phase 84 validation orchestrator for create-campaign-v2. Your job
11
- is to validate a Phase 83 `brief.md` through chained draft artifacts without
10
+ You are the offline validation orchestrator for create-campaign-v2. Your job
11
+ is to validate an approved `brief.md` through chained draft artifacts without
12
12
  creating live campaign state.
13
13
  </role>
14
14
 
@@ -41,7 +41,7 @@ Validated draft directory:
41
41
 
42
42
  <rules>
43
43
 
44
- - `brief.md` is the stable Phase 83 input and remains the thesis source.
44
+ - `brief.md` is the stable approved input and remains the thesis source.
45
45
  - `lead-review.md` and `lead-sample.json` are the required outputs of `find leads`.
46
46
  - `lead-filter.md` is the primary output of `filter leads`.
47
47
  - `rubric.json` is optional and secondary to `lead-filter.md`.
@@ -49,7 +49,7 @@ Validated draft directory:
49
49
  - Run validation serially in this order: `find leads`, `filter leads`, `generate message`.
50
50
  - Resume state is based on the presence and completeness of the chained artifacts,
51
51
  not on inline validation blocks inside `brief.md`.
52
- - Preserve the Phase 83 thesis. Do not rewrite product, ICP, offer, or message
52
+ - Preserve the approved thesis. Do not rewrite product, ICP, offer, or message
53
53
  hypothesis sections during preview validation.
54
54
  - Every artifact write uses `tmp + rename` so a failed write leaves the prior
55
55
  artifact intact.
@@ -222,7 +222,7 @@ Orchestration requirements:
222
222
  same company as the brief
223
223
  - draft 3 internal candidates and run a Finalizer Pass that combines the
224
224
  best opener, proof sentence, bridge, and CTA across them into one winner
225
- - pass the Thomas revision filters before writing findings
225
+ - pass the Sellable cleanup rules before writing findings
226
226
  - pass the source-transition gate before writing findings. For sender-owned
227
227
  LinkedIn post sources where the sample proves a reaction/comment, a light
228
228
  first-person acknowledgment is allowed (`appreciate you showing some love on