Outcome
An issue shows a running attempt live — state, elapsed time, and a cancel control for a viewer with authority — and stops narrating the same facts as Markdown comments.
This is stage 3 of #10. The design is docs/2026-08-23-issue-work-receipt-linkage-design.md, section 6.
Current behavior
Stage 1 renders every attempt as derived timeline events read from forge_assignments. The same facts are also written as Markdown comments by Assignments.report_claim/1, report/1, and report_release/1 (lib/openagents/forge/assignments.ex:371, :338, :356), so a worked issue now says everything twice.
The page also does not update while an attempt runs. IssueShowLive subscribes to repository issue changes, not to the attempt.
Work
- Subscribe the issue page to the attempt's lifecycle so a running attempt updates its state and elapsed time without a reload.
- Add a cancel control for a viewer with write authority, reaching the existing terminal path rather than a new one.
- Stop writing the three narration comments now that the derived events carry the same facts. Existing comments stay; only new ones stop. This is a behavior change on the write path, so it needs its own test that the claim, result, and release no longer create comments.
- Keep the page honest about an attempt that started and never finished: it renders as started, with no invented terminal event.
Acceptance criteria
- A running attempt updates on the issue page without a reload, and a finished attempt lands its terminal event the same way.
- A viewer with write authority can cancel a live attempt from the issue; a viewer without it cannot.
- Starting and finishing an attempt no longer creates issue comments, and issues that already carry them still render correctly.
- No private log, prompt, or credential reaches the page.
Verification
LiveView tests for the live update, the cancel control and its refusal, and the mixed old-comment and new-event rendering; context tests that the report paths no longer write comments; mix precommit.
Dependencies
Stage 3 of #10. Builds on stage 1 and pairs with #145. Track E, E3.
Outcome
An issue shows a running attempt live — state, elapsed time, and a cancel control for a viewer with authority — and stops narrating the same facts as Markdown comments.
This is stage 3 of
#10. The design isdocs/2026-08-23-issue-work-receipt-linkage-design.md, section 6.Current behavior
Stage 1 renders every attempt as derived timeline events read from
forge_assignments. The same facts are also written as Markdown comments byAssignments.report_claim/1,report/1, andreport_release/1(lib/openagents/forge/assignments.ex:371,:338,:356), so a worked issue now says everything twice.The page also does not update while an attempt runs.
IssueShowLivesubscribes to repository issue changes, not to the attempt.Work
Acceptance criteria
Verification
LiveView tests for the live update, the cancel control and its refusal, and the mixed old-comment and new-event rendering; context tests that the report paths no longer write comments;
mix precommit.Dependencies
Stage 3 of
#10. Builds on stage 1 and pairs with#145. Track E, E3.