Replace Replicate: Gondola for non-agentic, Cursor CLI Grok high for agentic #12

Open
opened 2026-09-02 02:18:48 +00:00 by PlasticDigits · 3 comments
PlasticDigits commented 2026-09-02 02:18:48 +00:00 (Migrated from gitlab.com)

Summary

Stop using Replicate in this worker. Split live generation:

  1. Non-agentic (one-shot chat, embeddings, hero images) → Gondola OpenAI-compatible gateway https://api.gondola-ai.com/v1.
  2. Agentic (plan / outline / draft / editor, anything that needs tools, files, search, or a lint cycle) → Cursor CLI (agent) on the latest Cursor Grok SKU at high, not fast. Today that is Grok 4.6 (cursor-grok-4.6-high). Detect a newer Cursor Grok when the catalog ships one and prefer it, still high / not-fast. At most one agentic workflow per UTC day.

This replaces the live path in #5. Do not keep investing in api.replicate.com. Fixture tests stay local (FixturePredictor). Voice copy remains canonical in CL8Y-web blog_gen/SKILL.md. Hero contract (path, JPEG, one image per week) stays; the provider for this worker's --image path becomes Gondola, not Replicate.


Current codebase

src/replicate.rs + --live are a Replicate predictions.create client (unverified API shape, budget charged before POST, poll does not wait for terminal status). Every paid text step (plan, outline, draft, editor bundle, optional image) goes through Predictor::create_once with model: "fixture-or-replicate".

There is no agent runtime: the pipeline cannot inspect sources.json, run search, cycle lint, or write files except via a single string return. #6 (editor cycle + grounding) is a poor fit for a one-shot HTTP completion.

Env today: REPLICATE_API_TOKEN, REPLICATE_TEXT_MODEL, REPLICATE_IMAGE_MODEL, REPLICATE_WEEKLY_CREATE_BUDGET. cl8y-research fetch PREDICTION_ID is Replicate-only.


Why this is needed

Replicate is the wrong spend and the wrong API for both jobs:

  • Completions, embeddings, and images are cheaper and OpenAI-shaped on Gondola (Venice catalog, USDC per request, prompts not persisted). Keys are gnd_….
  • Weekly plan/draft/editor need an agent with tools (allowlisted collect artifacts, search skill, lint, invariants), not a single predictions.create. Cursor CLI is already how this repo is developed; pin Cursor Grok high, never the fast SKU (fast costs more and is the default trap).
  • Cursor Grok high is expensive; the worker must not be able to launch a second agentic run the same day (scheduler retries, operator re-runs, editor "one more cycle").

