You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Handoff shape: does teachback_submit content live in Task A's description (lead writes expected structure), handoff metadata (teammate writes), or both?
Approval shape: where does lead's teachback_approved 5 sub-fields live on Task A — metadata? description update? comment?
Who marks Task A completed? Teammate self-completes after submitting? Or lead completes after approving? Convention change either way.
Parallel dispatch: spawning 3 reviewers — create 6 tasks upfront (3 teachbacks + 3 primaries) or 3 teachbacks first + dispatch primaries after approvals?
Relation to existing hook layer: cycles 1-8 built mechanical enforcement in teachback_check.py + teachback_gate.py + teachback_scan.py. Does that become redundant under task-graph-native model, or stays as belt-and-suspenders?
Cycles 9 + 9b (load-bearing): structured content shape (teachback_submit 4 fields, teachback_approved 5 fields), universal-at-every-dispatch imperative, hard-rule MUST tone, Pask's CT framing. These don't depend on HOW the teammate waits — only on WHAT content gets exchanged. Proposal: cherry-pick to a clean branch.
Mechanical scanner/classifier (earlier cycles): stays useful as fallback/belt-and-suspenders even under new design.
Cycle-10 cooperative-halt mechanism: rewritten or replaced. The protocol-doc reversal (Proceeding-unless-corrected → Halting-until-approved) is partially right semantically but specifies a wait mechanism that doesn't work in practice.
HIGH — blocks Phase-2 activation of #401 (issue #481) since the underlying wait mechanism doesn't work. Should not re-enforce cycle-10's cooperative halt.
Context
Surfaced during PR #477 round-8 dogfooding session 2026-04-20. PR #477 shipped cycles 9 + 9b + 10 for teachback gate. Cycle-10 introduced cooperative-halt blocking semantics: teammate sends teachback_submit, then waits idle for lead's teachback_approved before starting work.
Problem with cooperative-halt model (observed empirically)
Cooperative halt is not well-supported by the platform. Multiple teammates got stuck in idle loops during the session:
Root cause: TeammateIdle hook fires periodically (intentional keep-alive), teammate wakes, checks state, sees "still waiting," emits a no-op, re-enters idle. Livelock driven by hook noise × passive-wait protocol × no mechanical wake-signal distinguishing "approval arrived" from "hook false-positive."
Additional gaps:
metadatafield → teammates can't verify approval lives where docs say it liveshandoff_gate.py+teammate_completion_gate.pyhooks nagin_progresstasks with emptyproduced— but halted-awaiting-approval is the correct state (issue handoff_gate + teammate_completion_gate should learn teachback_pending/awaiting_approval state #486 captures this)Proposed redesign: teachback-as-task
Replace cooperative halt with two-task dispatch pattern using PACT's native
blockedBymechanism:Flow:
blockedByedge mechanically prevents teammate from starting B until A is resolved — no custom wait-state, no idle-hook loopWhy this is architecturally better
blockedByalready gates PACT phases. We're reusing a mechanism, not inventing one.Open design questions
teachback_check.py+teachback_gate.py+teachback_scan.py. Does that become redundant under task-graph-native model, or stays as belt-and-suspenders?What survives from PR #477
teachback_submit4 fields,teachback_approved5 fields), universal-at-every-dispatch imperative, hard-rule MUST tone, Pask's CT framing. These don't depend on HOW the teammate waits — only on WHAT content gets exchanged. Proposal: cherry-pick to a clean branch.What this redesign replaces
cycle-10cooperative-halt semantics in pact-ct-teachback.md, pact-protocols.md, pact-agent-teams SKILL, pact-teachback SKILL, orchestration SKILL, peer-review.md#92(cycle-11 immediate-idle) — not needed if there's no passive-wait to minimize#93(cycle-12 reader-path) — partially obsolete; approval content goes on the task itself#486(hook state-awareness for awaiting_approval) — not needed; task state IS the stateApproach
Fresh planning session (likely
/PACT:plan-mode) covering:teachback_gate.pycooperative-halt logic or repurpose)Priority
HIGH — blocks Phase-2 activation of #401 (issue #481) since the underlying wait mechanism doesn't work. Should not re-enforce cycle-10's cooperative halt.
Related