@tyroneross/build-loop 0.30.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/plugins/marketplace.json +10 -0
- package/.claude-plugin/marketplace.json +38 -0
- package/.claude-plugin/plugin.json +30 -0
- package/.codex-plugin/plugin.json +41 -0
- package/.cursor/rules/build-loop-surface.mdc +22 -0
- package/AGENTS.md +498 -0
- package/LICENSE +202 -0
- package/README.md +403 -0
- package/agents/alignment-checker.md +124 -0
- package/agents/api-assessor.md +136 -0
- package/agents/architecture-scout.md +185 -0
- package/agents/assessment-orchestrator.md +163 -0
- package/agents/build-orchestrator.md +198 -0
- package/agents/database-assessor.md +133 -0
- package/agents/design-contract-specialist.md +239 -0
- package/agents/fact-checker.md +69 -0
- package/agents/fix-critique.md +161 -0
- package/agents/frontend-assessor.md +136 -0
- package/agents/implementer.md +185 -0
- package/agents/independent-auditor.md +143 -0
- package/agents/mock-scanner.md +78 -0
- package/agents/optimize-runner.md +112 -0
- package/agents/overfitting-reviewer.md +96 -0
- package/agents/performance-assessor.md +159 -0
- package/agents/plan-critic.md +85 -0
- package/agents/promotion-reviewer.md +121 -0
- package/agents/recurring-pattern-detector.md +248 -0
- package/agents/retrospective-synthesizer.md +109 -0
- package/agents/root-cause-investigator.md +285 -0
- package/agents/scope-auditor.md +121 -0
- package/agents/security-reviewer.md +151 -0
- package/agents/self-improvement-architect.md +125 -0
- package/agents/synthesis-critic.md +99 -0
- package/agents/transcript-pattern-miner.md +165 -0
- package/agents/ui-validator.md +193 -0
- package/codex-skills/build-loop/SKILL.md +20 -0
- package/codex-skills/debug-loop/SKILL.md +18 -0
- package/codex-skills/handoff/SKILL.md +22 -0
- package/codex-skills/knowledge/SKILL.md +21 -0
- package/codex-skills/optimize/SKILL.md +18 -0
- package/codex-skills/research/SKILL.md +18 -0
- package/commands/agent-rally-point.md +301 -0
- package/commands/assess.md +41 -0
- package/commands/debug.md +20 -0
- package/commands/debugger-detail.md +34 -0
- package/commands/debugger-scan.md +15 -0
- package/commands/debugger-status.md +20 -0
- package/commands/debugger.md +32 -0
- package/commands/handoff.md +113 -0
- package/commands/knowledge-review.md +16 -0
- package/commands/optimize.md +31 -0
- package/commands/plan-verify.md +39 -0
- package/commands/promote-experiment.md +129 -0
- package/commands/research.md +22 -0
- package/commands/run.md +12 -0
- package/commands/self-review.md +51 -0
- package/commands/start-prd.md +57 -0
- package/commands/test.md +34 -0
- package/dist/src/assessment-orchestrator.d.ts +78 -0
- package/dist/src/assessment-orchestrator.d.ts.map +1 -0
- package/dist/src/assessment-orchestrator.js +304 -0
- package/dist/src/assessment-orchestrator.js.map +1 -0
- package/dist/src/audit-miner.d.ts +21 -0
- package/dist/src/audit-miner.d.ts.map +1 -0
- package/dist/src/audit-miner.js +421 -0
- package/dist/src/audit-miner.js.map +1 -0
- package/dist/src/batch-operations.d.ts +30 -0
- package/dist/src/batch-operations.d.ts.map +1 -0
- package/dist/src/batch-operations.js +339 -0
- package/dist/src/batch-operations.js.map +1 -0
- package/dist/src/config.d.ts +83 -0
- package/dist/src/config.d.ts.map +1 -0
- package/dist/src/config.js +176 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/context-engine.d.ts +45 -0
- package/dist/src/context-engine.d.ts.map +1 -0
- package/dist/src/context-engine.js +135 -0
- package/dist/src/context-engine.js.map +1 -0
- package/dist/src/debug-wrapper.d.ts +58 -0
- package/dist/src/debug-wrapper.d.ts.map +1 -0
- package/dist/src/debug-wrapper.js +285 -0
- package/dist/src/debug-wrapper.js.map +1 -0
- package/dist/src/index.d.ts +31 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +149 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/interactive-verifier.d.ts +26 -0
- package/dist/src/interactive-verifier.d.ts.map +1 -0
- package/dist/src/interactive-verifier.js +435 -0
- package/dist/src/interactive-verifier.js.map +1 -0
- package/dist/src/lessons.d.ts +59 -0
- package/dist/src/lessons.d.ts.map +1 -0
- package/dist/src/lessons.js +172 -0
- package/dist/src/lessons.js.map +1 -0
- package/dist/src/log-reader.d.ts +39 -0
- package/dist/src/log-reader.d.ts.map +1 -0
- package/dist/src/log-reader.js +291 -0
- package/dist/src/log-reader.js.map +1 -0
- package/dist/src/logger.d.ts +59 -0
- package/dist/src/logger.d.ts.map +1 -0
- package/dist/src/logger.js +328 -0
- package/dist/src/logger.js.map +1 -0
- package/dist/src/parallel-retrieval.d.ts +52 -0
- package/dist/src/parallel-retrieval.d.ts.map +1 -0
- package/dist/src/parallel-retrieval.js +309 -0
- package/dist/src/parallel-retrieval.js.map +1 -0
- package/dist/src/pattern-extractor.d.ts +30 -0
- package/dist/src/pattern-extractor.d.ts.map +1 -0
- package/dist/src/pattern-extractor.js +386 -0
- package/dist/src/pattern-extractor.js.map +1 -0
- package/dist/src/result-aggregator.d.ts +44 -0
- package/dist/src/result-aggregator.d.ts.map +1 -0
- package/dist/src/result-aggregator.js +315 -0
- package/dist/src/result-aggregator.js.map +1 -0
- package/dist/src/retrieval.d.ts +139 -0
- package/dist/src/retrieval.d.ts.map +1 -0
- package/dist/src/retrieval.js +724 -0
- package/dist/src/retrieval.js.map +1 -0
- package/dist/src/setup/auto-setup.d.ts +15 -0
- package/dist/src/setup/auto-setup.d.ts.map +1 -0
- package/dist/src/setup/auto-setup.js +157 -0
- package/dist/src/setup/auto-setup.js.map +1 -0
- package/dist/src/setup/configure-hooks.d.ts +8 -0
- package/dist/src/setup/configure-hooks.d.ts.map +1 -0
- package/dist/src/setup/configure-hooks.js +16 -0
- package/dist/src/setup/configure-hooks.js.map +1 -0
- package/dist/src/setup/create-slash-commands.d.ts +8 -0
- package/dist/src/setup/create-slash-commands.d.ts.map +1 -0
- package/dist/src/setup/create-slash-commands.js +101 -0
- package/dist/src/setup/create-slash-commands.js.map +1 -0
- package/dist/src/setup/index.d.ts +8 -0
- package/dist/src/setup/index.d.ts.map +1 -0
- package/dist/src/setup/index.js +17 -0
- package/dist/src/setup/index.js.map +1 -0
- package/dist/src/setup/inject-claude-md.d.ts +10 -0
- package/dist/src/setup/inject-claude-md.d.ts.map +1 -0
- package/dist/src/setup/inject-claude-md.js +150 -0
- package/dist/src/setup/inject-claude-md.js.map +1 -0
- package/dist/src/setup/uninstall.d.ts +22 -0
- package/dist/src/setup/uninstall.d.ts.map +1 -0
- package/dist/src/setup/uninstall.js +235 -0
- package/dist/src/setup/uninstall.js.map +1 -0
- package/dist/src/storage.d.ts +192 -0
- package/dist/src/storage.d.ts.map +1 -0
- package/dist/src/storage.js +1037 -0
- package/dist/src/storage.js.map +1 -0
- package/dist/src/string-similarity.d.ts +8 -0
- package/dist/src/string-similarity.d.ts.map +1 -0
- package/dist/src/string-similarity.js +57 -0
- package/dist/src/string-similarity.js.map +1 -0
- package/dist/src/traces/adapters/browser.d.ts +69 -0
- package/dist/src/traces/adapters/browser.d.ts.map +1 -0
- package/dist/src/traces/adapters/browser.js +280 -0
- package/dist/src/traces/adapters/browser.js.map +1 -0
- package/dist/src/traces/adapters/index.d.ts +23 -0
- package/dist/src/traces/adapters/index.d.ts.map +1 -0
- package/dist/src/traces/adapters/index.js +67 -0
- package/dist/src/traces/adapters/index.js.map +1 -0
- package/dist/src/traces/adapters/langchain.d.ts +42 -0
- package/dist/src/traces/adapters/langchain.d.ts.map +1 -0
- package/dist/src/traces/adapters/langchain.js +151 -0
- package/dist/src/traces/adapters/langchain.js.map +1 -0
- package/dist/src/traces/adapters/opentelemetry.d.ts +46 -0
- package/dist/src/traces/adapters/opentelemetry.d.ts.map +1 -0
- package/dist/src/traces/adapters/opentelemetry.js +164 -0
- package/dist/src/traces/adapters/opentelemetry.js.map +1 -0
- package/dist/src/traces/adapters/sentry.d.ts +58 -0
- package/dist/src/traces/adapters/sentry.d.ts.map +1 -0
- package/dist/src/traces/adapters/sentry.js +212 -0
- package/dist/src/traces/adapters/sentry.js.map +1 -0
- package/dist/src/traces/index.d.ts +10 -0
- package/dist/src/traces/index.d.ts.map +1 -0
- package/dist/src/traces/index.js +45 -0
- package/dist/src/traces/index.js.map +1 -0
- package/dist/src/traces/storage.d.ts +78 -0
- package/dist/src/traces/storage.d.ts.map +1 -0
- package/dist/src/traces/storage.js +399 -0
- package/dist/src/traces/storage.js.map +1 -0
- package/dist/src/traces/summarizer.d.ts +83 -0
- package/dist/src/traces/summarizer.d.ts.map +1 -0
- package/dist/src/traces/summarizer.js +247 -0
- package/dist/src/traces/summarizer.js.map +1 -0
- package/dist/src/traces/types.d.ts +365 -0
- package/dist/src/traces/types.d.ts.map +1 -0
- package/dist/src/traces/types.js +14 -0
- package/dist/src/traces/types.js.map +1 -0
- package/dist/src/types.d.ts +495 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +27 -0
- package/dist/src/types.js.map +1 -0
- package/docs/agent-surface-policy.md +45 -0
- package/docs/memory-setup.md +226 -0
- package/hooks/_arch_scan_bg.py +88 -0
- package/hooks/_plugin_drift_check_bg.py +85 -0
- package/hooks/_session_start_lib.sh +42 -0
- package/hooks/git/pre-push +141 -0
- package/hooks/hooks.json +126 -0
- package/hooks/post-commit +30 -0
- package/hooks/pre-commit +29 -0
- package/hooks/pre-edit-apppulse.sh +6 -0
- package/hooks/pre-edit-architecture.sh +106 -0
- package/hooks/pre-edit-rally-point.sh +92 -0
- package/hooks/session-start-apppulse.sh +6 -0
- package/hooks/session-start-architecture.sh +10 -0
- package/hooks/session-start-git-hooks.sh +12 -0
- package/hooks/session-start-plugin-drift.sh +27 -0
- package/hooks/session-start-rally-point.sh +44 -0
- package/hooks/session-start-retrieval.sh +24 -0
- package/hooks/session-start-worktree-gc.sh +105 -0
- package/hooks/test_apppulse_hooks.sh +6 -0
- package/hooks/test_rally_point_hooks.sh +388 -0
- package/hooks/test_sec008_hooks.sh +66 -0
- package/package.json +111 -0
- package/scripts/README.md +301 -0
- package/scripts/_db_url.py +61 -0
- package/scripts/_paths.py +445 -0
- package/scripts/blm.py +162 -0
- package/scripts/blm_api.py +263 -0
- package/scripts/check_cache_sync.py +490 -0
- package/scripts/embed_backend.py +475 -0
- package/scripts/install_memory.py +556 -0
- package/scripts/lessons_index/__init__.py +77 -0
- package/scripts/lessons_index/__main__.py +135 -0
- package/scripts/lessons_index/ingest.py +288 -0
- package/scripts/lessons_index/query.py +285 -0
- package/scripts/lessons_index/schema.py +114 -0
- package/scripts/memory_context/__init__.py +610 -0
- package/scripts/memory_graph/__init__.py +393 -0
- package/scripts/project_resolver.py +172 -0
- package/scripts/prune_codex_plugin_cache.py +23 -0
- package/scripts/prune_plugin_cache.py +359 -0
- package/scripts/semantic_index/__init__.py +482 -0
- package/scripts/semantic_index/_bench_hybrid.py +175 -0
- package/scripts/semantic_index/backfill.py +263 -0
- package/scripts/semantic_index/hybrid.py +174 -0
- package/scripts/semantic_index/test_backfill.py +292 -0
- package/scripts/semantic_index/test_hybrid.py +541 -0
- package/scripts/sync_navgator_lessons.py +666 -0
- package/scripts/sync_plugin_cache.py +388 -0
- package/skills/agent-rally-point/SKILL.md +165 -0
- package/skills/agent-rally-watcher/SKILL.md +83 -0
- package/skills/api-registry-bridge/SKILL.md +59 -0
- package/skills/architecture/dead/SKILL.md +56 -0
- package/skills/architecture/impact/SKILL.md +88 -0
- package/skills/architecture/review/SKILL.md +227 -0
- package/skills/architecture/rules/SKILL.md +72 -0
- package/skills/architecture/scan/SKILL.md +79 -0
- package/skills/architecture/trace/SKILL.md +65 -0
- package/skills/attribution-standard/SKILL.md +122 -0
- package/skills/authentication/SKILL.md +81 -0
- package/skills/authentication/references/better-auth-magic-link.md +135 -0
- package/skills/authentication/references/better-auth-setup.md +224 -0
- package/skills/authentication/references/google-calendar-sync.md +278 -0
- package/skills/authentication/references/google-cloud-console.md +159 -0
- package/skills/authentication/references/google-geocoding-directions.md +126 -0
- package/skills/authentication/references/google-lessons-example-web-app.md +177 -0
- package/skills/authentication/references/google-maps.md +162 -0
- package/skills/authentication/references/google-oauth-setup.md +343 -0
- package/skills/authentication/references/google-places.md +173 -0
- package/skills/authentication/references/lessons-example-web-app-better-auth.md +126 -0
- package/skills/authentication/references/resend-email.md +227 -0
- package/skills/authentication/references/resend-otp-magic-link.md +153 -0
- package/skills/authentication/references/supabase-auth.md +172 -0
- package/skills/auto-decision-capture/SKILL.md +419 -0
- package/skills/build-loop/SKILL.md +516 -0
- package/skills/build-loop/detect-plugins.mjs +82 -0
- package/skills/build-loop/eval-guide.md +65 -0
- package/skills/build-loop/fallbacks.md +549 -0
- package/skills/build-loop/phases/fact-check.md +42 -0
- package/skills/build-loop/phases/ui-validation.md +267 -0
- package/skills/build-loop/references/apple-native-planning.md +439 -0
- package/skills/build-loop/references/capability-routing.md +181 -0
- package/skills/build-loop/references/codex-subagents.md +98 -0
- package/skills/build-loop/references/coordination.md +161 -0
- package/skills/build-loop/references/correction-aware-capture.md +177 -0
- package/skills/build-loop/references/independent-auditor.md +72 -0
- package/skills/build-loop/references/intent-capability-pack.md +170 -0
- package/skills/build-loop/references/intent-exploration-prompts.md +96 -0
- package/skills/build-loop/references/leadership.md +72 -0
- package/skills/build-loop/references/memory.md +284 -0
- package/skills/build-loop/references/modular-systems-pack.md +96 -0
- package/skills/build-loop/references/output-style.md +129 -0
- package/skills/build-loop/references/pay-it-forward-arch.md +98 -0
- package/skills/build-loop/references/phase-1-assess.md +218 -0
- package/skills/build-loop/references/phase-2-plan.md +77 -0
- package/skills/build-loop/references/phase-3-execute.md +47 -0
- package/skills/build-loop/references/phase-4-review.md +310 -0
- package/skills/build-loop/references/phase-5-iterate.md +71 -0
- package/skills/build-loop/references/phase-6-learn.md +56 -0
- package/skills/build-loop/references/recent-design-structures.md +274 -0
- package/skills/build-loop/references/refactor-history/ASSESSMENT.md +85 -0
- package/skills/build-loop/references/refactor-history/STANDALONE_TEST_RUN.md +149 -0
- package/skills/build-loop/references/refactor-history/scenarios/01-simple-bugfix.md +32 -0
- package/skills/build-loop/references/refactor-history/scenarios/02-ui-build-with-iteration.md +48 -0
- package/skills/build-loop/references/refactor-history/scenarios/03-multi-failure-escalation.md +60 -0
- package/skills/build-loop/references/refactor-history/scenarios/04-ui-build-ibr-absent.md +51 -0
- package/skills/build-loop/references/refactor-history/scenarios/05-refactor-navgator-absent.md +71 -0
- package/skills/build-loop/references/refactor-history/scenarios/06-recurring-bug-debugger-absent.md +52 -0
- package/skills/build-loop/references/refactor-history/trace-comparison.md +202 -0
- package/skills/build-loop/references/self-recursive-dev.md +77 -0
- package/skills/build-loop/references/self-review.md +232 -0
- package/skills/build-loop/references/ui-io-contract.md +116 -0
- package/skills/build-loop/scanners/audit-design-rules.mjs +476 -0
- package/skills/build-loop/scanners/require-visual-evidence.mjs +239 -0
- package/skills/build-loop/templates/backlog-item.md +35 -0
- package/skills/build-loop/templates/codex-worker-prompt.md +89 -0
- package/skills/build-loop/templates/ui-subagent-prompt.md +179 -0
- package/skills/build-loop/templates/ux-fix-plan.md +40 -0
- package/skills/building-with-deepagents/SKILL.md +195 -0
- package/skills/building-with-deepagents/references/anti-patterns.md +141 -0
- package/skills/building-with-deepagents/references/api-quick-reference.md +184 -0
- package/skills/capabilities/SKILL.md +91 -0
- package/skills/debug-loop/SKILL.md +278 -0
- package/skills/debug-loop/references/convergence-rules.md +145 -0
- package/skills/debug-loop/references/swiftui-macos-clunky-ui-debugger.html +823 -0
- package/skills/debugging/assess/SKILL.md +111 -0
- package/skills/debugging/debug-loop/SKILL.md +231 -0
- package/skills/debugging/memory/SKILL.md +147 -0
- package/skills/debugging/store/SKILL.md +153 -0
- package/skills/debugging-memory/SKILL.md +440 -0
- package/skills/debugging-memory/examples/incident-example.json +67 -0
- package/skills/debugging-memory/references/incident-documentation.md +280 -0
- package/skills/debugging-memory/references/ios-notification-alarm-playbook.md +300 -0
- package/skills/debugging-memory/references/pattern-extraction.md +163 -0
- package/skills/debugging-memory/references/subagent-integration.md +312 -0
- package/skills/defenseclaw-bridge/SKILL.md +156 -0
- package/skills/defenseclaw-bridge/references/dc-config-mapping.md +162 -0
- package/skills/defenseclaw-bridge/references/output-format.md +108 -0
- package/skills/handoff/SKILL.md +94 -0
- package/skills/ibr-bridge/SKILL.md +68 -0
- package/skills/knowledge/SKILL.md +127 -0
- package/skills/knowledge/references/recall-integration.md +83 -0
- package/skills/knowledge/templates/madr-minimal.md +56 -0
- package/skills/knowledge-review/SKILL.md +112 -0
- package/skills/logging-tracer/SKILL.md +202 -0
- package/skills/logging-tracer/references/log-analysis.md +128 -0
- package/skills/logging-tracer/references/stack-templates.md +274 -0
- package/skills/logging-tracer-bridge/SKILL.md +70 -0
- package/skills/mcp-builder/SKILL.md +278 -0
- package/skills/mcp-builder/references/mcp-security.md +106 -0
- package/skills/model-tiering/SKILL.md +216 -0
- package/skills/native-ax-driver/SKILL.md +220 -0
- package/skills/native-ax-driver/scripts/layout_fill.py +222 -0
- package/skills/native-ax-driver/scripts/native_driver.py +495 -0
- package/skills/native-ax-driver/swift/bl-ax-driver/Package.swift +20 -0
- package/skills/native-ax-driver/swift/bl-ax-driver/Sources/main.swift +542 -0
- package/skills/optimize/SKILL.md +202 -0
- package/skills/optimize/profiles.md +61 -0
- package/skills/plan-verify/SKILL.md +115 -0
- package/skills/plan-verify/test-fixtures/example-app-v20-findings.json +27 -0
- package/skills/plan-verify/test-fixtures/example-app-v20.md +42 -0
- package/skills/plan-verify/test-fixtures/example-app-v22-findings.json +15 -0
- package/skills/plan-verify/test-fixtures/example-app-v22.md +1608 -0
- package/skills/plan-verify/test-fixtures/unrelated-good-plan-findings.json +15 -0
- package/skills/plan-verify/test-fixtures/unrelated-good-plan.md +55 -0
- package/skills/plugin-builder/SKILL.md +329 -0
- package/skills/plugin-builder/references/authoritative-sources.md +104 -0
- package/skills/plugin-builder/references/build-loop-phase-guidance.md +94 -0
- package/skills/plugin-builder/references/components-guide.md +221 -0
- package/skills/plugin-builder/references/distribution.md +317 -0
- package/skills/plugin-builder/references/dual-host-claude-codex.md +220 -0
- package/skills/plugin-builder/references/hooks-reference.md +210 -0
- package/skills/plugin-builder/references/manifest-schema.md +111 -0
- package/skills/plugin-builder/references/plugin-hygiene-lessons.md +307 -0
- package/skills/plugin-tests/SKILL.md +94 -0
- package/skills/prd-bridge/SKILL.md +135 -0
- package/skills/research/SKILL.md +80 -0
- package/skills/security-methodology/SKILL.md +105 -0
- package/skills/security-methodology/references/cross-source-matrix.md +77 -0
- package/skills/security-methodology/references/mitre-atlas-starter.md +83 -0
- package/skills/security-methodology/references/nist-600-1-mapping.md +119 -0
- package/skills/security-methodology/references/owasp-agentic-top-10.md +157 -0
- package/skills/security-methodology/references/owasp-llm-top-10.md +144 -0
- package/skills/security-methodology/references/owasp-web-top-10.md +65 -0
- package/skills/self-improve/SKILL.md +298 -0
- package/skills/spec-writing/SKILL.md +548 -0
- package/skills/spec-writing/scripts/check_checklist.py +478 -0
- package/skills/sync-skills/SKILL.md +132 -0
- package/skills/telemetry/SKILL.md +66 -0
- package/skills/ui-design/SKILL.md +75 -0
- package/skills/ui-design/references/design-patterns-multi.md +165 -0
- package/skills/ui-design/references/design-preferences-from-owned-apps.md +150 -0
- package/skills/ui-design/references/evidence-capture-policy.md +55 -0
- package/skills/ui-design/references/ui-guidance-sources.md +330 -0
- package/skills/ui-design/references/universal-design-principles.alt.md +182 -0
- package/skills/ui-design/references/universal-design-principles.md +419 -0
- package/templates/memory/MEMORY.md.template +55 -0
- package/templates/memory/constitution.md.template +64 -0
- package/templates/memory/manifest.json +47 -0
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: debug-loop
|
|
3
|
+
description: Use when a fix didn't hold, `/build-loop:debug` is invoked, the user asks for root cause analysis, memory lookup returns LIKELY_MATCH/WEAK_SIGNAL/NO_MATCH, or Review-B Validate fails. Deep iterative debugging loop — not for known fixes or trivial issues.
|
|
4
|
+
version: 1.1.0
|
|
5
|
+
user-invocable: true
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<!-- SPDX-FileCopyrightText: 2025-2026 Tyrone Ross, Jr <46267523+tyroneross@users.noreply.github.com> | SPDX-License-Identifier: Apache-2.0 -->
|
|
9
|
+
|
|
10
|
+
# Debug Loop — Iterative Root Cause Debugging
|
|
11
|
+
|
|
12
|
+
A 7-phase debugging loop: investigate with structured root-cause methods, hypothesize root cause, implement targeted fix, verify with evidence, score against criteria, pressure-test via critique agent, and report with transparency markers. Iterates up to 5x on failures.
|
|
13
|
+
|
|
14
|
+
## Scope Check
|
|
15
|
+
|
|
16
|
+
Before entering the loop, assess whether it's warranted. The trigger is the **verdict category**, not a numeric score — research shows LLM-assigned confidence scores are poorly calibrated for open-ended tasks (Tian et al., EMNLP 2023; 49-84% calibration error on open-ended generation).
|
|
17
|
+
|
|
18
|
+
- **Skip the loop** if debugging-memory returned `KNOWN_FIX` — apply the fix directly and verify
|
|
19
|
+
- **Skip the loop** for trivial issues: typos, missing imports, obvious config errors where the cause is immediately clear
|
|
20
|
+
- **Enter the loop** when: verdict is `LIKELY_MATCH`, `WEAK_SIGNAL`, or `NO_MATCH`, the user asks for deep investigation, the initial diagnosis feels superficial, or a previous fix attempt didn't hold
|
|
21
|
+
|
|
22
|
+
## Efficiency
|
|
23
|
+
|
|
24
|
+
- Terminal output: current phase, key findings (one line each), status changes, failures. No verbose reasoning
|
|
25
|
+
- Agent context: minimum needed per job. Pass symptom + relevant findings, not full conversation history
|
|
26
|
+
- Load convergence rules reference on demand only when entering iteration
|
|
27
|
+
|
|
28
|
+
## Phase 1: INVESTIGATE — Gather Evidence and Trace Root Cause
|
|
29
|
+
|
|
30
|
+
**Goal**: Understand what's actually failing and why, not just what it looks like.
|
|
31
|
+
|
|
32
|
+
1. **Search debugging memory** — invoke `build-loop:debugging-memory` with the symptom. Note related incidents from local build-loop memory and optional standalone Coding Debugger memory when available.
|
|
33
|
+
2. **Reproduce the issue** — identify exact steps, commands, or conditions that trigger the bug
|
|
34
|
+
3. **Deploy root-cause-investigator agent** — pass the symptom and reproduction steps for causal tree analysis. The agent explores multiple branches (not a single chain), prioritizes by evidence strength, and prunes with evidence
|
|
35
|
+
4. **Research gate** — if the investigator flags unfamiliar error codes, library behavior, or version-specific issues:
|
|
36
|
+
- Search externally (WebSearch, Context7, or documentation)
|
|
37
|
+
- Document what was searched and what was found
|
|
38
|
+
- If search is unavailable, document what SHOULD be searched
|
|
39
|
+
5. **Assess completeness** — does the investigation explain ALL reported symptoms? Check for multi-causal bugs (2+ independent root causes)
|
|
40
|
+
|
|
41
|
+
**Output**: Causal tree (with confirmed and pruned branches), reproduction steps, evidence gathered, research performed
|
|
42
|
+
|
|
43
|
+
### Root-Cause Frameworks
|
|
44
|
+
|
|
45
|
+
Use the lightest framework that fits the failure. Stack frameworks only when the current one stalls.
|
|
46
|
+
|
|
47
|
+
| Framework | Use when | Output |
|
|
48
|
+
|---|---|---|
|
|
49
|
+
| 5 Whys | A symptom has a plausible linear chain and needs a controllable system cause | Five-level why-chain ending in a code, test, config, protocol, or process control |
|
|
50
|
+
| Causal tree / fault tree | Multiple causes could explain the same symptom | Branches with confirming and pruning evidence |
|
|
51
|
+
| Ishikawa / fishbone | The failure may span people/process/code/tooling/data/environment | Category map, then the top 2-3 branches to test |
|
|
52
|
+
| Kepner-Tregoe problem analysis | The issue is intermittent, version-specific, or boundary-sensitive | Is/is-not table: affected/unaffected versions, inputs, users, routes, environments |
|
|
53
|
+
| Differential diagnosis | Several hypotheses look similar from symptoms alone | Ranked hypotheses plus the discriminating test for each |
|
|
54
|
+
| Falsification test | A hypothesis is attractive but under-proven | Smallest test that would disprove it |
|
|
55
|
+
|
|
56
|
+
For hard fixes, record which framework was used and the decisive evidence. The framework is a thinking scaffold, not a report section unless it clarifies the outcome.
|
|
57
|
+
|
|
58
|
+
**Domain root-cause catalogs (read directly + point sub-agents at the PATH):** for SwiftUI/macOS "clunky UI" symptoms — choppy/janky panel resize, drag not tracking the cursor, collapse-snap-back, re-render storms, scrunched panes, Picker/list lag — use `references/swiftui-macos-clunky-ui-debugger.html` (13 discrete Root-Cause→Fix slides with real Swift code: onContinuousHover, two-state DragGesture, HSplitView vs NSViewRepresentable, updateNSView feedback-loop guard, re-render storms, animation placement, view-identity resets, NSViewRepresentable minimal pattern, Instruments workflow). It maps symptom→cause→fix directly (e.g. collapse-snap-back → Slide 9 NSViewRepresentable feedback loop → updateNSView guard). When dispatching an implementer, reference the file by PATH so it reads the full methodology — a structured reference FILE read directly beats pasting prose (a sub-agent then carries only your lossy summary). This catalog fixed an NSSplitView resize regression in one pass after two prior failed attempts (easy-terminal 2026-06-08).
|
|
59
|
+
|
|
60
|
+
## Phase 2: HYPOTHESIZE — State the Root Cause
|
|
61
|
+
|
|
62
|
+
**Goal**: Commit to a specific, testable hypothesis before writing any fix.
|
|
63
|
+
|
|
64
|
+
Start with plain language before implementation detail. State what failed in normal words, then trace visible symptom -> technical failure -> upstream dependency/interface/process failure -> first controllable system failure. Do not use "agent forgot", "agent missed context", or similar actor-blame language as the terminal cause unless you also name the missing system control that allowed it.
|
|
65
|
+
|
|
66
|
+
1. **State the root cause hypothesis** with evidence level:
|
|
67
|
+
- **Strong**: Multiple evidence types (code, logs, reproduction) all point to this cause
|
|
68
|
+
- **Moderate**: Some direct evidence plus reasonable inference
|
|
69
|
+
- **Weak**: Mostly inference, limited direct evidence — consider investigating other branches first
|
|
70
|
+
2. **Predict verification test**: If this hypothesis is correct, what specific test would prove it?
|
|
71
|
+
3. **Predict related symptoms**: What else should be affected if this root cause is real?
|
|
72
|
+
4. **If multiple hypotheses exist**, rank by evidence strength. Pursue the strongest first
|
|
73
|
+
|
|
74
|
+
**Output**: Hypothesis statement, evidence level, prediction test, related symptom predictions
|
|
75
|
+
|
|
76
|
+
## Phase 3: FIX — Implement Targeted Change
|
|
77
|
+
|
|
78
|
+
**Goal**: Make the minimal change that addresses the hypothesized root cause.
|
|
79
|
+
|
|
80
|
+
1. **Fix the root cause, not the symptom** — if you're adding a null check instead of fixing why something is null, you're fixing the symptom
|
|
81
|
+
2. **Minimal changes** — touch only what's needed. Don't refactor, don't improve, don't clean up
|
|
82
|
+
3. **Note exactly what was changed and why** — this becomes the evidence trail
|
|
83
|
+
|
|
84
|
+
**Output**: List of changes with rationale
|
|
85
|
+
|
|
86
|
+
## Phase 4: VERIFY — Test the Fix with Evidence
|
|
87
|
+
|
|
88
|
+
**Goal**: Collect concrete evidence that the fix works.
|
|
89
|
+
|
|
90
|
+
1. **Run the prediction test** from Phase 2 — does it confirm the hypothesis?
|
|
91
|
+
2. **Run the original reproduction steps** — is the symptom gone?
|
|
92
|
+
3. **Run related test suite** — do existing tests still pass?
|
|
93
|
+
4. **Check for regressions** — run broader test suite if available
|
|
94
|
+
5. **Verify related symptom predictions** — are the predicted effects present?
|
|
95
|
+
|
|
96
|
+
Every verification step must produce evidence: command output, test results, or observable behavior. "It should work" is not evidence.
|
|
97
|
+
|
|
98
|
+
**Output**: Evidence for each verification step
|
|
99
|
+
|
|
100
|
+
## Phase 5: SCORE — Evaluate Against Criteria
|
|
101
|
+
|
|
102
|
+
**Goal**: Objective pass/fail assessment with evidence.
|
|
103
|
+
|
|
104
|
+
Score against these criteria:
|
|
105
|
+
|
|
106
|
+
| # | Criterion | Method | Pass Condition | Evidence Required |
|
|
107
|
+
|---|-----------|--------|----------------|-------------------|
|
|
108
|
+
| 1 | Symptom resolved | Reproduction steps | Symptom no longer occurs | Command output or test result |
|
|
109
|
+
| 2 | Tests pass | Test suite | All relevant tests pass | Test runner output |
|
|
110
|
+
| 3 | No regressions | Broader test suite | No new failures introduced | Test runner output |
|
|
111
|
+
| 4 | Root cause addressed | Code review | Fix targets root cause, not symptom | Diff + reasoning |
|
|
112
|
+
| 5 | Hypothesis confirmed | Prediction test | Prediction test passes | Test output |
|
|
113
|
+
|
|
114
|
+
**All criteria must have evidence.** No criterion marked PASS without proof.
|
|
115
|
+
|
|
116
|
+
**If any criterion fails** → enter iteration (Phase 6 rules apply)
|
|
117
|
+
**If all criteria pass** → proceed to critique (Phase 6)
|
|
118
|
+
|
|
119
|
+
**Output**: Scorecard with pass/fail per criterion and evidence
|
|
120
|
+
|
|
121
|
+
## Phase 6: CRITIQUE — Pressure-Test Before Declaring Done
|
|
122
|
+
|
|
123
|
+
**Goal**: Challenge the fix before the user relies on it.
|
|
124
|
+
|
|
125
|
+
1. **Deploy fix-critique agent** with:
|
|
126
|
+
- The symptom
|
|
127
|
+
- The causal tree from investigation (confirmed branch path + pruned branches)
|
|
128
|
+
- The fix (what was changed)
|
|
129
|
+
- The verification evidence
|
|
130
|
+
2. **Evaluate verdict**:
|
|
131
|
+
- **APPROVED** → proceed to REPORT
|
|
132
|
+
- **CHALLENGED** → the concerns become input for the next iteration. Route back to INVESTIGATE with the specific challenges as new investigation targets
|
|
133
|
+
|
|
134
|
+
The critique agent checks 5 things:
|
|
135
|
+
- Root cause vs symptom fix
|
|
136
|
+
- Symptom coverage (similar bugs elsewhere)
|
|
137
|
+
- Regression risk
|
|
138
|
+
- Evidence verification
|
|
139
|
+
- Causal tree consistency
|
|
140
|
+
|
|
141
|
+
## Phase 7: REPORT — Transparent Status
|
|
142
|
+
|
|
143
|
+
**Goal**: Clear, honest summary. No overclaiming.
|
|
144
|
+
|
|
145
|
+
### Transparency Markers
|
|
146
|
+
|
|
147
|
+
Every item in the report gets one marker:
|
|
148
|
+
|
|
149
|
+
- **✅ Verified**: Checked with evidence (test output, reproduction, command results)
|
|
150
|
+
- **⚠️ Assumed**: Believed to be true based on reasoning, but not verified with a test
|
|
151
|
+
- **❓ Unknown**: Not checked at all — explicitly acknowledged gaps
|
|
152
|
+
|
|
153
|
+
### Report Contents
|
|
154
|
+
|
|
155
|
+
1. **Verdict**: Fixed (all criteria pass + critique approved) or Unresolved (iteration limit hit)
|
|
156
|
+
2. **Plain-language failure**: What went wrong in normal words
|
|
157
|
+
3. **Why it happened**: Symptom -> technical failure -> upstream dependency/interface/process failure -> first controllable system failure
|
|
158
|
+
4. **Technical details**: Minimum proof needed to understand the cause
|
|
159
|
+
5. **Tradeoffs and impact**: What improves, what risks remain, and who is affected
|
|
160
|
+
6. **Prevention control**: Durable test, verifier, trace, gate, protocol, or routing rule
|
|
161
|
+
7. **Root cause**: The identified system cause with evidence level
|
|
162
|
+
8. **Causal Tree**: The investigation path — confirmed branches, pruned branches with rejection evidence, any multi-causal findings
|
|
163
|
+
9. **Fix Applied**: What was changed, with rationale
|
|
164
|
+
10. **Scorecard**: Final pass/fail per criterion with evidence
|
|
165
|
+
11. **Research Used**: What was searched externally, what was found, what sources
|
|
166
|
+
12. **Iteration History** (if >1 iteration): What was tried, what failed, what changed between iterations
|
|
167
|
+
13. **Remaining Gaps**: Anything marked ⚠️ or ❓
|
|
168
|
+
|
|
169
|
+
### After Reporting
|
|
170
|
+
|
|
171
|
+
- **Store the incident** as a native `.build-loop/issues/*.md` note for future retrieval
|
|
172
|
+
- **Record the outcome** through standalone Coding Debugger only if that optional plugin supplied the prior incident
|
|
173
|
+
- **Write state** to `.build-loop/debug-loop/scorecard.md`
|
|
174
|
+
|
|
175
|
+
## Iteration Rules
|
|
176
|
+
|
|
177
|
+
When any criterion fails or the critique is CHALLENGED, iterate:
|
|
178
|
+
|
|
179
|
+
1. **Diagnose why the criterion failed** — don't blind retry
|
|
180
|
+
2. **Revise the hypothesis** if verification disproved it
|
|
181
|
+
3. **Create targeted fix plan** for failed criteria only
|
|
182
|
+
4. **Execute fix**
|
|
183
|
+
5. **Re-verify ONLY failed criteria** — don't re-run passing checks
|
|
184
|
+
6. **Re-score and re-critique**
|
|
185
|
+
|
|
186
|
+
### Convergence Detection
|
|
187
|
+
|
|
188
|
+
Load `references/convergence-rules.md` for detailed rules and escalation templates.
|
|
189
|
+
|
|
190
|
+
Summary:
|
|
191
|
+
- **Same hypothesis fails 2x** → escalate to user ("I've tried this approach twice — the hypothesis may be wrong or there's a constraint I'm not seeing")
|
|
192
|
+
- **Fix A breaks criterion B (oscillation)** → flag as coupled issue, present both sides, ask user
|
|
193
|
+
- **3+ criteria fail after a fix** → systemic issue, stop loop and reassess the approach entirely
|
|
194
|
+
- **New regression detected** → fix is causing side effects, reconsider the approach
|
|
195
|
+
- **Hard stop at 5 iterations** → report what's known and what isn't. Never silently loop beyond 5
|
|
196
|
+
|
|
197
|
+
### If stuck — parallel multi-domain assessment
|
|
198
|
+
|
|
199
|
+
When the failure symptom touches multiple layers (e.g. search queries are slow AND results look wrong → database + frontend + API), the linear causal-tree loop can stall. Branch into parallel assessment instead of pursuing one hypothesis serially:
|
|
200
|
+
|
|
201
|
+
1. Invoke `Skill("build-loop:assess")` with the symptom and the current attempt diff. The bundled `assessment-orchestrator` fans out to relevant domain assessors (`api-assessor` / `database-assessor` / `frontend-assessor` / `performance-assessor`) in parallel.
|
|
202
|
+
|
|
203
|
+
2. **Model override**: when invoking from the build-loop orchestrator (Opus 4.7), explicitly pass `model: sonnet` to each domain assessor via the subagent dispatch. Without this override, the assessor agents inherit the orchestrator's tier and you get 4 parallel Opus invocations — wasteful for pattern-matching work that Sonnet handles well. Only escalate individual assessors back to Opus if their initial output flags `confidence: low` or `needs_judgment: true`.
|
|
204
|
+
|
|
205
|
+
3. Aggregate the assessors' ranked findings. The top action becomes the next `HYPOTHESIZE → FIX` plan — feed it back into the loop.
|
|
206
|
+
|
|
207
|
+
When to use parallel assessment vs continuing the linear loop:
|
|
208
|
+
- Symptom is vague or unclear ("app broken", "something is wrong") → parallel
|
|
209
|
+
- Multiple domains may be involved ("search is slow and returns wrong results") → parallel
|
|
210
|
+
- Post-deploy regression with unknown scope → parallel
|
|
211
|
+
- Symptom is sharp and localized to one layer → continue the linear loop
|
|
212
|
+
|
|
213
|
+
### Extended capability — cross-domain assessor escalation
|
|
214
|
+
|
|
215
|
+
If the bundled assessor coverage isn't enough (e.g., the failure crosses a domain build-loop's bundled assessors don't cover well, or you need cross-build coordination), escalate via the native debugging skills:
|
|
216
|
+
|
|
217
|
+
```
|
|
218
|
+
Skill("build-loop:debugging-assess") with input { symptom, scope: "global", calledBy: "debug-loop", reason: "stuck-iteration" }
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
The native skill includes domain-specific assessors (api / database / frontend / performance). It uses build-loop local memory by default and may use standalone Coding Debugger for cross-build memory when available; otherwise it falls back to grep across `.build-loop/issues/` and `.build-loop/feedback.md` with narrower coverage.
|
|
222
|
+
|
|
223
|
+
### State Tracking
|
|
224
|
+
|
|
225
|
+
Write iteration state to `.build-loop/debug-loop/state.json`:
|
|
226
|
+
|
|
227
|
+
```json
|
|
228
|
+
{
|
|
229
|
+
"symptom": "original symptom",
|
|
230
|
+
"iteration": 1,
|
|
231
|
+
"phase": "VERIFY",
|
|
232
|
+
"hypotheses": [
|
|
233
|
+
{
|
|
234
|
+
"iteration": 1,
|
|
235
|
+
"hypothesis": "description",
|
|
236
|
+
"evidence_level": "strong | moderate | weak",
|
|
237
|
+
"result": "confirmed | disproved | partial",
|
|
238
|
+
"evidence": "what was found"
|
|
239
|
+
}
|
|
240
|
+
],
|
|
241
|
+
"scorecard": [
|
|
242
|
+
{
|
|
243
|
+
"criterion": "symptom_resolved",
|
|
244
|
+
"result": "PASS | FAIL",
|
|
245
|
+
"evidence": "summary"
|
|
246
|
+
}
|
|
247
|
+
],
|
|
248
|
+
"critique_verdict": "APPROVED | CHALLENGED | pending",
|
|
249
|
+
"changes_made": ["file:change summary"]
|
|
250
|
+
}
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
Create the directory with `mkdir -p .build-loop/debug-loop/` before writing.
|
|
254
|
+
|
|
255
|
+
## Process Flow
|
|
256
|
+
|
|
257
|
+
```
|
|
258
|
+
MEMORY SEARCH → INVESTIGATE → HYPOTHESIZE → FIX → VERIFY → SCORE
|
|
259
|
+
↓
|
|
260
|
+
All pass? ──yes──→ CRITIQUE ──approved──→ REPORT
|
|
261
|
+
↓ ↓
|
|
262
|
+
no challenged
|
|
263
|
+
↓ ↓
|
|
264
|
+
ITERATE ←──────────────┘
|
|
265
|
+
(up to 5x)
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
## Anti-Patterns to Avoid
|
|
269
|
+
|
|
270
|
+
| Anti-Pattern | What to Do Instead |
|
|
271
|
+
|-------------|-------------------|
|
|
272
|
+
| Accepting the first explanation | Branch first — identify 2+ plausible causes before pursuing any |
|
|
273
|
+
| Fixing the symptom | Trace to root cause, fix there |
|
|
274
|
+
| "This should fix it" | Run the tests, show the output |
|
|
275
|
+
| Retrying the same approach | If it failed once with the same evidence, it'll fail again. Change the hypothesis |
|
|
276
|
+
| Declaring victory without evidence | Every claim needs a ✅/⚠️/❓ marker |
|
|
277
|
+
| Skipping research when stuck | If you don't know why something behaves this way, search for it |
|
|
278
|
+
| Hiding uncertainty | ⚠️ and ❓ are not failures — they're honest. Hiding them is the failure |
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
<!-- SPDX-FileCopyrightText: 2025-2026 Tyrone Ross, Jr <46267523+tyroneross@users.noreply.github.com> | SPDX-License-Identifier: Apache-2.0 -->
|
|
2
|
+
|
|
3
|
+
# Convergence Detection Rules
|
|
4
|
+
|
|
5
|
+
Reference for the debug-loop iteration phase. Load on demand when entering iteration.
|
|
6
|
+
|
|
7
|
+
## Rule 1: Repeated Hypothesis Failure
|
|
8
|
+
|
|
9
|
+
**Trigger**: The same root cause hypothesis fails verification twice with the same or similar evidence.
|
|
10
|
+
|
|
11
|
+
**What it means**: The hypothesis is likely wrong. More of the same fix won't help.
|
|
12
|
+
|
|
13
|
+
**Action**: Escalate to user with this template:
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
I've attempted to fix this issue twice with the same approach:
|
|
17
|
+
|
|
18
|
+
Hypothesis: [what we thought the root cause was]
|
|
19
|
+
Attempt 1: [what was tried, why it failed]
|
|
20
|
+
Attempt 2: [what was tried, why it failed]
|
|
21
|
+
|
|
22
|
+
The evidence suggests this hypothesis may be incorrect, or there's a constraint
|
|
23
|
+
I'm not seeing. Options:
|
|
24
|
+
|
|
25
|
+
1. Investigate a different hypothesis: [alternative if available]
|
|
26
|
+
2. Provide additional context about the system's expected behavior
|
|
27
|
+
3. Narrow the scope to a specific aspect of the problem
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
**Do NOT**: Retry a third time with the same hypothesis. That's the definition of insanity.
|
|
31
|
+
|
|
32
|
+
## Rule 2: Oscillation
|
|
33
|
+
|
|
34
|
+
**Trigger**: Fixing criterion A causes criterion B to fail, and fixing B causes A to fail again.
|
|
35
|
+
|
|
36
|
+
**What it means**: The two criteria have a shared dependency or conflicting requirements. The fixes are fighting each other.
|
|
37
|
+
|
|
38
|
+
**Action**: Flag as coupled issue:
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
I've detected oscillation between two criteria:
|
|
42
|
+
|
|
43
|
+
- Fixing [criterion A] breaks [criterion B]
|
|
44
|
+
- Fixing [criterion B] breaks [criterion A]
|
|
45
|
+
|
|
46
|
+
This suggests a shared dependency or conflicting constraint:
|
|
47
|
+
[describe what the two criteria share]
|
|
48
|
+
|
|
49
|
+
Options:
|
|
50
|
+
|
|
51
|
+
1. Accept a tradeoff: prioritize one criterion over the other
|
|
52
|
+
2. Refactor the shared dependency to support both
|
|
53
|
+
3. Reconsider whether both criteria are correct requirements
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**Do NOT**: Continue alternating fixes. Each iteration makes the code more tangled.
|
|
57
|
+
|
|
58
|
+
## Rule 3: Cascading Failures
|
|
59
|
+
|
|
60
|
+
**Trigger**: 3 or more criteria fail simultaneously after applying a fix (when fewer were failing before).
|
|
61
|
+
|
|
62
|
+
**What it means**: The fix introduced a systemic problem. The root cause may be deeper than expected, or the fix touched a critical path.
|
|
63
|
+
|
|
64
|
+
**Action**: Stop the loop entirely and reassess:
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
Systemic issue detected: [N] criteria now failing (was [M] before the fix).
|
|
68
|
+
|
|
69
|
+
The fix to [what was changed] appears to have broader impact than expected.
|
|
70
|
+
This suggests:
|
|
71
|
+
|
|
72
|
+
1. The root cause is deeper/broader than the current hypothesis
|
|
73
|
+
2. The changed code is on a critical path affecting multiple systems
|
|
74
|
+
3. The approach needs fundamental rethinking
|
|
75
|
+
|
|
76
|
+
Rolling back the fix and reassessing the investigation.
|
|
77
|
+
|
|
78
|
+
New failures introduced:
|
|
79
|
+
- [criterion]: [what went wrong]
|
|
80
|
+
- [criterion]: [what went wrong]
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
**Do NOT**: Try to fix each new failure individually. That's treating symptoms of a bad fix.
|
|
84
|
+
|
|
85
|
+
## Rule 4: Regression Detection
|
|
86
|
+
|
|
87
|
+
**Trigger**: The original symptom is fixed, but the broader test suite reveals new failures that didn't exist before the fix.
|
|
88
|
+
|
|
89
|
+
**What it means**: The fix has unintended side effects. It may be correct for the specific symptom but wrong for the system.
|
|
90
|
+
|
|
91
|
+
**Action**: Flag and evaluate:
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
The original symptom is resolved, but the fix introduced new issues:
|
|
95
|
+
|
|
96
|
+
Original fix: [what was changed]
|
|
97
|
+
New failures:
|
|
98
|
+
- [test/behavior]: [what broke]
|
|
99
|
+
- [test/behavior]: [what broke]
|
|
100
|
+
|
|
101
|
+
Assessment:
|
|
102
|
+
- Are these related to the same root cause? [yes/no + reasoning]
|
|
103
|
+
- Can the fix be adjusted to avoid these regressions? [yes/no + approach]
|
|
104
|
+
- Is a different fix approach needed? [yes/no + alternative]
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
**Do NOT**: Ignore the regressions and declare the bug fixed. A fix that creates new bugs isn't a fix.
|
|
108
|
+
|
|
109
|
+
## Iteration Limit
|
|
110
|
+
|
|
111
|
+
**Hard stop at 5 iterations.** After 5 iterations:
|
|
112
|
+
|
|
113
|
+
1. Report the current state with full transparency markers (✅/⚠️/❓)
|
|
114
|
+
2. List every hypothesis that was tried and why it failed
|
|
115
|
+
3. List what criteria are still failing
|
|
116
|
+
4. Provide the best current understanding of the root cause
|
|
117
|
+
5. Recommend next steps (often: different approach, more context needed, or pair debugging)
|
|
118
|
+
|
|
119
|
+
```
|
|
120
|
+
Debug loop completed 5 iterations without full resolution.
|
|
121
|
+
|
|
122
|
+
Current state:
|
|
123
|
+
✅ Verified: [what we know works]
|
|
124
|
+
⚠️ Partial: [what partially works]
|
|
125
|
+
❓ Unresolved: [what's still failing]
|
|
126
|
+
|
|
127
|
+
Hypotheses tested:
|
|
128
|
+
1. [hypothesis] — [result]
|
|
129
|
+
2. [hypothesis] — [result]
|
|
130
|
+
...
|
|
131
|
+
|
|
132
|
+
Best current understanding: [what we think is happening]
|
|
133
|
+
|
|
134
|
+
Recommended next steps:
|
|
135
|
+
- [specific actionable suggestion]
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## When NOT to Iterate
|
|
139
|
+
|
|
140
|
+
Not every failure needs another loop. Exit early if:
|
|
141
|
+
|
|
142
|
+
- The user provides new information that changes the problem entirely → restart investigation, don't iterate
|
|
143
|
+
- The root cause is confirmed as external (library bug, infrastructure) → report and recommend workaround, don't iterate on code
|
|
144
|
+
- The issue is a known limitation, not a bug → document and close
|
|
145
|
+
- The user says to stop → respect it immediately
|