@nanobpm/nano-workforce 0.44.1 → 0.46.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/prompts/plan.md CHANGED
@@ -36,6 +36,17 @@ Before decomposing anything yourself, check whether the issue is an **epic that
36
36
  has already been split into sub-issues**. If it has, **do not invent a new
37
37
  breakdown** — adopt the existing one, one task per sub-issue. This keeps the
38
38
  fan-out faithful to the human's plan and links each PR back to its sub-issue.
39
+ On the first pass this means adopting the open sub-issue set faithfully. On a
40
+ rejected review, however, still keep the task set 1:1 with those open
41
+ sub-issues while you revise each task's `prompt` and `dependsOn` to satisfy the
42
+ findings. You MAY and SHOULD add a contract/seam deliverable to one existing
43
+ sub-issue task's prompt (for example, a shared-surface registration seam), point
44
+ sibling tasks at it, and create wave-0 ordering via an existing sub-issue — but
45
+ never add, merge, re-split, or remove tasks, and never edit the GitHub issues. If
46
+ a finding genuinely requires changing the sub-issue boundary (splitting,
47
+ merging, adding, or removing a sub-issue) and cannot be expressed as a
48
+ `prompt`/`dependsOn` revision, say that it requires a human decomposition change,
49
+ then re-emit the best in-boundary plan you can.
39
50
 
40
51
  Detect existing children two ways (try both; union the results, de-duplicated):
41
52
 
@@ -50,11 +50,21 @@ Because several agents may run on the same host at once:
50
50
 
51
51
  1. **Read the latest review.** Fetch the newest Copilot review + its inline
52
52
  comments on the PR (`gh pr view`, `gh api .../pulls/{n}/reviews`, `.../comments`).
53
+ Also read Copilot's **suppressed / low-confidence** advisories — the collapsed
54
+ "low confidence" list Copilot folds into the **review body** (`.../reviews`
55
+ `body`). These are NOT in the default inline-comment API set, so a plain
56
+ `.../comments` read misses them; scan the review body for them explicitly.
53
57
  If `answer` is present, treat it as the human's decision on the escalation you
54
58
  raised last round and act on it first.
