@sellable/install 0.1.244 → 0.1.246
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.
package/package.json
CHANGED
|
@@ -490,8 +490,25 @@ not a parent-thread summary. The receipt must include:
|
|
|
490
490
|
evidence field such as `rowCount`, `rowIdsHash`, or `rowEvidence`; do not
|
|
491
491
|
leave those only in `searchSignalsProof`, `importProof`, `coldFallbackProof`,
|
|
492
492
|
or narrative text for the parent/verifier to infer.
|
|
493
|
-
- `filterDecisionReceipt`: saved/applied filter
|
|
494
|
-
|
|
493
|
+
- `filterDecisionReceipt`: saved/applied ICP filter proof for the current
|
|
494
|
+
campaign/table basis. Customer-visible evergreen lanes must enable ICP
|
|
495
|
+
filtering with `enableICPFilters:true`, call `save_rubrics`, and save at
|
|
496
|
+
least three rubric/filter criteria before Message Drafting. Do not skip
|
|
497
|
+
filtering for evergreen setup. Missing or skipped filter proof is
|
|
498
|
+
`blocked: missing_filter_setup`.
|
|
499
|
+
Before the worker exits, the durable JSON must contain
|
|
500
|
+
`filterDecisionReceipt.status:"applied"`,
|
|
501
|
+
`filterDecisionReceipt.enableICPFilters:true`, the current
|
|
502
|
+
`workflowTableId`, and concrete saved-filter proof such as
|
|
503
|
+
`filterDecisionReceipt.filterIds`, `filterDecisionReceipt.rubricIds`,
|
|
504
|
+
`filterDecisionReceipt.savedRubricCount`, or
|
|
505
|
+
`filterDecisionReceipt.headlineICPCriteria`.
|
|
506
|
+
The exact status string is contractual: use `status:"applied"` only.
|
|
507
|
+
Do not write `status:"confirmed"`, `status:"saved"`, `status:"done"`, or
|
|
508
|
+
any other alias after saving filters; the parent verifier rejects those
|
|
509
|
+
aliases even when saved rubric proof exists.
|
|
510
|
+
Short form: Filter receipt status must be exactly `applied`.
|
|
511
|
+
Short form: Do not write `filterDecisionReceipt.status:"confirmed"`.
|
|
495
512
|
- `messageDraftingReceipt`: the Message Drafting proof described below,
|
|
496
513
|
including packaged `generate-messages` prompt/assets and validation. Raw
|
|
497
514
|
fields like `generateMessagesPromptLoadedToHasMoreFalse`,
|
|
@@ -627,7 +644,12 @@ verification unless the same object also appears inside
|
|
|
627
644
|
"sourceLadderReason": "<why the current source is valid before colder sources>"
|
|
628
645
|
},
|
|
629
646
|
"filterDecisionReceipt": {
|
|
630
|
-
"status": "
|
|
647
|
+
"status": "applied",
|
|
648
|
+
"enableICPFilters": true,
|
|
649
|
+
"filterIds": ["<saved filter/rubric id>"],
|
|
650
|
+
"rubricIds": ["<saved rubric id>"],
|
|
651
|
+
"headlineICPCriteria": ["<saved ICP criterion>", "<saved ICP criterion>", "<saved ICP criterion>"],
|
|
652
|
+
"savedRubricCount": 3,
|
|
631
653
|
"workflowTableId": "<workflow table id>"
|
|
632
654
|
},
|
|
633
655
|
"messageDraftingReceipt": {
|
|
@@ -832,6 +854,22 @@ duplicate-lane blockers before you call the command finished. If verify blocks,
|
|
|
832
854
|
report the blocker and repair only the missing postconditions from the same
|
|
833
855
|
current plan.
|
|
834
856
|
|
|
857
|
+
Before calling verify, the parent should build compact receipt objects from the
|
|
858
|
+
durable receipt files and pass those compact objects to MCP. The compact receipt
|
|
859
|
+
must preserve every verifier-owned field named above, including top-level ids,
|
|
860
|
+
`createCampaignStepReceipt`, canonical filter/message/review/sequence/final
|
|
861
|
+
proof, and at least three concrete sample messages. It should omit large raw
|
|
862
|
+
search outputs, long post lists, full row arrays, raw provider responses, and
|
|
863
|
+
debug-only narration fields. Do not pass multi-hundred-kilobyte raw receipt
|
|
864
|
+
objects when a compact canonical receipt has the same proof; large raw verify
|
|
865
|
+
payloads can stall local MCP bridges and make UAT ambiguous.
|
|
866
|
+
Do not print or `jq .` full receipt JSON into the terminal. For local checks,
|
|
867
|
+
print only compact summaries such as file, actionId, laneKey, campaignId,
|
|
868
|
+
filter status, sample count, approved count, and final status.
|
|
869
|
+
Short form: Parent verify uses compact canonical receipt objects, not raw giant receipts.
|
|
870
|
+
Short form: Do not dump full receipt JSON with `jq .`.
|
|
871
|
+
Short form: Never change planRevision/actionId/laneKey while compacting receipts.
|
|
872
|
+
|
|
835
873
|
Message proof for every customer-visible lane must come from the current
|
|
836
874
|
campaign/table basis and include at least 3 generated review rows from the
|
|
837
875
|
packaged `generate-messages` path before completion is reported.
|
|
@@ -880,7 +918,7 @@ Parent-thread handwritten copy or setting `currentStep` is not proof.
|
|
|
880
918
|
|
|
881
919
|
Hey there
|
|
882
920
|
|
|
883
|
-
|
|
921
|
+
Thank you for the support on my post about {{post_topic_line}}
|
|
884
922
|
```
|
|
885
923
|
|
|
886
924
|
- **Shared Signal Discovery** first-message style: short, casual, references
|
|
@@ -896,6 +934,12 @@ Parent-thread handwritten copy or setting `currentStep` is not proof.
|
|
|
896
934
|
say it. Prefer sender-agnostic company/team language such as "we're
|
|
897
935
|
helping CX teams..." or "at cxconnect.ai, we help..." and one clear
|
|
898
936
|
problem question.
|
|
937
|
+
Before Message Drafting runs, the campaign brief must already include
|
|
938
|
+
these shared-lane hard avoids and source-use rules. Do not rely on a
|
|
939
|
+
failed first generation batch to discover that self-intros, generic
|
|
940
|
+
product summaries, or repeated structure are bad. If the first generated
|
|
941
|
+
batch violates these rules, rerun, but record that as a repaired UAT path
|
|
942
|
+
rather than the desired zero-shot path.
|
|
899
943
|
Short form: Shared Signal Discovery uses no self-intro such as "I'm building Sellable".
|
|
900
944
|
Short form: Shared Signal Discovery uses no self-intro such as "We're building Sellable".
|
|
901
945
|
Short form: Shared Signal Discovery uses no "I've put together".
|
|
@@ -913,16 +957,45 @@ Parent-thread handwritten copy or setting `currentStep` is not proof.
|
|
|
913
957
|
Sellable/Codex/Claude-Code feature summary
|
|
914
958
|
across prospects. This is a single-message cold path unless the approved
|
|
915
959
|
create-campaign message workflow proves a better delivery format.
|
|
960
|
+
Before Message Drafting runs, the campaign brief must already forbid
|
|
961
|
+
self-intros, generic product summaries, opt-out shrugs, product-stack
|
|
962
|
+
dumps, and repeated template structure. Do not let the first generation
|
|
963
|
+
batch use "I'm building", "We're building", "I've put together", or
|
|
964
|
+
similar language and then rely on a cleanup rerun as the normal path.
|
|
916
965
|
Short form: Shared Cold Fallback must not pass just because the receipt says `generate-messages` loaded.
|
|
917
966
|
Short form: Shared Cold Fallback uses no self-intro such as "We're building".
|
|
918
967
|
Short form: Shared Cold Fallback uses no self-intro such as "I'm building Sellable".
|
|
919
968
|
Short form: Shared Cold Fallback uses no "I've put together".
|
|
920
969
|
Short form: Shared Cold Fallback uses no opt-out shrug such as "If this isn't relevant, ignore me".
|
|
921
970
|
Short form: Shared Cold Fallback uses no product-stack dump.
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
971
|
+
- Customer-visible evergreen lanes must enable ICP filtering before Message
|
|
972
|
+
Drafting. This applies to Post Engagers, Shared Signal Discovery, and
|
|
973
|
+
Shared Cold Fallback. Do not skip filtering for evergreen setup, even when
|
|
974
|
+
the source is warm. Use the normal `$sellable:create-campaign` filter
|
|
975
|
+
workflow: set or save 3-5 headline ICP criteria, call `save_rubrics`, and
|
|
976
|
+
persist `enableICPFilters:true` on the campaign before generating
|
|
977
|
+
messages. Good evergreen filters should be light but real: role/budget
|
|
978
|
+
relevance, company/market fit, and obvious non-buyer exclusion. For
|
|
979
|
+
Post Engagers, keep filters permissive enough that warm source rows are not
|
|
980
|
+
over-pruned, but still save the filter rules. For shared lanes, filter for
|
|
981
|
+
buyers/operators relevant to the workspace offer and exclude students,
|
|
982
|
+
job seekers, vendors, and off-topic commenters. The receipt must show
|
|
983
|
+
`filterDecisionReceipt.status:"applied"`,
|
|
984
|
+
`filterDecisionReceipt.enableICPFilters:true`, current `workflowTableId`,
|
|
985
|
+
and saved filter/rubric proof with at least three saved rubric/filter
|
|
986
|
+
criteria (`filterIds`, `rubricIds`, `headlineICPCriteria`, or
|
|
987
|
+
`savedRubricCount`). Missing or skipped filter proof is
|
|
988
|
+
`blocked: missing_filter_setup`.
|
|
989
|
+
Short form: Customer-visible evergreen lanes must enable ICP filtering.
|
|
990
|
+
Short form: `enableICPFilters:true`.
|
|
991
|
+
Short form: Do not skip filtering for evergreen setup.
|
|
992
|
+
Short form: at least three saved rubric/filter criteria.
|
|
993
|
+
Short form: missing or skipped filter proof is `blocked: missing_filter_setup`.
|
|
994
|
+
Short form: run Message Drafting only after saved filters are applied.
|
|
995
|
+
- Every customer-visible lane must run Message Drafting from the current
|
|
996
|
+
campaign/table basis after source rows exist. The worker must load the full
|
|
997
|
+
packaged `generate-messages` prompt, every required asset, and
|
|
998
|
+
`create-campaign-v2-validation`; if the internal branch handoff is not
|
|
926
999
|
callable in the packaged runtime, the worker must call
|
|
927
1000
|
`start_campaign_message_preparation` and poll
|
|
928
1001
|
`get_campaign_message_preparation_status` from the lane worker. The
|
|
@@ -952,10 +1025,13 @@ Parent-thread handwritten copy or setting `currentStep` is not proof.
|
|
|
952
1025
|
- A source/list decision has been resolved and campaign rows are loaded. If
|
|
953
1026
|
there is no approved source or no rows can be copied, report `blocked` with
|
|
954
1027
|
the missing source detail; do not call the campaign complete.
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
1028
|
+
- The filter step is resolved with saved/applied filters. Customer-visible
|
|
1029
|
+
evergreen lanes must have `enableICPFilters:true`, at least three saved
|
|
1030
|
+
ICP filter/rubric criteria, and a receipt with
|
|
1031
|
+
`filterDecisionReceipt.status:"applied"`. Do not skip filters for
|
|
1032
|
+
evergreen setup. Do not leave customer-visible campaigns at
|
|
1033
|
+
`filter-choice`, `filter-rules`, or `apply-icp-rubric` and report success.
|
|
1034
|
+
Do not proceed to Message Drafting until saved filters are applied.
|
|
959
1035
|
- Message Drafting has run from the current campaign/table basis, using the
|
|
960
1036
|
create-campaign message prompt/assets and validation gate. Updating
|
|
961
1037
|
`currentStep:"messages"` is not proof. Parent-thread handwritten copy is
|