mirror of
https://github.com/instructkr/claude-code.git
synced 2026-05-16 10:56:45 +00:00
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>
3.8 KiB
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— PASScargo fmt --manifest-path rust/Cargo.toml --all -- --check— PASScargo check --manifest-path rust/Cargo.toml -p runtime -p tools -p rusty-claude-cli— PASScargo 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— PASScargo 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.