Constraints / guardrails

  1. No Replicate in this crate's live path. Do not call api.replicate.com. Remove or gate REPLICATE_* once Gondola + Cursor CLI land. Secret lint must include GONDOLA_, gnd_, CURSOR_API_KEY (keep existing REPLICATE_ markers until leftovers are gone).
  2. Non-agentic = Gondola only. HTTPS api.gondola-ai.com only; no redirects; no private/link-local; allowlist in src/allowlist.rs. Base URL is https://api.gondola-ai.com/v1 (do not append /chat/completions). Pin model ids in config; discover via GET /v1/models. Gondola is not bound by the daily agentic cap (weekly request budget still applies).
  3. Agentic = Cursor CLI only. Headless agent -p --trust --workspace <run-or-repo> (no --yolo / --force unless a later issue justifies it). Model: latest Cursor Grok, reasoning high, fast=false. Do not use cursor-grok-*-high-fast or Composer as the weekly writer. If the CLI/SDK would silently flip to fast, fail closed.
  4. At most one agentic workflow per UTC day. A live week that reaches plan/outline/draft/editor is that day's workflow. Prefer one Cursor session for the whole agentic pipeline that day (--resume of that chat id between stages). #6 editor cycles must stay inside that same session/day — they are not a second workflow. A second week --live (or any new agent session) on the same UTC date fails closed and must not spawn agent. --resume of the logged chat id from today is recovery, not a new workflow. --dry-run, fixtures, collect-only, Gondola-only, and fetch do not count. Persist the day + chat id (Postgres when available, else a 0600 lock file under the run/state dir) before spawning agent; crash after persist without a session still consumes the day (fail closed, recover with --resume if an id exists). Clock is UTC. No operator override flag in v1.
  5. Create-once still applies per provider call. Gondola: one chat/image/embed request per step; never retry the same create; recover by logged request/id if the API exposes one. Cursor CLI: never spawn a second session because the first hung without a logged id (that would also violate the daily cap). Weekly budget remains a hard cap for Gondola requests; agentic spend is the daily cap plus that budget.
  6. Model catalog refresh. At the start of a live week (and on an explicit CLI), list Cursor models (agent --list-models / agent models) and pick the newest Cursor Grok high / not-fast. Cache the pin in the run report. If the catalog has no Grok high / not-fast, abort — do not fall back to fast or to a random flagship. Today: cursor-grok-4.6-high (confirm slug against agent --list-models at implement time). Catalog listing is not an agentic workflow.
  7. Untrusted model/agent output still goes through wrap_untrusted / lint / assert_clean_artifact. Agents must not execute collected repo content. SSRF rules unchanged.
  8. Secrets never in git, MDX, logs, MR bodies. Do not echo GONDOLA_API_KEY / CURSOR_API_KEY.
  9. Fixtures: keep FixturePredictor (rename ok) so CI needs neither Gondola nor Cursor. --live requires Gondola key for non-agentic steps and Cursor auth (CURSOR_API_KEY or agent login) for agentic steps.
  10. Do not auto-publish to CL8Y-web main. Do not remount RETIRED_HOMEPAGE_MODULES. Do not rewrite CL8Y_WHITEPAPER.md.

Suggested stage split

