@tyroneross/build-loop 0.36.1 → 0.43.0

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 (270) hide show
  1. package/.agents/plugins/marketplace.json +2 -2
  2. package/.claude-plugin/marketplace.json +3 -3
  3. package/.claude-plugin/plugin.json +1 -1
  4. package/.codex-plugin/plugin.json +1 -1
  5. package/.cursor/rules/build-loop-surface.mdc +12 -11
  6. package/.cursor/rules/skill-index.mdc +33 -0
  7. package/AGENTS.md +213 -34
  8. package/README.md +99 -31
  9. package/agents/advisor.md +4 -4
  10. package/agents/alignment-checker.md +2 -2
  11. package/agents/architecture-scout.md +4 -4
  12. package/agents/build-orchestrator.md +38 -36
  13. package/agents/database-assessor.md +10 -4
  14. package/agents/design-contract-specialist.md +8 -8
  15. package/agents/fact-checker.md +13 -3
  16. package/agents/fix-critique.md +2 -2
  17. package/agents/independent-auditor.md +60 -7
  18. package/agents/leak-scanner.md +82 -0
  19. package/agents/overfitting-reviewer.md +2 -2
  20. package/agents/plan-critic.md +1 -1
  21. package/agents/promotion-reviewer.md +5 -5
  22. package/agents/retrospective-synthesizer.md +138 -35
  23. package/agents/scope-auditor.md +82 -11
  24. package/agents/security-reviewer.md +55 -1
  25. package/agents/self-improvement-architect.md +17 -3
  26. package/agents/transcript-pattern-miner.md +5 -5
  27. package/agents/ui-validator.md +1 -1
  28. package/bin/build-loop-debugger.js +143 -0
  29. package/bin/build-loop-install.js +1 -4
  30. package/bin/build-loop-load-probe.js +345 -0
  31. package/codex-skills/build-loop/SKILL.md +28 -6
  32. package/commands/feedback.md +37 -0
  33. package/dist/src/interactive-verifier.d.ts +1 -14
  34. package/dist/src/interactive-verifier.d.ts.map +1 -1
  35. package/dist/src/interactive-verifier.js +6 -113
  36. package/dist/src/interactive-verifier.js.map +1 -1
  37. package/dist/src/quality.d.ts +5 -0
  38. package/dist/src/quality.d.ts.map +1 -0
  39. package/dist/src/quality.js +81 -0
  40. package/dist/src/quality.js.map +1 -0
  41. package/dist/src/storage.d.ts.map +1 -1
  42. package/dist/src/storage.js +37 -3
  43. package/dist/src/storage.js.map +1 -1
  44. package/docs/agent-surface-policy.md +35 -31
  45. package/docs/memory-setup.md +19 -0
  46. package/hooks/git/pre-push +65 -4
  47. package/hooks/hooks.json +95 -38
  48. package/hooks/pre-commit +20 -1
  49. package/hooks/pre-edit-rally-point.sh +10 -3
  50. package/hooks/session-start-codex-hook-trust.sh +30 -0
  51. package/hooks/session-start-git-hooks.sh +3 -1
  52. package/hooks/session-start-rally-point.sh +52 -4
  53. package/hooks/session-start-worktree-gc.sh +47 -94
  54. package/hooks/stop-transcript-sweep.sh +173 -0
  55. package/hooks/test_closeout.sh +14 -2
  56. package/package.json +8 -7
  57. package/scripts/README.md +1 -1
  58. package/scripts/_paths.py +65 -0
  59. package/scripts/groundwork_exchange.py +1012 -0
  60. package/scripts/install_memory.py +33 -1
  61. package/scripts/lessons_index/ingest.py +13 -2
  62. package/scripts/lessons_index/query.py +36 -13
  63. package/scripts/memory_context/__init__.py +108 -14
  64. package/scripts/memory_graph/__init__.py +5 -1
  65. package/scripts/project_resolver.py +42 -36
  66. package/scripts/sync_plugin_cache.py +37 -2
  67. package/skills/agent-rally-point/SKILL.md +46 -0
  68. package/skills/api-registry-bridge/SKILL.md +1 -1
  69. package/skills/architecture/dead/SKILL.md +1 -1
  70. package/skills/architecture/impact/SKILL.md +1 -1
  71. package/skills/architecture/review/SKILL.md +1 -1
  72. package/skills/architecture/rules/SKILL.md +3 -3
  73. package/skills/architecture/scan/SKILL.md +1 -1
  74. package/skills/architecture/trace/SKILL.md +1 -1
  75. package/skills/attribution-standard/SKILL.md +6 -6
  76. package/skills/auto-decision-capture/SKILL.md +31 -2
  77. package/skills/auto-finding-capture/SKILL.md +28 -1
  78. package/skills/build-loop/SKILL.md +131 -23
  79. package/skills/build-loop/fallbacks.md +16 -21
  80. package/skills/build-loop/phases/ui-validation.md +2 -2
  81. package/skills/build-loop/references/advisor-dispatch-ladder.md +1 -1
  82. package/skills/build-loop/references/apple-native-planning.md +1 -1
  83. package/skills/build-loop/references/autonomous-and-per-commit-modes.md +11 -5
  84. package/skills/build-loop/references/autonomy-dashboard.md +115 -0
  85. package/skills/build-loop/references/capability-routing.md +24 -2
  86. package/skills/build-loop/references/coordination.md +24 -6
  87. package/skills/build-loop/references/experiment-results-template.md +15 -3
  88. package/skills/build-loop/references/leadership.md +1 -1
  89. package/skills/build-loop/references/memory.md +14 -3
  90. package/skills/build-loop/references/modular-systems-pack.md +8 -0
  91. package/skills/build-loop/references/output-style.md +86 -0
  92. package/skills/build-loop/references/phase-1-assess.md +102 -2
  93. package/skills/build-loop/references/phase-2-plan.md +9 -1
  94. package/skills/build-loop/references/phase-3-execute.md +5 -2
  95. package/skills/build-loop/references/phase-4-review.md +85 -8
  96. package/skills/build-loop/references/phase-5-iterate.md +76 -8
  97. package/skills/build-loop/references/phase-6-learn.md +10 -17
  98. package/skills/build-loop/references/privileged-request-broker.md +254 -0
  99. package/skills/build-loop/references/resource-aware-execution.md +183 -0
  100. package/skills/build-loop/references/self-recursive-dev.md +2 -2
  101. package/skills/build-loop/references/status-output-format.md +207 -0
  102. package/skills/build-loop/references/verify-dispatch.md +56 -2
  103. package/skills/building-with-deepagents/SKILL.md +1 -1
  104. package/skills/claim-scope/SKILL.md +185 -0
  105. package/skills/color-engine/SKILL.md +103 -0
  106. package/skills/color-engine/_core.py +464 -0
  107. package/skills/color-engine/color_engine.py +175 -0
  108. package/skills/cost-rca/SKILL.md +61 -0
  109. package/skills/data-plane-worktrees/SKILL.md +139 -0
  110. package/skills/data-plane-worktrees/agents/openai.yaml +4 -0
  111. package/skills/database-practice/SKILL.md +200 -0
  112. package/skills/database-practice/references/diagnostic-queries.sql +126 -0
  113. package/skills/database-practice/references/vector-and-graph-tuning.md +208 -0
  114. package/skills/database-practice/scripts/db_table_map.py +1244 -0
  115. package/skills/database-practice/scripts/test_db_table_map.py +514 -0
  116. package/skills/debug-loop/SKILL.md +36 -6
  117. package/skills/debugging-memory/SKILL.md +32 -430
  118. package/skills/debugging-memory/references/pattern-extraction.md +4 -4
  119. package/skills/debugging-memory/references/search.md +32 -120
  120. package/skills/debugging-memory/references/store.md +32 -126
  121. package/skills/debugging-memory/references/subagent-integration.md +1 -1
  122. package/skills/decision-queue/SKILL.md +251 -0
  123. package/skills/decision-queue/assets/template.html +1242 -0
  124. package/skills/decision-queue/references/example-large-queue-batching.md +164 -0
  125. package/skills/decision-queue/scripts/regen_template_constants.py +160 -0
  126. package/skills/defenseclaw-bridge/SKILL.md +2 -2
  127. package/skills/defenseclaw-bridge/references/dc-config-mapping.md +2 -9
  128. package/skills/drain-proposals/SKILL.md +53 -0
  129. package/skills/focused-loop-builder/SKILL.md +31 -0
  130. package/skills/focused-loop-builder/references/spec-format.md +27 -0
  131. package/skills/handoff/SKILL.md +169 -8
  132. package/skills/ibr-bridge/SKILL.md +4 -1
  133. package/skills/knowledge/SKILL.md +26 -14
  134. package/skills/knowledge/references/review-mode.md +2 -3
  135. package/skills/knowledge/templates/madr-minimal.md +1 -1
  136. package/skills/mcp-builder/SKILL.md +1 -1
  137. package/skills/model-bakeoff/SKILL.md +48 -10
  138. package/skills/model-tiering/SKILL.md +92 -31
  139. package/skills/native-ax-driver/SKILL.md +38 -5
  140. package/skills/native-ax-driver/scripts/native_driver.py +278 -22
  141. package/skills/native-ax-driver/scripts/test_native_driver.py +227 -0
  142. package/skills/optimize/SKILL.md +1 -1
  143. package/skills/plugin-builder/SKILL.md +48 -1
  144. package/skills/plugin-builder/references/build-loop-phase-guidance.md +3 -4
  145. package/skills/plugin-builder/references/distribution.md +13 -2
  146. package/skills/plugin-builder/references/plugin-hygiene-lessons.md +2 -2
  147. package/skills/plugin-tests/SKILL.md +2 -2
  148. package/skills/recursive-retrospective/SKILL.md +1 -1
  149. package/skills/repo-closeout/SKILL.md +17 -0
  150. package/skills/repo-closeout/agents/openai.yaml +4 -0
  151. package/skills/repo-maintenance/SKILL.md +179 -0
  152. package/skills/repo-maintenance/agents/openai.yaml +4 -0
  153. package/skills/repo-maintenance/references/pre-public-hygiene.md +134 -0
  154. package/skills/repo-maintenance/references/repository-taxonomy.md +161 -0
  155. package/skills/repo-maintenance/references/safety-protocol.md +106 -0
  156. package/skills/repo-maintenance/references/stack-profiles.md +138 -0
  157. package/skills/repo-maintenance/scripts/audit_repo_maintenance.py +1198 -0
  158. package/skills/repo-maintenance/scripts/test_audit_repo_maintenance.py +506 -0
  159. package/skills/repository-intelligence/SKILL.md +189 -0
  160. package/skills/repository-intelligence/agents/openai.yaml +4 -0
  161. package/skills/repository-intelligence/references/assessment-rubric.md +88 -0
  162. package/skills/repository-intelligence/scripts/repository_inventory.py +347 -0
  163. package/skills/research/SKILL.md +12 -2
  164. package/skills/root-cause-analysis/SKILL.md +1 -1
  165. package/skills/runtime-parity-verification/SKILL.md +36 -1
  166. package/skills/security-methodology/SKILL.md +22 -9
  167. package/skills/security-methodology/references/agentic-handoff-templates.md +220 -0
  168. package/skills/security-methodology/references/cross-source-matrix.md +1 -1
  169. package/skills/security-methodology/references/owasp-agentic-top-10.md +1 -1
  170. package/skills/security-scan/SKILL.md +55 -15
  171. package/skills/self-improve/SKILL.md +70 -50
  172. package/skills/silent-assumptions/SKILL.md +341 -0
  173. package/skills/silent-assumptions/references/elicitation-detectors.md +342 -0
  174. package/skills/spec-writing/SKILL.md +128 -24
  175. package/skills/spec-writing/scripts/check_checklist.py +114 -15
  176. package/skills/ui-design/SKILL.md +6 -4
  177. package/skills/ui-design/references/color-engine.md +132 -0
  178. package/skills/ui-design/references/design-preferences-from-owned-apps.md +8 -8
  179. package/skills/ui-design/references/ui-guidance-sources.md +1 -1
  180. package/skills/ui-design/references/universal-design-principles.alt.md +2 -2
  181. package/plugin-artifacts/codex/.codex-plugin/plugin.json +0 -41
  182. package/plugin-artifacts/codex/AGENTS.md +0 -560
  183. package/plugin-artifacts/codex/BUILD-ARTIFACT.md +0 -5
  184. package/plugin-artifacts/codex/LICENSE +0 -202
  185. package/plugin-artifacts/codex/README.md +0 -313
  186. package/plugin-artifacts/codex/assets/build-loop-plugin-icon.png +0 -0
  187. package/plugin-artifacts/codex/docs/agent-surface-policy.md +0 -63
  188. package/plugin-artifacts/codex/references/advisor-dispatch-ladder.md +0 -62
  189. package/plugin-artifacts/codex/references/agent-role-taxonomy.md +0 -135
  190. package/plugin-artifacts/codex/references/autonomous-and-per-commit-modes.md +0 -161
  191. package/plugin-artifacts/codex/references/autonomy-config.md +0 -231
  192. package/plugin-artifacts/codex/references/backlog-system.md +0 -285
  193. package/plugin-artifacts/codex/references/capability-routing.md +0 -231
  194. package/plugin-artifacts/codex/references/codex-subagents.md +0 -106
  195. package/plugin-artifacts/codex/references/coordination-file-template.md +0 -181
  196. package/plugin-artifacts/codex/references/coordination-rules.md +0 -552
  197. package/plugin-artifacts/codex/references/dogfood-reload-checkpoint.md +0 -112
  198. package/plugin-artifacts/codex/references/halt-and-ask-protocol.md +0 -102
  199. package/plugin-artifacts/codex/references/implementer-envelope-schema.md +0 -302
  200. package/plugin-artifacts/codex/references/intent-capability-pack.md +0 -257
  201. package/plugin-artifacts/codex/references/intent-exploration-prompts.md +0 -96
  202. package/plugin-artifacts/codex/references/leadership.md +0 -72
  203. package/plugin-artifacts/codex/references/memory-systems.md +0 -261
  204. package/plugin-artifacts/codex/references/memory.md +0 -313
  205. package/plugin-artifacts/codex/references/model-tier-mapping.md +0 -296
  206. package/plugin-artifacts/codex/references/modular-systems-pack.md +0 -96
  207. package/plugin-artifacts/codex/references/phase-1-assess.md +0 -249
  208. package/plugin-artifacts/codex/references/phase-2-plan.md +0 -86
  209. package/plugin-artifacts/codex/references/phase-3-execute.md +0 -49
  210. package/plugin-artifacts/codex/references/phase-4-review.md +0 -341
  211. package/plugin-artifacts/codex/references/phase-5-iterate.md +0 -72
  212. package/plugin-artifacts/codex/references/phase-6-learn.md +0 -58
  213. package/plugin-artifacts/codex/references/recent-design-structures.md +0 -274
  214. package/plugin-artifacts/codex/references/research-trigger-policy.md +0 -140
  215. package/plugin-artifacts/codex/references/runtime-smoke-triggers.md +0 -42
  216. package/plugin-artifacts/codex/references/self-review.md +0 -234
  217. package/plugin-artifacts/codex/references/single-writer-commit-protocol.md +0 -90
  218. package/plugin-artifacts/codex/references/task-capture-policy.md +0 -68
  219. package/plugin-artifacts/codex/references/ui-io-contract.md +0 -116
  220. package/plugin-artifacts/codex/references/ui-spotcheck-protocol.md +0 -65
  221. package/plugin-artifacts/codex/references/verify-dispatch.md +0 -85
  222. package/plugin-artifacts/codex/skills/build-loop/SKILL.md +0 -381
  223. package/plugin-artifacts/codex/skills/build-loop/detect-plugins.mjs +0 -82
  224. package/plugin-artifacts/codex/skills/build-loop/eval-guide.md +0 -65
  225. package/plugin-artifacts/codex/skills/build-loop/fallbacks.md +0 -549
  226. package/plugin-artifacts/codex/skills/build-loop/phases/fact-check.md +0 -42
  227. package/plugin-artifacts/codex/skills/build-loop/phases/ui-validation.md +0 -267
  228. package/plugin-artifacts/codex/skills/build-loop/references/advisor-dispatch-ladder.md +0 -62
  229. package/plugin-artifacts/codex/skills/build-loop/references/apple-native-planning.md +0 -439
  230. package/plugin-artifacts/codex/skills/build-loop/references/autonomous-and-per-commit-modes.md +0 -161
  231. package/plugin-artifacts/codex/skills/build-loop/references/capability-routing.md +0 -231
  232. package/plugin-artifacts/codex/skills/build-loop/references/codex-subagents.md +0 -106
  233. package/plugin-artifacts/codex/skills/build-loop/references/coordination.md +0 -161
  234. package/plugin-artifacts/codex/skills/build-loop/references/correction-aware-capture.md +0 -177
  235. package/plugin-artifacts/codex/skills/build-loop/references/experiment-results-template.md +0 -101
  236. package/plugin-artifacts/codex/skills/build-loop/references/independent-auditor.md +0 -72
  237. package/plugin-artifacts/codex/skills/build-loop/references/intent-capability-pack.md +0 -257
  238. package/plugin-artifacts/codex/skills/build-loop/references/intent-exploration-prompts.md +0 -96
  239. package/plugin-artifacts/codex/skills/build-loop/references/leadership.md +0 -72
  240. package/plugin-artifacts/codex/skills/build-loop/references/memory.md +0 -313
  241. package/plugin-artifacts/codex/skills/build-loop/references/modular-systems-pack.md +0 -96
  242. package/plugin-artifacts/codex/skills/build-loop/references/output-style.md +0 -222
  243. package/plugin-artifacts/codex/skills/build-loop/references/pay-it-forward-arch.md +0 -98
  244. package/plugin-artifacts/codex/skills/build-loop/references/phase-1-assess.md +0 -249
  245. package/plugin-artifacts/codex/skills/build-loop/references/phase-2-plan.md +0 -86
  246. package/plugin-artifacts/codex/skills/build-loop/references/phase-3-execute.md +0 -49
  247. package/plugin-artifacts/codex/skills/build-loop/references/phase-4-review.md +0 -341
  248. package/plugin-artifacts/codex/skills/build-loop/references/phase-5-iterate.md +0 -72
  249. package/plugin-artifacts/codex/skills/build-loop/references/phase-6-learn.md +0 -58
  250. package/plugin-artifacts/codex/skills/build-loop/references/recent-design-structures.md +0 -274
  251. package/plugin-artifacts/codex/skills/build-loop/references/refactor-history/ASSESSMENT.md +0 -85
  252. package/plugin-artifacts/codex/skills/build-loop/references/refactor-history/STANDALONE_TEST_RUN.md +0 -149
  253. package/plugin-artifacts/codex/skills/build-loop/references/refactor-history/scenarios/01-simple-bugfix.md +0 -32
  254. package/plugin-artifacts/codex/skills/build-loop/references/refactor-history/scenarios/02-ui-build-with-iteration.md +0 -48
  255. package/plugin-artifacts/codex/skills/build-loop/references/refactor-history/scenarios/03-multi-failure-escalation.md +0 -60
  256. package/plugin-artifacts/codex/skills/build-loop/references/refactor-history/scenarios/04-ui-build-ibr-absent.md +0 -51
  257. package/plugin-artifacts/codex/skills/build-loop/references/refactor-history/scenarios/05-refactor-navgator-absent.md +0 -71
  258. package/plugin-artifacts/codex/skills/build-loop/references/refactor-history/scenarios/06-recurring-bug-debugger-absent.md +0 -52
  259. package/plugin-artifacts/codex/skills/build-loop/references/refactor-history/trace-comparison.md +0 -202
  260. package/plugin-artifacts/codex/skills/build-loop/references/self-recursive-dev.md +0 -77
  261. package/plugin-artifacts/codex/skills/build-loop/references/self-review.md +0 -234
  262. package/plugin-artifacts/codex/skills/build-loop/references/ui-io-contract.md +0 -116
  263. package/plugin-artifacts/codex/skills/build-loop/references/verify-dispatch.md +0 -85
  264. package/plugin-artifacts/codex/skills/build-loop/scanners/audit-design-rules.mjs +0 -476
  265. package/plugin-artifacts/codex/skills/build-loop/scanners/require-visual-evidence.mjs +0 -239
  266. package/plugin-artifacts/codex/skills/build-loop/templates/backlog-item.md +0 -35
  267. package/plugin-artifacts/codex/skills/build-loop/templates/codex-worker-prompt.md +0 -100
  268. package/plugin-artifacts/codex/skills/build-loop/templates/ui-subagent-prompt.md +0 -179
  269. package/plugin-artifacts/codex/skills/build-loop/templates/ux-fix-plan.md +0 -40
  270. package/scripts/build_codex_plugin_artifact.py +0 -321