55
59
  2. **Triage each comment** into: *fix* (correct, worth doing), *nitpick* (apply
56
60
  silently), *needs human input* (design/product/tradeoff you can't decide), or
57
61
  *push back* (wrong / false positive — reply with evidence, make no change).
62
+ Triage the suppressed / low-confidence advisories the **same** way — but do not
63
+ treat "suppressed" as either automatically actionable or automatically ignorable:
64
+ if one is a **cheap, correct** robustness/correctness win, just do it (a
65
+ *nitpick*); otherwise **decline it explicitly with a one-line rationale in your
66
+ `summary`** (e.g. "declined suppressed advisory X — input already validated
67
+ upstream at Y"). Never silently drop one.
58
68
  3. **Act.** Make the code changes for all fixes + nitpicks in your workspace (`cwd`)
59
69
  in one coherent, signed-off commit (`git commit -s`). Run the repo's
60
70
  build/test/lint locally before pushing. Push to the PR's head branch (the branch
@@ -107,6 +117,9 @@ Consider the PR **converged** when the latest review has no actionable comment:
107
117
  comments") and there are no new inline comments, **or**
108
118
  - every new comment is a nitpick you already handled or intentionally declined,
109
119
  **or**
120
+ - the only remaining items are suppressed / low-confidence advisories you have
121
+ triaged and either applied or declined-with-rationale (a suppressed advisory
122
+ you have recorded a decision on does **not** block convergence), **or**
110
123
  - Copilot is looping — reiterating a point you already addressed or pushed back
111
124
  on (two rounds of the same substantive point = converged).
112
125
 
@@ -151,9 +151,19 @@ curl -sS -X POST __BASE__/hooks/feature-answer \
151
151
 
152
152
  If `NANO_PR_WEBHOOK_SECRET` is set on the deployment, add `-H "x-hook-secret: <secret>"`.
153
153
 
154
- Guidance for the human you assist: read the escalation `question` first (it is the
155
- exact blocker text the agent surfaced), decide the smallest unblocking answer, and
156
- answer it precisely the answer becomes the agent's next-round context.
154
+ **Answer a plan-review escalation** raised when the adversarial plan review cannot
155
+ converge within its round budget. Use `revise` to send guidance back to the planner
156
+ with a fresh review budget, or `proceed` to explicitly approve the current plan as-is:
157
+
158
+ ```bash
159
+ curl -sS -X POST __BASE__/hooks/plan-answer \
160
+ -H 'content-type: application/json' \
161
+ -d '{ "plan": "owner/repo#123", "directive": "revise", "note": "Keep the sub-issues 1:1; make issue-7 the seam and point siblings at it." }'
162
+ ```
163
+
164
+ Guidance for the human you assist: read the escalation `question` or plan-review
165
+ `findings` first, decide the smallest unblocking answer, and answer it precisely —
166
+ the answer becomes the agent's next-round context.
157
167
 
158
168
  ---
159
169
 
@@ -5,6 +5,11 @@
5
5
  <zeebe:subscription correlationKey="=planKey + &#34;:&#34; + task.id" />
6
6
  </bpmn:extensionElements>
7
7
  </bpmn:message>
8
+ <bpmn:message id="Message_planEscalationAnswered" name="plan-escalation-answered">
9
+ <bpmn:extensionElements>
10
+ <zeebe:subscription correlationKey="=planKey" />
11
+ </bpmn:extensionElements>
12
+ </bpmn:message>
8
13
  <bpmn:message id="Message_waveMerged" name="wave-merged">
9
14
  <bpmn:extensionElements>
10
15
  <zeebe:subscription correlationKey="=planKey" />
@@ -26,6 +31,7 @@
26
31
  </bpmn:extensionElements>
27
32
  <bpmn:incoming>f_toPlan</bpmn:incoming>
28
33
  <bpmn:incoming>f_plan_revise</bpmn:incoming>
34
+ <bpmn:incoming>f_plan_answer_revise</bpmn:incoming>
29
35
  <bpmn:outgoing>f_toRecordPlan</bpmn:outgoing>
30
36
  </bpmn:serviceTask>
31
37
  <bpmn:serviceTask id="record-plan" name="Record plan &#38; levelize">
@@ -55,13 +61,32 @@
55
61
  <bpmn:exclusiveGateway id="gw-plan-review" name="plan approved?" default="f_plan_revise">
56
62
  <bpmn:incoming>f_toGwPlanReview</bpmn:incoming>
57
63
  <bpmn:outgoing>f_plan_proceed</bpmn:outgoing>
64
+ <bpmn:outgoing>f_plan_escalate</bpmn:outgoing>
58
65
  <bpmn:outgoing>f_plan_revise</bpmn:outgoing>
59
66
  </bpmn:exclusiveGateway>
67
+ <bpmn:serviceTask id="persist-plan-escalation" name="Record plan escalation">
68
+ <bpmn:extensionElements>
69
+ <zeebe:taskDefinition type="pr.persist-plan-escalation" />
70
+ </bpmn:extensionElements>
71
+ <bpmn:incoming>f_plan_escalate</bpmn:incoming>
72
+ <bpmn:outgoing>f_toWaitPlanAnswer</bpmn:outgoing>
73
+ </bpmn:serviceTask>
74
+ <bpmn:intermediateCatchEvent id="wait-plan-answer" name="Wait: plan answer">
75
+ <bpmn:incoming>f_toWaitPlanAnswer</bpmn:incoming>
76
+ <bpmn:outgoing>f_toGwPlanAnswer</bpmn:outgoing>
77
+ <bpmn:messageEventDefinition id="med_planAnswered" messageRef="Message_planEscalationAnswered" />
78
+ </bpmn:intermediateCatchEvent>
79
+ <bpmn:exclusiveGateway id="gw-plan-answer" name="proceed override?" default="f_plan_answer_revise">
80
+ <bpmn:incoming>f_toGwPlanAnswer</bpmn:incoming>
81
+ <bpmn:outgoing>f_plan_answer_proceed</bpmn:outgoing>
82
+ <bpmn:outgoing>f_plan_answer_revise</bpmn:outgoing>
83
+ </bpmn:exclusiveGateway>
60
84
  <bpmn:serviceTask id="select-wave" name="Select wave">
61
85
  <bpmn:extensionElements>
62
86
  <zeebe:taskDefinition type="pr.select-wave" />
63
87
  </bpmn:extensionElements>
64
88
  <bpmn:incoming>f_plan_proceed</bpmn:incoming>
89
+ <bpmn:incoming>f_plan_answer_proceed</bpmn:incoming>
65
90
  <bpmn:incoming>f_waveMerged</bpmn:incoming>
66
91
  <bpmn:outgoing>f_toImplement</bpmn:outgoing>
67
92
  </bpmn:serviceTask>
@@ -93,7 +118,7 @@
93
118
  <zeebe:header key="io.nanobpm.agentTask.task.prompt" value="{{feature}}" />
94
119
  </zeebe:taskHeaders>
95
120
  <zeebe:ioMapping>
96
- <zeebe:input source="=&#34;&#10;&#10;---&#10;&#10;&#34; + task.prompt + (if (blackboardBrief = null) then &#34;&#34; else blackboardBrief)" target="appendPrompt" />
121
+ <zeebe:input source="=&#34;&#10;&#10;---&#10;&#10;&#34; + task.prompt + (if (blackboardBrief = null) then &#34;&#34; else blackboardBrief) + (if (baseBranchBrief = null) then &#34;&#34; else baseBranchBrief)" target="appendPrompt" />
97
122
  </zeebe:ioMapping>
98
123
  </bpmn:extensionElements>
99
124
  <bpmn:incoming>w_toImpl</bpmn:incoming>
@@ -218,7 +243,16 @@
218
243
  <bpmn:sequenceFlow id="f_plan_proceed" name="approved" sourceRef="gw-plan-review" targetRef="select-wave">
219
244
  <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=planApproved</bpmn:conditionExpression>
220
245
  </bpmn:sequenceFlow>
246
+ <bpmn:sequenceFlow id="f_plan_escalate" name="escalated" sourceRef="gw-plan-review" targetRef="persist-plan-escalation">
247
+ <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=planEscalated</bpmn:conditionExpression>
248
+ </bpmn:sequenceFlow>
221
249
  <bpmn:sequenceFlow id="f_plan_revise" name="revise" sourceRef="gw-plan-review" targetRef="plan" />
250
+ <bpmn:sequenceFlow id="f_toWaitPlanAnswer" sourceRef="persist-plan-escalation" targetRef="wait-plan-answer" />
251
+ <bpmn:sequenceFlow id="f_toGwPlanAnswer" sourceRef="wait-plan-answer" targetRef="gw-plan-answer" />
252
+ <bpmn:sequenceFlow id="f_plan_answer_proceed" name="proceed" sourceRef="gw-plan-answer" targetRef="select-wave">
253
+ <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=planEscalationDirective = "proceed"</bpmn:conditionExpression>
254
+ </bpmn:sequenceFlow>
255
+ <bpmn:sequenceFlow id="f_plan_answer_revise" name="revise" sourceRef="gw-plan-answer" targetRef="plan" />
222
256
  <bpmn:sequenceFlow id="f_toImplement" sourceRef="select-wave" targetRef="implement" />
223
257
  <bpmn:sequenceFlow id="f_toRecordWave" sourceRef="implement" targetRef="record-wave" />
224
258
  <bpmn:sequenceFlow id="f_toTrialNeeded" sourceRef="record-wave" targetRef="gw-trial-needed" />
@@ -268,70 +302,85 @@
268
302
  <bpmndi:BPMNShape id="BPMNShape_gw-plan-review" bpmnElement="gw-plan-review" isMarkerVisible="true">
269
303
  <dc:Bounds x="1016" y="215" width="50" height="50" />
270
304
  <bpmndi:BPMNLabel>
271
- <dc:Bounds x="1008" y="270" width="67" height="28" />
305
+ <dc:Bounds x="968" y="270" width="67" height="28" />
306
+ </bpmndi:BPMNLabel>
307
+ </bpmndi:BPMNShape>
308
+ <bpmndi:BPMNShape id="BPMNShape_persist-plan-escalation" bpmnElement="persist-plan-escalation">
309
+ <dc:Bounds x="1166" y="360" width="100" height="80" />
310
+ </bpmndi:BPMNShape>
311
+ <bpmndi:BPMNShape id="BPMNShape_wait-plan-answer" bpmnElement="wait-plan-answer">
312
+ <dc:Bounds x="1366" y="382" width="36" height="36" />
313
+ <bpmndi:BPMNLabel>
314
+ <dc:Bounds x="1347" y="423" width="75" height="28" />
315
+ </bpmndi:BPMNLabel>
316
+ </bpmndi:BPMNShape>
317
+ <bpmndi:BPMNShape id="BPMNShape_gw-plan-answer" bpmnElement="gw-plan-answer" isMarkerVisible="true">
318
+ <dc:Bounds x="1502" y="375" width="50" height="50" />
319
+ <bpmndi:BPMNLabel>
320
+ <dc:Bounds x="1557" y="386" width="67" height="28" />
272
321
  </bpmndi:BPMNLabel>
273
322
  </bpmndi:BPMNShape>
274
323
  <bpmndi:BPMNShape id="BPMNShape_select-wave" bpmnElement="select-wave">
275
- <dc:Bounds x="1166" y="200" width="100" height="80" />
324
+ <dc:Bounds x="1652" y="200" width="100" height="80" />
276
325
  </bpmndi:BPMNShape>
277
326
  <bpmndi:BPMNShape id="BPMNShape_implement" bpmnElement="implement" isExpanded="true">
278
- <dc:Bounds x="1366" y="80" width="802" height="320" />
327
+ <dc:Bounds x="1852" y="80" width="802" height="320" />
279
328
  </bpmndi:BPMNShape>
280
329
  <bpmndi:BPMNShape id="BPMNShape_record-wave" bpmnElement="record-wave">
281
- <dc:Bounds x="2268" y="200" width="100" height="80" />
330
+ <dc:Bounds x="2754" y="200" width="100" height="80" />
282
331
  </bpmndi:BPMNShape>
283
332
  <bpmndi:BPMNShape id="BPMNShape_gw-trial-needed" bpmnElement="gw-trial-needed" isMarkerVisible="true">
284
- <dc:Bounds x="2468" y="215" width="50" height="50" />
333
+ <dc:Bounds x="2954" y="215" width="50" height="50" />
285
334
  <bpmndi:BPMNLabel>
286
- <dc:Bounds x="2449" y="196" width="88" height="14" />
335
+ <dc:Bounds x="2935" y="196" width="88" height="14" />
287
336
  </bpmndi:BPMNLabel>
288
337
  </bpmndi:BPMNShape>
289
338
  <bpmndi:BPMNShape id="BPMNShape_trial-merge" bpmnElement="trial-merge">
290
- <dc:Bounds x="2618" y="360" width="100" height="80" />
339
+ <dc:Bounds x="3104" y="360" width="100" height="80" />
291
340
  </bpmndi:BPMNShape>
292
341
  <bpmndi:BPMNShape id="BPMNShape_record-trial-merge" bpmnElement="record-trial-merge">
293
- <dc:Bounds x="2818" y="360" width="100" height="80" />
342
+ <dc:Bounds x="3304" y="360" width="100" height="80" />
294
343
  </bpmndi:BPMNShape>
295
344
  <bpmndi:BPMNShape id="BPMNShape_gw-trial" bpmnElement="gw-trial" isMarkerVisible="true">
296
- <dc:Bounds x="3018" y="375" width="50" height="50" />
345
+ <dc:Bounds x="3504" y="375" width="50" height="50" />
297
346
  <bpmndi:BPMNLabel>
298
- <dc:Bounds x="3073" y="393" width="71" height="14" />
347
+ <dc:Bounds x="3559" y="393" width="71" height="14" />
299
348
  </bpmndi:BPMNLabel>
300
349
  </bpmndi:BPMNShape>
301
350
  <bpmndi:BPMNShape id="BPMNShape_persist-trial-escalation" bpmnElement="persist-trial-escalation">
302
- <dc:Bounds x="3168" y="520" width="100" height="80" />
351
+ <dc:Bounds x="3654" y="520" width="100" height="80" />
303
352
  </bpmndi:BPMNShape>
304
353
  <bpmndi:BPMNShape id="BPMNShape_wait-trial-answer" bpmnElement="wait-trial-answer">
305
- <dc:Bounds x="3368" y="542" width="36" height="36" />
354
+ <dc:Bounds x="3854" y="542" width="36" height="36" />
306
355
  <bpmndi:BPMNLabel>
307
- <dc:Bounds x="3345" y="583" width="82" height="28" />
356
+ <dc:Bounds x="3831" y="583" width="82" height="28" />
308
357
  </bpmndi:BPMNLabel>
309
358
  </bpmndi:BPMNShape>
310
359
  <bpmndi:BPMNShape id="BPMNShape_gw-trial-answer" bpmnElement="gw-trial-answer" isMarkerVisible="true">
311
- <dc:Bounds x="3504" y="535" width="50" height="50" />
360
+ <dc:Bounds x="3990" y="535" width="50" height="50" />
312
361
  <bpmndi:BPMNLabel>
313
- <dc:Bounds x="3559" y="546" width="67" height="28" />
362
+ <dc:Bounds x="4045" y="546" width="67" height="28" />
314
363
  </bpmndi:BPMNLabel>
315
364
  </bpmndi:BPMNShape>
316
365
  <bpmndi:BPMNShape id="BPMNShape_gw-more" bpmnElement="gw-more" isMarkerVisible="true">
317
- <dc:Bounds x="3654" y="215" width="50" height="50" />
366
+ <dc:Bounds x="4140" y="215" width="50" height="50" />
318
367
  <bpmndi:BPMNLabel>
319
- <dc:Bounds x="3637" y="196" width="84" height="14" />
368
+ <dc:Bounds x="4123" y="196" width="84" height="14" />
320
369
  </bpmndi:BPMNLabel>
321
370
  </bpmndi:BPMNShape>
322
371
  <bpmndi:BPMNShape id="BPMNShape_wait-wave-merged" bpmnElement="wait-wave-merged">
323
- <dc:Bounds x="3836" y="382" width="36" height="36" />
372
+ <dc:Bounds x="4322" y="382" width="36" height="36" />
324
373
  <bpmndi:BPMNLabel>
325
- <dc:Bounds x="3815" y="349" width="78" height="28" />
374
+ <dc:Bounds x="4301" y="349" width="78" height="28" />
326
375
  </bpmndi:BPMNLabel>
327
376
  </bpmndi:BPMNShape>
328
377
  <bpmndi:BPMNShape id="BPMNShape_record-results" bpmnElement="record-results">
329
- <dc:Bounds x="3804" y="200" width="100" height="80" />
378
+ <dc:Bounds x="4290" y="200" width="100" height="80" />
330
379
  </bpmndi:BPMNShape>
331
380
  <bpmndi:BPMNShape id="BPMNShape_End" bpmnElement="End">
332
- <dc:Bounds x="4004" y="222" width="36" height="36" />
381
+ <dc:Bounds x="4490" y="222" width="36" height="36" />
333
382
  <bpmndi:BPMNLabel>
334
- <dc:Bounds x="3985" y="263" width="74" height="28" />
383
+ <dc:Bounds x="4471" y="263" width="74" height="28" />
335
384
  </bpmndi:BPMNLabel>
336
385
  </bpmndi:BPMNShape>
337
386
  <bpmndi:BPMNEdge id="BPMNEdge_f_toPlan" bpmnElement="f_toPlan">
@@ -356,112 +405,145 @@
356
405
  </bpmndi:BPMNEdge>
357
406
  <bpmndi:BPMNEdge id="BPMNEdge_f_plan_proceed" bpmnElement="f_plan_proceed">
358
407
  <di:waypoint x="1066" y="240" />
359
- <di:waypoint x="1166" y="240" />
408
+ <di:waypoint x="1652" y="240" />
360
409
  <bpmndi:BPMNLabel>
361
- <dc:Bounds x="1086" y="218" width="60" height="14" />
410
+ <dc:Bounds x="1267" y="218" width="60" height="14" />
362
411
  </bpmndi:BPMNLabel>
363
412
  </bpmndi:BPMNEdge>
364
413
  <bpmndi:BPMNEdge id="BPMNEdge_f_toImplement" bpmnElement="f_toImplement">
365
- <di:waypoint x="1266" y="240" />
366
- <di:waypoint x="1366" y="240" />
414
+ <di:waypoint x="1752" y="240" />
415
+ <di:waypoint x="1852" y="240" />
367
416
  </bpmndi:BPMNEdge>
368
417
  <bpmndi:BPMNEdge id="BPMNEdge_f_toRecordWave" bpmnElement="f_toRecordWave">
369
- <di:waypoint x="2168" y="240" />
370
- <di:waypoint x="2268" y="240" />
418
+ <di:waypoint x="2654" y="240" />
419
+ <di:waypoint x="2754" y="240" />
371
420
  </bpmndi:BPMNEdge>
372
421
  <bpmndi:BPMNEdge id="BPMNEdge_f_toTrialNeeded" bpmnElement="f_toTrialNeeded">
373
- <di:waypoint x="2368" y="240" />
374
- <di:waypoint x="2468" y="240" />
422
+ <di:waypoint x="2854" y="240" />
423
+ <di:waypoint x="2954" y="240" />
375
424
  </bpmndi:BPMNEdge>
376
425
  <bpmndi:BPMNEdge id="BPMNEdge_f_skipTrialMerge" bpmnElement="f_skipTrialMerge">
377
- <di:waypoint x="2518" y="240" />
378
- <di:waypoint x="3654" y="240" />
426
+ <di:waypoint x="3004" y="240" />
427
+ <di:waypoint x="4140" y="240" />
379
428
  <bpmndi:BPMNLabel>
380
- <dc:Bounds x="2765" y="218" width="32" height="14" />
429
+ <dc:Bounds x="3251" y="218" width="32" height="14" />
381
430
  </bpmndi:BPMNLabel>
382
431
  </bpmndi:BPMNEdge>
383
432
  <bpmndi:BPMNEdge id="BPMNEdge_f_done" bpmnElement="f_done">
384
- <di:waypoint x="3704" y="240" />
385
- <di:waypoint x="3804" y="240" />
433
+ <di:waypoint x="4190" y="240" />
434
+ <di:waypoint x="4290" y="240" />
386
435
  <bpmndi:BPMNLabel>
387
- <dc:Bounds x="3748" y="218" width="32" height="14" />
436
+ <dc:Bounds x="4234" y="218" width="32" height="14" />
388
437
  </bpmndi:BPMNLabel>
389
438
  </bpmndi:BPMNEdge>
390
439
  <bpmndi:BPMNEdge id="BPMNEdge_f_toEnd" bpmnElement="f_toEnd">
391
- <di:waypoint x="3904" y="240" />
392
- <di:waypoint x="4004" y="240" />
440
+ <di:waypoint x="4390" y="240" />
441
+ <di:waypoint x="4490" y="240" />
442
+ </bpmndi:BPMNEdge>
443
+ <bpmndi:BPMNEdge id="BPMNEdge_f_plan_answer_revise" bpmnElement="f_plan_answer_revise">
444
+ <di:waypoint x="1527" y="425" />
445
+ <di:waypoint x="1527" y="460" />
446
+ <di:waypoint x="266" y="460" />
447
+ <di:waypoint x="266" y="280" />
448
+ <bpmndi:BPMNLabel>
449
+ <dc:Bounds x="874" y="438" width="46" height="14" />
450
+ </bpmndi:BPMNLabel>
393
451
  </bpmndi:BPMNEdge>
394
452
  <bpmndi:BPMNEdge id="BPMNEdge_f_toRecordTrialMerge" bpmnElement="f_toRecordTrialMerge">
395
- <di:waypoint x="2718" y="400" />
396
- <di:waypoint x="2818" y="400" />
453
+ <di:waypoint x="3204" y="400" />
454
+ <di:waypoint x="3304" y="400" />
397
455
  </bpmndi:BPMNEdge>
398
456
  <bpmndi:BPMNEdge id="BPMNEdge_f_toGwTrial" bpmnElement="f_toGwTrial">
399
- <di:waypoint x="2918" y="400" />
400
- <di:waypoint x="3018" y="400" />
457
+ <di:waypoint x="3404" y="400" />
458
+ <di:waypoint x="3504" y="400" />
401
459
  </bpmndi:BPMNEdge>
402
460
  <bpmndi:BPMNEdge id="BPMNEdge_f_trialProceed" bpmnElement="f_trialProceed">
403
- <di:waypoint x="3043" y="375" />
404
- <di:waypoint x="3043" y="240" />
405
- <di:waypoint x="3654" y="240" />
461
+ <di:waypoint x="3529" y="375" />
462
+ <di:waypoint x="3529" y="240" />
463
+ <di:waypoint x="4140" y="240" />
406
464
  <bpmndi:BPMNLabel>
407
- <dc:Bounds x="3048" y="301" width="53" height="14" />
465
+ <dc:Bounds x="3534" y="301" width="53" height="14" />
408
466
  </bpmndi:BPMNLabel>
409
467
  </bpmndi:BPMNEdge>
410
468
  <bpmndi:BPMNEdge id="BPMNEdge_f_trialAnswerRerun" bpmnElement="f_trialAnswerRerun">
411
- <di:waypoint x="3529" y="585" />
412
- <di:waypoint x="3529" y="620" />
413
- <di:waypoint x="2668" y="620" />
414
- <di:waypoint x="2668" y="440" />
469
+ <di:waypoint x="4015" y="585" />
470
+ <di:waypoint x="4015" y="620" />
471
+ <di:waypoint x="3154" y="620" />
472
+ <di:waypoint x="3154" y="440" />
473
+ <bpmndi:BPMNLabel>
474
+ <dc:Bounds x="3565" y="598" width="39" height="14" />
475
+ </bpmndi:BPMNLabel>
476
+ </bpmndi:BPMNEdge>
477
+ <bpmndi:BPMNEdge id="BPMNEdge_f_plan_escalate" bpmnElement="f_plan_escalate">
478
+ <di:waypoint x="1041" y="265" />
479
+ <di:waypoint x="1041" y="400" />
480
+ <di:waypoint x="1166" y="400" />
415
481
  <bpmndi:BPMNLabel>
416
- <dc:Bounds x="3079" y="598" width="39" height="14" />
482
+ <dc:Bounds x="1046" y="326" width="67" height="14" />
483
+ </bpmndi:BPMNLabel>
484
+ </bpmndi:BPMNEdge>
485
+ <bpmndi:BPMNEdge id="BPMNEdge_f_plan_answer_proceed" bpmnElement="f_plan_answer_proceed">
486
+ <di:waypoint x="1527" y="375" />
487
+ <di:waypoint x="1527" y="240" />
488
+ <di:waypoint x="1652" y="240" />
489
+ <bpmndi:BPMNLabel>
490
+ <dc:Bounds x="1532" y="301" width="53" height="14" />
417
491
  </bpmndi:BPMNLabel>
418
492
  </bpmndi:BPMNEdge>
419
493
  <bpmndi:BPMNEdge id="BPMNEdge_f_runTrialMerge" bpmnElement="f_runTrialMerge">
420
- <di:waypoint x="2493" y="265" />
421
- <di:waypoint x="2493" y="400" />
422
- <di:waypoint x="2618" y="400" />
494
+ <di:waypoint x="2979" y="265" />
495
+ <di:waypoint x="2979" y="400" />
496
+ <di:waypoint x="3104" y="400" />
423
497
  <bpmndi:BPMNLabel>
424
- <dc:Bounds x="2498" y="326" width="25" height="14" />
498
+ <dc:Bounds x="2984" y="326" width="25" height="14" />
425
499
  </bpmndi:BPMNLabel>
426
500
  </bpmndi:BPMNEdge>
427
501
  <bpmndi:BPMNEdge id="BPMNEdge_f_trialEscalate" bpmnElement="f_trialEscalate">
428
- <di:waypoint x="3043" y="425" />
429
- <di:waypoint x="3043" y="560" />
430
- <di:waypoint x="3168" y="560" />
502
+ <di:waypoint x="3529" y="425" />
503
+ <di:waypoint x="3529" y="560" />
504
+ <di:waypoint x="3654" y="560" />
431
505
  <bpmndi:BPMNLabel>
432
- <dc:Bounds x="3048" y="486" width="85" height="14" />
506
+ <dc:Bounds x="3534" y="486" width="85" height="14" />
433
507
  </bpmndi:BPMNLabel>
434
508
  </bpmndi:BPMNEdge>
435
509
  <bpmndi:BPMNEdge id="BPMNEdge_f_trialAnswerProceed" bpmnElement="f_trialAnswerProceed">
436
- <di:waypoint x="3529" y="535" />
437
- <di:waypoint x="3529" y="385" />
438
- <di:waypoint x="3679" y="385" />
439
- <di:waypoint x="3679" y="265" />
510
+ <di:waypoint x="4015" y="535" />
511
+ <di:waypoint x="4015" y="385" />
512
+ <di:waypoint x="4165" y="385" />
513
+ <di:waypoint x="4165" y="265" />
440
514
  <bpmndi:BPMNLabel>
441
- <dc:Bounds x="3578" y="363" width="53" height="14" />
515
+ <dc:Bounds x="4064" y="363" width="53" height="14" />
442
516
  </bpmndi:BPMNLabel>
443
517
  </bpmndi:BPMNEdge>
444
518
  <bpmndi:BPMNEdge id="BPMNEdge_f_moreWaves" bpmnElement="f_moreWaves">
445
- <di:waypoint x="3704" y="240" />
446
- <di:waypoint x="3724" y="240" />
447
- <di:waypoint x="3724" y="265" />
448
- <di:waypoint x="3758" y="265" />
449
- <di:waypoint x="3758" y="420" />
450
- <di:waypoint x="3836" y="420" />
451
- <di:waypoint x="3836" y="438" />
452
- <di:waypoint x="3854" y="438" />
453
- <di:waypoint x="3854" y="418" />
519
+ <di:waypoint x="4190" y="240" />
520
+ <di:waypoint x="4210" y="240" />
521
+ <di:waypoint x="4210" y="265" />
522
+ <di:waypoint x="4244" y="265" />
523
+ <di:waypoint x="4244" y="420" />
524
+ <di:waypoint x="4322" y="420" />
525
+ <di:waypoint x="4322" y="438" />
526
+ <di:waypoint x="4340" y="438" />
527
+ <di:waypoint x="4340" y="418" />
454
528
  <bpmndi:BPMNLabel>
455
- <dc:Bounds x="3763" y="336" width="35" height="14" />
529
+ <dc:Bounds x="4249" y="336" width="35" height="14" />
456
530
  </bpmndi:BPMNLabel>
457
531
  </bpmndi:BPMNEdge>
532
+ <bpmndi:BPMNEdge id="BPMNEdge_f_toWaitPlanAnswer" bpmnElement="f_toWaitPlanAnswer">
533
+ <di:waypoint x="1266" y="400" />
534
+ <di:waypoint x="1366" y="400" />
535
+ </bpmndi:BPMNEdge>
536
+ <bpmndi:BPMNEdge id="BPMNEdge_f_toGwPlanAnswer" bpmnElement="f_toGwPlanAnswer">
537
+ <di:waypoint x="1402" y="400" />
538
+ <di:waypoint x="1502" y="400" />
539
+ </bpmndi:BPMNEdge>
458
540
  <bpmndi:BPMNEdge id="BPMNEdge_f_toWaitTrial" bpmnElement="f_toWaitTrial">
459
- <di:waypoint x="3268" y="560" />
460
- <di:waypoint x="3368" y="560" />
541
+ <di:waypoint x="3754" y="560" />
542
+ <di:waypoint x="3854" y="560" />
461
543
  </bpmndi:BPMNEdge>
462
544
  <bpmndi:BPMNEdge id="BPMNEdge_f_toGwTrialAnswer" bpmnElement="f_toGwTrialAnswer">
463
- <di:waypoint x="3404" y="560" />
464
- <di:waypoint x="3504" y="560" />
545
+ <di:waypoint x="3890" y="560" />
546
+ <di:waypoint x="3990" y="560" />
465
547
  </bpmndi:BPMNEdge>
466
548
  <bpmndi:BPMNEdge id="BPMNEdge_f_plan_revise" bpmnElement="f_plan_revise">
467
549
  <di:waypoint x="1041" y="215" />
@@ -473,73 +555,73 @@
473
555
  </bpmndi:BPMNLabel>
474
556
  </bpmndi:BPMNEdge>
475
557
  <bpmndi:BPMNEdge id="BPMNEdge_f_waveMerged" bpmnElement="f_waveMerged">
476
- <di:waypoint x="3854" y="418" />
477
- <di:waypoint x="3854" y="640" />
478
- <di:waypoint x="1216" y="640" />
479
- <di:waypoint x="1216" y="280" />
558
+ <di:waypoint x="4340" y="418" />
559
+ <di:waypoint x="4340" y="640" />
560
+ <di:waypoint x="1702" y="640" />
561
+ <di:waypoint x="1702" y="280" />
480
562
  </bpmndi:BPMNEdge>
481
563
  <bpmndi:BPMNShape id="BPMNShape_w_start" bpmnElement="w_start">
482
- <dc:Bounds x="1406" y="142" width="36" height="36" />
564
+ <dc:Bounds x="1892" y="142" width="36" height="36" />
483
565
  <bpmndi:BPMNLabel>
484
- <dc:Bounds x="1407" y="183" width="34" height="14" />
566
+ <dc:Bounds x="1893" y="183" width="34" height="14" />
485
567
  </bpmndi:BPMNLabel>
486
568
  </bpmndi:BPMNShape>
487
569
  <bpmndi:BPMNShape id="BPMNShape_implement-task" bpmnElement="implement-task">
488
- <dc:Bounds x="1542" y="120" width="100" height="80" />
570
+ <dc:Bounds x="2028" y="120" width="100" height="80" />
489
571
  </bpmndi:BPMNShape>
490
572
  <bpmndi:BPMNShape id="BPMNShape_w_gw" bpmnElement="w_gw" isMarkerVisible="true">
491
- <dc:Bounds x="1742" y="135" width="50" height="50" />
573
+ <dc:Bounds x="2228" y="135" width="50" height="50" />
492
574
  <bpmndi:BPMNLabel>
493
- <dc:Bounds x="1730" y="116" width="74" height="14" />
575
+ <dc:Bounds x="2216" y="116" width="74" height="14" />
494
576
  </bpmndi:BPMNLabel>
495
577
  </bpmndi:BPMNShape>
496
578
  <bpmndi:BPMNShape id="BPMNShape_persist-task-escalation" bpmnElement="persist-task-escalation">
497
- <dc:Bounds x="1892" y="280" width="100" height="80" />
579
+ <dc:Bounds x="2378" y="280" width="100" height="80" />
498
580
  </bpmndi:BPMNShape>
499
581
  <bpmndi:BPMNShape id="BPMNShape_wait-feature-answer" bpmnElement="wait-feature-answer">
500
- <dc:Bounds x="2092" y="302" width="36" height="36" />
582
+ <dc:Bounds x="2578" y="302" width="36" height="36" />
501
583
  <bpmndi:BPMNLabel>
502
- <dc:Bounds x="2068" y="269" width="85" height="28" />
584
+ <dc:Bounds x="2554" y="269" width="85" height="28" />
503
585
  </bpmndi:BPMNLabel>
504
586
  </bpmndi:BPMNShape>
505
587
  <bpmndi:BPMNShape id="BPMNShape_w_end" bpmnElement="w_end">
506
- <dc:Bounds x="1924" y="142" width="36" height="36" />
588
+ <dc:Bounds x="2410" y="142" width="36" height="36" />
507
589
  <bpmndi:BPMNLabel>
508
- <dc:Bounds x="1909" y="183" width="66" height="14" />
590
+ <dc:Bounds x="2395" y="183" width="66" height="14" />
509
591
  </bpmndi:BPMNLabel>
510
592
  </bpmndi:BPMNShape>
511
593
  <bpmndi:BPMNEdge id="BPMNEdge_w_toImpl" bpmnElement="w_toImpl">
512
- <di:waypoint x="1442" y="160" />
513
- <di:waypoint x="1542" y="160" />
594
+ <di:waypoint x="1928" y="160" />
595
+ <di:waypoint x="2028" y="160" />
514
596
  </bpmndi:BPMNEdge>
515
597
  <bpmndi:BPMNEdge id="BPMNEdge_w_toGw" bpmnElement="w_toGw">
516
- <di:waypoint x="1642" y="160" />
517
- <di:waypoint x="1742" y="160" />
598
+ <di:waypoint x="2128" y="160" />
599
+ <di:waypoint x="2228" y="160" />
518
600
  </bpmndi:BPMNEdge>
519
601
  <bpmndi:BPMNEdge id="BPMNEdge_w_done" bpmnElement="w_done">
520
- <di:waypoint x="1792" y="160" />
521
- <di:waypoint x="1924" y="160" />
602
+ <di:waypoint x="2278" y="160" />
603
+ <di:waypoint x="2410" y="160" />
522
604
  <bpmndi:BPMNLabel>
523
- <dc:Bounds x="1842" y="138" width="32" height="14" />
605
+ <dc:Bounds x="2328" y="138" width="32" height="14" />
524
606
  </bpmndi:BPMNLabel>
525
607
  </bpmndi:BPMNEdge>
526
608
  <bpmndi:BPMNEdge id="BPMNEdge_w_escalate" bpmnElement="w_escalate">
527
- <di:waypoint x="1767" y="185" />
528
- <di:waypoint x="1767" y="320" />
529
- <di:waypoint x="1892" y="320" />
609
+ <di:waypoint x="2253" y="185" />
610
+ <di:waypoint x="2253" y="320" />
611
+ <di:waypoint x="2378" y="320" />
530
612
  <bpmndi:BPMNLabel>
531
- <dc:Bounds x="1772" y="246" width="67" height="14" />
613
+ <dc:Bounds x="2258" y="246" width="67" height="14" />
532
614
  </bpmndi:BPMNLabel>
533
615
  </bpmndi:BPMNEdge>
534
616
  <bpmndi:BPMNEdge id="BPMNEdge_w_toWait" bpmnElement="w_toWait">
535
- <di:waypoint x="1992" y="320" />
536
- <di:waypoint x="2092" y="320" />
617
+ <di:waypoint x="2478" y="320" />
618
+ <di:waypoint x="2578" y="320" />
537
619
  </bpmndi:BPMNEdge>
538
620
  <bpmndi:BPMNEdge id="BPMNEdge_w_answerLoop" bpmnElement="w_answerLoop">
539
- <di:waypoint x="2110" y="338" />
540
- <di:waypoint x="2110" y="380" />
541
- <di:waypoint x="1592" y="380" />
542
- <di:waypoint x="1592" y="200" />
621
+ <di:waypoint x="2596" y="338" />
622
+ <di:waypoint x="2596" y="380" />
623
+ <di:waypoint x="2078" y="380" />
624
+ <di:waypoint x="2078" y="200" />
543
625
  </bpmndi:BPMNEdge>
544
626
  </bpmndi:BPMNPlane>
545
627
  </bpmndi:BPMNDiagram>