@accelerator-mzq/forge 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/LICENSE-THIRD-PARTY.md +50 -0
- package/README.md +159 -0
- package/dist/cli/commands/ack.d.ts +7 -0
- package/dist/cli/commands/ack.d.ts.map +1 -0
- package/dist/cli/commands/ack.js +223 -0
- package/dist/cli/commands/ack.js.map +1 -0
- package/dist/cli/commands/archive.d.ts +44 -0
- package/dist/cli/commands/archive.d.ts.map +1 -0
- package/dist/cli/commands/archive.js +689 -0
- package/dist/cli/commands/archive.js.map +1 -0
- package/dist/cli/commands/backlog.d.ts +3 -0
- package/dist/cli/commands/backlog.d.ts.map +1 -0
- package/dist/cli/commands/backlog.js +55 -0
- package/dist/cli/commands/backlog.js.map +1 -0
- package/dist/cli/commands/config.d.ts +3 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +107 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/evidence.d.ts +7 -0
- package/dist/cli/commands/evidence.d.ts.map +1 -0
- package/dist/cli/commands/evidence.js +662 -0
- package/dist/cli/commands/evidence.js.map +1 -0
- package/dist/cli/commands/finding.d.ts +3 -0
- package/dist/cli/commands/finding.d.ts.map +1 -0
- package/dist/cli/commands/finding.js +93 -0
- package/dist/cli/commands/finding.js.map +1 -0
- package/dist/cli/commands/init.d.ts +3 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +126 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/legacy-bridge.d.ts +11 -0
- package/dist/cli/commands/legacy-bridge.d.ts.map +1 -0
- package/dist/cli/commands/legacy-bridge.js +586 -0
- package/dist/cli/commands/legacy-bridge.js.map +1 -0
- package/dist/cli/commands/migrate.d.ts +3 -0
- package/dist/cli/commands/migrate.d.ts.map +1 -0
- package/dist/cli/commands/migrate.js +34 -0
- package/dist/cli/commands/migrate.js.map +1 -0
- package/dist/cli/commands/monitor.d.ts +3 -0
- package/dist/cli/commands/monitor.d.ts.map +1 -0
- package/dist/cli/commands/monitor.js +113 -0
- package/dist/cli/commands/monitor.js.map +1 -0
- package/dist/cli/commands/preflight.d.ts +7 -0
- package/dist/cli/commands/preflight.d.ts.map +1 -0
- package/dist/cli/commands/preflight.js +63 -0
- package/dist/cli/commands/preflight.js.map +1 -0
- package/dist/cli/commands/scope.d.ts +3 -0
- package/dist/cli/commands/scope.d.ts.map +1 -0
- package/dist/cli/commands/scope.js +32 -0
- package/dist/cli/commands/scope.js.map +1 -0
- package/dist/cli/commands/stage-extensions.d.ts +45 -0
- package/dist/cli/commands/stage-extensions.d.ts.map +1 -0
- package/dist/cli/commands/stage-extensions.js +590 -0
- package/dist/cli/commands/stage-extensions.js.map +1 -0
- package/dist/cli/commands/update.d.ts +3 -0
- package/dist/cli/commands/update.d.ts.map +1 -0
- package/dist/cli/commands/update.js +98 -0
- package/dist/cli/commands/update.js.map +1 -0
- package/dist/cli/commands/upgrade.d.ts +3 -0
- package/dist/cli/commands/upgrade.d.ts.map +1 -0
- package/dist/cli/commands/upgrade.js +277 -0
- package/dist/cli/commands/upgrade.js.map +1 -0
- package/dist/cli/commands/validate.d.ts +3 -0
- package/dist/cli/commands/validate.d.ts.map +1 -0
- package/dist/cli/commands/validate.js +66 -0
- package/dist/cli/commands/validate.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +69 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/core/ack-log.d.ts +107 -0
- package/dist/core/ack-log.d.ts.map +1 -0
- package/dist/core/ack-log.js +197 -0
- package/dist/core/ack-log.js.map +1 -0
- package/dist/core/archive/ack-log-consistency.d.ts +15 -0
- package/dist/core/archive/ack-log-consistency.d.ts.map +1 -0
- package/dist/core/archive/ack-log-consistency.js +164 -0
- package/dist/core/archive/ack-log-consistency.js.map +1 -0
- package/dist/core/archive/fence.d.ts +66 -0
- package/dist/core/archive/fence.d.ts.map +1 -0
- package/dist/core/archive/fence.js +218 -0
- package/dist/core/archive/fence.js.map +1 -0
- package/dist/core/archive/index.d.ts +4 -0
- package/dist/core/archive/index.d.ts.map +1 -0
- package/dist/core/archive/index.js +6 -0
- package/dist/core/archive/index.js.map +1 -0
- package/dist/core/archive/legacy-exemption.d.ts +14 -0
- package/dist/core/archive/legacy-exemption.d.ts.map +1 -0
- package/dist/core/archive/legacy-exemption.js +82 -0
- package/dist/core/archive/legacy-exemption.js.map +1 -0
- package/dist/core/archive/lock.d.ts +46 -0
- package/dist/core/archive/lock.d.ts.map +1 -0
- package/dist/core/archive/lock.js +98 -0
- package/dist/core/archive/lock.js.map +1 -0
- package/dist/core/archive/pause-decisions-fence.d.ts +13 -0
- package/dist/core/archive/pause-decisions-fence.d.ts.map +1 -0
- package/dist/core/archive/pause-decisions-fence.js +384 -0
- package/dist/core/archive/pause-decisions-fence.js.map +1 -0
- package/dist/core/archive/process-evidence-fence.d.ts +110 -0
- package/dist/core/archive/process-evidence-fence.d.ts.map +1 -0
- package/dist/core/archive/process-evidence-fence.js +449 -0
- package/dist/core/archive/process-evidence-fence.js.map +1 -0
- package/dist/core/archive/process-evidence-rerun.d.ts +9 -0
- package/dist/core/archive/process-evidence-rerun.d.ts.map +1 -0
- package/dist/core/archive/process-evidence-rerun.js +238 -0
- package/dist/core/archive/process-evidence-rerun.js.map +1 -0
- package/dist/core/archive/recover-prompt.d.ts +10 -0
- package/dist/core/archive/recover-prompt.d.ts.map +1 -0
- package/dist/core/archive/recover-prompt.js +29 -0
- package/dist/core/archive/recover-prompt.js.map +1 -0
- package/dist/core/archive/recover.d.ts +83 -0
- package/dist/core/archive/recover.d.ts.map +1 -0
- package/dist/core/archive/recover.js +219 -0
- package/dist/core/archive/recover.js.map +1 -0
- package/dist/core/archive/resume-summary.d.ts +22 -0
- package/dist/core/archive/resume-summary.d.ts.map +1 -0
- package/dist/core/archive/resume-summary.js +82 -0
- package/dist/core/archive/resume-summary.js.map +1 -0
- package/dist/core/archive/summary-builder.d.ts +28 -0
- package/dist/core/archive/summary-builder.d.ts.map +1 -0
- package/dist/core/archive/summary-builder.js +287 -0
- package/dist/core/archive/summary-builder.js.map +1 -0
- package/dist/core/archive/summary-render.d.ts +8 -0
- package/dist/core/archive/summary-render.d.ts.map +1 -0
- package/dist/core/archive/summary-render.js +64 -0
- package/dist/core/archive/summary-render.js.map +1 -0
- package/dist/core/archive/three-level-fence.d.ts +10 -0
- package/dist/core/archive/three-level-fence.d.ts.map +1 -0
- package/dist/core/archive/three-level-fence.js +93 -0
- package/dist/core/archive/three-level-fence.js.map +1 -0
- package/dist/core/archive/transaction.d.ts +41 -0
- package/dist/core/archive/transaction.d.ts.map +1 -0
- package/dist/core/archive/transaction.js +184 -0
- package/dist/core/archive/transaction.js.map +1 -0
- package/dist/core/archive/verify-findings-fence.d.ts +11 -0
- package/dist/core/archive/verify-findings-fence.d.ts.map +1 -0
- package/dist/core/archive/verify-findings-fence.js +80 -0
- package/dist/core/archive/verify-findings-fence.js.map +1 -0
- package/dist/core/archive/version-retrograde-fence.d.ts +10 -0
- package/dist/core/archive/version-retrograde-fence.d.ts.map +1 -0
- package/dist/core/archive/version-retrograde-fence.js +103 -0
- package/dist/core/archive/version-retrograde-fence.js.map +1 -0
- package/dist/core/artifact-graph/builder.d.ts +16 -0
- package/dist/core/artifact-graph/builder.d.ts.map +1 -0
- package/dist/core/artifact-graph/builder.js +32 -0
- package/dist/core/artifact-graph/builder.js.map +1 -0
- package/dist/core/artifact-graph/index.d.ts +3 -0
- package/dist/core/artifact-graph/index.d.ts.map +1 -0
- package/dist/core/artifact-graph/index.js +4 -0
- package/dist/core/artifact-graph/index.js.map +1 -0
- package/dist/core/artifact-graph/types.d.ts +14 -0
- package/dist/core/artifact-graph/types.d.ts.map +1 -0
- package/dist/core/artifact-graph/types.js +2 -0
- package/dist/core/artifact-graph/types.js.map +1 -0
- package/dist/core/backlog/assets/backlog-readme.md +11 -0
- package/dist/core/backlog/index.d.ts +20 -0
- package/dist/core/backlog/index.d.ts.map +1 -0
- package/dist/core/backlog/index.js +60 -0
- package/dist/core/backlog/index.js.map +1 -0
- package/dist/core/backlog/render.d.ts +51 -0
- package/dist/core/backlog/render.d.ts.map +1 -0
- package/dist/core/backlog/render.js +196 -0
- package/dist/core/backlog/render.js.map +1 -0
- package/dist/core/bootstrap/index.d.ts +2 -0
- package/dist/core/bootstrap/index.d.ts.map +1 -0
- package/dist/core/bootstrap/index.js +5 -0
- package/dist/core/bootstrap/index.js.map +1 -0
- package/dist/core/canonical-json.d.ts +11 -0
- package/dist/core/canonical-json.d.ts.map +1 -0
- package/dist/core/canonical-json.js +43 -0
- package/dist/core/canonical-json.js.map +1 -0
- package/dist/core/git/utils.d.ts +27 -0
- package/dist/core/git/utils.d.ts.map +1 -0
- package/dist/core/git/utils.js +53 -0
- package/dist/core/git/utils.js.map +1 -0
- package/dist/core/harness-adapters/claude.d.ts +13 -0
- package/dist/core/harness-adapters/claude.d.ts.map +1 -0
- package/dist/core/harness-adapters/claude.js +53 -0
- package/dist/core/harness-adapters/claude.js.map +1 -0
- package/dist/core/harness-adapters/codex.d.ts +14 -0
- package/dist/core/harness-adapters/codex.d.ts.map +1 -0
- package/dist/core/harness-adapters/codex.js +60 -0
- package/dist/core/harness-adapters/codex.js.map +1 -0
- package/dist/core/harness-adapters/detector.d.ts +15 -0
- package/dist/core/harness-adapters/detector.d.ts.map +1 -0
- package/dist/core/harness-adapters/detector.js +45 -0
- package/dist/core/harness-adapters/detector.js.map +1 -0
- package/dist/core/harness-adapters/hash-compare.d.ts +21 -0
- package/dist/core/harness-adapters/hash-compare.d.ts.map +1 -0
- package/dist/core/harness-adapters/hash-compare.js +49 -0
- package/dist/core/harness-adapters/hash-compare.js.map +1 -0
- package/dist/core/harness-adapters/index.d.ts +8 -0
- package/dist/core/harness-adapters/index.d.ts.map +1 -0
- package/dist/core/harness-adapters/index.js +8 -0
- package/dist/core/harness-adapters/index.js.map +1 -0
- package/dist/core/harness-adapters/interface.d.ts +52 -0
- package/dist/core/harness-adapters/interface.d.ts.map +1 -0
- package/dist/core/harness-adapters/interface.js +3 -0
- package/dist/core/harness-adapters/interface.js.map +1 -0
- package/dist/core/harness-adapters/legacy-detector.d.ts +14 -0
- package/dist/core/harness-adapters/legacy-detector.d.ts.map +1 -0
- package/dist/core/harness-adapters/legacy-detector.js +83 -0
- package/dist/core/harness-adapters/legacy-detector.js.map +1 -0
- package/dist/core/harness-adapters/transaction.d.ts +12 -0
- package/dist/core/harness-adapters/transaction.d.ts.map +1 -0
- package/dist/core/harness-adapters/transaction.js +113 -0
- package/dist/core/harness-adapters/transaction.js.map +1 -0
- package/dist/core/harness-adapters/types.d.ts +45 -0
- package/dist/core/harness-adapters/types.d.ts.map +1 -0
- package/dist/core/harness-adapters/types.js +3 -0
- package/dist/core/harness-adapters/types.js.map +1 -0
- package/dist/core/hash/content.d.ts +10 -0
- package/dist/core/hash/content.d.ts.map +1 -0
- package/dist/core/hash/content.js +131 -0
- package/dist/core/hash/content.js.map +1 -0
- package/dist/core/hash/diff.d.ts +26 -0
- package/dist/core/hash/diff.d.ts.map +1 -0
- package/dist/core/hash/diff.js +40 -0
- package/dist/core/hash/diff.js.map +1 -0
- package/dist/core/hash/index.d.ts +6 -0
- package/dist/core/hash/index.d.ts.map +1 -0
- package/dist/core/hash/index.js +7 -0
- package/dist/core/hash/index.js.map +1 -0
- package/dist/core/hash/log.d.ts +7 -0
- package/dist/core/hash/log.d.ts.map +1 -0
- package/dist/core/hash/log.js +14 -0
- package/dist/core/hash/log.js.map +1 -0
- package/dist/core/hash/tasks.d.ts +9 -0
- package/dist/core/hash/tasks.d.ts.map +1 -0
- package/dist/core/hash/tasks.js +20 -0
- package/dist/core/hash/tasks.js.map +1 -0
- package/dist/core/legacy-bridge/ack.d.ts +30 -0
- package/dist/core/legacy-bridge/ack.d.ts.map +1 -0
- package/dist/core/legacy-bridge/ack.js +133 -0
- package/dist/core/legacy-bridge/ack.js.map +1 -0
- package/dist/core/legacy-bridge/anchors.d.ts +15 -0
- package/dist/core/legacy-bridge/anchors.d.ts.map +1 -0
- package/dist/core/legacy-bridge/anchors.js +119 -0
- package/dist/core/legacy-bridge/anchors.js.map +1 -0
- package/dist/core/legacy-bridge/budget.d.ts +39 -0
- package/dist/core/legacy-bridge/budget.d.ts.map +1 -0
- package/dist/core/legacy-bridge/budget.js +83 -0
- package/dist/core/legacy-bridge/budget.js.map +1 -0
- package/dist/core/legacy-bridge/conflict.d.ts +44 -0
- package/dist/core/legacy-bridge/conflict.d.ts.map +1 -0
- package/dist/core/legacy-bridge/conflict.js +105 -0
- package/dist/core/legacy-bridge/conflict.js.map +1 -0
- package/dist/core/legacy-bridge/diff-report.d.ts +14 -0
- package/dist/core/legacy-bridge/diff-report.d.ts.map +1 -0
- package/dist/core/legacy-bridge/diff-report.js +105 -0
- package/dist/core/legacy-bridge/diff-report.js.map +1 -0
- package/dist/core/legacy-bridge/encoding.d.ts +42 -0
- package/dist/core/legacy-bridge/encoding.d.ts.map +1 -0
- package/dist/core/legacy-bridge/encoding.js +104 -0
- package/dist/core/legacy-bridge/encoding.js.map +1 -0
- package/dist/core/legacy-bridge/excel.d.ts +32 -0
- package/dist/core/legacy-bridge/excel.d.ts.map +1 -0
- package/dist/core/legacy-bridge/excel.js +124 -0
- package/dist/core/legacy-bridge/excel.js.map +1 -0
- package/dist/core/legacy-bridge/hash-anchor.d.ts +23 -0
- package/dist/core/legacy-bridge/hash-anchor.d.ts.map +1 -0
- package/dist/core/legacy-bridge/hash-anchor.js +55 -0
- package/dist/core/legacy-bridge/hash-anchor.js.map +1 -0
- package/dist/core/legacy-bridge/indexer.d.ts +28 -0
- package/dist/core/legacy-bridge/indexer.d.ts.map +1 -0
- package/dist/core/legacy-bridge/indexer.js +145 -0
- package/dist/core/legacy-bridge/indexer.js.map +1 -0
- package/dist/core/legacy-bridge/mapper.d.ts +40 -0
- package/dist/core/legacy-bridge/mapper.d.ts.map +1 -0
- package/dist/core/legacy-bridge/mapper.js +241 -0
- package/dist/core/legacy-bridge/mapper.js.map +1 -0
- package/dist/core/legacy-bridge/quality-judge.d.ts +65 -0
- package/dist/core/legacy-bridge/quality-judge.d.ts.map +1 -0
- package/dist/core/legacy-bridge/quality-judge.js +277 -0
- package/dist/core/legacy-bridge/quality-judge.js.map +1 -0
- package/dist/core/legacy-bridge/redact.d.ts +28 -0
- package/dist/core/legacy-bridge/redact.d.ts.map +1 -0
- package/dist/core/legacy-bridge/redact.js +121 -0
- package/dist/core/legacy-bridge/redact.js.map +1 -0
- package/dist/core/legacy-bridge/regenerator.d.ts +50 -0
- package/dist/core/legacy-bridge/regenerator.d.ts.map +1 -0
- package/dist/core/legacy-bridge/regenerator.js +193 -0
- package/dist/core/legacy-bridge/regenerator.js.map +1 -0
- package/dist/core/legacy-bridge/resolve.d.ts +28 -0
- package/dist/core/legacy-bridge/resolve.d.ts.map +1 -0
- package/dist/core/legacy-bridge/resolve.js +75 -0
- package/dist/core/legacy-bridge/resolve.js.map +1 -0
- package/dist/core/legacy-bridge/sync-check.d.ts +47 -0
- package/dist/core/legacy-bridge/sync-check.d.ts.map +1 -0
- package/dist/core/legacy-bridge/sync-check.js +198 -0
- package/dist/core/legacy-bridge/sync-check.js.map +1 -0
- package/dist/core/legacy-bridge/types.d.ts +114 -0
- package/dist/core/legacy-bridge/types.d.ts.map +1 -0
- package/dist/core/legacy-bridge/types.js +4 -0
- package/dist/core/legacy-bridge/types.js.map +1 -0
- package/dist/core/markers/index.d.ts +3 -0
- package/dist/core/markers/index.d.ts.map +1 -0
- package/dist/core/markers/index.js +3 -0
- package/dist/core/markers/index.js.map +1 -0
- package/dist/core/markers/parse.d.ts +12 -0
- package/dist/core/markers/parse.d.ts.map +1 -0
- package/dist/core/markers/parse.js +31 -0
- package/dist/core/markers/parse.js.map +1 -0
- package/dist/core/markers/types.d.ts +142 -0
- package/dist/core/markers/types.d.ts.map +1 -0
- package/dist/core/markers/types.js +3 -0
- package/dist/core/markers/types.js.map +1 -0
- package/dist/core/migrate/ack.d.ts +13 -0
- package/dist/core/migrate/ack.d.ts.map +1 -0
- package/dist/core/migrate/ack.js +62 -0
- package/dist/core/migrate/ack.js.map +1 -0
- package/dist/core/migrate/archive-detect.d.ts +19 -0
- package/dist/core/migrate/archive-detect.d.ts.map +1 -0
- package/dist/core/migrate/archive-detect.js +89 -0
- package/dist/core/migrate/archive-detect.js.map +1 -0
- package/dist/core/migrate/budget.d.ts +7 -0
- package/dist/core/migrate/budget.d.ts.map +1 -0
- package/dist/core/migrate/budget.js +25 -0
- package/dist/core/migrate/budget.js.map +1 -0
- package/dist/core/migrate/conflict.d.ts +49 -0
- package/dist/core/migrate/conflict.d.ts.map +1 -0
- package/dist/core/migrate/conflict.js +99 -0
- package/dist/core/migrate/conflict.js.map +1 -0
- package/dist/core/migrate/index.d.ts +7 -0
- package/dist/core/migrate/index.d.ts.map +1 -0
- package/dist/core/migrate/index.js +389 -0
- package/dist/core/migrate/index.js.map +1 -0
- package/dist/core/migrate/markdown-aware.d.ts +27 -0
- package/dist/core/migrate/markdown-aware.d.ts.map +1 -0
- package/dist/core/migrate/markdown-aware.js +112 -0
- package/dist/core/migrate/markdown-aware.js.map +1 -0
- package/dist/core/migrate/quality.d.ts +66 -0
- package/dist/core/migrate/quality.d.ts.map +1 -0
- package/dist/core/migrate/quality.js +302 -0
- package/dist/core/migrate/quality.js.map +1 -0
- package/dist/core/migrate/regenerate.d.ts +24 -0
- package/dist/core/migrate/regenerate.d.ts.map +1 -0
- package/dist/core/migrate/regenerate.js +145 -0
- package/dist/core/migrate/regenerate.js.map +1 -0
- package/dist/core/migrate/report.d.ts +36 -0
- package/dist/core/migrate/report.d.ts.map +1 -0
- package/dist/core/migrate/report.js +154 -0
- package/dist/core/migrate/report.js.map +1 -0
- package/dist/core/migrate/sources/index.d.ts +4 -0
- package/dist/core/migrate/sources/index.d.ts.map +1 -0
- package/dist/core/migrate/sources/index.js +17 -0
- package/dist/core/migrate/sources/index.js.map +1 -0
- package/dist/core/migrate/sources/openspec.d.ts +14 -0
- package/dist/core/migrate/sources/openspec.d.ts.map +1 -0
- package/dist/core/migrate/sources/openspec.js +453 -0
- package/dist/core/migrate/sources/openspec.js.map +1 -0
- package/dist/core/migrate/sources/superpowers.d.ts +12 -0
- package/dist/core/migrate/sources/superpowers.d.ts.map +1 -0
- package/dist/core/migrate/sources/superpowers.js +310 -0
- package/dist/core/migrate/sources/superpowers.js.map +1 -0
- package/dist/core/migrate/types.d.ts +183 -0
- package/dist/core/migrate/types.d.ts.map +1 -0
- package/dist/core/migrate/types.js +5 -0
- package/dist/core/migrate/types.js.map +1 -0
- package/dist/core/migrate/utils.d.ts +2 -0
- package/dist/core/migrate/utils.d.ts.map +1 -0
- package/dist/core/migrate/utils.js +28 -0
- package/dist/core/migrate/utils.js.map +1 -0
- package/dist/core/monitor/artifact-observer.d.ts +9 -0
- package/dist/core/monitor/artifact-observer.d.ts.map +1 -0
- package/dist/core/monitor/artifact-observer.js +180 -0
- package/dist/core/monitor/artifact-observer.js.map +1 -0
- package/dist/core/monitor/config.d.ts +16 -0
- package/dist/core/monitor/config.d.ts.map +1 -0
- package/dist/core/monitor/config.js +48 -0
- package/dist/core/monitor/config.js.map +1 -0
- package/dist/core/monitor/divergence-map.d.ts +5 -0
- package/dist/core/monitor/divergence-map.d.ts.map +1 -0
- package/dist/core/monitor/divergence-map.js +92 -0
- package/dist/core/monitor/divergence-map.js.map +1 -0
- package/dist/core/monitor/exit-handler.d.ts +6 -0
- package/dist/core/monitor/exit-handler.d.ts.map +1 -0
- package/dist/core/monitor/exit-handler.js +27 -0
- package/dist/core/monitor/exit-handler.js.map +1 -0
- package/dist/core/monitor/health-verdict.d.ts +9 -0
- package/dist/core/monitor/health-verdict.d.ts.map +1 -0
- package/dist/core/monitor/health-verdict.js +55 -0
- package/dist/core/monitor/health-verdict.js.map +1 -0
- package/dist/core/monitor/report-renderer.d.ts +4 -0
- package/dist/core/monitor/report-renderer.d.ts.map +1 -0
- package/dist/core/monitor/report-renderer.js +82 -0
- package/dist/core/monitor/report-renderer.js.map +1 -0
- package/dist/core/monitor/trace-store.d.ts +39 -0
- package/dist/core/monitor/trace-store.d.ts.map +1 -0
- package/dist/core/monitor/trace-store.js +130 -0
- package/dist/core/monitor/trace-store.js.map +1 -0
- package/dist/core/monitor/types.d.ts +63 -0
- package/dist/core/monitor/types.d.ts.map +1 -0
- package/dist/core/monitor/types.js +26 -0
- package/dist/core/monitor/types.js.map +1 -0
- package/dist/core/parse/design.d.ts +14 -0
- package/dist/core/parse/design.d.ts.map +1 -0
- package/dist/core/parse/design.js +17 -0
- package/dist/core/parse/design.js.map +1 -0
- package/dist/core/parse/fenced-yaml.d.ts +18 -0
- package/dist/core/parse/fenced-yaml.d.ts.map +1 -0
- package/dist/core/parse/fenced-yaml.js +45 -0
- package/dist/core/parse/fenced-yaml.js.map +1 -0
- package/dist/core/parse/index.d.ts +7 -0
- package/dist/core/parse/index.d.ts.map +1 -0
- package/dist/core/parse/index.js +8 -0
- package/dist/core/parse/index.js.map +1 -0
- package/dist/core/parse/markdown.d.ts +30 -0
- package/dist/core/parse/markdown.d.ts.map +1 -0
- package/dist/core/parse/markdown.js +66 -0
- package/dist/core/parse/markdown.js.map +1 -0
- package/dist/core/parse/proposal.d.ts +18 -0
- package/dist/core/parse/proposal.d.ts.map +1 -0
- package/dist/core/parse/proposal.js +22 -0
- package/dist/core/parse/proposal.js.map +1 -0
- package/dist/core/parse/specs.d.ts +25 -0
- package/dist/core/parse/specs.d.ts.map +1 -0
- package/dist/core/parse/specs.js +58 -0
- package/dist/core/parse/specs.js.map +1 -0
- package/dist/core/parse/tasks.d.ts +33 -0
- package/dist/core/parse/tasks.d.ts.map +1 -0
- package/dist/core/parse/tasks.js +82 -0
- package/dist/core/parse/tasks.js.map +1 -0
- package/dist/core/parse/yaml.d.ts +13 -0
- package/dist/core/parse/yaml.d.ts.map +1 -0
- package/dist/core/parse/yaml.js +39 -0
- package/dist/core/parse/yaml.js.map +1 -0
- package/dist/core/process-evidence-freeze-warnings.d.ts +24 -0
- package/dist/core/process-evidence-freeze-warnings.d.ts.map +1 -0
- package/dist/core/process-evidence-freeze-warnings.js +153 -0
- package/dist/core/process-evidence-freeze-warnings.js.map +1 -0
- package/dist/core/schema/index.d.ts +5 -0
- package/dist/core/schema/index.d.ts.map +1 -0
- package/dist/core/schema/index.js +6 -0
- package/dist/core/schema/index.js.map +1 -0
- package/dist/core/schema/model-tiers-config.d.ts +41 -0
- package/dist/core/schema/model-tiers-config.d.ts.map +1 -0
- package/dist/core/schema/model-tiers-config.js +85 -0
- package/dist/core/schema/model-tiers-config.js.map +1 -0
- package/dist/core/schema/process-verification-config.d.ts +18 -0
- package/dist/core/schema/process-verification-config.d.ts.map +1 -0
- package/dist/core/schema/process-verification-config.js +74 -0
- package/dist/core/schema/process-verification-config.js.map +1 -0
- package/dist/core/schema/stage-extensions-config.d.ts +28 -0
- package/dist/core/schema/stage-extensions-config.d.ts.map +1 -0
- package/dist/core/schema/stage-extensions-config.js +228 -0
- package/dist/core/schema/stage-extensions-config.js.map +1 -0
- package/dist/core/schema/types.d.ts +262 -0
- package/dist/core/schema/types.d.ts.map +1 -0
- package/dist/core/schema/types.js +51 -0
- package/dist/core/schema/types.js.map +1 -0
- package/dist/core/schema/writing-plans-config.d.ts +11 -0
- package/dist/core/schema/writing-plans-config.d.ts.map +1 -0
- package/dist/core/schema/writing-plans-config.js +40 -0
- package/dist/core/schema/writing-plans-config.js.map +1 -0
- package/dist/core/schemas/archive-summary.d.ts +131 -0
- package/dist/core/schemas/archive-summary.d.ts.map +1 -0
- package/dist/core/schemas/archive-summary.js +31 -0
- package/dist/core/schemas/archive-summary.js.map +1 -0
- package/dist/core/schemas/process-evidence.d.ts +156 -0
- package/dist/core/schemas/process-evidence.d.ts.map +1 -0
- package/dist/core/schemas/process-evidence.js +12 -0
- package/dist/core/schemas/process-evidence.js.map +1 -0
- package/dist/core/schemas/scope-entries.d.ts +68 -0
- package/dist/core/schemas/scope-entries.d.ts.map +1 -0
- package/dist/core/schemas/scope-entries.js +47 -0
- package/dist/core/schemas/scope-entries.js.map +1 -0
- package/dist/core/schemas/severity.d.ts +58 -0
- package/dist/core/schemas/severity.d.ts.map +1 -0
- package/dist/core/schemas/severity.js +26 -0
- package/dist/core/schemas/severity.js.map +1 -0
- package/dist/core/scope/aggregator.d.ts +49 -0
- package/dist/core/scope/aggregator.d.ts.map +1 -0
- package/dist/core/scope/aggregator.js +141 -0
- package/dist/core/scope/aggregator.js.map +1 -0
- package/dist/core/scope/index.d.ts +2 -0
- package/dist/core/scope/index.d.ts.map +1 -0
- package/dist/core/scope/index.js +2 -0
- package/dist/core/scope/index.js.map +1 -0
- package/dist/core/specs-sync/apply.d.ts +8 -0
- package/dist/core/specs-sync/apply.d.ts.map +1 -0
- package/dist/core/specs-sync/apply.js +26 -0
- package/dist/core/specs-sync/apply.js.map +1 -0
- package/dist/core/specs-sync/deltas.d.ts +15 -0
- package/dist/core/specs-sync/deltas.d.ts.map +1 -0
- package/dist/core/specs-sync/deltas.js +27 -0
- package/dist/core/specs-sync/deltas.js.map +1 -0
- package/dist/core/specs-sync/index.d.ts +3 -0
- package/dist/core/specs-sync/index.d.ts.map +1 -0
- package/dist/core/specs-sync/index.js +4 -0
- package/dist/core/specs-sync/index.js.map +1 -0
- package/dist/core/stage-extensions/convergence-judge.d.ts +35 -0
- package/dist/core/stage-extensions/convergence-judge.d.ts.map +1 -0
- package/dist/core/stage-extensions/convergence-judge.js +47 -0
- package/dist/core/stage-extensions/convergence-judge.js.map +1 -0
- package/dist/core/stage-extensions/index.d.ts +13 -0
- package/dist/core/stage-extensions/index.d.ts.map +1 -0
- package/dist/core/stage-extensions/index.js +11 -0
- package/dist/core/stage-extensions/index.js.map +1 -0
- package/dist/core/stage-extensions/output-watcher.d.ts +93 -0
- package/dist/core/stage-extensions/output-watcher.d.ts.map +1 -0
- package/dist/core/stage-extensions/output-watcher.js +163 -0
- package/dist/core/stage-extensions/output-watcher.js.map +1 -0
- package/dist/core/stage-extensions/severity-mapper.d.ts +21 -0
- package/dist/core/stage-extensions/severity-mapper.d.ts.map +1 -0
- package/dist/core/stage-extensions/severity-mapper.js +26 -0
- package/dist/core/stage-extensions/severity-mapper.js.map +1 -0
- package/dist/core/stage-extensions/state-machine.d.ts +43 -0
- package/dist/core/stage-extensions/state-machine.d.ts.map +1 -0
- package/dist/core/stage-extensions/state-machine.js +19 -0
- package/dist/core/stage-extensions/state-machine.js.map +1 -0
- package/dist/core/stage-extensions/thread-map.d.ts +60 -0
- package/dist/core/stage-extensions/thread-map.d.ts.map +1 -0
- package/dist/core/stage-extensions/thread-map.js +107 -0
- package/dist/core/stage-extensions/thread-map.js.map +1 -0
- package/dist/core/stage-extensions/trend-analyzer.d.ts +29 -0
- package/dist/core/stage-extensions/trend-analyzer.d.ts.map +1 -0
- package/dist/core/stage-extensions/trend-analyzer.js +60 -0
- package/dist/core/stage-extensions/trend-analyzer.js.map +1 -0
- package/dist/core/stage-extensions/types.d.ts +39 -0
- package/dist/core/stage-extensions/types.d.ts.map +1 -0
- package/dist/core/stage-extensions/types.js +5 -0
- package/dist/core/stage-extensions/types.js.map +1 -0
- package/dist/core/staging-lock.d.ts +36 -0
- package/dist/core/staging-lock.d.ts.map +1 -0
- package/dist/core/staging-lock.js +122 -0
- package/dist/core/staging-lock.js.map +1 -0
- package/dist/core/templates/commands/ack-confirm.md +32 -0
- package/dist/core/templates/commands/apply.md +220 -0
- package/dist/core/templates/commands/archive.md +178 -0
- package/dist/core/templates/commands/brainstorm.md +58 -0
- package/dist/core/templates/commands/codex-adversarial.md +95 -0
- package/dist/core/templates/commands/explore.md +29 -0
- package/dist/core/templates/commands/index.d.ts +12 -0
- package/dist/core/templates/commands/index.d.ts.map +1 -0
- package/dist/core/templates/commands/index.js +26 -0
- package/dist/core/templates/commands/index.js.map +1 -0
- package/dist/core/templates/commands/propose.md +90 -0
- package/dist/core/templates/commands/review.md +105 -0
- package/dist/core/templates/commands/upgrade.md +58 -0
- package/dist/core/templates/commands/verify.md +186 -0
- package/dist/core/templates/index.d.ts +3 -0
- package/dist/core/templates/index.d.ts.map +1 -0
- package/dist/core/templates/index.js +5 -0
- package/dist/core/templates/index.js.map +1 -0
- package/dist/core/templates/skills/_shared/scope-category-guidance.md +40 -0
- package/dist/core/templates/skills/brainstorming.md +161 -0
- package/dist/core/templates/skills/dispatching-parallel-agents.md +209 -0
- package/dist/core/templates/skills/exploring.md +476 -0
- package/dist/core/templates/skills/finishing-a-development-branch.md +251 -0
- package/dist/core/templates/skills/index.d.ts +17 -0
- package/dist/core/templates/skills/index.d.ts.map +1 -0
- package/dist/core/templates/skills/index.js +53 -0
- package/dist/core/templates/skills/index.js.map +1 -0
- package/dist/core/templates/skills/process-evidence.md +146 -0
- package/dist/core/templates/skills/receiving-code-review.md +294 -0
- package/dist/core/templates/skills/requesting-code-review.md +108 -0
- package/dist/core/templates/skills/subagent-driven-development.md +405 -0
- package/dist/core/templates/skills/subagent-driven-discipline/references/codex-tools.md +72 -0
- package/dist/core/templates/skills/subagent-driven-discipline/references/opencode-tools.md +104 -0
- package/dist/core/templates/skills/subagent-driven-discipline.md +725 -0
- package/dist/core/templates/skills/systematic-debugging.md +297 -0
- package/dist/core/templates/skills/test-driven-development.md +402 -0
- package/dist/core/templates/skills/using-forge.md +163 -0
- package/dist/core/templates/skills/using-git-worktrees.md +229 -0
- package/dist/core/templates/skills/verification-before-completion.md +175 -0
- package/dist/core/templates/skills/verifying-three-dimensions.md +245 -0
- package/dist/core/templates/skills/writing-plans.md +259 -0
- package/dist/core/templates/skills/writing-skills.md +214 -0
- package/dist/core/test-reporters/index.d.ts +41 -0
- package/dist/core/test-reporters/index.d.ts.map +1 -0
- package/dist/core/test-reporters/index.js +39 -0
- package/dist/core/test-reporters/index.js.map +1 -0
- package/dist/core/test-reporters/junit.d.ts +8 -0
- package/dist/core/test-reporters/junit.d.ts.map +1 -0
- package/dist/core/test-reporters/junit.js +94 -0
- package/dist/core/test-reporters/junit.js.map +1 -0
- package/dist/core/test-reporters/tap.d.ts +18 -0
- package/dist/core/test-reporters/tap.d.ts.map +1 -0
- package/dist/core/test-reporters/tap.js +73 -0
- package/dist/core/test-reporters/tap.js.map +1 -0
- package/dist/core/test-reporters/vitest-json.d.ts +8 -0
- package/dist/core/test-reporters/vitest-json.d.ts.map +1 -0
- package/dist/core/test-reporters/vitest-json.js +56 -0
- package/dist/core/test-reporters/vitest-json.js.map +1 -0
- package/dist/core/upgrade/resign-markers.d.ts +14 -0
- package/dist/core/upgrade/resign-markers.d.ts.map +1 -0
- package/dist/core/upgrade/resign-markers.js +245 -0
- package/dist/core/upgrade/resign-markers.js.map +1 -0
- package/dist/core/validate/archive-summary-schema.d.ts +8 -0
- package/dist/core/validate/archive-summary-schema.d.ts.map +1 -0
- package/dist/core/validate/archive-summary-schema.js +186 -0
- package/dist/core/validate/archive-summary-schema.js.map +1 -0
- package/dist/core/validate/auto-findings.d.ts +36 -0
- package/dist/core/validate/auto-findings.d.ts.map +1 -0
- package/dist/core/validate/auto-findings.js +38 -0
- package/dist/core/validate/auto-findings.js.map +1 -0
- package/dist/core/validate/candidate-validators.d.ts +22 -0
- package/dist/core/validate/candidate-validators.d.ts.map +1 -0
- package/dist/core/validate/candidate-validators.js +46 -0
- package/dist/core/validate/candidate-validators.js.map +1 -0
- package/dist/core/validate/change.d.ts +3 -0
- package/dist/core/validate/change.d.ts.map +1 -0
- package/dist/core/validate/change.js +205 -0
- package/dist/core/validate/change.js.map +1 -0
- package/dist/core/validate/coverage-gap.d.ts +37 -0
- package/dist/core/validate/coverage-gap.d.ts.map +1 -0
- package/dist/core/validate/coverage-gap.js +181 -0
- package/dist/core/validate/coverage-gap.js.map +1 -0
- package/dist/core/validate/finding-hash.d.ts +14 -0
- package/dist/core/validate/finding-hash.d.ts.map +1 -0
- package/dist/core/validate/finding-hash.js +29 -0
- package/dist/core/validate/finding-hash.js.map +1 -0
- package/dist/core/validate/index.d.ts +15 -0
- package/dist/core/validate/index.d.ts.map +1 -0
- package/dist/core/validate/index.js +19 -0
- package/dist/core/validate/index.js.map +1 -0
- package/dist/core/validate/marker-integrity.d.ts +28 -0
- package/dist/core/validate/marker-integrity.d.ts.map +1 -0
- package/dist/core/validate/marker-integrity.js +170 -0
- package/dist/core/validate/marker-integrity.js.map +1 -0
- package/dist/core/validate/marker-schema.d.ts +10 -0
- package/dist/core/validate/marker-schema.d.ts.map +1 -0
- package/dist/core/validate/marker-schema.js +661 -0
- package/dist/core/validate/marker-schema.js.map +1 -0
- package/dist/core/validate/orphan-tmp.d.ts +13 -0
- package/dist/core/validate/orphan-tmp.d.ts.map +1 -0
- package/dist/core/validate/orphan-tmp.js +49 -0
- package/dist/core/validate/orphan-tmp.js.map +1 -0
- package/dist/core/validate/proposal.d.ts +4 -0
- package/dist/core/validate/proposal.d.ts.map +1 -0
- package/dist/core/validate/proposal.js +40 -0
- package/dist/core/validate/proposal.js.map +1 -0
- package/dist/core/validate/scope-entries.d.ts +23 -0
- package/dist/core/validate/scope-entries.d.ts.map +1 -0
- package/dist/core/validate/scope-entries.js +108 -0
- package/dist/core/validate/scope-entries.js.map +1 -0
- package/dist/core/validate/specs.d.ts +4 -0
- package/dist/core/validate/specs.d.ts.map +1 -0
- package/dist/core/validate/specs.js +74 -0
- package/dist/core/validate/specs.js.map +1 -0
- package/dist/core/validate/tasks.d.ts +4 -0
- package/dist/core/validate/tasks.d.ts.map +1 -0
- package/dist/core/validate/tasks.js +48 -0
- package/dist/core/validate/tasks.js.map +1 -0
- package/dist/core/validate/test-failure-stub.d.ts +23 -0
- package/dist/core/validate/test-failure-stub.d.ts.map +1 -0
- package/dist/core/validate/test-failure-stub.js +21 -0
- package/dist/core/validate/test-failure-stub.js.map +1 -0
- package/dist/core/validate/types.d.ts +33 -0
- package/dist/core/validate/types.d.ts.map +1 -0
- package/dist/core/validate/types.js +20 -0
- package/dist/core/validate/types.js.map +1 -0
- package/dist/core/worktree.d.ts +52 -0
- package/dist/core/worktree.d.ts.map +1 -0
- package/dist/core/worktree.js +145 -0
- package/dist/core/worktree.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/package.json +82 -0
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: forge:finishing-a-development-branch
|
|
3
|
+
description: Use when implementation is complete, all tests pass, and you need to decide how to integrate the work - guides completion of development work by presenting structured options for merge, PR, or cleanup
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Finishing a Development Branch
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
Guide completion of development work by presenting clear options and handling chosen workflow.
|
|
11
|
+
|
|
12
|
+
**Core principle:** Verify tests → Present options → Execute choice → Clean up.
|
|
13
|
+
|
|
14
|
+
**Announce at start:** "I'm using the forge:finishing-a-development-branch skill to complete this work."
|
|
15
|
+
|
|
16
|
+
## The Process
|
|
17
|
+
|
|
18
|
+
### Step 1: Verify Tests
|
|
19
|
+
|
|
20
|
+
**Before presenting options, verify tests pass:**
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
# Run project's test suite
|
|
24
|
+
npm test / cargo test / pytest / go test ./...
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
**If tests fail:**
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
Tests failing (<N> failures). Must fix before completing:
|
|
31
|
+
|
|
32
|
+
[Show failures]
|
|
33
|
+
|
|
34
|
+
Cannot proceed with merge/PR until tests pass.
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Stop. Don't proceed to Step 2.
|
|
38
|
+
|
|
39
|
+
**If tests pass:** Continue to Step 2.
|
|
40
|
+
|
|
41
|
+
### Step 2: Determine Base Branch
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
# Try common base branches
|
|
45
|
+
git merge-base HEAD main 2>/dev/null || git merge-base HEAD master 2>/dev/null
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Or ask: "This branch split from main - is that correct?"
|
|
49
|
+
|
|
50
|
+
### Step 3: Present Options
|
|
51
|
+
|
|
52
|
+
Present exactly these 4 options:
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
Implementation complete. What would you like to do?
|
|
56
|
+
|
|
57
|
+
1. Merge back to <base-branch> locally
|
|
58
|
+
2. Push and create a Pull Request
|
|
59
|
+
3. Keep the branch as-is (I'll handle it later)
|
|
60
|
+
4. Discard this work
|
|
61
|
+
|
|
62
|
+
Which option?
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
**Don't add explanation** - keep options concise.
|
|
66
|
+
|
|
67
|
+
### Step 4: Execute Choice
|
|
68
|
+
|
|
69
|
+
#### Option 1: Merge Locally
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
# Switch to base branch
|
|
73
|
+
git checkout <base-branch>
|
|
74
|
+
|
|
75
|
+
# Pull latest
|
|
76
|
+
git pull
|
|
77
|
+
|
|
78
|
+
# Merge feature branch
|
|
79
|
+
git merge <feature-branch>
|
|
80
|
+
|
|
81
|
+
# Verify tests on merged result
|
|
82
|
+
<test command>
|
|
83
|
+
|
|
84
|
+
# If tests pass
|
|
85
|
+
git branch -d <feature-branch>
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Then: Cleanup worktree (Step 5)
|
|
89
|
+
|
|
90
|
+
#### Option 2: Push and Create PR
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
# Push branch
|
|
94
|
+
git push -u origin <feature-branch>
|
|
95
|
+
|
|
96
|
+
# Create PR
|
|
97
|
+
gh pr create --title "<title>" --body "$(cat <<'EOF'
|
|
98
|
+
## Summary
|
|
99
|
+
<2-3 bullets of what changed>
|
|
100
|
+
|
|
101
|
+
## Test Plan
|
|
102
|
+
- [ ] <verification steps>
|
|
103
|
+
EOF
|
|
104
|
+
)"
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Then: Cleanup worktree (Step 5)
|
|
108
|
+
|
|
109
|
+
#### Option 3: Keep As-Is
|
|
110
|
+
|
|
111
|
+
Report: "Keeping branch <name>. Worktree preserved at <path>."
|
|
112
|
+
|
|
113
|
+
**Don't cleanup worktree.**
|
|
114
|
+
|
|
115
|
+
#### Option 4: Discard
|
|
116
|
+
|
|
117
|
+
**Confirm first:**
|
|
118
|
+
|
|
119
|
+
```
|
|
120
|
+
This will permanently delete:
|
|
121
|
+
- Branch <name>
|
|
122
|
+
- All commits: <commit-list>
|
|
123
|
+
- Worktree at <path>
|
|
124
|
+
|
|
125
|
+
Type 'discard' to confirm.
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Wait for exact confirmation.
|
|
129
|
+
|
|
130
|
+
If confirmed:
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
git checkout <base-branch>
|
|
134
|
+
git branch -D <feature-branch>
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
Then: Cleanup worktree (Step 5)
|
|
138
|
+
|
|
139
|
+
### Step 5: Cleanup Worktree
|
|
140
|
+
|
|
141
|
+
**For Options 1, 2, 4:**
|
|
142
|
+
|
|
143
|
+
Check if in worktree:
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
git worktree list | grep $(git branch --show-current)
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
If yes:
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
git worktree remove <worktree-path>
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
**For Option 3:** Keep worktree.
|
|
156
|
+
|
|
157
|
+
## forge archive 衔接说明
|
|
158
|
+
|
|
159
|
+
forge 路径下,这一步发生在 `/forge:archive` 之后(archive 已做产物归档 — change 产物移入 `forge/changes/archive/<change-id>/`),本 skill 仅引导用户决定 git 层面的合并/PR/清理策略。
|
|
160
|
+
|
|
161
|
+
**典型 forge 流程顺序:**
|
|
162
|
+
|
|
163
|
+
1. `forge:verification-before-completion` — 验证通过,写 `.verify-passed`
|
|
164
|
+
2. `/forge:archive` — 归档 change 产物到 `forge/changes/archive/`
|
|
165
|
+
3. `forge:finishing-a-development-branch` — 决定 git merge/PR/清理
|
|
166
|
+
|
|
167
|
+
如果用户跳过了 archive 步骤直接来到这里,提示用户先运行 `/forge:archive`,除非用户明确要求跳过。
|
|
168
|
+
|
|
169
|
+
## Quick Reference
|
|
170
|
+
|
|
171
|
+
| Option | Merge | Push | Keep Worktree | Cleanup Branch |
|
|
172
|
+
| ---------------- | ----- | ---- | ------------- | -------------- |
|
|
173
|
+
| 1. Merge locally | ✓ | - | - | ✓ |
|
|
174
|
+
| 2. Create PR | - | ✓ | ✓ | - |
|
|
175
|
+
| 3. Keep as-is | - | - | ✓ | - |
|
|
176
|
+
| 4. Discard | - | - | - | ✓ (force) |
|
|
177
|
+
|
|
178
|
+
## Common Mistakes
|
|
179
|
+
|
|
180
|
+
**Skipping test verification**
|
|
181
|
+
|
|
182
|
+
- **Problem:** Merge broken code, create failing PR
|
|
183
|
+
- **Fix:** Always verify tests before offering options
|
|
184
|
+
|
|
185
|
+
**Open-ended questions**
|
|
186
|
+
|
|
187
|
+
- **Problem:** "What should I do next?" → ambiguous
|
|
188
|
+
- **Fix:** Present exactly 4 structured options
|
|
189
|
+
|
|
190
|
+
**Automatic worktree cleanup**
|
|
191
|
+
|
|
192
|
+
- **Problem:** Remove worktree when might need it (Option 2, 3)
|
|
193
|
+
- **Fix:** Only cleanup for Options 1 and 4
|
|
194
|
+
|
|
195
|
+
**No confirmation for discard**
|
|
196
|
+
|
|
197
|
+
- **Problem:** Accidentally delete work
|
|
198
|
+
- **Fix:** Require typed "discard" confirmation
|
|
199
|
+
|
|
200
|
+
## Red Flags
|
|
201
|
+
|
|
202
|
+
**Never:**
|
|
203
|
+
|
|
204
|
+
- Proceed with failing tests
|
|
205
|
+
- Merge without verifying tests on result
|
|
206
|
+
- Delete work without confirmation
|
|
207
|
+
- Force-push without explicit request
|
|
208
|
+
|
|
209
|
+
**Always:**
|
|
210
|
+
|
|
211
|
+
- Verify tests before offering options
|
|
212
|
+
- Present exactly 4 options
|
|
213
|
+
- Get typed confirmation for Option 4
|
|
214
|
+
- Clean up worktree for Options 1 & 4 only
|
|
215
|
+
|
|
216
|
+
## Integration
|
|
217
|
+
|
|
218
|
+
**Called by:**
|
|
219
|
+
|
|
220
|
+
- **forge:subagent-driven-development** (Step 7) - After all tasks complete
|
|
221
|
+
|
|
222
|
+
**Pairs with:**
|
|
223
|
+
|
|
224
|
+
- **forge:using-git-worktrees** - Cleans up worktree created by that skill
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## forge archive step (Tier 2/3 OpenCode/Codex 路径用,Plan 0a 实测 Variant B PASS)
|
|
229
|
+
|
|
230
|
+
**仅 OpenCode + Codex 路径**(Tier 1 Claude Code 路径走 commands.md `/forge:archive` 调 helper)。
|
|
231
|
+
|
|
232
|
+
When user says "archive" / "/forge:archive" / "完成归档" or similar, **after** finishing branch tasks(merge / clean / etc),you **MUST** execute:
|
|
233
|
+
|
|
234
|
+
```bash
|
|
235
|
+
node "${FORGE_HELPER}" archive <change-id>
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
(`FORGE_HELPER` 解析见 forge:writing-plans skill 末尾 "CLI validation step" 段)
|
|
239
|
+
|
|
240
|
+
forge CLI 内部严格门禁(spec §3.4):
|
|
241
|
+
|
|
242
|
+
- `.verify-passed` 存在 + tasks_hash 匹配
|
|
243
|
+
- `.review-passed` 存在 + content_hash 匹配 + git.diff_hash 匹配
|
|
244
|
+
- specs sync(internal-only,不可绕过)
|
|
245
|
+
|
|
246
|
+
**Result handling**:
|
|
247
|
+
|
|
248
|
+
- exit 0 → mv 到 `forge/changes/archive/<date>-<id>/`,Tell user "Archive PASS"
|
|
249
|
+
- exit 非零 → 报 stderr,**不**重试,提示用户跑缺失 step(`/forge:verify` 或 `/forge:review`)
|
|
250
|
+
|
|
251
|
+
**严格门禁不可绕过 — 不要主动加 `--force`**(那是给 maintainer 紧急 escape hatch 用的,不是 AI 自主决策范畴)。
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/** 16 个移植 skill 名(spec §2.2 12 skill 表 + plan-9i writing-skills + plan-9d verifying-three-dimensions + plan-9f exploring + plan-port-discipline subagent-driven-discipline) */
|
|
2
|
+
export declare const SKILL_NAMES: readonly ["using-forge", "brainstorming", "writing-plans", "subagent-driven-development", "test-driven-development", "requesting-code-review", "receiving-code-review", "verification-before-completion", "systematic-debugging", "dispatching-parallel-agents", "using-git-worktrees", "finishing-a-development-branch", "writing-skills", "verifying-three-dimensions", "exploring", "subagent-driven-discipline"];
|
|
3
|
+
export type SkillName = (typeof SKILL_NAMES)[number];
|
|
4
|
+
/** 单 skill 内容加载 — 用 import.meta.url 定位,开发与生产路径自适应 */
|
|
5
|
+
export declare function loadSkill(name: SkillName): Promise<string>;
|
|
6
|
+
export interface LoadedSkill {
|
|
7
|
+
name: SkillName;
|
|
8
|
+
content: string;
|
|
9
|
+
}
|
|
10
|
+
/** 全量加载 16 个 skill,失败抛错(说明某个 .md 漏建) */
|
|
11
|
+
export declare function loadAllSkills(): Promise<LoadedSkill[]>;
|
|
12
|
+
/** 加载 _shared/*.md 全部 reference docs(plan-9b §2.6.8) */
|
|
13
|
+
export declare function loadAllSharedDocs(): Promise<Array<{
|
|
14
|
+
name: string;
|
|
15
|
+
content: string;
|
|
16
|
+
}>>;
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/templates/skills/index.ts"],"names":[],"mappings":"AAUA,+KAA+K;AAC/K,eAAO,MAAM,WAAW,sZAiBd,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD,qDAAqD;AACrD,wBAAsB,SAAS,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAEhE;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wCAAwC;AACxC,wBAAsB,aAAa,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAE5D;AAED,wDAAwD;AACxD,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAgB3F"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
// 16 个 skill 真实文本的 registry — Plan 4 + plan-9i + plan-9d + plan-9f + plan-port-discipline
|
|
2
|
+
// 文件实体 .md 由 Task B 逐个填实
|
|
3
|
+
import { readFile, readdir } from 'node:fs/promises';
|
|
4
|
+
import { fileURLToPath } from 'node:url';
|
|
5
|
+
import { dirname, join } from 'node:path';
|
|
6
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
7
|
+
const __dirname = dirname(__filename);
|
|
8
|
+
/** 16 个移植 skill 名(spec §2.2 12 skill 表 + plan-9i writing-skills + plan-9d verifying-three-dimensions + plan-9f exploring + plan-port-discipline subagent-driven-discipline) */
|
|
9
|
+
export const SKILL_NAMES = [
|
|
10
|
+
'using-forge',
|
|
11
|
+
'brainstorming',
|
|
12
|
+
'writing-plans',
|
|
13
|
+
'subagent-driven-development',
|
|
14
|
+
'test-driven-development',
|
|
15
|
+
'requesting-code-review',
|
|
16
|
+
'receiving-code-review',
|
|
17
|
+
'verification-before-completion',
|
|
18
|
+
'systematic-debugging',
|
|
19
|
+
'dispatching-parallel-agents',
|
|
20
|
+
'using-git-worktrees',
|
|
21
|
+
'finishing-a-development-branch',
|
|
22
|
+
'writing-skills', // 9i 新增(沿 design §2.9 协议落地 + plan-9i v7)
|
|
23
|
+
'verifying-three-dimensions', // 9d 新增(沿 design §2.2 协议落地 + plan-9d v15)
|
|
24
|
+
'exploring', // 9f 新增(沿 design §2.5 全节 + plan-9f)
|
|
25
|
+
'subagent-driven-discipline', // plan-port-discipline 新增(移植 superpowers SDD 的 companion)
|
|
26
|
+
];
|
|
27
|
+
/** 单 skill 内容加载 — 用 import.meta.url 定位,开发与生产路径自适应 */
|
|
28
|
+
export async function loadSkill(name) {
|
|
29
|
+
return readFile(join(__dirname, `${name}.md`), 'utf8');
|
|
30
|
+
}
|
|
31
|
+
/** 全量加载 16 个 skill,失败抛错(说明某个 .md 漏建) */
|
|
32
|
+
export async function loadAllSkills() {
|
|
33
|
+
return Promise.all(SKILL_NAMES.map(async (name) => ({ name, content: await loadSkill(name) })));
|
|
34
|
+
}
|
|
35
|
+
/** 加载 _shared/*.md 全部 reference docs(plan-9b §2.6.8) */
|
|
36
|
+
export async function loadAllSharedDocs() {
|
|
37
|
+
const sharedDir = join(__dirname, '_shared');
|
|
38
|
+
let entries;
|
|
39
|
+
try {
|
|
40
|
+
entries = await readdir(sharedDir);
|
|
41
|
+
}
|
|
42
|
+
catch (err) {
|
|
43
|
+
if (err.code === 'ENOENT')
|
|
44
|
+
return [];
|
|
45
|
+
throw err;
|
|
46
|
+
}
|
|
47
|
+
const mdFiles = entries.filter((n) => n.endsWith('.md'));
|
|
48
|
+
return Promise.all(mdFiles.map(async (filename) => ({
|
|
49
|
+
name: filename.replace(/\.md$/, ''),
|
|
50
|
+
content: await readFile(join(sharedDir, filename), 'utf8'),
|
|
51
|
+
})));
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/templates/skills/index.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,yBAAyB;AAEzB,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,+KAA+K;AAC/K,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,aAAa;IACb,eAAe;IACf,eAAe;IACf,6BAA6B;IAC7B,yBAAyB;IACzB,wBAAwB;IACxB,uBAAuB;IACvB,gCAAgC;IAChC,sBAAsB;IACtB,6BAA6B;IAC7B,qBAAqB;IACrB,gCAAgC;IAChC,gBAAgB,EAAE,yCAAyC;IAC3D,4BAA4B,EAAE,0CAA0C;IACxE,WAAW,EAAE,oCAAoC;IACjD,4BAA4B,EAAE,0DAA0D;CAChF,CAAC;AAIX,qDAAqD;AACrD,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAe;IAC7C,OAAO,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;AACzD,CAAC;AAOD,wCAAwC;AACxC,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,OAAO,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAClG,CAAC;AAED,wDAAwD;AACxD,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAC7C,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,EAAE,CAAC;QAChE,MAAM,GAAG,CAAC;IACZ,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IACzD,OAAO,OAAO,CAAC,GAAG,CAChB,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC/B,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QACnC,OAAO,EAAE,MAAM,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;KAC3D,CAAC,CAAC,CACJ,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: forge:process-evidence
|
|
3
|
+
description: 用于 v1.0 process_evidence 协议 — 写 marker 阶段必须走 helper / 不直写 marker / 不静默切 mode / 不跳 RED commit / staging append-only。当主代理在 task 实施时或写 .verify-passed marker 时,本 skill 强制 helper-only 写入路径,挡 5 大类伪造攻击。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# process-evidence skill
|
|
7
|
+
|
|
8
|
+
> v1.0 forge 反伪造架构关键 skill。**当 AI 实施 task / 写 marker 时强制本协议**。
|
|
9
|
+
|
|
10
|
+
## 何时调用
|
|
11
|
+
|
|
12
|
+
- 主代理在 `commands/apply.md` 步骤 4 dispatch subagent + 收到 DONE_REPORT
|
|
13
|
+
- 主代理在 `commands/verify.md` 步骤 4.3 写 .verify-passed YAML
|
|
14
|
+
- 主代理在 `commands/review.md` 写 .review-passed YAML
|
|
15
|
+
|
|
16
|
+
## 核心协议(brainstorm spec §2.7)
|
|
17
|
+
|
|
18
|
+
### 1. 走 helper,不直写 marker
|
|
19
|
+
|
|
20
|
+
✗ 禁止:
|
|
21
|
+
|
|
22
|
+
- 主代理直接 fs.writeFile .verify-passed 含 process_evidence 字段
|
|
23
|
+
- 主代理拼接 YAML 字面塞到 marker
|
|
24
|
+
|
|
25
|
+
✓ 必须:
|
|
26
|
+
|
|
27
|
+
- subagent 在 task 实施时跑测试 + 算 hash + 报 DONE 含 RED commit / GREEN commit / log paths / log hashes / report paths / report hashes / exit_codes / expected_failures
|
|
28
|
+
- 主代理调 `forge evidence record-tdd <changeId> --task <...> --red-commit <sha> --red-timestamp <iso> --red-log <path> --red-log-hash <sha256> --red-report <path> --red-report-hash <sha256> --red-exit <int> --green-commit <sha> ... --expected-failures <json>`(20 options)
|
|
29
|
+
- 主代理在 verify 完成时调 `forge evidence record-verify <changeId> --task-refs <list> --scope <type> --report <path> --report-hash <sha256> --log <path> --log-hash <sha256> --exit-code <int> --invoked-at <iso>`
|
|
30
|
+
- 主代理在 SDD 二段 review 完成时调 `forge evidence record-review <changeId> --task <...> --implementer-commit <sha> --spec-iterations <json> --quality-iterations <json> --main-check-off-at <iso>`
|
|
31
|
+
- 主代理在 commands/verify.md 步骤 4.3 写完 .verify-passed YAML 后**必须**调 `forge evidence freeze <changeId> --kind verify`
|
|
32
|
+
|
|
33
|
+
### 2. 不静默切 mode=hash-only
|
|
34
|
+
|
|
35
|
+
✗ 禁止:
|
|
36
|
+
|
|
37
|
+
- 主代理改 forge/config.yaml process_verification.mode 不跑 ack
|
|
38
|
+
- AI 自行决定走 sample / hash-only 模式
|
|
39
|
+
|
|
40
|
+
✓ 必须:
|
|
41
|
+
|
|
42
|
+
- 用户主动跑 `forge ack propose --action ack-mode --finding <id>`
|
|
43
|
+
- mode != full 必须 user CLI ack(不变量 12 strict)
|
|
44
|
+
- CI 模式(CI=true)强制 mode=full;ack-mode 在 CI 拒绝(brainstorm spec §6 ack.allow_ci_mode 默认 false)
|
|
45
|
+
|
|
46
|
+
### 3. RED commit 不可省略
|
|
47
|
+
|
|
48
|
+
✗ 禁止:
|
|
49
|
+
|
|
50
|
+
- subagent 同 commit 写测试 + 实现
|
|
51
|
+
- 主代理填 tdd_exemption 不跑 ack
|
|
52
|
+
|
|
53
|
+
✓ 必须:
|
|
54
|
+
|
|
55
|
+
- subagent 先建 RED commit(测试 fail + 实现未写 / 不通过)
|
|
56
|
+
- subagent 后建 GREEN commit(实现写 + 测试 pass)
|
|
57
|
+
- light mode trivial change(< writing_plans.light_threshold)允许 tdd_exemption,但**必须**跑 `forge ack propose --action ack-tdd-exemption`(不变量 11 strict)
|
|
58
|
+
|
|
59
|
+
### 4. Staging append-only,不绕过
|
|
60
|
+
|
|
61
|
+
✗ 禁止:
|
|
62
|
+
|
|
63
|
+
- 主代理直接编辑 .evidence/process-evidence.staging.yaml
|
|
64
|
+
- 主代理跳 staging,直接修改 marker.process_evidence
|
|
65
|
+
|
|
66
|
+
✓ 必须:
|
|
67
|
+
|
|
68
|
+
- helper(record-tdd / record-verify / record-review)是唯一 staging 写入路径
|
|
69
|
+
- staging 写入走文件锁 .evidence/.staging.lock(并发保护)
|
|
70
|
+
- freeze 子命令是唯一 marker 写入路径
|
|
71
|
+
|
|
72
|
+
### 5. 不绕过 freeze 子命令
|
|
73
|
+
|
|
74
|
+
✗ 禁止:
|
|
75
|
+
|
|
76
|
+
- 主代理直接写 .verify-passed.yaml 含完整 process_evidence(包括 staging_hash / ack_log_tail_hash / ack_log_entry_count)
|
|
77
|
+
- 主代理拼接 marker.verify_findings(WARNING 转 VerifyFinding 由 freeze 子命令做)
|
|
78
|
+
|
|
79
|
+
✓ 必须:
|
|
80
|
+
|
|
81
|
+
- 调 `forge evidence freeze --kind verify|review` 写 process_evidence + 三 hash 字段
|
|
82
|
+
- 接受 freeze 子命令 stderr 输出 WARNING(自动写 marker.verify_findings;archive 步骤 3.6 接 ack 流程)
|
|
83
|
+
- 若 freeze exit 1 → 先跑 `forge ack propose` 处理 CRITICAL 11/12 后 retry freeze
|
|
84
|
+
|
|
85
|
+
## 反伪造五源 cross-check
|
|
86
|
+
|
|
87
|
+
archive `crossCuttingFenceCheck()` 跑 14 不变量:
|
|
88
|
+
|
|
89
|
+
- 1-4: 字段关系(timestamp / ancestor / exit_code)
|
|
90
|
+
- 5-6: worktree 重跑实际 fail/pass + reporter parse expected_failures
|
|
91
|
+
- 7: verify_invocations 计数(WARNING)
|
|
92
|
+
- 8: subagent review chain commit 顺序
|
|
93
|
+
- 9: 五源 hash cross-check(marker / staging / ack-log content / ack-log chain / tail+count)
|
|
94
|
+
- 10: env_hash drift(WARNING)
|
|
95
|
+
- 11: tdd_exemption ack
|
|
96
|
+
- 12: mode != full ack + CI 拒签
|
|
97
|
+
- 13: rerun timeout severity 分级
|
|
98
|
+
- 14: green ↞ archive HEAD ancestor(挡旁支造链)
|
|
99
|
+
|
|
100
|
+
CRITICAL → archive 拒签 exit 1;WARNING → marker.verify_findings 走 9d ack 流程(或 ack-mode 隐含覆盖 rerun-time WARNING)
|
|
101
|
+
|
|
102
|
+
## 失败模式 + Recovery
|
|
103
|
+
|
|
104
|
+
| 失败模式 | 症状 | Recovery |
|
|
105
|
+
| ------------------ | ---------------------------------------------------- | ----------------------------------------------------------------- |
|
|
106
|
+
| 直写 marker | .verify-passed 含 process_evidence 但无 staging 条目 | archive fence 9 → CRITICAL 拒签;重跑 record-tdd + freeze |
|
|
107
|
+
| 静默 hash-only | config.yaml mode=hash-only 无 ack-log entry | fence 12 → CRITICAL 拒签;跑 `forge ack propose --action ack-mode` |
|
|
108
|
+
| 跳 RED commit | tdd_event_chain 无 red_exit_code!=0 条目 | fence 5 worktree 重跑 → CRITICAL;必须补 RED commit |
|
|
109
|
+
| staging 被手动编辑 | staging_hash mismatch | fence 9 → CRITICAL 拒签;从 ack-log 重建 staging |
|
|
110
|
+
| freeze 绕过 | marker 有 process_evidence 但无 staging_hash 字段 | fence 9 → CRITICAL 拒签;重跑 freeze |
|
|
111
|
+
|
|
112
|
+
## 反例 / 正例
|
|
113
|
+
|
|
114
|
+
✗ 禁止(借口模式):
|
|
115
|
+
|
|
116
|
+
```
|
|
117
|
+
# 错误:主代理直接构造 process_evidence YAML
|
|
118
|
+
cat <<EOF > .verify-passed.yaml
|
|
119
|
+
process_evidence:
|
|
120
|
+
tdd_event_chain:
|
|
121
|
+
- red_commit: abc123
|
|
122
|
+
red_exit_code: 1
|
|
123
|
+
green_commit: def456
|
|
124
|
+
green_exit_code: 0
|
|
125
|
+
EOF
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
✓ 必须(正确路径):
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
# subagent DONE_REPORT 后,主代理调 helper
|
|
132
|
+
forge evidence record-tdd <changeId> \
|
|
133
|
+
--task task-1 \
|
|
134
|
+
--red-commit abc123 --red-timestamp 2026-05-13T10:00:00Z \
|
|
135
|
+
--red-log .evidence/task-1-red.log --red-log-hash sha256:... \
|
|
136
|
+
--red-report .evidence/task-1-red-junit.xml --red-report-hash sha256:... \
|
|
137
|
+
--red-exit 1 \
|
|
138
|
+
--green-commit def456 --green-timestamp 2026-05-13T10:30:00Z \
|
|
139
|
+
--green-log .evidence/task-1-green.log --green-log-hash sha256:... \
|
|
140
|
+
--green-report .evidence/task-1-green-junit.xml --green-report-hash sha256:... \
|
|
141
|
+
--green-exit 0 \
|
|
142
|
+
--expected-failures '[{"test_file":"src/auth.test.ts","test_name":"should reject expired token","failure_type":"AssertionError"}]'
|
|
143
|
+
|
|
144
|
+
# verify 完成后写 marker,再 freeze
|
|
145
|
+
forge evidence freeze <changeId> --kind verify
|
|
146
|
+
```
|