@sellable/mcp 0.1.269 → 0.1.271

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.
@@ -6,18 +6,37 @@ Every saved draft needs a validation receipt. A draft without this receipt is no
6
6
 
7
7
  - `sourceIdeaId`
8
8
  - `hookResearchId`
9
+ - `transcriptWorldviewPacket`
9
10
  - `iteration`
10
11
  - `selectedPremiseCard`
11
12
  - `candidateHooksConsidered`
12
13
  - `selectedHook`
13
14
  - `selectedHookWhy`
15
+ - `sourceMessageOutline`
16
+ - `preDraftNarrativeOutline`
17
+ - `preDraftStructureBrief` as a legacy compatibility alias when older drafts or
18
+ downstream readers still expect it
19
+ - `selectedSourceTemplate`
20
+ - `postPositioningBreakdown`
21
+ - `viralPostOutline`
22
+ - `hookToBodyPromiseMap`
23
+ - `bodyExpressionCandidates`
24
+ - `combinedBodyPlan`
25
+ - `visibleFlowTrace` when the user asked for whole-flow, debug, or
26
+ step-by-step mode
14
27
  - `proofClaimsUsed`
15
28
  - `proofClaimSources`
29
+ - `worldviewSource`
30
+ - `hotTakeSource`
16
31
  - `storyFilesConsulted`
17
32
  - `goldStandardsConsulted`
18
33
  - `voiceRulesApplied`
19
- - `marketBeliefAudit`
34
+ - `audienceTensionAudit`
35
+ - `thoughtLeaderInspirationLab`
20
36
  - `premiseValueAudit`
37
+ - `mobileScanabilityAudit`
38
+ - `templateAdaptationAudit`
39
+ - `abstractionToConcreteRewriteAudit`
21
40
  - `linkedinPreviewAudit`
22
41
  - `simplifierConcreteLanguageAudit`
23
42
  - `antiAiAudit`
@@ -74,9 +93,13 @@ Each candidate should include:
74
93
 
75
94
  - hook text
76
95
  - selected premise
96
+ - selected source template or no-template rationale
77
97
  - premise tension opened
78
98
  - reader value implied
79
99
  - source pattern
100
+ - hook-to-body promise
101
+ - see-more tension
102
+ - curiosity debt
80
103
  - score
81
104
  - char count including newlines and first-line / first-two-line preview measurements
82
105
  - physical line count, content line count, longest nonblank line, and blank-line risk
@@ -91,14 +114,50 @@ Each candidate should include:
91
114
  After the first draft:
92
115
 
93
116
  1. remove unsupported claims
94
- 2. verify the draft is anchored to the selected market belief and controversy
117
+ 2. verify the draft is anchored to the selected audience tension and credible angle
95
118
  3. verify the real story/scene, tension, and reader value are visible early
96
- 4. tighten the hook
97
- 5. simplify abstract phrasing
98
- 6. replace generic language with concrete words only when supported
99
- 7. preserve the user's actual story and point
100
- 8. remove AI tells
101
- 9. re-check LinkedIn preview fit after edits
119
+ 4. verify the body repays the selected hook's curiosity debt
120
+ 5. verify the final post follows the selected positioning sequence or explains
121
+ why it departed from the template
122
+ 6. tighten the hook
123
+ 7. simplify abstract phrasing
124
+ 8. replace generic language with concrete words only when supported
125
+ 9. preserve the user's actual story and point
126
+ 10. remove AI tells
127
+ 11. re-check LinkedIn preview fit after edits
128
+
129
+ ## Visible Flow Trace Audit
130
+
131
+ When the user asks to see the whole flow, run the process step by step, validate
132
+ that it is working, or debug a bad output, the validation receipt must preserve a
133
+ `visibleFlowTrace`.
134
+
135
+ Record:
136
+
137
+ - `mode`: visible_whole_flow_debug
138
+ - `checkpointStatuses`: each checkpoint marked `pass`, `weak`, `fail`, or
139
+ `blocked`
140
+ - `checkpointOutputs`: the concrete output shown to the user for each
141
+ checkpoint
142
+ - `qualityBreak`: the first checkpoint that made the draft weak, if any
143
+ - `downstreamEffect`: how that break affected the hook, premise, body, or ready
144
+ status
145
+ - `userVisibleBeforeSave`: yes | no
146
+ - `draftSavedDespiteWeakness`: yes | no
147
+ - `reasonDraftSaved`: why a `needs_revision` draft was still worth saving, if
148
+ it was saved
149
+
150
+ Save as `needs_revision` when:
151
+
152
+ - the trace was not shown before draft prose in visible debug mode
153
+ - the body-expression lab was summarized after the fact instead of generating
154
+ real candidates before prose
155
+ - a weak premise, missing proof, or wrong source template produced a bad body
156
+ - the final response claims the workflow worked only because artifacts were
157
+ saved
158
+
159
+ Do not mark a run successful unless the visible trace, final draft, and saved
160
+ receipt all agree on the same quality state.
102
161
 
103
162
  ## Premise Value Audit
104
163
 
@@ -116,55 +175,253 @@ Record:
116
175
  - `readerValue`: what the reader learns, sees differently, or can do
117
176
  - `proofAvailable`: source-backed proof used
118
177
  - `proofMissing`: claims intentionally avoided or requiring user input
178
+ - `transcriptWorldviewPacket`: clusters, transcript references, cards, repeated
179
+ phrasing, worldview ingredients, hot-take ingredients, proof/story available,
180
+ proof/story missing, private exclusions, and confidence
181
+ - `worldviewSource`: the source-backed belief that makes the post feel earned
182
+ - `hotTakeSource`: the source-backed disagreement or operating lesson behind
183
+ the hook/premise
184
+ - `sourceMessageOutline`: source post decomposition in original order, with
185
+ paragraph/line/phrase branches, high-level goal of each branch, reader effect,
186
+ reusable move, and adaptation guard
187
+ - `preDraftNarrativeOutline`: hierarchical `I.`, `A.`, `i.` outline showing
188
+ hook debt, thesis, operating model, working body patterns adapted, narrative
189
+ beats, scan path, proof claims, and abstractions to remove
190
+ - `preDraftStructureBrief`: legacy compatibility alias only; the canonical
191
+ artifact is `preDraftNarrativeOutline`
119
192
  - `premiseQualityGates`: pass/fail for `specific_scene_or_pattern`,
120
193
  `clear_reader`, `visible_tension`, `reader_value`, `credible_speaker`,
121
- `proof_safety`, and `market_heat`
194
+ `proof_safety`, `audience_tension`, and `pre_draft_narrative_outline`
122
195
  - `bodyOutline`: how the body delivers the premise before prose
196
+ - `viralPostOutline`: the selected narrative structure, including beat jobs
197
+ - `hookToBodyPromiseMap`: how the body repays the hook's open loop
198
+ - `combinedBodyPlan`: which body-expression lines were kept, rewritten, or cut
123
199
 
124
200
  If the draft has no specific scene or observed pattern, no visible tension, or
125
201
  no reader value beyond "this is interesting," save as `needs_revision`. Do not
126
202
  mark it `ready` because the hook passes preview limits.
127
203
 
