@sellable/mcp 0.1.212 → 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 (48) hide show
  1. package/README.md +7 -7
  2. package/agents/post-find-leads-message-scout.md +176 -134
  3. package/dist/engage-memory.js +0 -5
  4. package/dist/identity-memory.js +0 -4
  5. package/dist/tools/engage-memory.js +2 -2
  6. package/dist/tools/leads.js +7 -3
  7. package/dist/tools/prompts.js +18 -12
  8. package/package.json +1 -1
  9. package/skills/create-campaign/SKILL.md +11 -12
  10. package/skills/create-campaign/context/learnings.md +1 -1
  11. package/skills/create-campaign/references/brief-template.md +2 -2
  12. package/skills/create-campaign-brief/references/brief-template.md +2 -2
  13. package/skills/create-campaign-brief/references/draft-lifecycle.md +1 -1
  14. package/skills/create-campaign-brief/references/examples/briefs/gelee.md +2 -2
  15. package/skills/create-campaign-brief/references/examples/briefs/superpower.md +41 -28
  16. package/skills/create-campaign-brief/references/phase75-active-runtime-message-pack.md +27 -36
  17. package/skills/create-campaign-v2/SKILL.md +16 -9
  18. package/skills/create-campaign-v2/core/auto-execute.README.md +11 -11
  19. package/skills/create-campaign-v2/core/auto-execute.yaml +4 -4
  20. package/skills/create-campaign-v2/core/flow.v2.json +1 -1
  21. package/skills/create-campaign-v2/references/ai-tells.md +54 -19
  22. package/skills/create-campaign-v2/references/approval-gate-framing.md +10 -10
  23. package/skills/create-campaign-v2/references/escalation-ladder.md +3 -3
  24. package/skills/create-campaign-v2/references/final-handoff-contract.md +3 -3
  25. package/skills/create-campaign-v2/references/gold-standard-message-examples.md +295 -226
  26. package/skills/create-campaign-v2/references/gold-standard-message-patterns.md +48 -9
  27. package/skills/create-campaign-v2/references/gold-standard-message-validation-example.md +4 -4
  28. package/skills/create-campaign-v2/references/lead-validation-preview.md +1 -1
  29. package/skills/create-campaign-v2/references/parallel-critique-protocol.md +10 -10
  30. package/skills/create-campaign-v2/references/sample-validation-loop.md +3 -3
  31. package/skills/create-campaign-v2/references/{thomas-revision-filters.md → sellable-cleanup-rules.md} +29 -19
  32. package/skills/create-campaign-v2/references/step-15-re-cascade.md +1 -1
  33. package/skills/create-campaign-v2/references/thomas-variant-selection.md +1 -1
  34. package/skills/create-campaign-v2/references/validation-criteria.md +24 -18
  35. package/skills/create-campaign-v2-tail/SKILL.md +7 -7
  36. package/skills/create-campaign-v2-validation/SKILL.md +23 -7
  37. package/skills/create-post/SKILL.md +27 -27
  38. package/skills/engage/SKILL.md +12 -12
  39. package/skills/engage/core/README.md +14 -14
  40. package/skills/find-leads/SKILL.md +1 -1
  41. package/skills/generate-messages/SKILL.md +305 -147
  42. package/skills/interview/SKILL.md +24 -24
  43. package/skills/interview/references/legacy-linkedin-interview.md +12 -12
  44. package/skills/interview/references/reference-curation.md +4 -4
  45. package/skills/interview/references/voice-capture-method.md +1 -1
  46. package/skills/load-voice/SKILL.md +21 -25
  47. package/skills/research/SKILL.md +1 -1
  48. package/skills/research/config.json +9 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sellable/mcp",
3
- "version": "0.1.212",
3
+ "version": "0.1.214",
4
4
  "type": "module",
5
5
  "description": "Sellable MCP server for Claude Code and Codex campaign workflows",
6
6
  "main": "dist/index.js",
@@ -66,8 +66,8 @@ allowed-tools:
66
66
 
67
67
  Use this as the customer-facing public wrapper for Sellable campaign creation.
