From 612cecc5bd5dbfc73d4a3a9d38626378eaf39041 Mon Sep 17 00:00:00 2001
From: soryu <soryu@soryu.co>
Date: Wed, 4 Feb 2026 01:59:40 +0000
Subject: Remove chain supervisor capability

Chains no longer spawn a supervisor task. Checkpoint contracts will be
automatically run as part of the DAG execution when dependencies complete.

- Remove supervisor task creation from start_chain handler
- Remove chain supervisor CLI commands
- Remove supervisor_task_id from StartChainResponse
- Remove withSupervisor option from frontend

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
---
 .../frontend/src/components/chains/ChainEditor.tsx | 32 ++++++----------------
 1 file changed, 9 insertions(+), 23 deletions(-)

(limited to 'makima/frontend/src/components/chains/ChainEditor.tsx')

diff --git a/makima/frontend/src/components/chains/ChainEditor.tsx b/makima/frontend/src/components/chains/ChainEditor.tsx
index 49e585c..d278607 100644
--- a/makima/frontend/src/components/chains/ChainEditor.tsx
+++ b/makima/frontend/src/components/chains/ChainEditor.tsx
@@ -54,7 +54,6 @@ export function ChainEditor({
   const [isStarting, setIsStarting] = useState(false);
   const [isStopping, setIsStopping] = useState(false);
   const [error, setError] = useState<string | null>(null);
-  const [withSupervisor, setWithSupervisor] = useState(false);
 
   // Load definitions when chain changes
   useEffect(() => {
@@ -174,14 +173,14 @@ export function ChainEditor({
     setIsStarting(true);
     setError(null);
     try {
-      await startChain(chain.id, { withSupervisor });
+      await startChain(chain.id);
       onRefresh();
     } catch (err) {
       setError(err instanceof Error ? err.message : "Failed to start chain");
     } finally {
       setIsStarting(false);
     }
-  }, [chain.id, onRefresh, withSupervisor]);
+  }, [chain.id, onRefresh]);
 
   const handleStopChain = useCallback(async () => {
     if (!confirm("Are you sure you want to stop this chain?")) return;
@@ -261,26 +260,13 @@ export function ChainEditor({
             </span>
             {/* Chain control buttons */}
             {chain.status === "pending" && definitions.length > 0 && (
-              <>
-                <label className="flex items-center gap-1 font-mono text-[10px] text-[#9bc3ff] cursor-pointer">
-                  <input
-                    type="checkbox"
-                    checked={withSupervisor}
-                    onChange={(e) => setWithSupervisor(e.target.checked)}
-                    className="w-3 h-3 accent-[#75aafc]"
-                  />
-                  <span title="Create a Claude supervisor task to monitor chain progress">
-                    Supervisor
-                  </span>
-                </label>
-                <button
-                  onClick={handleStartChain}
-                  disabled={isStarting}
-                  className="px-3 py-1 font-mono text-xs text-[#dbe7ff] bg-green-600 hover:bg-green-700 border border-green-500 transition-colors disabled:opacity-50"
-                >
-                  {isStarting ? "Starting..." : "Start Chain"}
-                </button>
-              </>
+              <button
+                onClick={handleStartChain}
+                disabled={isStarting}
+                className="px-3 py-1 font-mono text-xs text-[#dbe7ff] bg-green-600 hover:bg-green-700 border border-green-500 transition-colors disabled:opacity-50"
+              >
+                {isStarting ? "Starting..." : "Start Chain"}
+              </button>
             )}
             {chain.status === "active" && (
               <button
-- 
cgit v1.2.3

