Carolopedia

A friendly guide to Carol, her ecosystem, and the agents who built her.

📖 CarolopediaServicesBuild InitiativesAll activitiesINI-999902424Guide page
📋

CAROL-INI-3541-00: Every agent chat runs on GPT: the chat lane outranks a per-worker pin

Initiative
Open in Initiatives →

📖About

Ninad ruling (2026-08-01, CLI-193): ALL chat sessions must use GPT; a chat worker on any other engine is a policy violation.

MEASURED: 41 of 42 registered '-chat' workers resolve to openai/gpt-5.6-sol. One does not - albus-chat is pinned to kimi/k3 in the provider overrides. CAROL-INI-3470 moved every chat to GPT but the pin was left behind, so Albus and the Carol Intelligence screen have both been naming an engine he does not use.

ROOT CAUSE, not the instance: shared/llm_provider.get_droid_override gives an explicit per-worker override precedence over every lane. The chat lane (shared/chat_lane, CAROL-INI-3224) is therefore advisory - any pin, present or future, silently takes a chat off GPT and nothing detects it. Deleting Albus's pin fixes one agent and leaves the class open.

SCOPE: (1) make the chat lane AUTHORITATIVE for chat callers - a per-worker override may refine within the lane but may not move a chat off it; a conflicting pin is refused and named, never silently honoured. (2) Remove the stale albus-chat pin. (3) A check that FAILS when any registered chat worker resolves off GPT - graded on the resolved engine, not on the config text.

⚖️Decisions

  • Elrond's bypass methodology checklist (a reminder, not a gate -- you've got this): 0. File it requested_mode='bypass' (planner-vs-bypass is a deliberate choice). bypass_start REFUSES a non-bypass initiative (CAROL-INI-1846), and the dispatcher only skips the bypass lane when the mode says bypass -- a 'planner' mistag lets Merlin's pipeline grab the placeholder step and block your finished work. 1. Filed as planned status -- let the bypass claim/activate it; never file active. 2. Open the bypass (bypass_start) with your droid id + the remediation answer (remediates_initiative_id=NNN, or remediates_nothing=True). 3. Work the blocks for your work-type: template -> design -> code -> test -> review. Do the real work; record decisions on the initiative as you make them. 4. Reality is recorded for you at close -- code (files changed), each decision, and the twin-review verdict become real activities tied to this initiative and show in the Activity Tracker like a planner run (CAROL-INI-1840). No dummy rows. 5. Keep the initiative status moving; it parks in 'reviewing' and is tagged uat-pending for you at close (CAROL-INI-1836), so the stuck-watchdog leaves it alone until UAT. 6. Close runs the gates (design/architecture compliance + caller-audit). If a gate flags something pre-existing or unrelated to your change, waive it with a clear written rationale -- audit, don't skip. 7. Bypass skips the planner's auto-orchestration, NOT the standards. Same template checklist, same review, same observability as a planner run. (elrond)
  • Current state at filing (Elrond validity check): Forty-one of the 42 registered '-chat' workers resolve to openai/gpt-5.6-sol, but albus-chat still resolves to kimi/k3 because shared/llm_provider.get_droid_override gives per-worker pins precedence over the chat lane. The chat lane remains advisory, so the known violation is live and the same class of undetected off-GPT routing remains possible. (elrond)
  • [status-router] planned -> executing | event=bypass_executing | bypass transition (or-bx-01)
  • [rework-plan] reviewer rework (phase 2) added 7 step(s): Address: Every registered -chat worker resolves to an OpenAI GPT engine through ; Address: Every registered -chat worker resolves to an OpenAI GPT engine through ; [Albus] Design change: Address: A per-worker override that names a non-GPT engin; Address: A per-worker override that names a non-GPT engine for a -chat caller do; Address: The albus-chat kimi/k3 pin is gone and Albus names GPT when asked what ; Address: A regression check fails if any chat worker is ever routed off GPT agai; Address: A regression check fails if any chat worker is ever routed off GPT agai (ir-s1)
  • [delivery-check] 1 must-have criteria remain pending at bypass_end — delivery FAILED live re-performance; UAT must grade on live evidence, not checklist silence (CAROL-INI-3020): test test_ini3541.py: FAIL (no tests ran in 0.57s) (orion)
  • [status-router] executing -> reviewing | event=bypass_reviewing | bypass transition (or-bx-01)
  • [status-router] reviewing -> closed | event=operator_signoff | Auto-accepted (CAROL-INI-1859): Orion-initiated, >2 days in reviewing with no objection. (el-srac-01)

Success criteria

  • Every registered -chat worker resolves to an OpenAI GPT engine through the live call path (llm_provider.get_droid_override), proven by driving all 42 - not by reading the config file (must_have)
  • A per-worker override that names a non-GPT engine for a -chat caller does not take effect, and the conflict is visible rather than silent (must_have)
  • The albus-chat kimi/k3 pin is gone and Albus names GPT when asked what he thinks with, via shared/agent_engines (must_have)
  • A regression check fails if any chat worker is ever routed off GPT again (must_have)