68
68
  It bootstraps auth and host capabilities, then loads the internal
69
- `create-campaign-v2` workflow prompt and `core/flow.v2.json` through MCP. Keep
70
- this wrapper thin; v2 is the operational source of truth.
69
+ the internal campaign workflow prompt and `core/flow.v2.json` through MCP. Keep
70
+ this wrapper thin; the packaged workflow is the operational source of truth.
71
71
 
72
72
  CampaignOffer state and the watch link are the customer-facing source of truth.
73
73
  Disk artifacts are optional debug/UAT diagnostics; normal customer runs should
@@ -722,7 +722,7 @@ updates.
722
722
  No other lines. No "all set", no "signed in", no other acknowledgement.
723
723
 
724
724
  After the user pastes the LinkedIn profile URL or handle, proceed with the
725
- identity-first campaign setup in the v2 subskill prompt. Normalize handles
725
+ identity-first campaign setup in the internal workflow prompt. Normalize handles
726
726
  to a full profile URL, resolve it with `fetch_linkedin_profile`, and mark
727
727
  the client/company research gate with `complete_sender_research` when that
728
728
  protocol is required.
@@ -760,11 +760,10 @@ updates.
760
760
  Drafting whenever the host exposes it
761
761
  and the current host policy allows agent launch. The worker must load the
762
762
  full `mcp__sellable__get_subskill_prompt({ subskillName: "generate-messages" })`
763
- prompt, every referenced message asset through
764
- `mcp__sellable__get_subskill_asset`, and before returning
763
+ prompt, every required message asset named by `generate-messages` Mode 0
764
+ through `mcp__sellable__get_subskill_asset`, and before returning
765
765
  `mcp__sellable__get_subskill_prompt({ subskillName: "create-campaign-v2-validation" })`
766
- plus any validation assets it references through
767
- `mcp__sellable__get_subskill_asset` as the internal validation gate.
766
+ as the final internal validation gate.
768
767
  In Codex, YOLO/autonomous mode counts as campaign-scoped permission to use
769
768
  this single Message Drafting background agent. If the user has not enabled
770
769
  YOLO and has not explicitly asked for background agents, subagents, parallel
@@ -776,7 +775,7 @@ updates.
776
775
  silently fall back to parent-thread message drafting; parent fallback is
777
776
  allowed only when the user explicitly says to continue without a background
778
777
  agent.
779
- Do not use any alternate or examples-only message prompt. Message review and
778
+ Do not use any alternate, examples-only, or local-artifact message prompt. Message review and
780
779
  message QA require Message Drafting output:
781
780
  do not draft from a checklist, local markdown artifact, or parent-thread
782
781
  intuition. Use campaign state, campaign brief content, selected source state, and
@@ -785,10 +784,10 @@ updates.
785
784
  synthesize local validation artifacts from general knowledge. The handoff to
786
785
  Message Drafting should pass lean basis only, not hashes, counts, or a long
787
786
  row-id list; the branch loads current brief/context, the full
788
- `generate-messages` prompt, all referenced message assets,
789
- `create-campaign-v2-validation`, and any validation assets it references. Do
790
- not render fallback sample, concerns, or a QA receipt on the normal happy
791
- path.
787
+ `generate-messages` prompt, all required message assets, and
788
+ `create-campaign-v2-validation`. The message recommendation handoff is
789
+ labeled Markdown, not raw JSON. Do not render fallback sample, concerns, or a
790
+ QA receipt on the normal happy path.
792
791
  6. Create the campaign shell early with the v1 brief so the user can open the
793
792
  watch link and see useful setup state immediately. Materialize the approved
794
793
  source list, copy confirmed rows into the campaign, and internally process the
@@ -4,7 +4,7 @@ This log captures what has worked in real campaigns.
4
4
 
5
5
  Entries should be short, specific, and based on observed outcomes.
6
6
 
7
- **Cross-skill learnings** that would help other skills (engage, create-post) should ALSO be written to `.sellable/insights/cross-skill.md` so the entire system learns.
7
+ **Cross-skill learnings** that would help other skills (engage, create-post) should ALSO be written to `~/.sellable/insights/cross-skill.md` so the entire system learns.
8
8
 
