From 44bb3fe07ab191abd8260af6975bc175c223878e Mon Sep 17 00:00:00 2001 From: soryu Date: Sat, 31 Jan 2026 22:53:28 +0000 Subject: feat: Add contract management system improvements (Phase 1) - Add docs/contract-management-spec.md with full system design - Add docs/plans/implementation-plan.md with 5-phase rollout plan - Add validate_deliverable() function and use in mark_deliverable_complete - Add PhaseChangeResult enum and change_contract_phase_with_version() with FOR UPDATE locking - Enforce phase_guard at API level for all callers This addresses critical issues in contract management: - Deliverable validation to prevent marking non-existent deliverables complete - Version conflict detection for phase changes with row locking - Phase guard enforcement at API level (applies to all callers including supervisors) - Comprehensive specification and implementation plan for future phases --- makima/src/bin/makima.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'makima/src/bin/makima.rs') diff --git a/makima/src/bin/makima.rs b/makima/src/bin/makima.rs index e5b1a5e..ac577b8 100644 --- a/makima/src/bin/makima.rs +++ b/makima/src/bin/makima.rs @@ -488,9 +488,13 @@ async fn run_supervisor( } SupervisorCommand::AdvancePhase(args) => { let client = ApiClient::new(args.common.api_url, args.common.api_key)?; - eprintln!("Advancing contract to phase: {}...", args.phase); + if args.confirmed { + eprintln!("Advancing contract to phase: {} (confirmed)...", args.phase); + } else { + eprintln!("Requesting phase advance to: {} (use --confirmed to proceed)...", args.phase); + } let result = client - .supervisor_advance_phase(args.common.contract_id, &args.phase) + .supervisor_advance_phase(args.common.contract_id, &args.phase, args.confirmed) .await?; println!("{}", serde_json::to_string(&result.0)?); } -- cgit v1.2.3