Context
PR #477 (issue #401) cycle-10 introduced blocking teachback semantics: teammates MUST halt after submitting their teachback and wait for the lead's teachback_approved metadata write before beginning any implementation work.
Problem
During the correctly-halted state (task in_progress, produced list empty, teammate waiting for approval), the following hooks fire and nag:
handoff_gate.py — complains about missing handoff content
teammate_completion_gate.py — complains about incomplete completion
Both hooks are correct under the pre-cycle-10 model (empty produced = something went wrong). Under cycle-10 semantics, empty produced while awaiting_approval is the correct halted state, not a failure.
Observed
During PR #477 cycle-10 dogfooding (2026-04-20), cycle9-fixer correctly halted after submitting teachback and waiting for lead metadata approval. Both hooks fired repeatedly. Teammate correctly honored SACROSANCT Completion Integrity (refused to fabricate completion) and preserved the honest halted state. But the hook noise was significant during the approval wait.
Proposal
Both hooks should short-circuit (no nagging) when the task is in a teachback-awaiting-approval state. Detection signals:
- Task has
metadata.teachback_submit written by the teammate
- Task does NOT have
metadata.teachback_approved from the lead yet
- Task
in_progress, produced may be empty
When all three hold, the teammate is correctly halted per cycle-10's work-start-gate semantics. Hooks should recognize this as a valid wait-state and emit no reminder.
Non-goals
- Do NOT suppress nagging after
teachback_approved is written — after approval, normal hook semantics resume.
- Do NOT suppress nagging on teammates without
teachback_submit metadata — those are just slow or confused teammates, still need nagging.
Background
Priority: LOW. Can wait until after Phase 2 flip (issue #481). But without it, cycle-10's blocking semantics and the existing hook nag interact noisily.
Context
PR #477 (issue #401) cycle-10 introduced blocking teachback semantics: teammates MUST halt after submitting their teachback and wait for the lead's
teachback_approvedmetadata write before beginning any implementation work.Problem
During the correctly-halted state (task
in_progress,producedlist empty, teammate waiting for approval), the following hooks fire and nag:handoff_gate.py— complains about missing handoff contentteammate_completion_gate.py— complains about incomplete completionBoth hooks are correct under the pre-cycle-10 model (empty
produced= something went wrong). Under cycle-10 semantics, emptyproducedwhile awaiting_approval is the correct halted state, not a failure.Observed
During PR #477 cycle-10 dogfooding (2026-04-20), cycle9-fixer correctly halted after submitting teachback and waiting for lead metadata approval. Both hooks fired repeatedly. Teammate correctly honored SACROSANCT Completion Integrity (refused to fabricate completion) and preserved the honest halted state. But the hook noise was significant during the approval wait.
Proposal
Both hooks should short-circuit (no nagging) when the task is in a teachback-awaiting-approval state. Detection signals:
metadata.teachback_submitwritten by the teammatemetadata.teachback_approvedfrom the lead yetin_progress,producedmay be emptyWhen all three hold, the teammate is correctly halted per cycle-10's work-start-gate semantics. Hooks should recognize this as a valid wait-state and emit no reminder.
Non-goals
teachback_approvedis written — after approval, normal hook semantics resume.teachback_submitmetadata — those are just slow or confused teammates, still need nagging.Background
TeammateIdlemight be the right hook to carry the state-aware suppression, since it's the one that currently nags idle teammates.Priority: LOW. Can wait until after Phase 2 flip (issue #481). But without it, cycle-10's blocking semantics and the existing hook nag interact noisily.