@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.
Files changed (389) hide show
  1. package/.agents/plugins/marketplace.json +10 -0
  2. package/.claude-plugin/marketplace.json +38 -0
  3. package/.claude-plugin/plugin.json +30 -0
  4. package/.codex-plugin/plugin.json +41 -0
  5. package/.cursor/rules/build-loop-surface.mdc +22 -0
  6. package/AGENTS.md +498 -0
  7. package/LICENSE +202 -0
  8. package/README.md +403 -0
  9. package/agents/alignment-checker.md +124 -0
  10. package/agents/api-assessor.md +136 -0
  11. package/agents/architecture-scout.md +185 -0
  12. package/agents/assessment-orchestrator.md +163 -0
  13. package/agents/build-orchestrator.md +198 -0
  14. package/agents/database-assessor.md +133 -0
  15. package/agents/design-contract-specialist.md +239 -0
  16. package/agents/fact-checker.md +69 -0
  17. package/agents/fix-critique.md +161 -0
  18. package/agents/frontend-assessor.md +136 -0
  19. package/agents/implementer.md +185 -0
  20. package/agents/independent-auditor.md +143 -0
  21. package/agents/mock-scanner.md +78 -0
  22. package/agents/optimize-runner.md +112 -0
  23. package/agents/overfitting-reviewer.md +96 -0
  24. package/agents/performance-assessor.md +159 -0
  25. package/agents/plan-critic.md +85 -0
  26. package/agents/promotion-reviewer.md +121 -0
  27. package/agents/recurring-pattern-detector.md +248 -0
  28. package/agents/retrospective-synthesizer.md +109 -0
  29. package/agents/root-cause-investigator.md +285 -0
  30. package/agents/scope-auditor.md +121 -0
  31. package/agents/security-reviewer.md +151 -0
  32. package/agents/self-improvement-architect.md +125 -0
  33. package/agents/synthesis-critic.md +99 -0
  34. package/agents/transcript-pattern-miner.md +165 -0
  35. package/agents/ui-validator.md +193 -0
  36. package/codex-skills/build-loop/SKILL.md +20 -0
  37. package/codex-skills/debug-loop/SKILL.md +18 -0
  38. package/codex-skills/handoff/SKILL.md +22 -0
  39. package/codex-skills/knowledge/SKILL.md +21 -0
  40. package/codex-skills/optimize/SKILL.md +18 -0
  41. package/codex-skills/research/SKILL.md +18 -0
  42. package/commands/agent-rally-point.md +301 -0
  43. package/commands/assess.md +41 -0
  44. package/commands/debug.md +20 -0
  45. package/commands/debugger-detail.md +34 -0
  46. package/commands/debugger-scan.md +15 -0
  47. package/commands/debugger-status.md +20 -0
  48. package/commands/debugger.md +32 -0
  49. package/commands/handoff.md +113 -0
  50. package/commands/knowledge-review.md +16 -0
  51. package/commands/optimize.md +31 -0
  52. package/commands/plan-verify.md +39 -0
  53. package/commands/promote-experiment.md +129 -0
  54. package/commands/research.md +22 -0
  55. package/commands/run.md +12 -0
  56. package/commands/self-review.md +51 -0
  57. package/commands/start-prd.md +57 -0
  58. package/commands/test.md +34 -0
  59. package/dist/src/assessment-orchestrator.d.ts +78 -0
  60. package/dist/src/assessment-orchestrator.d.ts.map +1 -0
  61. package/dist/src/assessment-orchestrator.js +304 -0
  62. package/dist/src/assessment-orchestrator.js.map +1 -0
  63. package/dist/src/audit-miner.d.ts +21 -0
  64. package/dist/src/audit-miner.d.ts.map +1 -0
  65. package/dist/src/audit-miner.js +421 -0
  66. package/dist/src/audit-miner.js.map +1 -0
  67. package/dist/src/batch-operations.d.ts +30 -0
  68. package/dist/src/batch-operations.d.ts.map +1 -0
  69. package/dist/src/batch-operations.js +339 -0
  70. package/dist/src/batch-operations.js.map +1 -0
  71. package/dist/src/config.d.ts +83 -0
  72. package/dist/src/config.d.ts.map +1 -0
  73. package/dist/src/config.js +176 -0
  74. package/dist/src/config.js.map +1 -0
  75. package/dist/src/context-engine.d.ts +45 -0
  76. package/dist/src/context-engine.d.ts.map +1 -0
  77. package/dist/src/context-engine.js +135 -0
  78. package/dist/src/context-engine.js.map +1 -0
  79. package/dist/src/debug-wrapper.d.ts +58 -0
  80. package/dist/src/debug-wrapper.d.ts.map +1 -0
  81. package/dist/src/debug-wrapper.js +285 -0
  82. package/dist/src/debug-wrapper.js.map +1 -0
  83. package/dist/src/index.d.ts +31 -0
  84. package/dist/src/index.d.ts.map +1 -0
  85. package/dist/src/index.js +149 -0
  86. package/dist/src/index.js.map +1 -0
  87. package/dist/src/interactive-verifier.d.ts +26 -0
  88. package/dist/src/interactive-verifier.d.ts.map +1 -0
  89. package/dist/src/interactive-verifier.js +435 -0
  90. package/dist/src/interactive-verifier.js.map +1 -0
  91. package/dist/src/lessons.d.ts +59 -0
  92. package/dist/src/lessons.d.ts.map +1 -0
  93. package/dist/src/lessons.js +172 -0
  94. package/dist/src/lessons.js.map +1 -0
  95. package/dist/src/log-reader.d.ts +39 -0
  96. package/dist/src/log-reader.d.ts.map +1 -0
  97. package/dist/src/log-reader.js +291 -0
  98. package/dist/src/log-reader.js.map +1 -0
  99. package/dist/src/logger.d.ts +59 -0
  100. package/dist/src/logger.d.ts.map +1 -0
  101. package/dist/src/logger.js +328 -0
  102. package/dist/src/logger.js.map +1 -0
  103. package/dist/src/parallel-retrieval.d.ts +52 -0
  104. package/dist/src/parallel-retrieval.d.ts.map +1 -0
  105. package/dist/src/parallel-retrieval.js +309 -0
  106. package/dist/src/parallel-retrieval.js.map +1 -0
  107. package/dist/src/pattern-extractor.d.ts +30 -0
  108. package/dist/src/pattern-extractor.d.ts.map +1 -0
  109. package/dist/src/pattern-extractor.js +386 -0
  110. package/dist/src/pattern-extractor.js.map +1 -0
  111. package/dist/src/result-aggregator.d.ts +44 -0
  112. package/dist/src/result-aggregator.d.ts.map +1 -0
  113. package/dist/src/result-aggregator.js +315 -0
  114. package/dist/src/result-aggregator.js.map +1 -0
  115. package/dist/src/retrieval.d.ts +139 -0
  116. package/dist/src/retrieval.d.ts.map +1 -0
  117. package/dist/src/retrieval.js +724 -0
  118. package/dist/src/retrieval.js.map +1 -0
  119. package/dist/src/setup/auto-setup.d.ts +15 -0
  120. package/dist/src/setup/auto-setup.d.ts.map +1 -0
  121. package/dist/src/setup/auto-setup.js +157 -0
  122. package/dist/src/setup/auto-setup.js.map +1 -0
  123. package/dist/src/setup/configure-hooks.d.ts +8 -0
  124. package/dist/src/setup/configure-hooks.d.ts.map +1 -0
  125. package/dist/src/setup/configure-hooks.js +16 -0
  126. package/dist/src/setup/configure-hooks.js.map +1 -0
  127. package/dist/src/setup/create-slash-commands.d.ts +8 -0
  128. package/dist/src/setup/create-slash-commands.d.ts.map +1 -0
  129. package/dist/src/setup/create-slash-commands.js +101 -0
  130. package/dist/src/setup/create-slash-commands.js.map +1 -0
  131. package/dist/src/setup/index.d.ts +8 -0
  132. package/dist/src/setup/index.d.ts.map +1 -0
  133. package/dist/src/setup/index.js +17 -0
  134. package/dist/src/setup/index.js.map +1 -0
  135. package/dist/src/setup/inject-claude-md.d.ts +10 -0
  136. package/dist/src/setup/inject-claude-md.d.ts.map +1 -0
  137. package/dist/src/setup/inject-claude-md.js +150 -0
  138. package/dist/src/setup/inject-claude-md.js.map +1 -0
  139. package/dist/src/setup/uninstall.d.ts +22 -0
  140. package/dist/src/setup/uninstall.d.ts.map +1 -0
  141. package/dist/src/setup/uninstall.js +235 -0
  142. package/dist/src/setup/uninstall.js.map +1 -0
  143. package/dist/src/storage.d.ts +192 -0
  144. package/dist/src/storage.d.ts.map +1 -0
  145. package/dist/src/storage.js +1037 -0
  146. package/dist/src/storage.js.map +1 -0
  147. package/dist/src/string-similarity.d.ts +8 -0
  148. package/dist/src/string-similarity.d.ts.map +1 -0
  149. package/dist/src/string-similarity.js +57 -0
  150. package/dist/src/string-similarity.js.map +1 -0
  151. package/dist/src/traces/adapters/browser.d.ts +69 -0
  152. package/dist/src/traces/adapters/browser.d.ts.map +1 -0
  153. package/dist/src/traces/adapters/browser.js +280 -0
  154. package/dist/src/traces/adapters/browser.js.map +1 -0
  155. package/dist/src/traces/adapters/index.d.ts +23 -0
  156. package/dist/src/traces/adapters/index.d.ts.map +1 -0
  157. package/dist/src/traces/adapters/index.js +67 -0
  158. package/dist/src/traces/adapters/index.js.map +1 -0
  159. package/dist/src/traces/adapters/langchain.d.ts +42 -0
  160. package/dist/src/traces/adapters/langchain.d.ts.map +1 -0
  161. package/dist/src/traces/adapters/langchain.js +151 -0
  162. package/dist/src/traces/adapters/langchain.js.map +1 -0
  163. package/dist/src/traces/adapters/opentelemetry.d.ts +46 -0
  164. package/dist/src/traces/adapters/opentelemetry.d.ts.map +1 -0
  165. package/dist/src/traces/adapters/opentelemetry.js +164 -0
  166. package/dist/src/traces/adapters/opentelemetry.js.map +1 -0
  167. package/dist/src/traces/adapters/sentry.d.ts +58 -0
  168. package/dist/src/traces/adapters/sentry.d.ts.map +1 -0
  169. package/dist/src/traces/adapters/sentry.js +212 -0
  170. package/dist/src/traces/adapters/sentry.js.map +1 -0
  171. package/dist/src/traces/index.d.ts +10 -0
  172. package/dist/src/traces/index.d.ts.map +1 -0
  173. package/dist/src/traces/index.js +45 -0
  174. package/dist/src/traces/index.js.map +1 -0
  175. package/dist/src/traces/storage.d.ts +78 -0
  176. package/dist/src/traces/storage.d.ts.map +1 -0
  177. package/dist/src/traces/storage.js +399 -0
  178. package/dist/src/traces/storage.js.map +1 -0
  179. package/dist/src/traces/summarizer.d.ts +83 -0
  180. package/dist/src/traces/summarizer.d.ts.map +1 -0
  181. package/dist/src/traces/summarizer.js +247 -0
  182. package/dist/src/traces/summarizer.js.map +1 -0
  183. package/dist/src/traces/types.d.ts +365 -0
  184. package/dist/src/traces/types.d.ts.map +1 -0
  185. package/dist/src/traces/types.js +14 -0
  186. package/dist/src/traces/types.js.map +1 -0
  187. package/dist/src/types.d.ts +495 -0
  188. package/dist/src/types.d.ts.map +1 -0
  189. package/dist/src/types.js +27 -0
  190. package/dist/src/types.js.map +1 -0
  191. package/docs/agent-surface-policy.md +45 -0
  192. package/docs/memory-setup.md +226 -0
  193. package/hooks/_arch_scan_bg.py +88 -0
  194. package/hooks/_plugin_drift_check_bg.py +85 -0
  195. package/hooks/_session_start_lib.sh +42 -0
  196. package/hooks/git/pre-push +141 -0
  197. package/hooks/hooks.json +126 -0
  198. package/hooks/post-commit +30 -0
  199. package/hooks/pre-commit +29 -0
  200. package/hooks/pre-edit-apppulse.sh +6 -0
  201. package/hooks/pre-edit-architecture.sh +106 -0
  202. package/hooks/pre-edit-rally-point.sh +92 -0
  203. package/hooks/session-start-apppulse.sh +6 -0
  204. package/hooks/session-start-architecture.sh +10 -0
  205. package/hooks/session-start-git-hooks.sh +12 -0
  206. package/hooks/session-start-plugin-drift.sh +27 -0
  207. package/hooks/session-start-rally-point.sh +44 -0
  208. package/hooks/session-start-retrieval.sh +24 -0
  209. package/hooks/session-start-worktree-gc.sh +105 -0
  210. package/hooks/test_apppulse_hooks.sh +6 -0
  211. package/hooks/test_rally_point_hooks.sh +388 -0
  212. package/hooks/test_sec008_hooks.sh +66 -0
  213. package/package.json +111 -0
  214. package/scripts/README.md +301 -0
  215. package/scripts/_db_url.py +61 -0
  216. package/scripts/_paths.py +445 -0
  217. package/scripts/blm.py +162 -0
  218. package/scripts/blm_api.py +263 -0
  219. package/scripts/check_cache_sync.py +490 -0
  220. package/scripts/embed_backend.py +475 -0
  221. package/scripts/install_memory.py +556 -0
  222. package/scripts/lessons_index/__init__.py +77 -0
  223. package/scripts/lessons_index/__main__.py +135 -0
  224. package/scripts/lessons_index/ingest.py +288 -0
  225. package/scripts/lessons_index/query.py +285 -0
  226. package/scripts/lessons_index/schema.py +114 -0
  227. package/scripts/memory_context/__init__.py +610 -0
  228. package/scripts/memory_graph/__init__.py +393 -0
  229. package/scripts/project_resolver.py +172 -0
  230. package/scripts/prune_codex_plugin_cache.py +23 -0
  231. package/scripts/prune_plugin_cache.py +359 -0
  232. package/scripts/semantic_index/__init__.py +482 -0
  233. package/scripts/semantic_index/_bench_hybrid.py +175 -0
  234. package/scripts/semantic_index/backfill.py +263 -0
  235. package/scripts/semantic_index/hybrid.py +174 -0
  236. package/scripts/semantic_index/test_backfill.py +292 -0
  237. package/scripts/semantic_index/test_hybrid.py +541 -0
  238. package/scripts/sync_navgator_lessons.py +666 -0
  239. package/scripts/sync_plugin_cache.py +388 -0
  240. package/skills/agent-rally-point/SKILL.md +165 -0
  241. package/skills/agent-rally-watcher/SKILL.md +83 -0
  242. package/skills/api-registry-bridge/SKILL.md +59 -0
  243. package/skills/architecture/dead/SKILL.md +56 -0
  244. package/skills/architecture/impact/SKILL.md +88 -0
  245. package/skills/architecture/review/SKILL.md +227 -0
  246. package/skills/architecture/rules/SKILL.md +72 -0
  247. package/skills/architecture/scan/SKILL.md +79 -0
  248. package/skills/architecture/trace/SKILL.md +65 -0
  249. package/skills/attribution-standard/SKILL.md +122 -0
  250. package/skills/authentication/SKILL.md +81 -0
  251. package/skills/authentication/references/better-auth-magic-link.md +135 -0
  252. package/skills/authentication/references/better-auth-setup.md +224 -0
  253. package/skills/authentication/references/google-calendar-sync.md +278 -0
  254. package/skills/authentication/references/google-cloud-console.md +159 -0
  255. package/skills/authentication/references/google-geocoding-directions.md +126 -0
  256. package/skills/authentication/references/google-lessons-example-web-app.md +177 -0
  257. package/skills/authentication/references/google-maps.md +162 -0
  258. package/skills/authentication/references/google-oauth-setup.md +343 -0
  259. package/skills/authentication/references/google-places.md +173 -0
  260. package/skills/authentication/references/lessons-example-web-app-better-auth.md +126 -0
  261. package/skills/authentication/references/resend-email.md +227 -0
  262. package/skills/authentication/references/resend-otp-magic-link.md +153 -0
  263. package/skills/authentication/references/supabase-auth.md +172 -0
  264. package/skills/auto-decision-capture/SKILL.md +419 -0
  265. package/skills/build-loop/SKILL.md +516 -0
  266. package/skills/build-loop/detect-plugins.mjs +82 -0
  267. package/skills/build-loop/eval-guide.md +65 -0
  268. package/skills/build-loop/fallbacks.md +549 -0
  269. package/skills/build-loop/phases/fact-check.md +42 -0
  270. package/skills/build-loop/phases/ui-validation.md +267 -0
  271. package/skills/build-loop/references/apple-native-planning.md +439 -0
  272. package/skills/build-loop/references/capability-routing.md +181 -0
  273. package/skills/build-loop/references/codex-subagents.md +98 -0
  274. package/skills/build-loop/references/coordination.md +161 -0
  275. package/skills/build-loop/references/correction-aware-capture.md +177 -0
  276. package/skills/build-loop/references/independent-auditor.md +72 -0
  277. package/skills/build-loop/references/intent-capability-pack.md +170 -0
  278. package/skills/build-loop/references/intent-exploration-prompts.md +96 -0
  279. package/skills/build-loop/references/leadership.md +72 -0
  280. package/skills/build-loop/references/memory.md +284 -0
  281. package/skills/build-loop/references/modular-systems-pack.md +96 -0
  282. package/skills/build-loop/references/output-style.md +129 -0
  283. package/skills/build-loop/references/pay-it-forward-arch.md +98 -0
  284. package/skills/build-loop/references/phase-1-assess.md +218 -0
  285. package/skills/build-loop/references/phase-2-plan.md +77 -0
  286. package/skills/build-loop/references/phase-3-execute.md +47 -0
  287. package/skills/build-loop/references/phase-4-review.md +310 -0
  288. package/skills/build-loop/references/phase-5-iterate.md +71 -0
  289. package/skills/build-loop/references/phase-6-learn.md +56 -0
  290. package/skills/build-loop/references/recent-design-structures.md +274 -0
  291. package/skills/build-loop/references/refactor-history/ASSESSMENT.md +85 -0
  292. package/skills/build-loop/references/refactor-history/STANDALONE_TEST_RUN.md +149 -0
  293. package/skills/build-loop/references/refactor-history/scenarios/01-simple-bugfix.md +32 -0
  294. package/skills/build-loop/references/refactor-history/scenarios/02-ui-build-with-iteration.md +48 -0
  295. package/skills/build-loop/references/refactor-history/scenarios/03-multi-failure-escalation.md +60 -0
  296. package/skills/build-loop/references/refactor-history/scenarios/04-ui-build-ibr-absent.md +51 -0
  297. package/skills/build-loop/references/refactor-history/scenarios/05-refactor-navgator-absent.md +71 -0
  298. package/skills/build-loop/references/refactor-history/scenarios/06-recurring-bug-debugger-absent.md +52 -0
  299. package/skills/build-loop/references/refactor-history/trace-comparison.md +202 -0
  300. package/skills/build-loop/references/self-recursive-dev.md +77 -0
  301. package/skills/build-loop/references/self-review.md +232 -0
  302. package/skills/build-loop/references/ui-io-contract.md +116 -0
  303. package/skills/build-loop/scanners/audit-design-rules.mjs +476 -0
  304. package/skills/build-loop/scanners/require-visual-evidence.mjs +239 -0
  305. package/skills/build-loop/templates/backlog-item.md +35 -0
  306. package/skills/build-loop/templates/codex-worker-prompt.md +89 -0
  307. package/skills/build-loop/templates/ui-subagent-prompt.md +179 -0
  308. package/skills/build-loop/templates/ux-fix-plan.md +40 -0
  309. package/skills/building-with-deepagents/SKILL.md +195 -0
  310. package/skills/building-with-deepagents/references/anti-patterns.md +141 -0
  311. package/skills/building-with-deepagents/references/api-quick-reference.md +184 -0
  312. package/skills/capabilities/SKILL.md +91 -0
  313. package/skills/debug-loop/SKILL.md +278 -0
  314. package/skills/debug-loop/references/convergence-rules.md +145 -0
  315. package/skills/debug-loop/references/swiftui-macos-clunky-ui-debugger.html +823 -0
  316. package/skills/debugging/assess/SKILL.md +111 -0
  317. package/skills/debugging/debug-loop/SKILL.md +231 -0
  318. package/skills/debugging/memory/SKILL.md +147 -0
  319. package/skills/debugging/store/SKILL.md +153 -0
  320. package/skills/debugging-memory/SKILL.md +440 -0
  321. package/skills/debugging-memory/examples/incident-example.json +67 -0
  322. package/skills/debugging-memory/references/incident-documentation.md +280 -0
  323. package/skills/debugging-memory/references/ios-notification-alarm-playbook.md +300 -0
  324. package/skills/debugging-memory/references/pattern-extraction.md +163 -0
  325. package/skills/debugging-memory/references/subagent-integration.md +312 -0
  326. package/skills/defenseclaw-bridge/SKILL.md +156 -0
  327. package/skills/defenseclaw-bridge/references/dc-config-mapping.md +162 -0
  328. package/skills/defenseclaw-bridge/references/output-format.md +108 -0
  329. package/skills/handoff/SKILL.md +94 -0
  330. package/skills/ibr-bridge/SKILL.md +68 -0
  331. package/skills/knowledge/SKILL.md +127 -0
  332. package/skills/knowledge/references/recall-integration.md +83 -0
  333. package/skills/knowledge/templates/madr-minimal.md +56 -0
  334. package/skills/knowledge-review/SKILL.md +112 -0
  335. package/skills/logging-tracer/SKILL.md +202 -0
  336. package/skills/logging-tracer/references/log-analysis.md +128 -0
  337. package/skills/logging-tracer/references/stack-templates.md +274 -0
  338. package/skills/logging-tracer-bridge/SKILL.md +70 -0
  339. package/skills/mcp-builder/SKILL.md +278 -0
  340. package/skills/mcp-builder/references/mcp-security.md +106 -0
  341. package/skills/model-tiering/SKILL.md +216 -0
  342. package/skills/native-ax-driver/SKILL.md +220 -0
  343. package/skills/native-ax-driver/scripts/layout_fill.py +222 -0
  344. package/skills/native-ax-driver/scripts/native_driver.py +495 -0
  345. package/skills/native-ax-driver/swift/bl-ax-driver/Package.swift +20 -0
  346. package/skills/native-ax-driver/swift/bl-ax-driver/Sources/main.swift +542 -0
  347. package/skills/optimize/SKILL.md +202 -0
  348. package/skills/optimize/profiles.md +61 -0
  349. package/skills/plan-verify/SKILL.md +115 -0
  350. package/skills/plan-verify/test-fixtures/example-app-v20-findings.json +27 -0
  351. package/skills/plan-verify/test-fixtures/example-app-v20.md +42 -0
  352. package/skills/plan-verify/test-fixtures/example-app-v22-findings.json +15 -0
  353. package/skills/plan-verify/test-fixtures/example-app-v22.md +1608 -0
  354. package/skills/plan-verify/test-fixtures/unrelated-good-plan-findings.json +15 -0
  355. package/skills/plan-verify/test-fixtures/unrelated-good-plan.md +55 -0
  356. package/skills/plugin-builder/SKILL.md +329 -0
  357. package/skills/plugin-builder/references/authoritative-sources.md +104 -0
  358. package/skills/plugin-builder/references/build-loop-phase-guidance.md +94 -0
  359. package/skills/plugin-builder/references/components-guide.md +221 -0
  360. package/skills/plugin-builder/references/distribution.md +317 -0
  361. package/skills/plugin-builder/references/dual-host-claude-codex.md +220 -0
  362. package/skills/plugin-builder/references/hooks-reference.md +210 -0
  363. package/skills/plugin-builder/references/manifest-schema.md +111 -0
  364. package/skills/plugin-builder/references/plugin-hygiene-lessons.md +307 -0
  365. package/skills/plugin-tests/SKILL.md +94 -0
  366. package/skills/prd-bridge/SKILL.md +135 -0
  367. package/skills/research/SKILL.md +80 -0
  368. package/skills/security-methodology/SKILL.md +105 -0
  369. package/skills/security-methodology/references/cross-source-matrix.md +77 -0
  370. package/skills/security-methodology/references/mitre-atlas-starter.md +83 -0
  371. package/skills/security-methodology/references/nist-600-1-mapping.md +119 -0
  372. package/skills/security-methodology/references/owasp-agentic-top-10.md +157 -0
  373. package/skills/security-methodology/references/owasp-llm-top-10.md +144 -0
  374. package/skills/security-methodology/references/owasp-web-top-10.md +65 -0
  375. package/skills/self-improve/SKILL.md +298 -0
  376. package/skills/spec-writing/SKILL.md +548 -0
  377. package/skills/spec-writing/scripts/check_checklist.py +478 -0
  378. package/skills/sync-skills/SKILL.md +132 -0
  379. package/skills/telemetry/SKILL.md +66 -0
  380. package/skills/ui-design/SKILL.md +75 -0
  381. package/skills/ui-design/references/design-patterns-multi.md +165 -0
  382. package/skills/ui-design/references/design-preferences-from-owned-apps.md +150 -0
  383. package/skills/ui-design/references/evidence-capture-policy.md +55 -0
  384. package/skills/ui-design/references/ui-guidance-sources.md +330 -0
  385. package/skills/ui-design/references/universal-design-principles.alt.md +182 -0
  386. package/skills/ui-design/references/universal-design-principles.md +419 -0
  387. package/templates/memory/MEMORY.md.template +55 -0
  388. package/templates/memory/constitution.md.template +64 -0
  389. 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