summaryrefslogtreecommitdiff
path: root/makima/src/bin/makima.rs
diff options
context:
space:
mode:
authorsoryu <soryu@soryu.co>2026-01-31 22:53:28 +0000
committersoryu <soryu@soryu.co>2026-01-31 22:54:50 +0000
commit44bb3fe07ab191abd8260af6975bc175c223878e (patch)
tree1d7dd73756345f3671af32cc84b9b4235d34d173 /makima/src/bin/makima.rs
parenta6e36a8bfecb9ebe6c7b135b9e01557f7ebc3e58 (diff)
downloadsoryu-makima/contract-management-improvements.tar.gz
soryu-makima/contract-management-improvements.zip
feat: Add contract management system improvements (Phase 1)makima/contract-management-improvements
- 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
Diffstat (limited to 'makima/src/bin/makima.rs')
-rw-r--r--makima/src/bin/makima.rs8
1 files changed, 6 insertions, 2 deletions
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)?);
}