128
- ## Market Belief Audit
204
+ Save as `needs_revision` when the post claims a worldview or hot take but the
205
+ receipt cannot trace it to raw source, transcript/content-memory, core memory,
206
+ or a current user answer.
207
+
208
+ ## Pre-Draft Narrative Outline Audit
209
+
210
+ Before a draft can be `ready`, validate that the narrative outline was locked
211
+ before the body was written.
212
+
213
+ Record:
214
+
215
+ - `hook`: selected hook plus mobile/desktop rendered preview verdict
216
+ - `thesis`: one sentence the post defends
217
+ - `readerBeingTaught`: specific reader and why the post is written for them
218
+ - `coreEquationOrMechanism`: the operating idea being taught
219
+ - `keyDefinitions`: concrete definitions and examples for terms the reader
220
+ could misunderstand
221
+ - `proofClaims`: claims, sources, and public-safety status
222
+ - `sourceTemplateOrNoTemplateRationale`
223
+ - `workingBodyPatternsAdapted`: body pattern name, beat order, why it worked,
224
+ what gets borrowed, and what must not be copied
225
+ - `hierarchicalNarrativeBeats`: `I.`, `A.`, `i.` outline of the final post's
226
+ argument, examples, proof, and line/section shapes
227
+ - `mobileScanPath`: what a skimmer understands from the hook, separators,
228
+ section labels, numbers, and close
229
+ - `sectionOutline`: legacy summary of section order plus the job of each
230
+ section; do not substitute this for `hierarchicalNarrativeBeats`
231
+ - `bodyPromiseAfterSeeMore`: what the body immediately repays
232
+ - `abstractionsToRemove`: abstract phrases and their concrete replacements
233
+ - `userCorrectionsApplied`: user corrections applied to the outline before
234
+ prose
235
+
236
+ Save as `needs_revision` when the draft was written before the narrative
237
+ outline, when the outline is a flat checklist instead of hierarchical
238
+ `I.`, `A.`, `i.` notation, when the outline does not match the final prose, when
239
+ working body patterns are unnamed or vaguely borrowed, when the mobile scan path
240
+ is unclear, or when key terms are left abstract.
241
+
242
+ ## Mobile Scanability Audit
243
+
244
+ A LinkedIn post must still teach the main idea when a reader scans it.
245
+
246
+ Record:
247
+
248
+ - `scanVisibleFrom`: hook, separators, numbered labels, ranges/numbers, example
249
+ prompts, and close
250
+ - `readerGetsWithoutReadingEveryWord`: the specific takeaway a skimmer gets
251
+ - `sectionSeparators`: present | absent | not_needed
252
+ - `sectionLabels`: concrete | abstract | missing
253
+ - `numbersOrProofVisible`: yes | no
254
+ - `mobileLineLengthRisk`: pass | warn | fail
255
+ - `skimVerdict`: pass | needs_revision
256
+
257
+ Save as `needs_revision` when a skimmer cannot understand the thesis, hierarchy,
258
+ or practical next action.
259
+
260
+ ## Abstraction-To-Concrete Rewrite Audit
261
+
262
+ Record every meaningful abstraction found in the draft and the concrete
263
+ replacement. Do not merely say "made concrete."
264
+
265
+ Use this format:
266
+
267
+ ```text
268
+ abstractionToConcreteRewriteAudit:
269
+ 1.
270
+ original:
271
+ issue:
272
+ replacement:
273
+ source:
274
+ kept_or_cut:
275
+ ```
276
+
277
+ Common abstractions to flag:
278
+
279
+ - vague nouns such as `signal`, `market`, `attention`, `system`, `quality`,
280
+ `context`, `machine`, or `workflow` when the sentence does not name the actual
281
+ source, action, number, or object
282
+ - broad persona labels used as lead sources
283
+ - "warm" without explaining what made the source warm
284
+ - "offer" without explaining why the recipient would believe or want it
285
+ - "learning" without naming what metric changes the next decision
286
+
287
+ Do not make language concrete by inventing facts. If the concrete replacement
288
+ requires missing proof, ask the user or save as `needs_revision`.
289
+
290
+ ## Template Adaptation Audit
291
+
292
+ Before a draft can be `ready`, validate that source posts were converted into
293
+ templates rather than copied.
294
+
295
+ Record:
296
+
297
+ - `selectedSourceTemplate`: source, template name, and why it fits
298
+ - `positioningSequenceBorrowed`: category sequence being adapted
299
+ - `viralPostOutlineBorrowed`: beat sequence being adapted
300
+ - `lineShapesBorrowed`: reusable line shapes, not copied wording
301
+ - `userStoryInputsUsed`: source-backed user facts filling the template
302
+ - `userProofInputsUsed`: source-backed user proof filling the template
303
+ - `forbiddenBorrowingAvoided`: source proof, jokes, personal context, status,
304
+ phrases, or examples not used
305
+ - `hookToBodyRepayment`: whether the body answers the hook's curiosity debt
306
+ - `bodyExpressionCandidatesReviewed`: which variants were tested and what won
307
+ - `copyingRisk`: pass | needs_revision | blocked
308
+
309
+ Save as `needs_revision` when the draft copies outside wording, borrows outside
310
+ proof, keeps a source template's status without equivalent user authority, or
311
+ uses a hook whose promised body payoff is not delivered.
312
+
313
+ ## Audience Tension Audit
129
314
 
130
315
  Before a draft can be `ready`, validate that it is not merely an internally
