Skip to content

fix(prompts): 3b burn-down leaves reopened items wearing both roles, and never consumes a fired trigger #1613

Description

@kyle-sexton

Two valid findings landed on #1594 from the reviewer's fifth pass, seconds after it squash-merged as c4e33461. Both are in prompts/loops/loop-lane-prompts.md, in the 3b parked-decision burn-down block and its profile render (the block appears twice — fix both).

1. A reopened item wearing both canonical roles (regression from #1594)

#1594's parking invariant — "Nothing this session opens or parks stays role-less" — has the burn-down apply the resolved human-gated role when it reopens a closed trigger carrier. Closing an item does not clear its labels, so a carrier that was closed while autonomous-eligible reopens wearing both canonical roles.

plugins/work-items/skills/work-loop/SKILL.md:240-245 treats that state as a contradiction, not a tolerable overlap: "apply the human-gated role label and remove the autonomous-eligible one in the same edit … never flip without clearing, since an item wearing both roles is a contradiction every consumer reads differently." A Re-park outcome then preserves the contradiction indefinitely.

Fix: the reopen/create bullet of the parking invariant should remove the resolved autonomous-eligible role in the same edit that applies the human-gated one — the same shape the Flip outcome already uses in the other direction.

This one is a regression introduced by #1594's own round-4 fix, so it is the higher priority of the two.

2. A fired trigger is never consumed

Population 3 reopens a closed item whose trigger has fired, but nothing marks the trigger consumed and the text stays in comment history. If the operator then chooses Decide and close or Re-home, the next burn-down inside the 90-day closed-item lookback sees the same permanently-true trigger ("after …") and reopens the source item again — and a repeated Re-home can re-file the same item cross-repository each pass.

#1594 fixed the analogous problem for open rows (an unfired trigger is now report-only), but a fired trigger on a closed item has no consumption record.

Fix options, for whoever picks this up:

  • consider only the latest unresolved trigger on an item, ignoring superseded ones; or
  • record consumption when the resulting disposition completes — a marker comment the sweep reads, which the burn-down can write since it already writes the disposition comment.

The second composes with the disclaimer contract already inlined in the block; the first needs no new state but relies on trigger ordering being meaningful.

Context

#1594's review ran five rounds, each on a new head commit. Rounds 1–4 (13 threads) were evaluated, fixed and resolved before merge; this round arrived post-merge. Related out-of-scope finding from the same review: #1612.

Metadata

Metadata

Assignees

No one assigned

    Labels

    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.priority: mediumReal value, no hard deadline; normal backlog flow.status: readyTriaged, unblocked, and fully specified; eligible to pick up.

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions