@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,56 @@
|
|
|
1
|
+
<!-- SPDX-FileCopyrightText: 2025-2026 Tyrone Ross, Jr <46267523+tyroneross@users.noreply.github.com> | SPDX-License-Identifier: Apache-2.0 -->
|
|
2
|
+
|
|
3
|
+
# Phase 6: Learn (full protocol)
|
|
4
|
+
|
|
5
|
+
> Loaded from `skills/build-loop/SKILL.md` summary. Contains the full Learn phase: pattern detection, experimental skill drafting, and sample review sweep.
|
|
6
|
+
|
|
7
|
+
## Phase 6: Learn — Cross-Build Pattern Detection (mandatory; always runs and always reports)
|
|
8
|
+
|
|
9
|
+
**Goal**: detect recurring patterns across recent runs, auto-draft experimental skills/agents to address them, surface them for keep/remove decisions. Closes the loop between "build N times" and "build N+1 is faster because we learned."
|
|
10
|
+
|
|
11
|
+
**Load the `build-loop:self-improve` skill for the full protocol.** (Skill keeps its existing name for backward compatibility; this phase was named "Self-Improvement Review" in v0.2.0 — renamed here to avoid collision with Phase 4 Review.)
|
|
12
|
+
|
|
13
|
+
**Mandatory contract (v0.30.0+).** Every Phase 6 always does three things: (a) dispatches the Haiku detector (cheap), (b) runs `consolidate_memory.py` + `procedural_governance.py --mode detect-patterns` (already unconditional), and (c) emits a `## Learn` outcome line in the Review-G report — even when nothing crosses threshold. Net marginal cost over the prior gated path is one cheap Haiku state-scan per run. The expensive arm (Sonnet draft + Opus signoff) stays conditional on `runs[] >= 3` AND a pattern crossing threshold AND not-deferred. Also user-invokable via `/build-loop:self-improve` to run a scan without a build.
|
|
14
|
+
|
|
15
|
+
Quick flow:
|
|
16
|
+
|
|
17
|
+
1. **Detect** — dispatch `recurring-pattern-detector` (Haiku). Reads **two signal sources**:
|
|
18
|
+
- **Signal 1**: `.build-loop/state.json.runs[]` — emits `phase_failure`, `manual_intervention`, and `security_finding` patterns (real pain signals; `diagnostic_repeat` and `file_churn` were removed to prevent skill sprawl).
|
|
19
|
+
- **Signal 2**: `.build-loop/proposals/enforce-from-retro/*.md` (the post-push retrospective's enforce-candidates) — emits `enforce_recurrence` patterns when the same normalized candidate signature appears across ≥ 2 distinct run-ids. The orchestrator may cite `python3 scripts/enforce_retro_signals.py --workdir "$PWD" --json` as pre-computed input to the agent. This delivers "anything prompted/needed repeatedly → enforce" **across** sessions, not just within one.
|
|
20
|
+
2. **Filter** — keep only `confidence: high` or `count >= 4`; manual interventions at lower threshold. Dedupe against existing active/experimental skill names. Cap 2 artifacts per scan.
|
|
21
|
+
3. **Draft** — for each kept pattern, dispatch `self-improvement-architect` (Sonnet). Writes to `.build-loop/skills/experimental/<name>/SKILL.md` with an A/B Experiment section including `run_id` and `co_applied_experimental_artifacts[]` schema.
|
|
22
|
+
4. **Signoff** — orchestrator (Opus 4.7) reviews each draft: APPROVE / REVISE (1 retry) / DISCARD.
|
|
23
|
+
5. **Sample review sweep** — for artifacts in `.build-loop/skills/experimental/` from prior runs: if `.build-loop/config.json.autoPromote` is true AND effective (non-confounded) sample ≥ 8 AND target met → eligible for promotion. **Promotion is no longer silent.** Each eligible candidate goes through (a) advisory review by `promotion-reviewer` (Opus, agent), (b) async user confirmation via PushNotification + TaskCreate fallback. The reviewer's variance verdict (approve / rethink / new_approach) becomes the body of the notification. Move from `experimental/` to `active/` happens only after the user confirms via `/build-loop:promote-experiment <name>`. Regressions and inconclusive-at-2N write proposals to `.build-loop/proposals/` for user confirmation — never auto-delete.
|
|
24
|
+
|
|
25
|
+
**Promotion-reviewer dispatch protocol** (per advisory-judge design, plan §12 / `agents/promotion-reviewer.md`):
|
|
26
|
+
- For each eligible candidate, dispatch `Agent(subagent_type="build-loop:promotion-reviewer", ...)` with brief fields: `artifact_path`, `experiment_log`, `sample_size`, `target_metric`, `triggering_run_id`, `recent_judge_decisions`.
|
|
27
|
+
- Append the returned verdict object to the run's `judge_decisions[]` via `python3 ${CLAUDE_PLUGIN_ROOT}/scripts/write_run_entry/__main__.py --judge-decisions-json <verdict.json>` (combined with other Phase 4 verdicts if any).
|
|
28
|
+
- Compose the user-facing notification body from the verdict's `variances[]` and `meta_guidance`. Fire `PushNotification` if available; fall back to `TaskCreate` with subject `"[BUILD-LOOP] Promotion candidate <name>: <verdict> — review needed"`.
|
|
29
|
+
- Write a marker file at `.build-loop/proposals/<name>.pending.md` with the verdict + how-to-confirm so the user can resume context later (TTL 14 days; lapsed candidates auto-archive to `.build-loop/proposals/<name>.lapsed.md`).
|
|
30
|
+
- **Do not move the artifact.** The user-invoked `/build-loop:promote-experiment <name>` command performs the move after reading the pending verdict.
|
|
31
|
+
|
|
32
|
+
6. **Notify** — concise synthesis appended to Review sub-step G report, including: (a) removal command for each artifact moved or proposed, (b) for each pending promotion: the reviewer verdict + confirmation command.
|
|
33
|
+
|
|
34
|
+
**Always-run + report gating (v0.30.0)**
|
|
35
|
+
|
|
36
|
+
Phase 6 has NO "skip entirely" condition. Three outcome states cover every run:
|
|
37
|
+
|
|
38
|
+
| State | Trigger | What runs | Review-G `## Learn` line |
|
|
39
|
+
|---|---|---|---|
|
|
40
|
+
| **Accruing** | `runs[] < 3` | Detector + consolidation only (no Sonnet draft) | `Learn: accruing (N/3 runs)` |
|
|
41
|
+
| **Deferred** | debug-only (`closeout: false` in dispatch envelope) OR budget-exhausted (`budget_check` envelope `action == "finalize_and_stop"` at Phase 6 entry) | Detector + consolidation; write `.build-loop/proposals/learn-deferred-<run-id>.md` marker with `{reason, runs_count, budget_action}`; skip Sonnet draft + Opus signoff | `Learn: deferred — <reason>` |
|
|
42
|
+
| **Full** | `runs[] >= 3` AND detector returned a pattern AND not deferred | Detector + consolidation + Sonnet draft + Opus signoff + sample sweep | `Learn: <N> patterns drafted` (or `Learn: 0 patterns above threshold (N runs scanned)` when detector returned nothing) |
|
|
43
|
+
|
|
44
|
+
**Deprecated escape hatch (migration no-op).** `.build-loop/config.json.autoSelfImprove: false` is no longer honored. It is read for migration safety: when present and `false`, the orchestrator appends a one-line `state.json.warnings[]` entry (`"autoSelfImprove: false is deprecated; ignored (migration no-op)"`) and proceeds as if the key were absent. Old user configs do not error. Remove the key at your convenience.
|
|
45
|
+
|
|
46
|
+
**User control (unchanged safety boundary)**:
|
|
47
|
+
- Remove any artifact: `rm -rf .build-loop/skills/experimental/<name>/` or `active/<name>/`
|
|
48
|
+
- Block re-promotion of a name: add it to `.build-loop/skills/.demoted`
|
|
49
|
+
- Inspect tracking: `cat .build-loop/experiments/<name>.jsonl`
|
|
50
|
+
- Promotion to `active/` STILL requires explicit `/build-loop:promote-experiment <name>` (decision-3 safety boundary preserved — auto-promote of unreviewed drafts never happens).
|
|
51
|
+
- Auto-promote defaults to OFF — set `"autoPromote": true` to enable (requires effective sample ≥ 8).
|
|
52
|
+
|
|
53
|
+
**What this phase will NOT do**:
|
|
54
|
+
- Modify the build-loop plugin repo
|
|
55
|
+
- Promote artifacts cross-project without explicit `/build-loop:promote-experiment <name>`
|
|
56
|
+
- Run more than once per build
|
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
<!-- SPDX-FileCopyrightText: 2025-2026 Tyrone Ross, Jr <46267523+tyroneross@users.noreply.github.com> | SPDX-License-Identifier: Apache-2.0 -->
|
|
2
|
+
|
|
3
|
+
# Recent Design Structures
|
|
4
|
+
|
|
5
|
+
Runtime reference for `design-contract-specialist` when choosing UI design direction. This file is a compact structure library, not a style mandate.
|
|
6
|
+
|
|
7
|
+
## Use Rule
|
|
8
|
+
|
|
9
|
+
Pick the structure that fits the current product job, workflow frequency, information density, data shape, platform, and risk. Do not apply a structure because it is recent, rated well, visually attractive, or available in this file.
|
|
10
|
+
|
|
11
|
+
Every Phase 2 `## Design Direction` should record:
|
|
12
|
+
|
|
13
|
+
1. `selected_structure`
|
|
14
|
+
2. `why_it_fits`
|
|
15
|
+
3. `rejected_structure`
|
|
16
|
+
4. `why_rejected`
|
|
17
|
+
5. `source_refs`
|
|
18
|
+
6. `validation_implications`
|
|
19
|
+
|
|
20
|
+
## Selection Axes
|
|
21
|
+
|
|
22
|
+
Classify the surface before choosing structure:
|
|
23
|
+
|
|
24
|
+
| Axis | Questions |
|
|
25
|
+
|---|---|
|
|
26
|
+
| Product job | Is the user operating, deciding, conversing, building, analyzing, configuring, recovering, or learning? |
|
|
27
|
+
| Workflow frequency | Is this a repeated work surface, a one-time onboarding path, or an occasional settings/detail surface? |
|
|
28
|
+
| Data shape | Is the core object a message, list, table, step sequence, chart, document, graph, timeline, or media artifact? |
|
|
29
|
+
| Density | Does the user need scan, compare, decide, or deeply read? |
|
|
30
|
+
| Platform | Web desktop, mobile web, native iOS, macOS, watchOS, or cross-platform? |
|
|
31
|
+
| Risk | Could a wrong click, fake affordance, hidden source, or misleading chart cause harm? |
|
|
32
|
+
|
|
33
|
+
## Structures
|
|
34
|
+
|
|
35
|
+
### 1. Conversational Command Surface
|
|
36
|
+
|
|
37
|
+
Use when the product starts from user intent in natural language but must produce a concrete artifact, decision, skill, or task output.
|
|
38
|
+
|
|
39
|
+
Structure:
|
|
40
|
+
- Header with product identity and one primary action.
|
|
41
|
+
- Two-lane layout: conversation/input lane plus outcome/status lane.
|
|
42
|
+
- Composer is prominent but not the whole product when outputs matter.
|
|
43
|
+
- Suggested prompts are subordinate; they are accelerators, not competing primary actions.
|
|
44
|
+
- Output cards show concrete value, feasibility, or next step.
|
|
45
|
+
|
|
46
|
+
Good fit:
|
|
47
|
+
- AI assistants that build artifacts.
|
|
48
|
+
- Intake-to-plan flows.
|
|
49
|
+
- "Tell me the problem, then ship the output" products.
|
|
50
|
+
|
|
51
|
+
Reject when:
|
|
52
|
+
- The user primarily monitors many standing objects.
|
|
53
|
+
- The user needs direct table/list management more than conversation.
|
|
54
|
+
|
|
55
|
+
Recent refs:
|
|
56
|
+
- `UI Guidance/mockups/evaluation-workbench--v2-01-sunrise-hero.html`
|
|
57
|
+
- `UI Guidance/mockups/evaluation-workbench--v2-02-electric-mint.html`
|
|
58
|
+
- `UI Guidance/mockups/evaluation-workbench--v2-05-bloom-organic.html`
|
|
59
|
+
|
|
60
|
+
### 2. Bento Operating Dashboard
|
|
61
|
+
|
|
62
|
+
Use when the product is a repeated home base with multiple live objects, one central creation/ask action, and several scannable operational tiles.
|
|
63
|
+
|
|
64
|
+
Structure:
|
|
65
|
+
- Hero ask/action tile dominates.
|
|
66
|
+
- Secondary tiles show ledger, active objects, queue, and quick decisions.
|
|
67
|
+
- Use a 12-column grid on desktop; cards span according to importance.
|
|
68
|
+
- Keep the chat/action as one tile, not the whole app.
|
|
69
|
+
- The dashboard should answer: what is active, what changed, what is next, what can I do now?
|
|
70
|
+
|
|
71
|
+
Good fit:
|
|
72
|
+
- Personal operating systems.
|
|
73
|
+
- Product home screens where the user returns often.
|
|
74
|
+
- Workflow dashboards with useful standing state.
|
|
75
|
+
|
|
76
|
+
Reject when:
|
|
77
|
+
- The user has one linear task.
|
|
78
|
+
- The product has no real standing data.
|
|
79
|
+
|
|
80
|
+
Recent refs:
|
|
81
|
+
- `UI Guidance/mockups/evaluation-workbench--v2-04-bento-dashboard.html` (rated yay)
|
|
82
|
+
|
|
83
|
+
### 3. Pipeline Wizard
|
|
84
|
+
|
|
85
|
+
Use when a multi-step process needs visible progress, traceable decisions, and contextual input for each step.
|
|
86
|
+
|
|
87
|
+
Structure:
|
|
88
|
+
- Top stepper with 3-5 named steps.
|
|
89
|
+
- Current step panel owns the main content.
|
|
90
|
+
- Contextual chat/input lives beside or below the current step.
|
|
91
|
+
- Each step exposes criteria, intermediate output, and next action.
|
|
92
|
+
- Final step produces a concrete artifact or decision.
|
|
93
|
+
|
|
94
|
+
Good fit:
|
|
95
|
+
- MCDA, evaluation, diagnosis, onboarding, build pipelines.
|
|
96
|
+
- Workflows where the user should understand why the next step exists.
|
|
97
|
+
|
|
98
|
+
Reject when:
|
|
99
|
+
- Steps are decorative or could be one form.
|
|
100
|
+
- The user needs fast repeated scanning instead of guidance.
|
|
101
|
+
|
|
102
|
+
Recent refs:
|
|
103
|
+
- `UI Guidance/mockups/evaluation-workbench--v2-03-pipeline-wizard.html`
|
|
104
|
+
|
|
105
|
+
### 4. Outcome Ledger List
|
|
106
|
+
|
|
107
|
+
Use when the user needs to scan a collection of prior decisions, jobs, skills, or outcomes and understand value quickly.
|
|
108
|
+
|
|
109
|
+
Structure:
|
|
110
|
+
- Summary/ledger hero at top.
|
|
111
|
+
- Filter chips directly below the hero.
|
|
112
|
+
- List cards include title, category/status, primary outcome metric, and next affordance.
|
|
113
|
+
- Rows must be scannable in about 2 seconds.
|
|
114
|
+
- Empty state preserves layout height and names what will appear.
|
|
115
|
+
|
|
116
|
+
Good fit:
|
|
117
|
+
- Decision history, saved automations, skill libraries, task queues, project ledgers.
|
|
118
|
+
|
|
119
|
+
Reject when:
|
|
120
|
+
- The collection has no reliable outcome metric.
|
|
121
|
+
- Detail reading is more important than list scanning.
|
|
122
|
+
|
|
123
|
+
Recent refs:
|
|
124
|
+
- `UI Guidance/mockups/evaluation-workbench--v2-06-decisions-list-fun.html`
|
|
125
|
+
|
|
126
|
+
### 5. Pyramid Detail Page
|
|
127
|
+
|
|
128
|
+
Use when a detail view must replace a wall of text with a decision-first hierarchy.
|
|
129
|
+
|
|
130
|
+
Structure:
|
|
131
|
+
- Hero states the primary outcome in plain language.
|
|
132
|
+
- Three MECE supporting cards explain why.
|
|
133
|
+
- This-week/current-impact section makes near-term value concrete.
|
|
134
|
+
- Paired paths section shows viable alternatives without nudging.
|
|
135
|
+
- MCDA/math/provenance sit under disclosure.
|
|
136
|
+
- Keep no more than 5 major chunks visible at once.
|
|
137
|
+
|
|
138
|
+
Good fit:
|
|
139
|
+
- Decision details, recommendation details, audit explanations, strategy outputs.
|
|
140
|
+
|
|
141
|
+
Reject when:
|
|
142
|
+
- The user needs raw source review as the primary job.
|
|
143
|
+
- There is no actual decision, outcome, or rationale to explain.
|
|
144
|
+
|
|
145
|
+
Recent refs:
|
|
146
|
+
- `UI Guidance/mockups/evaluation-workbench--v2-07-detail-fun.html`
|
|
147
|
+
|
|
148
|
+
### 6. Glass Workspace
|
|
149
|
+
|
|
150
|
+
Use for data-rich professional tools where the user manages structured information and needs craft without losing density.
|
|
151
|
+
|
|
152
|
+
Structure:
|
|
153
|
+
- Sidebar or stable navigation when object count is high.
|
|
154
|
+
- Left-border accent as category/status signal.
|
|
155
|
+
- Source dot plus text metadata, not separate badge clutter.
|
|
156
|
+
- Card grid uses `repeat(auto-fill, minmax(300-320px, 1fr))` at desktop.
|
|
157
|
+
- Optional third detail pane at 280-320px for focused review.
|
|
158
|
+
|
|
159
|
+
Good fit:
|
|
160
|
+
- Developer tools, knowledge bases, dashboards, pipeline monitors.
|
|
161
|
+
|
|
162
|
+
Reject when:
|
|
163
|
+
- The surface is mobile-first, reading-heavy, or calm/clinical.
|
|
164
|
+
- Glass effects would reduce contrast or obscure content.
|
|
165
|
+
|
|
166
|
+
Recent refs:
|
|
167
|
+
- `UI Guidance/cross-platform-design-patterns.md`
|
|
168
|
+
- `UI Guidance/aurora-deep.md`
|
|
169
|
+
- `UI Guidance/aurora-glass.md`
|
|
170
|
+
|
|
171
|
+
### 7. Warm Craft Workbench
|
|
172
|
+
|
|
173
|
+
Use for reflective writing, document work, knowledge organization, or human-feeling tools where warmth helps trust and comprehension.
|
|
174
|
+
|
|
175
|
+
Structure:
|
|
176
|
+
- Warm neutral base with restrained amber/coral accents.
|
|
177
|
+
- Left accent bar connects cards, navigation, and section headers.
|
|
178
|
+
- Sectioned sidebar or grouped content blocks.
|
|
179
|
+
- Generous but structured spacing.
|
|
180
|
+
- Texture is enhancement only; content structure must work without it.
|
|
181
|
+
|
|
182
|
+
Good fit:
|
|
183
|
+
- Writing tools, personal knowledge systems, review surfaces, human-in-the-loop planning.
|
|
184
|
+
|
|
185
|
+
Reject when:
|
|
186
|
+
- The user needs dense operational monitoring.
|
|
187
|
+
- Warm palette could make risk, status, or urgency ambiguous.
|
|
188
|
+
|
|
189
|
+
Recent refs:
|
|
190
|
+
- `UI Guidance/warm-craft.md`
|
|
191
|
+
- `UI Guidance/cross-platform-design-patterns.md`
|
|
192
|
+
|
|
193
|
+
### 8. Data Narrative
|
|
194
|
+
|
|
195
|
+
Use when the UI presents research, trends, news, benchmarks, or evidence and needs to tell the user what matters before showing the raw data.
|
|
196
|
+
|
|
197
|
+
Structure:
|
|
198
|
+
- Decision-first title or subtitle above every chart.
|
|
199
|
+
- Dark atmospheric hero is allowed only when it introduces the domain; dense content should move to a readable light or neutral area.
|
|
200
|
+
- Bento/grid sections can organize evidence, but every chart needs a reason to exist.
|
|
201
|
+
- Source attribution is visible near the chart or section.
|
|
202
|
+
|
|
203
|
+
Good fit:
|
|
204
|
+
- Market research, briefing, analytics, trend reporting, intelligence products.
|
|
205
|
+
|
|
206
|
+
Reject when:
|
|
207
|
+
- The data is too sparse or unreliable.
|
|
208
|
+
- A sentence would communicate the answer better than a chart.
|
|
209
|
+
|
|
210
|
+
Recent refs:
|
|
211
|
+
- `UI Guidance/data-visualization-patterns.md`
|
|
212
|
+
- `UI Guidance/cross-platform-design-patterns.md`
|
|
213
|
+
|
|
214
|
+
### 9. Native Mobile Action System
|
|
215
|
+
|
|
216
|
+
Use for native or mobile-web surfaces where touch certainty, safe areas, and progressive disclosure matter more than desktop density.
|
|
217
|
+
|
|
218
|
+
Structure:
|
|
219
|
+
- One hero CTA per home screen.
|
|
220
|
+
- Touch targets: 44pt/px minimum; primary capture actions can be larger.
|
|
221
|
+
- Every mobile-web touchable has a visible resting container; do not rely on hover/cursor.
|
|
222
|
+
- Expandable cards beat sheets/modals when comparison and context retention matter.
|
|
223
|
+
- Design tokens cover colors, radius, elevation, and typography; raw numbers are exceptions.
|
|
224
|
+
- Haptics, button spring physics, and elevation communicate action feedback on native platforms.
|
|
225
|
+
- Liquid Glass belongs on navigation-layer controls only, availability-gated for iOS 26+, not stacked on content cards.
|
|
226
|
+
|
|
227
|
+
Good fit:
|
|
228
|
+
- Native iOS/macOS companion apps, mobile web tools, timer/voice/drill/session surfaces.
|
|
229
|
+
|
|
230
|
+
Reject when:
|
|
231
|
+
- The app is desktop-primary and comparison density is the core job.
|
|
232
|
+
- Touch affordance choices would add visual noise to a pointer-first surface.
|
|
233
|
+
|
|
234
|
+
Recent refs:
|
|
235
|
+
- `interface-built-right/mobile-ui/patterns/expandable-card-pattern.md`
|
|
236
|
+
- `interface-built-right/mobile-ui/patterns/design-token-architecture.md`
|
|
237
|
+
- `interface-built-right/mobile-ui/patterns/liquid-glass-ios26.md`
|
|
238
|
+
- `interface-built-right/mobile-ui/lessons/mobile-web-action-affordance.md`
|
|
239
|
+
- `interface-built-right/mobile-ui/lessons/home-screen-simplification.md`
|
|
240
|
+
|
|
241
|
+
### 10. AI Artifact Canvas
|
|
242
|
+
|
|
243
|
+
Use when the user is generating or editing a durable artifact, not just receiving a chat answer.
|
|
244
|
+
|
|
245
|
+
Structure:
|
|
246
|
+
- Split input/control lane from artifact canvas.
|
|
247
|
+
- Artifact gets stable identity, autosave, status, and version/undo affordance.
|
|
248
|
+
- Regeneration is scoped per section/block when possible.
|
|
249
|
+
- Loading states preserve layout and show phase, not generic spinners.
|
|
250
|
+
- Source/citation/provenance spine stays visible when claims matter.
|
|
251
|
+
|
|
252
|
+
Good fit:
|
|
253
|
+
- Document generation, research briefs, reports, code/spec generation, design drafts.
|
|
254
|
+
|
|
255
|
+
Reject when:
|
|
256
|
+
- Output is disposable or single-turn.
|
|
257
|
+
- The product has no artifact lifecycle.
|
|
258
|
+
|
|
259
|
+
Recent refs:
|
|
260
|
+
- UI-guidance memory family: AI-generation UX additions, source-grounded trust, semantic zoom.
|
|
261
|
+
|
|
262
|
+
## Cross-Cutting Rules
|
|
263
|
+
|
|
264
|
+
- Typography and text hierarchy come before surface treatment.
|
|
265
|
+
- Color tokens come before gradients, shadows, texture, or glass.
|
|
266
|
+
- Left-border accents are useful categorical structure, but not mandatory on every product.
|
|
267
|
+
- Status should not be a decorative pill by default; use text, weight, and placement unless a platform/system component requires a badge.
|
|
268
|
+
- Charts require a confidence gate: at least 3 comparable points, trustworthy source, and a pattern/comparison/trend that text alone would not communicate as well.
|
|
269
|
+
- Motion is final polish and must respect reduced-motion settings.
|
|
270
|
+
- Empty, loading, error, disabled, success, permission, and overflow states are part of the structure, not afterthoughts.
|
|
271
|
+
|
|
272
|
+
## Long-Term Memory Boundary
|
|
273
|
+
|
|
274
|
+
This file is the short-horizon runtime reference. Durable cross-project lessons, rating history, and changes over time live in `build-loop-memory`, especially decisions under `decisions/build-loop/`. Update build-loop-memory when a new structure is repeatedly used, explicitly selected/rejected, or materially changes build-loop's design-selection policy.
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
<!-- SPDX-FileCopyrightText: 2025-2026 Tyrone Ross, Jr <46267523+tyroneross@users.noreply.github.com> | SPDX-License-Identifier: Apache-2.0 -->
|
|
2
|
+
|
|
3
|
+
# Assessment: 9→5 Phase Refactor (PR #4)
|
|
4
|
+
|
|
5
|
+
**Date**: 2026-04-20
|
|
6
|
+
**Branch**: `feat/5-phase-refactor` (stacked on #3 → #2 → #1)
|
|
7
|
+
**Scope**: verify the refactor is safe to merge by comparing old vs new behavior across three representative scenarios, and confirm the bridge-cherry-pick principle holds.
|
|
8
|
+
|
|
9
|
+
## Method
|
|
10
|
+
|
|
11
|
+
Sandbox traces, not live execution. The installed build-loop plugin is still pre-PR-1 (no Phase 9, no bridges), so actually running `/build-loop` wouldn't exercise the new flow. Instead, three scenario fixtures with expected orchestration traces under OLD 9-phase vs NEW 5-phase, annotated for fidelity and any behavior changes.
|
|
12
|
+
|
|
13
|
+
## Scenarios
|
|
14
|
+
|
|
15
|
+
| # | Scenario | Plugins | Expected iterations | Sub-steps exercised |
|
|
16
|
+
|---|---|---|---|---|
|
|
17
|
+
| 1 | Simple bugfix | none | 0 | A, B, D, F |
|
|
18
|
+
| 2 | UI build with one Iterate cycle | IBR, debugger | 1 | A, B (×2), D, E, F |
|
|
19
|
+
| 3 | Multi-failure w/ logging-tracer rescue | NavGator, debugger | 2 | A, B (×3), C, D, E, F + logging-tracer bridge + debugger bridge |
|
|
20
|
+
|
|
21
|
+
Details: `scenarios/01`, `scenarios/02`, `scenarios/03`. Side-by-side traces: `traces/comparison.md`.
|
|
22
|
+
|
|
23
|
+
## Fidelity checks (all 3 scenarios)
|
|
24
|
+
|
|
25
|
+
Every old-flow artifact has a new-flow equivalent:
|
|
26
|
+
|
|
27
|
+
| Old artifact | New location | Preserved? |
|
|
28
|
+
|---|---|---|
|
|
29
|
+
| Phase 1 state summary + Phase 2 goal.md | Phase 1 Assess (combined) | ✅ |
|
|
30
|
+
| Phase 3 plan | Phase 2 Plan | ✅ |
|
|
31
|
+
| Phase 4 implementer diff | Phase 3 Execute | ✅ |
|
|
32
|
+
| Phase 4.5 critic output | Review sub-step A | ✅ — same agent (`sonnet-critic`) |
|
|
33
|
+
| Phase 4.7 optimize results | Review sub-step C | ✅ — opt-in preserved |
|
|
34
|
+
| Phase 5 scorecard | Review sub-step B evidence | ✅ |
|
|
35
|
+
| Phase 7 fact-check + mock-scan + navgator rules | Review sub-step D (three parallel gates) | ✅ |
|
|
36
|
+
| Phase 8 scorecard file + state.json append | Review sub-step F | ✅ — same paths |
|
|
37
|
+
| Phase 8.5 simplified diff | Review sub-step E | ✅ |
|
|
38
|
+
| Phase 9 REVIEW (self-improve) | Phase 6 Learn | ✅ — skill file name preserved (`build-loop:self-improve`) |
|
|
39
|
+
| Iterate loop back to Validate | Iterate → Review-B | ✅ — identical convergence rules |
|
|
40
|
+
|
|
41
|
+
**Zero silent eliminations.** Two intentional semantic changes documented below.
|
|
42
|
+
|
|
43
|
+
## Intentional behavior changes (not regressions)
|
|
44
|
+
|
|
45
|
+
1. **Critic (A) skips on re-runs of Review after Iterate, unless Iterate touched different files.** Saves tokens on unchanged scope review. Old flow ran CRITIC Phase 4.5 only once pre-Validate anyway; new flow preserves that timing but makes it explicit for Iterate loops.
|
|
46
|
+
|
|
47
|
+
2. **Simplify (E) runs BEFORE Report (F), not after.** Old flow: Phase 8.5 Simplify ran after Phase 8 Report — scorecard reflected pre-simplified diff. New flow: scorecard reflects the actually-shipped diff. Arguably a correctness improvement.
|
|
48
|
+
|
|
49
|
+
3. **Iterate loops back to Review-B (Validate), not to its own re-validation.** Cleaner separation: Iterate = fix; Review = evaluate. Same convergence rules, same 5-attempt cap, same debugger escalation ladder.
|
|
50
|
+
|
|
51
|
+
## Bridge cherry-pick audit (criterion C4)
|
|
52
|
+
|
|
53
|
+
Source grep for embedded logic vs delegation:
|
|
54
|
+
|
|
55
|
+
**navgator-bridge:** no function/class definitions. Only filesystem reads (`.navgator/architecture/*.json`) + CLI delegation (`navgator impact`, `rules`, `llm-map`, `dead`). Writes only to its own `state.json.navgator.*` namespace. ✅ cherry-pick clean.
|
|
56
|
+
|
|
57
|
+
**debugger-bridge:** no function/class definitions. Only MCP delegation (`mcp__plugin_claude_code_debugger__{search,store,outcome,read_logs,list}`) + skill invocation (`build-loop:{debugging-memory,assess,debug-loop}`). Writes only to its own `state.json.debuggerGates.*` namespace. ✅ cherry-pick clean.
|
|
58
|
+
|
|
59
|
+
**logging-tracer-bridge:** contains inline Tier-1 helper code (5-8 lines per language: Node, Python, Go, Rust). This is the fallback when `availablePlugins.claudeCodeDebugger` is false. When upstream IS available, bridge delegates (line 54 of SKILL.md). Tier 2 and Tier 3 are explicitly documented as requiring upstream. ✅ graceful degradation, not embedding.
|
|
60
|
+
|
|
61
|
+
All three now have an explicit `## Cherry-pick principle` block (added in this commit) documenting what the bridge does and does not do.
|
|
62
|
+
|
|
63
|
+
## Verdict
|
|
64
|
+
|
|
65
|
+
| Criterion | Result |
|
|
66
|
+
|---|---|
|
|
67
|
+
| C1 Three scenarios covering diverse loop paths | ✅ |
|
|
68
|
+
| C2 Old vs new traces side-by-side | ✅ |
|
|
69
|
+
| C3 No silent regressions (fidelity check) | ✅ |
|
|
70
|
+
| C4 Bridges cherry-pick, don't embed | ✅ |
|
|
71
|
+
| C5 Each bridge states cherry-pick principle explicitly | ✅ |
|
|
72
|
+
| C6 Amend PR #4 if C3/C4 fail | N/A (both passed) |
|
|
73
|
+
|
|
74
|
+
**PR #4 safe to merge on sandbox evidence.** Next validation requires live consumer `/build-loop` execution — flagged as known gap in PR #4 body already.
|
|
75
|
+
|
|
76
|
+
## Residual cleanup (known, not blocking)
|
|
77
|
+
|
|
78
|
+
Secondary files still reference old phase numbers in spots:
|
|
79
|
+
- `skills/build-loop/fallbacks.md`
|
|
80
|
+
- `skills/build-loop/eval-guide.md`
|
|
81
|
+
- `skills/build-loop/phases/fact-check.md`
|
|
82
|
+
- `skills/optimize/SKILL.md`
|
|
83
|
+
- `commands/optimize.md`
|
|
84
|
+
|
|
85
|
+
Meanings still work (e.g., "during validation" reads correctly either way), but labels don't match new canonical names. Low-priority follow-up, not blocking for #4.
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
<!-- SPDX-FileCopyrightText: 2025-2026 Tyrone Ross, Jr <46267523+tyroneross@users.noreply.github.com> | SPDX-License-Identifier: Apache-2.0 -->
|
|
2
|
+
|
|
3
|
+
# Standalone Fallback Test Run — Live Output
|
|
4
|
+
|
|
5
|
+
**Date**: 2026-04-20
|
|
6
|
+
**Method**: Run each fallback's actual grep/git commands against real projects. This is not a trace simulation — the commands were executed and the output captured below.
|
|
7
|
+
|
|
8
|
+
## 1. `fallbacks.md#web-ui` against example-app
|
|
9
|
+
|
|
10
|
+
Target: `<example-app-repo>` — real Next.js app with `components/` and `app/` directories, no IBR installed at scan time. 5 of the 10 grep checks spot-checked.
|
|
11
|
+
|
|
12
|
+
### Check 1: Gestalt violations (borders on `.map()` items)
|
|
13
|
+
```
|
|
14
|
+
grep -rn "\.map(" --include="*.tsx" --include="*.jsx" components/ app/ | grep -B1 -A5 "border\|rounded-"
|
|
15
|
+
```
|
|
16
|
+
**Result**: 0 matches in spot sample. (Narrower grep heuristic; a full scan against the `git diff` scope would catch more.)
|
|
17
|
+
|
|
18
|
+
### Check 3: Buttons missing onClick/submit
|
|
19
|
+
```
|
|
20
|
+
grep -rnE "<button[^>]*>" --include="*.tsx" --include="*.jsx" components/ app/ | grep -v "onClick\|type=.submit.\|type=.reset."
|
|
21
|
+
```
|
|
22
|
+
**Result**: **9 real matches**. Actionable findings:
|
|
23
|
+
|
|
24
|
+
- `components/v3/V3FeedPage.tsx:1024` — `<button className="text-sm hover:text-blue-300">Save All</button>`
|
|
25
|
+
- `components/v3/V3FeedPage.tsx:1025` — `<button ...>Export</button>`
|
|
26
|
+
- `components/v3/V3FeedPage.tsx:1026` — `<button ...>Hide All</button>`
|
|
27
|
+
- `components/SearchTimeline.tsx:152` — `<button ...>See all</button>` (inferred from context)
|
|
28
|
+
- `components/GroupedLayout.tsx:79`, `components/TrendingEntities.tsx:85`, `components/SidebarLayout.tsx:82`, `components/TabViewLayout.tsx:114`, `app/versions/claude-session/page.tsx:420`
|
|
29
|
+
|
|
30
|
+
Three "Save All" / "Export" / "Hide All" buttons with no onClick — **these are real production bugs**. The fallback surfaced them.
|
|
31
|
+
|
|
32
|
+
### Check 5: Icon-only buttons missing aria-label
|
|
33
|
+
**Result**: 0 matches — example-app is clean on this.
|
|
34
|
+
|
|
35
|
+
### Check 9: Console leftovers in production paths
|
|
36
|
+
```
|
|
37
|
+
grep -rnE "console\.(log|error|warn|debug)" --include="*.ts" --include="*.tsx" components/ app/ | grep -v "\.test\.\|\.spec\.\|__tests__/"
|
|
38
|
+
```
|
|
39
|
+
**Result**: 5 real matches. Actionable findings:
|
|
40
|
+
|
|
41
|
+
- `components/visualization/ChartDecisionEngine.ts:390` — `console.log('[ChartDecisionEngine] Timeline intent detected...')`
|
|
42
|
+
- `components/visualization/FactsChart.tsx:411` — `console.log('[FactsChart] Timeline intent detected...')`
|
|
43
|
+
- `components/PyramidSummary.tsx:81` — `console.log('[PyramidSummary] Parsed markdown pyramid:', ...)`
|
|
44
|
+
- `components/settings/SettingsPanel.tsx:112` + `:140` — `console.error('Failed to ...:', error)` (arguably OK for error paths, flag as warning)
|
|
45
|
+
|
|
46
|
+
### Summary — `#web-ui`
|
|
47
|
+
|
|
48
|
+
| Check | Matches | False positives | Real bugs |
|
|
49
|
+
|---|---|---|---|
|
|
50
|
+
| Gestalt borders | 0 | — | 0 |
|
|
51
|
+
| Touch targets | skipped (Tailwind class-based, needs second pass) | — | — |
|
|
52
|
+
| Button handlers | 9 | 0 (all real) | 3 clear bugs (Save/Export/Hide) + 6 likely bugs |
|
|
53
|
+
| Anchors | skipped | — | — |
|
|
54
|
+
| Icon aria-label | 0 | — | 0 |
|
|
55
|
+
| Status pills | skipped | — | — |
|
|
56
|
+
| Hex colors | skipped | — | — |
|
|
57
|
+
| Non-8pt spacing | skipped | — | — |
|
|
58
|
+
| Console leftovers | 5 | 2 (error paths) | 3 clear (log in production) |
|
|
59
|
+
| Mock data | skipped | — | — |
|
|
60
|
+
|
|
61
|
+
**Verdict**: fallback catches real bugs. Precision > 80% on the two checks run. Not browser-driven — IBR would catch more (hydration, computed CSS, render errors) — but this is 10× better than "skip silently."
|
|
62
|
+
|
|
63
|
+
## 2. `fallbacks.md#architecture` against build-loop repo
|
|
64
|
+
|
|
65
|
+
Target: build-loop itself, with 20 files changed on `feat/5-phase-refactor` vs main.
|
|
66
|
+
|
|
67
|
+
### Check 1: Changed files
|
|
68
|
+
```
|
|
69
|
+
git diff --name-only origin/main..HEAD
|
|
70
|
+
```
|
|
71
|
+
**Result**: 20 files, all enumerated cleanly.
|
|
72
|
+
|
|
73
|
+
### Check 2: Layer classification
|
|
74
|
+
**Result**: (adapted case statement for plugin repo — the default fallback is web-app-centric)
|
|
75
|
+
|
|
76
|
+
| Layer | Count |
|
|
77
|
+
|---|---|
|
|
78
|
+
| skill (skills/*/SKILL.md) | 5 |
|
|
79
|
+
| agent (agents/*.md) | 5 |
|
|
80
|
+
| command | 1 |
|
|
81
|
+
| docs | 5 |
|
|
82
|
+
| root-doc | 4 |
|
|
83
|
+
|
|
84
|
+
Clean categorization. Note: the fallback's default layer classification is web-app-centric (`src/db/*`, `src/api/*`, etc.) — didn't match this plugin repo perfectly. For non-web-app targets, the fallback falls back to "other." Documented as a known limitation.
|
|
85
|
+
|
|
86
|
+
### Check 4: Git-churn hotspots (last 100 commits)
|
|
87
|
+
```
|
|
88
|
+
git log --pretty=format: --name-only -100 | sort | uniq -c | sort -rn | head
|
|
89
|
+
```
|
|
90
|
+
**Result**:
|
|
91
|
+
```
|
|
92
|
+
16 skills/build-loop/SKILL.md
|
|
93
|
+
14 agents/build-orchestrator.md
|
|
94
|
+
7 skills/debugger-bridge/SKILL.md
|
|
95
|
+
6 README.md
|
|
96
|
+
6 CLAUDE.md
|
|
97
|
+
5 skills/navgator-bridge/SKILL.md
|
|
98
|
+
5 .claude-plugin/plugin.json
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
Hotspots match intuition: the two most-edited files in the refactor (SKILL.md and build-orchestrator.md) are correctly identified as hotspots. **This is exactly the signal Plan would use to chunk the work.**
|
|
102
|
+
|
|
103
|
+
### Summary — `#architecture`
|
|
104
|
+
|
|
105
|
+
**Verdict**: produces real signal. Git-churn hotspot detection is solid. Layer classification is limited by the web-app-centric case statement — works great for typical Next.js / Express apps, falls back gracefully for plugin/docs repos. For build-loop-on-build-loop (meta), the fallback says "other" a lot, which is honest.
|
|
106
|
+
|
|
107
|
+
## 3. `fallbacks.md#bug-memory` against build-loop's `.build-loop/feedback.md`
|
|
108
|
+
|
|
109
|
+
Simulated symptom: "YAML frontmatter invalid — description has unquoted colons" (the actual Codex adversarial-review finding from earlier in this session).
|
|
110
|
+
|
|
111
|
+
### Token extraction
|
|
112
|
+
```
|
|
113
|
+
echo "YAML frontmatter invalid description has unquoted colons" | tr ' ' '\n' | grep -E '^[A-Z][a-zA-Z]+$|...'
|
|
114
|
+
```
|
|
115
|
+
**Result**: `YAML, invalid`
|
|
116
|
+
|
|
117
|
+
### Grep matches
|
|
118
|
+
**Result**: `.build-loop/feedback.md` matched. Actual content retrieved:
|
|
119
|
+
|
|
120
|
+
```
|
|
121
|
+
2026-04-20 | Hardening-validation build-loop run found 4 residual "8-phase" refs missed by previous 9-phase doc sweep | Add a pre-commit check that greps for "8-phase"|"eight phase" whenever .build-loop/goal.md references phase counts, so canonical phase-count drift surfaces before commit.
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
The fallback surfaced a relevant prior lesson (the hardening run that caught residual refs — analogous situation).
|
|
125
|
+
|
|
126
|
+
### Verdict (4-state)
|
|
127
|
+
**Result**: `LOCAL_WEAK` — 1-2 tokens matched. Would be referenced in the Iterate plan but not direct-applied.
|
|
128
|
+
|
|
129
|
+
### Summary — `#bug-memory`
|
|
130
|
+
|
|
131
|
+
**Verdict**: works. Produces a verdict in the correct shape (4 states mirroring upstream). Returns meaningful context from `feedback.md` when tokens hit. `LOCAL_NO_MATCH` when empty — no false-positive reuse.
|
|
132
|
+
|
|
133
|
+
## Overall assessment
|
|
134
|
+
|
|
135
|
+
All three fallbacks were executed live against real targets and produced actionable output:
|
|
136
|
+
|
|
137
|
+
- **web-ui**: caught 3 clear production bugs + 3 log leftovers in example-app
|
|
138
|
+
- **architecture**: correctly identified the two most-churned files as hotspots in build-loop
|
|
139
|
+
- **bug-memory**: surfaced a relevant prior lesson from `feedback.md`
|
|
140
|
+
|
|
141
|
+
**Nothing was silent that should have fired.** The "skip silently" pre-fallback behavior would have missed all of the above.
|
|
142
|
+
|
|
143
|
+
### Known limitations (called out to users)
|
|
144
|
+
|
|
145
|
+
1. **web-ui Tailwind**: touch-target check only catches explicit `w-*px` attributes, not Tailwind utility classes. Second-pass regex needed.
|
|
146
|
+
2. **architecture layer classification**: web-app-centric. Plugin repos, docs repos, Python projects fall back to "other."
|
|
147
|
+
3. **bug-memory token extraction**: simple regex. Misses multi-word phrases, foreign-language error messages.
|
|
148
|
+
|
|
149
|
+
All three are documented in `fallbacks.md` with the `⚠️ install <plugin> for deeper analysis` flag. Users are never led to believe the fallback replaces the upstream — just that it catches the most common failures.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<!-- SPDX-FileCopyrightText: 2025-2026 Tyrone Ross, Jr <46267523+tyroneross@users.noreply.github.com> | SPDX-License-Identifier: Apache-2.0 -->
|
|
2
|
+
|
|
3
|
+
# Scenario 1: Simple bugfix
|
|
4
|
+
|
|
5
|
+
## Setup
|
|
6
|
+
|
|
7
|
+
- **Project**: mid-size Next.js app, no NavGator, no claude-code-debugger installed
|
|
8
|
+
- **Goal**: "Fix the `TypeError: Cannot read properties of undefined (reading 'email')` in `src/api/users.ts:42`"
|
|
9
|
+
- **Scope**: 1-2 files, ~15 lines
|
|
10
|
+
- **Criteria**:
|
|
11
|
+
1. Tests pass (`npm test`)
|
|
12
|
+
2. Lint clean (`npm run lint`)
|
|
13
|
+
3. No new type errors (`tsc --noEmit`)
|
|
14
|
+
|
|
15
|
+
## Expected failure modes at test time
|
|
16
|
+
|
|
17
|
+
None — single-file fix, plan reveals the bug is an unchecked optional. Implementer fixes on first try.
|
|
18
|
+
|
|
19
|
+
## What should fire
|
|
20
|
+
|
|
21
|
+
- Critic (A) — scope drift check on the diff
|
|
22
|
+
- Validate (B) — tests + lint + type check
|
|
23
|
+
- Fact-Check (D) — no rendered data, mock scan clean
|
|
24
|
+
- Report (F) — scorecard written
|
|
25
|
+
|
|
26
|
+
## What should NOT fire
|
|
27
|
+
|
|
28
|
+
- Iterate (no failures)
|
|
29
|
+
- Memory-first gate (debugger not installed)
|
|
30
|
+
- NavGator sub-steps (NavGator not installed)
|
|
31
|
+
- Optimize (no mechanical metric)
|
|
32
|
+
- Learn (no prior runs)
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
<!-- SPDX-FileCopyrightText: 2025-2026 Tyrone Ross, Jr <46267523+tyroneross@users.noreply.github.com> | SPDX-License-Identifier: Apache-2.0 -->
|
|
2
|
+
|
|
3
|
+
# Scenario 2: UI build with one iteration cycle
|
|
4
|
+
|
|
5
|
+
## Setup
|
|
6
|
+
|
|
7
|
+
- **Project**: Next.js + IBR installed + claude-code-debugger installed (via `availablePlugins`)
|
|
8
|
+
- **Goal**: "Add a dashboard card showing total active users with a sparkline of the last 7 days"
|
|
9
|
+
- **Scope**: 3 files (`DashboardCard.tsx`, `useActiveUsers.ts`, `dashboard.module.css`), ~120 lines
|
|
10
|
+
- **Criteria**:
|
|
11
|
+
1. Tests pass
|
|
12
|
+
2. IBR scan verdict: PASS (no Calm Precision violations)
|
|
13
|
+
3. Lint/type check clean
|
|
14
|
+
4. No mock data in production paths
|
|
15
|
+
|
|
16
|
+
## Expected failure mode at test time
|
|
17
|
+
|
|
18
|
+
First Review pass: Validate (sub-step B) sees the IBR scan flag a `gestalt` violation (the card has individual borders on list items). Routes to Iterate.
|
|
19
|
+
|
|
20
|
+
## What should fire
|
|
21
|
+
|
|
22
|
+
**First Review:**
|
|
23
|
+
- Critic (A) — reviews diff, probably clean
|
|
24
|
+
- Validate (B) — tests pass, but IBR scan flags Gestalt violation → FAIL. Memory-first gate queries debugger for similar UI pattern; verdict `NO_MATCH` (first time).
|
|
25
|
+
- Route to Iterate
|
|
26
|
+
|
|
27
|
+
**Iterate (attempt 1):**
|
|
28
|
+
- Debugger-bridge Iterate step — no evidence_gap, no prior-failure escalation yet
|
|
29
|
+
- Diagnose: "individual borders on list items"
|
|
30
|
+
- Fix plan: consolidate into single outer border, add dividers
|
|
31
|
+
- Execute fix (targeted)
|
|
32
|
+
- Loop back to Review
|
|
33
|
+
|
|
34
|
+
**Second Review:**
|
|
35
|
+
- Critic — skipped (same files, no new scope drift risk)
|
|
36
|
+
- Validate (B) — IBR scan PASS this time
|
|
37
|
+
- Optimize (C) — skipped (no mechanical metric)
|
|
38
|
+
- Fact-Check (D) — no rendered metrics, mock scan clean
|
|
39
|
+
- Simplify (E) — trim any over-abstracted helpers
|
|
40
|
+
- Report (F) — scorecard written; debugger `store` called with the Gestalt fix; `outcome` N/A (no prior memory to evaluate)
|
|
41
|
+
|
|
42
|
+
**Learn (6)**: skipped if < 3 prior runs, else scans `runs[]`.
|
|
43
|
+
|
|
44
|
+
## What should NOT fire
|
|
45
|
+
|
|
46
|
+
- NavGator bridges (not installed)
|
|
47
|
+
- Logging-tracer-bridge repair path (no silent failure)
|
|
48
|
+
- More than 1 iteration cycle
|