Files
claude-code/docs/g006-task-policy-board-verification-map.md
bellman f7235ca932 Make G006 task policy state machine executable
Typed task packets, policy decisions, lane board status, and session liveness now have concrete runtime contracts and focused regressions for Stream 4.

Constraint: G006 requires task/lane operation without pane scraping while preserving legacy task packet callers.
Rejected: waiting on stale worker worktrees | all G006 worker worktrees remained at main with no commits, so leader integrated the verified slice directly.
Confidence: high
Scope-risk: moderate
Directive: Keep task packet serde defaults when adding fields so older packets continue to deserialize.
Tested: git diff --check; cargo fmt --manifest-path rust/Cargo.toml --all -- --check; cargo check --manifest-path rust/Cargo.toml -p runtime -p tools -p rusty-claude-cli; cargo test --manifest-path rust/Cargo.toml -p runtime task_packet -- --nocapture; cargo test --manifest-path rust/Cargo.toml -p runtime policy_engine -- --nocapture; cargo test --manifest-path rust/Cargo.toml -p runtime task_registry -- --nocapture; cargo test --manifest-path rust/Cargo.toml -p runtime session_heartbeat -- --nocapture; cargo test --manifest-path rust/Cargo.toml -p tools run_task_packet_creates_packet_backed_task -- --nocapture; cargo test --manifest-path rust/Cargo.toml -p tools lane_completion -- --nocapture; cargo test --manifest-path rust/Cargo.toml -p rusty-claude-cli status_json_surfaces -- --nocapture
Not-tested: full workspace test suite; PR/issue reconciliation deferred to G011/G012

Co-authored-by: OmX <omx@oh-my-codex.dev>
2026-05-15 09:29:26 +09:00

3.8 KiB

G006 Task Policy Board Verification Map

Goal: G006-task-policy-board — Stream 4 task packets, executable policy engine, lane board/status JSON, and running-state liveness heartbeat.

Prompt-to-artifact checklist

Requirement Artifact/evidence
Typed task packet schema with objective, scope, files/resources, acceptance criteria, model/provider, permission profile, recovery policy, verification plan, reporting targets rust/crates/runtime/src/task_packet.rs extends TaskPacket with acceptance_criteria, resources, model, provider, permission_profile, recovery_policy, verification_plan, and reporting_targets; tests cover legacy defaulted JSON and rich CC2 roundtrip.
Backwards compatibility for existing task packets and tool callers serde(default)/optional fields in task_packet.rs; rust/crates/tools/src/lib.rs run_task_packet_creates_packet_backed_task updated for rich schema; legacy packet test keeps old JSON accepted.
Executable policy decisions for retry/rebase/merge/escalate/stale cleanup/approval token rust/crates/runtime/src/policy_engine.rs adds RetryAvailable, RebaseRequired, StaleCleanupRequired, approval-token conditions/actions, PolicyEvaluation, PolicyDecisionEvent, and decision-table tests.
Policy decisions explainable and typed-event logged/emittable PolicyDecisionEvent serializable typed event with rule_name, priority, kind, explanation, approval_token_id; evaluate_with_events emits event per flattened action.
Active lane board/dashboard/status JSON over canonical state rust/crates/runtime/src/task_registry.rs adds LaneBoard, LaneBoardEntry, LaneFreshness, lane_board_at, and lane_status_json_at; CLI status JSON advertises lane board contract in rust/crates/rusty-claude-cli/src/main.rs.
Heartbeats independent of terminal rendering with healthy/stalled/transport-dead cases rust/crates/runtime/src/session.rs adds SessionHeartbeat/SessionLiveness from persisted session health state; task_registry.rs heartbeat freshness is computed from canonical heartbeat timestamps and transport state.
Task/lane status JSON shows active/blocked/finished lanes with heartbeat freshness task_registry::tests::lane_board_groups_active_blocked_finished_and_reports_freshness; status_json_surfaces_session_lifecycle_for_clawhip/status JSON surfaces lane board metadata.
Leader-owned ultragoal audit remains separate from workers No worker changed .omx/ultragoal; leader will checkpoint with fresh get_goal only after terminal verification.

Verification run

  • git diff --check — PASS
  • cargo fmt --manifest-path rust/Cargo.toml --all -- --check — PASS
  • cargo check --manifest-path rust/Cargo.toml -p runtime -p tools -p rusty-claude-cli — PASS
  • cargo test --manifest-path rust/Cargo.toml -p runtime task_packet -- --nocapture — PASS (5 task packet tests)
  • cargo test --manifest-path rust/Cargo.toml -p runtime policy_engine -- --nocapture — PASS (12 unit + 1 integration match)
  • cargo test --manifest-path rust/Cargo.toml -p runtime task_registry -- --nocapture — PASS (17 task registry tests)
  • cargo test --manifest-path rust/Cargo.toml -p runtime session_heartbeat -- --nocapture — PASS (1 heartbeat test)
  • cargo test --manifest-path rust/Cargo.toml -p tools run_task_packet_creates_packet_backed_task -- --nocapture — PASS
  • cargo test --manifest-path rust/Cargo.toml -p tools lane_completion -- --nocapture — PASS (6 tests)
  • cargo test --manifest-path rust/Cargo.toml -p rusty-claude-cli status_json_surfaces -- --nocapture — PASS

Remaining gates

  • G006 can be checkpointed after team lifecycle is reconciled terminal and this commit is pushed.
  • Open PR/issue reconciliation remains explicitly deferred to G011/G012 via docs/pr-issue-resolution-gate.md.