@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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sellable/install",
3
- "version": "0.1.244",
3
+ "version": "0.1.246",
4
4
  "type": "module",
5
5
  "description": "One-command installer for Sellable MCP in Claude Code and Codex",
6
6
  "bin": {
@@ -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 ids or explicit skip-filter
494
- decision with current campaign/table basis.
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": "skipped",
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
- Thanks for the support on my post about {{post_topic_line}}
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
- - Every customer-visible lane must run Message Drafting from the current
923
- campaign/table basis after source rows exist. The worker must load the full
924
- packaged `generate-messages` prompt, every required asset, and
925
- `create-campaign-v2-validation`; if the internal branch handoff is not
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
- - The filter step is resolved: either saved/applied filters are present, or
956
- the campaign explicitly skipped filters. Do not leave customer-visible
957
- campaigns at `filter-choice`, `filter-rules`, or `apply-icp-rubric` and
958
- report success.
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