Kickoff Renderer Migration

Start the autonomous Prism Renderer Migration Ralph loop in the background and stream iteration-by-iteration progress into this c…

Flickinny11 updated 29d ago
Claude CodeGeneric
View source ↗
---
description: Start the autonomous Prism Renderer Migration Ralph loop in the background and stream iteration-by-iteration progress into this chat. Runs until all 10 tasks complete, a task fails 3×, or you stop it. One task per child Claude process.
argument-hint: (none)
---

# Kickoff: Prism Renderer Migration

You are the operator of the renderer migration. The user typed
`/kickoff-renderer-migration` in this chat. Your job:

1. Verify the harness is ready.
2. Launch the autonomous loop in the background.
3. Stream iteration progress into this chat as it happens.
4. Stay reachable so the user can ask questions or stop the loop.
5. When the loop terminates, produce a final summary.

Do **not** run `/ralph-step` yourself in this session. The outer loop spawns
fresh `claude --print` processes for that. Your role here is operator and
narrator, not worker.

## Step 0 — capture your model (CRITICAL — must be Opus, no exceptions)

You currently know which model you are because your system prompt names it
(e.g. "powered by the model named Opus 4.7", "the exact model ID is
'claude-opus-4-7'"). The user has set a hard rule: **the ralph loop runs
on Opus only.** Sonnet and Haiku are explicitly forbidden for ralph coding
work — `scripts/ralph.sh` will refuse to launch on anything that doesn't
start with `claude-opus-`.

Write your full model ID to `.claude/.ralph-model`. The ID MUST start with
`claude-opus-` and MUST be the full canonical form of the user's
currently-selected Opus version (e.g. `claude-opus-4-7`).

```bash
echo 'claude-opus-4-7' > /Users/loganbaird/Prototype_Prism/Design-trials/.claude/.ralph-model

If your system-prompt model ID is anything other than an Opus variant, STOP. Tell the user their UI dropdown is set to a forbidden model (Sonnet/Haiku) and abort the kickoff.

After writing, prove the model is real by running ALL of the following and showing each output to the user:

echo "=== MODEL PROOF ==="
echo "1. Wrote to .claude/.ralph-model:"; cat /Users/loganbaird/Prototype_Prism/Design-trials/.claude/.ralph-model
echo ""; echo "2. Self-reported model ID from MY system prompt: <print the model ID you read from your own system prompt — quote it exactly>"
echo ""; echo "3. SHA256 of model-file (tamper check):"; shasum -a 256 /Users/loganbaird/Prototype_Prism/Design-trials/.claude/.ralph-model
echo ""; echo "4. Starts-with-claude-opus check:"; grep -q '^claude-opus-' /Users/loganbaird/Prototype_Prism/Design-trials/.claude/.ralph-model && echo PASS || echo FAIL

Show the user the literal output. Do not paraphrase. The user wants runtime proof, not assurances.

The file is git-ignored.

Step 1 — preflight (do this synchronously before launching)

Run these checks in parallel via Bash:

  • git -C /Users/loganbaird/Prototype_Prism/Design-trials rev-parse --abbrev-ref HEAD → must equal prism-renderer-ralph
  • jq -r '.status, (.tasks | map(select(.status != "done")) | length), (.tasks | map(select(.status == "done")) | length)' /Users/loganbaird/Prototype_Prism/Design-trials/kid-kode-landing/notes/ralph-state.json → status must be running or paused-*; report done and pending counts
  • command -v claude && command -v jq → both must resolve
  • test -x /Users/loganbaird/Prototype_Prism/Design-trials/kid-kode-landing/scripts/ralph.sh → must succeed
  • test -s /Users/loganbaird/Prototype_Prism/Design-trials/.claude/.ralph-model → step 0 captured a non-empty model ID
  • grep -q '^claude-opus-' /Users/loganbaird/Prototype_Prism/Design-trials/.claude/.ralph-model → captured model is an Opus variant (Sonnet/Haiku rejected here)

If any check fails, stop. Tell the user exactly what's wrong and how to fix it. Do not proceed.

If status is complete, tell the user the migration is already done and ask if they want to (a) merge into prism-main, (b) review the resumption doc, or (c) reset state for another run. Do not relaunch.

If status is failed, read the failed task's notes field, surface the reason, and ask the user what to do (refine the task, bump maxAttemptsPerTask, or revise the spec).

Step 2 — tell the user what's about to happen

In one short message:

  • The done/pending task counts.
  • That you'll launch scripts/ralph.sh in the background.
  • That iteration updates will appear in this chat.
  • That they can interrupt at any time by saying "stop the loop" (you'll then call TaskStop on the bash task, see Step 6).

Don't be verbose. Two or three sentences.

Step 3 — launch the outer loop in the background

Use the Bash tool with run_in_background: true:

cd /Users/loganbaird/Prototype_Prism/Design-trials/kid-kode-landing && ./scripts/ralph.sh

The Bash tool returns a task id and an output file path. Save both — you need them for monitoring (Step 4) and stopping (Step 6).

Do not set a timeout; the loop may run for hours. run_in_background means it survives independent of any single tool call.

Step 4 — set up the iteration-progress monitor

Use the Monitor tool with persistent: true and a command that polls both the script's output file and ralph-state.json for boundary events, emitting one line per event. The monitor exits naturally when state goes terminal (complete or failed).

Use this exact monitor command, with <OUTPUT_PATH> replaced by the output file path you got from Step 3:

STATE=/Users/loganbaird/Prototype_Prism/Design-trials/kid-kode-landing/notes/ralph-state.json
LOG=<OUTPUT_PATH>
last_size=0
last_done=$(jq -r '[.tasks[] | select(.status=="done") | .id] | join(",")' "$STATE" 2>/dev/null || echo "")
last_status=""
while sleep 6; do
  if [[ -f "$LOG" ]]; then
    cur_size=$(stat -f%z "$LOG" 2>/dev/null || stat -c%s "$LOG" 2>/dev/null || echo 0)
    if (( cur_size > last_size )); then
      tail -c +$((last_size+1)) "$LOG" 2>/dev/null | \
        grep -E "ralph\.sh: iter|Ralph iter|loop complete|loop failed|breakpoint|claude exited non-zero" | \
        head -20
      last_s

Maintain Kickoff Renderer Migration?

Let people know it's listed here — add the badge (live metrics, light/dark aware) or a plain link to your README or docs.

[Kickoff Renderer Migration on getagentictools](https://getagentictools.com/loops/flickinny11-kickoff-prism-renderer-migration?ref=badge)
npx agentictools info loops/flickinny11-kickoff-prism-renderer-migration

The second line is the CLI lookup for this page — handy in READMEs and docs.