@sellable/install 0.1.252 → 0.1.254

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.252",
3
+ "version": "0.1.254",
4
4
  "type": "module",
5
5
  "description": "One-command installer for Sellable MCP in Claude Code and Codex",
6
6
  "bin": {
@@ -310,9 +310,10 @@ acceptable only when it writes a fresh durable per-lane receipt artifact as it
310
310
  works.
311
311
  When visible Codex app thread tools are unavailable but local Codex CLI is
312
312
  available, the accepted durable streaming-worker command shape is:
313
- `codex -a never -s danger-full-access exec -m <worker-model> -C <repo> -o <worker-final-file> -`.
313
+ `codex -a never -s danger-full-access exec --skip-git-repo-check -m <worker-model> -C <repo> -o <worker-final-file> -`.
314
314
  The approval and sandbox flags must come before the `exec` subcommand for Codex
315
- CLI builds that expose `-a`/`-s` only at top level. Do not use
315
+ CLI builds that expose `-a`/`-s` only at top level. `--skip-git-repo-check` belongs after `exec` because current customer and VPS Codex CLI builds expose it
316
+ as an `exec` subcommand flag, not a top-level flag. Do not use
316
317
  `codex exec --ask-for-approval never ...` or `codex exec -a never ...`; those
317
318
  forms fail on current customer CLI installs. Pipe the lane packet prompt on
318
319
  stdin, require the worker to write `workerDispatch.receiptArtifactHint`, and
@@ -320,7 +321,7 @@ pass exactly one lane packet per worker.
320
321
  When launching durable Codex CLI workers from an automation parent, pass an
321
322
  explicit supported worker model instead of relying on the Codex CLI default
322
323
  model. Use the parent runtime model when known, for example:
323
- `codex -a never -s danger-full-access exec -m <worker-model> -C <repo> -o <worker-final-file> -`.
324
+ `codex -a never -s danger-full-access exec --skip-git-repo-check -m <worker-model> -C <repo> -o <worker-final-file> -`.
324
325
  Do not rely on the Codex CLI default model; some customer and VPS installs
325
326
  default to unavailable model aliases. If the parent cannot identify a supported
326
327
  worker model and a test `codex exec -m <worker-model>` launch is rejected, stop
@@ -336,20 +337,41 @@ Do not embed `<<'WORKER_PROMPT'` heredocs inside a single quoted or double
336
337
  quoted `/bin/bash -lc '...'` command string; nested quoting is brittle and can
337
338
  truncate the first worker before mutation. For multi-worker launchers, write one
338
339
  plain prompt file per lane under the current run directory, then start each
339
- worker with `codex -a never -s danger-full-access exec -m "$WORKER_MODEL" -C "$REPO" -o
340
+ worker with `codex -a never -s danger-full-access exec --skip-git-repo-check -m "$WORKER_MODEL" -C "$REPO" -o
340
341
  "$worker_final_file" - < "$worker_prompt_file"`. Keep launcher shell variables
341
342
  double-quoted and keep the prompt heredoc only in a standalone script/prompt-file
342
343
  write step, not inside an already quoted shell argument. If the first launcher
343
344
  attempt exits with a shell parse error or before starting the first worker,
344
345
  stop with `blocked: worker_launcher_quoting_failed` and do not retry by
345
346
  loosening sender scope or mutating in the parent.
347
+ Do not use `nohup`, detached background workers, or any launcher that returns
348
+ before the workers finish and before receipts/final files exist. A durable
349
+ worker must run in a foreground command session, visible Codex thread, or a shell
350
+ that stays alive until every worker has finished. If using background jobs inside
351
+ one shell, the same shell must stay alive, wait for every worker PID, poll only
352
+ the expected receipt paths, and record a per-worker exit code plus final-file
353
+ paths and stderr/log paths before returning. If workers exit with empty logs and
354
+ no final files because the subprocess detached or was reaped, stop with
355
+ `blocked: worker_subprocess_detached_without_output` before parent verify.
356
+ When launching multiple local Codex CLI workers from one shell, start each
357
+ background job in the same shell that will call `wait`. Do not capture worker
358
+ PIDs through command substitution, a subshell, a pipeline, or a helper function
359
+ invoked as `worker_pid=$(launch_worker ...)`; those patterns make the captured
360
+ PID non-waitable by the parent shell. Use the same-shell PID array pattern:
361
+ `pids=(); codex ... > "$log_file" 2>&1 & pids+=("$!")`, then
362
+ `for pid in "${pids[@]}"; do wait "$pid" || rc=1; done`. If `wait` reports
363
+ `pid is not a child of this shell`, stop with
364
+ `blocked: worker_subprocess_detached_without_output`.
346
365
  Short form: run the wrapper with `/bin/bash -lc`.
347
366
  Short form: Do not rely on zsh-specific behavior.
348
367
  Short form: Do not use `status` as a shell variable; use `exit_code` or `rc`.
368
+ Short form: Do not capture worker PIDs through command substitution or a subshell.
369
+ Short form: Use same-shell `pids+=("$!")` before waiting on every PID.
349
370
  Short form: Receipt polling uses `find <receipt-dir> -maxdepth 1 -name 'evg_*.json' -print`.
350
371
  Short form: Do not use naked `*.json` globs under zsh; no `no matches found` diagnostics.
351
372
  Short form: Do not embed `<<'WORKER_PROMPT'` heredocs inside a quoted `/bin/bash -lc` command string.
352
373
  Short form: Multi-worker launchers write prompt files and run `codex ... - < "$worker_prompt_file"`.
374
+ Short form: Do not use `nohup`; keep the worker process attached until receipt or blocker.
353
375
  After the auto-executable plan returns, take at most one short planning pass to
354
376
  choose the visible/durable worker runtime and build the worker launch packet.
355
377
  Do not keep reasoning, re-reading prompts, or restating the workflow instead of
@@ -394,7 +416,7 @@ launchers, write the same prompt body to `<worker-prompt-file>` and launch the
394
416
  worker with stdin redirected from that file:
395
417
 
396
418
  ```
397
- codex -a never -s danger-full-access exec -m <worker-model> -C <repo> -o <worker-final-file> - <<'WORKER_PROMPT'
419
+ codex -a never -s danger-full-access exec --skip-git-repo-check -m <worker-model> -C <repo> -o <worker-final-file> - <<'WORKER_PROMPT'
398
420
  Use $sellable:create-evergreen-campaigns as the governing skill for this one lane worker.
399
421
 
400
422
  Workspace id: <workspaceId>
@@ -417,7 +439,7 @@ Complete only this lane, write the required durable receipt JSON, and stop.
417
439
  WORKER_PROMPT
418
440
 
419
441
  # Multi-worker launcher equivalent:
420
- codex -a never -s danger-full-access exec -m <worker-model> -C <repo> -o <worker-final-file> - < <worker-prompt-file>
442
+ codex -a never -s danger-full-access exec --skip-git-repo-check -m <worker-model> -C <repo> -o <worker-final-file> - < <worker-prompt-file>
421
443
  ```
422
444
 
423
445
  If any placeholder cannot be filled from the current lane packet, do not inspect
@@ -603,7 +625,10 @@ not a parent-thread summary. The receipt must include:
603
625
  Before writing the durable receipt, run a receipt self-check. The top-level
604
626
  receipt must include top-level `planRevision`, `actionId`, `laneKey`,
605
627
  `laneType`, `workspaceId`, and `senderIds`, plus campaign/table/source ids and
606
- row/message/approval counts. Inside
628
+ row/message/approval counts. It must also include top-level `receiptArtifactPath`,
629
+ top-level `durableReceiptWritten:true`, top-level `receiptRunId`, and top-level
630
+ `receiptWrittenAt`; do not leave `receiptArtifactPath` only under
631
+ `createCampaignWorkflowReceipt` for the parent to patch during verify. Inside
607
632
  `createCampaignStepReceipt.messageDraftingReceipt`, `sampleMessages[]` must
608
633
  include `rowId`, `generatedMessageText`, `verdict`, and `issues`. Do not
609
634
  substitute `message` for `generatedMessageText`. Do not substitute
@@ -615,6 +640,8 @@ before writing JSON; do not leave only raw objects like
615
640
  `get_campaign_message_preparation_status`, `attachRecommendedSequenceResult`,
616
641
  `finalCampaignRead`, or `finalTableRead`.
617
642
  Self-check shorthand: top-level `planRevision`, `actionId`, `laneKey`, `laneType`, `workspaceId`, and `senderIds` must exist before worker completion.
643
+ Self-check shorthand: top-level `receiptArtifactPath`, `durableReceiptWritten:true`, `receiptRunId`, and `receiptWrittenAt` must exist before worker completion.
644
+ Self-check shorthand: top-level `receiptWrittenAt` must exist before worker completion.
618
645
  Self-check shorthand: `campaignBriefReceipt.briefHash`,
619
646
  `campaignBriefReceipt.deliveryFormat`, `campaignBriefReceipt.tokenRules`,
620
647
  `campaignBriefReceipt.hardAvoids`, and `campaignBriefReceipt.sourceUseRules`
@@ -933,6 +960,17 @@ Message proof for every customer-visible lane must come from the current
933
960
  campaign/table basis and include at least 3 generated review rows from the
934
961
  packaged `generate-messages` path before completion is reported.
935
962
  Parent-thread handwritten copy or setting `currentStep` is not proof.
963
+
964
+ The parent must run its own sample-quality gate before final reporting, even
965
+ when worker receipts say `verdict:"passed"`. For each shared lane, normalize the
966
+ reviewed sample messages by removing leading greeting/name lines, first names,
967
+ and whitespace-only differences; reject shared-lane samples when the message body is identical after removing first names or when all samples share the same
968
+ paragraph skeleton. Also reject final shared-lane samples with `Hey <name>,`
969
+ letter punctuation, weak relevance hedges, internal workflow vocabulary,
970
+ self-intros, or any non-empty `issues`. If the parent finds repeated shared-lane
971
+ sample copy, report `blocked: repeated_shared_lane_sample_copy`, revise the
972
+ campaign brief/template through the packaged workflow, rerun Generate Message,
973
+ and verify current-revision sample messages before final completion.
936
974
  </command_backed_workflow>
937
975
 
938
976
  <objective>