9
9
  ## Log
10
10
 
@@ -41,8 +41,8 @@ Example: "In a 15-minute call, we will audit your top 10 accounts and show where
41
41
  - **Bridge to:** [How it connects to their pain]
42
42
  - **Avoid:** [Generic phrases to skip - "best-in-class", "industry-leading", etc.]
43
43
  - **Voice:** [Reference core memory / composed engage memory first. Use legacy writing memory only as fallback.]
44
- - **Outbound rules:** [Reference `.sellable/configs/writing/outbound.md` if loaded -- observation -> relevance -> ask]
45
- - **Proof boundaries:** [Reference `.sellable/configs/core/proof-ledger.md` and `.sellable/configs/core/wins-ledger.md` if loaded. Do not upgrade or invent claims.]
44
+ - **Outbound rules:** [Reference `~/.sellable/configs/writing/outbound.md` if loaded -- observation -> relevance -> ask]
45
+ - **Proof boundaries:** [Reference `~/.sellable/configs/core/proof-ledger.md` and `~/.sellable/configs/core/wins-ledger.md` if loaded. Do not upgrade or invent claims.]
46
46
 
47
47
  ## Do NOT Target
48
48
 
@@ -15,7 +15,7 @@ assistant message directly from the `result.result` stream-json payload —
15
15
  it does not read a file off disk.
16
16
 
17
17
  If you find yourself emitting a TodoWrite step like "Write brief.md v1
18
- to disk" or "Save brief to .sellable/..." — DELETE that step and return
18
+ to disk" or "Save brief to ~/.sellable/..." — DELETE that step and return
19
19
  the brief inline instead. The tools `Write`, `Edit`, and `Bash` are
20
20
  intentionally not in the Phase 83 harness allowlist; attempting them
21
21
  will cause a ToolSearch loop that deadlocks the turn.
@@ -37,7 +37,7 @@ offer is, why it should work, and what must be true before we launch. Do not
37
37
  prescribe message structure, opener order, or final copy here.]
38
38
 
39
39
  Draft path:
40
- `.sellable/create-campaign-brief/drafts/{workspace-slug}/{campaign-slug}/brief.md`
40
+ `~/.sellable/create-campaign-brief/drafts/{workspace-slug}/{campaign-slug}/brief.md`
41
41
 
42
42
  ## Product
43
43
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  Phase 83 writes one Markdown file:
4
4
 
5
- `.sellable/create-campaign-brief/drafts/{workspace-slug}/{campaign-slug}/brief.md`
5
+ `~/.sellable/create-campaign-brief/drafts/{workspace-slug}/{campaign-slug}/brief.md`
6
6
 
7
7
  ## Rules
8
8
 
@@ -58,7 +58,7 @@ _Personalization: References their previous exit or current venture by name + th
58
58
 
59
59
  Hi {{first_name}}, let me know if i'm off, but {{seems_like_you}}.
60
60
 
61
- saw you were active in some {{signal_topic}} conversations recently and figured this might be relevant.
61
+ saw you in a few conversations around {{signal_topic}}, so hope this is relevant.
62
62
 
63
63
  we work with about 30 exited founders right now (yc, techstars, sequoia backed) handling their entire linkedin with ai + human review.
64
64
 
@@ -131,7 +131,7 @@ is this worth a look or should i send a short overview?
131
131
 
132
132
  Hi sarah, let me know if i'm off, but seems like you started building something new in the pharma space after the Benchling exit.
133
133
 
134
- saw you were active in some founder-led growth conversations recently and figured this might be relevant.
134
+ saw you in a few conversations around founder-led growth, so hope this is relevant.
135
135
 
136
136
  we work with about 30 exited founders right now (yc, techstars, sequoia backed) handling their entire linkedin with ai + human review.
137
137
 
@@ -35,70 +35,82 @@ Signal-based outreach using peer-to-peer tone. Positioning Superpower as early d
35
35
 
36
36
  **VARIANT 1 — Subject: jeff/{{first name}} intro**
