Bladeren bron

r1: parser-unification pin — the completion-accept refusal and the push chips must name the same repo-qualified unpushed row (one GoalService.parse_goal_branches feeding both surfaces).

clanker 1 maand geleden
bovenliggende
commit
6be8c5e830
1 gewijzigde bestanden met toevoegingen van 11 en 2 verwijderingen
  1. 11 2
      test/web_stack_test.py

+ 11 - 2
test/web_stack_test.py

@@ -5946,10 +5946,19 @@ def bundle_goals(ctx):
     # Plan 15 C4: the completion-accept hard gate — the live probe
     # flags still report repob's branch unpushed, so the operator's
     # accept REFUSES with origin behind.
-    act(auth, state["completion_pending_block"]["answer_action"],
-        {"answer": "Review approved. Continue with the task."})
+    refusal = action_notify(act(auth, state["completion_pending_block"]["answer_action"],
+                                {"answer": "Review approved. Continue with the task."}))
     check(goal_state(goal1)["status"] == "completion_review",
           "the accept REFUSES while origin is behind (hard gate, live flags)")
+    # One parser, one label: the gate's refusal names the SAME repo-
+    # qualified unpushed row the chips render — both surfaces read
+    # GoalService.parse_goal_branches (the gate-vs-chips divergence is
+    # structurally gone).
+    branches = {(b["branch"], b["pushed"]) for b in goal_state(goal1)["push_branches"]}
+    check("repob: goal/flange" in (refusal or "")
+          and ("repob: goal/flange", False) in branches
+          and ("repoa: goal/flange", True) in branches,
+          "the refusal and the chips read ONE parser (same labels, same flags)")
     # Push the branch daemon-side and probe again — the flags flip
     # live (no goal-row write), and the accept goes through.
     fake.status_extra = {"goal_branches": [