fix: enforce fresh context between molecule steps
Some checks failed
CI / Check for .beads changes (push) Has been skipped
CI / Check embedded formulas (push) Failing after 18s
CI / Test (push) Failing after 1m32s
CI / Lint (push) Failing after 20s
CI / Integration Tests (push) Successful in 1m14s
CI / Coverage Report (push) Has been skipped
Windows CI / Windows Build and Unit Tests (push) Has been cancelled

Change molecule step completion instructions to use `gt mol step done`
instead of `bd close`. This ensures polecats get fresh context between
each step, which is critical for multi-step review workflows like
shiny-enterprise where each refinement pass should have unbiased attention.

The `gt mol step done` command already:
1. Closes the step
2. Finds the next ready step
3. Respawns the pane for fresh context

But polecats were being instructed to use `bd close` directly, which
skipped the respawn and let them run through entire workflows in a
single session with accumulated context.

Updated:
- prime_molecule.go: step completion instructions
- mol-polecat-work.formula.toml
- mol-polecat-code-review.formula.toml
- mol-polecat-review-pr.formula.toml

Fixes: hq-0kx7ra
This commit is contained in:
2026-01-22 15:38:39 -08:00
committed by John Ogle
parent 6be7fdd76c
commit 99ba37e383
4 changed files with 19 additions and 11 deletions

View File

@@ -88,9 +88,9 @@ func showMoleculeExecutionPrompt(workDir, moleculeID string) {
fmt.Println(style.Bold.Render("→ EXECUTE THIS STEP NOW.")) fmt.Println(style.Bold.Render("→ EXECUTE THIS STEP NOW."))
fmt.Println() fmt.Println()
fmt.Println("When complete:") fmt.Println("When complete:")
fmt.Printf(" 1. Close the step: bd close %s\n", step.ID) fmt.Printf(" gt mol step done %s\n", step.ID)
fmt.Println(" 2. Check for next step: bd ready") fmt.Println()
fmt.Println(" 3. Continue until molecule complete") fmt.Println("This closes the step and respawns your session with fresh context for the next step.")
} else { } else {
// No next step - molecule may be complete // No next step - molecule may be complete
fmt.Println(style.Bold.Render("✓ MOLECULE COMPLETE")) fmt.Println(style.Bold.Render("✓ MOLECULE COMPLETE"))
@@ -162,11 +162,10 @@ func outputMoleculeContext(ctx RoleContext) {
showMoleculeProgress(b, rootID) showMoleculeProgress(b, rootID)
fmt.Println() fmt.Println()
fmt.Println("**Molecule Work Loop:**") fmt.Println("**When step complete:**")
fmt.Println("1. Complete current step, then `bd close " + issue.ID + "`") fmt.Println(" `gt mol step done " + issue.ID + "`")
fmt.Println("2. Check for next steps: `bd ready --parent " + rootID + "`") fmt.Println()
fmt.Println("3. Work on next ready step(s)") fmt.Println("This closes the step and respawns with fresh context for the next step.")
fmt.Println("4. When all steps done, run `gt done`")
break // Only show context for first molecule step found break // Only show context for first molecule step found
} }
} }

View File

@@ -9,10 +9,13 @@ opportunities. The output is a set of beads capturing actionable findings.
You are a self-cleaning worker. You: You are a self-cleaning worker. You:
1. Receive work via your hook (pinned molecule + review scope) 1. Receive work via your hook (pinned molecule + review scope)
2. Work through molecule steps using `bd ready` / `bd close <step>` 2. Work through molecule steps using `bd ready` / `gt mol step done <step>`
3. Complete and self-clean via `gt done` (submit findings + nuke yourself) 3. Complete and self-clean via `gt done` (submit findings + nuke yourself)
4. You are GONE - your findings are recorded in beads 4. You are GONE - your findings are recorded in beads
**Fresh context:** Each `gt mol step done` respawns your session with fresh context.
This ensures each review step gets unbiased attention.
**Self-cleaning:** When you run `gt done`, you submit your findings, nuke your **Self-cleaning:** When you run `gt done`, you submit your findings, nuke your
sandbox, and exit. There is no idle state. Done means gone. sandbox, and exit. There is no idle state. Done means gone.

View File

@@ -9,10 +9,13 @@ standards, then approves, requests changes, or files followup beads.
You are a self-cleaning worker. You: You are a self-cleaning worker. You:
1. Receive work via your hook (pinned molecule + PR reference) 1. Receive work via your hook (pinned molecule + PR reference)
2. Work through molecule steps using `bd ready` / `bd close <step>` 2. Work through molecule steps using `bd ready` / `gt mol step done <step>`
3. Complete and self-clean via `gt done` (submit findings + nuke yourself) 3. Complete and self-clean via `gt done` (submit findings + nuke yourself)
4. You are GONE - your review is recorded in beads 4. You are GONE - your review is recorded in beads
**Fresh context:** Each `gt mol step done` respawns your session with fresh context.
This ensures each review step gets unbiased attention.
**Self-cleaning:** When you run `gt done`, you submit your findings, nuke your **Self-cleaning:** When you run `gt done`, you submit your findings, nuke your
sandbox, and exit. There is no idle state. Done means gone. sandbox, and exit. There is no idle state. Done means gone.

View File

@@ -9,10 +9,13 @@ crash after any step and resume from the last completed step.
You are a self-cleaning worker. You: You are a self-cleaning worker. You:
1. Receive work via your hook (pinned molecule + issue) 1. Receive work via your hook (pinned molecule + issue)
2. Work through molecule steps using `bd ready` / `bd close <step>` 2. Work through molecule steps using `bd ready` / `gt mol step done <step>`
3. Complete and self-clean via `gt done` (submit + nuke yourself) 3. Complete and self-clean via `gt done` (submit + nuke yourself)
4. You are GONE - Refinery merges from MQ 4. You are GONE - Refinery merges from MQ
**Fresh context:** Each `gt mol step done` respawns your session with fresh context.
This ensures each step gets unbiased attention.
**Self-cleaning:** When you run `gt done`, you push your work, submit to MQ, **Self-cleaning:** When you run `gt done`, you push your work, submit to MQ,
nuke your sandbox, and exit. There is no idle state. Done means gone. nuke your sandbox, and exit. There is no idle state. Done means gone.