37
37
 
38
- hey {{first name}}, saw you were active around some {{topic}} stuff recently and figured this might actually be relevant
38
+ hey {{first name}},
39
39
 
40
- any chance you're exploring early detection or preventive health programs at {{company}}?
40
+ saw you in a few conversations around {{topic}}, so hope this is relevant.
41
41
 
42
- we screen for 1,000+ conditions from a single blood draw and surface risks before they ever become claims.
42
+ if preventive health is anywhere near the benefits plan at {{company}}, Superpower helps the team spot risk earlier.
43
43
 
44
- basically your team gets to see what's coming instead of just reacting to it
44
+ it screens for 1,000+ conditions from a single blood draw and surfaces risks before they become claims.
45
45
 
46
- can I send over some more info?
46
+ basically your team gets to see what's coming instead of only reacting to it.
47
+
48
+ should i send over the short version?
47
49
 
48
50
  **VARIANT 2 — Subject: jeff/{{first name}} intro**
49
51
 
50
- hey {{first name}}. saw you were active in some {{topic}} conversations recently and wanted to run something by you
52
+ hey {{first name}},
53
+
54
+ saw you in a few conversations around {{topic}}, so hope this is relevant.
51
55
 
52
56
  most annual physicals test 15 biomarkers max.
53
57
 
54
- there's over 100 that actually matter and the gap between those two numbers is where the expensive claims tend to sit
58
+ Superpower looks at 100+ biomarkers and screens for 1,000+ conditions from one draw.
55
59
 
56
- teams like Lyft and Notion are already exploring this. one draw, 1,000+ conditions, $199 a person.
60
+ teams like Lyft and Notion are already exploring this at $199 a person.
57
61
 
58
- if your claims costs have been going up and you're not sure where it's coming from... that gap may be a good place to start looking
62
+ if preventive health is nowhere near your lane, ignore me.
59
63
 
60
- can I send over some more info?
64
+ should i send over the short version?
61
65
 
62
66
  ## Examples
63
67
 
64
68
  **Example 1 (Variant 1 — self-insured health plans):**
65
69
  Subject: susana/prab intro
66
70
 
67
- hey susana, saw you were active around self-insured health plan content recently and figured this might actually be relevant
71
+ hey susana,
72
+
73
+ saw you in a few conversations around self-insured health plans, so hope this is relevant.
68
74
 
69
- any chance you're exploring preventive health programs at Quantum Health?
75
+ if preventive health is anywhere near the benefits plan at Quantum Health, Superpower helps the team spot risk earlier.
70
76
 
71
- we screen for 1,000+ conditions from a single blood draw and surface risks before they ever become claims.
77
+ it screens for 1,000+ conditions from a single blood draw and surfaces risks before they become claims.
72
78
 
73
- basically your team gets to see what's coming instead of just reacting to it
79
+ basically your team gets to see what's coming instead of only reacting to it.
74
80
 
75
- can I send over some more info?
81
+ should i send over the short version?
76
82
 
77
83
  **Example 2 (Variant 2 — employee wellness programs):**
78
84
  Subject: lisa/prab intro
79
85
 
80
- hey lisa. saw you were active in some employee wellness programs conversations recently and wanted to run something by you
86
+ hey lisa,
87
+
88
+ saw you in a few conversations around employee wellness programs, so hope this is relevant.
81
89
 
82
90
  most annual physicals test 15 biomarkers max.
83
91
 
84
- there's over 100 that actually matter and the gap is driving the surprise expensive claims every year
92
+ Superpower looks at 100+ biomarkers and screens for 1,000+ conditions from one draw.
93
+
94
+ teams like Lyft and Notion are already exploring this at $199 a person.
85
95
 
86
- teams like Lyft and Notion are already exploring this. one test, 1,000+ conditions, $199 a person
96
+ if preventive health is nowhere near your lane, ignore me.
87
97
 
88
- can I send over some more info?
98
+ should i send over the short version?
89
99
 
90
100
  **Example 3 (Variant 1 — employee wellness programs):**
91
101
  Subject: princess/prab intro
