Tasks: Coord/lane actor-identity representation cluster

Mission: actor-identity-representation-01M2T0ER Branch: fix/actor-identity-representation (planning + local merge target) Spec: spec.md · Plan: plan.md

Execution note (one lane, serial)

All four WPs share source files (work_package_lifecycle.py, workflow_executor.py, tasks_move_task.py), so finalize-tasks unions them into a single lane that executes serially. They are authored as a linear dependency chain WP01 → WP02 → WP03 → WP04 so the inherent owned_files overlap is exempt from the concurrent-overlap guard (it only flags dependency-unordered pairs). Do not expect parallel lanes.

Subtask Index

IDDescriptionWPParallel
T001Red-first regression: fresh full-identity claim (once, resume, refuse, generic)WP01
T002Reconcile _actor_key/_actors_compatible to a shared tool-scoped bare-string keyWP01
T003Align workspace-create claim and workflow claim; retain model/profile/role metadataWP01
T004Representation × comparison matrix test + two-slot convergence assertionWP01
T005Verify green; ruff/mypy/format; complexity ≤15WP01
T006Red-first regression: verdict attribution (approval+rejection, resolver, human)WP02
T007Single completion-command render seam threads resolved --agent (all render sites)WP02
T008Resolve active claimed reviewer from event log when --agent omitted; keep human caseWP02
T009Verify green; gatesWP02
T010Red-first canonical e2e regression: reject → fix-mode claim → for_review (no --force), named slotsWP03
T011Rejection genuinely releases claim (no reviewer re-stamp); reconcile 3 ownership authoritiesWP03
T012Successful fix-mode claim records new implementer in the gate-read slotWP03
T013Re-verify e2e on base; file scoped upstream follow-up if reducer residual bites (C-001)WP03
T014Verify green; gatesWP03
T015Verify-first: live move-task --agent persistence on base (repro or evidence)WP04
T016Regression: move-task --agent persists acting identity into reduced slotWP04
T017Persist acting identity if reproducible; else close #3029 with evidence, no code changeWP04
T018Verify green; gatesWP04

Work Packages

WP01 — Fresh full-identity claim reconciliation (#4665)

in_progress and renders the prompt in one invocation, without self-conflict; same-identity resume is idempotent; different identity refused; generic-actor claims re-claimable.

must NOT touch the byte-identical shared projection (C-002/C-005).

  • Goal: A fresh implement --agent <tool:model:profile:role> claim moves the WP to
  • Priority: P1 (MVP-launch gating). Dependencies: none. MVP: yes.
  • Independent test: live fresh-worktree compact-identity claim end-to-end + matrix unit.
  • Subtasks: T001, T002, T003, T004, T005
  • Requirements: FR-001, FR-002, FR-003, FR-010, NFR-002, NFR-003
  • Risks: reconciling the key must NOT become a tuple/struct (breaks generic in test) and
  • Prompt: tasks/WP01-fresh-full-identity-claim.md (~200 lines)

WP02 — Reviewer verdict attribution (#4670)

git user), with evidence retained; identity-omitting completions resolve the active reviewer; genuine human approvals stay human.

regression; do not just patch report text.

  • Goal: An agent's approval/rejection verdict is attributed to the reviewing agent (not the
  • Priority: P1. Dependencies: WP01. Independent test: real claim→handoff→completion.
  • Subtasks: T006, T007, T008, T009
  • Requirements: FR-004, FR-005, FR-006, NFR-001, NFR-003
  • Risks: ≥5 independent render f-strings — prefer a single render seam or enumerated-site
  • Prompt: tasks/WP02-reviewer-verdict-attribution.md (~200 lines)

WP03 — Fix-mode ownership after rejection (#4673)

the implementer submits for review without --force; a different agent is still refused.

(C-001) — hedge FR-007 honestly on live re-verification.

  • Goal: After rejection + successful fix-mode claim, the WP's owner is the new implementer;
  • Priority: P1 (MVP-launch). Dependencies: WP02. Independent test: canonical e2e state.
  • Subtasks: T010, T011, T012, T013, T014
  • Requirements: FR-007, FR-008, NFR-001, NFR-003
  • Risks: three ownership authorities (C-006); the deepest reducer root may be upstream-owned
  • Prompt: tasks/WP03-fixmode-ownership.md (~230 lines)

WP04 — move-task --agent persistence (#3029, representation half)

ownership slot; verify live first — close with evidence if already fixed.

flag-drop / accept-gate-demotion alternatives and the #2993 precondition.

  • Goal: move-task --agent <identity> persists the acting identity into the reduced
  • Priority: P2. Dependencies: WP03. Independent test: live persistence check.
  • Subtasks: T015, T016, T017, T018
  • Requirements: FR-009, NFR-003
  • Risks: reported symptom partially stale — do NOT re-fix a working path; C-004 excludes the
  • Prompt: tasks/WP04-move-task-agent-persistence.md (~180 lines)

Dependencies

WP01 → WP02 → WP03 → WP04   (linear; one lane, serial)

MVP scope

WP01 alone unblocks the escalated #4665 (fresh full-identity claim). WP02–WP04 ride the same lane in order.