Conversation
Adds /fix as the standard bugfix command — investigate, RED test, fix, audit, done — with mandatory end-to-end verification. Slims the existing /spec bugfix lane substantially. The workflow change addresses the issue where two simple bugs took 21+ minutes and 400k tokens halfway through. ## /fix — new user-invocable command - New skill at pilot/skills/fix/ with six steps (investigate → RED → fix → audit → quality → finalise). Always quick: stops cleanly and tells the user to re-invoke with /spec when complexity exceeds the quick lane. - Iron Law #4: never claim done from unit tests alone. Step 4.3 is mandatory end-to-end verification — UI bugs must run browser automation via Claude Code Chrome / Chrome DevTools MCP / playwright-cli / agent-browser; CLI/API/library bugs must be exercised with real invocations and concrete evidence captured in the completion report. - Step 1.4 adds explicit Instrument-when-needed guidance with SPEC-DEBUG markers (cleanup grep enforced at audit). - Registered as user-invocable, model: opus. ## Slimmed full bugfix lane (/spec) - Dropped Codex from spec-bugfix-plan entirely (was step 7) — adversarial review on a plan with no code yet was overhead. Codex still runs at spec-verify time. - Codex-once rule across spec-plan + spec-verify: a session-scoped sentinel file prevents re-runs across plan iterations within one /spec invocation (was re-running on every annotate/verify cycle). - spec-bugfix-verify: 11 steps → 8. Dropped redundant plan-verify (no-op), runtime-verification (foldable into quality), post-merge-verify (squash merges with no conflicts are safe). - spec-bugfix-verify Step 2 (Behavior Contract audit): tightened from ~6.4KB to ~3.8KB. Sub-steps 2.5/2.6 merged into 2.4. Step 2.6 now enforces mandatory E2E verification with concrete evidence — no claim-VERIFIED-on-tests-alone. - spec-bugfix-plan: tightened red-flags step with Common Rationalizations and User Signals tables (inspired by superpowers/systematic-debugging). Step 3.3 adds a concrete multi-layer instrumentation example. Step 4 fix-approach-selection defaults to picking the obvious fix rather than manufacturing fake alternatives. - spec-implement Task 2 (bugfix lane): drops the per-task full-suite run. For bundled bugfix plans this was the single biggest token sink — full suite now runs once at the Quality Gate, targeted module test runs between fix iterations. ## Iteration cap - spec-bugfix-verify Step 8 caps fix iterations at 3. After three failed verify cycles, AskUserQuestion presents Continue/Pivot/Abandon — stops the fix-on-fix-on-fix death spiral that previously had no bound. ## Dispatcher / model defaults / Console - /spec dispatcher restored to clean split: /spec routes bugs to spec-bugfix-plan (full lane), /fix is a separate user-facing command for the quick lane. No --full flag, no auto-routing between commands. - launcher/model_config.py: /fix and /benchmark added to default skill models (opus). Console useSettings.ts mirrors. - Console Settings page: General Rows now lists /fix and /benchmark with descriptive labels + sub-text. SPEC_PHASE_ROWS rendered with sub-text. - launcher/banner.py + installer/steps/finalize.py: /fix and /benchmark added to quick-start tips and post-install workflow list. Spec-Driven feature description updated to mention both /spec and /fix. - pilot/settings.json: companyAnnouncements line now lists /fix; spinner tip updated. ## Docs - New Docusaurus page docs/workflows/fix.md with workflow diagram, Common Issues table, mandatory E2E section, /spec vs /fix decision table. Sidebars updated. - /spec page trimmed of bugfix-only content (now points at /fix). - README: new /fix section with How /fix works + How /spec handles bugs details blocks. - Marketing site WhatsInside.tsx updated to mention /fix. ## Other-session changes incorporated - Console: parsePlanContent.ts + tests for spec section rendering and plan annotator persistence (Bug A + Bug B fixes). - pilot/hooks/tool_redirect.py + tests: extended. - pilot/.mcp.json + hooks/hooks.json + scripts/*.cjs: minor updates. - pilot/rules/development-practices.md + mcp-servers.md: updates. - installer/downloads.py: minor. - pilot/ui/* compiled bundles: rebuilt. - .devcontainer/*: minor adjustments.
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (12)
📒 Files selected for processing (10)
WalkthroughThis PR introduces a new Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~22 minutes Possibly related PRs
Suggested labels
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Review rate limit: 7/8 reviews remaining, refill in 7 minutes and 30 seconds.Comment |
|
Claude finished @maxritter's task in 3m 5s —— View job PR Review: feat: bugfix workflow redesign with new /fix command
Review SummaryThis is a well-designed PR that addresses a genuine efficiency problem — simple bugs routing through the full
|
There was a problem hiding this comment.
Actionable comments posted: 3
🧹 Nitpick comments (2)
installer/tests/unit/steps/test_finalize.py (1)
237-240: Strengthen workflow coverage with label-level assertions.Section-length checks help, but they can still pass if expected workflow entries are replaced. Please also assert
/fixand/benchmarkare present in the Workflows items.As per coding guidelines `**/tests/**`: Review test code briefly. Focus on: Test coverage for the feature being tested.🧪 Suggested test enhancement
expected_lengths = {"Getting Started": 4, "Workflows": 6} for title, items in sections: assert len(items) == expected_lengths[title] + workflows = dict(sections)["Workflows"] + workflow_labels = [label for label, _ in workflows] + assert "/fix" in workflow_labels + assert "/benchmark" in workflow_labels🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@installer/tests/unit/steps/test_finalize.py` around lines 237 - 240, The test currently only checks section lengths; enhance it by adding explicit label-level assertions for the Workflows section: inside the loop that iterates "for title, items in sections" (and after the existing length assertion using expected_lengths), when title == "Workflows" assert that "/fix" and "/benchmark" are present in the items collection (use the same items variable), so the test fails if those specific workflow entries are missing or replaced..devcontainer/devcontainer.json (1)
11-13: Consider pinningCLAUDE_CONFIG_DIRexplicitly for mount-path stability.The mount is good, but setting
containerEnv.CLAUDE_CONFIG_DIR=/root/.claudemakes path resolution robust if the container user/home changes later.♻️ Suggested hardening
"mounts": [ "source=claude-code-config-${devcontainerId},target=/root/.claude,type=volume" ], + "containerEnv": { + "CLAUDE_CONFIG_DIR": "/root/.claude" + },🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.devcontainer/devcontainer.json around lines 11 - 13, Add an explicit container environment variable for the Claude config directory so mounts remain stable: set containerEnv.CLAUDE_CONFIG_DIR to "/root/.claude" in the devcontainer.json (alongside the existing "mounts" entry) so code and tools can reliably resolve the mount path even if the container user/home changes later.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@docs/docusaurus/docs/workflows/fix.md`:
- Line 86: The document currently contradicts itself by mentioning both "Two
quick-lane fix attempts have already failed." and a separate reference to
"three" as the bail-out threshold; pick one threshold (e.g., two or three) and
update every occurrence to that single value — specifically replace the sentence
fragment "Two quick-lane fix attempts have already failed." and any other
mentions of "three" or the bail-out threshold (including the referenced "99-99"
occurrence) so the text consistently uses the chosen numeric threshold
throughout.
- Around line 24-26: The fenced workflow code block that contains the string
"Investigate → RED → Fix → Audit → Quality Gate → Done" is missing a
language identifier which triggers markdownlint MD040; update the opening fence
to use a language tag (e.g., change ``` to ```text) so the block becomes ```text
... ```, ensuring the closing fence remains intact.
In `@README.md`:
- Around line 180-182: The fenced flow block containing "Investigate → RED →
Fix → Audit → Quality Gate → Done" is missing a language tag and triggers
markdownlint MD040; update the fenced code block that contains that arrow
sequence to include a language identifier (e.g., add "text" after the opening
triple backticks) so the block becomes a properly tagged fenced code block and
MD040 will be resolved.
---
Nitpick comments:
In @.devcontainer/devcontainer.json:
- Around line 11-13: Add an explicit container environment variable for the
Claude config directory so mounts remain stable: set
containerEnv.CLAUDE_CONFIG_DIR to "/root/.claude" in the devcontainer.json
(alongside the existing "mounts" entry) so code and tools can reliably resolve
the mount path even if the container user/home changes later.
In `@installer/tests/unit/steps/test_finalize.py`:
- Around line 237-240: The test currently only checks section lengths; enhance
it by adding explicit label-level assertions for the Workflows section: inside
the loop that iterates "for title, items in sections" (and after the existing
length assertion using expected_lengths), when title == "Workflows" assert that
"/fix" and "/benchmark" are present in the items collection (use the same items
variable), so the test fails if those specific workflow entries are missing or
replaced.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 86f66904-59a0-4dd3-97c9-36ebacff4c5f
⛔ Files ignored due to path filters (65)
console/package.jsonis excluded by!console/**console/src/ui/viewer/hooks/useSettings.tsis excluded by!console/**console/src/ui/viewer/views/Settings/index.tsxis excluded by!console/**console/src/ui/viewer/views/Spec/annotation/PlanAnnotator.tsxis excluded by!console/**console/src/ui/viewer/views/Spec/annotation/useAnnotation.tsis excluded by!console/**console/src/ui/viewer/views/Spec/index.tsxis excluded by!console/**console/src/ui/viewer/views/Spec/parsePlanContent.tsis excluded by!console/**console/tests/annotation/plan-annotator-persistence.test.tsxis excluded by!console/**console/tests/ui/spec-section-rendering.test.tsis excluded by!console/**console/tsconfig.jsonis excluded by!console/**launcher/banner.pyis excluded by!launcher/**launcher/model_config.pyis excluded by!launcher/**launcher/tests/unit/test_model_config.pyis excluded by!launcher/**pilot/.mcp.jsonis excluded by!pilot/**pilot/hooks/hooks.jsonis excluded by!pilot/**pilot/hooks/tests/test_spec_stop_guard.pyis excluded by!pilot/**pilot/hooks/tests/test_tool_redirect.pyis excluded by!pilot/**pilot/hooks/tool_redirect.pyis excluded by!pilot/**pilot/rules/development-practices.mdis excluded by!pilot/**pilot/rules/mcp-servers.mdis excluded by!pilot/**pilot/rules/task-and-workflow.mdis excluded by!pilot/**pilot/scripts/mcp-server.cjsis excluded by!pilot/**pilot/scripts/worker-service.cjsis excluded by!pilot/**pilot/settings.jsonis excluded by!pilot/**pilot/skills/fix/manifest.jsonis excluded by!pilot/**pilot/skills/fix/orchestrator.mdis excluded by!pilot/**pilot/skills/fix/steps/01-investigate.mdis excluded by!pilot/**pilot/skills/fix/steps/02-red.mdis excluded by!pilot/**pilot/skills/fix/steps/03-fix.mdis excluded by!pilot/**pilot/skills/fix/steps/04-audit.mdis excluded by!pilot/**pilot/skills/fix/steps/05-quality.mdis excluded by!pilot/**pilot/skills/fix/steps/06-finalise.mdis excluded by!pilot/**pilot/skills/spec-bugfix-plan/manifest.jsonis excluded by!pilot/**pilot/skills/spec-bugfix-plan/orchestrator.mdis excluded by!pilot/**pilot/skills/spec-bugfix-plan/steps/00-toggles.mdis excluded by!pilot/**pilot/skills/spec-bugfix-plan/steps/01-red-flags.mdis excluded by!pilot/**pilot/skills/spec-bugfix-plan/steps/03-investigation.mdis excluded by!pilot/**pilot/skills/spec-bugfix-plan/steps/04-plan-fix.mdis excluded by!pilot/**pilot/skills/spec-bugfix-plan/steps/06-annotation-check.mdis excluded by!pilot/**pilot/skills/spec-bugfix-plan/steps/07-approval.mdis excluded by!pilot/**pilot/skills/spec-bugfix-plan/steps/07-codex-review.mdis excluded by!pilot/**pilot/skills/spec-bugfix-plan/steps/08-continuing.mdis excluded by!pilot/**pilot/skills/spec-bugfix-verify/manifest.jsonis excluded by!pilot/**pilot/skills/spec-bugfix-verify/orchestrator.mdis excluded by!pilot/**pilot/skills/spec-bugfix-verify/steps/02-verify-fix.mdis excluded by!pilot/**pilot/skills/spec-bugfix-verify/steps/03-quality-checks.mdis excluded by!pilot/**pilot/skills/spec-bugfix-verify/steps/04-plan-verify.mdis excluded by!pilot/**pilot/skills/spec-bugfix-verify/steps/04-verification-scenario.mdis excluded by!pilot/**pilot/skills/spec-bugfix-verify/steps/05-final-worktree-sync.mdis excluded by!pilot/**pilot/skills/spec-bugfix-verify/steps/05-runtime-verification.mdis excluded by!pilot/**pilot/skills/spec-bugfix-verify/steps/06-check-feedback.mdis excluded by!pilot/**pilot/skills/spec-bugfix-verify/steps/07-code-review-gate.mdis excluded by!pilot/**pilot/skills/spec-bugfix-verify/steps/08-post-merge-verify.mdis excluded by!pilot/**pilot/skills/spec-bugfix-verify/steps/08-update-status.mdis excluded by!pilot/**pilot/skills/spec-bugfix-verify/steps/11-update-status.mdis excluded by!pilot/**pilot/skills/spec-implement/steps/04-tdd-loop.mdis excluded by!pilot/**pilot/skills/spec-plan/steps/11-plan-verification.mdis excluded by!pilot/**pilot/skills/spec-verify/steps/04-launch-review.mdis excluded by!pilot/**pilot/skills/spec-verify/steps/07-collect-results.mdis excluded by!pilot/**pilot/skills/spec/orchestrator.mdis excluded by!pilot/**pilot/skills/spec/steps/01-parse-route.mdis excluded by!pilot/**pilot/ui/PlanAnnotator.jsis excluded by!pilot/**pilot/ui/index3.jsis excluded by!pilot/**pilot/ui/index5.jsis excluded by!pilot/**pilot/ui/viewer-bundle.jsis excluded by!pilot/**
📒 Files selected for processing (11)
.devcontainer/Dockerfile.devcontainer/devcontainer.jsonREADME.mddocs/docusaurus/docs/getting-started/installation.mddocs/docusaurus/docs/workflows/fix.mddocs/docusaurus/docs/workflows/spec.mddocs/docusaurus/sidebars.tsdocs/site/src/components/WhatsInside.tsxinstaller/downloads.pyinstaller/steps/finalize.pyinstaller/tests/unit/steps/test_finalize.py
| - Root cause is architectural, not a single line. | ||
| - Fix needs defense-in-depth at multiple layers. | ||
| - Confidence stays Low — root cause can't be pinned to file:line. | ||
| - Two quick-lane fix attempts have already failed. |
There was a problem hiding this comment.
Unify the failed-attempt threshold (currently contradictory).
The page states both two and three failed attempts as the bail-out threshold. Please pick one value and use it consistently.
Also applies to: 99-99
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@docs/docusaurus/docs/workflows/fix.md` at line 86, The document currently
contradicts itself by mentioning both "Two quick-lane fix attempts have already
failed." and a separate reference to "three" as the bail-out threshold; pick one
threshold (e.g., two or three) and update every occurrence to that single value
— specifically replace the sentence fragment "Two quick-lane fix attempts have
already failed." and any other mentions of "three" or the bail-out threshold
(including the referenced "99-99" occurrence) so the text consistently uses the
chosen numeric threshold throughout.
|
Claude finished @maxritter's task in 2m 11s —— View job Incremental Review — Push 2 (9f222e0)Files reviewed in this push (non-encrypted): ✅ Resolved from prior reviewSequential retry test coverage (
Both correctly monkeypatch ✅ Resolved from CodeRabbit
New findingsOrdering test removed without replacement (
workflow_labels = [label for label, _ in dict(sections)["Workflows"]]
workflow_labels = next(items for title, items in sections if "Workflows")
workflow_labels = [label for label, _ in workflow_labels]
The table was tightened from file-count / root-cause locatability criteria to intent-based criteria ("You want a fix without ceremony", "You want it done now"). The closing paragraph now says Still open from prior review
SummaryPush 2 closes all three previously flagged issues (sequential retry coverage, MD040 code fences, threshold inconsistency) and adds the CodeRabbit-suggested label assertions. The two new findings above are minor. No blocking issues. |
# [8.5.0](v8.4.1...v8.5.0) (2026-04-29) ### Features * bugfix workflow redesign with new /fix command ([#136](#136)) ([5bdfbbc](5bdfbbc))
|
🎉 This PR is included in version 8.5.0 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
Summary
Adds /fix as the standard bugfix command — investigate, RED test, fix, audit, done — with mandatory end-to-end verification. Slims the existing /spec bugfix lane substantially. Addresses the issue where two simple bugs took 21+ minutes and 400k tokens halfway through.
/fix — new user-invocable command
pilot/skills/fix/with six steps (investigate → RED → fix → audit → quality → finalise)--fullflag, no auto-routing between commands — honour the user's command choice)SPEC-DEBUG:markers (cleanup grep enforced at audit)Slimmed full bugfix lane (/spec)
Iteration cap
spec-bugfix-verify Step 8 caps fix iterations at 3. After three failed verify cycles, AskUserQuestion presents Continue/Pivot/Abandon — stops the fix-on-fix-on-fix death spiral.
Dispatcher / model defaults / Console
Docs
docs/workflows/fix.mdwith workflow diagram, Common Issues table, mandatory E2E section, /spec vs /fix decision tableOther-session changes incorporated
parsePlanContent.ts+ tests for spec section rendering and plan annotator persistence (Bug A + Bug B fixes from a parallel session)Verification
tsc --noEmitcleanruff checkclean on all files I touchedSummary by CodeRabbit
New Features
/fixbugfix workflow with a RED-before-GREEN TDD flow.Documentation
/fixguide, reorganized/specguidance, and updated install/sandboxing docs and site copy.Bug Fixes
Chores
/fixand/benchmarkto next-steps, made workflow tiles clickable, simplified hero content.