92
102
 
93
- hey princess, saw you were active around employee wellness programs content recently and figured this might actually be relevant
103
+ hey princess,
104
+
105
+ saw you in a few conversations around employee wellness programs, so hope this is relevant.
94
106
 
95
- any chance you're exploring preventive health programs at Marriott?
107
+ if preventive health is anywhere near the benefits plan at Marriott, Superpower helps the team spot risk earlier.
96
108
 
97
- we screen for 1,000+ conditions from a single blood draw and surface risks before they ever become claims.
109
+ it screens for 1,000+ conditions from a single blood draw and surfaces risks before they become claims.
98
110
 
99
- basically your team gets to see what's coming instead of just reacting to it
111
+ basically your team gets to see what's coming instead of only reacting to it.
100
112
 
101
- can I send over some more info?
113
+ should i send over the short version?
102
114
 
103
115
  ## Social Proof
104
116
 
@@ -112,7 +124,8 @@ Teams like Lyft and Notion are exploring Superpower's early detection platform.
112
124
  - **ICP filtering:** All prospects filtered against ICP criteria before entering send queue
113
125
  - **Positioning:** Early detection tool for claims prevention, not a wellness benefit
114
126
  - **Tone:** All lowercase, casual, peer-to-peer - building relationship before asking
115
- - **Two approved variants:** Testing different hooks (exploratory vs. problem-aware)
127
+ - **Two approved variants:** Testing a low-certainty signal bridge vs. proof-led
128
+ benefits mechanism
116
129
 
117
130
  ### Rubric Markdown
118
131
 
@@ -212,8 +225,8 @@ Teams like Lyft and Notion are already using early detection screening. One bloo
212
225
 
213
226
  **Subject: Prab/{{first_name}} intro**
214
227
 
215
- Hey {{first_name}}, not sure if you've looked into this but felt it may be relevant to your work.
228
+ Hey {{first_name}},
216
229
 
217
- have you ever looked into early detection or preventive health programs for {{company}}?
230
+ hope this is relevant if preventive health is anywhere near the benefits plan at {{company}}.
218
231
 
219
- we screen for 1,000+ conditions from a single blood draw and surface risks before they ever become claims.
232
+ Superpower screens for 1,000+ conditions from a single blood draw and surfaces risks before they become claims.
@@ -1,4 +1,4 @@
1
- # Phase 75 Active Runtime Message Pack
1
+ # Active Runtime Message Pack
2
2
 
3
3
  This is the narrow message inspiration pack for `create-campaign-brief`.
4
4
 
@@ -14,7 +14,8 @@ Included as primary gold examples:
14
14
  - `Galley`
15
15
  - `Clover`
16
16
  - `Persona`
17
- - `Superpower`
17
+ - `Superpower` — domain-language reference only; use the cleaned low-certainty
18
+ opener, not retired engagement-source phrasing
18
19
 
19
20
  Not included in runtime inspiration:
20
21
 
@@ -33,6 +34,9 @@ Not included in runtime inspiration:
33
34
 
34
35
  - Feed only endorsed examples into generation.
35
36
  - Keep bad lines only if they are explicitly labeled `BAD` and paired with a `BETTER` version.
37
+ - Treat sellable.dev, Hey Digital, Persona, Galley, and Clover as the primary
38
+ line-level quality anchors. Superpower is useful for benefits/healthcare
39
+ mechanism language, but it must not outrank those examples on opener style.
36
40
  - Default to one approved message in the generated brief unless the ICP is genuinely broad.
37
41
  - A/B CTA is optional. Use it only when the second option is truly strong.
38
42
  - If there is a great low-friction proof asset or case study, that is often the best Option B.
@@ -134,22 +138,26 @@ b) I send you our B2B Ads Arsenal — ad templates, playbooks, and case studies
134
138
 
135
139
  Why included:
136
140
 
