fix(gateway): submit_up opens cell PR before the pm-review transition

submit_up composed submit_pm_review (atomic) then create_pr (side
effect), but VerbRunner.run_intent runs all composes before any side
effect. submit_pm_review rejects without a PR (returns None), then
create_pr deref'd the None task -> 'NoneType has no attribute
branch_name', wedging cell-PM bubble-up in a respawn loop.

Add IntentSpec.pre_side_effects, run before composes. submit_up now
opens the cell->root PR first (persisting pr_number), so submit_pm_review
re-fetches and passes its pr_created gate. Mirrors the dev open_pr ->
i_am_done split. Latent since the lifecycle spec (207aaec); first run to
reach cell-PM bubble-up exposed it.
This commit is contained in:
Renn F
2026-05-23 02:32:41 +02:00
parent 3742483e1c
commit c78395f9fc
6 changed files with 101 additions and 5 deletions
+1 -1
View File
@@ -173,7 +173,7 @@ Cell PM bubbles a finished cell-scope task up to Main PM.
**Composes:** submit_pm_review
**Side effects:** create_pr
**Pre side effects:** create_pr
## triage