Repository navigation
refactor(closeout): keep typed evidence through result projections - #1382
Conversation
swjnxyf
left a comment
There was a problem hiding this comment.
Reviewed typed TaskOutputs and ReviewEvidence through work-result/closeout and artifact pagination, including latest-finish invalidation, exact Session/Project selection, bounded review tool names, source-metadata privacy and conservative validation decisions. Original 18/18 hosted CI checks passed. Integrated newest main including #1381 in 26f0ec9 (no conflicts) and pushed it to resolve the stale mergeability state. On wkp, targeted Task Outputs (5), Work Result (54) and Handoff (216) tests passed, 275 total, with remaining closeout/resource-reference filters running; format and diff checks passed. No blocking findings. Approved for maintainer-authorized squash merge without waiting for updated-head CI.
Closeout consumers serialized validated task outputs and review evidence into presentation JSON, then parsed that JSON back for internal decisions. Handoff also constructed compact fields that its merge immediately discarded.
Keep
TaskOutputsandReviewEvidencetyped through acceptance evaluation and artifact listing, serializing at the final output boundary. Narrow owned finish/handoff objects instead of rebuilding and cloning their shared fields. Remove unused compact evidence/permission projections and unreachable validation fallback branches.Public result shapes and persisted task-output records remain unchanged. Latest-finish invalidation, exact business-Session selection, historical versus current evidence, snapshot fencing, policy evaluation, and output privacy/bounds retain their existing contracts. The Work Result regression checks typed evidence limits and excludes internal source metadata.
11 files changed: +163 / -267; net -104 lines.
Validation using this worktree's isolated build directory:
cargo test --locked -p webcodex --lib -- task_outputs work_result handoff closeout coding_task resource_references: 389 passed, none failed or ignored.cargo check --locked --profile dogfood -p webcodex --lib: passed with no warnings.cargo fmt --all -- --checkandgit diff --check: passed.Based independently on main
2a8dd2159; does not include or depend on #1381.