Recover failed CI checks from the mobile pull workspace #1354

Closed
opened 2026-08-24 14:35:18 +00:00 by timmy · 0 comments
Owner

Problem

The mobile authored-pull flow shows failed checks but forces authors out to Gitea to diagnose and retry them. This interrupts the core publish → review → merge journey.

Vertical slice

For a failed Gitea Actions check, expose a bounded failure excerpt and a confirmed retry action inside the pull workspace, then refresh the exact pull head until readiness changes. Unsupported checks retain the truthful Open job fallback.

Acceptance tests

  • A failed Actions check can load a bounded plain-text failure excerpt without leaking authorization headers or unbounded logs.
  • Retry requires the expected pull head SHA; a changed head returns 409 and no retry occurs.
  • One confirmed retry produces one Gitea retry request and returns a truthful queued response.
  • Unsupported/external checks remain read-only with Open job in Gitea.
  • At 320×568 and 390×844, details and retry controls remain usable without page-level horizontal overflow.
  • Focus returns to the originating check when details close; status changes are announced.
  • Existing pull authorization, CSRF, no-store, timeout, and repository allowlist boundaries remain enforced.

Evidence / non-duplication

frontend/review-sheet.js currently renders status plus Open job only; frontend/pull-sheet.js and src/main.py expose checks read-only. Historical issue titles include #517 (display checks) and #521 (refresh checks), but none diagnose or retry failed CI. Full title/history review found no equivalent rerun/log recovery behavior.

## Problem The mobile authored-pull flow shows failed checks but forces authors out to Gitea to diagnose and retry them. This interrupts the core publish → review → merge journey. ## Vertical slice For a failed Gitea Actions check, expose a bounded failure excerpt and a confirmed retry action inside the pull workspace, then refresh the exact pull head until readiness changes. Unsupported checks retain the truthful Open job fallback. ## Acceptance tests - A failed Actions check can load a bounded plain-text failure excerpt without leaking authorization headers or unbounded logs. - Retry requires the expected pull head SHA; a changed head returns 409 and no retry occurs. - One confirmed retry produces one Gitea retry request and returns a truthful queued response. - Unsupported/external checks remain read-only with Open job in Gitea. - At 320×568 and 390×844, details and retry controls remain usable without page-level horizontal overflow. - Focus returns to the originating check when details close; status changes are announced. - Existing pull authorization, CSRF, no-store, timeout, and repository allowlist boundaries remain enforced. ## Evidence / non-duplication `frontend/review-sheet.js` currently renders status plus Open job only; `frontend/pull-sheet.js` and `src/main.py` expose checks read-only. Historical issue titles include #517 (display checks) and #521 (refresh checks), but none diagnose or retry failed CI. Full title/history review found no equivalent rerun/log recovery behavior.
timmy self-assigned this 2026-08-24 14:35:18 +00:00
timmy closed this issue 2026-08-24 15:16:10 +00:00
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: stackchain/stackchain-dashboard#1354
No description provided.