@@ -0,0 +1,345 @@
1
+ #!/usr/bin/env node
2
+ // SPDX-FileCopyrightText: 2025-2026 Tyrone Ross, Jr <46267523+tyroneross@users.noreply.github.com>
3
+ // SPDX-License-Identifier: Apache-2.0
4
+ "use strict";
5
+
6
+ const { randomUUID } = require("node:crypto");
7
+ const fs = require("node:fs");
8
+ const os = require("node:os");
9
+ const path = require("node:path");
10
+ const { spawn, spawnSync } = require("node:child_process");
11
+
12
+ const MAX_WORKERS = 8;
13
+ const MAX_DURATION_SECONDS = 600;
14
+ const TERM_GRACE_MS = 1500;
15
+ const POLL_MS = 25;
16
+ const ID_RE = /^[A-Za-z0-9][A-Za-z0-9._-]{0,79}$/;
17
+
18
+ function fail(message, code = 2) {
19
+ process.stderr.write(`build-loop-load-probe: ${message}\n`);
20
+ process.exit(code);
21
+ }
22
+
23
+ function parseNumber(raw, name, { min, max }) {
24
+ const value = Number(raw);
25
+ if (!Number.isFinite(value) || value < min || value > max) {
26
+ fail(`${name} must be between ${min} and ${max}`);
27
+ }
28
+ return value;
29
+ }
30
+
31
+ function parseArgs(argv) {
32
+ const divider = argv.indexOf("--");
33
+ const own = divider === -1 ? argv : argv.slice(0, divider);
34
+ const command = divider === -1 ? [] : argv.slice(divider + 1);
35
+ const result = {
36
+ worker: false,
37
+ guardian: false,
38
+ json: false,
39
+ workers: 1,
40
+ durationSeconds: 30,
41
+ runId: null,
42
+ deadlineEpochMs: null,
43
+ command,
44
+ };
45
+ for (let index = 0; index < own.length; index += 1) {
46
+ const arg = own[index];
47
+ if (arg === "--worker") result.worker = true;
48
+ else if (arg === "--guardian") result.guardian = true;
49
+ else if (arg === "--json") result.json = true;
50
+ else if (arg === "--workers") result.workers = parseNumber(own[++index], "--workers", { min: 1, max: 10000 });
51
+ else if (arg === "--duration-seconds") result.durationSeconds = parseNumber(own[++index], "--duration-seconds", { min: 1, max: MAX_DURATION_SECONDS });
52
+ else if (arg === "--run-id") result.runId = own[++index];
53
+ else if (arg === "--deadline-epoch-ms") result.deadlineEpochMs = parseNumber(own[++index], "--deadline-epoch-ms", { min: 1, max: Number.MAX_SAFE_INTEGER });
54
+ else if (arg === "--help" || arg === "-h") {
55
+ process.stdout.write("Usage: build-loop-load-probe [--workers N] [--duration-seconds N] [--run-id ID] [--json] [-- command args...]\n");
56
+ process.exit(0);
57
+ } else fail(`unknown argument: ${arg}`);
58
+ }
59
+ if ((result.worker || result.guardian) && (!ID_RE.test(result.runId || "") || result.deadlineEpochMs === null)) fail("internal worker requires a run id and deadline");
60
+ if (!result.worker && !result.guardian && result.runId !== null) fail("--run-id is internal; the supervisor generates an opaque id");
61
+ if (result.guardian && result.command.length === 0) fail("guardian requires a command");
62
+ if (divider !== -1 && command.length === 0) fail("-- requires a command");
63
+ return result;
64
+ }
65
+
66
+ function cacheRoot() {
67
+ if (process.platform === "darwin") {
68
+ return path.join(os.homedir(), "Library", "Caches", "com.rosslabs.build-loop", "processes");
69
+ }
70
+ return path.join(os.tmpdir(), `build-loop-${process.getuid?.() ?? "user"}`, "processes");
71
+ }
72
+
73
+ function atomicWriteJson(file, value, { exclusive = false } = {}) {
74
+ fs.mkdirSync(path.dirname(file), { recursive: true, mode: 0o700 });
75
+ if (exclusive) {
76
+ const descriptor = fs.openSync(file, "wx", 0o600);
77
+ try { fs.writeFileSync(descriptor, `${JSON.stringify(value, null, 2)}\n`); }
78
+ finally { fs.closeSync(descriptor); }
79
+ return;
80
+ }
81
+ const temporary = `${file}.${process.pid}.tmp`;
82
+ fs.writeFileSync(temporary, `${JSON.stringify(value, null, 2)}\n`, { mode: 0o600 });
83
+ fs.renameSync(temporary, file);
84
+ }
85
+
86
+ function pruneReceipts(root, retentionDays = 7) {
87
+ const cutoff = Date.now() - retentionDays * 24 * 60 * 60 * 1000;
88
+ try {
89
+ for (const name of fs.readdirSync(root)) {
90
+ if (!/^[0-9a-f-]{36}\.json$/.test(name)) continue;
91
+ const file = path.join(root, name);
92
+ if (fs.statSync(file).mtimeMs < cutoff) fs.unlinkSync(file);
93
+ }
94
+ } catch (error) {
95
+ if (error.code !== "ENOENT") process.stderr.write(`build-loop-load-probe: receipt pruning skipped: ${error.message}\n`);
96
+ }
97
+ }
98
+
99
+ function processIdentity(pid) {
100
+ const result = spawnSync("ps", ["-p", String(pid), "-o", "lstart=", "-o", "pgid=", "-o", "stat=", "-o", "command="], { encoding: "utf8" });
101
+ if (result.status !== 0 || !result.stdout.trim()) return null;
102
+ const line = result.stdout.trim();
103
+ const match = line.match(/^(.{24})\s+(\d+)\s+(\S+)\s+(.+)$/);
104
+ if (!match) return null;
105
+ return { startedAtOs: match[1].trim(), pgid: Number(match[2]), state: match[3], command: match[4] };
106
+ }
107
+
108
+ function sleep(ms) {
109
+ return new Promise((resolve) => setTimeout(resolve, ms));
110
+ }
111
+
112
+ function workerMain(options) {
113
+ process.title = `bl-load-w-${options.runId.slice(-6)}`;
114
+ let accumulator = 0;
115
+ while (Date.now() < options.deadlineEpochMs) {
116
+ for (let index = 1; index <= 50000; index += 1) accumulator += Math.sqrt(index + accumulator % 17);
117
+ if (!Number.isFinite(accumulator)) accumulator = 0;
118
+ }
119
+ process.exit(0);
120
+ }
121
+
122
+ async function waitForExit(children, deadlineMs) {
123
+ while (Date.now() < deadlineMs) {
124
+ if (children.every((entry) => entry.child.exitCode !== null || entry.child.signalCode !== null)) return;
125
+ await sleep(POLL_MS);
126
+ }
127
+ }
128
+
129
+ function stillOwned(entry) {
130
+ const current = processIdentity(entry.pid);
131
+ if (!current) return { owned: false, gone: true };
132
+ if (current.state.startsWith("Z")) return { owned: false, gone: true };
133
+ return {
134
+ owned: current.startedAtOs === entry.startedAtOs && current.pgid === entry.pgid && (current.command === entry.title || current.command === entry.initialCommand),
135
+ gone: false,
136
+ current,
137
+ };
138
+ }
139
+
140
+ function processGroupPids(pgid) {
141
+ const result = spawnSync("pgrep", ["-g", String(pgid)], { encoding: "utf8" });
142
+ if (result.status !== 0 && result.status !== 1) throw new Error(`could not inspect process group ${pgid}`);
143
+ return result.stdout.split(/\s+/).filter(Boolean).map(Number).filter((pid) => pid !== process.pid);
144
+ }
145
+
146
+ function pidStillInGroup(pid, pgid) {
147
+ const result = spawnSync("ps", ["-p", String(pid), "-o", "pgid="], { encoding: "utf8" });
148
+ return result.status === 0 && Number(result.stdout.trim()) === pgid;
149
+ }
150
+
151
+ async function guardianMain(options) {
152
+ process.title = `bl-load-t-${options.runId.slice(-6)}`;
153
+ const pgid = process.pid;
154
+ let cleanupPromise = null;
155
+ let requestedSignal = null;
156
+ const target = spawn(options.command[0], options.command.slice(1), { stdio: "inherit" });
157
+
158
+ function cleanupGroup() {
159
+ if (cleanupPromise) return cleanupPromise;
160
+ cleanupPromise = (async () => {
161
+ let members = processGroupPids(pgid);
162
+ for (const pid of members) {
163
+ if (pidStillInGroup(pid, pgid)) {
164
+ try { process.kill(pid, "SIGTERM"); } catch (error) { if (error.code !== "ESRCH") throw error; }
165
+ }
166
+ }
167
+ const termDeadline = Date.now() + TERM_GRACE_MS;
168
+ while (Date.now() < termDeadline && (members = processGroupPids(pgid)).length) await sleep(POLL_MS);
169
+ members = processGroupPids(pgid);
170
+ for (const pid of members) {
171
+ if (pidStillInGroup(pid, pgid)) {
172
+ try { process.kill(pid, "SIGKILL"); } catch (error) { if (error.code !== "ESRCH") throw error; }
173
+ }
174
+ }
175
+ const killDeadline = Date.now() + TERM_GRACE_MS;
176
+ while (Date.now() < killDeadline && processGroupPids(pgid).length) await sleep(POLL_MS);
177
+ const survivors = processGroupPids(pgid);
178
+ if (survivors.length) throw new Error(`target descendants remain: ${survivors.join(",")}`);
179
+ })();
180
+ return cleanupPromise;
181
+ }
182
+
183
+ for (const signal of ["SIGTERM", "SIGINT", "SIGHUP"]) {
184
+ process.once(signal, async () => {
185
+ requestedSignal = signal;
186
+ try { await cleanupGroup(); process.exit(128 + (signal === "SIGTERM" ? 15 : signal === "SIGINT" ? 2 : 1)); }
187
+ catch (error) { process.stderr.write(`build-loop-load-probe guardian: ${error.message}\n`); process.exit(1); }
188
+ });
189
+ }
190
+ const parentWatch = setInterval(async () => {
191
+ if (process.ppid !== 1) return;
192
+ clearInterval(parentWatch);
193
+ try { await cleanupGroup(); process.exit(1); }
194
+ catch (error) { process.stderr.write(`build-loop-load-probe guardian: ${error.message}\n`); process.exit(1); }
195
+ }, 250);
196
+
197
+ const targetExit = await new Promise((resolve) => {
198
+ target.once("error", () => resolve(127));
199
+ target.once("exit", (code, signal) => resolve(code ?? (signal ? 128 : 1)));
200
+ });
201
+ clearInterval(parentWatch);
202
+ if (!requestedSignal) {
203
+ try { await cleanupGroup(); process.exit(targetExit); }
204
+ catch (error) { process.stderr.write(`build-loop-load-probe guardian: ${error.message}\n`); process.exit(1); }
205
+ }
206
+ }
207
+
208
+ async function supervisorMain(options) {
209
+ if (process.platform === "win32") fail("synthetic load supervision currently supports macOS and Linux only");
210
+ options.runId = randomUUID();
211
+ process.title = `bl-load-s-${options.runId.slice(-6)}`;
212
+ const cpuCount = Math.max(1, os.cpus().length);
213
+ const cpuCap = Math.max(1, cpuCount - 2);
214
+ const workerCount = Math.min(Math.floor(options.workers), cpuCap, MAX_WORKERS);
215
+ const deadlineEpochMs = Date.now() + Math.round(options.durationSeconds * 1000);
216
+ const receiptRoot = cacheRoot();
217
+ pruneReceipts(receiptRoot);
218
+ const receiptPath = path.join(receiptRoot, `${options.runId}.json`);
219
+ const children = [];
220
+ let target = null;
221
+ let cleanupPromise = null;
222
+ let cleanupErrors = [];
223
+ const receipt = {
224
+ schemaVersion: 1,
225
+ product: "build-loop",
226
+ purpose: "bounded-synthetic-cpu-load",
227
+ runId: options.runId,
228
+ state: "starting",
229
+ supervisor: { pid: process.pid, title: process.title },
230
+ requestedWorkers: Math.floor(options.workers),
231
+ admittedWorkers: workerCount,
232
+ startedAt: new Date().toISOString(),
233
+ deadlineAt: new Date(deadlineEpochMs).toISOString(),
234
+ workers: [],
235
+ };
236
+ atomicWriteJson(receiptPath, receipt, { exclusive: true });
237
+
238
+ function cleanup(reason) {
239
+ if (cleanupPromise) return cleanupPromise;
240
+ cleanupPromise = (async () => {
241
+ receipt.state = "stopping";
242
+ receipt.stopReason = reason;
243
+ atomicWriteJson(receiptPath, receipt);
244
+
245
+ // At the hard deadline, let workers finish their current bounded math
246
+ // chunk and deliver their exit event before attempting a signal. This
247
+ // avoids treating the brief running-to-zombie transition as ambiguity.
248
+ if (Date.now() >= deadlineEpochMs) {
249
+ await waitForExit(children, Date.now() + 250);
250
+ }
251
+
252
+ for (const entry of children) {
253
+ if (entry.child.exitCode !== null || entry.child.signalCode !== null) continue;
254
+ const check = stillOwned(entry);
255
+ if (!check.gone && !check.owned) {
256
+ cleanupErrors.push(`refused TERM for ambiguous pid ${entry.pid}`);
257
+ continue;
258
+ }
259
+ if (check.owned) {
260
+ try { entry.child.kill("SIGTERM"); } catch (error) {
261
+ if (error.code !== "ESRCH") cleanupErrors.push(`TERM pid ${entry.pid}: ${error.message}`);
262
+ }
263
+ }
264
+ }
265
+ await waitForExit(children, Date.now() + TERM_GRACE_MS);
266
+ const survivors = children.filter((entry) => {
267
+ const check = stillOwned(entry);
268
+ return !check.gone && check.owned;
269
+ }).map((entry) => entry.pid);
270
+ if (survivors.length) cleanupErrors.push(`owned workers remain until hard deadline: ${survivors.join(",")}`);
271
+ receipt.state = cleanupErrors.length ? "cleanup-failed" : "ended";
272
+ receipt.endedAt = new Date().toISOString();
273
+ receipt.cleanup = { verifiedZeroSurvivors: survivors.length === 0, errors: cleanupErrors };
274
+ atomicWriteJson(receiptPath, receipt);
275
+ })();
276
+ return cleanupPromise;
277
+ }
278
+
279
+ for (const signal of ["SIGTERM", "SIGINT", "SIGHUP"]) {
280
+ process.once(signal, async () => {
281
+ if (target && target.exitCode === null && target.signalCode === null) {
282
+ try { target.kill(signal); } catch (error) {
283
+ if (error.code !== "ESRCH") cleanupErrors.push(`target ${signal}: ${error.message}`);
284
+ }
285
+ }
286
+ await cleanup(`supervisor-${signal.toLowerCase()}`);
287
+ process.exit(cleanupErrors.length ? 1 : 128 + (signal === "SIGTERM" ? 15 : signal === "SIGINT" ? 2 : 1));
288
+ });
289
+ }
290
+
291
+ try {
292
+ for (let index = 0; index < workerCount; index += 1) {
293
+ const child = spawn(process.execPath, [__filename, "--worker", "--run-id", options.runId, "--deadline-epoch-ms", String(deadlineEpochMs)], {
294
+ detached: true,
295
+ stdio: "ignore",
296
+ });
297
+ let identity = null;
298
+ for (let attempt = 0; attempt < 10 && !identity; attempt += 1) {
299
+ identity = processIdentity(child.pid);
300
+ if (!identity) await sleep(10);
301
+ }
302
+ if (!identity) {
303
+ child.kill("SIGTERM");
304
+ throw new Error(`could not establish identity for worker pid ${child.pid}`);
305
+ }
306
+ const title = `bl-load-w-${options.runId.slice(-6)}`;
307
+ const entry = { child, pid: child.pid, pgid: identity.pgid, startedAtOs: identity.startedAtOs, initialCommand: identity.command, title };
308
+ children.push(entry);
309
+ try {
310
+ os.setPriority(child.pid, os.constants.priority.PRIORITY_BELOW_NORMAL);
311
+ } catch (error) {
312
+ throw new Error(`could not lower priority for worker pid ${child.pid}: ${error.message}`);
313
+ }
314
+ receipt.workers.push({ pid: entry.pid, pgid: entry.pgid, startedAtOs: entry.startedAtOs, title, priority: "below-normal" });
315
+ }
316
+ receipt.state = "running";
317
+ atomicWriteJson(receiptPath, receipt);
318
+
319
+ let commandExit = 0;
320
+ if (options.command.length) {
321
+ target = spawn(process.execPath, [__filename, "--guardian", "--run-id", options.runId, "--deadline-epoch-ms", String(deadlineEpochMs), "--", ...options.command], { stdio: "inherit", detached: true });
322
+ commandExit = await new Promise((resolve) => {
323
+ target.once("error", () => resolve(127));
324
+ target.once("exit", (code, signal) => resolve(code ?? (signal ? 128 : 1)));
325
+ });
326
+ } else {
327
+ await sleep(Math.max(0, deadlineEpochMs - Date.now()));
328
+ }
329
+ await cleanup(options.command.length ? "command-exit" : "deadline");
330
+ const output = { runId: options.runId, requestedWorkers: Math.floor(options.workers), admittedWorkers: workerCount, commandExit, receiptId: options.runId, cleanup: receipt.cleanup };
331
+ if (options.json) process.stdout.write(`${JSON.stringify(output)}\n`);
332
+ else process.stdout.write(`build-loop load probe ${options.runId}: ${workerCount} worker(s), zero survivors verified\n`);
333
+ process.exitCode = cleanupErrors.length ? 1 : commandExit;
334
+ } catch (error) {
335
+ cleanupErrors.push(error.message);
336
+ await cleanup("supervisor-error");
337
+ process.stderr.write(`build-loop-load-probe: ${error.message}\n`);
338
+ process.exitCode = 1;
339
+ }
340
+ }
341
+
342
+ const options = parseArgs(process.argv.slice(2));
343
+ if (options.worker) workerMain(options);
344
+ else if (options.guardian) guardianMain(options);
345
+ else supervisorMain(options);
@@ -1,20 +1,42 @@
1
1
  ---
2
2
  name: build-loop
3
- description: "Main Build Loop entrypoint for multi-step code work. Use for features, fixes, refactors, migrations, schema/API changes, or any task touching multiple files. Loads the canonical internal workflow from skills/build-loop/SKILL.md."
3
+ description: "The single Build Loop plugin entrypoint. Use when the user asks to run Build Loop or requests multi-step features, fixes, refactors, migrations, schema/API changes, debugging, optimization, research, repository maintenance, or closeout. Routes plain-language intent automatically without mode selection, including non-Git state isolation through the internal data-plane-worktrees workflow."
4
+ user-invocable: true
5
+ public-justification: "Codex has no commands surface, so a skill is the only way to expose an entrypoint on that host. This wrapper IS the Codex equivalent of /build-loop:run — it is the single public entrypoint, not one of many. The Claude-side skills stay hidden because Claude has commands/run.md to carry that role. Do not add a Claude-side twin of this file."
4
6
  ---
5
7
 
6
8
  <!-- SPDX-FileCopyrightText: 2025-2026 Tyrone Ross, Jr <46267523+tyroneross@users.noreply.github.com> | SPDX-License-Identifier: Apache-2.0 -->
7
9
 
8
10
  # Build Loop
9
11
 
10
- This is the public Codex entrypoint. It keeps the `#` picker focused while the
11
- full workflow remains in the internal skill tree.
12
+ This is the only public Codex entrypoint. Route the user's plain-language goal
13
+ through the canonical workflow without asking them to choose a mode or helper.
12
14
 
13
15
  Load and follow the canonical workflow:
14
16
 
15
17
  ```text
16
- ../skills/build-loop/SKILL.md
18
+ ../../skills/build-loop/SKILL.md
17
19
  ```
18
20
 
19
- Use internal helper skills only through that workflow or by reading their files
20
- directly from `../skills/` when the canonical workflow asks for them.
21
+ Use internal helper skills only through that workflow. Read their files
22
+ directly from `../../skills/` when the canonical workflow asks for them.
23
+
24
+ Pointers written as `references/<name>.md` inside `skills/build-loop/SKILL.md`
25
+ resolve relative to `skills/build-loop/` — read them at
26
+ `../../skills/build-loop/references/<name>.md`, falling back to the repo-root
27
+ `../../references/<name>.md` when the skill's own directory has no such file.
28
+
29
+ ## Completion gate
30
+
31
+ Before declaring a Codex Build Loop run complete:
32
+
33
+ - Integrate every validated run commit into the intended local target branch and
34
+ rerun the canonical verifier on that exact target state.
35
+ - For every run-created branch or worktree that has been merged, load
36
+ `../../references/phase-d-closeout.md` and close it with `collapse_run.py`
37
+ using `--strict --merged-only --owner-released`.
38
+ - Require `strict_success: true`, `bundle_verified: true`, `errors: []`, an
39
+ absent worktree path, and an absent temporary branch ref before saying
40
+ "done."
41
+ - Report the run as partial when any branch or worktree remains open without an
42
+ explicit retained disposition.
@@ -0,0 +1,37 @@
1
+ ---
2
+ name: feedback
3
+ description: Report a bug or send feedback about the build-loop plugin
4
+ ---
5
+
6
+ # Report build-loop feedback
7
+
8
+ File the user's report as a GitHub issue on `tyroneross/build-loop`. Issues are this plugin's
9
+ support channel — the manifest carries no contact address by design.
10
+
11
+ ## Steps
12
+
13
+ 1. Ask what went wrong, if the user has not already said. One question, not a form.
14
+ 2. Gather the context that makes a report actionable, without interrogating the user:
15
+ - plugin version from `.claude-plugin/plugin.json`
16
+ - `claude --version`
17
+ - `uname -sm`
18
+ - which command or skill misbehaved, and what it did instead
19
+ 3. Show the user the exact title and body you intend to file. Their report, their words.
20
+ 4. Create it:
21
+
22
+ ```bash
23
+ gh issue create --repo tyroneross/build-loop \
24
+ --title "<one line: what broke>" \
25
+ --body "<what happened / what was expected / steps / versions>"
26
+ ```
27
+
28
+ 5. If `gh` is missing or unauthenticated, do not fail — print the URL so the user
29
+ can open it in a browser: https://github.com/tyroneross/build-loop/issues/new
30
+
31
+ 6. Report the resulting issue URL back to the user.
32
+
33
+ ## Rules
34
+
35
+ - A GitHub issue is public. Redact secrets, tokens, absolute home paths, and any
36
+ file contents the user has not seen before sending.
37
+ - Never file without showing the user the body first.
@@ -5,22 +5,9 @@
5
5
  * Improves incident quality by ensuring all critical fields are filled.
6
6
  */
7
7
  import type { Incident } from './types';
8
+ export { calculateQualityScore, generateQualityFeedback } from './quality';
8
9
  /**
9
10
  * Build a complete incident using interactive prompts
10
11
  */
11
12
  export declare function buildIncidentInteractive(baseIncident: Partial<Incident>): Promise<Incident>;
12
- /**
13
- * Calculate overall quality score for an incident
14
- *
15
- * Scoring rubric:
16
- * - Root cause analysis: 30% (description length + confidence)
17
- * - Fix details: 30% (approach + changes documented)
18
- * - Verification: 20% (verification status)
19
- * - Documentation: 20% (tags + prevention advice)
20
- */
21
- export declare function calculateQualityScore(incident: Incident | Partial<Incident>): number;
22
- /**
23
- * Generate quality feedback text
24
- */
25
- export declare function generateQualityFeedback(incident: Incident): string;
26
13
  //# sourceMappingURL=interactive-verifier.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"interactive-verifier.d.ts","sourceRoot":"","sources":["../../src/interactive-verifier.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAA4D,MAAM,SAAS,CAAC;AAElG;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,YAAY,EAAE,OAAO,CAAC,QAAQ,CAAC,GAC9B,OAAO,CAAC,QAAQ,CAAC,CAyDnB;AAkSD;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,CAiDpF;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAkDlE"}
1
+ {"version":3,"file":"interactive-verifier.d.ts","sourceRoot":"","sources":["../../src/interactive-verifier.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAA4D,MAAM,SAAS,CAAC;AAGlG,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAE3E;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,YAAY,EAAE,OAAO,CAAC,QAAQ,CAAC,GAC9B,OAAO,CAAC,QAAQ,CAAC,CAyDnB"}
@@ -11,10 +11,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
11
11
  return (mod && mod.__esModule) ? mod : { "default": mod };
12
12
  };
13
13
  Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.generateQualityFeedback = exports.calculateQualityScore = void 0;
14
15
  exports.buildIncidentInteractive = buildIncidentInteractive;
15
- exports.calculateQualityScore = calculateQualityScore;
16
- exports.generateQualityFeedback = generateQualityFeedback;
17
16
  const prompts_1 = __importDefault(require("prompts"));
17
+ const quality_1 = require("./quality");
18
+ var quality_2 = require("./quality");
19
+ Object.defineProperty(exports, "calculateQualityScore", { enumerable: true, get: function () { return quality_2.calculateQualityScore; } });
20
+ Object.defineProperty(exports, "generateQualityFeedback", { enumerable: true, get: function () { return quality_2.generateQualityFeedback; } });
18
21
  /**
19
22
  * Build a complete incident using interactive prompts
20
23
  */
@@ -36,7 +39,7 @@ async function buildIncidentInteractive(baseIncident) {
36
39
  incident.files_changed = await collectFilesChanged();
37
40
  }
38
41
  // 6. Calculate quality score
39
- const qualityScore = calculateQualityScore(incident);
42
+ const qualityScore = (0, quality_1.calculateQualityScore)(incident);
40
43
  // Update completeness
41
44
  incident.completeness = {
42
45
  symptom: !!incident.symptom && incident.symptom.length >= 20,
@@ -322,114 +325,4 @@ async function collectFilesChanged() {
322
325
  });
323
326
  return files || [];
324
327
  }
325
- /**
326
- * Calculate overall quality score for an incident
327
- *
328
- * Scoring rubric:
329
- * - Root cause analysis: 30% (description length + confidence)
330
- * - Fix details: 30% (approach + changes documented)
331
- * - Verification: 20% (verification status)
332
- * - Documentation: 20% (tags + prevention advice)
333
- */
334
- function calculateQualityScore(incident) {
335
- let score = 0.0;
336
- // Root cause analysis (0.3 max)
337
- if (incident.root_cause) {
338
- // Description quality (0.15 max)
339
- const descLength = incident.root_cause.description?.length || 0;
340
- if (descLength >= 50)
341
- score += 0.10;
342
- if (descLength >= 100)
343
- score += 0.05;
344
- // Confidence (0.15 max)
345
- const confidence = incident.root_cause.confidence || 0;
346
- if (confidence >= 0.7)
347
- score += 0.10;
348
- if (confidence >= 0.9)
349
- score += 0.05;
350
- }
351
- // Fix details (0.3 max)
352
- if (incident.fix) {
353
- // Approach documented (0.15 max)
354
- if (incident.fix.approach && incident.fix.approach.length >= 20) {
355
- score += 0.15;
356
- }
357
- // Changes documented (0.15 max)
358
- const changesCount = incident.fix.changes?.length || 0;
359
- if (changesCount >= 1)
360
- score += 0.10;
361
- if (changesCount >= 3)
362
- score += 0.05;
363
- }
364
- // Verification (0.2 max)
365
- if (incident.verification) {
366
- if (incident.verification.status === 'verified')
367
- score += 0.15;
368
- else if (incident.verification.status === 'partial')
369
- score += 0.08;
370
- // Additional verification details (0.05 max)
371
- if (incident.verification.regression_tests_passed)
372
- score += 0.025;
373
- if (incident.verification.user_journey_tested)
374
- score += 0.025;
375
- }
376
- // Documentation (0.2 max)
377
- const tagsCount = incident.tags?.length || 0;
378
- if (tagsCount >= 2)
379
- score += 0.05;
380
- if (tagsCount >= 3)
381
- score += 0.05;
382
- if (tagsCount >= 5)
383
- score += 0.05;
384
- // Prevention advice
385
- if (incident.prevention)
386
- score += 0.05;
387
- return Math.min(score, 1.0); // Cap at 1.0
388
- }
389
- /**
390
- * Generate quality feedback text
391
- */
392
- function generateQualityFeedback(incident) {
393
- const score = calculateQualityScore(incident);
394
- const percentage = (score * 100).toFixed(0);
395
- const feedback = [];
396
- feedback.push(`Overall Quality: ${percentage}%`);
397
- if (score >= 0.9) {
398
- feedback.push('✅ Excellent - This incident is well documented and highly reusable.');
399
- }
400
- else if (score >= 0.75) {
401
- feedback.push('✅ Good - This incident has sufficient detail for future reference.');
402
- }
403
- else if (score >= 0.5) {
404
- feedback.push('⚠️ Fair - Consider adding more details to improve reusability.');
405
- }
406
- else {
407
- feedback.push('❌ Poor - This incident needs more detail to be useful.');
408
- }
409
- // Specific improvement suggestions
410
- const suggestions = [];
411
- if (!incident.root_cause?.description || incident.root_cause.description.length < 50) {
412
- suggestions.push('- Add more detail to root cause analysis');
413
- }
414
- if ((incident.root_cause?.confidence || 0) < 0.7) {
415
- suggestions.push('- Increase confidence score if diagnosis is clear');
416
- }
417
- if (!incident.fix?.approach || incident.fix.approach.length < 20) {
418
- suggestions.push('- Document the fix approach more thoroughly');
419
- }
420
- if ((incident.fix?.changes?.length || 0) === 0) {
421
- suggestions.push('- Document specific file changes');
422
- }
423
- if (incident.verification?.status !== 'verified') {
424
- suggestions.push('- Verify the fix works before storing');
425
- }
426
- if ((incident.tags?.length || 0) < 3) {
427
- suggestions.push('- Add more tags for better categorization');
428
- }
429
- if (suggestions.length > 0) {
430
- feedback.push('\nSuggestions for improvement:');
431
- feedback.push(...suggestions);
432
- }
433
- return feedback.join('\n');
434
- }
435
328
  //# sourceMappingURL=interactive-verifier.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"interactive-verifier.js","sourceRoot":"","sources":["../../src/interactive-verifier.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interactive-verifier.js","sourceRoot":"","sources":["../../src/interactive-verifier.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { Incident } from './types';
2
+ /** Shared incident quality scoring, synced from Coding Debugger v1.9.0. */
3
+ export declare function calculateQualityScore(incident: Incident | Partial<Incident>): number;
4
+ export declare function generateQualityFeedback(incident: Incident): string;
5
+ //# sourceMappingURL=quality.d.ts.map