btn-renew
white
#133 / 601
NAME
btn-renew — White read-cart in the 'Buttons (write ops, mint-flavor) (15)' group. Operator-commanded data surface in the Analysis tab.
SYNOPSIS
id btn-renew
tier white
section §6. White — atomic tools (142 baseline, 149 post-matrix)
trigger operator-commanded
tools cortex_query, list_listings / list_orders
source carry-forward
DESCRIPTION
The renew button. Fires an Etsy renewal (which costs the operator). Eight-star consent gate.
White read-cart in the 'Buttons (write ops, mint-flavor) (15)' group. Operator-commanded data surface in the Analysis tab.
MECHANISM
;;~ title "Renew a listing" ;;~ author "lacuna" ;;~ version 1 ;;~ mode automation ;;~ flavor green ;;~ id btn-renew ;;~ touches (etsy-listings) ;;~ summary "Renew a listing for another 4 months." ;; Renew a listing for another 4 months. ;; ;; Destructive write cart. Action-wrapper shape with the consent gate: ;; precondition_fetch (ctx has id + payload + operator-confirmed) ;; -> guard (consent required) -> perform -> result -> on_error. ;; operator_confirmed rides in args so the driver's destructive-verb ;; gate sees it. Rate-limit retries with backoff; auth-stale escalates. ;; State is `perform` (not `act`) so it never shadows the descriptor ;; constructor of the same name in cartPrelude. (cart 'btn-renew '((author . "lacuna") (version . 1) (touches . (etsy-listings)) (read-only . #f))) (define (start ctx) (let ((id (ctx-get 'listing-id ctx)) (consent (ctx-get 'operator-confirmed ctx))) (cond ((null? id) (escalate 'missing-listing-id null)) ((not consent) (escalate 'consent-required null)) (else (next 'perform ctx))))) (define (perform ctx) (let ((id (ctx-get 'listing-id ctx))) (act 'etsy/relist (list id (list 'operator_confirmed #t)) 'check-result))) (define (check-result ctx) (let ((r (ctx-result ctx))) (cond ((eq? r 'ok) (done)) ((eq? r 'rate-limited) (after 30 'perform ctx)) ((eq? r 'auth-stale) (escalate 'auth-relogin null)) (else (escalate 'write-failed r)))))
EXAMPLES
Operator renews a listing. Sakura checks expiry, confirms the cost, and ships the renewal. On Etsy fee changes the worker logs the new fee to Cortex so the next ROAS report is honest.
TIER
white
atomic · free · operator-commanded
FITNESS
Ready
Fits any shop today — this one has no sample-size floor.
SEE ALSO
HISTORY
canonical source: curator/docs/AUTOMATIONS-CANONICAL.md · §6-white-atomic-tools-142-baseline-149-post-matrix
last regenerated: 2026-06-05 20:31 UTC (mechanical — edits land in the MD or sidecars, not here)
KNOWN BUGS
(none recorded — flag in AUTOMATIONS-CANONICAL.md or open an issue against the cart file)