autorun/: sprint-1-today/TASKS.md + GATE.md: verify_merge + escape hatch + E2E テスト sprint-2-this-week/TASKS.md: OpenClaw ドッキング (hooks/sync/サブエージェント) sprint-3-next-week/TASKS.md: 運用基盤 (Heartbeat/Telegram/VOICEBOX/Maestro) sprint-4-this-month/TASKS.md: 品質ゲート多層化 (rust-ai-pipeline/proptest/mutants) skills/miyabi-gate-cli/SKILL.md: 全11サブコマンドの使い方 Claude Code / Codex / OpenClaw からの呼び出し方法 exit code (0/1/2) とエージェントの対処方法 GATE フロー図 ~/.claude/skills/miyabi-gate-cli → シンボリックリンク設定 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2.8 KiB
2.8 KiB
Sprint 1: 品質確定(今日)
Phase C + clippy 完了 → v1.0 タグ
1.1 verify_merge ラッパー (~50行)
crates/miyabi-core/src/protocol.rsにverify_merge()を追加- 既存の
get_pull_request()(github.rs) を呼ぶ PullRequest.merge_commit_shaを取得pr.state == "merged"を検証- SHA が 40hex であることを検証
- tasks.json 更新: merge_commit + state → done
- ロック解放
- 後続タスク blocked → pending
- 既存の
- CLI に
miyabi gate verify-merge <task-id>サブコマンド追加 - テスト: mock PullRequest で merged → done 遷移
1.2 escape hatch (~50行)
protocol.rsにforce_unlock()追加fn force_unlock(&self, task_id: &str, reason: &str, operator: &str) -> Result<()>- ロック即解放
- event log に reason + operator を記録
- state は変更しない(implementing のまま)
protocol.rsにmanual_complete()追加fn manual_complete(&self, task_id: &str, reason: &str, operator: &str) -> Result<()>- PR/merge なしで done に遷移
- event log に reason + operator + "manual" を記録
- CompletionMode::Manual として区別
- CLI に
miyabi gate force-unlock <task-id> --reason R --operator O追加 - CLI に
miyabi gate manual-complete <task-id> --reason R --operator O追加 - テスト: force_unlock → ロック解放確認
- テスト: manual_complete → done 遷移 + event 記録
1.3 E2E テスト (~100行)
crates/miyabi-core/src/protocol.rsの tests モジュールに E2E 追加#[test] fn full_lifecycle_register_to_done() { // 1. register(issue=1, title="test") // 2. check_dependencies → ready // 3. record_impact(risk=LOW) // 4. assign_and_lock(agent="test", files=["src/test.rs"]) // 5. record_branch("feature/issue-1-test") // 6. record_pr(42) // 7. record_merge("a1b2c3d4...40hex") // 8. assert: state == Done, lock == None }- GATE 拒否テスト: issue=0 → GateError
- GATE 拒否テスト: impact なしで assign → GateError
- GATE 拒否テスト: HIGH risk + 承認なし → GateError
- GATE 拒否テスト: ロック競合 → LockError
- GATE 拒否テスト: 不正 SHA → GateError
- escape hatch テスト: force_unlock + manual_complete
1.4 最終確認
cargo test --all→ 全 GREENcargo clippy --all-targets --all-features -- -D warnings→ ゼロエラーcargo build --release→ リリースビルド成功npx gitnexus analyze --force→ 再インデックスgit tag v1.0-dtp-completegit push origin v1.0-dtp-complete~/bin/announce "Polaris v1.0 完成。全 GATE 実装済み。テスト GREEN。"