137
- - strongest concrete operational offer
138
- - easy to picture the output
139
- - why it works: the pain is tactile, the mechanism is easy to visualize, and the
140
- CTA lets the buyer test the product with their own real input instead of
141
- committing to a generic call
141
+ - strongest signal-led honest-operator foodservice motion
142
+ - concrete buyer pain before product category
143
+ - why it works: the source bridge is low-certainty, the mechanism connects real
144
+ operating objects, and the CTA names a useful conversation instead of asking
145
+ for a generic call
142
146
 
143
147
  ```md
144
- hey {{first_name}},
148
+ Hey Mohamed,
149
+
150
+ Found you in a thread about food cost margins, so may be off, but this seemed relevant.
145
151
 
146
- this might not apply but if you're still rebuilding menu plans by hand every time a rotation changes, there's a way to skip that whole step.
152
+ Bulk costing gets messy when recipes, portions, and vendor prices live apart.
147
153
 
148
- we built a tool that takes a menu from whatever format it's in and just... builds the whole plan. recipes, purchasing, stations, all connected. no more starting from scratch every cycle.
154
+ Galley is a Culinary Resource Planning platform for foodservice teams.
149
155
 
150
- works best for {{company_team_type}} running rotations across a bunch of locations where every menu change turns into hours of work nobody has time for.
156
+ It keeps recipes, ingredient costs, and menu margins connected - where purchasing and production can work from the same numbers.
151
157
 
152
- easiest way to see if it's worth a look is to try it with one of your actual menus. happy to set that up or I can send a 2-min video instead.
158
+ Open to a quick call on recipe costing and margin visibility?
159
+
160
+ P.S. 2,400+ kitchens already use Galley - with a 4.9 average rating :)
153
161
  ```
154
162
 
155
163
  ### Clover
@@ -213,36 +221,19 @@ Why included:
213
221
 
214
222
  - simple language in a hard domain
215
223
  - useful plain-language healthcare constraint example
216
- - why it works: it asks about the buyer's existing benefits priority, explains
217
- the mechanism in plain language, and keeps the ask tiny instead of forcing a
218
- call
224
+ - why it works: it uses a low-certainty signal bridge, explains the mechanism
225
+ in plain language, and keeps the ask tiny instead of forcing a call
219
226
 
220
227
  ```md
221
228
  Hey {{first_name}},
222
229
 
223
- not sure if you've looked into this but felt it may be relevant to your work.
224
-
225
- have you ever looked into early detection or preventive health programs for {{company}}?
226
-
227
- we screen for 1,000+ conditions from a single blood draw and surface risks before they ever become claims.
228
-
229
- basically your team gets to see what's coming instead of just reacting to it
230
-
231
- can I send over some more info?
232
- ```
233
-
234
- Locked production variant from the same Superpower campaign:
235
-
236
- ```md
237
- subject: {{company}} + 1,000 biomarkers + 24/7 care team
238
-
239
- hey {{first_name}},
230
+ saw you in a few conversations around {{topic}}, so hope this is relevant.
240
231
 
241
- curious how you're thinking about preventative health + benefits innovation given your work at {{company}}.
232
+ if preventive health is anywhere near the benefits plan at {{company}}, Superpower helps the team spot risk earlier.
242
233
 
243
- we provide companies direct access to 100+ biomarker lab testing and screen 1,000+ conditions for every employee.
234
+ it screens for 1,000+ conditions from a single blood draw and surfaces risks before they become claims.
244
235
 
245
- then we drive behaviour change with a 24/7 care team.
236
+ basically your team gets to see what's coming instead of only reacting to it.
246
237
 
247
- open to a 15 min call to learn more, or should i send over a short overview first?
238
+ should i send over the short version?
248
239
  ```
@@ -4,9 +4,9 @@ description: compact JSON-gated shell-first Sellable campaign flow through sourc
4
4
  visibility: internal
5
5
  ---
6
6
 
7
- # Create Campaign v2
7
+ # Create Campaign Workflow
8
8
 
9
- fast entry point. Run the active state machine in `core/flow.v2.json`;
9
+ Fast entry point. Run the active state machine in `core/flow.v2.json`;
10
10
  load deeper references only at the stage that needs them.
11
11
  Load the compact flow for exact gates:
12
12
 
@@ -27,6 +27,10 @@ handoff read campaign state first: `campaignId`, `watchUrl`, `campaignBrief`,
27
27
  `leadScoringRubrics`, `approvedMessageTemplate`, `senderIds`,
28
28
  `sequenceTemplate`, and running state. Local draft files are debug-only.
29
29
 
30
+ There is no normal approval-packet, commit-gate, or atomic-mint path in the
31
+ active flow. Legacy packet/mint artifacts stay in
32
+ `create-campaign-v2-validation` and rehearsal material only.
33
+
30
34
  ## Normal Flow
31
35
 
32
36
  1. Bootstrap and tell the user the active Sellable workspace.
@@ -305,7 +309,7 @@ background.
305
309
 
306
310
  Codex: YOLO counts as permission for this one post-import worker. If no
307
311
  permission, ask once after filter choice. Use generic `gpt-5.5` / `xhigh`
308
- Message Drafting if needed. Never draft in parent silently.
312
+ Message Drafting if needed.
309
313
 
310
314
  If the user critiques or edits the template before `approve-message`, route the
311
315
  feedback back to Message Drafting with current `messageDraftRecommendation`,
@@ -318,18 +322,21 @@ and validation before approval also belong to Message Drafting, but validation
318
322
  is an internal gate. Do not render `renderedFallbackSample`, `concerns`, or a
319
323
  full `qaReceipt` in the normal happy path.
320
324
 
321
- Load:
325
+ Run `post-find-leads-message-scout` as Message Draft Builder when exposed. It
326
+ must load:
322
327
 
323
328
  ```text
324
329
  get_subskill_prompt({ subskillName: "generate-messages" })
325
- get_subskill_asset(...) for every asset in generate-messages Reference Asset Loading
330
+ get_subskill_asset(...) for every required message asset named by generate-messages Mode 0
326
331
  get_subskill_prompt({ subskillName: "create-campaign-v2-validation" })
327
332
  ```
328
333
 
329
- Do not use any alternate or examples-only message prompt. Do not render message
330
- review until `messageDraftRecommendation` proves current campaign/table basis
331
- and shows whether it came from Message Drafting or an explicitly approved inline
332
- fallback.
334
+ After candidate generation/revision and before returning `ready`, Message Draft
335
+ Builder must load `create-campaign-v2-validation` through MCP as the final gate.
336
+ No alternate, examples-only, or local-artifact prompt. If the agent cannot
337
+ launch, the parent fallback runs the same gate from live state. Render review
338
+ only after `messageDraftRecommendation` proves current campaign/table basis.
339
+ Handoff: labeled Markdown, not raw JSON.
333
340
 
334
341
  ## Hard Gates
335
342
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  This file narrates `auto-execute.yaml`. The YAML is the source of truth; this
4
4
  README explains intent, tuning guidance, and how each knob affects the
5
- Plan 85-02 autonomous tail.
5
+ autonomous tail.
6
6
 
7
7
  ## When this file is loaded
8
8
 
@@ -24,7 +24,7 @@ into the campaign).
24
24
  confirmed source rows into the campaign. The tail MUST NOT exceed this cap
25
25
  before the message template is approved and at least one generated passing
26
26
  message is reviewed.
27
- - **`provider`** — Inherited from the Phase 84 commit decision (saved in
27
+ - **`provider`** — Inherited from the approved source decision (saved in
28
28
  the committed brief / campaign metadata). Present here so the tail can
29
29
  narrate which provider it's running against; it does NOT override the
30
30
  committed provider.
@@ -54,8 +54,8 @@ into the campaign).
54
54
  proceeds.
55
55
  Default `strict` because live campaign state shouldn't ship messages
56
56
  with unresolved templating.
57
- - **`critique.enabled`** — Plan 85-03 feature flag for the message
58
- critique pass. Plan 85-02 reads the flag but never flips it; it
57
+ - **`critique.enabled`** — Feature flag for the optional message
58
+ critique pass. The plain campaign tail reads the flag but never flips it; it
59
59
  stays false by default. Only flip to `true` after dry-running the
60
60
  critique protocol against a real sample and confirming the token
