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として区別(2026-04-10 実装反映)
- 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 追加(full_lifecycle_register_to_merged_releases_lock— マージ完了時はTaskState::Merged)#[test] fn full_lifecycle_register_to_merged_releases_lock() { // register → impact → assign → branch → pr → merge(40hex) // assert: Merged, 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-complete(リリース判断後)git push origin v1.0-dtp-complete~/bin/announce "Polaris v1.0 完成。全 GATE 実装済み。テスト GREEN。"