@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.
- package/package.json +1 -1
- package/dist/constraint-runtime/tests/agent.test.js +0 -16
- package/dist/constraint-runtime/tests/constraint.test.js +0 -41
- package/dist/constraint-runtime/tests/skill.test.js +0 -19
- package/dist/constraint-runtime/tests/thinking.test.js +0 -22
- package/dist/electron-preload.js +0 -15
- package/dist/electron-preload.js.map +0 -1
- package/dist/electron.js +0 -206
- package/dist/electron.js.map +0 -1
- package/dist/test/constraint-layer.test.js +0 -164
- package/dist/test/global-shared-context.test.js +0 -315
- package/dist/test/pi-sdk.test.js +0 -47
- package/dist/test/set-persona.test.js +0 -38
- package/dist/test/subagent-manager.test.js +0 -276
- package/dist/test/workflow-engine.test.js +0 -87
- package/dist/workflows/collaboration.js +0 -374
- package/dist/workflows/index.js +0 -54
- package/docs/agent-communication.md +0 -333
- package/docs/plans/2026-05-15-document-agent-design.md +0 -479
- package/docs/plans/2026-05-15-document-agent-implementation-plan.md +0 -792
- package/docs/plans/2026-05-16-chat-ui-design.md +0 -86
- package/docs/plans/2026-05-16-constraint-runtime-design.md +0 -106
- package/docs/plans/2026-05-16-constraint-runtime-implementation.md +0 -441
- 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
- package/src/bollharness/.boll/CLAUDE.md.template +0 -34
- package/src/bollharness/.boll/MANIFEST.yaml +0 -213
- package/src/bollharness/.boll/active-review-agents/.gitkeep +0 -0
- package/src/bollharness/.boll/agents/review-base.yaml +0 -108
- package/src/bollharness/.boll/deploy-allowlist.yaml +0 -38
- package/src/bollharness/.boll/inbox/schema/message-v1.json +0 -99
- package/src/bollharness/.boll/install-staging/.gitkeep +0 -0
- package/src/bollharness/.boll/issue-adapter.yaml +0 -31
- package/src/bollharness/.boll/plugins/boll-mode-toolkit/contracts/mode-contract.md +0 -85
- package/src/bollharness/.boll/plugins/boll-review-toolkit/contracts/evidence-packet-schema.json +0 -102
- package/src/bollharness/.boll/plugins/boll-review-toolkit/contracts/review-contract.yaml +0 -247
- package/src/bollharness/.boll/rules/backend-routes.md +0 -31
- package/src/bollharness/.boll/rules/closure-semantics.md +0 -30
- package/src/bollharness/.boll/rules/env-vars.md +0 -32
- package/src/bollharness/.boll/rules/hanis-protocol.md +0 -145
- package/src/bollharness/.boll/rules/repo-structure.md +0 -42
- package/src/bollharness/.boll/rules/review-agent-isolation.md +0 -73
- package/src/bollharness/.boll/rules/source-of-truth.md +0 -33
- package/src/bollharness/.boll/settings.json +0 -180
- package/src/bollharness/.boll/settings.json.template +0 -31
- package/src/bollharness/.boll/skills/arch/SKILL.md +0 -372
- package/src/bollharness/.boll/skills/bug-pipeline/SKILL.md +0 -168
- package/src/bollharness/.boll/skills/bug-triage/SKILL.md +0 -161
- package/src/bollharness/.boll/skills/context-chains/SKILL.md +0 -250
- package/src/bollharness/.boll/skills/context-chains/context-chain-index.md +0 -48
- package/src/bollharness/.boll/skills/context-chains/work-type-extractors/code_change_extractor.ts +0 -142
- package/src/bollharness/.boll/skills/context-chains/work-type-extractors/debugging_extractor.ts +0 -126
- package/src/bollharness/.boll/skills/context-chains/work-type-extractors/design_extractor.ts +0 -148
- package/src/bollharness/.boll/skills/context-chains/work-type-extractors/planning_extractor.ts +0 -162
- package/src/bollharness/.boll/skills/context-chains/work-type-extractors/question_extractor.ts +0 -116
- package/src/bollharness/.boll/skills/context-chains/work-type-extractors/review_extractor.ts +0 -136
- package/src/bollharness/.boll/skills/crystal-learn/SKILL.md +0 -93
- package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-0.md +0 -34
- package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-1.md +0 -34
- package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-2.md +0 -35
- package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-3.md +0 -34
- package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-4.md +0 -43
- package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-5.md +0 -34
- package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-6.md +0 -37
- package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-7.md +0 -46
- package/src/bollharness/.boll/skills/guardian-fixer/PROMPT.md +0 -415
- package/src/bollharness/.boll/skills/guardian-fixer/SKILL.md +0 -320
- package/src/bollharness/.boll/skills/harness-dev/SKILL.md +0 -93
- package/src/bollharness/.boll/skills/harness-dev/examples/README.md +0 -227
- package/src/bollharness/.boll/skills/harness-dev-handoff/SKILL.md +0 -165
- package/src/bollharness/.boll/skills/harness-eng/SKILL.md +0 -110
- package/src/bollharness/.boll/skills/harness-eng-test/SKILL.md +0 -79
- package/src/bollharness/.boll/skills/harness-lab/SKILL.md +0 -170
- package/src/bollharness/.boll/skills/harness-ops/SKILL.md +0 -57
- package/src/bollharness/.boll/skills/harness-voice/SKILL.md +0 -183
- package/src/bollharness/.boll/skills/judgment/SKILL.md +0 -115
- package/src/bollharness/.boll/skills/lead/SKILL.md +0 -245
- package/src/bollharness/.boll/skills/lead/install-wow-harness.md +0 -77
- package/src/bollharness/.boll/skills/lead/ref-review-sop.md +0 -91
- package/src/bollharness/.boll/skills/lead/ref-stages.md +0 -129
- package/src/bollharness/.boll/skills/skill-discovery/SKILL.md +0 -169
- package/src/bollharness/.boll/skills/task-arch/SKILL.md +0 -106
- package/src/bollharness/.boll/skills/toolkit/SKILL.md +0 -57
- package/src/bollharness/.boll/tasks/.gitkeep +0 -0
- package/src/bollharness/.boll/toolkit-index.yaml +0 -112
- package/src/bollharness/.claude/agents/review-base.yaml +0 -108
- package/src/bollharness/.claude/plugins/boll-mode-toolkit/.claude-plugin/plugin.json +0 -44
- package/src/bollharness/.claude/plugins/boll-review-toolkit/.claude-plugin/plugin.json +0 -24
- package/src/bollharness/.claude/plugins/boll-review-toolkit/contracts/evidence-packet-schema.json +0 -102
- package/src/bollharness/.claude/plugins/boll-review-toolkit/contracts/review-contract.yaml +0 -247
- package/src/bollharness/.claude/settings.json +0 -157
- package/src/bollharness/.claude/skills/arch/SKILL.md +0 -64
- package/src/bollharness/.claude/skills/crystal-learn/SKILL.md +0 -93
- package/src/bollharness/.claude/skills/guardian-fixer/PROMPT.md +0 -44
- package/src/bollharness/.claude/skills/guardian-fixer/SKILL.md +0 -324
- package/src/bollharness/.claude/skills/harness-dev/SKILL.md +0 -93
- package/src/bollharness/.claude/skills/harness-dev/examples/README.md +0 -17
- package/src/bollharness/.claude/skills/harness-dev-handoff/SKILL.md +0 -165
- package/src/bollharness/.claude/skills/harness-eng/SKILL.md +0 -183
- package/src/bollharness/.claude/skills/harness-eng-test/SKILL.md +0 -57
- package/src/bollharness/.claude/skills/harness-ops/SKILL.md +0 -57
- package/src/bollharness/.claude/skills/harness-voice/SKILL.md +0 -84
- package/src/bollharness/.claude/skills/lead/INDEX.md +0 -28
- package/src/bollharness/.claude/skills/lead/SKILL.md +0 -24
- package/src/bollharness/.claude/skills/lead/install-wow-harness.md +0 -77
- package/src/bollharness/.claude/skills/lead/ref-review-sop.md +0 -48
- package/src/bollharness/.claude/skills/lead/ref-stages.md +0 -58
- package/src/bollharness/.claude/skills/plan-lock/SKILL.md +0 -74
- package/src/bollharness/.claude/skills/skill-discovery/SKILL.md +0 -120
- package/src/bollharness/.claude/skills/task-arch/SKILL.md +0 -106
- package/src/bollharness/.claude/skills/toolkit/SKILL.md +0 -57
- package/src/bollharness/.claude/skills/toolkit/list.sh +0 -92
- package/src/bollharness/.githooks/pre-commit +0 -21
- package/src/bollharness/.github/workflows/ci.yml +0 -88
- package/src/bollharness/CLAUDE.md +0 -73
- package/src/bollharness/README.md +0 -143
- package/src/bollharness/README.zh-CN.md +0 -131
- package/src/bollharness/docs/decisions/ADR-030-guard-signal-protocol-and-governance-reload.md +0 -1076
- package/src/bollharness/docs/decisions/ADR-038-harness-optimization-strategy.md +0 -2039
- package/src/bollharness/docs/decisions/ADR-041-codex-claude-code-division-of-labor.md +0 -128
- package/src/bollharness/docs/decisions/ADR-H1-crystal-learn-revival.md +0 -188
- package/src/bollharness/docs/decisions/ADR-H2-identity-isolation.md +0 -183
- package/src/bollharness/docs/decisions/ADR-H3-memory-scope.md +0 -133
- package/src/bollharness/docs/decisions/ADR-H4-prompt-governance.md +0 -146
- package/src/bollharness/docs/decisions/ADR-H5-gate-quantization.md +0 -212
- package/src/bollharness/docs/decisions/ADR-H6-state-file-health.md +0 -211
- package/src/bollharness/docs/decisions/ADR-H8-issue-and-doc-compliance.md +0 -202
- package/src/bollharness/docs/decisions/ADR-H9-mailbox.md +0 -231
- package/src/bollharness/docs/decisions/PLAN-H1-crystal-learn-revival.md +0 -270
- package/src/bollharness/docs/decisions/PLAN-H2-identity-isolation.md +0 -291
- package/src/bollharness/docs/decisions/PLAN-H3-memory-scope.md +0 -228
- package/src/bollharness/docs/decisions/PLAN-H4-prompt-governance.md +0 -227
- package/src/bollharness/docs/decisions/PLAN-H5-gate-quantization.md +0 -239
- package/src/bollharness/docs/decisions/PLAN-H6-state-file-health.md +0 -325
- package/src/bollharness/docs/decisions/PLAN-H8-issue-and-doc-compliance.md +0 -242
- package/src/bollharness/docs/decisions/PLAN-H9-mailbox.md +0 -378
- package/src/bollharness/docs/launch-article-en.md +0 -276
- package/src/bollharness/docs/launch-article-zh.md +0 -305
- package/src/bollharness/docs/practice.html +0 -356
- package/src/bollharness/docs/practice.md +0 -82
- package/src/bollharness/docs/research/round-1/README.md +0 -11
- package/src/bollharness/docs/research/round-2/README.md +0 -11
- package/src/bollharness/docs/research/round-3/README.md +0 -11
- package/src/bollharness/docs/research/round-4/README.md +0 -11
- package/src/bollharness/docs/research/round-5/README.md +0 -11
- package/src/bollharness/docs/research/round-6/README.md +0 -11
- package/src/bollharness/package-lock.json +0 -48
- package/src/bollharness/reference/boll-reference/.claude/rules/backend-routes.md +0 -268
- package/src/bollharness/reference/boll-reference/.claude/rules/bridge.md +0 -20
- package/src/bollharness/reference/boll-reference/.claude/rules/closure-semantics.md +0 -30
- package/src/bollharness/reference/boll-reference/.claude/rules/coaching.md +0 -13
- package/src/bollharness/reference/boll-reference/.claude/rules/env-vars.md +0 -50
- package/src/bollharness/reference/boll-reference/.claude/rules/hackathon.md +0 -12
- package/src/bollharness/reference/boll-reference/.claude/rules/repo-structure.md +0 -184
- package/src/bollharness/reference/boll-reference/.claude/rules/review-agent-isolation.md +0 -112
- package/src/bollharness/reference/boll-reference/.claude/rules/scenes.md +0 -12
- package/src/bollharness/reference/boll-reference/.claude/skills/arch/SKILL.md +0 -551
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-animation/SKILL.md +0 -26
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-bridge/SKILL.md +0 -227
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-bridge/agents/openai.yaml +0 -4
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-bridge/references/bridge-failure-taxonomy.md +0 -142
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-bridge/references/bridge-validation-ladder.md +0 -107
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-crystal/SKILL.md +0 -893
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-crystal-learn/SKILL.md +0 -89
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-dev/SKILL.md +0 -93
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-dev/examples/README.md +0 -209
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-dev-handoff/SKILL.md +0 -165
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng/SKILL.md +0 -110
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-frontend/SKILL.md +0 -203
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-hdc/SKILL.md +0 -27
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-orchestrator/SKILL.md +0 -28
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-prompt/SKILL.md +0 -27
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-test/SKILL.md +0 -79
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-lab/SKILL.md +0 -372
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-run/SKILL.md +0 -437
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-ux-appstore/SKILL.md +0 -27
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-voice/SKILL.md +0 -442
- package/src/bollharness/reference/boll-reference/.claude/skills/guardian-fixer/PROMPT.md +0 -421
- package/src/bollharness/reference/boll-reference/.claude/skills/guardian-fixer/SKILL.md +0 -326
- package/src/bollharness/reference/boll-reference/.claude/skills/lead/SKILL.md +0 -155
- package/src/bollharness/reference/boll-reference/.claude/skills/lead/ref-review-sop.md +0 -91
- package/src/bollharness/reference/boll-reference/.claude/skills/lead/ref-stages.md +0 -129
- package/src/bollharness/reference/boll-reference/.claude/skills/nature-designer/output/skill-map-preview.png +0 -0
- package/src/bollharness/reference/boll-reference/.claude/skills/nature-designer/output/skill-map-v2.png +0 -0
- package/src/bollharness/reference/boll-reference/.claude/skills/nature-designer/output/skill-map-v3.png +0 -0
- package/src/bollharness/reference/boll-reference/.claude/skills/nature-designer/output/skill-map-v4.png +0 -0
- package/src/bollharness/reference/boll-reference/.claude/skills/plan-lock/SKILL.md +0 -425
- package/src/bollharness/reference/boll-reference/.claude/skills/plan-lock/ref-three-checks.md +0 -62
- package/src/bollharness/reference/boll-reference/.claude/skills/plan-lock/ref-wp-templates.md +0 -78
- package/src/bollharness/reference/boll-reference/.claude/skills/task-arch/SKILL.md +0 -76
- package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-graph/SKILL.md +0 -57
- package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-graph/beads-graph.sh +0 -153
- package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-init/SKILL.md +0 -52
- package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-init/beads-auto-link.sh +0 -76
- package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-sync/SKILL.md +0 -50
- package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-sync/beads-sync-proj.sh +0 -108
- package/src/bollharness/reference/boll-reference/docs/architecture/AGENT-PROFILE.md +0 -151
- package/src/bollharness/reference/boll-reference/docs/architecture/COST-STRUCTURE.md +0 -56
- package/src/bollharness/reference/boll-reference/docs/architecture/INDEX.md +0 -76
- package/src/bollharness/reference/boll-reference/docs/architecture/MODULE1-INTENT-FIELD.md +0 -116
- package/src/bollharness/reference/boll-reference/docs/architecture/MODULE2-CRYSTALLIZATION.md +0 -200
- package/src/bollharness/reference/boll-reference/docs/architecture/PRINCIPLES.md +0 -84
- package/src/bollharness/reference/boll-reference/docs/architecture/PROTOCOL-CORE.md +0 -209
- package/src/bollharness/reference/boll-reference/docs/architecture/VISION.md +0 -181
- package/src/bollharness/reference/boll-reference/docs/architecture/discussions/D-01-MARKET-SCENE-PROTOCOL.md +0 -754
- package/src/bollharness/reference/boll-reference/scripts/hooks/stop-evaluator.md +0 -57
- package/src/bollharness/scripts/context-fragments/artifact-linkage.md +0 -14
- package/src/bollharness/scripts/context-fragments/auth-consumers.md +0 -17
- package/src/bollharness/scripts/context-fragments/bridge-constitution.md +0 -13
- package/src/bollharness/scripts/context-fragments/catalyst-distributed.md +0 -18
- package/src/bollharness/scripts/context-fragments/closure-checklist.md +0 -13
- package/src/bollharness/scripts/context-fragments/contract-consumers.md +0 -15
- package/src/bollharness/scripts/context-fragments/db-shared-structures.md +0 -15
- package/src/bollharness/scripts/context-fragments/fixed-three-layers.md +0 -19
- package/src/bollharness/scripts/context-fragments/general-dev-principles.md +0 -11
- package/src/bollharness/scripts/context-fragments/issue-first.md +0 -8
- package/src/bollharness/scripts/context-fragments/mcp-parity.md +0 -16
- package/src/bollharness/scripts/context-fragments/pi-agent-operations.md +0 -74
- package/src/bollharness/scripts/context-fragments/protocol-consumers.md +0 -15
- package/src/bollharness/scripts/context-fragments/run-events-consumers.md +0 -15
- package/src/bollharness/scripts/context-fragments/scene-fidelity.md +0 -13
- package/src/bollharness/scripts/context-fragments/truth-source-hierarchy.md +0 -15
- package/src/bollharness/scripts/context-fragments/two-language.md +0 -15
- package/src/bollharness/scripts/context-fragments/version-sources.md +0 -14
- package/src/bollharness/scripts/hooks/stop-evaluator.md +0 -83
- package/src/bollharness/templates/scaffold/.boll/guard/.gitkeep +0 -0
- package/src/bollharness/templates/scaffold/.boll/metrics/.gitkeep +0 -0
- package/src/bollharness/templates/scaffold/.boll/state/.gitkeep +0 -0
- package/src/bollharness/templates/scaffold/CLAUDE.md +0 -89
- package/src/bollharness/templates/scaffold/docs/INDEX.md +0 -3
- package/src/bollharness/templates/scaffold/docs/decisions/ADR_TEMPLATE.md +0 -38
- package/src/bollharness/templates/scaffold/docs/decisions/PLAN_TEMPLATE.md +0 -45
- package/src/bollharness/templates/scaffold/docs/decisions/tasks/.gitkeep +0 -2
- package/src/bollharness/templates/scaffold/docs/issues/.gitkeep +0 -0
- package/src/bollharness/templates/scaffold/docs/issues/GUARD_ISSUE_TEMPLATE.md +0 -35
- package/src/bollharness/templates/scaffold/docs/issues/ISSUE_TEMPLATE.md +0 -51
- package/src/bollharness/tsconfig.json +0 -26
- package/src/constraint-runtime/package-lock.json +0 -48
- package/src/constraint-runtime/package.json +0 -34
- package/src/constraint-runtime/src/_archive_helper.ts +0 -16
- package/src/constraint-runtime/src/agent/coordinator.ts +0 -71
- package/src/constraint-runtime/src/agent/index.ts +0 -1
- package/src/constraint-runtime/src/assistant/index.ts +0 -15
- package/src/constraint-runtime/src/bootstrap/index.ts +0 -15
- package/src/constraint-runtime/src/bootstrap_graph.ts +0 -17
- package/src/constraint-runtime/src/bridge/index.ts +0 -15
- package/src/constraint-runtime/src/buddy/index.ts +0 -15
- package/src/constraint-runtime/src/cli/index.ts +0 -15
- package/src/constraint-runtime/src/command_graph.ts +0 -20
- package/src/constraint-runtime/src/commands.ts +0 -83
- package/src/constraint-runtime/src/components/index.ts +0 -15
- package/src/constraint-runtime/src/constants/index.ts +0 -15
- package/src/constraint-runtime/src/constraint/budget.ts +0 -25
- package/src/constraint-runtime/src/constraint/index.ts +0 -3
- package/src/constraint-runtime/src/constraint/permission.ts +0 -28
- package/src/constraint-runtime/src/context.ts +0 -45
- package/src/constraint-runtime/src/coordinator/index.ts +0 -15
- package/src/constraint-runtime/src/cost_hook.ts +0 -6
- package/src/constraint-runtime/src/cost_tracker.ts +0 -9
- package/src/constraint-runtime/src/deferred_init.ts +0 -18
- package/src/constraint-runtime/src/direct_modes.ts +0 -13
- package/src/constraint-runtime/src/dynamic-tool-loader.ts +0 -115
- package/src/constraint-runtime/src/entrypoints/index.ts +0 -15
- package/src/constraint-runtime/src/execution_registry.ts +0 -41
- package/src/constraint-runtime/src/history.ts +0 -16
- package/src/constraint-runtime/src/hooks/index.ts +0 -15
- package/src/constraint-runtime/src/index.ts +0 -28
- package/src/constraint-runtime/src/ink.ts +0 -4
- package/src/constraint-runtime/src/keybindings/index.ts +0 -15
- package/src/constraint-runtime/src/memdir/index.ts +0 -15
- package/src/constraint-runtime/src/migrations/index.ts +0 -15
- package/src/constraint-runtime/src/models.ts +0 -49
- package/src/constraint-runtime/src/moreright/index.ts +0 -15
- package/src/constraint-runtime/src/native_ts/index.ts +0 -15
- package/src/constraint-runtime/src/output_styles/index.ts +0 -15
- package/src/constraint-runtime/src/parity_audit.ts +0 -23
- package/src/constraint-runtime/src/plugins/index.ts +0 -15
- package/src/constraint-runtime/src/port_manifest.ts +0 -20
- package/src/constraint-runtime/src/prefetch.ts +0 -17
- package/src/constraint-runtime/src/query.ts +0 -7
- package/src/constraint-runtime/src/reference_data/archive_surface_snapshot.json +0 -63
- package/src/constraint-runtime/src/reference_data/commands_snapshot.json +0 -1037
- package/src/constraint-runtime/src/reference_data/subsystems/OpenCLI.json +0 -10
- package/src/constraint-runtime/src/reference_data/subsystems/PolymarketSDK.json +0 -12
- package/src/constraint-runtime/src/reference_data/subsystems/SafeSDK.json +0 -14
- package/src/constraint-runtime/src/reference_data/subsystems/assistant.json +0 -8
- package/src/constraint-runtime/src/reference_data/subsystems/bootstrap.json +0 -8
- package/src/constraint-runtime/src/reference_data/subsystems/bridge.json +0 -32
- package/src/constraint-runtime/src/reference_data/subsystems/buddy.json +0 -13
- package/src/constraint-runtime/src/reference_data/subsystems/cli.json +0 -26
- package/src/constraint-runtime/src/reference_data/subsystems/components.json +0 -32
- package/src/constraint-runtime/src/reference_data/subsystems/constants.json +0 -28
- package/src/constraint-runtime/src/reference_data/subsystems/coordinator.json +0 -8
- package/src/constraint-runtime/src/reference_data/subsystems/entrypoints.json +0 -15
- package/src/constraint-runtime/src/reference_data/subsystems/hooks.json +0 -32
- package/src/constraint-runtime/src/reference_data/subsystems/keybindings.json +0 -21
- package/src/constraint-runtime/src/reference_data/subsystems/memdir.json +0 -15
- package/src/constraint-runtime/src/reference_data/subsystems/migrations.json +0 -18
- package/src/constraint-runtime/src/reference_data/subsystems/moreright.json +0 -8
- package/src/constraint-runtime/src/reference_data/subsystems/native_ts.json +0 -11
- package/src/constraint-runtime/src/reference_data/subsystems/outputStyles.json +0 -8
- package/src/constraint-runtime/src/reference_data/subsystems/plugins.json +0 -9
- package/src/constraint-runtime/src/reference_data/subsystems/remote.json +0 -11
- package/src/constraint-runtime/src/reference_data/subsystems/schemas.json +0 -8
- package/src/constraint-runtime/src/reference_data/subsystems/screens.json +0 -10
- package/src/constraint-runtime/src/reference_data/subsystems/server.json +0 -10
- package/src/constraint-runtime/src/reference_data/subsystems/services.json +0 -32
- package/src/constraint-runtime/src/reference_data/subsystems/skills.json +0 -27
- package/src/constraint-runtime/src/reference_data/subsystems/state.json +0 -13
- package/src/constraint-runtime/src/reference_data/subsystems/types.json +0 -18
- package/src/constraint-runtime/src/reference_data/subsystems/upstreamproxy.json +0 -9
- package/src/constraint-runtime/src/reference_data/subsystems/utils.json +0 -32
- package/src/constraint-runtime/src/reference_data/subsystems/vim.json +0 -12
- package/src/constraint-runtime/src/reference_data/subsystems/voice.json +0 -8
- package/src/constraint-runtime/src/reference_data/tools_snapshot.json +0 -1042
- package/src/constraint-runtime/src/remote/index.ts +0 -15
- package/src/constraint-runtime/src/remote_runtime.ts +0 -17
- package/src/constraint-runtime/src/runtime/index.ts +0 -1
- package/src/constraint-runtime/src/runtime/session.ts +0 -42
- package/src/constraint-runtime/src/schemas/index.ts +0 -15
- package/src/constraint-runtime/src/screens/index.ts +0 -15
- package/src/constraint-runtime/src/server/index.ts +0 -15
- package/src/constraint-runtime/src/services/index.ts +0 -15
- package/src/constraint-runtime/src/session_store.ts +0 -32
- package/src/constraint-runtime/src/setup.ts +0 -50
- package/src/constraint-runtime/src/skills/index.ts +0 -1
- package/src/constraint-runtime/src/skills/skill-registry.ts +0 -40
- package/src/constraint-runtime/src/state/index.ts +0 -15
- package/src/constraint-runtime/src/system_init.ts +0 -21
- package/src/constraint-runtime/src/thinking/engine.ts +0 -61
- package/src/constraint-runtime/src/thinking/index.ts +0 -1
- package/src/constraint-runtime/src/tool_pool.ts +0 -20
- package/src/constraint-runtime/src/tools/OpenCLI/execAdapter.ts +0 -12
- package/src/constraint-runtime/src/tools/OpenCLI/listAdapters.ts +0 -12
- package/src/constraint-runtime/src/tools/OpenCLI/runCommand.ts +0 -13
- package/src/constraint-runtime/src/tools/PolymarketSDK/cancelOrder.ts +0 -10
- package/src/constraint-runtime/src/tools/PolymarketSDK/createOrder.ts +0 -13
- package/src/constraint-runtime/src/tools/PolymarketSDK/getMarket.ts +0 -14
- package/src/constraint-runtime/src/tools/PolymarketSDK/getOrders.ts +0 -10
- package/src/constraint-runtime/src/tools/PolymarketSDK/listMarkets.ts +0 -24
- package/src/constraint-runtime/src/tools/SafeSDK/confirmTransaction.ts +0 -13
- package/src/constraint-runtime/src/tools/SafeSDK/createTransaction.ts +0 -23
- package/src/constraint-runtime/src/tools/SafeSDK/deploySafe.ts +0 -12
- package/src/constraint-runtime/src/tools/SafeSDK/executeTransaction.ts +0 -12
- package/src/constraint-runtime/src/tools/SafeSDK/getBalance.ts +0 -10
- package/src/constraint-runtime/src/tools/SafeSDK/getPendingTransactions.ts +0 -10
- package/src/constraint-runtime/src/tools/SafeSDK/proposeTransaction.ts +0 -14
- package/src/constraint-runtime/src/tools/WalletTools/autoPay.ts +0 -58
- package/src/constraint-runtime/src/tools/WalletTools/createWallet.ts +0 -19
- package/src/constraint-runtime/src/tools/WalletTools/getBalance.ts +0 -28
- package/src/constraint-runtime/src/tools/WalletTools/importWallet.ts +0 -34
- package/src/constraint-runtime/src/tools/WalletTools/sendTransaction.ts +0 -50
- package/src/constraint-runtime/src/tools/WalletTools/signMessage.ts +0 -23
- package/src/constraint-runtime/src/tools/WalletTools/transferToken.ts +0 -49
- package/src/constraint-runtime/src/tools.ts +0 -100
- package/src/constraint-runtime/src/transcript.ts +0 -23
- package/src/constraint-runtime/src/types/index.ts +0 -15
- package/src/constraint-runtime/src/upstream_proxy/index.ts +0 -15
- package/src/constraint-runtime/src/utils/index.ts +0 -15
- package/src/constraint-runtime/src/vim/index.ts +0 -15
- package/src/constraint-runtime/src/voice/index.ts +0 -15
- package/src/constraint-runtime/tests/agent.test.ts +0 -20
- package/src/constraint-runtime/tests/constraint.test.ts +0 -47
- package/src/constraint-runtime/tests/skill.test.ts +0 -23
- package/src/constraint-runtime/tests/thinking.test.ts +0 -28
- package/src/constraint-runtime/tsconfig.json +0 -13
- package/src/pi-ecosystem/index.ts +0 -453
- package/src/pi-ecosystem-colony/index.ts +0 -482
- package/src/pi-ecosystem-goals/index.ts +0 -585
- package/src/pi-ecosystem-judgment/decision.ts +0 -431
- package/src/pi-ecosystem-judgment/distillation.ts +0 -398
- package/src/pi-ecosystem-judgment/human-value-store.ts +0 -580
- package/src/pi-ecosystem-judgment/index.ts +0 -678
- package/src/pi-ecosystem-judgment/value-injection.ts +0 -744
- package/src/pi-ecosystem-mcp/index.ts +0 -427
- package/src/pi-ecosystem-subagents/index.ts +0 -408
- package/src/test/ai-judgment-test.ts +0 -92
- package/src/test/bollharness-integration.test.ts +0 -398
- package/src/test/channel-agent-multi-dialogue.ts +0 -265
- package/src/test/channel-heartbeat-agent-test.ts +0 -244
- package/src/test/constraint-layer.test.ts +0 -191
- package/src/test/diap-identity-test.ts +0 -222
- package/src/test/diap-quick-test.ts +0 -73
- package/src/test/global-shared-context.test.ts +0 -393
- package/src/test/harness-judgment-injection.test.ts +0 -353
- package/src/test/harness-workflow-integrator-test.ts +0 -285
- package/src/test/human-value-store.test.ts +0 -316
- package/src/test/hybrid-integration-test.ts +0 -126
- package/src/test/hybrid-messenger-verify.ts +0 -68
- package/src/test/iroh-bistream-debug.ts +0 -50
- package/src/test/iroh-communication.test.ts +0 -81
- package/src/test/iroh-debug-test.ts +0 -69
- package/src/test/iroh-diap-test.ts +0 -90
- package/src/test/iroh-direct-connect.ts +0 -65
- package/src/test/iroh-e2e-fixed.ts +0 -106
- package/src/test/iroh-e2e-same-process.ts +0 -83
- package/src/test/iroh-e2e.ts +0 -83
- package/src/test/iroh-final-e2e.ts +0 -84
- package/src/test/iroh-relay-test.ts +0 -46
- package/src/test/iroh-simple-test.ts +0 -49
- package/src/test/iroh-transport-verify.ts +0 -60
- package/src/test/iroh-transport.test.ts +0 -47
- package/src/test/iroh-two-nodes.ts +0 -87
- package/src/test/iroh-verify.ts +0 -55
- package/src/test/judgment-decision.test.ts +0 -373
- package/src/test/llm-judgment-integration.test.ts +0 -257
- package/src/test/p2p-agent-complex-dialogue.ts +0 -490
- package/src/test/p2p-agent-dialogue.ts +0 -423
- package/src/test/p2p-agent-full-bidirectional.ts +0 -686
- package/src/test/p2p-agent-harness-flow.ts +0 -562
- package/src/test/p2p-agent-harness-single.ts +0 -175
- package/src/test/p2p-ai-dialogue-test.ts +0 -374
- package/src/test/p2p-cid-connect-test.ts +0 -245
- package/src/test/p2p-connect-receiver.ts +0 -85
- package/src/test/p2p-iroh-test.ts +0 -214
- package/src/test/p2p-minimal-test.ts +0 -264
- package/src/test/p2p-node-1.ts +0 -172
- package/src/test/p2p-node-2.ts +0 -172
- package/src/test/p2p-server.ts +0 -335
- package/src/test/p2p-two-nodes-test.ts +0 -542
- package/src/test/pi-sdk.test.ts +0 -47
- package/src/test/set-persona.ts +0 -56
- package/src/test/simple.test.ts +0 -11
- package/src/test/storage-integration.test.ts +0 -191
- package/src/test/subagent-manager.test.ts +0 -392
- package/src/test/test-gate-flow.test.ts +0 -92
- package/src/test/workflow-engine.test.ts +0 -101
- package/src/web/design.md +0 -99
- package/src/workflows/collaboration.ts +0 -455
- package/src/workflows/index.ts +0 -64
- package/vitest.config.ts +0 -12
- package//346/203/263/346/263/225.md +0 -79
|
@@ -1,421 +0,0 @@
|
|
|
1
|
-
# 守夜人执行者
|
|
2
|
-
|
|
3
|
-
## 你是谁
|
|
4
|
-
|
|
5
|
-
你是 boll 项目的守夜人执行者——一个把 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/个人项目/boll`
|
|
24
|
-
- **Git 远程**: `origin` → GitHub (`NatureBlueee/boll`)
|
|
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/boll-$ISSUE_SLUG -b codex/$ISSUE_SLUG main
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
worktree 创建后,**所有文件操作都在 worktree 目录内进行**。不要在主仓库目录里改任何东西。
|
|
37
|
-
|
|
38
|
-
### 测试
|
|
39
|
-
|
|
40
|
-
```bash
|
|
41
|
-
# 从 worktree 目录运行,使用主仓库的 venv
|
|
42
|
-
VENV=/Users/nature/个人项目/boll/backend/venv/bin/pytest
|
|
43
|
-
|
|
44
|
-
cd /tmp/boll-$ISSUE_SLUG
|
|
45
|
-
$VENV -q backend/tests/unit/ # 纯内存测试,无需 Docker
|
|
46
|
-
$VENV -q backend/tests/field/ # Field 单元测试,无需 Docker
|
|
47
|
-
$VENV -q backend/tests/test_phase0_surface.py # Phase-0 门禁,无需 Docker
|
|
48
|
-
$VENV -q backend/tests/product/ # Product 测试,需要 Docker
|
|
49
|
-
$VENV -q backend/tests/matching/ # Discovery 测试,无需 Docker
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
### 工具
|
|
53
|
-
|
|
54
|
-
- **Agent tool**: 你有 Agent tool,用它 spawn 独立审查者。审查者必须用 **opus** 模型。不降级 sonnet。
|
|
55
|
-
- **Bash**: 用于 git 操作、运行测试、文件操作。
|
|
56
|
-
- **Read/Edit/Write**: 用于读写文件。但注意——worktree 中的文件可能被 guard hook 阻塞(hook 检测到 pre-existing findings 会报错)。如果 Read/Edit 被阻塞,改用 Bash:
|
|
57
|
-
- 读文件:`cat` / `tail` / `head`
|
|
58
|
-
- 写文件:`cat > file << 'EOF' ... EOF`
|
|
59
|
-
- 小修改:`sed -i ''`
|
|
60
|
-
- **gh**: 用于创建 PR。
|
|
61
|
-
|
|
62
|
-
### Pre-commit hook
|
|
63
|
-
|
|
64
|
-
这个仓库有 pre-commit hook(`scripts/guard-feedback.py`)。它会检查:
|
|
65
|
-
- bugfix commit 是否有对应的 issue 文档变更
|
|
66
|
-
- closure 语义是否完整(status/prevention_status/mechanism_layer)
|
|
67
|
-
- 代码变更是否有相关上下文
|
|
68
|
-
|
|
69
|
-
如果 commit 被 hook 拒绝,**读懂错误信息**,修复问题后重新 commit。不要用 `--no-verify` 绕过。
|
|
70
|
-
|
|
71
|
-
---
|
|
72
|
-
|
|
73
|
-
## 完整执行序列
|
|
74
|
-
|
|
75
|
-
### 你的执行手册
|
|
76
|
-
|
|
77
|
-
**先读取 `.claude/skills/guardian-fixer/SKILL.md`**。那是你的完整操作手册,包含每个 Gate 的模板、审查 prompt、验收标准。以下是补充说明——关于**为什么**这么做,以及在模糊地带如何判断。
|
|
78
|
-
|
|
79
|
-
### Step 0: 选 issue
|
|
80
|
-
|
|
81
|
-
```bash
|
|
82
|
-
grep -rl 'status: open' docs/issues/guard-*.md | while read f; do
|
|
83
|
-
sev=$(grep '^severity:' "$f" | sed 's/severity: *//')
|
|
84
|
-
exec_st=$(grep '^execution_status:' "$f" | sed 's/execution_status: *//')
|
|
85
|
-
if [ -z "$exec_st" ] || [ "$exec_st" = "pending" ]; then
|
|
86
|
-
echo "$sev|$f"
|
|
87
|
-
fi
|
|
88
|
-
done | sort
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
选第一个(P0 > P1 > P2)。
|
|
92
|
-
|
|
93
|
-
**但不是机械地选第一个**。选之前检查:
|
|
94
|
-
1. 这个 issue 的 `component` 字段涉及的文件,有没有其他未合并的 guardian PR 正在改?(`gh pr list --state open` 检查)如果有,跳过这个 issue,选下一个。同一个文件区域不要两个修复并行。
|
|
95
|
-
2. 这个 issue 有没有 `blocked_by` 字段?如果有,检查被依赖的 issue 是否已 fixed。没 fixed 就跳过。
|
|
96
|
-
3. 快速读一下 issue 内容——如果涉及数据库 migration、API 契约变更、或超过 3 个代码文件,这不是你能自动修的。标 `execution_status: needs_plan`,选下一个。
|
|
97
|
-
|
|
98
|
-
### Step 1: 建 worktree
|
|
99
|
-
|
|
100
|
-
从 issue 文件名提取 slug。文件名格式是 `guard-YYYYMMDD-HHMM-description.md`。
|
|
101
|
-
|
|
102
|
-
```bash
|
|
103
|
-
ISSUE_SLUG="guard-20260324-0506-auth-method-ripple-decay" # 示例
|
|
104
|
-
git worktree add /tmp/boll-$ISSUE_SLUG -b codex/$ISSUE_SLUG main
|
|
105
|
-
mkdir -p /tmp/boll-$ISSUE_SLUG/docs/decisions/tasks/GUARD-${ISSUE_SLUG#guard-}
|
|
106
|
-
cd /tmp/boll-$ISSUE_SLUG
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
从此刻起,**你的工作目录是 worktree,不是主仓库**。
|
|
110
|
-
|
|
111
|
-
### Step 2: Gate 1 — 规划
|
|
112
|
-
|
|
113
|
-
读 issue 文档。读 issue 中提到的所有代码文件。不是扫一眼——**真正理解**代码在做什么、问题的根因是什么。
|
|
114
|
-
|
|
115
|
-
然后写 PLAN.md。PLAN 不是复述 issue——issue 描述症状,PLAN 分析根因并设计修复。
|
|
116
|
-
|
|
117
|
-
PLAN 必须回答的问题(详见 SKILL.md 模板):
|
|
118
|
-
- **根因是什么**(不是症状)
|
|
119
|
-
- **改哪些文件、怎么改**(变更清单)
|
|
120
|
-
- **这是契约变更还是实现变更?** 契约(API URL、schema、环境变量、事件格式)→ 列出所有消费方。实现 → 单边改动。
|
|
121
|
-
- **有没有其他地方有同样的问题?** 用 grep 验证。这一步不是可选的——guard-0506(auth_method 波纹衰减)就是"修了一个调用点,漏了其他 4 个"的经典案例。
|
|
122
|
-
- **怎么测试?** 修改前能验证问题存在、修改后能验证问题解决的方法。
|
|
123
|
-
|
|
124
|
-
**Scope 硬上限**——以下任何一条触发就标 `needs_plan` 并停止:
|
|
125
|
-
- 超过 3 个代码文件
|
|
126
|
-
- API/schema/event 契约变更
|
|
127
|
-
- 需要数据库 migration
|
|
128
|
-
- 涉及 `scripts/guard-feedback.py`、`scripts/context_router.py`、`.claude/skills/*/SKILL.md`、`CLAUDE.md` 行为指令部分
|
|
129
|
-
|
|
130
|
-
### Step 3: Gate 2 — 独立审查 PLAN
|
|
131
|
-
|
|
132
|
-
**这是整个流程中最关键的纪律约束:你不审自己的 PLAN。**
|
|
133
|
-
|
|
134
|
-
用 Agent tool spawn 一个独立审查者。这个审查者没有参与 PLAN 的编写,它从零开始读 PLAN、读 issue、读代码,然后判断。
|
|
135
|
-
|
|
136
|
-
```
|
|
137
|
-
Agent tool:
|
|
138
|
-
model: opus
|
|
139
|
-
prompt: |
|
|
140
|
-
你是独立代码审查者。你没有参与这段代码的编写,也没有参与 PLAN 的制定。
|
|
141
|
-
|
|
142
|
-
你的任务是审查一份修复计划,判断它是否完整、可执行、不会引入新问题。
|
|
143
|
-
|
|
144
|
-
审查输入:
|
|
145
|
-
- PLAN 文档:/tmp/boll-$ISSUE_SLUG/docs/decisions/tasks/GUARD-.../PLAN.md
|
|
146
|
-
- Issue 文档:/tmp/boll-$ISSUE_SLUG/docs/issues/guard-...-....md
|
|
147
|
-
- 相关代码文件:(PLAN 中列出的文件)
|
|
148
|
-
|
|
149
|
-
审查维度(全部 6 个维度必须逐一覆盖,不得跳过):
|
|
150
|
-
|
|
151
|
-
1. **覆盖性**:PLAN 的变更清单覆盖了 issue 描述的所有问题吗?有没有遗漏?
|
|
152
|
-
grep 验证:用 grep 搜索 issue 描述的模式,确认 PLAN 没有漏掉同类问题。
|
|
153
|
-
|
|
154
|
-
2. **独立性**:每个改动可以独立验证吗?有没有隐含的依赖关系 PLAN 没有声明?
|
|
155
|
-
|
|
156
|
-
3. **执行模拟**:假设你是一个开发者,只读 PLAN 不读 issue,你能不卡住地执行完所有修改吗?
|
|
157
|
-
逐步走:读 PLAN 的每一步,问"到这一步我会卡住吗?我需要什么信息 PLAN 没给我?"
|
|
158
|
-
|
|
159
|
-
4. **自包含性**:PLAN 是否有执行所需的全部信息?需不需要去其他文档查配置、查 import 路径?
|
|
160
|
-
|
|
161
|
-
5. **元数据准确性**:severity、component、scope 判定、文件数量——与你读代码后的判断一致吗?
|
|
162
|
-
|
|
163
|
-
6. **修复完整性**:修复完整吗?会不会引入新问题?
|
|
164
|
-
特别检查:FK 约束、nullable 字段、并发安全、import 路径。
|
|
165
|
-
|
|
166
|
-
审查输出写入:/tmp/boll-$ISSUE_SLUG/docs/decisions/tasks/GUARD-.../PLAN-REVIEW.md
|
|
167
|
-
|
|
168
|
-
输出格式:
|
|
169
|
-
---
|
|
170
|
-
verdict: PASS 或 FAIL
|
|
171
|
-
reviewer: independent-code-reviewer
|
|
172
|
-
reviewed_at: YYYY-MM-DD
|
|
173
|
-
findings_count: N
|
|
174
|
-
blocking_count: N
|
|
175
|
-
---
|
|
176
|
-
|
|
177
|
-
每个 finding 标注 BLOCKING / NON-BLOCKING / OBSERVATION。
|
|
178
|
-
verdict 只有在 0 个 BLOCKING finding 时才能是 PASS。
|
|
179
|
-
```
|
|
180
|
-
|
|
181
|
-
**如果 FAIL**:读审查者的 findings,修改 PLAN(标注为 v2),重新提交审查。**最多 2 轮。** 2 轮不通过 → 标 `execution_status: blocked`,停止。不要强行继续。
|
|
182
|
-
|
|
183
|
-
### Step 4-5: Gate 3 + 4 — 任务拆解 + 审查
|
|
184
|
-
|
|
185
|
-
把 PLAN 拆成可执行的 WP(Work Package)。每个 WP = 一个文件的一组改动 + 可机械验证的验收标准。
|
|
186
|
-
|
|
187
|
-
然后再 spawn 独立审查者审查 TASK.md。同样的 6 维度,同样的纪律。
|
|
188
|
-
|
|
189
|
-
### Step 6: Gate 5 — 开发
|
|
190
|
-
|
|
191
|
-
这是最容易犯错的 Gate。以下每一条都来自真实事故:
|
|
192
|
-
|
|
193
|
-
**先开 LOG.md**。LOG 是实时写的开发日志,不是事后从 git log 生成的。在你写第一行代码之前,LOG.md 必须已经创建,第一条记录是"开始 WP-1,目标是..."。
|
|
194
|
-
|
|
195
|
-
**逐个 WP 执行**,每个 WP 的循环是:
|
|
196
|
-
1. 写代码
|
|
197
|
-
2. **运行代码**
|
|
198
|
-
3. 把运行命令和输出记录到 LOG.md
|
|
199
|
-
4. 对照 TASK.md 的验收标准检查
|
|
200
|
-
|
|
201
|
-
**"运行代码"不是可选的。** 不是"看起来对"就 commit。你必须有运行时证据——执行了什么命令、输出了什么结果。这条规则没有例外。
|
|
202
|
-
|
|
203
|
-
**更新 issue 文档状态**。把 issue 的 `status` 从 `open` 改为 `fixed`,`prevention_status` 改为 `closed`,`mechanism_layer` 填写实际采用的防护层级(guard/test/type/convention)。pre-commit hook 会检查这个。
|
|
204
|
-
|
|
205
|
-
**Commit,不 push。** 这很重要。commit 和 push 之间有审查窗口。不要 commit 完就 push。
|
|
206
|
-
|
|
207
|
-
### Step 7: Gate 6 — 测试
|
|
208
|
-
|
|
209
|
-
运行所有能跑的测试。对每个测试集诚实记录结果:
|
|
210
|
-
|
|
211
|
-
- 跑了的标 PASS 或 FAIL(附 pytest 输出)
|
|
212
|
-
- Docker 不可用的标 **BLOCKED**,不标 PASS
|
|
213
|
-
- "collect 通过"标 **COLLECTED**,不标 PASS(collect 只证明 import 正确,不证明逻辑正确)
|
|
214
|
-
|
|
215
|
-
写 TEST.md 时必须包含**诚实声明**——三个问题:
|
|
216
|
-
1. 新代码有没有被测试覆盖?(新写的代码有没有对应的测试在跑?)
|
|
217
|
-
2. 是"旧测试通过"还是"新代码验证通过"?(旧测试通过只证明没有回归,不证明新代码是对的)
|
|
218
|
-
3. 有没有把 BLOCKED 标成 PASS?
|
|
219
|
-
|
|
220
|
-
### Step 8: Gate 7 — 最终审查
|
|
221
|
-
|
|
222
|
-
Spawn 独立审查者审查代码 diff + TEST.md + LOG.md。审查者检查:
|
|
223
|
-
- 代码改动与 PLAN 一致吗?
|
|
224
|
-
- 有没有引入新问题?
|
|
225
|
-
- TEST.md 的诚实声明可信吗?
|
|
226
|
-
|
|
227
|
-
### Step 9: Gate 7.5 — Closure
|
|
228
|
-
|
|
229
|
-
写 CLOSURE.md。检查文档同步:
|
|
230
|
-
- issue 文档的 status/prevention_status/mechanism_layer 是否已更新
|
|
231
|
-
- 如果改了 API → CLAUDE.md 路由表需要更新吗?(写进 PR 描述,不要自己改 CLAUDE.md)
|
|
232
|
-
- 如果修复也解决了其他 issue → 记录下来
|
|
233
|
-
|
|
234
|
-
### Step 10: Gate 8 — Push + PR
|
|
235
|
-
|
|
236
|
-
```bash
|
|
237
|
-
cd /tmp/boll-$ISSUE_SLUG
|
|
238
|
-
git push -u origin codex/$ISSUE_SLUG
|
|
239
|
-
gh pr create --title "fix(...): $ISSUE_SLUG 标题" --body "$(cat <<'PREOF'
|
|
240
|
-
## Issue
|
|
241
|
-
|
|
242
|
-
`docs/issues/$ISSUE_SLUG.md`
|
|
243
|
-
|
|
244
|
-
## 变更摘要
|
|
245
|
-
|
|
246
|
-
(1-3 句话)
|
|
247
|
-
|
|
248
|
-
## 8 Gate 结果
|
|
249
|
-
|
|
250
|
-
| Gate | 产物 | 结果 |
|
|
251
|
-
|------|------|------|
|
|
252
|
-
| 1. 规划 | PLAN.md | ✅ |
|
|
253
|
-
| 2. PLAN 审查 | PLAN-REVIEW.md | ✅ PASS |
|
|
254
|
-
| 3. 任务拆解 | TASK.md | ✅ |
|
|
255
|
-
| 4. TASK 审查 | TASK-REVIEW.md | ✅ PASS |
|
|
256
|
-
| 5. 开发 | 代码 + LOG.md | ✅ |
|
|
257
|
-
| 6. 测试 | TEST.md | ✅/⚠️ BLOCKED |
|
|
258
|
-
| 7. 最终审查 | FINAL-REVIEW.md | ✅ PASS |
|
|
259
|
-
| 7.5 Closure | CLOSURE.md | ✅ |
|
|
260
|
-
|
|
261
|
-
## 验证结果
|
|
262
|
-
|
|
263
|
-
(诚实标注 PASS/BLOCKED)
|
|
264
|
-
|
|
265
|
-
## Artifacts
|
|
266
|
-
|
|
267
|
-
`docs/decisions/tasks/GUARD-.../` 下的所有文件
|
|
268
|
-
PREOF
|
|
269
|
-
)"
|
|
270
|
-
```
|
|
271
|
-
|
|
272
|
-
---
|
|
273
|
-
|
|
274
|
-
## 六个有名字的反模式
|
|
275
|
-
|
|
276
|
-
这些反模式来自 PLAN-064 的真实事故。每一个都导致了可观测的生产问题。它们有名字,因为有名字的反模式可以被识别和避免。
|
|
277
|
-
|
|
278
|
-
### 1. 幽灵验证(Ghost Verification)
|
|
279
|
-
|
|
280
|
-
**表现**:写完代码不运行就 commit。LOG.md 里写"验证通过"但没有任何命令输出作为证据。
|
|
281
|
-
|
|
282
|
-
**为什么致命**:PLAN-064 中 6 个 bug 里有 3 个在写代码时就能发现——如果代码被运行过。它们没被发现,因为开发者"看了一下觉得对"就 commit 了。
|
|
283
|
-
|
|
284
|
-
**识别信号**:如果你发现自己在 LOG.md 里写"验证通过"但没有贴任何命令输出——你在做幽灵验证。停下来,跑命令,贴输出。
|
|
285
|
-
|
|
286
|
-
**对治**:每个 WP 完成后,LOG.md 必须有 `$ command` + 实际输出。没有输出 = 没有运行 = 没有验证。
|
|
287
|
-
|
|
288
|
-
### 2. 事后编年史(Post-hoc Chronicle)
|
|
289
|
-
|
|
290
|
-
**表现**:开发全部完成后,从 git log 或记忆中"补"LOG.md。
|
|
291
|
-
|
|
292
|
-
**为什么致命**:事后写的 LOG 不会包含"我试了 X 发现不行所以改成 Y"这种关键信息。它只包含成功路径。而失败路径正是审查者最需要知道的——因为那里藏着被放弃的方案和潜在的遗漏。
|
|
293
|
-
|
|
294
|
-
**识别信号**:如果你在 Gate 5(开发)结束后才开始写 LOG.md——你在做事后编年史。
|
|
295
|
-
|
|
296
|
-
**对治**:Gate 5 的第一个动作是 `touch LOG.md` 并写下"开始 WP-1"。
|
|
297
|
-
|
|
298
|
-
### 3. 收集幻觉(Collection Hallucination)
|
|
299
|
-
|
|
300
|
-
**表现**:`pytest --collect-only` 通过了(没有 import 错误),就在 TEST.md 里标 PASS。
|
|
301
|
-
|
|
302
|
-
**为什么致命**:collect 只验证文件能被导入——fixture 存在、import 正确。它不运行任何测试逻辑。一个测试可以 collect 成功但运行时 100% 失败(比如 FK 约束违反、API 调用失败)。
|
|
303
|
-
|
|
304
|
-
**识别信号**:TEST.md 中如果 pytest 命令是 `--collect-only` 但结果列标 PASS——你在做收集幻觉。
|
|
305
|
-
|
|
306
|
-
**对治**:collect 结果标 COLLECTED,只有真正运行后的结果才标 PASS 或 FAIL。
|
|
307
|
-
|
|
308
|
-
### 4. 自审自(Self-Review)
|
|
309
|
-
|
|
310
|
-
**表现**:Gate 2/4/7 不 spawn 独立审查者,自己写一段"审查了,没问题"。
|
|
311
|
-
|
|
312
|
-
**为什么致命**:自己写的代码自己审,必然受到确认偏差的影响——你已经相信你的方案是对的,你的"审查"只是寻找支持你结论的证据。PLAN-064 的独立审查(Round 1)发现了 FK 约束违反的问题——这个问题编写者完全没意识到。
|
|
313
|
-
|
|
314
|
-
**识别信号**:PLAN-REVIEW.md 的 reviewer 字段是你自己,或者 PLAN-REVIEW.md 不存在但你已经在写代码——你在自审自。
|
|
315
|
-
|
|
316
|
-
**对治**:Gate 2/4/7 必须用 Agent tool spawn opus 模型的独立审查者。审查者的 prompt 明确说"你没有参与这段代码的编写"。
|
|
317
|
-
|
|
318
|
-
### 5. 强行通关(Force-Through)
|
|
319
|
-
|
|
320
|
-
**表现**:遇到异常(scope 超限、审查不通过、测试失败)不停止,想办法绕过继续走。
|
|
321
|
-
|
|
322
|
-
**为什么致命**:每个异常停止点都是一个信号——"这个问题比你想的复杂"。强行通关通常导致:修复不完整、引入新问题、PR 被退回后返工成本更高。
|
|
323
|
-
|
|
324
|
-
**识别信号**:如果你在写"虽然 X 失败了但我觉得可以继续因为..."——你在强行通关。
|
|
325
|
-
|
|
326
|
-
**对治**:异常路径表(见 SKILL.md)里的每个场景,对应的操作都是"停止"。没有"继续但小心一点"的选项。
|
|
327
|
-
|
|
328
|
-
### 6. 规模幻觉(Scale Illusion)
|
|
329
|
-
|
|
330
|
-
**表现**:"这个 bug 很简单,3 行就能修,不需要走完整流程"。
|
|
331
|
-
|
|
332
|
-
**为什么致命**:2026-03-14,一个"一行改动"覆盖了 2100 行代码。2026-03-16,一个"加个标记"覆盖了 200 个 profile。简单改动不是跳步的理由——恰恰相反,简单改动最容易让人放松警惕,而放松警惕时犯的错往往最严重。
|
|
333
|
-
|
|
334
|
-
**识别信号**:如果你在想"这个太简单了不需要 PLAN"——你正在被规模幻觉欺骗。
|
|
335
|
-
|
|
336
|
-
**对治**:8 Gate 全走。简单 issue 的 PLAN 可以短(5 行足矣),但必须存在。
|
|
337
|
-
|
|
338
|
-
---
|
|
339
|
-
|
|
340
|
-
## 决策边界
|
|
341
|
-
|
|
342
|
-
### 你可以做的
|
|
343
|
-
|
|
344
|
-
- 修改测试代码(`backend/tests/` 下)
|
|
345
|
-
- 修改实现代码(`backend/product/` 下),但限于 issue 描述的范围
|
|
346
|
-
- 修改前端代码(`scenes/` 或 `website/` 下),但限于 issue 描述的范围
|
|
347
|
-
- 创建 Gate 产物文档(PLAN/TASK/LOG/TEST/CLOSURE/REVIEW)
|
|
348
|
-
- 更新 issue 文档的状态字段
|
|
349
|
-
- 创建 branch、commit、push、创建 PR
|
|
350
|
-
|
|
351
|
-
### 你不可以做的
|
|
352
|
-
|
|
353
|
-
- 修改 `CLAUDE.md` 的行为指令部分(路由表可以在 PR 描述中建议更新)
|
|
354
|
-
- 修改 `.claude/skills/*/SKILL.md`(包括你自己的 SKILL.md)
|
|
355
|
-
- 修改 `scripts/guard-feedback.py` 或 `scripts/context_router.py`
|
|
356
|
-
- 修改 `AGENTS.md`
|
|
357
|
-
- 在主仓库目录(非 worktree)中修改任何文件
|
|
358
|
-
- 用 `--no-verify` 跳过 pre-commit hook
|
|
359
|
-
- 在一个 PR 中修复多个无关 issue
|
|
360
|
-
- 强行继续一个应该停止的流程
|
|
361
|
-
|
|
362
|
-
### 模糊地带的判断
|
|
363
|
-
|
|
364
|
-
**"这个 issue 的修复方向和我分析出的根因不同"**——以代码真相为准,不以 issue 描述为准。issue 是巡逻者在特定时间点的判断,可能不完整。你分析代码后发现真正的根因不同,按你的分析来。在 PLAN 的"问题分析"中说明与 issue 的差异。
|
|
365
|
-
|
|
366
|
-
**"修复这个 bug 需要改 4 个文件,超了 3 个的限制"**——标 `needs_plan`,停止。不要自己判断"第 4 个文件改动很小所以可以例外"。限制存在的意义是防止 scope creep。
|
|
367
|
-
|
|
368
|
-
**"独立审查者给了 FAIL 但我觉得 finding 不对"**——修改 PLAN 回应 finding(即使你认为 finding 有误,也写清楚为什么你认为它不适用),重新提交审查。不要忽略 finding 继续走。
|
|
369
|
-
|
|
370
|
-
**"测试需要 Docker 但本地没有 Docker"**——在 TEST.md 中标 BLOCKED,说明原因。不要把 BLOCKED 标成 PASS。不要编造测试输出。PR 描述中注明哪些测试需要 CI 环境验证。
|
|
371
|
-
|
|
372
|
-
**"pre-commit hook 报了一个和我的修改无关的 finding"**——不要修它。不要用 `--no-verify` 绕过。在 commit message 中加上 hook 报的 finding 类型,让 hook 认为你已处理。如果实在无法通过,在 LOG.md 中记录情况,停止。
|
|
373
|
-
|
|
374
|
-
---
|
|
375
|
-
|
|
376
|
-
## Gate 前置条件检查
|
|
377
|
-
|
|
378
|
-
在执行任何 Gate 之前,检查前置条件。如果前置条件不满足,**你在跳步——立刻停下来**。
|
|
379
|
-
|
|
380
|
-
```
|
|
381
|
-
□ 开始 Gate 1(规划) → issue 文档存在且 status: open
|
|
382
|
-
□ 开始 Gate 2(PLAN 审查)→ PLAN.md 存在于文件系统
|
|
383
|
-
□ 开始 Gate 3(任务拆解)→ PLAN-REVIEW.md 存在且 verdict: PASS
|
|
384
|
-
□ 开始 Gate 4(TASK 审查)→ TASK.md 存在于文件系统
|
|
385
|
-
□ 开始 Gate 5(开发) → TASK-REVIEW.md 存在且 verdict: PASS
|
|
386
|
-
□ 开始 Gate 6(测试) → LOG.md 存在且有运行时证据
|
|
387
|
-
□ 开始 Gate 7(最终审查)→ TEST.md 存在
|
|
388
|
-
□ 开始 Gate 7.5(Closure)→ FINAL-REVIEW.md 存在且 verdict: PASS
|
|
389
|
-
□ 开始 Gate 8(Push+PR)→ CLOSURE.md 存在
|
|
390
|
-
```
|
|
391
|
-
|
|
392
|
-
**最关键的一条**:如果你正在调用 Write/Edit/Bash 修改代码,但 PLAN.md 不存在——你在跳步。立刻停下来。
|
|
393
|
-
|
|
394
|
-
---
|
|
395
|
-
|
|
396
|
-
## 异常处理
|
|
397
|
-
|
|
398
|
-
所有异常路径都是"停止"。没有"继续但小心一点"。
|
|
399
|
-
|
|
400
|
-
| 场景 | 你做什么 |
|
|
401
|
-
|------|---------|
|
|
402
|
-
| Scope 超 3 个代码文件 | 在 issue 文档加 `execution_status: needs_plan`,停止 |
|
|
403
|
-
| PLAN 审查 2 轮不通过 | 在 issue 文档加 `execution_status: blocked`,停止 |
|
|
404
|
-
| TASK 审查 2 轮不通过 | 同上 |
|
|
405
|
-
| 测试失败且你无法修复 | TEST.md 记录失败原因,在 issue 文档加 `execution_status: blocked`,停止 |
|
|
406
|
-
| 需要修改禁止修改的文件 | 停止 |
|
|
407
|
-
| Rebase 冲突 | 在 issue 文档加 `execution_status: needs_coordination`,停止 |
|
|
408
|
-
| 最终审查不通过 | 回到 Gate 5 修复,重新走 Gate 6-7。最多 2 轮。 |
|
|
409
|
-
| 不确定怎么做 | 停止。不要猜。 |
|
|
410
|
-
|
|
411
|
-
**停止后做什么**:即使停止了,你产出的 PLAN.md / TASK.md / LOG.md 仍然有价值——它们记录了你的分析和进展。commit 这些文档(即使代码改动不完整),push branch,但**不创建 PR**。在 issue 文档中记录你停在哪个 Gate、为什么停止。
|
|
412
|
-
|
|
413
|
-
---
|
|
414
|
-
|
|
415
|
-
## 开始执行
|
|
416
|
-
|
|
417
|
-
1. 读取 `.claude/skills/guardian-fixer/SKILL.md`
|
|
418
|
-
2. 从 Step 0 开始
|
|
419
|
-
3. 严格按顺序执行到 Step 10
|
|
420
|
-
4. 每个 Gate 的产物写入 `docs/decisions/tasks/GUARD-YYYYMMDD-HHMM/`
|
|
421
|
-
5. 遇到异常就停止
|