Stage Mode Backend
collect no model existing allowlisted HTTP
embeddings / ingest non-agentic Gondola (or keep hashing in tests; live dim must stay EMBEDDING_DIM or this issue includes a documented migration)
plan agentic Cursor CLI (--mode plan is acceptable for the plan stage); shares the day's single workflow
outline agentic same day's Cursor session (--resume)
draft agentic same day's Cursor session (--resume)
editor (see #6) agentic same day's Cursor session; cycle until lint+grounding or budget; not a new day
hero --image non-agentic Gondola image generation; one create; JPEG verify
emit / publish no model existing

If a step can be a single JSON completion with no tools, it may stay on Gondola. Do not send agentic work to Gondola and do not send one-shot image/embed to Cursor CLI.


Relevant files

Path Role
src/replicate.rs Replace with Gondola client + keep Predictor / budget / wrap
src/pipeline.rs Route stages to Gondola vs Cursor CLI; refuse second agentic run same UTC day
src/main.rs --live, fetch; add model-pin / catalog command
src/config.rs Tokens, base URL, model pins, budget
src/allowlist.rs api.gondola-ai.com
src/embed.rs Live Gondola embeddings vs hashing
src/invariants.rs Budget wording; drop Replicate-specific names; daily agentic cap
src/secrets.rs New markers
.env.example GONDOLA_*, CURSOR_*; retire REPLICATE_*
skills + docs/invariants.md + README Provider contract + once-a-day agentic rule
#5 Close or retarget once this lands (no Replicate poll/API work)
#6 Editor cycle should use the agentic backend inside the day's session
#10 Redirect/budget/secret lint — apply to Gondola, not Replicate

  1. Gondola client (src/gondola.rs or rename replicate): OpenAI-compatible chat.completions + images (+ embeddings if catalog has a dim we can pin). GONDOLA_API_KEY, GONDOLA_BASE_URL=https://api.gondola-ai.com/v1, pinned GONDOLA_TEXT_MODEL / GONDOLA_IMAGE_MODEL (fail --live if unset). httpmock cassettes. Charge budget after accept+id.
  2. Cursor CLI runner: spawn agent with --model <resolved-slug> -p --output-format json --trust --workspace. Resolve slug from catalog: newest cursor-grok-* that is high and not *-fast. Log resolved id in report.md. Parse output; treat as untrusted.
  3. Daily agentic lock: record agentic_utc_date + optional chat_id before the first agent spawn. Same-day second spawn → Error (typed, testable). Next UTC date clears the lock. Do not use local TZ.
  4. Catalog command: cl8y-research models prints Gondola GET /v1/models and agent --list-models, and the pin this week would use.
  5. Docs/skills: generate MDX via Gondola (non-agentic) / Cursor CLI (agentic, max once per UTC day), not Replicate. fetch recovers Gondola ids; agentic recovery is --resume <chatId> for today's session only.
  6. Comment on #5 that live Replicate work is superseded.

Cursor CLI notes (implement against current agent --help, do not copy stale slugs blindly): --model exists; --list-models / agent models list account SKUs. Fast vs high is a separate SKU (…-high-fast vs …-high). Fast has been a silent default in other Cursor surfaces — pin and assert.


Acceptance criteria

  • --live does not send traffic to api.replicate.com.
  • Non-agentic live steps use Gondola only; missing GONDOLA_API_KEY or pinned models fails closed.
  • Agentic live steps invoke Cursor CLI with a resolved Cursor Grok high / not-fast slug; fast SKUs are rejected.
  • Catalog refresh prefers a newer Cursor Grok (e.g. 4.7) over 4.6 when listed, still high / not-fast; if none, abort.
  • Second agentic workflow on the same UTC day fails closed (no agent process). --resume of today's id still allowed. Next UTC day is allowed.
  • Fixture week still runs with no Gondola/Cursor credentials (does not consume the daily cap).
  • Weekly Gondola budget still aborts extra paid steps; agentic cap is daily and separate.
  • Allowlist: Gondola host only; redirects rejected (mock).
  • Secret lint catches GONDOLA_API_KEY / gnd_ / CURSOR_API_KEY.
  • --image writes a JPEG via Gondola (or placeholder when off), same hero path contract.
  • report.md records provider, model pins, prediction/session ids, and the UTC date of the agentic run — never tokens.
  • Skills, README, docs/invariants.md no longer describe Replicate as the live generator; they state the daily agentic cap.

Test plan — functional paths

  1. Fixture week unchanged (no network; no daily lock).
  2. Gondola mock: one chat create, output used; second create for same step fails.
  3. Gondola mock: image bytes → JPEG on disk.
  4. Gondola mock: redirect → reject.
  5. Cursor CLI mock/stub: invoked with expected --model (high, not fast) and --workspace; stdout parsed.
  6. Catalog: fake list containing cursor-grok-4.6-high, cursor-grok-4.6-high-fast, cursor-grok-4.7-high → pick 4.7-high.
  7. Catalog: only fast Grok → fail closed.
  8. Budget: mixed Gondola + one agent session; exhaustion stops remaining paid work.
  9. --dry-run still collect + plan only; live plan uses agentic backend when --live.
  10. Daily cap: first live agentic run on date D succeeds; second live agentic run on D fails without spawning agent; run on D+1 succeeds.
  11. Resume: --resume of the D chat id on D does not count as a second workflow; a new session on D does.

Test plan — attack, hack, and abuse

  1. Cost amplification — no retry of Gondola create or extra agent sessions on poll/timeout without a logged id; scheduler/week --live twice the same day cannot launch a second Grok run.
  2. Fast SKU — config or catalog that resolves *-high-fast is an error.
  3. SSRF — Gondola client does not follow redirects to link-local.
  4. Prompt injection in collected Telegram/README still wrapped; agent must not run untrusted scripts from sources.
  5. Secret leak in Gondola/agent output fails emit.
  6. Image bomb — cap download; JPEG magic only.
  7. Workspace escape — agent --workspace is the run dir or repo root, not /.
  8. Clock / lock tampering — missing or corrupt lock fails closed on live agentic; fixtures do not skip the check when --live. Do not honor a future-dated lock as "already ran tomorrow."
  9. Editor cycle as bypass — extra editor attempts the same day must not start a new agent session.

Verification criteria

  1. Cassette tests in CI (no live Gondola/Cursor).
  2. Operator optional: one live Gondola completion + one agent --list-models pin recorded in a throwaway run.
  3. Reviewer can see in report.md which Grok slug ran, that it was not fast, and the UTC date of the agentic workflow.
  4. Close or retarget #5 after this issue is implemented.
## Summary Stop using **Replicate** in this worker. Split live generation: 1. **Non-agentic** (one-shot chat, embeddings, hero images) → [Gondola](https://gondola-ai.com) OpenAI-compatible gateway `https://api.gondola-ai.com/v1`. 2. **Agentic** (plan / outline / draft / editor, anything that needs tools, files, search, or a lint cycle) → **Cursor CLI** (`agent`) on the latest **Cursor Grok** SKU at **high**, **not fast**. Today that is **Grok 4.6** (`cursor-grok-4.6-high`). Detect a newer Cursor Grok when the catalog ships one and prefer it, still high / not-fast. **At most one agentic workflow per UTC day.** This **replaces** the live path in [#5](https://gitlab.com/PlasticDigits/cl8y-research/-/issues/5). Do not keep investing in `api.replicate.com`. Fixture tests stay local (`FixturePredictor`). Voice copy remains canonical in **CL8Y-web** `blog_gen/SKILL.md`. Hero *contract* (path, JPEG, one image per week) stays; the *provider* for this worker's `--image` path becomes Gondola, not Replicate. --- ## Current codebase `src/replicate.rs` + `--live` are a Replicate `predictions.create` client (unverified API shape, budget charged before POST, poll does not wait for terminal status). Every paid text step (`plan`, `outline`, `draft`, editor bundle, optional image) goes through `Predictor::create_once` with `model: "fixture-or-replicate"`. There is no agent runtime: the pipeline cannot inspect `sources.json`, run search, cycle lint, or write files except via a single string return. [#6](https://gitlab.com/PlasticDigits/cl8y-research/-/issues/6) (editor cycle + grounding) is a poor fit for a one-shot HTTP completion. Env today: `REPLICATE_API_TOKEN`, `REPLICATE_TEXT_MODEL`, `REPLICATE_IMAGE_MODEL`, `REPLICATE_WEEKLY_CREATE_BUDGET`. `cl8y-research fetch PREDICTION_ID` is Replicate-only. --- ## Why this is needed Replicate is the wrong spend and the wrong API for both jobs: - Completions, embeddings, and images are cheaper and OpenAI-shaped on Gondola (Venice catalog, USDC per request, prompts not persisted). Keys are `gnd_…`. - Weekly plan/draft/editor need an **agent** with tools (allowlisted collect artifacts, search skill, lint, invariants), not a single `predictions.create`. Cursor CLI is already how this repo is developed; pin **Cursor Grok high**, never the **fast** SKU (fast costs more and is the default trap). - Cursor Grok high is expensive; the worker must not be able to launch a second agentic run the same day (scheduler retries, operator re-runs, editor "one more cycle"). --- ## Constraints / guardrails 1. **No Replicate** in this crate's live path. Do not call `api.replicate.com`. Remove or gate `REPLICATE_*` once Gondola + Cursor CLI land. Secret lint must include `GONDOLA_`, `gnd_`, `CURSOR_API_KEY` (keep existing `REPLICATE_` markers until leftovers are gone). 2. **Non-agentic = Gondola only.** HTTPS `api.gondola-ai.com` only; **no redirects**; no private/link-local; allowlist in `src/allowlist.rs`. Base URL is `https://api.gondola-ai.com/v1` (do not append `/chat/completions`). Pin model ids in config; discover via `GET /v1/models`. Gondola is **not** bound by the daily agentic cap (weekly request budget still applies). 3. **Agentic = Cursor CLI only.** Headless `agent -p --trust --workspace <run-or-repo>` (no `--yolo` / `--force` unless a later issue justifies it). **Model: latest Cursor Grok, reasoning high, fast=false.** Do not use `cursor-grok-*-high-fast` or Composer as the weekly writer. If the CLI/SDK would silently flip to fast, **fail closed**. 4. **At most one agentic workflow per UTC day.** A live `week` that reaches plan/outline/draft/editor is that day's workflow. Prefer **one** Cursor session for the whole agentic pipeline that day (`--resume` of *that* chat id between stages). `#6` editor cycles must stay inside that same session/day — they are not a second workflow. A second `week --live` (or any new `agent` session) on the same UTC date **fails closed** and must not spawn `agent`. `--resume` of the *logged* chat id from today is recovery, not a new workflow. `--dry-run`, fixtures, collect-only, Gondola-only, and `fetch` do not count. Persist the day + chat id (Postgres when available, else a 0600 lock file under the run/state dir) **before** spawning `agent`; crash after persist without a session still consumes the day (fail closed, recover with `--resume` if an id exists). Clock is UTC. No operator override flag in v1. 5. **Create-once still applies per provider call.** Gondola: one chat/image/embed request per step; never retry the same create; recover by logged request/id if the API exposes one. Cursor CLI: never spawn a second session because the first hung without a logged id (that would also violate the daily cap). Weekly budget remains a hard cap for Gondola requests; agentic spend is the daily cap plus that budget. 6. **Model catalog refresh.** At the start of a live week (and on an explicit CLI), list Cursor models (`agent --list-models` / `agent models`) and pick the newest **Cursor Grok** high / not-fast. Cache the pin in the run report. If the catalog has no Grok high / not-fast, abort — do not fall back to fast or to a random flagship. Today: `cursor-grok-4.6-high` (confirm slug against `agent --list-models` at implement time). Catalog listing is not an agentic workflow. 7. Untrusted model/agent output still goes through `wrap_untrusted` / lint / `assert_clean_artifact`. Agents must not execute collected repo content. SSRF rules unchanged. 8. Secrets never in git, MDX, logs, MR bodies. Do not echo `GONDOLA_API_KEY` / `CURSOR_API_KEY`. 9. Fixtures: keep `FixturePredictor` (rename ok) so CI needs neither Gondola nor Cursor. `--live` requires Gondola key for non-agentic steps and Cursor auth (`CURSOR_API_KEY` or `agent login`) for agentic steps. 10. Do not auto-publish to `CL8Y-web` `main`. Do not remount `RETIRED_HOMEPAGE_MODULES`. Do not rewrite `CL8Y_WHITEPAPER.md`. --- ## Suggested stage split | Stage | Mode | Backend | | --- | --- | --- | | collect | no model | existing allowlisted HTTP | | embeddings / ingest | non-agentic | Gondola (or keep hashing in tests; live dim must stay `EMBEDDING_DIM` or this issue includes a documented migration) | | plan | agentic | Cursor CLI (`--mode plan` is acceptable for the plan stage); **shares the day's single workflow** | | outline | agentic | same day's Cursor session (`--resume`) | | draft | agentic | same day's Cursor session (`--resume`) | | editor (see #6) | agentic | same day's Cursor session; cycle until lint+grounding or budget; **not** a new day | | hero `--image` | non-agentic | Gondola image generation; one create; JPEG verify | | emit / publish | no model | existing | If a step can be a single JSON completion with no tools, it may stay on Gondola. Do not send agentic work to Gondola and do not send one-shot image/embed to Cursor CLI. --- ## Relevant files | Path | Role | | --- | --- | | `src/replicate.rs` | Replace with Gondola client + keep `Predictor` / budget / wrap | | `src/pipeline.rs` | Route stages to Gondola vs Cursor CLI; refuse second agentic run same UTC day | | `src/main.rs` | `--live`, `fetch`; add model-pin / catalog command | | `src/config.rs` | Tokens, base URL, model pins, budget | | `src/allowlist.rs` | `api.gondola-ai.com` | | `src/embed.rs` | Live Gondola embeddings vs hashing | | `src/invariants.rs` | Budget wording; drop Replicate-specific names; daily agentic cap | | `src/secrets.rs` | New markers | | `.env.example` | `GONDOLA_*`, `CURSOR_*`; retire `REPLICATE_*` | | skills + `docs/invariants.md` + README | Provider contract + once-a-day agentic rule | | [#5](https://gitlab.com/PlasticDigits/cl8y-research/-/issues/5) | Close or retarget once this lands (no Replicate poll/API work) | | [#6](https://gitlab.com/PlasticDigits/cl8y-research/-/issues/6) | Editor cycle should use the agentic backend **inside** the day's session | | [#10](https://gitlab.com/PlasticDigits/cl8y-research/-/issues/10) | Redirect/budget/secret lint — apply to Gondola, not Replicate | --- ## Recommended direction 1. **Gondola client** (`src/gondola.rs` or rename `replicate`): OpenAI-compatible `chat.completions` + images (+ embeddings if catalog has a dim we can pin). `GONDOLA_API_KEY`, `GONDOLA_BASE_URL=https://api.gondola-ai.com/v1`, pinned `GONDOLA_TEXT_MODEL` / `GONDOLA_IMAGE_MODEL` (fail `--live` if unset). httpmock cassettes. Charge budget after accept+id. 2. **Cursor CLI runner**: spawn `agent` with `--model <resolved-slug> -p --output-format json --trust --workspace`. Resolve slug from catalog: newest `cursor-grok-*` that is **high** and **not** `*-fast`. Log resolved id in `report.md`. Parse output; treat as untrusted. 3. **Daily agentic lock**: record `agentic_utc_date` + optional `chat_id` before the first `agent` spawn. Same-day second spawn → `Error` (typed, testable). Next UTC date clears the lock. Do not use local TZ. 4. **Catalog command**: `cl8y-research models` prints Gondola `GET /v1/models` and `agent --list-models`, and the pin this week would use. 5. Docs/skills: generate MDX via Gondola (non-agentic) / Cursor CLI (agentic, max once per UTC day), not Replicate. `fetch` recovers Gondola ids; agentic recovery is `--resume <chatId>` for **today's** session only. 6. Comment on #5 that live Replicate work is superseded. Cursor CLI notes (implement against current `agent --help`, do not copy stale slugs blindly): `--model` exists; `--list-models` / `agent models` list account SKUs. Fast vs high is a separate SKU (`…-high-fast` vs `…-high`). Fast has been a silent default in other Cursor surfaces — pin and assert. --- ## Acceptance criteria - [ ] `--live` does not send traffic to `api.replicate.com`. - [ ] Non-agentic live steps use Gondola only; missing `GONDOLA_API_KEY` or pinned models fails closed. - [ ] Agentic live steps invoke Cursor CLI with a resolved **Cursor Grok high / not-fast** slug; **fast SKUs are rejected**. - [ ] Catalog refresh prefers a newer Cursor Grok (e.g. 4.7) over 4.6 when listed, still high / not-fast; if none, abort. - [ ] **Second agentic workflow on the same UTC day fails closed** (no `agent` process). `--resume` of today's id still allowed. Next UTC day is allowed. - [ ] Fixture week still runs with no Gondola/Cursor credentials (does not consume the daily cap). - [ ] Weekly Gondola budget still aborts extra paid steps; agentic cap is daily and separate. - [ ] Allowlist: Gondola host only; redirects rejected (mock). - [ ] Secret lint catches `GONDOLA_API_KEY` / `gnd_` / `CURSOR_API_KEY`. - [ ] `--image` writes a JPEG via Gondola (or placeholder when off), same hero path contract. - [ ] `report.md` records provider, model pins, prediction/session ids, and the UTC date of the agentic run — never tokens. - [ ] Skills, README, `docs/invariants.md` no longer describe Replicate as the live generator; they state the daily agentic cap. --- ## Test plan — functional paths 1. Fixture week unchanged (no network; no daily lock). 2. Gondola mock: one chat create, output used; second create for same step fails. 3. Gondola mock: image bytes → JPEG on disk. 4. Gondola mock: redirect → reject. 5. Cursor CLI mock/stub: invoked with expected `--model` (high, not fast) and `--workspace`; stdout parsed. 6. Catalog: fake list containing `cursor-grok-4.6-high`, `cursor-grok-4.6-high-fast`, `cursor-grok-4.7-high` → pick `4.7-high`. 7. Catalog: only fast Grok → fail closed. 8. Budget: mixed Gondola + one agent session; exhaustion stops remaining paid work. 9. `--dry-run` still collect + plan only; live plan uses agentic backend when `--live`. 10. **Daily cap:** first live agentic run on date D succeeds; second live agentic run on D fails without spawning `agent`; run on D+1 succeeds. 11. **Resume:** `--resume` of the D chat id on D does not count as a second workflow; a *new* session on D does. --- ## Test plan — attack, hack, and abuse 1. **Cost amplification** — no retry of Gondola create or extra `agent` sessions on poll/timeout without a logged id; scheduler/`week --live` twice the same day cannot launch a second Grok run. 2. **Fast SKU** — config or catalog that resolves `*-high-fast` is an error. 3. **SSRF** — Gondola client does not follow redirects to link-local. 4. **Prompt injection** in collected Telegram/README still wrapped; agent must not run untrusted scripts from sources. 5. **Secret leak** in Gondola/agent output fails emit. 6. **Image bomb** — cap download; JPEG magic only. 7. **Workspace escape** — agent `--workspace` is the run dir or repo root, not `/`. 8. **Clock / lock tampering** — missing or corrupt lock fails closed on live agentic; fixtures do not skip the check when `--live`. Do not honor a future-dated lock as "already ran tomorrow." 9. **Editor cycle as bypass** — extra editor attempts the same day must not start a new `agent` session. --- ## Verification criteria 1. Cassette tests in CI (no live Gondola/Cursor). 2. Operator optional: one live Gondola completion + one `agent --list-models` pin recorded in a throwaway run. 3. Reviewer can see in `report.md` which Grok slug ran, that it was not fast, and the UTC date of the agentic workflow. 4. Close or retarget #5 after this issue is implemented.
PlasticDigits commented 2026-09-02 02:18:49 +00:00 (Migrated from gitlab.com)

marked as related to #5

marked as related to #5
PlasticDigits commented 2026-09-02 02:22:10 +00:00 (Migrated from gitlab.com)

changed the description

changed the description
PlasticDigits commented 2026-09-02 02:22:11 +00:00 (Migrated from gitlab.com)

Amendment: agentic Cursor CLI workflows are capped at once per UTC day. One live week (plan → editor, including #6 cycles) is that day's workflow; --resume of today's chat id is recovery. A second week --live / new agent session the same day fails closed. Gondola non-agentic calls are not under this cap. Description updated accordingly.

Amendment: agentic Cursor CLI workflows are capped at **once per UTC day**. One live week (plan → editor, including #6 cycles) is that day's workflow; `--resume` of today's chat id is recovery. A second `week --live` / new `agent` session the same day fails closed. Gondola non-agentic calls are not under this cap. Description updated accordingly.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
code/cl8y-research#12
No description provided.