Skip to content

#1038 An empty first team read blocks later automatic settling when teams appear - #3

Merged
Tevin2119 merged 3 commits into
fix/mobile-board-exitfrom
delivery/1038-an-empty-first-team-read-blocks-later-au-4b7a52aea4
Oct 5, 2026
Merged

Tevin2119 merged 3 commits into
fix/mobile-board-exitfrom
delivery/1038-an-empty-first-team-read-blocks-later-au-4b7a52aea4

Conversation

@Tevin2119

Copy link
Copy Markdown
Owner

Task pingdotgg#1038, run run-4b7a52aea4. Approved by Tevin Tendai Muparadzi for commit 4799c5e, which passed its checks and the QA gate.

What was asked

Found by qa-attack (zhipu) while testing task task-9169e8495d.

Steps: In .qa/attack.component.test.tsx 'attack: an empty list that later becomes non-empty...': enter Orchestrator mode with nothing remembered, let /api/teams answer [] (the draft settles once, keeping 'development'), then let the reading refresh to [rnd, alpha]. The same holds from the store: reconcileTeam('t1', []) then reconcileTeam('t1', ['rnd']) is a no-op after the first call.
Expected: The draft settles on a team the environment offers once a non-empty list arrives.
Actual: The draft stays on 'development' (or the remembered team) and Start is blocked with 'Team development is not offered here. Choose another team.' until the person picks a team from the select. No start request is sent. Requires a re-read of /api/teams after the first empty answer (this reading has no polling; refresh comes from reconnect or the team-defaults dialog), so it is an edge of the deliberate settle-once semantics.

  • Finding: find-b411abda60, not blocking, out of scope of the task it was found on, in the code that change delivered
  • Run: run-7cc819d450
  • Candidate tested: 4270e8c
  • Evidence: /Users/tevinmuparadzi/.paperclip/polymania/runs/run-7cc819d450/evidence

Done when

  1. With nothing remembered, when /api/teams first answers [] and a later read answers [rnd, alpha], the draft's team becomes rnd without the person choosing.
  2. In the same sequence, when the later list includes development, the draft's team is development.
  3. With a remembered team that the later non-empty list does not offer, the draft settles on development if offered, else the first offered team.
  4. With a remembered team that the later non-empty list does offer, the draft keeps that team.
  5. After the draft has settled on a non-empty list, Start is not blocked by 'Team … is not offered here. Choose another team.'
  6. While the team list is loaded and empty, the control still shows 'No teams are available to choose from.'
  7. From the store, reconcileTeam('t1', []) followed by reconcileTeam('t1', ['rnd']) leaves the draft on team rnd.
  8. A team the person chose from the select while the list was empty is not replaced when a non-empty list arrives.
  9. A draft that already has an engine thread keeps its team when a non-empty list arrives after an empty one.
  10. Once the draft has settled on a non-empty list, a later change to the list does not change the draft's team again.
  11. A focused test covers the empty-then-non-empty sequence and passes.

Opened by the delivery engine after a person's approval. Merging is a separate step.

delivery engine added 3 commits October 4, 2026 21:17
…not offered

Fixed Orchestrator fallback to use offered teams and added loaded-list availability guards, visible messages, and regression tests.

Task task-9169e8495d, revision 2, run run-7cc819d450.
…not offered

Repaired the typecheck blocker by removing duplicate defaults from the picker test render helper. Retained the existing Orchestrator fallback implementation.

Task task-9169e8495d, revision 2, run run-7cc819d450.
…ppear

reconcileTeam now leaves an awaiting draft without an engine thread untouched (same state object) on an empty team list, so it settles on the first non-empty list: current team if offered, else development, else the first team. Engine-backed awaiting drafts still settle immediately on an empty list, and chooseTeam and settle-once are unchanged. In the controls, 'No teams are available to choose from.' now shows whenever the list is loaded and empty and takes precedence over 'Teams are still loading.' in blocked, onSave and the Save tooltip; the unavailable-team message stays gated on settlement. Tests encoding the old behaviour were rewritten and store and component tests for the empty-then-non-empty sequence were added.

Task task-851d1c1114, revision 2, run run-4b7a52aea4.
@Tevin2119
Tevin2119 merged commit c1b95db into fix/mobile-board-exit Oct 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant