From 46cc22be4b474626c0f479b4e436fc0666660315 Mon Sep 17 00:00:00 2001 From: JSONbored <49853598+JSONbored@users.noreply.github.com> Date: Sun, 12 Jul 2026 06:13:09 -0700 Subject: [PATCH] docs(settings): disclose that agentDryRun doesn't stop AI/LLM spend agentDryRun's doc comment, dashboard hint, and yml example all implied a cost-free preview. In reality every spend gate checks only agentPaused -- dry-run still runs real AI/LLM review calls at real provider cost, suppressing only the terminal GitHub write. This is a deliberate design (#token-bleed-spend-gate); the fix is disclosure only, no behavior change. Refs #5286 --- .gittensory.yml.example | 3 ++- .../src/components/site/app-panels/maintainer-settings.tsx | 2 +- config/examples/gittensory.full.yml | 3 ++- src/types.ts | 5 ++++- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/.gittensory.yml.example b/.gittensory.yml.example index 1ed0adcf2..d76e7049e 100644 --- a/.gittensory.yml.example +++ b/.gittensory.yml.example @@ -688,7 +688,8 @@ settings: # Bool. Default: false. agentPaused: false - # Dry-run / shadow mode: compute everything but take no public action. + # Dry-run / shadow mode: suppresses the terminal GitHub-side write only. AI/LLM review calls still + # execute and still incur their normal provider cost -- this is NOT a cost-free preview. # Bool. Default: false. agentDryRun: false diff --git a/apps/gittensory-ui/src/components/site/app-panels/maintainer-settings.tsx b/apps/gittensory-ui/src/components/site/app-panels/maintainer-settings.tsx index 289c11f4a..00f24589f 100644 --- a/apps/gittensory-ui/src/components/site/app-panels/maintainer-settings.tsx +++ b/apps/gittensory-ui/src/components/site/app-panels/maintainer-settings.tsx @@ -561,7 +561,7 @@ export function MaintainerSettings({ reviewability }: { reviewability: Array<{ p /> setField("agentDryRun", v)} /> diff --git a/config/examples/gittensory.full.yml b/config/examples/gittensory.full.yml index 023f45b32..f89e4d407 100644 --- a/config/examples/gittensory.full.yml +++ b/config/examples/gittensory.full.yml @@ -701,7 +701,8 @@ settings: # Bool. Default: false. agentPaused: false - # Dry-run / shadow mode: compute everything but take no public action. + # Dry-run / shadow mode: suppresses the terminal GitHub-side write only. AI/LLM review calls still + # execute and still incur their normal provider cost -- this is NOT a cost-free preview. # Bool. Default: false. agentDryRun: false diff --git a/src/types.ts b/src/types.ts index 866922e3f..a80a82a3e 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1089,7 +1089,10 @@ export type RepositorySettings = { * global env switch overrides this too). Default false. */ agentPaused?: boolean | undefined; /** Per-repo dry-run/shadow mode (#776): when true, the action layer records what it WOULD do without - * performing any GitHub mutation. Default false. */ + * performing any GitHub mutation -- but this is NOT a cost-free preview: AI/LLM review calls still + * execute and still incur their normal provider cost (deliberate design tagged `#token-bleed-spend-gate` + * in `ai-review-orchestration.ts`/`agent-orchestrator.ts`/`processors.ts`; every spend gate checks only + * `agentPaused`, never this field). Default false. */ agentDryRun?: boolean | undefined; /** Per-repo override of the global DB-backed agent freeze (#4372): when true, this repo's actions execute * even while `global_agent_controls.frozen` is set, so an operator can re-activate one repo at a time