131
- coherent idea. It must be anchored to the saved research's market belief map.
316
+ coherent idea. It must be anchored to the saved research's audience tension
317
+ snapshot.
132
318
 
133
319
  Record:
134
320
 
135
321
  - `resonatingIdea`: the current-space idea this draft enters
136
- - `implicitBelief`: the belief the audience likely already holds
322
+ - `visibleAudienceTension`: the contradiction, tradeoff, cost, or unfinished
323
+ question readers are reacting to
137
324
  - `audienceWant`: what the audience wants permission, leverage, proof, or a new
138
325
  category for
139
- - `audienceResentmentOrFear`: what frustration or risk gives the post tension
140
- - `selectedControversy`: the claim the post is testing
326
+ - `audienceObjectionOrFear`: what skepticism, frustration, or risk gives the post tension
327
+ - `selectedAngle`: the claim the post is testing
141
328
  - `credibleWhyUs`: why the user can credibly say this from raw idea, memory,
142
329
  story, proof, or product mechanism
143
330
  - `engagementReason`: why someone would react, comment, repost, or argue
144
331
  - `unsupportedHypeRemoved`: unsupported claims removed during finalizer
145
332
 
146
- If `selectedControversy` is missing, if the audience belief is only a generic
147
- label like "founders want growth," or if `credibleWhyUs` depends on borrowed
148
- proof from another creator, save as `needs_revision`.
333
+ If `selectedAngle` is missing, if the audience tension is only a generic label
334
+ like "founders want growth," or if `credibleWhyUs` depends on borrowed proof
335
+ from another creator, save as `needs_revision`.
336
+
337
+ ## Thought Leader Voice Variant Audit
338
+
339
+ For draft-producing create-post flows, validate the configured thought-leader
340
+ voice variant lab by default. If it was skipped, record the explicit opt-out
341
+ reason. When thought leaders or creators were used, validate that background
342
+ workers produced complete role-play variants before final prose was synthesized.
343
+
344
+ This audit is a ready-status gate. It is not enough to mention that creators
345
+ were reviewed. The receipt must prove that the configured influencer workflow
346
+ ran before prose was drafted.
347
+
348
+ Record:
349
+
350
+ - `activeInfluencerSource`: `discovery/influencers.md` | named subset | user
351
+ opt-out
352
+ - `expectedActiveInfluencerCount`
353
+ - `actualVoiceVariantCount`
354
+ - `missingVoiceVariants`
355
+ - `weakVoiceVariants`
356
+ - `workerExecutionMode`: `background_agents` | `sequential_fallback`
357
+ - `backgroundWorkerIds`: worker IDs or labels when available
358
+ - `thoughtLeaderList`: names and profile URLs or handles
359
+ - `voiceModels`: inferred length, rhythm, vocabulary, formatting, proof style,
360
+ and close style per person
361
+ - `voiceVariants`: one representative-length role-played post per person, or
362
+ `not_available` with reason
363
+ - `normalizationConfidence`: high | medium | low
364
+ - `selectedSynthesisIngredients`: hooks, body moves, proof order, rhythm, close
365
+ - `finalVoice`: usually `Christian/Sellable`
366
+ - `forbiddenBorrowingAvoided`: exact outside wording, proof, jokes, personal
367
+ stories, status, and fake user facts avoided
368
+ - `voiceVariantsGeneratedBeforeFinalProse`: yes | no
369
+ - `selectedSynthesis`: what won and why
370
+ - `styleSimulationRisk`: pass | needs_revision | blocked
371
+
372
+ Save as `needs_revision` when a final draft copies exact outside wording,
373
+ borrows another creator's proof/status as if it were the user's, invents user
374
+ facts, or lets a creator with a giant audience win without any
375
+ confidence-adjusted reason.
376
+
377
+ Save as `needs_revision` when `actualVoiceVariantCount` is lower than
378
+ `expectedActiveInfluencerCount`, when the active configured list was not loaded,
379
+ when variants are replaced by a generic influencer summary, or when voice
380
+ variants were generated after final prose instead of before final prose. Return
381
+ `retry-needed` when a tool/package/search failure prevents fetching configured
382
+ profiles or posts.
383
+ Only mark `thought_leader_adaptation: not_used` when the user explicitly opted
384
+ out before drafting.
385
+
386
+ Save as `needs_revision` when the host supports background agents but the
387
+ configured influencers were processed sequentially without a recorded fallback
388
+ reason. The default expected value is `workerExecutionMode:
389
+ background_agents`.
149
390
 
