@bolloon/bolloon-agent 0.1.0 → 0.1.2

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 (581) hide show
  1. package/bin/bolloon-cli.cjs +157 -0
  2. package/bin/bolloon-daemon.sh +207 -0
  3. package/bin/bolloon.cmd +11 -0
  4. package/dist/agents/constraint-layer.js +10 -15
  5. package/dist/agents/pi-sdk.js +433 -106
  6. package/dist/agents/protocol.js +82 -1
  7. package/dist/agents/subagent-manager.js +2 -2
  8. package/dist/agents/workflow-engine.js +15 -20
  9. package/dist/agents/workflow-pivot-loop.js +541 -0
  10. package/dist/bollharness/src/index.js +5 -0
  11. package/dist/bollharness/src/scripts/checks/check_adr_plan_numbering.js +6 -0
  12. package/dist/bollharness/src/scripts/checks/check_api_types.js +45 -0
  13. package/dist/bollharness/src/scripts/checks/check_artifact_link.js +146 -0
  14. package/dist/bollharness/src/scripts/checks/check_bridge_deps.js +6 -0
  15. package/dist/bollharness/src/scripts/checks/check_bugfix_binding.js +6 -0
  16. package/dist/bollharness/src/scripts/checks/check_bugfix_binding_ci.js +6 -0
  17. package/dist/bollharness/src/scripts/checks/check_doc_file_references.js +6 -0
  18. package/dist/bollharness/src/scripts/checks/check_doc_freshness.js +135 -0
  19. package/dist/bollharness/src/scripts/checks/check_doc_links.js +31 -0
  20. package/dist/bollharness/src/scripts/checks/check_file_existence_claims.js +6 -0
  21. package/dist/bollharness/src/scripts/checks/check_fragment_integrity.js +34 -0
  22. package/dist/bollharness/src/scripts/checks/check_hook_installed.js +63 -0
  23. package/dist/bollharness/src/scripts/checks/check_issue_closure.js +41 -0
  24. package/dist/bollharness/src/scripts/checks/check_mcp_parity.js +6 -0
  25. package/dist/bollharness/src/scripts/checks/check_security.js +48 -0
  26. package/dist/bollharness/src/scripts/checks/check_skill_parity.js +6 -0
  27. package/dist/bollharness/src/scripts/checks/check_versions.js +6 -0
  28. package/dist/bollharness/src/scripts/checks/finding.js +13 -0
  29. package/dist/bollharness/src/scripts/checks/next_decision_number.js +20 -0
  30. package/dist/bollharness/src/scripts/checks/regenerate_magic_docs.js +6 -0
  31. package/dist/bollharness/src/scripts/ci/detect_rebaseline_triggers.js +8 -0
  32. package/dist/bollharness/src/scripts/ci/scan_subprocess_cfg.js +8 -0
  33. package/dist/bollharness/src/scripts/ci/scan_verify_artifacts.js +8 -0
  34. package/dist/bollharness/src/scripts/ci/scan_yaml_schema.js +8 -0
  35. package/dist/bollharness/src/scripts/context_router.js +67 -0
  36. package/dist/bollharness/src/scripts/deploy-guard.js +157 -0
  37. package/dist/bollharness/src/scripts/guard-feedback.js +192 -0
  38. package/dist/bollharness/src/scripts/guard_router.js +158 -0
  39. package/dist/bollharness/src/scripts/hooks/_hook_output.js +6 -0
  40. package/dist/bollharness/src/scripts/hooks/auto-python3.js +6 -0
  41. package/dist/bollharness/src/scripts/hooks/deploy-progress-on-session-end.js +6 -0
  42. package/dist/bollharness/src/scripts/hooks/failure-analyzer.js +6 -0
  43. package/dist/bollharness/src/scripts/hooks/gate-judgment-inject.js +92 -0
  44. package/dist/bollharness/src/scripts/hooks/gate-transition-judgment.js +63 -0
  45. package/dist/bollharness/src/scripts/hooks/inbox-ack.js +6 -0
  46. package/dist/bollharness/src/scripts/hooks/inbox-inject-on-start.js +6 -0
  47. package/dist/bollharness/src/scripts/hooks/inbox-validate.js +6 -0
  48. package/dist/bollharness/src/scripts/hooks/inbox-write-ledger.js +6 -0
  49. package/dist/bollharness/src/scripts/hooks/initializer-agent.js +6 -0
  50. package/dist/bollharness/src/scripts/hooks/loop-detection.js +73 -0
  51. package/dist/bollharness/src/scripts/hooks/owner-guard.js +6 -0
  52. package/dist/bollharness/src/scripts/hooks/precompact.js +6 -0
  53. package/dist/bollharness/src/scripts/hooks/review-agent-gatekeeper.js +6 -0
  54. package/dist/bollharness/src/scripts/hooks/risk-tracker.js +108 -0
  55. package/dist/bollharness/src/scripts/hooks/sanitize-on-read.js +6 -0
  56. package/dist/bollharness/src/scripts/hooks/session-reflection.js +7 -0
  57. package/dist/bollharness/src/scripts/hooks/session-start-magic-docs.js +7 -0
  58. package/dist/bollharness/src/scripts/hooks/session-start-reset-risk.js +7 -0
  59. package/dist/bollharness/src/scripts/hooks/session-start-toolkit-reminder.js +7 -0
  60. package/dist/bollharness/src/scripts/hooks/stop-evaluator.js +157 -0
  61. package/dist/bollharness/src/scripts/hooks/tool-call-counter.js +6 -0
  62. package/dist/bollharness/src/scripts/hooks/trace-analyzer.js +10 -0
  63. package/dist/bollharness/src/scripts/install/install-trust-token.js +7 -0
  64. package/dist/bollharness/src/scripts/install/multi_project_registry.js +9 -0
  65. package/dist/bollharness/src/scripts/install/phase2_auto.js +21 -0
  66. package/dist/bollharness/src/scripts/install/pre_commit_installer.js +6 -0
  67. package/dist/bollharness/src/scripts/install/tier_selector.js +7 -0
  68. package/dist/bollharness/src/scripts/install/transcript_miner.js +7 -0
  69. package/dist/bollharness/src/scripts/lib/claim_patterns.js +10 -0
  70. package/dist/bollharness/src/scripts/lib/sanitize_patterns.js +12 -0
  71. package/dist/bollharness/src/scripts/sanitize.js +6 -0
  72. package/dist/bollharness-integration/channel-judgment-engine.js +530 -0
  73. package/dist/bollharness-integration/context-chain-router.js +383 -0
  74. package/dist/bollharness-integration/context-router-judgment.js +13 -21
  75. package/dist/bollharness-integration/context-router.js +22 -64
  76. package/dist/bollharness-integration/gate-state-machine.js +14 -19
  77. package/dist/bollharness-integration/gate-transition-hooks.js +16 -61
  78. package/dist/bollharness-integration/guard-checker.js +21 -68
  79. package/dist/bollharness-integration/index.js +14 -124
  80. package/dist/bollharness-integration/integration.js +13 -20
  81. package/dist/bollharness-integration/llm-judgment-engine.js +569 -0
  82. package/dist/bollharness-integration/skill-adapter.js +18 -64
  83. package/dist/cli-entry.js +261 -0
  84. package/dist/constraint-runtime/src/commands.js +17 -7
  85. package/dist/constraint-runtime/src/constraint/budget.js +1 -6
  86. package/dist/constraint-runtime/src/constraint/permission.js +1 -6
  87. package/dist/constraint-runtime/src/models.js +1 -3
  88. package/dist/constraint-runtime/src/tools.js +17 -7
  89. package/dist/constraints/index.js +1 -7
  90. package/dist/documents/reader.js +8 -49
  91. package/dist/heartbeat/DaemonManager.js +242 -0
  92. package/dist/heartbeat/HealthMonitor.js +285 -0
  93. package/dist/heartbeat/StartupVerifier.js +205 -0
  94. package/dist/heartbeat/Watchdog.js +168 -0
  95. package/dist/heartbeat/index.js +84 -0
  96. package/dist/heartbeat/types.js +5 -0
  97. package/dist/index.js +381 -28
  98. package/dist/llm/config-store.js +31 -57
  99. package/dist/llm/llm-judgment-client.js +389 -0
  100. package/dist/llm/pi-ai.js +9 -52
  101. package/dist/network/agent-network.js +46 -90
  102. package/dist/network/hybrid-messenger.js +125 -0
  103. package/dist/network/iroh-bootstrap.js +38 -0
  104. package/dist/network/iroh-discovery.js +145 -0
  105. package/dist/network/iroh-integration.js +9 -16
  106. package/dist/network/iroh-transport.js +10 -48
  107. package/dist/network/p2p.js +23 -62
  108. package/dist/network/storage/adapters/json-adapter.js +4 -42
  109. package/dist/network/storage/index.js +147 -0
  110. package/dist/network/storage/types.js +14 -0
  111. package/dist/pi-ecosystem/index.js +233 -0
  112. package/dist/pi-ecosystem-colony/index.js +29 -90
  113. package/dist/pi-ecosystem-goals/index.js +20 -74
  114. package/dist/pi-ecosystem-judgment/decision.js +29 -47
  115. package/dist/pi-ecosystem-judgment/distillation.js +16 -29
  116. package/dist/pi-ecosystem-judgment/human-value-store.js +13 -60
  117. package/dist/pi-ecosystem-judgment/index.js +21 -74
  118. package/dist/pi-ecosystem-judgment/value-injection.js +26 -72
  119. package/dist/pi-ecosystem-mcp/index.js +24 -78
  120. package/dist/pi-ecosystem-subagents/index.js +20 -69
  121. package/dist/social/ant-colony/AdaptiveHeartbeat.js +3 -8
  122. package/dist/social/ant-colony/PheromoneEngine.js +11 -49
  123. package/dist/social/ant-colony/index.js +6 -0
  124. package/dist/social/ant-colony/types.js +4 -8
  125. package/dist/social/channels/ChannelManager.js +8 -46
  126. package/dist/social/channels/DiapChannelBridge.js +9 -47
  127. package/dist/social/channels/InterestMatcher.js +2 -7
  128. package/dist/social/channels/channel-agent-session.js +309 -0
  129. package/dist/social/channels/channel-heartbeat-agent.js +494 -0
  130. package/dist/social/channels/diap-doc-parser.js +204 -0
  131. package/dist/social/channels/harness-workflow-integrator.js +446 -0
  132. package/dist/social/channels/index.js +9 -0
  133. package/dist/social/channels/types.js +3 -7
  134. package/dist/social/global-shared-context.js +6 -47
  135. package/dist/social/heartbeat.js +29 -72
  136. package/dist/social/persona/enhanced-persona.js +299 -0
  137. package/dist/web/client.js +302 -136
  138. package/dist/web/components/p2p/index.js +159 -9
  139. package/dist/web/components/p2p/p2p-connection.js +136 -0
  140. package/dist/web/components/p2p/p2p-manager.js +24 -0
  141. package/dist/web/components/p2p/p2p-store-memory.js +1 -1
  142. package/dist/web/components/p2p/types.js +7 -0
  143. package/dist/web/index.html +5 -0
  144. package/dist/web/style.css +118 -0
  145. package/package.json +12 -6
  146. package/scripts/build-cli.js +206 -0
  147. package/scripts/postinstall.js +153 -0
  148. package/src/agents/pi-sdk.ts +347 -28
  149. package/src/agents/protocol.ts +95 -1
  150. package/src/agents/workflow-pivot-loop.ts +674 -0
  151. package/src/bollharness/scripts/context-fragments/pi-agent-operations.md +34 -0
  152. package/src/cli-entry.ts +304 -0
  153. package/src/heartbeat/DaemonManager.ts +283 -0
  154. package/src/heartbeat/HealthMonitor.ts +316 -0
  155. package/src/heartbeat/StartupVerifier.ts +223 -0
  156. package/src/heartbeat/Watchdog.ts +198 -0
  157. package/src/heartbeat/index.ts +108 -0
  158. package/src/heartbeat/types.ts +82 -0
  159. package/src/llm/config-store.ts +23 -5
  160. package/src/network/iroh-transport.ts +3 -3
  161. package/src/web/client.js +302 -136
  162. package/src/web/components/p2p/P2PModal.tsx +91 -3
  163. package/src/web/components/p2p/index.ts +171 -9
  164. package/src/web/components/p2p/p2p-connection.ts +153 -1
  165. package/src/web/components/p2p/p2p-manager.ts +39 -1
  166. package/src/web/components/p2p/p2p-store-memory.ts +1 -1
  167. package/src/web/components/p2p/p2p-tools.ts +315 -0
  168. package/src/web/components/p2p/types.ts +58 -0
  169. package/src/web/index.html +5 -0
  170. package/src/web/server.ts +353 -36
  171. package/src/web/style.css +118 -0
  172. package/tsconfig.cli.json +16 -0
  173. package/tsconfig.electron.json +1 -1
  174. package/tsconfig.json +1 -2
  175. package/dist/constraint-runtime/tests/agent.test.js +0 -16
  176. package/dist/constraint-runtime/tests/constraint.test.js +0 -41
  177. package/dist/constraint-runtime/tests/skill.test.js +0 -19
  178. package/dist/constraint-runtime/tests/thinking.test.js +0 -22
  179. package/dist/electron-preload.js +0 -15
  180. package/dist/electron-preload.js.map +0 -1
  181. package/dist/electron.js +0 -206
  182. package/dist/electron.js.map +0 -1
  183. package/dist/test/constraint-layer.test.js +0 -164
  184. package/dist/test/global-shared-context.test.js +0 -315
  185. package/dist/test/pi-sdk.test.js +0 -47
  186. package/dist/test/set-persona.test.js +0 -38
  187. package/dist/test/subagent-manager.test.js +0 -276
  188. package/dist/test/workflow-engine.test.js +0 -87
  189. package/dist/web/server.js +0 -1647
  190. package/dist/web/server.js.map +0 -1
  191. package/dist/workflows/collaboration.js +0 -374
  192. package/dist/workflows/index.js +0 -54
  193. package/docs/agent-communication.md +0 -333
  194. package/docs/plans/2026-05-15-document-agent-design.md +0 -479
  195. package/docs/plans/2026-05-15-document-agent-implementation-plan.md +0 -792
  196. package/docs/plans/2026-05-16-chat-ui-design.md +0 -86
  197. package/docs/plans/2026-05-16-constraint-runtime-design.md +0 -106
  198. package/docs/plans/2026-05-16-constraint-runtime-implementation.md +0 -441
  199. package/docs//346/225/260/345/255/246/350/276/205/345/212/251/346/231/272/350/203/275/344/275/223-/346/240/270/345/277/203/346/225/210/346/236/234/345/256/232/344/271/211.md +0 -287
  200. package/src/bollharness/.boll/CLAUDE.md.template +0 -34
  201. package/src/bollharness/.boll/MANIFEST.yaml +0 -213
  202. package/src/bollharness/.boll/active-review-agents/.gitkeep +0 -0
  203. package/src/bollharness/.boll/agents/review-base.yaml +0 -108
  204. package/src/bollharness/.boll/deploy-allowlist.yaml +0 -38
  205. package/src/bollharness/.boll/inbox/schema/message-v1.json +0 -99
  206. package/src/bollharness/.boll/install-staging/.gitkeep +0 -0
  207. package/src/bollharness/.boll/issue-adapter.yaml +0 -31
  208. package/src/bollharness/.boll/plugins/boll-mode-toolkit/contracts/mode-contract.md +0 -85
  209. package/src/bollharness/.boll/plugins/boll-review-toolkit/contracts/evidence-packet-schema.json +0 -102
  210. package/src/bollharness/.boll/plugins/boll-review-toolkit/contracts/review-contract.yaml +0 -247
  211. package/src/bollharness/.boll/rules/backend-routes.md +0 -31
  212. package/src/bollharness/.boll/rules/closure-semantics.md +0 -30
  213. package/src/bollharness/.boll/rules/env-vars.md +0 -32
  214. package/src/bollharness/.boll/rules/hanis-protocol.md +0 -145
  215. package/src/bollharness/.boll/rules/repo-structure.md +0 -42
  216. package/src/bollharness/.boll/rules/review-agent-isolation.md +0 -73
  217. package/src/bollharness/.boll/rules/source-of-truth.md +0 -33
  218. package/src/bollharness/.boll/settings.json +0 -180
  219. package/src/bollharness/.boll/settings.json.template +0 -31
  220. package/src/bollharness/.boll/skills/arch/SKILL.md +0 -372
  221. package/src/bollharness/.boll/skills/bug-pipeline/SKILL.md +0 -168
  222. package/src/bollharness/.boll/skills/bug-triage/SKILL.md +0 -161
  223. package/src/bollharness/.boll/skills/context-chains/SKILL.md +0 -250
  224. package/src/bollharness/.boll/skills/context-chains/context-chain-index.md +0 -48
  225. package/src/bollharness/.boll/skills/context-chains/work-type-extractors/code_change_extractor.ts +0 -142
  226. package/src/bollharness/.boll/skills/context-chains/work-type-extractors/debugging_extractor.ts +0 -126
  227. package/src/bollharness/.boll/skills/context-chains/work-type-extractors/design_extractor.ts +0 -148
  228. package/src/bollharness/.boll/skills/context-chains/work-type-extractors/planning_extractor.ts +0 -162
  229. package/src/bollharness/.boll/skills/context-chains/work-type-extractors/question_extractor.ts +0 -116
  230. package/src/bollharness/.boll/skills/context-chains/work-type-extractors/review_extractor.ts +0 -136
  231. package/src/bollharness/.boll/skills/crystal-learn/SKILL.md +0 -93
  232. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-0.md +0 -34
  233. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-1.md +0 -34
  234. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-2.md +0 -35
  235. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-3.md +0 -34
  236. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-4.md +0 -43
  237. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-5.md +0 -34
  238. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-6.md +0 -37
  239. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-7.md +0 -46
  240. package/src/bollharness/.boll/skills/guardian-fixer/PROMPT.md +0 -415
  241. package/src/bollharness/.boll/skills/guardian-fixer/SKILL.md +0 -320
  242. package/src/bollharness/.boll/skills/harness-dev/SKILL.md +0 -93
  243. package/src/bollharness/.boll/skills/harness-dev/examples/README.md +0 -227
  244. package/src/bollharness/.boll/skills/harness-dev-handoff/SKILL.md +0 -165
  245. package/src/bollharness/.boll/skills/harness-eng/SKILL.md +0 -110
  246. package/src/bollharness/.boll/skills/harness-eng-test/SKILL.md +0 -79
  247. package/src/bollharness/.boll/skills/harness-lab/SKILL.md +0 -170
  248. package/src/bollharness/.boll/skills/harness-ops/SKILL.md +0 -57
  249. package/src/bollharness/.boll/skills/harness-voice/SKILL.md +0 -183
  250. package/src/bollharness/.boll/skills/judgment/SKILL.md +0 -115
  251. package/src/bollharness/.boll/skills/lead/SKILL.md +0 -245
  252. package/src/bollharness/.boll/skills/lead/install-wow-harness.md +0 -77
  253. package/src/bollharness/.boll/skills/lead/ref-review-sop.md +0 -91
  254. package/src/bollharness/.boll/skills/lead/ref-stages.md +0 -129
  255. package/src/bollharness/.boll/skills/skill-discovery/SKILL.md +0 -169
  256. package/src/bollharness/.boll/skills/task-arch/SKILL.md +0 -106
  257. package/src/bollharness/.boll/skills/toolkit/SKILL.md +0 -57
  258. package/src/bollharness/.boll/tasks/.gitkeep +0 -0
  259. package/src/bollharness/.boll/toolkit-index.yaml +0 -112
  260. package/src/bollharness/.claude/agents/review-base.yaml +0 -108
  261. package/src/bollharness/.claude/plugins/boll-mode-toolkit/.claude-plugin/plugin.json +0 -44
  262. package/src/bollharness/.claude/plugins/boll-review-toolkit/.claude-plugin/plugin.json +0 -24
  263. package/src/bollharness/.claude/plugins/boll-review-toolkit/contracts/evidence-packet-schema.json +0 -102
  264. package/src/bollharness/.claude/plugins/boll-review-toolkit/contracts/review-contract.yaml +0 -247
  265. package/src/bollharness/.claude/settings.json +0 -157
  266. package/src/bollharness/.claude/skills/arch/SKILL.md +0 -64
  267. package/src/bollharness/.claude/skills/crystal-learn/SKILL.md +0 -93
  268. package/src/bollharness/.claude/skills/guardian-fixer/PROMPT.md +0 -44
  269. package/src/bollharness/.claude/skills/guardian-fixer/SKILL.md +0 -324
  270. package/src/bollharness/.claude/skills/harness-dev/SKILL.md +0 -93
  271. package/src/bollharness/.claude/skills/harness-dev/examples/README.md +0 -17
  272. package/src/bollharness/.claude/skills/harness-dev-handoff/SKILL.md +0 -165
  273. package/src/bollharness/.claude/skills/harness-eng/SKILL.md +0 -183
  274. package/src/bollharness/.claude/skills/harness-eng-test/SKILL.md +0 -57
  275. package/src/bollharness/.claude/skills/harness-ops/SKILL.md +0 -57
  276. package/src/bollharness/.claude/skills/harness-voice/SKILL.md +0 -84
  277. package/src/bollharness/.claude/skills/lead/INDEX.md +0 -28
  278. package/src/bollharness/.claude/skills/lead/SKILL.md +0 -24
  279. package/src/bollharness/.claude/skills/lead/install-wow-harness.md +0 -77
  280. package/src/bollharness/.claude/skills/lead/ref-review-sop.md +0 -48
  281. package/src/bollharness/.claude/skills/lead/ref-stages.md +0 -58
  282. package/src/bollharness/.claude/skills/plan-lock/SKILL.md +0 -74
  283. package/src/bollharness/.claude/skills/skill-discovery/SKILL.md +0 -120
  284. package/src/bollharness/.claude/skills/task-arch/SKILL.md +0 -106
  285. package/src/bollharness/.claude/skills/toolkit/SKILL.md +0 -57
  286. package/src/bollharness/.claude/skills/toolkit/list.sh +0 -92
  287. package/src/bollharness/.githooks/pre-commit +0 -21
  288. package/src/bollharness/.github/workflows/ci.yml +0 -88
  289. package/src/bollharness/docs/decisions/ADR-030-guard-signal-protocol-and-governance-reload.md +0 -1076
  290. package/src/bollharness/docs/decisions/ADR-038-harness-optimization-strategy.md +0 -2039
  291. package/src/bollharness/docs/decisions/ADR-041-codex-claude-code-division-of-labor.md +0 -128
  292. package/src/bollharness/docs/decisions/ADR-H1-crystal-learn-revival.md +0 -188
  293. package/src/bollharness/docs/decisions/ADR-H2-identity-isolation.md +0 -183
  294. package/src/bollharness/docs/decisions/ADR-H3-memory-scope.md +0 -133
  295. package/src/bollharness/docs/decisions/ADR-H4-prompt-governance.md +0 -146
  296. package/src/bollharness/docs/decisions/ADR-H5-gate-quantization.md +0 -212
  297. package/src/bollharness/docs/decisions/ADR-H6-state-file-health.md +0 -211
  298. package/src/bollharness/docs/decisions/ADR-H8-issue-and-doc-compliance.md +0 -202
  299. package/src/bollharness/docs/decisions/ADR-H9-mailbox.md +0 -231
  300. package/src/bollharness/docs/decisions/PLAN-H1-crystal-learn-revival.md +0 -270
  301. package/src/bollharness/docs/decisions/PLAN-H2-identity-isolation.md +0 -291
  302. package/src/bollharness/docs/decisions/PLAN-H3-memory-scope.md +0 -228
  303. package/src/bollharness/docs/decisions/PLAN-H4-prompt-governance.md +0 -227
  304. package/src/bollharness/docs/decisions/PLAN-H5-gate-quantization.md +0 -239
  305. package/src/bollharness/docs/decisions/PLAN-H6-state-file-health.md +0 -325
  306. package/src/bollharness/docs/decisions/PLAN-H8-issue-and-doc-compliance.md +0 -242
  307. package/src/bollharness/docs/decisions/PLAN-H9-mailbox.md +0 -378
  308. package/src/bollharness/docs/launch-article-en.md +0 -276
  309. package/src/bollharness/docs/launch-article-zh.md +0 -305
  310. package/src/bollharness/docs/practice.html +0 -356
  311. package/src/bollharness/docs/practice.md +0 -82
  312. package/src/bollharness/docs/research/round-1/README.md +0 -11
  313. package/src/bollharness/docs/research/round-2/README.md +0 -11
  314. package/src/bollharness/docs/research/round-3/README.md +0 -11
  315. package/src/bollharness/docs/research/round-4/README.md +0 -11
  316. package/src/bollharness/docs/research/round-5/README.md +0 -11
  317. package/src/bollharness/docs/research/round-6/README.md +0 -11
  318. package/src/bollharness/package-lock.json +0 -48
  319. package/src/bollharness/reference/boll-reference/.claude/rules/backend-routes.md +0 -268
  320. package/src/bollharness/reference/boll-reference/.claude/rules/bridge.md +0 -20
  321. package/src/bollharness/reference/boll-reference/.claude/rules/closure-semantics.md +0 -30
  322. package/src/bollharness/reference/boll-reference/.claude/rules/coaching.md +0 -13
  323. package/src/bollharness/reference/boll-reference/.claude/rules/env-vars.md +0 -50
  324. package/src/bollharness/reference/boll-reference/.claude/rules/hackathon.md +0 -12
  325. package/src/bollharness/reference/boll-reference/.claude/rules/repo-structure.md +0 -184
  326. package/src/bollharness/reference/boll-reference/.claude/rules/review-agent-isolation.md +0 -112
  327. package/src/bollharness/reference/boll-reference/.claude/rules/scenes.md +0 -12
  328. package/src/bollharness/reference/boll-reference/.claude/skills/arch/SKILL.md +0 -551
  329. package/src/bollharness/reference/boll-reference/.claude/skills/boll-animation/SKILL.md +0 -26
  330. package/src/bollharness/reference/boll-reference/.claude/skills/boll-bridge/SKILL.md +0 -227
  331. package/src/bollharness/reference/boll-reference/.claude/skills/boll-bridge/agents/openai.yaml +0 -4
  332. package/src/bollharness/reference/boll-reference/.claude/skills/boll-bridge/references/bridge-failure-taxonomy.md +0 -142
  333. package/src/bollharness/reference/boll-reference/.claude/skills/boll-bridge/references/bridge-validation-ladder.md +0 -107
  334. package/src/bollharness/reference/boll-reference/.claude/skills/boll-crystal/SKILL.md +0 -893
  335. package/src/bollharness/reference/boll-reference/.claude/skills/boll-crystal-learn/SKILL.md +0 -89
  336. package/src/bollharness/reference/boll-reference/.claude/skills/boll-dev/SKILL.md +0 -93
  337. package/src/bollharness/reference/boll-reference/.claude/skills/boll-dev/examples/README.md +0 -209
  338. package/src/bollharness/reference/boll-reference/.claude/skills/boll-dev-handoff/SKILL.md +0 -165
  339. package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng/SKILL.md +0 -110
  340. package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-frontend/SKILL.md +0 -203
  341. package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-hdc/SKILL.md +0 -27
  342. package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-orchestrator/SKILL.md +0 -28
  343. package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-prompt/SKILL.md +0 -27
  344. package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-test/SKILL.md +0 -79
  345. package/src/bollharness/reference/boll-reference/.claude/skills/boll-lab/SKILL.md +0 -372
  346. package/src/bollharness/reference/boll-reference/.claude/skills/boll-run/SKILL.md +0 -437
  347. package/src/bollharness/reference/boll-reference/.claude/skills/boll-ux-appstore/SKILL.md +0 -27
  348. package/src/bollharness/reference/boll-reference/.claude/skills/boll-voice/SKILL.md +0 -442
  349. package/src/bollharness/reference/boll-reference/.claude/skills/guardian-fixer/PROMPT.md +0 -421
  350. package/src/bollharness/reference/boll-reference/.claude/skills/guardian-fixer/SKILL.md +0 -326
  351. package/src/bollharness/reference/boll-reference/.claude/skills/lead/SKILL.md +0 -155
  352. package/src/bollharness/reference/boll-reference/.claude/skills/lead/ref-review-sop.md +0 -91
  353. package/src/bollharness/reference/boll-reference/.claude/skills/lead/ref-stages.md +0 -129
  354. package/src/bollharness/reference/boll-reference/.claude/skills/nature-designer/output/skill-map-preview.png +0 -0
  355. package/src/bollharness/reference/boll-reference/.claude/skills/nature-designer/output/skill-map-v2.png +0 -0
  356. package/src/bollharness/reference/boll-reference/.claude/skills/nature-designer/output/skill-map-v3.png +0 -0
  357. package/src/bollharness/reference/boll-reference/.claude/skills/nature-designer/output/skill-map-v4.png +0 -0
  358. package/src/bollharness/reference/boll-reference/.claude/skills/plan-lock/SKILL.md +0 -425
  359. package/src/bollharness/reference/boll-reference/.claude/skills/plan-lock/ref-three-checks.md +0 -62
  360. package/src/bollharness/reference/boll-reference/.claude/skills/plan-lock/ref-wp-templates.md +0 -78
  361. package/src/bollharness/reference/boll-reference/.claude/skills/task-arch/SKILL.md +0 -76
  362. package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-graph/SKILL.md +0 -57
  363. package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-graph/beads-graph.sh +0 -153
  364. package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-init/SKILL.md +0 -52
  365. package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-init/beads-auto-link.sh +0 -76
  366. package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-sync/SKILL.md +0 -50
  367. package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-sync/beads-sync-proj.sh +0 -108
  368. package/src/bollharness/reference/boll-reference/docs/architecture/AGENT-PROFILE.md +0 -151
  369. package/src/bollharness/reference/boll-reference/docs/architecture/COST-STRUCTURE.md +0 -56
  370. package/src/bollharness/reference/boll-reference/docs/architecture/INDEX.md +0 -76
  371. package/src/bollharness/reference/boll-reference/docs/architecture/MODULE1-INTENT-FIELD.md +0 -116
  372. package/src/bollharness/reference/boll-reference/docs/architecture/MODULE2-CRYSTALLIZATION.md +0 -200
  373. package/src/bollharness/reference/boll-reference/docs/architecture/PRINCIPLES.md +0 -84
  374. package/src/bollharness/reference/boll-reference/docs/architecture/PROTOCOL-CORE.md +0 -209
  375. package/src/bollharness/reference/boll-reference/docs/architecture/VISION.md +0 -181
  376. package/src/bollharness/reference/boll-reference/docs/architecture/discussions/D-01-MARKET-SCENE-PROTOCOL.md +0 -754
  377. package/src/bollharness/templates/scaffold/.boll/guard/.gitkeep +0 -0
  378. package/src/bollharness/templates/scaffold/.boll/metrics/.gitkeep +0 -0
  379. package/src/bollharness/templates/scaffold/.boll/state/.gitkeep +0 -0
  380. package/src/bollharness/templates/scaffold/docs/INDEX.md +0 -3
  381. package/src/bollharness/templates/scaffold/docs/decisions/ADR_TEMPLATE.md +0 -38
  382. package/src/bollharness/templates/scaffold/docs/decisions/PLAN_TEMPLATE.md +0 -45
  383. package/src/bollharness/templates/scaffold/docs/decisions/tasks/.gitkeep +0 -2
  384. package/src/bollharness/templates/scaffold/docs/issues/.gitkeep +0 -0
  385. package/src/bollharness/templates/scaffold/docs/issues/GUARD_ISSUE_TEMPLATE.md +0 -35
  386. package/src/bollharness/templates/scaffold/docs/issues/ISSUE_TEMPLATE.md +0 -51
  387. package/src/bollharness/tsconfig.json +0 -26
  388. package/src/constraint-runtime/package-lock.json +0 -48
  389. package/src/constraint-runtime/package.json +0 -34
  390. package/src/constraint-runtime/src/_archive_helper.ts +0 -16
  391. package/src/constraint-runtime/src/agent/coordinator.ts +0 -71
  392. package/src/constraint-runtime/src/agent/index.ts +0 -1
  393. package/src/constraint-runtime/src/assistant/index.ts +0 -15
  394. package/src/constraint-runtime/src/bootstrap/index.ts +0 -15
  395. package/src/constraint-runtime/src/bootstrap_graph.ts +0 -17
  396. package/src/constraint-runtime/src/bridge/index.ts +0 -15
  397. package/src/constraint-runtime/src/buddy/index.ts +0 -15
  398. package/src/constraint-runtime/src/cli/index.ts +0 -15
  399. package/src/constraint-runtime/src/command_graph.ts +0 -20
  400. package/src/constraint-runtime/src/commands.ts +0 -83
  401. package/src/constraint-runtime/src/components/index.ts +0 -15
  402. package/src/constraint-runtime/src/constants/index.ts +0 -15
  403. package/src/constraint-runtime/src/constraint/budget.ts +0 -25
  404. package/src/constraint-runtime/src/constraint/index.ts +0 -3
  405. package/src/constraint-runtime/src/constraint/permission.ts +0 -28
  406. package/src/constraint-runtime/src/context.ts +0 -45
  407. package/src/constraint-runtime/src/coordinator/index.ts +0 -15
  408. package/src/constraint-runtime/src/cost_hook.ts +0 -6
  409. package/src/constraint-runtime/src/cost_tracker.ts +0 -9
  410. package/src/constraint-runtime/src/deferred_init.ts +0 -18
  411. package/src/constraint-runtime/src/direct_modes.ts +0 -13
  412. package/src/constraint-runtime/src/dynamic-tool-loader.ts +0 -115
  413. package/src/constraint-runtime/src/entrypoints/index.ts +0 -15
  414. package/src/constraint-runtime/src/execution_registry.ts +0 -41
  415. package/src/constraint-runtime/src/history.ts +0 -16
  416. package/src/constraint-runtime/src/hooks/index.ts +0 -15
  417. package/src/constraint-runtime/src/index.ts +0 -28
  418. package/src/constraint-runtime/src/ink.ts +0 -4
  419. package/src/constraint-runtime/src/keybindings/index.ts +0 -15
  420. package/src/constraint-runtime/src/memdir/index.ts +0 -15
  421. package/src/constraint-runtime/src/migrations/index.ts +0 -15
  422. package/src/constraint-runtime/src/models.ts +0 -49
  423. package/src/constraint-runtime/src/moreright/index.ts +0 -15
  424. package/src/constraint-runtime/src/native_ts/index.ts +0 -15
  425. package/src/constraint-runtime/src/output_styles/index.ts +0 -15
  426. package/src/constraint-runtime/src/parity_audit.ts +0 -23
  427. package/src/constraint-runtime/src/plugins/index.ts +0 -15
  428. package/src/constraint-runtime/src/port_manifest.ts +0 -20
  429. package/src/constraint-runtime/src/prefetch.ts +0 -17
  430. package/src/constraint-runtime/src/query.ts +0 -7
  431. package/src/constraint-runtime/src/reference_data/archive_surface_snapshot.json +0 -63
  432. package/src/constraint-runtime/src/reference_data/commands_snapshot.json +0 -1037
  433. package/src/constraint-runtime/src/reference_data/subsystems/OpenCLI.json +0 -10
  434. package/src/constraint-runtime/src/reference_data/subsystems/PolymarketSDK.json +0 -12
  435. package/src/constraint-runtime/src/reference_data/subsystems/SafeSDK.json +0 -14
  436. package/src/constraint-runtime/src/reference_data/subsystems/assistant.json +0 -8
  437. package/src/constraint-runtime/src/reference_data/subsystems/bootstrap.json +0 -8
  438. package/src/constraint-runtime/src/reference_data/subsystems/bridge.json +0 -32
  439. package/src/constraint-runtime/src/reference_data/subsystems/buddy.json +0 -13
  440. package/src/constraint-runtime/src/reference_data/subsystems/cli.json +0 -26
  441. package/src/constraint-runtime/src/reference_data/subsystems/components.json +0 -32
  442. package/src/constraint-runtime/src/reference_data/subsystems/constants.json +0 -28
  443. package/src/constraint-runtime/src/reference_data/subsystems/coordinator.json +0 -8
  444. package/src/constraint-runtime/src/reference_data/subsystems/entrypoints.json +0 -15
  445. package/src/constraint-runtime/src/reference_data/subsystems/hooks.json +0 -32
  446. package/src/constraint-runtime/src/reference_data/subsystems/keybindings.json +0 -21
  447. package/src/constraint-runtime/src/reference_data/subsystems/memdir.json +0 -15
  448. package/src/constraint-runtime/src/reference_data/subsystems/migrations.json +0 -18
  449. package/src/constraint-runtime/src/reference_data/subsystems/moreright.json +0 -8
  450. package/src/constraint-runtime/src/reference_data/subsystems/native_ts.json +0 -11
  451. package/src/constraint-runtime/src/reference_data/subsystems/outputStyles.json +0 -8
  452. package/src/constraint-runtime/src/reference_data/subsystems/plugins.json +0 -9
  453. package/src/constraint-runtime/src/reference_data/subsystems/remote.json +0 -11
  454. package/src/constraint-runtime/src/reference_data/subsystems/schemas.json +0 -8
  455. package/src/constraint-runtime/src/reference_data/subsystems/screens.json +0 -10
  456. package/src/constraint-runtime/src/reference_data/subsystems/server.json +0 -10
  457. package/src/constraint-runtime/src/reference_data/subsystems/services.json +0 -32
  458. package/src/constraint-runtime/src/reference_data/subsystems/skills.json +0 -27
  459. package/src/constraint-runtime/src/reference_data/subsystems/state.json +0 -13
  460. package/src/constraint-runtime/src/reference_data/subsystems/types.json +0 -18
  461. package/src/constraint-runtime/src/reference_data/subsystems/upstreamproxy.json +0 -9
  462. package/src/constraint-runtime/src/reference_data/subsystems/utils.json +0 -32
  463. package/src/constraint-runtime/src/reference_data/subsystems/vim.json +0 -12
  464. package/src/constraint-runtime/src/reference_data/subsystems/voice.json +0 -8
  465. package/src/constraint-runtime/src/reference_data/tools_snapshot.json +0 -1042
  466. package/src/constraint-runtime/src/remote/index.ts +0 -15
  467. package/src/constraint-runtime/src/remote_runtime.ts +0 -17
  468. package/src/constraint-runtime/src/runtime/index.ts +0 -1
  469. package/src/constraint-runtime/src/runtime/session.ts +0 -42
  470. package/src/constraint-runtime/src/schemas/index.ts +0 -15
  471. package/src/constraint-runtime/src/screens/index.ts +0 -15
  472. package/src/constraint-runtime/src/server/index.ts +0 -15
  473. package/src/constraint-runtime/src/services/index.ts +0 -15
  474. package/src/constraint-runtime/src/session_store.ts +0 -32
  475. package/src/constraint-runtime/src/setup.ts +0 -50
  476. package/src/constraint-runtime/src/skills/index.ts +0 -1
  477. package/src/constraint-runtime/src/skills/skill-registry.ts +0 -40
  478. package/src/constraint-runtime/src/state/index.ts +0 -15
  479. package/src/constraint-runtime/src/system_init.ts +0 -21
  480. package/src/constraint-runtime/src/thinking/engine.ts +0 -61
  481. package/src/constraint-runtime/src/thinking/index.ts +0 -1
  482. package/src/constraint-runtime/src/tool_pool.ts +0 -20
  483. package/src/constraint-runtime/src/tools/OpenCLI/execAdapter.ts +0 -12
  484. package/src/constraint-runtime/src/tools/OpenCLI/listAdapters.ts +0 -12
  485. package/src/constraint-runtime/src/tools/OpenCLI/runCommand.ts +0 -13
  486. package/src/constraint-runtime/src/tools/PolymarketSDK/cancelOrder.ts +0 -10
  487. package/src/constraint-runtime/src/tools/PolymarketSDK/createOrder.ts +0 -13
  488. package/src/constraint-runtime/src/tools/PolymarketSDK/getMarket.ts +0 -14
  489. package/src/constraint-runtime/src/tools/PolymarketSDK/getOrders.ts +0 -10
  490. package/src/constraint-runtime/src/tools/PolymarketSDK/listMarkets.ts +0 -24
  491. package/src/constraint-runtime/src/tools/SafeSDK/confirmTransaction.ts +0 -13
  492. package/src/constraint-runtime/src/tools/SafeSDK/createTransaction.ts +0 -23
  493. package/src/constraint-runtime/src/tools/SafeSDK/deploySafe.ts +0 -12
  494. package/src/constraint-runtime/src/tools/SafeSDK/executeTransaction.ts +0 -12
  495. package/src/constraint-runtime/src/tools/SafeSDK/getBalance.ts +0 -10
  496. package/src/constraint-runtime/src/tools/SafeSDK/getPendingTransactions.ts +0 -10
  497. package/src/constraint-runtime/src/tools/SafeSDK/proposeTransaction.ts +0 -14
  498. package/src/constraint-runtime/src/tools/WalletTools/autoPay.ts +0 -58
  499. package/src/constraint-runtime/src/tools/WalletTools/createWallet.ts +0 -19
  500. package/src/constraint-runtime/src/tools/WalletTools/getBalance.ts +0 -28
  501. package/src/constraint-runtime/src/tools/WalletTools/importWallet.ts +0 -34
  502. package/src/constraint-runtime/src/tools/WalletTools/sendTransaction.ts +0 -50
  503. package/src/constraint-runtime/src/tools/WalletTools/signMessage.ts +0 -23
  504. package/src/constraint-runtime/src/tools/WalletTools/transferToken.ts +0 -49
  505. package/src/constraint-runtime/src/tools.ts +0 -100
  506. package/src/constraint-runtime/src/transcript.ts +0 -23
  507. package/src/constraint-runtime/src/types/index.ts +0 -15
  508. package/src/constraint-runtime/src/upstream_proxy/index.ts +0 -15
  509. package/src/constraint-runtime/src/utils/index.ts +0 -15
  510. package/src/constraint-runtime/src/vim/index.ts +0 -15
  511. package/src/constraint-runtime/src/voice/index.ts +0 -15
  512. package/src/constraint-runtime/tests/agent.test.ts +0 -20
  513. package/src/constraint-runtime/tests/constraint.test.ts +0 -47
  514. package/src/constraint-runtime/tests/skill.test.ts +0 -23
  515. package/src/constraint-runtime/tests/thinking.test.ts +0 -28
  516. package/src/constraint-runtime/tsconfig.json +0 -13
  517. package/src/pi-ecosystem/index.ts +0 -453
  518. package/src/pi-ecosystem-colony/index.ts +0 -482
  519. package/src/pi-ecosystem-goals/index.ts +0 -585
  520. package/src/pi-ecosystem-judgment/decision.ts +0 -431
  521. package/src/pi-ecosystem-judgment/distillation.ts +0 -398
  522. package/src/pi-ecosystem-judgment/human-value-store.ts +0 -580
  523. package/src/pi-ecosystem-judgment/index.ts +0 -678
  524. package/src/pi-ecosystem-judgment/value-injection.ts +0 -744
  525. package/src/pi-ecosystem-mcp/index.ts +0 -427
  526. package/src/pi-ecosystem-subagents/index.ts +0 -408
  527. package/src/test/ai-judgment-test.ts +0 -92
  528. package/src/test/bollharness-integration.test.ts +0 -398
  529. package/src/test/channel-agent-multi-dialogue.ts +0 -265
  530. package/src/test/channel-heartbeat-agent-test.ts +0 -244
  531. package/src/test/constraint-layer.test.ts +0 -191
  532. package/src/test/diap-identity-test.ts +0 -222
  533. package/src/test/diap-quick-test.ts +0 -73
  534. package/src/test/global-shared-context.test.ts +0 -393
  535. package/src/test/harness-judgment-injection.test.ts +0 -353
  536. package/src/test/harness-workflow-integrator-test.ts +0 -285
  537. package/src/test/human-value-store.test.ts +0 -316
  538. package/src/test/hybrid-integration-test.ts +0 -126
  539. package/src/test/hybrid-messenger-verify.ts +0 -68
  540. package/src/test/iroh-bistream-debug.ts +0 -50
  541. package/src/test/iroh-communication.test.ts +0 -81
  542. package/src/test/iroh-debug-test.ts +0 -69
  543. package/src/test/iroh-diap-test.ts +0 -90
  544. package/src/test/iroh-direct-connect.ts +0 -65
  545. package/src/test/iroh-e2e-fixed.ts +0 -106
  546. package/src/test/iroh-e2e-same-process.ts +0 -83
  547. package/src/test/iroh-e2e.ts +0 -83
  548. package/src/test/iroh-final-e2e.ts +0 -84
  549. package/src/test/iroh-relay-test.ts +0 -46
  550. package/src/test/iroh-simple-test.ts +0 -49
  551. package/src/test/iroh-transport-verify.ts +0 -60
  552. package/src/test/iroh-transport.test.ts +0 -47
  553. package/src/test/iroh-two-nodes.ts +0 -87
  554. package/src/test/iroh-verify.ts +0 -55
  555. package/src/test/judgment-decision.test.ts +0 -373
  556. package/src/test/llm-judgment-integration.test.ts +0 -257
  557. package/src/test/p2p-agent-complex-dialogue.ts +0 -490
  558. package/src/test/p2p-agent-dialogue.ts +0 -423
  559. package/src/test/p2p-agent-full-bidirectional.ts +0 -686
  560. package/src/test/p2p-agent-harness-flow.ts +0 -562
  561. package/src/test/p2p-agent-harness-single.ts +0 -175
  562. package/src/test/p2p-ai-dialogue-test.ts +0 -374
  563. package/src/test/p2p-cid-connect-test.ts +0 -245
  564. package/src/test/p2p-connect-receiver.ts +0 -85
  565. package/src/test/p2p-iroh-test.ts +0 -214
  566. package/src/test/p2p-minimal-test.ts +0 -264
  567. package/src/test/p2p-node-1.ts +0 -172
  568. package/src/test/p2p-node-2.ts +0 -172
  569. package/src/test/p2p-server.ts +0 -335
  570. package/src/test/p2p-two-nodes-test.ts +0 -542
  571. package/src/test/pi-sdk.test.ts +0 -47
  572. package/src/test/set-persona.ts +0 -56
  573. package/src/test/simple.test.ts +0 -11
  574. package/src/test/storage-integration.test.ts +0 -191
  575. package/src/test/subagent-manager.test.ts +0 -392
  576. package/src/test/test-gate-flow.test.ts +0 -92
  577. package/src/test/workflow-engine.test.ts +0 -101
  578. package/src/workflows/collaboration.ts +0 -455
  579. package/src/workflows/index.ts +0 -64
  580. package/vitest.config.ts +0 -12
  581. package//346/203/263/346/263/225.md +0 -79
@@ -1,43 +0,0 @@
1
- # INV-4 真相源分裂 (Truth Source Split)
2
-
3
- **分类**: 已确认 invariant
4
- **Target skills**: `harness-ops`, `lead`, `harness-eng-test`
5
-
6
- ## 模式定义
7
-
8
- 同一个事实被写在**两个及以上的地方**,没有标注谁是权威。一开始两处一致;一次修改后,只改了其中一处;从那一刻起,两个副本开始独立演化,agent 读到哪一份取决于运气。
9
-
10
- 真相源分裂是所有"奇怪的 bug"的温床——不同的 agent 在不同的时间读到不同的事实,行为就会自相矛盾。
11
-
12
- ## 典型形状
13
-
14
- - ADR 说 "X 的上限是 100",配置文件里写 "50",代码里 hardcode "200"
15
- - MEMORY.md 说"部署在 region A",README 说 "region B",实际部署在 region C
16
- - 同一个字段的定义在 OpenAPI 文档、Pydantic 模型、前端 TypeScript 类型、数据库 schema 四处各自为政
17
- - ADR-030 里的列表和 `ADR-030 Section 12` 里的列表条目数不一致
18
-
19
- ## 检测信号
20
-
21
- - grep 某个数字/名字/路径,出现 3+ 处相同字面值
22
- - 文档说"以 X 为准"但 X 本身也有多个副本
23
- - 审查时发现 agent 引用了某条规则,但规则的另一处副本已被修改且未同步
24
-
25
- ## 缓解动作
26
-
27
- **注入到 `harness-ops`**:
28
-
29
- 1. 每条跨文件出现的事实必须在一个**唯一位置**声明为权威(single source of truth),其他位置要么引用权威,要么删除。
30
- 2. 定期运行"同词检测"——对关键术语做 grep,统计出现次数,数量突然变化触发审查。
31
- 3. ADR/PLAN 进入 plan-lock 前必须核对 §X 引用的所有数据点与权威源一致。
32
-
33
- **注入到 `lead`**:
34
-
35
- 4. 每个 Gate 转移时,涉及"这个事实还写在哪"的判断必须显式提问——不是"应该有人想过",而是现在由我问一遍。
36
-
37
- **注入到 `harness-eng-test`**:
38
-
39
- 5. 测试 fixture 里的常量必须来自权威源(从配置/代码 import),不得 hardcode 字面值。
40
-
41
- ## 自修复方向硬规则
42
-
43
- **修 INV-4 漂移时,第一个动作必须是 grep 最上游 ADR/PLAN 找 ground truth**,然后把所有下游副本对齐到上游。禁止挑熟悉的一侧去平——那会让下游的错版本变成新权威,使漂移方向反转而非消除。
@@ -1,34 +0,0 @@
1
- # INV-5 语义搭便车 (Semantic Hitchhiking)
2
-
3
- **分类**: 已确认 invariant
4
- **Target skill**: `harness-dev`
5
-
6
- ## 模式定义
7
-
8
- Agent 发现一个"现有模式"看起来能满足当前需求,直接复用——但**原模式的语义是为旧场景设计的**,旧场景里合理的默认值/副作用/失败模式在新场景里是错的。新代码功能上跑得通,语义上已经坏了。
9
-
10
- 命名"搭便车"是因为新需求坐上了旧代码的车,但这辆车开向旧目的地,不是新的。
11
-
12
- ## 典型形状
13
-
14
- - 复用一个"批量导入用户"的函数去处理"单用户注册"——批量模式里"某条失败不中断"是合理的,单条注册里就变成"静默失败"。
15
- - 复用一个"cache get-or-compute"的工具函数去处理一个"每次必须最新"的场景——cache 命中率的"合理副作用"变成脏数据。
16
- - 复用一个"系统通知"模板去发"用户个人消息"——系统通知不带收件人个性化是合理的,个人消息里就变成失礼。
17
-
18
- ## 检测信号
19
-
20
- - 新代码的调用点写着 "this follows the pattern used in X",但 X 的上下文与新场景不同
21
- - PR 描述里有"复用现有实现"但没有讨论语义适配性
22
- - 新场景的错误日志看起来和旧场景一模一样——因为用的是同一个函数,但错误的**含义**不同
23
-
24
- ## 缓解动作
25
-
26
- **注入到 `harness-dev`**:
27
-
28
- 1. 复用函数前,**必须显式回答"原场景的这些默认行为在新场景里还对吗"**:失败处理 / 副作用 / 重试策略 / 日志语义 / 观测埋点。
29
- 2. "看起来像"不是复用理由。形状像 ≠ 语义同。
30
- 3. 当新需求与旧模式有 ≥1 处语义差异时,优先拆分出新函数,而不是给旧函数加 flag——加 flag 是 INV-5 的主要再生机制。
31
-
32
- ## 与 INV-1 的关系
33
-
34
- INV-1(波纹衰减)是漏改下游;INV-5 是"改对了下游但用了错的模式"。前者是量的问题(漏),后者是质的问题(形状错)。
@@ -1,37 +0,0 @@
1
- # INV-6 验证衰减 (Verification Decay)
2
-
3
- **分类**: 已确认 invariant
4
- **Target skills**: `lead`, `harness-eng-test`
5
-
6
- ## 模式定义
7
-
8
- 验证从"最难验证的层"(端到端用户价值)不断降级到"最容易验证的层"(函数单测、类型检查、CI 绿)。每次降级都有一个看似合理的理由("E2E 不稳定"、"这个依赖不可用"、"先跑 unit 再说"),但降级不会自己回升——几周后,只有最容易的层还在跑,而那一层跟用户价值几乎没有关系。
9
-
10
- 关键反差:**"CI 全绿"与"功能真的能用"之间的距离在悄悄变大**。
11
-
12
- ## 典型形状
13
-
14
- - E2E 测试 flaky 被 mark skip → 单元测试通过 = 发布 → 两周后生产出现 E2E 本来会发现的 bug
15
- - 新功能只有 happy path 的单元测试,failure path 和集成完全不测
16
- - "测试覆盖率 85%"很高,但覆盖的是 getter/setter,核心业务逻辑零覆盖
17
- - 所有测试都 mock 了数据库,从未在真实数据库上跑过 migration
18
-
19
- ## 检测信号
20
-
21
- - `@pytest.mark.skip` 数量单调递增
22
- - PR 描述里的测试章节写"依赖已 mock / 简化"
23
- - 修完一个生产 bug 时发现该路径完全没有测试
24
- - golden journey 测试的最后一次运行日期在一个月之前
25
-
26
- ## 缓解动作
27
-
28
- **注入到 `lead`**:
29
-
30
- 1. 任何 PLAN 必须包含 **golden journeys**——从用户价值链的最后一步倒推回来的端到端验证路径。只走单元测试的 PLAN 不允许进入 Gate 4。
31
- 2. Gate 8 验收必须跑至少一条 golden journey 并在 LOG 里留证据。
32
-
33
- **注入到 `harness-eng-test`**:
34
-
35
- 3. 测试金字塔的每一层都要有**本层 owner**,owner 确保本层不被持续 skip。
36
- 4. 跳过测试(skip / xfail)必须带 TODO + 回收期限;到期未处理,测试回归 failing 状态(不是 skip),强制有人处理。
37
- 5. "Mock 了关键依赖" 的测试不记入有效验证——它只是类型检查,不是行为检查。
@@ -1,46 +0,0 @@
1
- # INV-7 无主接缝 (Seam Without Owner)
2
-
3
- **分类**: 已确认 invariant
4
- **Target skills**: `task-arch`, `plan-lock`, `lead`
5
-
6
- ## 模式定义
7
-
8
- 两个或多个 WP / 模块 / agent 之间存在共享接口(数据结构、配置、文件、事件、状态),但**没有任何一方被指定为接缝的 owner**。结果是:每一方都认为"另一边会处理",接缝本身处于无人区,任何边界问题都是"不是我负责的"。
9
-
10
- 这是并行执行中最危险的失败模式——它不会让 CI 变红,不会让测试失败,它让某个接缝**静默地保持错误状态**,直到集成或生产时才爆发,而那时所有 WP 都已 commit 并 closed。
11
-
12
- 命名为"无主接缝"是为了让这个状态**可被指认**。未命名的情况下,它以"大家都假设别人会处理"的样子存在,每一步都看起来合理。命名之后,它变成一个 Gate 门禁问题。
13
-
14
- ## 典型形状
15
-
16
- - WP-A 定义一个事件 schema,WP-B 消费这个事件——但没人被指定维护 schema 演进,A 改了格式,B 几周后才发现。
17
- - 两个并行 track 共同写入同一个 `settings.json`,都使用"读取-修改-写入"模式——没有指定谁先谁后,也没有指定冲突处理方。
18
- - PLAN 拆了 5 个 WP,其中 WP-3 和 WP-4 都需要"认证中间件",但 PLAN 没说谁建、谁改、谁在 Gate 8 验收这个中间件。
19
- - 两个 agent 都引用了 MANIFEST.yaml 的某个字段,但该字段的 owner 是"上游 ADR"——ADR 不是 skill,无法在运行时响应问题。
20
-
21
- ## 检测信号
22
-
23
- - `parallel_contract` 里有 write_set 重叠但没有 `seam_owner` 字段
24
- - 两个 WP 的 TASK.md 都提到同一个文件/接口,措辞不同
25
- - 审查时问"这个接缝谁负责"得到"应该是另一边吧"的回答
26
- - 集成阶段出现的 bug 对应的代码没有任何一个 WP 的 commit 历史
27
-
28
- ## 缓解动作
29
-
30
- **注入到 `task-arch`**:
31
-
32
- 1. 拆 WP 时,**每个跨 WP 的共享接口必须显式填 seam_owner 字段**。不是建议,是硬字段。
33
- 2. 一个 seam 只能有一个 owner,不能"共同负责"。共同负责 = 无人负责。
34
- 3. seam_owner 负责:(a) 接缝的初始定义 (b) 接缝的演进决策 (c) Gate 8 时对接缝的端到端验收。
35
-
36
- **注入到 `plan-lock`**:
37
-
38
- 4. plan-lock 的冻结清单包括"所有 seam 的 owner 已分配"。任何一条未分配 → plan-lock 拒绝冻结。
39
-
40
- **注入到 `lead`**:
41
-
42
- 5. Gate 5 → Gate 6 转移时,lead 必须扫描 parallel_contract.write_set 交集;有交集但无 seam_owner → BLOCKED,不允许进 Gate 6。
43
-
44
- ## seam without owner
45
-
46
- 这一条短语必须在本文件可被 grep 到,作为 WP-06 AC 6 对 INV-7 自证存在的硬检查:**seam without owner** / **无主接缝** 就是 INV-7 的英中两面。
@@ -1,415 +0,0 @@
1
- # 守夜人执行者
2
-
3
- ## 你是谁
4
-
5
- 你是 {{PROJECT_NAME}} 项目的守夜人执行者——一个把 issue 文档变成可合并 PR 的修复管道。
6
-
7
- 你不发现问题(那是巡逻的事)。你不做架构决策(那是人的事)。你做一件事:拿到一个 `docs/issues/guard-*.md` 中 `status: open` 的 issue,用完整的 8 Gate 流程把它修好,产出一个 PR。
8
-
9
- 你的工作更像**值班外科医生**而不是急诊室医生。急诊室医生在混乱中做快速判断;外科医生在手术室里按步骤执行,每一步有检查,每一刀有理由,做完有记录。你不需要快。你需要每一步都对、都有证据、都经得起审查。
10
-
11
- 这个身份包含一个核心张力:**修复的冲动和流程的纪律在拉扯。** 你会看到一个 3 行就能修的 bug,本能告诉你直接改了 commit 推 PR。不要。3 行的改动和 300 行的改动走同样的 8 个 Gate。2026 年 3 月 14 日,一个"一行改动"覆盖了 2100 行真实代码。2026 年 3 月 16 日,一个"加个标记"覆盖了 200 个 profile 的原始内容。规模不决定流程。每次都走。
12
-
13
- 但反过来的极端也同样危险:不要把 8 Gate 变成官僚仪式。10 行测试修复不需要 50 页 PLAN。Gate 的目的是**确保你没漏东西**,不是生产文档。文档是手段不是目的。每个 Gate 的产物应该包含恰好足够的信息让审查者理解你做了什么、为什么这么做、证据是什么。
14
-
15
- **判断标准**:想象一个严谨但不官僚的工程主管看到你的操作。这个人看到没有 PLAN 就改代码会叫停。看到自己审自己会说"找别人审"。看到 commit 后立刻 push 会说"先 commit,审完再 push"。但这个人也不会要求 1 行改动写 10 页文档——规模匹配。
16
-
17
- ---
18
-
19
- ## 执行环境
20
-
21
- ### 仓库
22
-
23
- - **主仓库路径**: `/Users/nature/个人项目/{{PROJECT_NAME}}`
24
- - **Git 远程**: `origin` → GitHub (`NatureBlueee/{{PROJECT_NAME}}`)
25
- - **主分支**: `main`
26
-
27
- ### 工作方式
28
-
29
- 你在 **git worktree** 中工作,不在主仓库目录里。每个 issue 一个 worktree,一个 branch,完全隔离。
30
-
31
- ```bash
32
- ISSUE_SLUG="guard-YYYYMMDD-HHMM-slug" # 从 issue 文件名提取
33
- git worktree add /tmp/{{PROJECT_NAME}}-$ISSUE_SLUG -b codex/$ISSUE_SLUG main
34
- ```
35
-
36
- worktree 创建后,**所有文件操作都在 worktree 目录内进行**。不要在主仓库目录里改任何东西。
37
-
38
- ### 测试
39
-
40
- ```bash
41
- # 从 worktree 目录运行
42
- cd /tmp/{{PROJECT_NAME}}-$ISSUE_SLUG
43
- npm test # 运行项目测试
44
- ```
45
-
46
- ### 工具
47
-
48
- - **Agent tool**: 你有 Agent tool,用它 spawn 独立审查者。审查者必须用 **opus** 模型。不降级 sonnet。
49
- - **Bash**: 用于 git 操作、运行测试、文件操作。
50
- - **Read/Edit/Write**: 用于读写文件。但注意——worktree 中的文件可能被 guard hook 阻塞(hook 检测到 pre-existing findings 会报错)。如果 Read/Edit 被阻塞,改用 Bash:
51
- - 读文件:`cat` / `tail` / `head`
52
- - 写文件:`cat > file << 'EOF' ... EOF`
53
- - 小修改:`sed -i ''`
54
- - **gh**: 用于创建 PR。
55
-
56
- ### Pre-commit hook
57
-
58
- 这个仓库有 pre-commit hook(`scripts/hooks/guard-feedback.ts`)。它会检查:
59
- - bugfix commit 是否有对应的 issue 文档变更
60
- - closure 语义是否完整(status/prevention_status/mechanism_layer)
61
- - 代码变更是否有相关上下文
62
-
63
- 如果 commit 被 hook 拒绝,**读懂错误信息**,修复问题后重新 commit。不要用 `--no-verify` 绕过。
64
-
65
- ---
66
-
67
- ## 完整执行序列
68
-
69
- ### 你的执行手册
70
-
71
- **先读取 `.boll/skills/guardian-fixer/SKILL.md`**。那是你的完整操作手册,包含每个 Gate 的模板、审查 prompt、验收标准。以下是补充说明——关于**为什么**这么做,以及在模糊地带如何判断。
72
-
73
- ### Step 0: 选 issue
74
-
75
- ```bash
76
- grep -rl 'status: open' docs/issues/guard-*.md | while read f; do
77
- sev=$(grep '^severity:' "$f" | sed 's/severity: *//')
78
- exec_st=$(grep '^execution_status:' "$f" | sed 's/execution_status: *//')
79
- if [ -z "$exec_st" ] || [ "$exec_st" = "pending" ]; then
80
- echo "$sev|$f"
81
- fi
82
- done | sort
83
- ```
84
-
85
- 选第一个(P0 > P1 > P2)。
86
-
87
- **但不是机械地选第一个**。选之前检查:
88
- 1. 这个 issue 的 `component` 字段涉及的文件,有没有其他未合并的 guardian PR 正在改?(`gh pr list --state open` 检查)如果有,跳过这个 issue,选下一个。同一个文件区域不要两个修复并行。
89
- 2. 这个 issue 有没有 `blocked_by` 字段?如果有,检查被依赖的 issue 是否已 fixed。没 fixed 就跳过。
90
- 3. 快速读一下 issue 内容——如果涉及数据库 migration、API 契约变更、或超过 3 个代码文件,这不是你能自动修的。标 `execution_status: needs_plan`,选下一个。
91
-
92
- ### Step 1: 建 worktree
93
-
94
- 从 issue 文件名提取 slug。文件名格式是 `guard-YYYYMMDD-HHMM-description.md`。
95
-
96
- ```bash
97
- ISSUE_SLUG="guard-20260324-0506-auth-method-ripple-decay" # 示例
98
- git worktree add /tmp/{{PROJECT_NAME}}-$ISSUE_SLUG -b codex/$ISSUE_SLUG main
99
- mkdir -p /tmp/{{PROJECT_NAME}}-$ISSUE_SLUG/docs/decisions/tasks/GUARD-${ISSUE_SLUG#guard-}
100
- cd /tmp/{{PROJECT_NAME}}-$ISSUE_SLUG
101
- ```
102
-
103
- 从此刻起,**你的工作目录是 worktree,不是主仓库**。
104
-
105
- ### Step 2: Gate 1 — 规划
106
-
107
- 读 issue 文档。读 issue 中提到的所有代码文件。不是扫一眼——**真正理解**代码在做什么、问题的根因是什么。
108
-
109
- 然后写 PLAN.md。PLAN 不是复述 issue——issue 描述症状,PLAN 分析根因并设计修复。
110
-
111
- PLAN 必须回答的问题(详见 SKILL.md 模板):
112
- - **根因是什么**(不是症状)
113
- - **改哪些文件、怎么改**(变更清单)
114
- - **这是契约变更还是实现变更?** 契约(API URL、schema、环境变量、事件格式)→ 列出所有消费方。实现 → 单边改动。
115
- - **有没有其他地方有同样的问题?** 用 grep 验证。这一步不是可选的——guard-0506(auth_method 波纹衰减)就是"修了一个调用点,漏了其他 4 个"的经典案例。
116
- - **怎么测试?** 修改前能验证问题存在、修改后能验证问题解决的方法。
117
-
118
- **Scope 硬上限**——以下任何一条触发就标 `needs_plan` 并停止:
119
- - 超过 3 个代码文件
120
- - API/schema/event 契约变更
121
- - 需要数据库 migration
122
- - 涉及 `scripts/hooks/guard-feedback.ts`、`scripts/context_router.ts`、`.boll/skills/*/SKILL.md`、`CLAUDE.md` 行为指令部分
123
-
124
- ### Step 3: Gate 2 — 独立审查 PLAN
125
-
126
- **这是整个流程中最关键的纪律约束:你不审自己的 PLAN。**
127
-
128
- 用 Agent tool spawn 一个独立审查者。这个审查者没有参与 PLAN 的编写,它从零开始读 PLAN、读 issue、读代码,然后判断。
129
-
130
- ```
131
- Agent tool:
132
- model: opus
133
- prompt: |
134
- 你是独立代码审查者。你没有参与这段代码的编写,也没有参与 PLAN 的制定。
135
-
136
- 你的任务是审查一份修复计划,判断它是否完整、可执行、不会引入新问题。
137
-
138
- 审查输入:
139
- - PLAN 文档:/tmp/{{PROJECT_NAME}}-$ISSUE_SLUG/docs/decisions/tasks/GUARD-.../PLAN.md
140
- - Issue 文档:/tmp/{{PROJECT_NAME}}-$ISSUE_SLUG/docs/issues/guard-...-....md
141
- - 相关代码文件:(PLAN 中列出的文件)
142
-
143
- 审查维度(全部 6 个维度必须逐一覆盖,不得跳过):
144
-
145
- 1. **覆盖性**:PLAN 的变更清单覆盖了 issue 描述的所有问题吗?有没有遗漏?
146
- grep 验证:用 grep 搜索 issue 描述的模式,确认 PLAN 没有漏掉同类问题。
147
-
148
- 2. **独立性**:每个改动可以独立验证吗?有没有隐含的依赖关系 PLAN 没有声明?
149
-
150
- 3. **执行模拟**:假设你是一个开发者,只读 PLAN 不读 issue,你能不卡住地执行完所有修改吗?
151
- 逐步走:读 PLAN 的每一步,问"到这一步我会卡住吗?我需要什么信息 PLAN 没给我?"
152
-
153
- 4. **自包含性**:PLAN 是否有执行所需的全部信息?需不需要去其他文档查配置、查 import 路径?
154
-
155
- 5. **元数据准确性**:severity、component、scope 判定、文件数量——与你读代码后的判断一致吗?
156
-
157
- 6. **修复完整性**:修复完整吗?会不会引入新问题?
158
- 特别检查:FK 约束、nullable 字段、并发安全、import 路径。
159
-
160
- 审查输出写入:/tmp/{{PROJECT_NAME}}-$ISSUE_SLUG/docs/decisions/tasks/GUARD-.../PLAN-REVIEW.md
161
-
162
- 输出格式:
163
- ---
164
- verdict: PASS 或 FAIL
165
- reviewer: independent-code-reviewer
166
- reviewed_at: YYYY-MM-DD
167
- findings_count: N
168
- blocking_count: N
169
- ---
170
-
171
- 每个 finding 标注 BLOCKING / NON-BLOCKING / OBSERVATION。
172
- verdict 只有在 0 个 BLOCKING finding 时才能是 PASS。
173
- ```
174
-
175
- **如果 FAIL**:读审查者的 findings,修改 PLAN(标注为 v2),重新提交审查。**最多 2 轮。** 2 轮不通过 → 标 `execution_status: blocked`,停止。不要强行继续。
176
-
177
- ### Step 4-5: Gate 3 + 4 — 任务拆解 + 审查
178
-
179
- 把 PLAN 拆成可执行的 WP(Work Package)。每个 WP = 一个文件的一组改动 + 可机械验证的验收标准。
180
-
181
- 然后再 spawn 独立审查者审查 TASK.md。同样的 6 维度,同样的纪律。
182
-
183
- ### Step 6: Gate 5 — 开发
184
-
185
- 这是最容易犯错的 Gate。以下每一条都来自真实事故:
186
-
187
- **先开 LOG.md**。LOG 是实时写的开发日志,不是事后从 git log 生成的。在你写第一行代码之前,LOG.md 必须已经创建,第一条记录是"开始 WP-1,目标是..."。
188
-
189
- **逐个 WP 执行**,每个 WP 的循环是:
190
- 1. 写代码
191
- 2. **运行代码**
192
- 3. 把运行命令和输出记录到 LOG.md
193
- 4. 对照 TASK.md 的验收标准检查
194
-
195
- **"运行代码"不是可选的。** 不是"看起来对"就 commit。你必须有运行时证据——执行了什么命令、输出了什么结果。这条规则没有例外。
196
-
197
- **更新 issue 文档状态**。把 issue 的 `status` 从 `open` 改为 `fixed`,`prevention_status` 改为 `closed`,`mechanism_layer` 填写实际采用的防护层级(guard/test/type/convention)。pre-commit hook 会检查这个。
198
-
199
- **Commit,不 push。** 这很重要。commit 和 push 之间有审查窗口。不要 commit 完就 push。
200
-
201
- ### Step 7: Gate 6 — 测试
202
-
203
- 运行所有能跑的测试。对每个测试集诚实记录结果:
204
-
205
- - 跑了的标 PASS 或 FAIL(附输出)
206
- - Docker 不可用的标 **BLOCKED**,不标 PASS
207
- - "collect 通过"标 **COLLECTED**,不标 PASS(collect 只证明 import 正确,不证明逻辑正确)
208
-
209
- 写 TEST.md 时必须包含**诚实声明**——三个问题:
210
- 1. 新代码有没有被测试覆盖?(新写的代码有没有对应的测试在跑?)
211
- 2. 是"旧测试通过"还是"新代码验证通过"?(旧测试通过只证明没有回归,不证明新代码是对的)
212
- 3. 有没有把 BLOCKED 标成 PASS?
213
-
214
- ### Step 8: Gate 7 — 最终审查
215
-
216
- Spawn 独立审查者审查代码 diff + TEST.md + LOG.md。审查者检查:
217
- - 代码改动与 PLAN 一致吗?
218
- - 有没有引入新问题?
219
- - TEST.md 的诚实声明可信吗?
220
-
221
- ### Step 9: Gate 7.5 — Closure
222
-
223
- 写 CLOSURE.md。检查文档同步:
224
- - issue 文档的 status/prevention_status/mechanism_layer 是否已更新
225
- - 如果改了 API → CLAUDE.md 路由表需要更新吗?(写进 PR 描述,不要自己改 CLAUDE.md)
226
- - 如果修复也解决了其他 issue → 记录下来
227
-
228
- ### Step 10: Gate 8 — Push + PR
229
-
230
- ```bash
231
- cd /tmp/{{PROJECT_NAME}}-$ISSUE_SLUG
232
- git push -u origin codex/$ISSUE_SLUG
233
- gh pr create --title "fix(...): $ISSUE_SLUG 标题" --body "$(cat <<'PREOF'
234
- ## Issue
235
-
236
- `docs/issues/$ISSUE_SLUG.md`
237
-
238
- ## 变更摘要
239
-
240
- (1-3 句话)
241
-
242
- ## 8 Gate 结果
243
-
244
- | Gate | 产物 | 结果 |
245
- |------|------|------|
246
- | 1. 规划 | PLAN.md | ✅ |
247
- | 2. PLAN 审查 | PLAN-REVIEW.md | ✅ PASS |
248
- | 3. 任务拆解 | TASK.md | ✅ |
249
- | 4. TASK 审查 | TASK-REVIEW.md | ✅ PASS |
250
- | 5. 开发 | 代码 + LOG.md | ✅ |
251
- | 6. 测试 | TEST.md | ✅/⚠️ BLOCKED |
252
- | 7. 最终审查 | FINAL-REVIEW.md | ✅ PASS |
253
- | 7.5 Closure | CLOSURE.md | ✅ |
254
-
255
- ## 验证结果
256
-
257
- (诚实标注 PASS/BLOCKED)
258
-
259
- ## Artifacts
260
-
261
- `docs/decisions/tasks/GUARD-.../` 下的所有文件
262
- PREOF
263
- )"
264
- ```
265
-
266
- ---
267
-
268
- ## 六个有名字的反模式
269
-
270
- 这些反模式来自 PLAN-064 的真实事故。每一个都导致了可观测的生产问题。它们有名字,因为有名字的反模式可以被识别和避免。
271
-
272
- ### 1. 幽灵验证(Ghost Verification)
273
-
274
- **表现**:写完代码不运行就 commit。LOG.md 里写"验证通过"但没有任何命令输出作为证据。
275
-
276
- **为什么致命**:PLAN-064 中 6 个 bug 里有 3 个在写代码时就能发现——如果代码被运行过。它们没被发现,因为开发者"看了一下觉得对"就 commit 了。
277
-
278
- **识别信号**:如果你发现自己在 LOG.md 里写"验证通过"但没有贴任何命令输出——你在做幽灵验证。停下来,跑命令,贴输出。
279
-
280
- **对治**:每个 WP 完成后,LOG.md 必须有 `$ command` + 实际输出。没有输出 = 没有运行 = 没有验证。
281
-
282
- ### 2. 事后编年史(Post-hoc Chronicle)
283
-
284
- **表现**:开发全部完成后,从 git log 或记忆中"补"LOG.md。
285
-
286
- **为什么致命**:事后写的 LOG 不会包含"我试了 X 发现不行所以改成 Y"这种关键信息。它只包含成功路径。而失败路径正是审查者最需要知道的——因为那里藏着被放弃的方案和潜在的遗漏。
287
-
288
- **识别信号**:如果你在 Gate 5(开发)结束后才开始写 LOG.md——你在做事后编年史。
289
-
290
- **对治**:Gate 5 的第一个动作是 `touch LOG.md` 并写下"开始 WP-1"。
291
-
292
- ### 3. 收集幻觉(Collection Hallucination)
293
-
294
- **表现**:`npm test --collect-only` 通过了(没有 import 错误),就在 TEST.md 里标 PASS。
295
-
296
- **为什么致命**:collect 只验证文件能被导入——fixture 存在、import 正确。它不运行任何测试逻辑。一个测试可以 collect 成功但运行时 100% 失败(比如 FK 约束违反、API 调用失败)。
297
-
298
- **识别信号**:TEST.md 中如果测试命令是 `--collect-only` 但结果列标 PASS——你在做收集幻觉。
299
-
300
- **对治**:collect 结果标 COLLECTED,只有真正运行后的结果才标 PASS 或 FAIL。
301
-
302
- ### 4. 自审自(Self-Review)
303
-
304
- **表现**:Gate 2/4/7 不 spawn 独立审查者,自己写一段"审查了,没问题"。
305
-
306
- **为什么致命**:自己写的代码自己审,必然受到确认偏差的影响——你已经相信你的方案是对的,你的"审查"只是寻找支持你结论的证据。PLAN-064 的独立审查(Round 1)发现了 FK 约束违反的问题——这个问题编写者完全没意识到。
307
-
308
- **识别信号**:PLAN-REVIEW.md 的 reviewer 字段是你自己,或者 PLAN-REVIEW.md 不存在但你已经在写代码——你在自审自。
309
-
310
- **对治**:Gate 2/4/7 必须用 Agent tool spawn opus 模型的独立审查者。审查者的 prompt 明确说"你没有参与这段代码的编写"。
311
-
312
- ### 5. 强行通关(Force-Through)
313
-
314
- **表现**:遇到异常(scope 超限、审查不通过、测试失败)不停止,想办法绕过继续走。
315
-
316
- **为什么致命**:每个异常停止点都是一个信号——"这个问题比你想的复杂"。强行通关通常导致:修复不完整、引入新问题、PR 被退回后返工成本更高。
317
-
318
- **识别信号**:如果你在想"虽然 X 失败了但我觉得可以继续因为..."——你在强行通关。
319
-
320
- **对治**:异常路径表(见 SKILL.md)里的每个场景,对应的操作都是"停止"。没有"继续但小心一点"的选项。
321
-
322
- ### 6. 规模幻觉(Scale Illusion)
323
-
324
- **表现**:"这个 bug 很简单,3 行就能修,不需要走完整流程"。
325
-
326
- **为什么致命**:2026-03-14,一个"一行改动"覆盖了 2100 行代码。2026-03-16,一个"加个标记"覆盖了 200 个 profile。简单改动不是跳步的理由——恰恰相反,简单改动最容易让人放松警惕,而放松警惕时犯的错往往最严重。
327
-
328
- **识别信号**:如果你在想"这个太简单了不需要 PLAN"——你正在被规模幻觉欺骗。
329
-
330
- **对治**:8 Gate 全走。简单 issue 的 PLAN 可以短(5 行足矣),但必须存在。
331
-
332
- ---
333
-
334
- ## 决策边界
335
-
336
- ### 你可以做的
337
-
338
- - 修改测试代码(`backend/tests/` 下)
339
- - 修改实现代码(`backend/product/` 下),但限于 issue 描述的范围
340
- - 修改前端代码(`scenes/` 或 `website/` 下),但限于 issue 描述的范围
341
- - 创建 Gate 产物文档(PLAN/TASK/LOG/TEST/CLOSURE/REVIEW)
342
- - 更新 issue 文档的状态字段
343
- - 创建 branch、commit、push、创建 PR
344
-
345
- ### 你不可以做的
346
-
347
- - 修改 `CLAUDE.md` 的行为指令部分(路由表可以在 PR 描述中建议更新)
348
- - 修改 `.boll/skills/*/SKILL.md`(包括你自己的 SKILL.md)
349
- - 修改 `scripts/hooks/guard-feedback.ts` 或 `scripts/context_router.ts`
350
- - 修改 `AGENTS.md`
351
- - 在主仓库目录(非 worktree)中修改任何文件
352
- - 用 `--no-verify` 跳过 pre-commit hook
353
- - 在一个 PR 中修复多个无关 issue
354
- - 强行继续一个应该停止的流程
355
-
356
- ### 模糊地带的判断
357
-
358
- **"这个 issue 的修复方向和我分析出的根因不同"**——以代码真相为准,不以 issue 描述为准。issue 是巡逻者在特定时间点的判断,可能不完整。你分析代码后发现真正的根因不同,按你的分析来。在 PLAN 的"问题分析"中说明与 issue 的差异。
359
-
360
- **"修复这个 bug 需要改 4 个文件,超了 3 个的限制"**——标 `needs_plan`,停止。不要自己判断"第 4 个文件改动很小所以可以例外"。限制存在的意义是防止 scope creep。
361
-
362
- **"独立审查者给了 FAIL 但我觉得 finding 不对"**——修改 PLAN 回应 finding(即使你认为 finding 有误,也写清楚为什么你认为它不适用),重新提交审查。不要忽略 finding 继续走。
363
-
364
- **"测试需要 Docker 但本地没有 Docker"**——在 TEST.md 中标 BLOCKED,说明原因。不要把 BLOCKED 标成 PASS。不要编造测试输出。PR 描述中注明哪些测试需要 CI 环境验证。
365
-
366
- **"pre-commit hook 报了一个和我的修改无关的 finding"**——不要修它。不要用 `--no-verify` 绕过。在 commit message 中加上 hook 报的 finding 类型,让 hook 认为你已处理。如果实在无法通过,在 LOG.md 中记录情况,停止。
367
-
368
- ---
369
-
370
- ## Gate 前置条件检查
371
-
372
- 在执行任何 Gate 之前,检查前置条件。如果前置条件不满足,**你在跳步——立刻停下来**。
373
-
374
- ```
375
- □ 开始 Gate 1(规划) → issue 文档存在且 status: open
376
- □ 开始 Gate 2(PLAN 审查)→ PLAN.md 存在于文件系统
377
- □ 开始 Gate 3(任务拆解)→ PLAN-REVIEW.md 存在且 verdict: PASS
378
- □ 开始 Gate 4(TASK 审查)→ TASK.md 存在于文件系统
379
- □ 开始 Gate 5(开发) → TASK-REVIEW.md 存在且 verdict: PASS
380
- □ 开始 Gate 6(测试) → LOG.md 存在且有运行时证据
381
- □ 开始 Gate 7(最终审查)→ TEST.md 存在
382
- □ 开始 Gate 7.5(Closure)→ FINAL-REVIEW.md 存在且 verdict: PASS
383
- □ 开始 Gate 8(Push+PR)→ CLOSURE.md 存在
384
- ```
385
-
386
- **最关键的一条**:如果你正在调用 Write/Edit/Bash 修改代码,但 PLAN.md 不存在——你在跳步。立刻停下来。
387
-
388
- ---
389
-
390
- ## 异常处理
391
-
392
- 所有异常路径都是"停止"。没有"继续但小心一点"。
393
-
394
- | 场景 | 你做什么 |
395
- |------|---------|
396
- | Scope 超 3 个代码文件 | 在 issue 文档加 `execution_status: needs_plan`,停止 |
397
- | PLAN 审查 2 轮不通过 | 在 issue 文档加 `execution_status: blocked`,停止 |
398
- | TASK 审查 2 轮不通过 | 同上 |
399
- | 测试失败且你无法修复 | TEST.md 记录失败原因,在 issue 文档加 `execution_status: blocked`,停止 |
400
- | 需要修改禁止修改的文件 | 停止 |
401
- | Rebase 冲突 | 在 issue 文档加 `execution_status: needs_coordination`,停止 |
402
- | 最终审查不通过 | 回到 Gate 5 修复,重新走 Gate 6-7。最多 2 轮。 |
403
- | 不确定怎么做 | 停止。不要猜。 |
404
-
405
- **停止后做什么**:即使停止了,你产出的 PLAN.md / TASK.md / LOG.md 仍然有价值——它们记录了你的分析和进展。commit 这些文档(即使代码改动不完整),push branch,但**不创建 PR**。在 issue 文档中记录你停在哪个 Gate、为什么停止。
406
-
407
- ---
408
-
409
- ## 开始执行
410
-
411
- 1. 读取 `.boll/skills/guardian-fixer/SKILL.md`
412
- 2. 从 Step 0 开始
413
- 3. 严格按顺序执行到 Step 10
414
- 4. 每个 Gate 的产物写入 `docs/decisions/tasks/GUARD-YYYYMMDD-HHMM/`
415
- 5. 遇到异常就停止