@sellable/mcp 0.1.269 → 0.1.272

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,262 @@ 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 target length, rhythm, vocabulary, formatting, proof
360
+ style, and close style per person
361
+ - `mechanicsReceipts`: target word-count band, actual word count, line rhythm,
362
+ vocabulary markers, formatting markers, close style, and
363
+ `mechanics_match: pass | weak | fail` per person
364
+ - `voiceVariants`: one representative-length role-played post per person, or
365
+ `not_available` with reason
366
+ - `normalizationConfidence`: high | medium | low
367
+ - `selectedSynthesisIngredients`: hooks, body moves, proof order, rhythm, close
368
+ - `finalVoice`: usually `Christian/Sellable`
369
+ - `forbiddenBorrowingAvoided`: exact outside wording, proof, jokes, personal
370
+ stories, status, and fake user facts avoided
371
+ - `voiceVariantsGeneratedBeforeFinalProse`: yes | no
372
+ - `selectedSynthesis`: what won and why
373
+ - `styleSimulationRisk`: pass | needs_revision | blocked
374
+
375
+ Save as `needs_revision` when a final draft copies exact outside wording,
376
+ borrows another creator's proof/status as if it were the user's, invents user
377
+ facts, or lets a creator with a giant audience win without any
378
+ confidence-adjusted reason.
379
+
380
+ Save as `needs_revision` when `actualVoiceVariantCount` is lower than
381
+ `expectedActiveInfluencerCount`, when the active configured list was not loaded,
382
+ when variants are replaced by a generic influencer summary, or when voice
383
+ variants were generated after final prose instead of before final prose. Return
384
+ `retry-needed` when a tool/package/search failure prevents fetching configured
385
+ profiles or posts.
386
+
387
+ Save as `needs_revision` when the variants do not demonstrate person-specific
388
+ writing mechanics, when `mechanicsReceipts` are missing, or when multiple
389
+ variants are effectively the same long LinkedIn essay with different creator
390
+ labels.
391
+
392
+ Only mark `thought_leader_adaptation: not_used` when the user explicitly opted
393
+ out before drafting.
394
+
395
+ Save as `needs_revision` when the host supports background agents but the
396
+ configured influencers were processed sequentially without a recorded fallback
397
+ reason. The default expected value is `workerExecutionMode:
398
+ background_agents`.
149
399
 
150
400
  ## LinkedIn Preview Audit
151
401
 
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.
402
+ Audit the selected hook and top candidates against the rendered-preview
403
+ contract. LinkedIn does not publish exact "see more" cutoff rules, and rendering
404
+ varies by device, app version, font, media, line break, and whether the post has
405
+ media attached. This audit is a mobile-first safety gate, not a claim about an
406
+ official LinkedIn limit.
407
+
408
+ Treat character counts as diagnostics only. The gate is the literal rendered
409
+ mobile and desktop visible block from `references/linkedin-preview-rendering.md`
410
+ or an authenticated LinkedIn screenshot.
156
411
 
157
412
  Use:
158
413
 
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.
414
+ - `pass`: the rendered mobile preview shows the pain, proof, or curiosity by the
415
+ end of the first 3 rendered lines, and either the core point is visible or a
416
+ specific intentional open loop is visible with immediate body payoff planned
417
+ - `warn`: the rendered mobile preview creates useful curiosity but wrapping,
418
+ blank-line rhythm, media risk, or one missing context word weakens it; include
419
+ a compact fallback
420
+ - `fail`: the hook's real point appears after the rendered mobile review clamp,
421
+ the visible open loop is vague, blank lines consume the preview before the
422
+ point, or desktop fit is the only reason it looks good
162
423
 
163
424
  Desktop preview usually has more room. Still record desktop fit, but never let
164
425
  desktop fit compensate for a mobile `fail`.
165
426
 
166
427
  Record:
167
428
 
429
+ - `renderedPreview`
430
+ - `renderedPreviewBasis`: `linkedin_css_contract` |
431
+ `authenticated_linkedin_screenshot` | `manual_user_source`
432
+ - literal mobile visible block
433
+ - literal desktop visible block
168
434
  - `charCount`
169
435
  - `charCountIncludingNewlines`
170
436
  - `firstLineChars`
@@ -184,9 +450,11 @@ Record:
184
450
  - `compactFallback` when `previewBudgetStatus` is `warn`
185
451
 
186
452
  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
453
+ `ready` with `previewBudgetStatus: fail`, with no rendered preview block, or
454
+ with only a character-count claim. A draft may be `ready` with
188
455
  `previewBudgetStatus: warn` only when the warning is explicit, usually because
189
- the user prefers blank-line rhythm, and the receipt includes a compact fallback.
456
+ the user prefers blank-line rhythm, separators, or a deliberate open loop, and
457
+ the receipt includes a compact fallback.
190
458
 
191
459
  ## Simplifier / Concrete-Language Audit
192
460
 
@@ -259,7 +527,9 @@ If the necessary proof or story is missing, ask the user or return blocked/retry
259
527
 
260
528
  Use:
261
529
 
262
- - `ready` only when proof, voice, anti-AI, and concrete-language gates pass
530
+ - `ready` only when proof, voice, anti-AI, concrete-language, pre-draft
531
+ structure, mobile-scanability, hook-to-body repayment, and
532
+ template-adaptation gates pass
263
533
  - `needs_revision` when a draft exists but a gate failed
264
534
  - `blocked` when required context is missing
265
535
  - `retry-needed` when a tool/package/search failure blocked the pipeline