150
391
  ## LinkedIn Preview Audit
151
392
 
152
- Audit the selected hook and top candidates against conservative LinkedIn
153
- preview budgets. LinkedIn does not publish exact "see more" cutoff rules, and
154
- rendering varies by device, app version, font, media, and line break. This audit
155
- is a mobile-first safety gate, not a claim about an official LinkedIn limit.
393
+ Audit the selected hook and top candidates against the rendered-preview
394
+ contract. LinkedIn does not publish exact "see more" cutoff rules, and rendering
395
+ varies by device, app version, font, media, line break, and whether the post has
396
+ media attached. This audit is a mobile-first safety gate, not a claim about an
397
+ official LinkedIn limit.
398
+
399
+ Treat character counts as diagnostics only. The gate is the literal rendered
400
+ mobile and desktop visible block from `references/linkedin-preview-rendering.md`
401
+ or an authenticated LinkedIn screenshot.
156
402
 
157
403
  Use:
158
404
 
159
- - `pass`: hook is <= 110 chars including newlines, every nonblank line is <= 45 chars, and the hook's core point lands before likely truncation.
160
- - `warn`: hook is 111-140 chars including newlines, any nonblank line is 46-55 chars, or blank lines create visual-line risk. Blank lines are allowed, but they count as physical lines.
161
- - `fail`: hook is > 140 chars including newlines, any nonblank line is > 55 chars, or the hook's point depends on text after likely truncation.
405
+ - `pass`: the rendered mobile preview shows the pain, proof, or curiosity by the
406
+ end of the first 3 rendered lines, and either the core point is visible or a
407
+ specific intentional open loop is visible with immediate body payoff planned
408
+ - `warn`: the rendered mobile preview creates useful curiosity but wrapping,
409
+ blank-line rhythm, media risk, or one missing context word weakens it; include
410
+ a compact fallback
411
+ - `fail`: the hook's real point appears after the rendered mobile review clamp,
412
+ the visible open loop is vague, blank lines consume the preview before the
413
+ point, or desktop fit is the only reason it looks good
162
414
 
163
415
  Desktop preview usually has more room. Still record desktop fit, but never let
164
416
  desktop fit compensate for a mobile `fail`.
165
417
 
166
418
  Record:
167
419
 
420
+ - `renderedPreview`
421
+ - `renderedPreviewBasis`: `linkedin_css_contract` |
422
+ `authenticated_linkedin_screenshot` | `manual_user_source`
423
+ - literal mobile visible block
424
+ - literal desktop visible block
168
425
  - `charCount`
169
426
  - `charCountIncludingNewlines`
170
427
  - `firstLineChars`
@@ -184,9 +441,11 @@ Record:
184
441
  - `compactFallback` when `previewBudgetStatus` is `warn`
185
442
 
186
443
  If the hook only works after likely truncation, rewrite it. A draft cannot be
187
- `ready` with `previewBudgetStatus: fail`. A draft may be `ready` with
444
+ `ready` with `previewBudgetStatus: fail`, with no rendered preview block, or
445
+ with only a character-count claim. A draft may be `ready` with
188
446
  `previewBudgetStatus: warn` only when the warning is explicit, usually because
189
- the user prefers blank-line rhythm, and the receipt includes a compact fallback.
447
+ the user prefers blank-line rhythm, separators, or a deliberate open loop, and
448
+ the receipt includes a compact fallback.
190
449
 
191
450
  ## Simplifier / Concrete-Language Audit
192
451
 
@@ -259,7 +518,9 @@ If the necessary proof or story is missing, ask the user or return blocked/retry
259
518
 
260
519
  Use:
261
520
 
262
- - `ready` only when proof, voice, anti-AI, and concrete-language gates pass
521
+ - `ready` only when proof, voice, anti-AI, concrete-language, pre-draft
522
+ structure, mobile-scanability, hook-to-body repayment, and
523
+ template-adaptation gates pass
263
524
  - `needs_revision` when a draft exists but a gate failed
264
525
  - `blocked` when required context is missing
265
526
  - `retry-needed` when a tool/package/search failure blocked the pipeline