ops(autopilot): hourly revenue loop — state file + adversarial-panel backlog (T1–T13)#26
Merged
Merged
Conversation
…al-panel backlog T1-T13 Adds docs/AUTOPILOT-LOOP.md: hard rules (drafts-only email, FACTS.md-bounded claims, no spending/publishing), goal ledger ($0/$2,000), prioritized queue from a 19-agent multi-model adversarial panel (4 lenses x 3 judges + synthesis), [USER] action list, rejected-ideas register and thread-dedupe ledger. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01J7Q5Rs7ez2YWrjWKAPcHYz
….17 nudge (T1) The post-veto nudge and README both link gate.cat/teams.html and gate.cat/partners.html; neither page existed. Adds both as standalone, no-JS pages in the index.html palette. Every number uses the allowed wording from FACTS.md (F1b/F2/F3) or PRICING.md; policy sharing is described as 'rolling out' rather than a dated promise (see T10). Also: sitemap entries and ops/deploy_landing.sh (rsync without --delete, sha256 verify, live 200 check, gatecat-fulfill restart) for the owner's deploy step. Loop state updated in docs/AUTOPILOT-LOOP.md. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01J7Q5Rs7ez2YWrjWKAPcHYz
…connector send limitation Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01J7Q5Rs7ez2YWrjWKAPcHYz
…ions handed to owner Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01J7Q5Rs7ez2YWrjWKAPcHYz
…respondence in commits Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01J7Q5Rs7ez2YWrjWKAPcHYz
Rebuilds the launch-kit Show HN section against FACTS.md: separates the 1M-replay result (F1b, 0 real misses) from the bypass-suite false-block (F4, 1/129 benign), fixes 69->71 policies (F10) and EUR 9 -> EUR 19, scopes 'zero dependencies' to the core (pyproject dependencies = []). Adds an author first-comment with the business model and a conditional lobste.rs variant. Loop state updated. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01J7Q5Rs7ez2YWrjWKAPcHYz
…tatus Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01J7Q5Rs7ez2YWrjWKAPcHYz
…der install (T5) pyproject [project.urls]: Homepage now points at https://gate.cat (was the 0-star GitHub repo) and adds a Pricing link to teams.html. README gains a 4-line free-forever/pricing block right under the install section — PyPI renders README, so the listing finally states the offer. Fixes the stale '21 deny policies' in the proxy section to the measured 71 default walls (F10; verified by importing DOGFOOD_DEFAULTS). Landing's EUR 9 founding price verified as deliberate (guarded by test_marketing_consistency) and left untouched. Tests: test_marketing_consistency 5 passed. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01J7Q5Rs7ez2YWrjWKAPcHYz
…eyless-cloud pointer (T6) Extends the 0.4.17 post-veto nudge instead of reimplementing it: maybe_nudge_cli() fires on gate.cat status/stats at most once per day (~/.gatecat/nudge_last), only when interventions > 0 and no GATECAT_CLOUD_API_KEY, stderr-only, best-effort, honoring GATECAT_NO_NUDGE/GATECAT_QUIET. A process-wide guard (mark_fired) guarantees at most one nudge of any kind per run — the pack hint (T7) will consult the same guard. gate.cat report gains an off-machine-copy footer link (ASCII-safe, paste-safety test kept green) and gate.cat cloud without a key now says where to get one. 9 new tests; 49 passed across the touched suites. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01J7Q5Rs7ez2YWrjWKAPcHYz
…of-band The live pages at gate.cat/teams.html and /partners.html (deployed directly to the VPS by the owner's local session) are richer than the versions this branch added — OG/twitter cards, dark mode, pricing cards — and were not committed anywhere. Production wins: this replaces the branch's versions with exact live copies so the repo matches what is deployed and a future deploy cannot silently overwrite the live funnel. Numeric claims on both pages verified against FACTS.md/PRICING.md rows. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01J7Q5Rs7ez2YWrjWKAPcHYz
…elease prep (T7) gatecat/_pack_hint.py: shutil.which() detection (stripe -> Fintech; vercel/netlify/fly/heroku/railway/render/supabase -> PaaS), scope quoted from PRICING.md, once per machine via ~/.gatecat/.pack_nudged, stderr, best-effort, GATECAT_NO_NUDGE/GATECAT_QUIET honored, and the shared per-process guard from _nudge.py so no run ever prints two hints. Wired after the CLI nudge on gate.cat status/stats. 7 new tests. Release prep: version 0.4.18, CHANGELOG entry (T5+T6+T7), owner-facing publication checklist in ops/launch/release_0.4.18_checklist.md. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01J7Q5Rs7ez2YWrjWKAPcHYz
…ng-consistency test Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01J7Q5Rs7ez2YWrjWKAPcHYz
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01J7Q5Rs7ez2YWrjWKAPcHYz
…ist PRs, fact-checked (user-approved) Replaces the stale launch-kit variants (EUR 9, 69 policies, replay/false- block conflation) with FACTS.md-pinned copy for r/ClaudeAI, r/LocalLLaMA, r/Python, an 8-tweet X thread and four awesome-list PR descriptions, plus an anti-spam posting schedule. Owner approved full distribution; HN repost cleared (old 2026-07-15 post got 2 points). Verified on PyPI: 0.4.18 not yet published (latest 0.4.17) — release still gated on the checklist. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01J7Q5Rs7ez2YWrjWKAPcHYz
…s discovery-only delta) gate.cat report already renders the paid-shape monthly report locally (render_report) and gained its off-machine CTA footer in T6; the only missing piece of T8 was discovery. The daily CLI hint now names the command. Tests updated; 35 green across nudge/pack/dashboard suites. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01J7Q5Rs7ez2YWrjWKAPcHYz
…nd delivered off-repo Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01J7Q5Rs7ez2YWrjWKAPcHYz
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01J7Q5Rs7ez2YWrjWKAPcHYz
…you page (T9) The pack download page now offers the two packs NOT just purchased (scopes quoted from PRICING.md, live Payment Links) plus the Cloud Solo line. Attribution done properly: client_reference_id=pack-xsell on the Stripe links (surfaces on the Checkout Session; a bare ?source= query would be dropped by Payment Links and measure nothing) and ?source=pack-xsell on the teams.html link for nginx analytics. No Stripe product changes. Two new tests; suite green. Goes live with the next gatecat-fulfill restart on the VPS. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01J7Q5Rs7ez2YWrjWKAPcHYz
…ses softened; sync live /answers/ pages (T10) payment_channel() default flips lemonsqueezy -> stripe, REVERSING the 2026-07-12 founder decision, because Lemon Squeezy declined the account application on 2026-07-14 — Stripe is the only live channel (merge of this PR is the sign-off; the LS webhook path stays reachable behind the env override, tests updated both ways). PRICING.md drops the stale 'LS review is pending' line and softens the dated '(ships this month)' policy-sharing promise to '(rolling out)', matching the live teams page. Discovery: the /answers/ pages the sitemap references are LIVE in production (deployed out-of-band), not dead — synced all 5 into docs/answers/ instead of deleting the sitemap entries. 23 tests green. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01J7Q5Rs7ez2YWrjWKAPcHYz
BGMLAI
marked this pull request as ready for review
July 22, 2026 21:53
BGMLAI
pushed a commit
that referenced
this pull request
Jul 22, 2026
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01J7Q5Rs7ez2YWrjWKAPcHYz
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Bootstraps the autonomous hourly revenue loop for gate.cat (goal: $2,000 USD).
What's in this PR
docs/AUTOPILOT-LOOP.md— the loop's single state file:gate.cat/teams.html, which does not exist indocs/(live 404) → T1.How the loop runs
An hourly trigger fires into the authoring session: (1) scan Gmail for replies/orders → prepare reply drafts, log payments against the $2k goal; (2) execute the next unblocked queue task; (3) if the queue is empty, run a fresh multi-model adversarial strategy panel to refill it; (4) update this state file, push, keep this PR current.
This PR will accumulate the loop's subsequent work (T1 funnel pages, launch kits under
ops/launch/, 0.4.18 release prep) as follow-up commits.🤖 Generated with Claude Code
https://claude.ai/code/session_01J7Q5Rs7ez2YWrjWKAPcHYz
Generated by Claude Code