61
61
  contract still holds on the rewritten output. See
@@ -77,7 +77,7 @@ into the campaign).
77
77
  voice). Each critic returns structured JSON the synthesis step can
78
78
  merge. Do NOT add free-form critics; stay on the three groups.
79
79
  - **`critique.synthesis.enforceFinalizerPass`** — When `true`, the
80
- synthesizer re-runs the Phase 84 finalizer pass on its rewrite.
80
+ synthesizer re-runs the offline-validation finalizer pass on its rewrite.
81
81
  This is the last guardrail against critic-introduced token drift.
82
82
  Default stays `true`.
83
83
  - **`critique.opus.enabled`** — Flag gating Opus refinement
@@ -154,20 +154,20 @@ logs and adjust:
154
154
  conditions that short-circuit the tail.
155
155
  - `references/final-handoff-contract.md` — the dual greenlight channel
156
156
  that takes Step 16 into a running campaign.
157
- - `references/parallel-critique-protocol.md` — Plan 85-03 Step 15
157
+ - `references/parallel-critique-protocol.md` — optional Step 15
158
158
  critique protocol: bounded sample, parallel critics, synthesis,
159
159
  budget caps, and token-contract enforcement.
160
- - `references/thomas-variant-selection.md` — Plan 85-03 rules for
160
+ - `references/thomas-variant-selection.md` — rules for
161
161
  which rows earn an Opus refinement rewrite.
162
- - `references/thomas-revision-filters.md` — the positive-target and
162
+ - `references/sellable-cleanup-rules.md` — the positive-target and
163
163
  automatic-revision filters that gate any critique rewrite.
164
164
 
165
165
  ## Flipping `messaging.critique.enabled` to true (dry-run protocol)
166
166
 
167
167
  The critique flag stays `false` by default because an enabled critique
168
168
  pass invents new tokens + costs ~$2 per sample pass — both of which
169
- can silently degrade a live campaign if the protocol isn't solid. Plan
170
- 85-02 ships the protocol; flipping the default requires dry-run
169
+ can silently degrade a live campaign if the protocol isn't solid. Flipping
170
+ the default requires dry-run
171
171
  evidence.
172
172
 
173
173
  ### Required evidence before flipping default
@@ -186,7 +186,7 @@ evidence.
186
186
  re-evaluate per archetype.
187
187
 
188
188
  3. **Token contract finalizer passes on every synthesis output.** The
189
- finalizer pass (Phase 84 token contract) is the last guardrail
189
+ finalizer pass (offline-validation token contract) is the last guardrail
190
190
  against critic-introduced token drift. If any synthesis output
191
191
  fails the finalizer in dry-run, the protocol is not safe to flip.
192
192
 
@@ -1,4 +1,4 @@
1
- # Autonomous tail configuration for create-campaign-v2 (Plan 85-02)
1
+ # Autonomous tail configuration for create-campaign-v2
2
2
  #
3
3
  # This file controls the shell-first review-batch tail that runs AFTER the
4
4
  # campaign shell already has the approved source, saved rubrics, and approved
@@ -43,7 +43,7 @@ messaging:
43
43
  # relaxed = warn but allow. Default is strict for live campaign state.
44
44
  tokenContract: strict
45
45
  critique:
46
- # Feature flag for the message critique pass shipped in Plan 85-03.
46
+ # Feature flag for the optional message critique pass.
47
47
  # Stays false by default. Flip to true only after the critique
48
48
  # protocol has been dry-run against a real sample.
49
49
  enabled: false
@@ -82,8 +82,8 @@ messaging:
82
82
  # being persisted — synthesis never ships a message that invents
83
83
  # tokens, proof, or personalization.
84
84
  model: synthesizer
85
- # When true, the synthesis step is required to re-run the Phase
86
- # 84 finalizer pass on its output. The finalizer is the last
85
+ # When true, the synthesis step is required to re-run the
86
+ # offline-validation finalizer pass on its output. The finalizer is the last
87
87
  # guardrail against critic-introduced token drift.
88
88
  enforceFinalizerPass: true
89
89
  opus: