@bolloon/bolloon-agent 0.1.0 → 0.1.1

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 (431) hide show
  1. package/package.json +1 -1
  2. package/dist/constraint-runtime/tests/agent.test.js +0 -16
  3. package/dist/constraint-runtime/tests/constraint.test.js +0 -41
  4. package/dist/constraint-runtime/tests/skill.test.js +0 -19
  5. package/dist/constraint-runtime/tests/thinking.test.js +0 -22
  6. package/dist/electron-preload.js +0 -15
  7. package/dist/electron-preload.js.map +0 -1
  8. package/dist/electron.js +0 -206
  9. package/dist/electron.js.map +0 -1
  10. package/dist/test/constraint-layer.test.js +0 -164
  11. package/dist/test/global-shared-context.test.js +0 -315
  12. package/dist/test/pi-sdk.test.js +0 -47
  13. package/dist/test/set-persona.test.js +0 -38
  14. package/dist/test/subagent-manager.test.js +0 -276
  15. package/dist/test/workflow-engine.test.js +0 -87
  16. package/dist/workflows/collaboration.js +0 -374
  17. package/dist/workflows/index.js +0 -54
  18. package/docs/agent-communication.md +0 -333
  19. package/docs/plans/2026-05-15-document-agent-design.md +0 -479
  20. package/docs/plans/2026-05-15-document-agent-implementation-plan.md +0 -792
  21. package/docs/plans/2026-05-16-chat-ui-design.md +0 -86
  22. package/docs/plans/2026-05-16-constraint-runtime-design.md +0 -106
  23. package/docs/plans/2026-05-16-constraint-runtime-implementation.md +0 -441
  24. 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
  25. package/src/bollharness/.boll/CLAUDE.md.template +0 -34
  26. package/src/bollharness/.boll/MANIFEST.yaml +0 -213
  27. package/src/bollharness/.boll/active-review-agents/.gitkeep +0 -0
  28. package/src/bollharness/.boll/agents/review-base.yaml +0 -108
  29. package/src/bollharness/.boll/deploy-allowlist.yaml +0 -38
  30. package/src/bollharness/.boll/inbox/schema/message-v1.json +0 -99
  31. package/src/bollharness/.boll/install-staging/.gitkeep +0 -0
  32. package/src/bollharness/.boll/issue-adapter.yaml +0 -31
  33. package/src/bollharness/.boll/plugins/boll-mode-toolkit/contracts/mode-contract.md +0 -85
  34. package/src/bollharness/.boll/plugins/boll-review-toolkit/contracts/evidence-packet-schema.json +0 -102
  35. package/src/bollharness/.boll/plugins/boll-review-toolkit/contracts/review-contract.yaml +0 -247
  36. package/src/bollharness/.boll/rules/backend-routes.md +0 -31
  37. package/src/bollharness/.boll/rules/closure-semantics.md +0 -30
  38. package/src/bollharness/.boll/rules/env-vars.md +0 -32
  39. package/src/bollharness/.boll/rules/hanis-protocol.md +0 -145
  40. package/src/bollharness/.boll/rules/repo-structure.md +0 -42
  41. package/src/bollharness/.boll/rules/review-agent-isolation.md +0 -73
  42. package/src/bollharness/.boll/rules/source-of-truth.md +0 -33
  43. package/src/bollharness/.boll/settings.json +0 -180
  44. package/src/bollharness/.boll/settings.json.template +0 -31
  45. package/src/bollharness/.boll/skills/arch/SKILL.md +0 -372
  46. package/src/bollharness/.boll/skills/bug-pipeline/SKILL.md +0 -168
  47. package/src/bollharness/.boll/skills/bug-triage/SKILL.md +0 -161
  48. package/src/bollharness/.boll/skills/context-chains/SKILL.md +0 -250
  49. package/src/bollharness/.boll/skills/context-chains/context-chain-index.md +0 -48
  50. package/src/bollharness/.boll/skills/context-chains/work-type-extractors/code_change_extractor.ts +0 -142
  51. package/src/bollharness/.boll/skills/context-chains/work-type-extractors/debugging_extractor.ts +0 -126
  52. package/src/bollharness/.boll/skills/context-chains/work-type-extractors/design_extractor.ts +0 -148
  53. package/src/bollharness/.boll/skills/context-chains/work-type-extractors/planning_extractor.ts +0 -162
  54. package/src/bollharness/.boll/skills/context-chains/work-type-extractors/question_extractor.ts +0 -116
  55. package/src/bollharness/.boll/skills/context-chains/work-type-extractors/review_extractor.ts +0 -136
  56. package/src/bollharness/.boll/skills/crystal-learn/SKILL.md +0 -93
  57. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-0.md +0 -34
  58. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-1.md +0 -34
  59. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-2.md +0 -35
  60. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-3.md +0 -34
  61. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-4.md +0 -43
  62. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-5.md +0 -34
  63. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-6.md +0 -37
  64. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-7.md +0 -46
  65. package/src/bollharness/.boll/skills/guardian-fixer/PROMPT.md +0 -415
  66. package/src/bollharness/.boll/skills/guardian-fixer/SKILL.md +0 -320
  67. package/src/bollharness/.boll/skills/harness-dev/SKILL.md +0 -93
  68. package/src/bollharness/.boll/skills/harness-dev/examples/README.md +0 -227
  69. package/src/bollharness/.boll/skills/harness-dev-handoff/SKILL.md +0 -165
  70. package/src/bollharness/.boll/skills/harness-eng/SKILL.md +0 -110
  71. package/src/bollharness/.boll/skills/harness-eng-test/SKILL.md +0 -79
  72. package/src/bollharness/.boll/skills/harness-lab/SKILL.md +0 -170
  73. package/src/bollharness/.boll/skills/harness-ops/SKILL.md +0 -57
  74. package/src/bollharness/.boll/skills/harness-voice/SKILL.md +0 -183
  75. package/src/bollharness/.boll/skills/judgment/SKILL.md +0 -115
  76. package/src/bollharness/.boll/skills/lead/SKILL.md +0 -245
  77. package/src/bollharness/.boll/skills/lead/install-wow-harness.md +0 -77
  78. package/src/bollharness/.boll/skills/lead/ref-review-sop.md +0 -91
  79. package/src/bollharness/.boll/skills/lead/ref-stages.md +0 -129
  80. package/src/bollharness/.boll/skills/skill-discovery/SKILL.md +0 -169
  81. package/src/bollharness/.boll/skills/task-arch/SKILL.md +0 -106
  82. package/src/bollharness/.boll/skills/toolkit/SKILL.md +0 -57
  83. package/src/bollharness/.boll/tasks/.gitkeep +0 -0
  84. package/src/bollharness/.boll/toolkit-index.yaml +0 -112
  85. package/src/bollharness/.claude/agents/review-base.yaml +0 -108
  86. package/src/bollharness/.claude/plugins/boll-mode-toolkit/.claude-plugin/plugin.json +0 -44
  87. package/src/bollharness/.claude/plugins/boll-review-toolkit/.claude-plugin/plugin.json +0 -24
  88. package/src/bollharness/.claude/plugins/boll-review-toolkit/contracts/evidence-packet-schema.json +0 -102
  89. package/src/bollharness/.claude/plugins/boll-review-toolkit/contracts/review-contract.yaml +0 -247
  90. package/src/bollharness/.claude/settings.json +0 -157
  91. package/src/bollharness/.claude/skills/arch/SKILL.md +0 -64
  92. package/src/bollharness/.claude/skills/crystal-learn/SKILL.md +0 -93
  93. package/src/bollharness/.claude/skills/guardian-fixer/PROMPT.md +0 -44
  94. package/src/bollharness/.claude/skills/guardian-fixer/SKILL.md +0 -324
  95. package/src/bollharness/.claude/skills/harness-dev/SKILL.md +0 -93
  96. package/src/bollharness/.claude/skills/harness-dev/examples/README.md +0 -17
  97. package/src/bollharness/.claude/skills/harness-dev-handoff/SKILL.md +0 -165
  98. package/src/bollharness/.claude/skills/harness-eng/SKILL.md +0 -183
  99. package/src/bollharness/.claude/skills/harness-eng-test/SKILL.md +0 -57
  100. package/src/bollharness/.claude/skills/harness-ops/SKILL.md +0 -57
  101. package/src/bollharness/.claude/skills/harness-voice/SKILL.md +0 -84
  102. package/src/bollharness/.claude/skills/lead/INDEX.md +0 -28
  103. package/src/bollharness/.claude/skills/lead/SKILL.md +0 -24
  104. package/src/bollharness/.claude/skills/lead/install-wow-harness.md +0 -77
  105. package/src/bollharness/.claude/skills/lead/ref-review-sop.md +0 -48
  106. package/src/bollharness/.claude/skills/lead/ref-stages.md +0 -58
  107. package/src/bollharness/.claude/skills/plan-lock/SKILL.md +0 -74
  108. package/src/bollharness/.claude/skills/skill-discovery/SKILL.md +0 -120
  109. package/src/bollharness/.claude/skills/task-arch/SKILL.md +0 -106
  110. package/src/bollharness/.claude/skills/toolkit/SKILL.md +0 -57
  111. package/src/bollharness/.claude/skills/toolkit/list.sh +0 -92
  112. package/src/bollharness/.githooks/pre-commit +0 -21
  113. package/src/bollharness/.github/workflows/ci.yml +0 -88
  114. package/src/bollharness/CLAUDE.md +0 -73
  115. package/src/bollharness/README.md +0 -143
  116. package/src/bollharness/README.zh-CN.md +0 -131
  117. package/src/bollharness/docs/decisions/ADR-030-guard-signal-protocol-and-governance-reload.md +0 -1076
  118. package/src/bollharness/docs/decisions/ADR-038-harness-optimization-strategy.md +0 -2039
  119. package/src/bollharness/docs/decisions/ADR-041-codex-claude-code-division-of-labor.md +0 -128
  120. package/src/bollharness/docs/decisions/ADR-H1-crystal-learn-revival.md +0 -188
  121. package/src/bollharness/docs/decisions/ADR-H2-identity-isolation.md +0 -183
  122. package/src/bollharness/docs/decisions/ADR-H3-memory-scope.md +0 -133
  123. package/src/bollharness/docs/decisions/ADR-H4-prompt-governance.md +0 -146
  124. package/src/bollharness/docs/decisions/ADR-H5-gate-quantization.md +0 -212
  125. package/src/bollharness/docs/decisions/ADR-H6-state-file-health.md +0 -211
  126. package/src/bollharness/docs/decisions/ADR-H8-issue-and-doc-compliance.md +0 -202
  127. package/src/bollharness/docs/decisions/ADR-H9-mailbox.md +0 -231
  128. package/src/bollharness/docs/decisions/PLAN-H1-crystal-learn-revival.md +0 -270
  129. package/src/bollharness/docs/decisions/PLAN-H2-identity-isolation.md +0 -291
  130. package/src/bollharness/docs/decisions/PLAN-H3-memory-scope.md +0 -228
  131. package/src/bollharness/docs/decisions/PLAN-H4-prompt-governance.md +0 -227
  132. package/src/bollharness/docs/decisions/PLAN-H5-gate-quantization.md +0 -239
  133. package/src/bollharness/docs/decisions/PLAN-H6-state-file-health.md +0 -325
  134. package/src/bollharness/docs/decisions/PLAN-H8-issue-and-doc-compliance.md +0 -242
  135. package/src/bollharness/docs/decisions/PLAN-H9-mailbox.md +0 -378
  136. package/src/bollharness/docs/launch-article-en.md +0 -276
  137. package/src/bollharness/docs/launch-article-zh.md +0 -305
  138. package/src/bollharness/docs/practice.html +0 -356
  139. package/src/bollharness/docs/practice.md +0 -82
  140. package/src/bollharness/docs/research/round-1/README.md +0 -11
  141. package/src/bollharness/docs/research/round-2/README.md +0 -11
  142. package/src/bollharness/docs/research/round-3/README.md +0 -11
  143. package/src/bollharness/docs/research/round-4/README.md +0 -11
  144. package/src/bollharness/docs/research/round-5/README.md +0 -11
  145. package/src/bollharness/docs/research/round-6/README.md +0 -11
  146. package/src/bollharness/package-lock.json +0 -48
  147. package/src/bollharness/reference/boll-reference/.claude/rules/backend-routes.md +0 -268
  148. package/src/bollharness/reference/boll-reference/.claude/rules/bridge.md +0 -20
  149. package/src/bollharness/reference/boll-reference/.claude/rules/closure-semantics.md +0 -30
  150. package/src/bollharness/reference/boll-reference/.claude/rules/coaching.md +0 -13
  151. package/src/bollharness/reference/boll-reference/.claude/rules/env-vars.md +0 -50
  152. package/src/bollharness/reference/boll-reference/.claude/rules/hackathon.md +0 -12
  153. package/src/bollharness/reference/boll-reference/.claude/rules/repo-structure.md +0 -184
  154. package/src/bollharness/reference/boll-reference/.claude/rules/review-agent-isolation.md +0 -112
  155. package/src/bollharness/reference/boll-reference/.claude/rules/scenes.md +0 -12
  156. package/src/bollharness/reference/boll-reference/.claude/skills/arch/SKILL.md +0 -551
  157. package/src/bollharness/reference/boll-reference/.claude/skills/boll-animation/SKILL.md +0 -26
  158. package/src/bollharness/reference/boll-reference/.claude/skills/boll-bridge/SKILL.md +0 -227
  159. package/src/bollharness/reference/boll-reference/.claude/skills/boll-bridge/agents/openai.yaml +0 -4
  160. package/src/bollharness/reference/boll-reference/.claude/skills/boll-bridge/references/bridge-failure-taxonomy.md +0 -142
  161. package/src/bollharness/reference/boll-reference/.claude/skills/boll-bridge/references/bridge-validation-ladder.md +0 -107
  162. package/src/bollharness/reference/boll-reference/.claude/skills/boll-crystal/SKILL.md +0 -893
  163. package/src/bollharness/reference/boll-reference/.claude/skills/boll-crystal-learn/SKILL.md +0 -89
  164. package/src/bollharness/reference/boll-reference/.claude/skills/boll-dev/SKILL.md +0 -93
  165. package/src/bollharness/reference/boll-reference/.claude/skills/boll-dev/examples/README.md +0 -209
  166. package/src/bollharness/reference/boll-reference/.claude/skills/boll-dev-handoff/SKILL.md +0 -165
  167. package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng/SKILL.md +0 -110
  168. package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-frontend/SKILL.md +0 -203
  169. package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-hdc/SKILL.md +0 -27
  170. package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-orchestrator/SKILL.md +0 -28
  171. package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-prompt/SKILL.md +0 -27
  172. package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-test/SKILL.md +0 -79
  173. package/src/bollharness/reference/boll-reference/.claude/skills/boll-lab/SKILL.md +0 -372
  174. package/src/bollharness/reference/boll-reference/.claude/skills/boll-run/SKILL.md +0 -437
  175. package/src/bollharness/reference/boll-reference/.claude/skills/boll-ux-appstore/SKILL.md +0 -27
  176. package/src/bollharness/reference/boll-reference/.claude/skills/boll-voice/SKILL.md +0 -442
  177. package/src/bollharness/reference/boll-reference/.claude/skills/guardian-fixer/PROMPT.md +0 -421
  178. package/src/bollharness/reference/boll-reference/.claude/skills/guardian-fixer/SKILL.md +0 -326
  179. package/src/bollharness/reference/boll-reference/.claude/skills/lead/SKILL.md +0 -155
  180. package/src/bollharness/reference/boll-reference/.claude/skills/lead/ref-review-sop.md +0 -91
  181. package/src/bollharness/reference/boll-reference/.claude/skills/lead/ref-stages.md +0 -129
  182. package/src/bollharness/reference/boll-reference/.claude/skills/nature-designer/output/skill-map-preview.png +0 -0
  183. package/src/bollharness/reference/boll-reference/.claude/skills/nature-designer/output/skill-map-v2.png +0 -0
  184. package/src/bollharness/reference/boll-reference/.claude/skills/nature-designer/output/skill-map-v3.png +0 -0
  185. package/src/bollharness/reference/boll-reference/.claude/skills/nature-designer/output/skill-map-v4.png +0 -0
  186. package/src/bollharness/reference/boll-reference/.claude/skills/plan-lock/SKILL.md +0 -425
  187. package/src/bollharness/reference/boll-reference/.claude/skills/plan-lock/ref-three-checks.md +0 -62
  188. package/src/bollharness/reference/boll-reference/.claude/skills/plan-lock/ref-wp-templates.md +0 -78
  189. package/src/bollharness/reference/boll-reference/.claude/skills/task-arch/SKILL.md +0 -76
  190. package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-graph/SKILL.md +0 -57
  191. package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-graph/beads-graph.sh +0 -153
  192. package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-init/SKILL.md +0 -52
  193. package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-init/beads-auto-link.sh +0 -76
  194. package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-sync/SKILL.md +0 -50
  195. package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-sync/beads-sync-proj.sh +0 -108
  196. package/src/bollharness/reference/boll-reference/docs/architecture/AGENT-PROFILE.md +0 -151
  197. package/src/bollharness/reference/boll-reference/docs/architecture/COST-STRUCTURE.md +0 -56
  198. package/src/bollharness/reference/boll-reference/docs/architecture/INDEX.md +0 -76
  199. package/src/bollharness/reference/boll-reference/docs/architecture/MODULE1-INTENT-FIELD.md +0 -116
  200. package/src/bollharness/reference/boll-reference/docs/architecture/MODULE2-CRYSTALLIZATION.md +0 -200
  201. package/src/bollharness/reference/boll-reference/docs/architecture/PRINCIPLES.md +0 -84
  202. package/src/bollharness/reference/boll-reference/docs/architecture/PROTOCOL-CORE.md +0 -209
  203. package/src/bollharness/reference/boll-reference/docs/architecture/VISION.md +0 -181
  204. package/src/bollharness/reference/boll-reference/docs/architecture/discussions/D-01-MARKET-SCENE-PROTOCOL.md +0 -754
  205. package/src/bollharness/reference/boll-reference/scripts/hooks/stop-evaluator.md +0 -57
  206. package/src/bollharness/scripts/context-fragments/artifact-linkage.md +0 -14
  207. package/src/bollharness/scripts/context-fragments/auth-consumers.md +0 -17
  208. package/src/bollharness/scripts/context-fragments/bridge-constitution.md +0 -13
  209. package/src/bollharness/scripts/context-fragments/catalyst-distributed.md +0 -18
  210. package/src/bollharness/scripts/context-fragments/closure-checklist.md +0 -13
  211. package/src/bollharness/scripts/context-fragments/contract-consumers.md +0 -15
  212. package/src/bollharness/scripts/context-fragments/db-shared-structures.md +0 -15
  213. package/src/bollharness/scripts/context-fragments/fixed-three-layers.md +0 -19
  214. package/src/bollharness/scripts/context-fragments/general-dev-principles.md +0 -11
  215. package/src/bollharness/scripts/context-fragments/issue-first.md +0 -8
  216. package/src/bollharness/scripts/context-fragments/mcp-parity.md +0 -16
  217. package/src/bollharness/scripts/context-fragments/pi-agent-operations.md +0 -74
  218. package/src/bollharness/scripts/context-fragments/protocol-consumers.md +0 -15
  219. package/src/bollharness/scripts/context-fragments/run-events-consumers.md +0 -15
  220. package/src/bollharness/scripts/context-fragments/scene-fidelity.md +0 -13
  221. package/src/bollharness/scripts/context-fragments/truth-source-hierarchy.md +0 -15
  222. package/src/bollharness/scripts/context-fragments/two-language.md +0 -15
  223. package/src/bollharness/scripts/context-fragments/version-sources.md +0 -14
  224. package/src/bollharness/scripts/hooks/stop-evaluator.md +0 -83
  225. package/src/bollharness/templates/scaffold/.boll/guard/.gitkeep +0 -0
  226. package/src/bollharness/templates/scaffold/.boll/metrics/.gitkeep +0 -0
  227. package/src/bollharness/templates/scaffold/.boll/state/.gitkeep +0 -0
  228. package/src/bollharness/templates/scaffold/CLAUDE.md +0 -89
  229. package/src/bollharness/templates/scaffold/docs/INDEX.md +0 -3
  230. package/src/bollharness/templates/scaffold/docs/decisions/ADR_TEMPLATE.md +0 -38
  231. package/src/bollharness/templates/scaffold/docs/decisions/PLAN_TEMPLATE.md +0 -45
  232. package/src/bollharness/templates/scaffold/docs/decisions/tasks/.gitkeep +0 -2
  233. package/src/bollharness/templates/scaffold/docs/issues/.gitkeep +0 -0
  234. package/src/bollharness/templates/scaffold/docs/issues/GUARD_ISSUE_TEMPLATE.md +0 -35
  235. package/src/bollharness/templates/scaffold/docs/issues/ISSUE_TEMPLATE.md +0 -51
  236. package/src/bollharness/tsconfig.json +0 -26
  237. package/src/constraint-runtime/package-lock.json +0 -48
  238. package/src/constraint-runtime/package.json +0 -34
  239. package/src/constraint-runtime/src/_archive_helper.ts +0 -16
  240. package/src/constraint-runtime/src/agent/coordinator.ts +0 -71
  241. package/src/constraint-runtime/src/agent/index.ts +0 -1
  242. package/src/constraint-runtime/src/assistant/index.ts +0 -15
  243. package/src/constraint-runtime/src/bootstrap/index.ts +0 -15
  244. package/src/constraint-runtime/src/bootstrap_graph.ts +0 -17
  245. package/src/constraint-runtime/src/bridge/index.ts +0 -15
  246. package/src/constraint-runtime/src/buddy/index.ts +0 -15
  247. package/src/constraint-runtime/src/cli/index.ts +0 -15
  248. package/src/constraint-runtime/src/command_graph.ts +0 -20
  249. package/src/constraint-runtime/src/commands.ts +0 -83
  250. package/src/constraint-runtime/src/components/index.ts +0 -15
  251. package/src/constraint-runtime/src/constants/index.ts +0 -15
  252. package/src/constraint-runtime/src/constraint/budget.ts +0 -25
  253. package/src/constraint-runtime/src/constraint/index.ts +0 -3
  254. package/src/constraint-runtime/src/constraint/permission.ts +0 -28
  255. package/src/constraint-runtime/src/context.ts +0 -45
  256. package/src/constraint-runtime/src/coordinator/index.ts +0 -15
  257. package/src/constraint-runtime/src/cost_hook.ts +0 -6
  258. package/src/constraint-runtime/src/cost_tracker.ts +0 -9
  259. package/src/constraint-runtime/src/deferred_init.ts +0 -18
  260. package/src/constraint-runtime/src/direct_modes.ts +0 -13
  261. package/src/constraint-runtime/src/dynamic-tool-loader.ts +0 -115
  262. package/src/constraint-runtime/src/entrypoints/index.ts +0 -15
  263. package/src/constraint-runtime/src/execution_registry.ts +0 -41
  264. package/src/constraint-runtime/src/history.ts +0 -16
  265. package/src/constraint-runtime/src/hooks/index.ts +0 -15
  266. package/src/constraint-runtime/src/index.ts +0 -28
  267. package/src/constraint-runtime/src/ink.ts +0 -4
  268. package/src/constraint-runtime/src/keybindings/index.ts +0 -15
  269. package/src/constraint-runtime/src/memdir/index.ts +0 -15
  270. package/src/constraint-runtime/src/migrations/index.ts +0 -15
  271. package/src/constraint-runtime/src/models.ts +0 -49
  272. package/src/constraint-runtime/src/moreright/index.ts +0 -15
  273. package/src/constraint-runtime/src/native_ts/index.ts +0 -15
  274. package/src/constraint-runtime/src/output_styles/index.ts +0 -15
  275. package/src/constraint-runtime/src/parity_audit.ts +0 -23
  276. package/src/constraint-runtime/src/plugins/index.ts +0 -15
  277. package/src/constraint-runtime/src/port_manifest.ts +0 -20
  278. package/src/constraint-runtime/src/prefetch.ts +0 -17
  279. package/src/constraint-runtime/src/query.ts +0 -7
  280. package/src/constraint-runtime/src/reference_data/archive_surface_snapshot.json +0 -63
  281. package/src/constraint-runtime/src/reference_data/commands_snapshot.json +0 -1037
  282. package/src/constraint-runtime/src/reference_data/subsystems/OpenCLI.json +0 -10
  283. package/src/constraint-runtime/src/reference_data/subsystems/PolymarketSDK.json +0 -12
  284. package/src/constraint-runtime/src/reference_data/subsystems/SafeSDK.json +0 -14
  285. package/src/constraint-runtime/src/reference_data/subsystems/assistant.json +0 -8
  286. package/src/constraint-runtime/src/reference_data/subsystems/bootstrap.json +0 -8
  287. package/src/constraint-runtime/src/reference_data/subsystems/bridge.json +0 -32
  288. package/src/constraint-runtime/src/reference_data/subsystems/buddy.json +0 -13
  289. package/src/constraint-runtime/src/reference_data/subsystems/cli.json +0 -26
  290. package/src/constraint-runtime/src/reference_data/subsystems/components.json +0 -32
  291. package/src/constraint-runtime/src/reference_data/subsystems/constants.json +0 -28
  292. package/src/constraint-runtime/src/reference_data/subsystems/coordinator.json +0 -8
  293. package/src/constraint-runtime/src/reference_data/subsystems/entrypoints.json +0 -15
  294. package/src/constraint-runtime/src/reference_data/subsystems/hooks.json +0 -32
  295. package/src/constraint-runtime/src/reference_data/subsystems/keybindings.json +0 -21
  296. package/src/constraint-runtime/src/reference_data/subsystems/memdir.json +0 -15
  297. package/src/constraint-runtime/src/reference_data/subsystems/migrations.json +0 -18
  298. package/src/constraint-runtime/src/reference_data/subsystems/moreright.json +0 -8
  299. package/src/constraint-runtime/src/reference_data/subsystems/native_ts.json +0 -11
  300. package/src/constraint-runtime/src/reference_data/subsystems/outputStyles.json +0 -8
  301. package/src/constraint-runtime/src/reference_data/subsystems/plugins.json +0 -9
  302. package/src/constraint-runtime/src/reference_data/subsystems/remote.json +0 -11
  303. package/src/constraint-runtime/src/reference_data/subsystems/schemas.json +0 -8
  304. package/src/constraint-runtime/src/reference_data/subsystems/screens.json +0 -10
  305. package/src/constraint-runtime/src/reference_data/subsystems/server.json +0 -10
  306. package/src/constraint-runtime/src/reference_data/subsystems/services.json +0 -32
  307. package/src/constraint-runtime/src/reference_data/subsystems/skills.json +0 -27
  308. package/src/constraint-runtime/src/reference_data/subsystems/state.json +0 -13
  309. package/src/constraint-runtime/src/reference_data/subsystems/types.json +0 -18
  310. package/src/constraint-runtime/src/reference_data/subsystems/upstreamproxy.json +0 -9
  311. package/src/constraint-runtime/src/reference_data/subsystems/utils.json +0 -32
  312. package/src/constraint-runtime/src/reference_data/subsystems/vim.json +0 -12
  313. package/src/constraint-runtime/src/reference_data/subsystems/voice.json +0 -8
  314. package/src/constraint-runtime/src/reference_data/tools_snapshot.json +0 -1042
  315. package/src/constraint-runtime/src/remote/index.ts +0 -15
  316. package/src/constraint-runtime/src/remote_runtime.ts +0 -17
  317. package/src/constraint-runtime/src/runtime/index.ts +0 -1
  318. package/src/constraint-runtime/src/runtime/session.ts +0 -42
  319. package/src/constraint-runtime/src/schemas/index.ts +0 -15
  320. package/src/constraint-runtime/src/screens/index.ts +0 -15
  321. package/src/constraint-runtime/src/server/index.ts +0 -15
  322. package/src/constraint-runtime/src/services/index.ts +0 -15
  323. package/src/constraint-runtime/src/session_store.ts +0 -32
  324. package/src/constraint-runtime/src/setup.ts +0 -50
  325. package/src/constraint-runtime/src/skills/index.ts +0 -1
  326. package/src/constraint-runtime/src/skills/skill-registry.ts +0 -40
  327. package/src/constraint-runtime/src/state/index.ts +0 -15
  328. package/src/constraint-runtime/src/system_init.ts +0 -21
  329. package/src/constraint-runtime/src/thinking/engine.ts +0 -61
  330. package/src/constraint-runtime/src/thinking/index.ts +0 -1
  331. package/src/constraint-runtime/src/tool_pool.ts +0 -20
  332. package/src/constraint-runtime/src/tools/OpenCLI/execAdapter.ts +0 -12
  333. package/src/constraint-runtime/src/tools/OpenCLI/listAdapters.ts +0 -12
  334. package/src/constraint-runtime/src/tools/OpenCLI/runCommand.ts +0 -13
  335. package/src/constraint-runtime/src/tools/PolymarketSDK/cancelOrder.ts +0 -10
  336. package/src/constraint-runtime/src/tools/PolymarketSDK/createOrder.ts +0 -13
  337. package/src/constraint-runtime/src/tools/PolymarketSDK/getMarket.ts +0 -14
  338. package/src/constraint-runtime/src/tools/PolymarketSDK/getOrders.ts +0 -10
  339. package/src/constraint-runtime/src/tools/PolymarketSDK/listMarkets.ts +0 -24
  340. package/src/constraint-runtime/src/tools/SafeSDK/confirmTransaction.ts +0 -13
  341. package/src/constraint-runtime/src/tools/SafeSDK/createTransaction.ts +0 -23
  342. package/src/constraint-runtime/src/tools/SafeSDK/deploySafe.ts +0 -12
  343. package/src/constraint-runtime/src/tools/SafeSDK/executeTransaction.ts +0 -12
  344. package/src/constraint-runtime/src/tools/SafeSDK/getBalance.ts +0 -10
  345. package/src/constraint-runtime/src/tools/SafeSDK/getPendingTransactions.ts +0 -10
  346. package/src/constraint-runtime/src/tools/SafeSDK/proposeTransaction.ts +0 -14
  347. package/src/constraint-runtime/src/tools/WalletTools/autoPay.ts +0 -58
  348. package/src/constraint-runtime/src/tools/WalletTools/createWallet.ts +0 -19
  349. package/src/constraint-runtime/src/tools/WalletTools/getBalance.ts +0 -28
  350. package/src/constraint-runtime/src/tools/WalletTools/importWallet.ts +0 -34
  351. package/src/constraint-runtime/src/tools/WalletTools/sendTransaction.ts +0 -50
  352. package/src/constraint-runtime/src/tools/WalletTools/signMessage.ts +0 -23
  353. package/src/constraint-runtime/src/tools/WalletTools/transferToken.ts +0 -49
  354. package/src/constraint-runtime/src/tools.ts +0 -100
  355. package/src/constraint-runtime/src/transcript.ts +0 -23
  356. package/src/constraint-runtime/src/types/index.ts +0 -15
  357. package/src/constraint-runtime/src/upstream_proxy/index.ts +0 -15
  358. package/src/constraint-runtime/src/utils/index.ts +0 -15
  359. package/src/constraint-runtime/src/vim/index.ts +0 -15
  360. package/src/constraint-runtime/src/voice/index.ts +0 -15
  361. package/src/constraint-runtime/tests/agent.test.ts +0 -20
  362. package/src/constraint-runtime/tests/constraint.test.ts +0 -47
  363. package/src/constraint-runtime/tests/skill.test.ts +0 -23
  364. package/src/constraint-runtime/tests/thinking.test.ts +0 -28
  365. package/src/constraint-runtime/tsconfig.json +0 -13
  366. package/src/pi-ecosystem/index.ts +0 -453
  367. package/src/pi-ecosystem-colony/index.ts +0 -482
  368. package/src/pi-ecosystem-goals/index.ts +0 -585
  369. package/src/pi-ecosystem-judgment/decision.ts +0 -431
  370. package/src/pi-ecosystem-judgment/distillation.ts +0 -398
  371. package/src/pi-ecosystem-judgment/human-value-store.ts +0 -580
  372. package/src/pi-ecosystem-judgment/index.ts +0 -678
  373. package/src/pi-ecosystem-judgment/value-injection.ts +0 -744
  374. package/src/pi-ecosystem-mcp/index.ts +0 -427
  375. package/src/pi-ecosystem-subagents/index.ts +0 -408
  376. package/src/test/ai-judgment-test.ts +0 -92
  377. package/src/test/bollharness-integration.test.ts +0 -398
  378. package/src/test/channel-agent-multi-dialogue.ts +0 -265
  379. package/src/test/channel-heartbeat-agent-test.ts +0 -244
  380. package/src/test/constraint-layer.test.ts +0 -191
  381. package/src/test/diap-identity-test.ts +0 -222
  382. package/src/test/diap-quick-test.ts +0 -73
  383. package/src/test/global-shared-context.test.ts +0 -393
  384. package/src/test/harness-judgment-injection.test.ts +0 -353
  385. package/src/test/harness-workflow-integrator-test.ts +0 -285
  386. package/src/test/human-value-store.test.ts +0 -316
  387. package/src/test/hybrid-integration-test.ts +0 -126
  388. package/src/test/hybrid-messenger-verify.ts +0 -68
  389. package/src/test/iroh-bistream-debug.ts +0 -50
  390. package/src/test/iroh-communication.test.ts +0 -81
  391. package/src/test/iroh-debug-test.ts +0 -69
  392. package/src/test/iroh-diap-test.ts +0 -90
  393. package/src/test/iroh-direct-connect.ts +0 -65
  394. package/src/test/iroh-e2e-fixed.ts +0 -106
  395. package/src/test/iroh-e2e-same-process.ts +0 -83
  396. package/src/test/iroh-e2e.ts +0 -83
  397. package/src/test/iroh-final-e2e.ts +0 -84
  398. package/src/test/iroh-relay-test.ts +0 -46
  399. package/src/test/iroh-simple-test.ts +0 -49
  400. package/src/test/iroh-transport-verify.ts +0 -60
  401. package/src/test/iroh-transport.test.ts +0 -47
  402. package/src/test/iroh-two-nodes.ts +0 -87
  403. package/src/test/iroh-verify.ts +0 -55
  404. package/src/test/judgment-decision.test.ts +0 -373
  405. package/src/test/llm-judgment-integration.test.ts +0 -257
  406. package/src/test/p2p-agent-complex-dialogue.ts +0 -490
  407. package/src/test/p2p-agent-dialogue.ts +0 -423
  408. package/src/test/p2p-agent-full-bidirectional.ts +0 -686
  409. package/src/test/p2p-agent-harness-flow.ts +0 -562
  410. package/src/test/p2p-agent-harness-single.ts +0 -175
  411. package/src/test/p2p-ai-dialogue-test.ts +0 -374
  412. package/src/test/p2p-cid-connect-test.ts +0 -245
  413. package/src/test/p2p-connect-receiver.ts +0 -85
  414. package/src/test/p2p-iroh-test.ts +0 -214
  415. package/src/test/p2p-minimal-test.ts +0 -264
  416. package/src/test/p2p-node-1.ts +0 -172
  417. package/src/test/p2p-node-2.ts +0 -172
  418. package/src/test/p2p-server.ts +0 -335
  419. package/src/test/p2p-two-nodes-test.ts +0 -542
  420. package/src/test/pi-sdk.test.ts +0 -47
  421. package/src/test/set-persona.ts +0 -56
  422. package/src/test/simple.test.ts +0 -11
  423. package/src/test/storage-integration.test.ts +0 -191
  424. package/src/test/subagent-manager.test.ts +0 -392
  425. package/src/test/test-gate-flow.test.ts +0 -92
  426. package/src/test/workflow-engine.test.ts +0 -101
  427. package/src/web/design.md +0 -99
  428. package/src/workflows/collaboration.ts +0 -455
  429. package/src/workflows/index.ts +0 -64
  430. package/vitest.config.ts +0 -12
  431. package//346/203/263/346/263/225.md +0 -79
@@ -1,128 +0,0 @@
1
- # ADR-041: Codex × Claude Code 分流策略(v1.0 极简版)
2
-
3
- **状态**: accepted (v1.0 — 2026-04-07,砍掉 v0.1/v0.2/v0.3 过度工程化设计)
4
- **日期**: 2026-04-07
5
-
6
- ## 0. 历史与重写理由
7
-
8
- v0.1 → v0.3 在 Gate 2 三轮审查中被红队推着持续加机制,从"分流偏好"膨胀成"18 个架构变更 + 10 红线 + 12 白线 + 威胁模型 + cumulative drift hook + marker chokepoint + hash 锁"。Nature 看完后判断**过度工程化**:原始诉求只是「让 Claude 自己判断啥时候用 Codex + 配几个自动化省 token」,不是建一个微型操作系统。
9
-
10
- v1.0 是干净重写。v0.1/v0.2/v0.3 全部 superseded,**不**作为参考实现。失败模式记录:审查驱动复杂度通胀——红队每轮按"最大威胁假设"提 finding,作者每轮加机制应对,三轮后 ADR 与原始诉求脱节。教训沉淀到 `feedback_review_driven_complexity_inflation.md`。
11
-
12
- ## 1. 问题
13
-
14
- - Claude Code (Opus 4.6) 月度 token 消耗远超预算
15
- - ChatGPT Pro 的 Codex 额度富余,且 2026-03 上线 Automations(schedule + trigger)
16
- - `codex-dev` subagent 已存在但几乎不被调用——main agent 默认把活留给自己
17
- - 一些重复性任务(文档漂移、夜间测试、飞书 bug 预翻译)原本由 Claude 在 session 里跑或干脆没人跑
18
-
19
- ## 2. 决策
20
-
21
- 四件事,没有别的:
22
-
23
- ### D1: CLAUDE.md 加「老板心态」硬规则(§零)
24
-
25
- `CLAUDE.md` 的 §一(不可妥协约束)之前插入新的 §零,约 30 行,明确:
26
-
27
- > 你是技术主管,你有 Codex 这个员工。每接到任务先问"能不能 Codex 干"。默认假设 Codex 能干。
28
-
29
- 列出 5 类容易忽略分流的典型场景:
30
- - 批量字符串替换 / i18n 提取
31
- - CSS / Tailwind 类名批量调整
32
- - 纯技术重构(命名、dead code、补 TS 类型、性能 memo)
33
- - 批量补测试用例(已有框架下)
34
- - 文档批量更新 / shell 脚本生成
35
-
36
- 这是**默认偏好**,不是硬阻塞。误判由人/Claude 在下次任务里学着调整,不靠 hook 强制。
37
-
38
- ### D2: codex-dev 红线(3 条,不是 10 条)
39
-
40
- `.claude/agents/codex-dev.md` 顶部加红线段,**只列 3 条**:
41
-
42
- 1. **前端 React 组件结构 / 交互逻辑 / 新页面或新 feature 的实现** — Codex 前端小错多
43
- 2. **跨模块数据流穿透**(前端 → API → DB) — Codex 类型对齐 ≠ 数据流通的元失败模式
44
- 3. **审美决策 / `nature-designer` 流程** — CLAUDE.md §一 1.2
45
-
46
- 红线之外的任务,main agent 决定要不要分流,不强制。
47
-
48
- ### D3: 5 个 ChatGPT Pro Automation(异步通道)
49
-
50
- 由 Nature 在 ChatGPT Pro 端手动配置,**全部以 PR 为唯一交付形态**,不直接 commit main:
51
-
52
- | Automation | 触发 | 频率 | 产出 |
53
- |---|---|---|---|
54
- | `doc-drift-scan` | schedule | 每 2h | 检测 magic docs / `check_doc_freshness.py` 漂移,有则提 PR |
55
- | `magic-doc-regenerate` | schedule | 每 6h | 跑 `regenerate_magic_docs.py all`,drift 则提 PR |
56
- | `nightly-test-baseline` | schedule | 每日 02:00 | 跑全量 unit/integration 对比 baseline,新 failure 提 PR + 飞书通知 |
57
- | `daily-release-brief` | schedule | 每日 18:00 | git log + PR merged 汇总,写 `.wow-harness/codex-reports/brief-{date}.md` |
58
-
59
- GitHub main branch protection 必须开启(禁直接 push main、禁 force push)。这是 Automation 安全边界的兜底。
60
-
61
- ### D4: AGENTS.md 派生 + 双配置同步
62
-
63
- Codex 不读 `CLAUDE.md`。在仓根的 `AGENTS.md` 加一段从 `CLAUDE.md` 抽取的 Codex 必知子集(路径、commit 双语、python3、浅色主题、3 条红线)。手动维护即可,不写自动同步脚本——一周复盘时顺便对一遍。
64
-
65
- ## 3. 不做的事(明确砍掉)
66
-
67
- 为了避免 v1.x 又被审查放大,明确**不做**:
68
-
69
- - ❌ `codex-router.py` 决策树 hook(让 Claude 判断就行)
70
- - ❌ PostToolUse / PreToolUse 任何 router 相关 hook
71
- - ❌ marker 文件 / chokepoint / hash 锁
72
- - ❌ Gate 审查 pre-pass(Codex 在审查中的角色是 0)
73
- - ❌ 威胁模型四元论证 / cumulative drift / signed bias 算法
74
- - ❌ `.wow-harness/router-misroutes.jsonl` / `.wow-harness/router-tobe-reviewed.jsonl` / `.wow-harness/router-health.jsonl`
75
- - ❌ `task_signal` 字段 / `executor` frontmatter 强制 / `task-arch` skill 改造
76
- - ❌ PLAN-083 / 9 WP 拆分
77
-
78
- 如果未来发现"老板心态规则不够,Claude 还是不分流",**先调规则文字,不加机制**。机制化必须先在每周复盘里证明"调规则解决不了"。
79
-
80
- ## 4. 实施清单(4 个文件,不是 18 个)
81
-
82
- | # | 文件 | 改动 |
83
- |---|---|---|
84
- | C1 | `CLAUDE.md` | 在 §一 之前插入 §零「老板心态」硬段 |
85
- | C2 | `.claude/agents/codex-dev.md` | 顶部加 3 条红线 |
86
- | C3 | `AGENTS.md` | 加「Codex 必知子集」一节(红线 + commit 双语 + python3 + 浅色主题) |
87
- | C4 | ChatGPT Pro 控制台 | Nature 手动配置 5 个 Automation(D3 表)+ 验证 main branch protection 已开 |
88
-
89
- C1/C2/C3 由本 ADR 同 commit 一起做。C4 由 Nature 手动完成,做完在 `MEMORY.md` 记一笔。
90
-
91
- ## 5. 复盘节奏
92
-
93
- **每周一次**(不是月度)。每周末 Nature 看一次:
94
-
95
- 1. 这周 codex-dev 被调用了几次?(人脑估算,不需要 metrics 文件)
96
- 2. 有没有发生"应该分流但没分流"的明显案例?
97
- 3. 5 个 Automation 是否都在跑?产出是否被消费?
98
- 4. 老板心态规则要不要改字?
99
-
100
- 如果连续 2 周分流明显不足,再考虑加机制;不要先建机制再找用途。
101
-
102
- ## 6. 验收
103
-
104
- 不设可量化指标。验收靠 Nature 的主观感受:
105
-
106
- - 月度 Claude token 消耗有没有"明显感觉降低"
107
- - codex-dev 有没有"明显感觉被用起来"
108
- - 5 个 Automation 是否真的在 PR 队列里看到产出
109
-
110
- 当出现"感觉跟 v1.0 之前没区别"时,回头审视:是规则文字不够强?还是 Automation 没配?不是"加机制"。
111
-
112
- ## 7. 关联
113
-
114
- - ADR-038 D11 — 审查 agent 工具隔离,与本 ADR 正交(本 ADR 不动审查门,Codex 不参与审查)
115
- - <EXTERNAL_PIPELINE_REDACTED> — Automation 下游消费方示例(已脱敏移除)
116
- - `CLAUDE.md §四 4.3` — subagent 模型约束。codex-dev 是**执行类**而非判断类 subagent,不受 4.3 opus 约束(这一句加到 4.3 末尾的例外子句里,由 C1 顺手做)
117
- - `memory/feedback_codex_quality_issues.md` / `feedback_codex_error_patterns_crystal_learn.md` — Codex 已知失败模式,沉淀在 memory 而不是 hook
118
-
119
- ## 8. 失败模式记录(v0.1 → v0.3 教训)
120
-
121
- 为什么前 3 版会膨胀:
122
-
123
- 1. **审查门 PEHK 规则在小决策上反向放大**:「任一 reviewer P0 → BLOCK」逼出"每轮按红队最大威胁假设加机制"的循环
124
- 2. **没人喊停**:作者在 Gate 流程里默认遵循 reviewer,没意识到原始诉求只需要 100 行 ADR
125
- 3. **威胁模型不显式**:v0.3 才补 §2.0 威胁模型,但已经是在过度工程之上的防御
126
- 4. **Skill 状态机鼓励完整性**:lead skill 的 Gate 0→8 完整流程对"30 分钟级别的偏好调整"是过度的——快速通道(CLAUDE.md §零行为约束 2.2)的 5 条触发条件应该被本 ADR 命中
127
-
128
- 教训沉淀到 `feedback_review_driven_complexity_inflation.md`,将来类似规模的 ADR 直接走快速通道,不开 Gate 2 三角审查。
@@ -1,188 +0,0 @@
1
- ---
2
- adr: ADR-H1
3
- title: crystal-learn 学习层复活——触发节奏物理化(不加机制)
4
- status: Accepted
5
- version: 1.0
6
- date: 2026-04-28
7
- owner: nature
8
- window_owner: shared
9
- window_owner_since: 2026-04-28T18:30+08:00
10
- parent_plan: 39-h-h-h-h-hanis-refactored-toucan
11
- inherits_philosophy:
12
- - ADR-041-v1.0-codex-routing # 调字不加机制
13
- - ADR-H4-prompt-governance # H4 INV-H4-3 哲学硬继承
14
- related_skills:
15
- - ~/.boll/skills/boll-crystal-learn/SKILL.md # 学习层(已就位,89 行成熟契约)
16
- - .boll/skills/lead/SKILL.md # 接收侧(line 142 已布线)
17
- problems_addressed:
18
- - "#1 自我进化健康度停摆 11 天(最后 round verdict 2026-04-17)"
19
- - "#2 crystal-learn skill 周期触发停了 4 周"
20
- - "#7 crystal-learn 没退役(认知修正,问题降级)"
21
- ---
22
-
23
- # ADR-H1:crystal-learn 学习层复活——触发节奏物理化(不加机制)
24
-
25
- ## §1 上下文
26
-
27
- ### 1.1 stop-the-bleed 现状(来自 H 系列 plan §2.1 Phase 1 调研)
28
-
29
- - crystal-learn skill 文件 `~/.boll/skills/boll-crystal-learn/SKILL.md` **存在且成熟**(89 行;status=active;tier=meta;INV-0..INV-7 全部映射到 active target skills)
30
- - crystal-learn 接收侧 `.boll/skills/lead/SKILL.md` line 142 **已布线**(`## 来自 crystal-learn 的门禁` 段含 INV-4 真相源分裂 + INV-6 验证衰减 + Gate 8 PASS 宣告规则)
31
- - crystal-learn skill commit 历史最近一次产出 `c80f2b48`(2026-04-25 billing INV-5/6 sync);之前 `8925d8f1`(4 skill 沉淀)→ `479a6b70`(INV-1/6 instances)→ 4-5 个月静默期
32
- - harness-self-symptoms.md 累计 **9 条** symptom(§4.1-§4.9),其中 §4.7/§4.8 同根复发("起草不实证"),§4.9 是新型号(cross-plan-class race);处置段已生成 ADR-H0 修订建议第 8/9/10 条**未消化**
33
-
34
- ### 1.2 root cause(4 周停摆)
35
-
36
- 不是基础设施缺失,是**触发节奏断了**。crystal-learn 现有触发依赖:
37
-
38
- - (A) Nature 主动启动(人脑提醒)
39
- - (B) Gate 收尾时手工触发(依赖 reviewer / coordinator 在 Gate 8 闭环时记得调用)
40
-
41
- H 系列实施 11 天累积,Nature 已超载;reviewer / coordinator 角色在 H4 之前未稳定到位。两条触发轴都失效。
42
-
43
- ### 1.3 不是什么
44
-
45
- - 不是 crystal-learn skill 本身契约问题(output contract = invariant delta + target injection map 已明确)
46
- - 不是接收侧布线问题(lead/SKILL.md line 142 段已存在)
47
- - 不是缺机制(写 cron / 加 hook 是 #20 推卸 + ADR-041 v1.0 红线 + H4 INV-H4-3 反例)
48
-
49
- ## §2 决策本质
50
-
51
- 把"何时触发 crystal-learn"从隐式人脑依赖转为显式 prompt-level checklist,**写进 lead/SKILL.md**(CLAUDE.md 隐式默认加载,70% adherence baseline)。继承 ADR-041 v1.0 "调字不加机制" + H4 INV-H4-3 "禁 hook/metrics/review-contract"。
52
-
53
- 具体:
54
-
55
- 1. 触发条件 ≤5 条,全部物理化为 lead/SKILL.md 段(≤30 行,同 H4 INV-H4-1)
56
- 2. 落地路径用现有"## 来自 crystal-learn 的门禁"段(不新建文件)
57
- 3. 受管资产 scope 严格列出(H0.1 施工隔离)
58
-
59
- ## §3 不变量(INV-H1)
60
-
61
- ### INV-H1-1 触发条件 ≤5 条
62
-
63
- > Why:防 ADR-041 v0.1→v0.3 膨胀剧本重演;H4 INV-H4-1 同结构(≤10 条 / H1 更紧因为是触发表非分类清单)。
64
- > 验证:`awk` 计触发条件计数 ≤5。
65
-
66
- ### INV-H1-2 落地路径必须落到现有接收段
67
-
68
- > Why:每新建文件 = 一个新真相源分裂点(INV-4),且违反 ADR-041 v1.0 "调字"原则。
69
- > 验证:`grep -n "## 来自 crystal-learn 的门禁" lead/SKILL.md` 命中 1 次;H1 注入段嵌入此段下方。
70
-
71
- ### INV-H1-3 不写 cron / hook / 任何运行时机制
72
-
73
- > Why:硬继承 H4 INV-H4-3 + ADR-041 v1.0 红线;任何 cron/hook 都是把"AI 自管理"机制化的失败模式(70% prompt baseline 已够用)。
74
- > 验证:`grep -iE "cron|hook|schedule|metrics|setInterval|crontab" lead/SKILL.md` 在本次新增段命中 0。
75
-
76
- ## §4 触发节奏(5 条物理化触发条件)
77
-
78
- 按消费侧(AI 自识 → 主动调用 crystal-learn skill):
79
-
80
- | # | 触发条件 | 触发动作 | Why |
81
- |---|----------|---------|-----|
82
- | 1 | 主仓发现新型 symptom(与 self-symptoms.md 既有 §4.x 不同根) | 立即调用 crystal-learn,输入 = 新 symptom + 历史相关 symptom | 新 symptom 是结晶学习的天然原料;不及时消化会累积变成 §4.7/§4.8 同根复发 |
83
- | 2 | 跨 PLAN 出现同类违规 ≥3 次(grep self-symptoms.md 同根模式数) | 调用 crystal-learn,输入 = 全部同根案例 | crystal-learn 升级规则要求 ≥2 案例;3 次触发"已是结构性偏差" |
84
- | 3 | reviewer 给出 P0/P1 notes 涉及"教训未学" | 调用 crystal-learn 消化,输入 = reviewer notes + 关联 ADR/PLAN | 防 H4 §过度 review 第 3 条(PASS_WITH_NOTES 含 P0 仍 BLOCK)变成"修个表面 commit 完事",不真升级 invariant |
85
- | 4 | Gate 8 闭环前若 self-symptoms.md 自上次 crystal-learn 后新增 ≥3 条 | 调用 crystal-learn,输入 = 新增的 ≥3 条 | Gate 8 是天然消化 checkpoint;不能 PASS 一个 H 子计划但 symptoms 越积越多 |
86
- | 5 | 任何 ADR-H0 修订建议累积 ≥3 条未消化 | 调用 crystal-learn,输入 = 未消化建议清单 | 修订建议是 invariant 候选;累积不消化 = 4 周停摆症状复发 |
87
-
88
- **消费侧而非生产侧**:触发条件检查时机由"AI 自识"承担(lead/SKILL.md prompt-level 指令),不接受"等 Nature 提醒"。
89
-
90
- ## §5 落地路径模板
91
-
92
- crystal-learn 输出 → 注入接收侧 SKILL.md:
93
-
94
- ```
95
- crystal-learn output:
96
- invariant_delta:
97
- - confirmed: INV-X 描述(≥2 案例 + 跨场景)
98
- - candidate: INV-Y 描述(仅 1 案例 + 系统性形状)
99
- - new_instance: 已确认 INV 的新案例
100
- target_injection_map:
101
- - target: <skill 路径>
102
- - directive: <≤3-5 行行动指令>
103
- - rationale: <为什么放这里>
104
-
105
- 注入动作:
106
- 1. 已确认 invariant → 加到对应 SKILL.md "## 来自 crystal-learn 的门禁" 段
107
- 2. 候选 invariant → 暂存 ADR-H0 修订建议表(待 ≥2 案例升级)
108
- 3. 新案例 → reference/invariant-instances.md(不动 active SKILL.md)
109
- 4. 注入后 target SKILL.md frontmatter `last_audited` 必须刷新
110
- ```
111
-
112
- **模板硬规则**(写进 lead/SKILL.md 注入段):
113
- - 不新建独立 ADR/PLAN 文件来"装" invariant(INV-4 真相源分裂红线)
114
- - 不在 active 执行层 SKILL.md 写完整理论(仅 ≤5 行行动指令)
115
- - 完整理论留 reference 文档(INV-2 格式断崖反例)
116
-
117
- ## §6 受管资产 scope(H0.1 施工隔离)
118
-
119
- | # | 路径 | 改动类型 | 行数预算 |
120
- |---|------|---------|---------|
121
- | 1 | `.boll/skills/lead/SKILL.md` | 在 line 142 "## 来自 crystal-learn 的门禁" 段下方追加 "## 触发节奏(H1)" 子段 | ≤30 行 |
122
- | 2 | `docs/decisions/ADR-H1-crystal-learn-revival.md` | 新建本 ADR | ≤300 行 |
123
- | 3 | `docs/decisions/PLAN-H1-crystal-learn-revival.md` | 新建 PLAN | ≤500 行 |
124
- | 4 | `docs/decisions/tasks/PLAN-H1/WP-04/dogfood-output-20260428-{ts}.md` | dogfood 一次产出(§4.9 输入 → INV delta + injection map) | ≤80 行 |
125
- | 5 | `docs/decisions/tasks/PLAN-H1/WP-05/reviewer-verdict-20260428-{ts}.md` | reviewer 报告 | ≤200 行 |
126
- | 6 | `.boll/log/harness-self-symptoms.md` | append 新 §4.x 若 H1 实施期触发自指 | append-only |
127
-
128
- **scope 外严格不动**:crystal-learn skill 文件本身(89 行成熟契约)、其它 SKILL.md(dev/eng/eng-test/bridge/ops/task-arch/plan-lock 接收段)。任何这些资产的修订必须先经 crystal-learn 输出 → 进 ADR-H0 修订表 → 收尾整体 commit;H1 阶段不动。
129
-
130
- ## §7 失败模式(FM)— 起草内防御
131
-
132
- ### FM1:触发条件 5 条膨胀到 N 条
133
-
134
- 复活成功后第一周容易膨胀("再加一条")。防御:INV-H1-1 硬数字 ≤5;超过必须先砍一条。
135
-
136
- ### FM2:lead/SKILL.md 200 行超 truncate
137
-
138
- H4 已用掉 ~22 行段(line 158-180);H1 再加 ≤30 行 → ~210 行风险。MEMORY.md scope policy(INV-H3-1)阈值 200。**预防措施**:H1 注入段写 ≤25 行(留 5 行 buffer);正文最长不超过 27 行;段内全部用单行短句不用表格。
139
-
140
- ### FM3:触发后未真做("prompt 70% adherence" 上限)
141
-
142
- 按 ADR-038 D11.2 schema-level vs prompt-level 数据,prompt 约束 ~70% adherence。意味着即使 lead/SKILL.md 写了触发条件,也有 30% 概率 AI 不调用 crystal-learn。**接受这个上限**(改 schema 化 = 写 hook = 违反 INV-H1-3)。**唯一升级条件**:连续 2 周观察期内有 ≥3 次触发条件命中但未调用记录在 self-symptoms.md → 升级讨论(不一定升级到 hook,可能调字辞)。
143
-
144
- ## §8 与 H4 关系(边界)
145
-
146
- | 维度 | H4(已 closed)| H1(本 ADR)|
147
- |------|---------------|-------------|
148
- | 治理对象 | 行为偏好(黑话/推卸/过度 review/其它) | 元学习触发节奏 |
149
- | 主要资产 | lead/SKILL.md "## 行为治理(H4 三类清单)" | lead/SKILL.md "## 触发节奏(H1)" 子段 |
150
- | 哲学 | 调字不加机制 | 调字不加机制(同 H4) |
151
- | INV 数 | ≥10 条三类清单 | ≤5 条触发条件 |
152
- | 长度预算 | ≤30 行 | ≤25 行(FM2 buffer) |
153
- | 调用 crystal-learn? | 否(H4 直接物理化静态规则) | 是(H1 是 crystal-learn 的"触发协议",本身不重写规则) |
154
-
155
- H4 是"把 6 条 memory feedback 物化",H1 是"把元学习何时跑物化"。H4 静态、H1 元层。两者正交,互不动对方文件。
156
-
157
- ## §9 不做什么
158
-
159
- - ❌ 不写 cron job 触发 crystal-learn(INV-H1-3 红线)
160
- - ❌ 不加 PostToolUse hook 检测"应触发"(INV-H1-3 红线)
161
- - ❌ 不建 dashboard 看 invariant 增长(同 ADR-041 反例 #3)
162
- - ❌ 不复活的"复活"是给 crystal-learn 加新功能;H1 只触发现有契约
163
- - ❌ 不在 crystal-learn skill 自己加治理段(学习层 ≠ 执行层;学习层只输出 invariant delta + injection map)
164
- - ❌ 不更新 crystal-learn target injection map 表(那是 crystal-learn 自己的工作产物,由 invariant 升级触发)
165
-
166
- ## §10 H0 元规约 6+1 自检
167
-
168
- - **H0.1 施工隔离**:本 ADR scope 严格在 §6 列表内;不动 crystal-learn skill / 其它 SKILL.md 接收段 / hook / cron / metrics
169
- - **H0.2 节流**:本 ADR ≤300 行(验证:本文件 `wc -l`);PLAN-H1 ≤500 行;H1 注入段 ≤25 行
170
- - **H0.3 执检分离**:起草人 ≠ reviewer;WP-05 spawn read-only subagent 收尾
171
- - **H0.4 自指禁止**:本 ADR 不写"待协调员决定 / TBD / 后续讨论"(H4 §推卸第 2 条);不写 hook / metrics(H4 §3.6 FM2 + 本 ADR INV-H1-3);起草前完整盘点(避 §4.7/§4.8 同根复发)
172
- - **H0.5 跨 H 协调**:见 PLAN-H1 §4 跨 H 登记表(H4 line 158-180 已用,H1 紧接其后;不重叠)
173
- - **H0.6 证据机械化**:所有 INV / DoD 给 grep / wc / awk 命令(PLAN-H1 §3 验证矩阵 + §7 verify bundle)
174
- - **H0.meta**:grep `\bH[2-8]\b` 仅协调登记表 + §8 H4 边界 + 自检命中(无前置依赖引用)
175
-
176
- ## §11 dogfood 规划
177
-
178
- WP-04 用 self-symptoms.md §4.9(cross-plan-class race,新型号)作为首次触发输入:
179
-
180
- - 触发条件命中 = §4 表第 1 条(主仓发现新型 symptom)
181
- - 输入:§4.9 完整描述 + 处置段(ADR-H0 修订建议第 10 条)
182
- - 期望输出:
183
- - `invariant_delta.candidate` = "跨 plan-class race"(仅 1 案例,候选不已确认)
184
- - `target_injection_map.target` = ADR-H0 修订建议表 + lead/SKILL.md "## 来自 crystal-learn 的门禁" 段
185
- - `target_injection_map.directive` = ≤5 行("施工前 git status 核 merge state;H0.5 协调表扩展为跨 plan-class")
186
- - `target_injection_map.rationale` = 防 §4.9 同模式跨业务 PLAN 复发
187
-
188
- DoD 落地物 = WP-04 输出文档(path 在 §6 #4),证明 crystal-learn 触发协议可消费。
@@ -1,183 +0,0 @@
1
- # ADR-H2: harness 身份物理隔离(资产 frontmatter owner 字段)
2
-
3
- **状态**: Proposed
4
- **日期**: 2026-04-28
5
- **起草者**: Nature(AI 助手协助)
6
- **前置**: ADR-H0 元规约 / ADR-042 §5 ownership.yaml schema / ADR-H9 邮箱(H 系列拓扑 D 上游)
7
- **编号说明**: 独立 H 编号(不占主仓 ADR-XXX),H 系列 plan §3.3 表 line "ADR-042 D9 补丁" 是字面歧义——ADR-042 D9 已被"AGENTS.md 渐进加载"占用;本 ADR 实际补的是**新增 D10**,plan 字面"D9 补丁"按本 ADR 校准为"D10 新增"
8
-
9
- ---
10
-
11
- ## 1. 决策本质
12
-
13
- **一句话**:资产侧 frontmatter `owner:` 字段是 schema-level 副真相源;与 ownership.yaml(D3 主真相源)互校,冲突时取最严;让"这个资产归谁"从资产文件本身可读,不再需要查 yaml 反推。
14
-
15
- **不变量 INV-H2-1**:任何被 multi-window 协作 owns 的资产文件(SKILL.md / agent.md / 关键 hook.ts)必须在 frontmatter 含 `window_owner: <window-id>` 字段;缺字段 = 视为 unowned shared(任何 window 不得写)。注:v1.1 修订前措辞为 `owner: <window-id>`,因与历史人名语义冲突改用 `window_owner`,详见 §3.1 修订记录。
16
-
17
- **不变量 INV-H2-2**:资产 frontmatter `window_owner` 与 ownership.yaml `windows[].owned_folders` 一致性由 lint 工具校验;不一致时取**最严**(以严限松:yaml 列了而 frontmatter 缺 → 加;frontmatter 标了而 yaml 没列 → yaml 补登记)。
18
-
19
- **不变量 INV-H2-3**:ownership.yaml 是**纯 schema 数据文件**,不混入协调员日志注释;日志走独立 append-only `docs/handoffs/ownership.changelog.md`,按 ISO8601 时间戳倒序追加。
20
-
21
- ---
22
-
23
- ## 2. 动机(为什么 D3 yaml 单点真相源不够)
24
-
25
- ### 2.1 D3 现状
26
- ADR-042 D3 建立"协调员唯一写入 ownership.yaml + AI 自识身份查 yaml"的模型。9 个月运行下来,三个症状反复出现(H 系列 plan §2.2 #8-10、#30-31):
27
-
28
- 1. **ownership.yaml 膨胀**:当前 979 行 = ~700 schema + ~130 协调员日志注释 + ~150 windows 实例。日志注释 prepend-style(最新在顶),导致 schema diff 噪声极大,git blame 失真。
29
-
30
- 2. **资产侧零标记**:SKILL.md / hook / agent.md 文件本身不知道"我归谁"。AI 编辑 `src/scripts/hooks/inbox-write-ledger.ts` 时,必须先 `grep` ownership.yaml 反查 owner——这是**间接寻址**,compact 后 AI 失忆时容易跳过查询直接编辑(schema-level 物理隔离失效)。
31
-
32
- 3. **跨 session add→commit race**:D2 commit 姿势标准化只到 commit 层,但 staged area 在 add 和 commit 之间会被并行 session reset/重 stage(feedback memory `parallel_session_git_race_post_commit_verify` 实证)。即便有 D3 yaml,资产侧无 owner 字段意味着 race 时无法在 add 时就拒绝(只能 commit 后审计 `git show --stat`)。
33
-
34
- ### 2.2 schema-level 物理隔离的论据
35
- ADR-038 D11 + OpenDev arXiv 2603.05344:
36
- - prompt 约束 ~70% 遵从率
37
- - schema 约束 100% 遵从率(物理无法绕过)
38
-
39
- D3 yaml 是**单点 schema**——AI 必须主动查询才生效,等同于 prompt-level 约束("你应该先查 yaml")。资产侧 frontmatter owner 字段是**资产内嵌 schema**——AI 打开文件就看到,等同 100% 遵从(CC 读文件 = 必读 frontmatter)。
40
-
41
- INV-H2-1 把 D3 单点真相源升级为"yaml 主 + 资产副"双真相源,schema 层叠加:要绕过 INV-H2-1 必须同时改两处,hint 比改一处明显得多。
42
-
43
- ---
44
-
45
- ## 3. 设计
46
-
47
- ### 3.1 frontmatter `window_owner` 字段 schema
48
-
49
- > **字段名修订记录(v1.1, 2026-04-28)**:原草稿用 `owner` 字段名;WP-03 落地时发现 9 个候选 SKILL.md 已存 `owner: nature` 字段(人名 product owner 语义),与本 ADR 期望的 window 归属语义直接冲突。修订为 `window_owner` 避开历史字段碰撞,同时保留现有 `owner: nature` 字段不动(语义解耦:`owner` = product owner 人名 / `window_owner` = window-id schema 归属)。symptoms §4.7 + ADR-H0 修订建议 #9 已登记此 spec gap。
50
-
51
- | 字段 | 类型 | 必填 | 说明 |
52
- |------|------|------|------|
53
- | `window_owner` | string \| `shared` \| `unowned` | 是(受管资产) | window-id(如 `window-0-coordinator`)/ `shared`(多 window 共写需协调员仲裁)/ `unowned`(任何 window 不得写) |
54
- | `window_owner_since` | ISO8601 | 否 | 首次写入时间;用于 changelog 反查 |
55
- | `window_owner_adr` | string | 否 | 关联 ADR 路径;如 owner 决策有专门 ADR |
56
-
57
- **字段位置**:所有受管资产(详见 §3.2)的 frontmatter 顶层;与现有 `name` / `description` / `tools` / `owner`(如有)等同级。
58
-
59
- **与现有 `owner: nature` 字段关系**:解耦共存。`owner` 沿用既有人名语义(指 Nature 是 product owner),不动;`window_owner` 是新增字段,专管 schema-level window 归属。lint 工具(H6)按 `window_owner` 校验,不读 `owner`。
60
-
61
- **示例**:
62
- ```yaml
63
- ---
64
- name: lead
65
- description: 流形开发流程统领
66
- owner: nature # 既有字段,product owner = 人名(不动)
67
- window_owner: shared # H2 新增,schema-level window 归属
68
- window_owner_since: 2026-04-28T17:00+08:00
69
- window_owner_adr: docs/decisions/ADR-H2-identity-isolation.md
70
- ---
71
- ```
72
-
73
- ### 3.2 受管资产清单(H2 落地范围)
74
-
75
- INV-H2-1 不要求**所有** SKILL.md / agent.md / hook.ts 都标 owner——只要求受 multi-window 协作影响的资产。MVP 范围:
76
-
77
- | 资产类 | 路径 pattern | 受管标准 | DoD 数量 |
78
- |--------|-------------|----------|----------|
79
- | skill | `.boll/skills/*/SKILL.md` | lead skill 加载 + 跨 window 共写 | ≥ 3 |
80
- | hook | `src/scripts/hooks/*.ts` + `.boll/plugins/*/hooks/*.ts` | settings.json 注册 + 跨 window 触发 | ≥ 3 |
81
- | agent | `.boll/agents/*.md` + `.boll/plugins/*/agents/*.md` | TeamCreate 用 + multi-window spawn | 按需(H2 不强制 3 个) |
82
-
83
- 后续 H 系列其他段(H4 prompt 治理、H6 状态健康度)需要时增量扩列。
84
-
85
- ### 3.3 ownership.yaml 日志剥离
86
-
87
- **现状**:1-136 行 + 散落的 `# 协调员日志` 注释(共 ~130 行)混在 yaml 里。
88
-
89
- **改造**:
90
- - 保留 yaml 顶部 `version` / `schema` / `last_updated` / `last_updated_by_session` 5 行 frontmatter
91
- - 删除所有 `# YYYY-MM-DDTHH:MM 协调员` 注释段(搬到 changelog)
92
- - 新建 `docs/handoffs/ownership.changelog.md`(append-only,最新在顶;与 yaml 同 commit 同步)
93
- - yaml 顶部加一行 pointer:`# 协调员动作历史见 docs/handoffs/ownership.changelog.md`
94
-
95
- **预期效果**:yaml 行数 979 → ≤ 800(剥日志后 schema 主体保持,但去掉日志后可读性飞升;后续 windows 增长仍受 D5 限)。
96
-
97
- ### 3.4 ADR-042 §3 新增 D10
98
-
99
- D10 文本(≤100 行 H0.2 budget)落 ADR-042 §3 末尾,不改 D1-D9 任一字。D10 内容:
100
- - 引用 INV-H2-1 / INV-H2-2 / INV-H2-3
101
- - 与 D3 关系(主副真相源 + 互校规则)
102
- - 与 D2 关系(commit 姿势 + frontmatter owner 双闸)
103
- - 与 D5 planning-time 隔离关系(planned_windows 也按受管资产标 owner)
104
- - 例外申请条款(参考 review-agent-isolation.md §"例外申请"格式)
105
-
106
- ### 3.5 lint 工具(不在本 H 落地,登记 followup)
107
-
108
- INV-H2-2 一致性校验需 lint 工具(扫描资产 frontmatter `window_owner` ↔ ownership.yaml `owned_folders`)。本 H2 范围不交付 lint,登记 followup `guard-h2-lint-tooling`,由 H6(状态健康度)段处置。当前阶段一致性靠协调员手工核对 + reviewer Gate 抽样。
109
-
110
- ---
111
-
112
- ## 4. 反对意见与取舍
113
-
114
- **反对 1**:frontmatter owner 字段会污染资产文件,影响 lead skill 加载。
115
-
116
- 答:现有 SKILL.md frontmatter 已有 `name` / `description` / `tools` 等 5+ 字段,加 1 个 `owner` 字段不影响 CC 解析(CC 只识别已知字段,未知字段忽略)。lead skill 也只读 `name` / `description`,不会因 owner 字段而失效。
117
-
118
- **反对 2**:双真相源会发生 drift,单点 yaml 反而干净。
119
-
120
- 答:drift 风险确实存在(INV-H2-2 互校规则就是为解决它),但单点 yaml 的"间接寻址"症状已造成实际 race(feedback memory 反复升级三次)。双真相源 + lint 是工程上权衡 drift 风险换取 schema-level 物理隔离的标准做法(参考 K8s 的 etcd ↔ object metadata 双真相源)。
121
-
122
- **反对 3**:`owner: shared` 字段语义模糊,谁仲裁?
123
-
124
- 答:shared = 任何 window 写入前必须经协调员 ping 仲裁,仲裁结果落 changelog;不是"任何人随便写"。语义和 ADR-042 D8 交付形态分层一致。
125
-
126
- **反对 4**:H2 是不是又一个机制堆叠?ADR-041 v1.0 警告过。
127
-
128
- 答:H2 不是行为偏好治理(那是 H4 prompt 范围);H2 是物理隔离 schema 落地——schema-level 100% 遵从是 ADR-038 D11 已论证的硬门槛,不在 ADR-041 v1.0 警告的"机制堆叠"范畴。H 系列 plan §3.3.1 边界判定表已显式区分。
129
-
130
- ---
131
-
132
- ## 5. 与其他 ADR / H 段的关系
133
-
134
- | 关系方 | 关系类型 | 说明 |
135
- |--------|----------|------|
136
- | ADR-042 §3 D1-D9 | 不冲突,新增 D10 | INV-H2-1/2/3 嵌入 D10;D1-D9 一字不改 |
137
- | ADR-042 §5 schema | 互校副真相源 | yaml `owned_folders` ↔ 资产 `window_owner` 双向校验 |
138
- | ADR-038 D11 | 同源精神 | schema-level >> prompt-level,H2 是 D11 在 ownership 域的具体应用 |
139
- | ADR-H0 元规约 | 自检 | H2 起草需走 H0.4 自指禁止 grep(已通过:本文件 grep "TBD\|后续讨论\|待协调员决定" 仅命中元层定义)+ H0.2 ≤300 行(本 ADR 目标行数)+ H0.5 跨 H 协调(已 grep gate 0 撞车) |
140
- | ADR-H9 inbox | 渠道复用 | H2 reviewer Gate 走 inbox 通信不靠人手 ping(H 系列 plan §3.5 总体执行守则) |
141
- | H4 prompt 治理 | 不重叠 | H4 治"语气/推卸"等 prompt-level 偏好;H2 治"资产归属"schema-level 物理 |
142
- | H6 状态健康度 | 后置依赖 | H2 落地后 H6 再做 lint 工具 + 状态文件清单(避免 lint 早出但资产无 owner 字段可校) |
143
-
144
- ---
145
-
146
- ## 6. 实施清单(PLAN-H2 落地)
147
-
148
- 详见 PLAN-H2-identity-isolation.md。骨架:
149
- - WP-01: owner frontmatter schema 文档定义(本 ADR §3.1 已含,PLAN 补 lint TODO)
150
- - WP-02: ownership.yaml 日志剥离 → ownership.changelog.md
151
- - WP-03: ≥3 skill + ≥3 hook 标 owner(最小集挑选标准 + 实施)
152
- - WP-04: ADR-042 §3 D10 补丁 ≤100 行
153
- - WP-05: 非起草 reviewer 复核(H0.3 执检分离)
154
-
155
- ---
156
-
157
- ## 7. 验收(DoD)
158
-
159
- - [ ] 至少 3 个 skill frontmatter 含 `owner` 字段(H 系列 plan §3.3 H2 行硬规)
160
- - [ ] 至少 3 个 hook frontmatter 含 `owner` 字段(H 系列 plan §3.3 H2 行硬规)
161
- - [ ] ADR-042 §3 D10 补丁 ≤ 100 行(H 系列 plan §3.3 H2 行硬规)
162
- - [ ] ownership.yaml 主体行数比 H2 前减少(剥日志后 ≤ 800 行;当前 979)
163
- - [ ] ownership.changelog.md 创建并迁入历史日志(按时间戳倒序)
164
- - [ ] 本 ADR ≤ 300 行(H0.2 budget)
165
- - [ ] H0.4 自指禁止 grep:`grep -nE '(TBD|后续讨论|待协调员决定)' docs/decisions/ADR-H2-identity-isolation.md docs/decisions/PLAN-H2-identity-isolation.md` 仅元层定义命中(参 ADR-H0 §6 例 4)
166
- - [ ] 非起草 reviewer Gate 复核 PASS(H0.3 执检分离)
167
-
168
- ---
169
-
170
- ## 8. 不做什么(吸收 ADR-041 v0.1→v0.3 教训 + ADR-H9 边界教训)
171
-
172
- - ❌ 不做 lint 自动校验工具(登记 followup `guard-h2-lint-tooling` → H6 段处置)
173
- - ❌ 不做 PreToolUse hook 拦截"无 owner frontmatter 资产被写"(hook IO 已在 H 系列 plan §3.1 H7 撤销后无新 hook 框架;强制拦截留待 H6 状态文件健康度)
174
- - ❌ 不做 owner 字段历史回溯(`git log --diff-filter` 重写 owner_since 不写,只对 H2 之后新加字段写 owner_since)
175
- - ❌ 不做"全部" SKILL.md / hook.ts 标 owner(MVP 只覆盖受 multi-window 协作影响的资产;§3.2 范围)
176
- - ❌ 不做 owner 字段值的 enum 约束(free-form string;INV-H2-2 互校时按 ownership.yaml 已知 window_id 反查;非已知值 reviewer Gate 时手工抓)
177
-
178
- ---
179
-
180
- ## 9. 变更记录
181
-
182
- - 2026-04-28 初稿(Proposed)
183
- - 后续:实施完成后翻 Accepted(参 ADR-H9 模式:附录 A 验收记录 + 状态翻 Accepted 同 commit)
@@ -1,133 +0,0 @@
1
- # ADR-H3: Memory Scope 分段 + 三态边界(memory / inbox / proposals)
2
-
3
- **状态**:Accepted(v1.1,reviewer PASS-WITH-NOTES 后随 v1.1 patch 转 Accepted;H 系列拓扑 D 第 4 个 ADR)
4
- **日期**:2026-04-28(v1.0 起草)/ 2026-04-28(v1.1 reviewer P1-1 + P2-2 修订)
5
- **关联**:ADR-H0 元规约 / ADR-H2 身份隔离 / ADR-H9 inbox 邮箱 / ADR-042 §3 D3/D6/D10 / ~/.boll/projects/-Users-nature------boll/memory/MEMORY.md
6
- **修订记录**:v1.1 把 INV-H3-2 文本由"单个 `## ` 段 ≤50 行"修订为双层限速"## 父段 ≤80 行 / ### 子段 ≤50 行",原因见 §4 反对 4(reviewer-verdict-20260428-1741.md P1-1 / P2-2)。
7
-
8
- ## 1. 决策本质
9
-
10
- 把跨 session 的"信息持久化"分成 **三个明确状态**,把 MEMORY.md 主索引从"30+ 主题混编、276 行(已超 200 truncate)"重组为"按 scope 分段、≤200 行硬规、单段 ≤50 行"。
11
-
12
- > **memory** = user-level 长期 recall index(项目状态快照 + 硬性要求清单)
13
- > **inbox** = cross-session 短期消息(WP 完工 ping / block 升级,已由 H9 落地)
14
- > **proposals** = single-session self-trace(每 session 自留足迹,已存在)
15
-
16
- 三者**生命周期递减**(memory > proposals > inbox)+ **信息凝固度递减**(memory > proposals > inbox)+ **协作半径递减**(memory cross-window > inbox peer-window > proposals self-window)。
17
-
18
- ## 2. 不变量(INV-H3)
19
-
20
- - **INV-H3-1(主索引硬规)**:`MEMORY.md` 主索引文件总行数 **≤ 200**(CC 用户级 memory 加载的 truncate 阈值;line 200+ 物理上不被加载到 prompt context)
21
- - **INV-H3-2(单段双层限速,v1.1)**:`MEMORY.md` 内 **`## ` 父段总行数 ≤ 80**(含所有 `### ` 子段累计)+ **单个 `### ` 子段 ≤ 50 行**(含 metadata 与子项)。两层独立约束(父段 ≤80 与子段 ≤50 必须同时满足;不取最严,也不二选一)。超 80 父段 = 必须把整段下沉到 topic-specific .md,主索引仅留 1 行 pointer;超 50 子段 = 必须把该子段拆出去,父段保留其余子段。**v1.0 旧文本"`## ` 段 ≤50 行"是单层限速,v1.1 修订原因**:父段含多个 `### ` 子段时,单层口径会因为"按 ## 切" vs "按 ### 切"产生度量分歧(reviewer-verdict-20260428-1741.md P1-1);现状"关键索引"段 73 行属指针索引大目录形态,硬拆反碎片化(§4 反对 4)。
22
- - **INV-H3-3(三态边界)**:跨 session 短期通信 **走 inbox 不走 memory**;single-session 自我足迹 **走 proposals 不走 memory**;MEMORY.md **不得新增**"待办 / ping / 进行中 WP" 语义条目(这些是 inbox/proposals 的语义)
23
-
24
- ## 3. 设计
25
-
26
- ### 3.1 三态边界判定表
27
-
28
- | 内容形态 | 走哪 | 生命周期 | 协作半径 |
29
- |---------|------|---------|---------|
30
- | 项目状态快照("K3 已上线 / 计费已闭环") | memory | 跨 session 长期,保留至项目终止/重大变更 | cross-window 共读 |
31
- | 硬性要求 / 教训沉淀("不要反复确认") | memory | 跨 session 长期,保留至 Nature 显式撤销 | cross-window 共读 |
32
- | 真相源 pointer("K-Series Roadmap 在 docs/roadmaps/...") | memory | 跨 session 长期,保留至该真相源失效 | cross-window 共读 |
33
- | WP-N 完工 ping / block 升级 | **inbox**(走 H9) | 短期,主窗口 ack 后归档 | peer-window 单次定向 |
34
- | Single-session 决策足迹("我决定用 X 方案") | **proposals** | session 内 + 收敛期归档 | self-window 自留 |
35
- | "待协调员决定" / "TBD" / "下次再说" | **❌ 哪都不走** | H0.4 自指禁止 | 推卸语义直接禁 |
36
-
37
- **判定流程**:写新内容前先问"这是项目终止前都该被任何 session recall 的吗?" → Y = memory;"这是要 ping 主窗口/某个 peer 窗口的吗?" → Y = inbox;"这是我这个 session 的自我足迹吗?" → Y = proposals。
38
-
39
- ### 3.2 MEMORY.md 主索引重组(≤200 行 / 单段 ≤50 行)
40
-
41
- **当前问题**:276 行(line 200+ truncate)+ "硬性要求"段 ~60 项混编 + 项目状态段长短不一。
42
-
43
- **重组规则**:
44
- 1. **顶部固定**(≤30 行):身份说明 + 近期重要真相源 pointer(最多 8 条,每条 1-2 行)
45
- 2. **硬性要求**:拆分为 topic-specific .md(按主题),主索引段仅留 ≤30 行高频 highlights + 指针到完整清单 `feedback_index.md`(新增)
46
- 3. **项目状态段**:每段 ≤30 行;超 30 行下沉到 `project_<name>_state.md`,主索引仅留 1 行 pointer + 1 行最新状态
47
- 4. **生产环境 / Discovery / Crystallization** 等技术清单段:每段 ≤30 行,详细数据下沉
48
- 5. **Pending Reminder**:禁止累积;每条触发条件满足后立即删除(不留尾巴)
49
-
50
- ### 3.3 5 条旧 memory 迁移(最低 DoD)
51
-
52
- 至少迁移 5 条:把 MEMORY.md 现有"硬性要求"段(~60 项)中最高频引用的 5 条 highlights 留主索引,其余下沉为 `feedback_index.md` 单文件目录索引(每条 1 行 pointer)。具体哪 5 条 highlight 由 PLAN-H3 §2 WP-03 起草时按"近 30 天 grep 频次"挑。
53
-
54
- ### 3.4 与 ADR-H9 §6.5 的关系
55
-
56
- ADR-H9 §6.5 已签 **inbox vs proposals** 边界(peer-message vs self-trace)。本 ADR 补全 **memory vs inbox vs proposals** 三态完整图。三 ADR 关系:
57
-
58
- ```
59
- 长期 ─────────── 短期
60
- memory > proposals > inbox
61
- cross self-session peer-window
62
- window trace message
63
- recall ← H3 INV-H3-3 → ← ADR-H9 §6.5 →
64
- ```
65
-
66
- ### 3.5 与 ADR-042 D3/D6/D10 关系
67
-
68
- - **D3 session-owner 真相源**:本 ADR 是 D3 在 user-level memory 文件层的子约束(MEMORY.md 是 user-level;不入 ownership.yaml;本 ADR 决定其 scope 分段策略)
69
- - **D6 心跳契约**:H9 inbox 已物理化"心跳"(peer-window 显式消息);本 ADR 进一步拒绝把 memory 当心跳通道用(INV-H3-3)
70
- - **D10 资产副真相源**:本 ADR **不**给 MEMORY.md 加 `window_owner` frontmatter——MEMORY.md 是 user-level shared resource,scope 分段在文件**内部**(按 `## ` 段),不在 frontmatter
71
-
72
- ### 3.6 受管资产 scope(H0.1 施工隔离)
73
-
74
- 本 ADR 施工范围严格限于:
75
-
76
- | 路径 | 动作 |
77
- |------|------|
78
- | `docs/decisions/ADR-H3-memory-scope.md` | 新增(本文件) |
79
- | `docs/decisions/PLAN-H3-memory-scope.md` | 新增(PLAN 起草) |
80
- | `~/.boll/projects/-Users-nature------boll/memory/MEMORY.md` | 重组(user-level,**不进主仓 commit**) |
81
- | `~/.boll/projects/-Users-nature------boll/memory/_backup/MEMORY-pre-H3-{ts}.md` | 备份(H 系列灰度 §3.3.3) |
82
- | `~/.boll/projects/-Users-nature------boll/memory/feedback_index.md` | 新增索引文件(user-level) |
83
- | `.boll/log/harness-self-symptoms.md` | append §4.x(如有) |
84
- | `docs/decisions/tasks/PLAN-H3/reviewer-verdict-*.md` | reviewer 落点 |
85
-
86
- **不动**:ownership.yaml / SKILL.md / hook / inbox/proposals/state schema / 任何业务代码。
87
-
88
- ### 3.7 backup 与回滚
89
-
90
- 按 H 系列灰度策略 §3.3.3:MEMORY.md 重组前先 `cp` 到 `_backup/MEMORY-pre-H3-{ts}.md`;7 天观察期内任何 vNext 报警可一键 `cp` 回滚。重组期间不删任何 topic-specific .md 文件(225 个 memory 文件保留),仅改 MEMORY.md 主索引指向。
91
-
92
- ## 4. 反对意见与取舍
93
-
94
- **反对 1**:把"硬性要求"拆到 `feedback_index.md` = 多一跳读取;session 启动时 lazy-load 不上 = AI 漏教训。
95
-
96
- **取舍**:CC 已经物理 truncate 了 line 200+,"漏读"早已发生(仅是隐藏的)。重组后主索引留 5 条 highlights 是经验上"高频引用 = 高 ROI";其余教训 grep 即可触发,不影响。如未来发现某条新增 highlight 必要,按 INV-H3-2 限速调换(不增长)。
97
-
98
- **反对 2**:单段 ≤50 行硬规会导致项目状态段反复挪到 .md 文件,徒增碎片。
99
-
100
- **取舍**:碎片本就是分布式信息组织的代价。MEMORY.md 是**索引**不是**正文**——索引只该列指针。当前"项目状态段"长是历史包袱,不是该有的形态。
101
-
102
- **反对 3**:H3 不给 MEMORY.md 加 `window_owner` 与 ADR-H2 D10 形成不一致。
103
-
104
- **取舍**:MEMORY.md 是 user-level shared resource,没有"哪个 window 拥有"语义;它是**所有 window 共读 + 所有 window 经协调员仲裁后写**——更接近 ADR-H2 §3.1 中 `window_owner: shared` 的语义,但因为它在 `~/.boll/projects/` 下、不在主仓,frontmatter 字段没意义(lint 工具够不到)。本 ADR 用文件**内**分段替代 frontmatter,是同一精神在不同物理介质上的投影。
105
-
106
- **反对 4(v1.1 新增)**:把 INV-H3-2 改成"## ≤80 / ### ≤50"双层限速 = 给"超长指针索引段"开后门,违背 v1.0 严格"≤50"初衷。
107
-
108
- **取舍**:v1.0 单层限速文本对"父段含多个 ### 子段"形态有度量分歧(按 ## 切 73 行违例 vs 按 ### 切 14 行合规);reviewer-verdict-20260428-1741.md P1-1 明确指认。"关键索引"段当前 73 行是**指针索引大目录**形态(每行单 hook + topic-file 链接,无信息冗余),硬拆为 `topics_index.md` 反让用户多走一跳——违 INV-H3-1 初衷(主索引高密度 recall)。双层 ## ≤80 限速仍守住"父段不会无限膨胀"硬底(4 个 80 行段已 320 行 ≫ 200,CC truncate 自然兜底),且让"父段是指针 / 子段是教训"的现状形态合规。INV-H3-1(≤200 总行)+ INV-H3-3(三态边界)这两条**核心承诺不变**;v1.1 仅在 INV-H3-2 这一条度量口径上澄清。
109
-
110
- ## 5. ADR-H0 元规约自检
111
-
112
- - **H0.1 施工隔离**:scope 列表见 §3.6(7 类路径,全在主仓内 `docs/decisions/`、`docs/decisions/tasks/`、`.boll/log/`,加上 user-level memory 重组路径)
113
- - **H0.2 节流限速**:本 ADR 目标 ≤ 300 行(截至本行约 ~150 行;实际终稿见末尾 wc -l);PLAN-H3 ≤ 500 行
114
- - **H0.3 执检分离**:起草 = 本 session;reviewer 必为非起草 read-only subagent(PLAN-H3 WP 末位安排)
115
- - **H0.4 自指禁止**:H3 修"memory 噪声 / 跨 session 信息漂移",本 ADR grep `TBD|后续讨论|待协调员决定` 仅元层定义命中(参 ADR-H0 §6 例 4)
116
- - **H0.5 跨子计划协调**:MEMORY.md 共改冲突已记入 H 系列 plan §3.4 冲突表;本 ADR 重组的是主索引**结构**(分段规则 + 单段限速 + 主索引 ≤200 行硬规),后续任何子计划在 H3 收口前不得对 MEMORY.md schema 结构再动手;H3 收口后的 schema 是后续子计划的工作面前提
117
- - **H0.6 证据机械化**:所有 INV / DoD 都给出 grep / wc / test 命令(见 PLAN-H3 §2 verify 命令段)
118
- - **H0.meta**:本 ADR 自身不引用 H1/H4/H5/H6/H8 未来产物(grep `\bH[14-8]\b` 仅本检查行命中)
119
-
120
- ## 6. 关系
121
-
122
- - **ADR-H0 §3 元规约**:本 ADR 完全遵守 H0.1-H0.6 + H0.meta(自检见 §5)
123
- - **ADR-H2 §3.1 schema-level 隔离 + D10 资产副真相源**:H3 选择**不**走 frontmatter 路径,原因 §4 反对 3 已答辩
124
- - **ADR-H9 §6.5 inbox vs proposals 边界**:H3 §3.4 在此基础上扩展为三态完整图
125
- - **ADR-042 §3 D3/D6/D10**:H3 是 D3 + D6 在 user-level memory 介质上的具体化(§3.5)
126
- - **PLAN-H3-memory-scope.md**:本 ADR 工程实施真相源
127
- - **CC user-level memory 加载文档**:MEMORY.md 物理 200 行 truncate 行为(reference)
128
-
129
- ## 7. 落地范围 + DoD
130
-
131
- - 详细 WP 拆解 + DoD:见 PLAN-H3 §2
132
- - H 系列 plan §3.3 H3 行:3 天估时;DoD 关键 = 每段 ≤50 行 + 5 条旧 memory 迁移 + 0 个"待定"
133
- - 末位 reviewer 签字:H0.3 执检分离强制