@jterrats/open-orchestra 1.0.2 → 1.0.4

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.
Files changed (151) hide show
  1. package/AGENTS.md +7 -2
  2. package/CLAUDE.md +2 -2
  3. package/README.md +3 -0
  4. package/dist/args.js +12 -2
  5. package/dist/args.js.map +1 -1
  6. package/dist/assets/web-console.js +44 -0
  7. package/dist/autonomous-phase-lifecycle.js +23 -3
  8. package/dist/autonomous-phase-lifecycle.js.map +1 -1
  9. package/dist/autonomous-run-state.js +2 -0
  10. package/dist/autonomous-run-state.js.map +1 -1
  11. package/dist/benchmark.js +6 -0
  12. package/dist/benchmark.js.map +1 -1
  13. package/dist/cli.js +4 -1
  14. package/dist/cli.js.map +1 -1
  15. package/dist/command-manifest.js +4 -3
  16. package/dist/command-manifest.js.map +1 -1
  17. package/dist/command-utils.js +4 -5
  18. package/dist/command-utils.js.map +1 -1
  19. package/dist/commands.d.ts +1 -1
  20. package/dist/commands.js +1 -1
  21. package/dist/commands.js.map +1 -1
  22. package/dist/metrics-commands.js +8 -0
  23. package/dist/metrics-commands.js.map +1 -1
  24. package/dist/phase-playbooks.js +27 -1
  25. package/dist/phase-playbooks.js.map +1 -1
  26. package/dist/roles/core-roles.js +10 -5
  27. package/dist/roles/core-roles.js.map +1 -1
  28. package/dist/skills-catalog.js +136 -0
  29. package/dist/skills-catalog.js.map +1 -1
  30. package/dist/skills-commands.d.ts +1 -0
  31. package/dist/skills-commands.js +37 -1
  32. package/dist/skills-commands.js.map +1 -1
  33. package/dist/skills-planning.d.ts +2 -1
  34. package/dist/skills-planning.js +79 -11
  35. package/dist/skills-planning.js.map +1 -1
  36. package/dist/skills.d.ts +1 -1
  37. package/dist/skills.js +1 -1
  38. package/dist/skills.js.map +1 -1
  39. package/dist/task-graph-commands.js +36 -8
  40. package/dist/task-graph-commands.js.map +1 -1
  41. package/dist/types/metrics.d.ts +2 -0
  42. package/dist/types/skills.d.ts +9 -0
  43. package/dist/types/tasks.d.ts +8 -1
  44. package/dist/types.d.ts +2 -2
  45. package/dist/types.js.map +1 -1
  46. package/dist/web-api.js +80 -7
  47. package/dist/web-api.js.map +1 -1
  48. package/dist/workflow-approval-service.js +13 -0
  49. package/dist/workflow-approval-service.js.map +1 -1
  50. package/dist/workflow-evidence-service.js +37 -2
  51. package/dist/workflow-evidence-service.js.map +1 -1
  52. package/dist/workflow-gates.js +56 -1
  53. package/dist/workflow-gates.js.map +1 -1
  54. package/dist/workflow-phase-planner.js +86 -13
  55. package/dist/workflow-phase-planner.js.map +1 -1
  56. package/dist/workflow-run-commands.d.ts +1 -0
  57. package/dist/workflow-run-commands.js +11 -6
  58. package/dist/workflow-run-commands.js.map +1 -1
  59. package/dist/workflow-services.js +24 -0
  60. package/dist/workflow-services.js.map +1 -1
  61. package/dist/workflow-task-service.js +27 -2
  62. package/dist/workflow-task-service.js.map +1 -1
  63. package/docs/adoption-guide.md +22 -1
  64. package/docs/advisory-supervisor-architecture.md +206 -0
  65. package/docs/architecture.md +47 -41
  66. package/docs/autonomous-workflow.md +2 -2
  67. package/docs/backlog/ac-evidence-bugfix-stories-20260517.md +76 -0
  68. package/docs/backlog/chaos-testing-stack-strategy.md +146 -0
  69. package/docs/backlog/dev-best-practices-hardening-story.md +69 -0
  70. package/docs/backlog/docs-public-internal-package-hygiene-story.md +62 -0
  71. package/docs/backlog/project-persona-registry-epic.md +350 -0
  72. package/docs/backlog/prompt-bank-registry-epic.md +159 -0
  73. package/docs/backlog/site-docs-manifest-story.md +56 -0
  74. package/docs/dev-team-specialist-role-profiles.md +1 -1
  75. package/docs/diagrams/diagram-master-prompt.md +207 -0
  76. package/docs/diagrams/enterprise-set/README.md +22 -0
  77. package/docs/diagrams/enterprise-set/lead-to-account-swimlanes.svg +38 -0
  78. package/docs/diagrams/enterprise-set/product-implementation-timeline.svg +45 -0
  79. package/docs/diagrams/enterprise-set/salesforce-enterprise-architecture.svg +54 -0
  80. package/docs/diagrams/experiments/pixel-v2-review.md +124 -0
  81. package/docs/diagrams/experiments/roadmap/diagram.mmd +14 -0
  82. package/docs/diagrams/experiments/roadmap/diagram.svg +48 -0
  83. package/docs/diagrams/experiments/roadmap/experiment.md +44 -0
  84. package/docs/diagrams/experiments/sfdc-implementation/diagram.mmd +54 -0
  85. package/docs/diagrams/experiments/sfdc-implementation/diagram.svg +72 -0
  86. package/docs/diagrams/experiments/sfdc-implementation/experiment.md +41 -0
  87. package/docs/diagrams/experiments/swimlane/diagram.mmd +40 -0
  88. package/docs/diagrams/experiments/swimlane/diagram.svg +70 -0
  89. package/docs/diagrams/experiments/swimlane/experiment.md +50 -0
  90. package/docs/diagrams/experiments/timeline/diagram.mmd +9 -0
  91. package/docs/diagrams/experiments/timeline/diagram.svg +29 -0
  92. package/docs/diagrams/experiments/timeline/experiment.md +34 -0
  93. package/docs/diagrams/final-artifact-hygiene.md +40 -0
  94. package/docs/diagrams/mermaid-target-strategy.md +106 -0
  95. package/docs/diagrams/payment-gateway/architecture.md +57 -0
  96. package/docs/diagrams/payment-gateway/architecture.mmd +39 -0
  97. package/docs/diagrams/payment-gateway/architecture.svg +171 -0
  98. package/docs/diagrams/prompt-bank.md +48 -0
  99. package/docs/diagrams/salesforce-integration/architecture.md +56 -0
  100. package/docs/diagrams/salesforce-integration/architecture.mmd +26 -0
  101. package/docs/diagrams/salesforce-integration/architecture.svg +123 -0
  102. package/docs/diagrams/source-fidelity-review.md +116 -0
  103. package/docs/diagrams/state-uml-recreated.drawio +336 -0
  104. package/docs/diagrams/state-uml-recreated.prompt.md +114 -0
  105. package/docs/diagrams/state-uml-recreated.prompt.v10.md +52 -0
  106. package/docs/diagrams/state-uml-recreated.prompt.v11.md +52 -0
  107. package/docs/diagrams/state-uml-recreated.prompt.v12.md +50 -0
  108. package/docs/diagrams/state-uml-recreated.prompt.v14.md +91 -0
  109. package/docs/diagrams/state-uml-recreated.prompt.v2.md +31 -0
  110. package/docs/diagrams/state-uml-recreated.prompt.v3.md +36 -0
  111. package/docs/diagrams/state-uml-recreated.prompt.v4.md +35 -0
  112. package/docs/diagrams/state-uml-recreated.prompt.v5.md +35 -0
  113. package/docs/diagrams/state-uml-recreated.prompt.v6.md +39 -0
  114. package/docs/diagrams/state-uml-recreated.prompt.v7.md +37 -0
  115. package/docs/diagrams/state-uml-recreated.prompt.v8.md +41 -0
  116. package/docs/diagrams/state-uml-recreated.prompt.v9.md +32 -0
  117. package/docs/diagrams/state-uml-recreated.svg +159 -0
  118. package/docs/diagrams/v14-stress-test/README.md +33 -0
  119. package/docs/diagrams/v14-stress-test/stress-test.svg +114 -0
  120. package/docs/external-artifact-import-bridge.md +56 -0
  121. package/docs/{setup-agents-applicability-review.md → external-baseline-applicability-review.md} +37 -40
  122. package/docs/{setup-agents-dogfooding-findings.md → external-baseline-dogfooding-findings.md} +10 -9
  123. package/docs/multi-agent-orchestrator-backlog.md +1 -1
  124. package/docs/orchestra-mvp.md +19 -0
  125. package/docs/persona-workflows.md +42 -0
  126. package/docs/release-test-matrix.md +21 -9
  127. package/docs/reports/ac-evidence-backfill-20260517.md +256 -0
  128. package/docs/reports/ac-evolution-reconciliation-20260517.md +366 -0
  129. package/docs/reports/ac-failure-evidence-20260517.md +115 -0
  130. package/docs/reports/ac-history-dry-run-20260517.md +434 -0
  131. package/docs/runtime-llm-flow.md +8 -0
  132. package/docs/site-content-workflow.md +96 -0
  133. package/docs/site-manifest.json +143 -0
  134. package/docs/skill-loading-strategy.md +18 -7
  135. package/docs/story-mapping-adoption-review.md +99 -0
  136. package/docs/workspace-repo-strategy.md +63 -0
  137. package/package.json +3 -1
  138. package/rules/agent-collaboration.mdc +2 -0
  139. package/rules/code-review-engineering.mdc +2 -0
  140. package/rules/delivery-quality-gates.mdc +12 -0
  141. package/rules/development-engineering.mdc +3 -0
  142. package/rules/diagram-quality.mdc +35 -0
  143. package/rules/module-boundaries.mdc +71 -0
  144. package/rules/testing-discipline.mdc +13 -0
  145. package/skills/chaos-resilience-testing/SKILL.md +127 -0
  146. package/skills/chaos-resilience-testing/manifest.json +61 -0
  147. package/skills/collection-standards/SKILL.md +2 -0
  148. package/skills/diagram-export/SKILL.md +30 -0
  149. package/skills/qa-evidence-pack/SKILL.md +110 -0
  150. package/skills/qa-evidence-pack/manifest.json +60 -0
  151. package/docs/setup-agents-bridge.md +0 -61
@@ -0,0 +1,336 @@
1
+ <mxfile host="Open Orchestra" modified="2026-05-16T09:35:00.000Z" agent="open-orchestra" version="1">
2
+ <diagram id="state-uml-recreated" name="State UML Recreated">
3
+ <mxGraphModel dx="1180" dy="1680" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1180" pageHeight="1680" math="0" shadow="0">
4
+ <root>
5
+ <mxCell id="0" />
6
+ <mxCell id="1" parent="0" />
7
+
8
+ <mxCell id="title-concurrent" value="Estado concurrente" style="text;html=1;strokeColor=none;fillColor=none;fontColor=#1F2933;fontStyle=1;fontSize=24;align=left;verticalAlign=middle;" vertex="1" parent="1">
9
+ <mxGeometry x="40" y="20" width="300" height="32" as="geometry" />
10
+ </mxCell>
11
+ <mxCell id="concurrent-on" value="On" style="rounded=1;whiteSpace=wrap;html=1;arcSize=6;fillColor=#74C7ED;strokeColor=#222222;fontColor=#1F2933;fontSize=15;verticalAlign=top;spacingTop=4;" vertex="1" parent="1">
12
+ <mxGeometry x="180" y="76" width="500" height="360" as="geometry" />
13
+ </mxCell>
14
+ <mxCell id="concurrent-region-a" value="" style="line;strokeWidth=2;html=1;strokeColor=#222222;" vertex="1" parent="1">
15
+ <mxGeometry x="180" y="196" width="500" height="10" as="geometry" />
16
+ </mxCell>
17
+ <mxCell id="concurrent-region-b" value="" style="line;strokeWidth=2;dashed=1;dashPattern=8 5;html=1;strokeColor=#222222;" vertex="1" parent="1">
18
+ <mxGeometry x="180" y="266" width="500" height="10" as="geometry" />
19
+ </mxCell>
20
+ <mxCell id="display-current" value="Display Current&lt;br&gt;Time" style="rounded=1;whiteSpace=wrap;html=1;arcSize=18;fillColor=#74C7ED;strokeColor=#222222;fontColor=#1F2933;fontSize=15;" vertex="1" parent="1">
21
+ <mxGeometry x="260" y="164" width="150" height="62" as="geometry" />
22
+ </mxCell>
23
+ <mxCell id="display-alarm" value="Display Alarm&lt;br&gt;Time" style="rounded=1;whiteSpace=wrap;html=1;arcSize=18;fillColor=#74C7ED;strokeColor=#222222;fontColor=#1F2933;fontSize=15;" vertex="1" parent="1">
24
+ <mxGeometry x="440" y="164" width="150" height="62" as="geometry" />
25
+ </mxCell>
26
+ <mxCell id="playing-radio" value="Playing Radio" style="rounded=1;whiteSpace=wrap;html=1;arcSize=18;fillColor=#74C7ED;strokeColor=#222222;fontColor=#1F2933;fontSize=15;" vertex="1" parent="1">
27
+ <mxGeometry x="290" y="316" width="120" height="62" as="geometry" />
28
+ </mxCell>
29
+ <mxCell id="playing-cd" value="Playing CD" style="rounded=1;whiteSpace=wrap;html=1;arcSize=18;fillColor=#74C7ED;strokeColor=#222222;fontColor=#1F2933;fontSize=15;" vertex="1" parent="1">
30
+ <mxGeometry x="440" y="316" width="120" height="62" as="geometry" />
31
+ </mxCell>
32
+ <mxCell id="history-concurrent" value="H" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#74C7ED;strokeColor=#222222;fontColor=#1F2933;fontSize=15;" vertex="1" parent="1">
33
+ <mxGeometry x="204" y="333" width="28" height="28" as="geometry" />
34
+ </mxCell>
35
+ <mxCell id="off" value="Off" style="rounded=1;whiteSpace=wrap;html=1;arcSize=18;fillColor=#74C7ED;strokeColor=#222222;fontColor=#1F2933;fontSize=18;" vertex="1" parent="1">
36
+ <mxGeometry x="362" y="514" width="170" height="62" as="geometry" />
37
+ </mxCell>
38
+ <mxCell id="concurrent-time" value="time" style="endArrow=block;html=1;rounded=0;strokeColor=#222222;fontColor=#1F2933;edgeStyle=orthogonalEdgeStyle;" edge="1" parent="1">
39
+ <mxGeometry relative="1" as="geometry">
40
+ <mxPoint x="180" y="196" as="sourcePoint" />
41
+ <mxPoint x="260" y="196" as="targetPoint" />
42
+ </mxGeometry>
43
+ </mxCell>
44
+ <mxCell id="concurrent-alarm" value="alarm" style="endArrow=block;html=1;rounded=0;strokeColor=#222222;fontColor=#1F2933;edgeStyle=orthogonalEdgeStyle;" edge="1" parent="1">
45
+ <mxGeometry relative="1" as="geometry">
46
+ <mxPoint x="680" y="196" as="sourcePoint" />
47
+ <mxPoint x="590" y="196" as="targetPoint" />
48
+ </mxGeometry>
49
+ </mxCell>
50
+ <mxCell id="concurrent-h-radio" value="" style="endArrow=block;html=1;rounded=0;strokeColor=#222222;edgeStyle=orthogonalEdgeStyle;" edge="1" parent="1">
51
+ <mxGeometry relative="1" as="geometry">
52
+ <mxPoint x="232" y="346" as="sourcePoint" />
53
+ <mxPoint x="290" y="346" as="targetPoint" />
54
+ </mxGeometry>
55
+ </mxCell>
56
+ <mxCell id="off-radio" value="" style="endArrow=block;html=1;rounded=0;strokeColor=#222222;edgeStyle=orthogonalEdgeStyle;" edge="1" parent="1">
57
+ <mxGeometry relative="1" as="geometry">
58
+ <mxPoint x="362" y="545" as="sourcePoint" />
59
+ <mxPoint x="350" y="378" as="targetPoint" />
60
+ <Array as="points">
61
+ <mxPoint x="350" y="545" />
62
+ </Array>
63
+ </mxGeometry>
64
+ </mxCell>
65
+ <mxCell id="label-radio" value="Radio" style="text;html=1;strokeColor=none;fillColor=none;fontColor=#1F2933;fontSize=18;align=center;verticalAlign=middle;" vertex="1" parent="1">
66
+ <mxGeometry x="356" y="398" width="70" height="24" as="geometry" />
67
+ </mxCell>
68
+ <mxCell id="off-cd" value="" style="endArrow=block;html=1;rounded=0;strokeColor=#222222;edgeStyle=orthogonalEdgeStyle;" edge="1" parent="1">
69
+ <mxGeometry relative="1" as="geometry">
70
+ <mxPoint x="462" y="514" as="sourcePoint" />
71
+ <mxPoint x="500" y="378" as="targetPoint" />
72
+ <Array as="points">
73
+ <mxPoint x="462" y="480" />
74
+ <mxPoint x="500" y="480" />
75
+ </Array>
76
+ </mxGeometry>
77
+ </mxCell>
78
+ <mxCell id="label-cd" value="CD" style="text;html=1;strokeColor=none;fillColor=none;fontColor=#1F2933;fontSize=18;align=center;verticalAlign=middle;" vertex="1" parent="1">
79
+ <mxGeometry x="518" y="398" width="50" height="24" as="geometry" />
80
+ </mxCell>
81
+ <mxCell id="on-off" value="on" style="endArrow=block;html=1;rounded=0;strokeColor=#222222;fontColor=#1F2933;edgeStyle=orthogonalEdgeStyle;" edge="1" parent="1">
82
+ <mxGeometry relative="1" as="geometry">
83
+ <mxPoint x="426" y="514" as="sourcePoint" />
84
+ <mxPoint x="426" y="436" as="targetPoint" />
85
+ </mxGeometry>
86
+ </mxCell>
87
+ <mxCell id="off-on" value="off" style="endArrow=block;html=1;rounded=0;strokeColor=#222222;fontColor=#1F2933;edgeStyle=orthogonalEdgeStyle;" edge="1" parent="1">
88
+ <mxGeometry relative="1" as="geometry">
89
+ <mxPoint x="532" y="436" as="sourcePoint" />
90
+ <mxPoint x="532" y="514" as="targetPoint" />
91
+ </mxGeometry>
92
+ </mxCell>
93
+
94
+ <mxCell id="title-history" value="Shallow history state" style="text;html=1;strokeColor=none;fillColor=none;fontColor=#1F2933;fontStyle=1;fontSize=24;align=left;" vertex="1" parent="1">
95
+ <mxGeometry x="40" y="650" width="340" height="32" as="geometry" />
96
+ </mxCell>
97
+ <mxCell id="command" value="Command" style="rounded=1;whiteSpace=wrap;html=1;arcSize=18;fillColor=#74C7ED;strokeColor=#222222;fontColor=#1F2933;fontSize=15;" vertex="1" parent="1">
98
+ <mxGeometry x="135" y="780" width="120" height="60" as="geometry" />
99
+ </mxCell>
100
+ <mxCell id="backup" value="BackingUp" style="rounded=1;whiteSpace=wrap;html=1;arcSize=6;fillColor=#74C7ED;strokeColor=#222222;fontColor=#1F2933;fontSize=15;verticalAlign=top;spacingTop=4;" vertex="1" parent="1">
101
+ <mxGeometry x="390" y="733" width="290" height="350" as="geometry" />
102
+ </mxCell>
103
+ <mxCell id="history-h" value="H" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#74C7ED;strokeColor=#222222;fontColor=#1F2933;fontSize=15;" vertex="1" parent="1">
104
+ <mxGeometry x="430" y="807" width="30" height="30" as="geometry" />
105
+ </mxCell>
106
+ <mxCell id="collecting" value="Collecting" style="rounded=1;whiteSpace=wrap;html=1;arcSize=18;fillColor=#74C7ED;strokeColor=#222222;fontColor=#1F2933;fontSize=15;" vertex="1" parent="1">
107
+ <mxGeometry x="515" y="780" width="120" height="60" as="geometry" />
108
+ </mxCell>
109
+ <mxCell id="copying" value="Copying" style="rounded=1;whiteSpace=wrap;html=1;arcSize=18;fillColor=#74C7ED;strokeColor=#222222;fontColor=#1F2933;fontSize=15;" vertex="1" parent="1">
110
+ <mxGeometry x="515" y="890" width="120" height="60" as="geometry" />
111
+ </mxCell>
112
+ <mxCell id="cleaning" value="Cleaning Up" style="rounded=1;whiteSpace=wrap;html=1;arcSize=18;fillColor=#74C7ED;strokeColor=#222222;fontColor=#1F2933;fontSize=15;" vertex="1" parent="1">
113
+ <mxGeometry x="515" y="1010" width="120" height="60" as="geometry" />
114
+ </mxCell>
115
+ <mxCell id="cmd-to-h" value="" style="endArrow=block;html=1;rounded=0;strokeColor=#222222;edgeStyle=orthogonalEdgeStyle;jumpStyle=arc;jumpSize=8;" edge="1" parent="1">
116
+ <mxGeometry relative="1" as="geometry">
117
+ <mxPoint x="255" y="810" as="sourcePoint" />
118
+ <mxPoint x="430" y="822" as="targetPoint" />
119
+ </mxGeometry>
120
+ </mxCell>
121
+ <mxCell id="h-to-collecting" value="" style="endArrow=block;html=1;rounded=0;strokeColor=#222222;edgeStyle=orthogonalEdgeStyle;jumpStyle=arc;jumpSize=8;" edge="1" parent="1">
122
+ <mxGeometry relative="1" as="geometry">
123
+ <mxPoint x="460" y="807" as="sourcePoint" />
124
+ <mxPoint x="515" y="807" as="targetPoint" />
125
+ </mxGeometry>
126
+ </mxCell>
127
+ <mxCell id="collecting-copying" value="" style="endArrow=block;html=1;rounded=0;strokeColor=#222222;edgeStyle=orthogonalEdgeStyle;jumpStyle=arc;jumpSize=8;" edge="1" parent="1">
128
+ <mxGeometry relative="1" as="geometry">
129
+ <mxPoint x="575" y="840" as="sourcePoint" />
130
+ <mxPoint x="575" y="890" as="targetPoint" />
131
+ </mxGeometry>
132
+ </mxCell>
133
+ <mxCell id="copying-cleaning" value="" style="endArrow=block;html=1;rounded=0;strokeColor=#222222;edgeStyle=orthogonalEdgeStyle;jumpStyle=arc;jumpSize=8;" edge="1" parent="1">
134
+ <mxGeometry relative="1" as="geometry">
135
+ <mxPoint x="575" y="950" as="sourcePoint" />
136
+ <mxPoint x="575" y="1010" as="targetPoint" />
137
+ </mxGeometry>
138
+ </mxCell>
139
+ <mxCell id="history-query" value="query" style="endArrow=block;html=1;rounded=0;strokeColor=#222222;fontColor=#1F2933;edgeStyle=orthogonalEdgeStyle;jumpStyle=arc;jumpSize=8;" edge="1" parent="1">
140
+ <mxGeometry relative="1" as="geometry">
141
+ <mxPoint x="390" y="890" as="sourcePoint" />
142
+ <mxPoint x="210" y="840" as="targetPoint" />
143
+ <Array as="points">
144
+ <mxPoint x="210" y="890" />
145
+ </Array>
146
+ </mxGeometry>
147
+ </mxCell>
148
+ <mxCell id="history-clean-command" value="" style="endArrow=block;html=1;rounded=0;strokeColor=#222222;edgeStyle=orthogonalEdgeStyle;jumpStyle=arc;jumpSize=8;" edge="1" parent="1">
149
+ <mxGeometry relative="1" as="geometry">
150
+ <mxPoint x="515" y="1040" as="sourcePoint" />
151
+ <mxPoint x="180" y="840" as="targetPoint" />
152
+ <Array as="points">
153
+ <mxPoint x="180" y="1040" />
154
+ </Array>
155
+ </mxGeometry>
156
+ </mxCell>
157
+ <mxCell id="annot-state" value="State" style="text;html=1;strokeColor=none;fillColor=none;fontColor=#E35C5C;fontStyle=1;fontSize=20;" vertex="1" parent="1">
158
+ <mxGeometry x="158" y="690" width="100" height="28" as="geometry" />
159
+ </mxCell>
160
+ <mxCell id="annot-state-arrow" value="" style="endArrow=block;html=1;rounded=0;strokeColor=#E35C5C;strokeWidth=3;dashed=1;dashPattern=10 8;edgeStyle=orthogonalEdgeStyle;" edge="1" parent="1">
161
+ <mxGeometry relative="1" as="geometry">
162
+ <mxPoint x="190" y="733" as="sourcePoint" />
163
+ <mxPoint x="190" y="777" as="targetPoint" />
164
+ </mxGeometry>
165
+ </mxCell>
166
+ <mxCell id="annot-history" value="Shallow History State" style="text;html=1;strokeColor=none;fillColor=none;fontColor=#E35C5C;fontStyle=1;fontSize=20;" vertex="1" parent="1">
167
+ <mxGeometry x="305" y="673" width="250" height="28" as="geometry" />
168
+ </mxCell>
169
+ <mxCell id="annot-history-arrow" value="" style="endArrow=block;html=1;rounded=0;strokeColor=#E35C5C;strokeWidth=3;dashed=1;dashPattern=10 8;edgeStyle=orthogonalEdgeStyle;" edge="1" parent="1">
170
+ <mxGeometry relative="1" as="geometry">
171
+ <mxPoint x="425" y="707" as="sourcePoint" />
172
+ <mxPoint x="425" y="807" as="targetPoint" />
173
+ </mxGeometry>
174
+ </mxCell>
175
+ <mxCell id="annot-transition-history" value="Transition" style="text;html=1;strokeColor=none;fillColor=none;fontColor=#E35C5C;fontStyle=1;fontSize=20;" vertex="1" parent="1">
176
+ <mxGeometry x="240" y="1080" width="140" height="28" as="geometry" />
177
+ </mxCell>
178
+ <mxCell id="annot-transition-history-arrow" value="" style="endArrow=block;html=1;rounded=0;strokeColor=#E35C5C;strokeWidth=3;dashed=1;dashPattern=10 8;edgeStyle=orthogonalEdgeStyle;jumpStyle=arc;jumpSize=8;" edge="1" parent="1">
179
+ <mxGeometry relative="1" as="geometry">
180
+ <mxPoint x="292" y="1080" as="sourcePoint" />
181
+ <mxPoint x="292" y="1007" as="targetPoint" />
182
+ </mxGeometry>
183
+ </mxCell>
184
+
185
+ <mxCell id="title-actions" value="Acciones de entrada y salida" style="text;html=1;strokeColor=none;fillColor=none;fontColor=#1F2933;fontStyle=1;fontSize=24;align=left;" vertex="1" parent="1">
186
+ <mxGeometry x="40" y="1130" width="430" height="32" as="geometry" />
187
+ </mxCell>
188
+ <mxCell id="initial-dot" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#000000;strokeColor=#000000;" vertex="1" parent="1">
189
+ <mxGeometry x="473" y="1190" width="24" height="24" as="geometry" />
190
+ </mxCell>
191
+ <mxCell id="action-state-1" value="State&lt;br&gt;entry / Action 1_1&lt;br&gt;do / Action 1_2" style="rounded=1;whiteSpace=wrap;html=1;arcSize=18;fillColor=#74C7ED;strokeColor=#222222;fontColor=#1F2933;fontSize=13;" vertex="1" parent="1">
192
+ <mxGeometry x="405" y="1285" width="190" height="92" as="geometry" />
193
+ </mxCell>
194
+ <mxCell id="action-state-2" value="State2&lt;br&gt;entry / Action 2_1&lt;br&gt;Action 2_3 / defer&lt;br&gt;exit / Action 2_2" style="rounded=1;whiteSpace=wrap;html=1;arcSize=18;fillColor=#74C7ED;strokeColor=#222222;fontColor=#1F2933;fontSize=13;" vertex="1" parent="1">
195
+ <mxGeometry x="870" y="1285" width="190" height="98" as="geometry" />
196
+ </mxCell>
197
+ <mxCell id="action-state-3" value="State2&lt;br&gt;entry / Action 3_1" style="rounded=1;whiteSpace=wrap;html=1;arcSize=18;fillColor=#74C7ED;strokeColor=#222222;fontColor=#1F2933;fontSize=13;" vertex="1" parent="1">
198
+ <mxGeometry x="630" y="1455" width="190" height="88" as="geometry" />
199
+ </mxCell>
200
+ <mxCell id="decision" value="" style="rhombus;whiteSpace=wrap;html=1;fillColor=#74C7ED;strokeColor=#222222;" vertex="1" parent="1">
201
+ <mxGeometry x="472" y="1482" width="56" height="32" as="geometry" />
202
+ </mxCell>
203
+ <mxCell id="final-state" value="" style="ellipse;shape=doubleEllipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#000000;strokeColor=#000000;" vertex="1" parent="1">
204
+ <mxGeometry x="486" y="1584" width="28" height="28" as="geometry" />
205
+ </mxCell>
206
+ <mxCell id="initial-to-state" value="" style="endArrow=block;html=1;rounded=0;strokeColor=#222222;edgeStyle=orthogonalEdgeStyle;" edge="1" parent="1">
207
+ <mxGeometry relative="1" as="geometry">
208
+ <mxPoint x="485" y="1214" as="sourcePoint" />
209
+ <mxPoint x="485" y="1285" as="targetPoint" />
210
+ </mxGeometry>
211
+ </mxCell>
212
+ <mxCell id="state1-state2" value="event [Guard1] / ActionA" style="endArrow=block;html=1;rounded=0;strokeColor=#222222;fontColor=#1F2933;fontSize=13;edgeStyle=orthogonalEdgeStyle;jumpStyle=arc;jumpSize=8;" edge="1" parent="1">
213
+ <mxGeometry relative="1" as="geometry">
214
+ <mxPoint x="595" y="1326" as="sourcePoint" />
215
+ <mxPoint x="870" y="1326" as="targetPoint" />
216
+ </mxGeometry>
217
+ </mxCell>
218
+ <mxCell id="decision-state1" value="" style="endArrow=block;html=1;rounded=0;strokeColor=#222222;fontColor=#1F2933;fontSize=13;edgeStyle=orthogonalEdgeStyle;jumpStyle=arc;jumpSize=8;" edge="1" parent="1">
219
+ <mxGeometry relative="1" as="geometry">
220
+ <mxPoint x="500" y="1482" as="sourcePoint" />
221
+ <mxPoint x="500" y="1377" as="targetPoint" />
222
+ </mxGeometry>
223
+ </mxCell>
224
+ <mxCell id="action-label-guard4" value="[Guard4]" style="text;html=1;strokeColor=none;fillColor=none;fontColor=#1F2933;fontSize=13;align=left;verticalAlign=middle;" vertex="1" parent="1">
225
+ <mxGeometry x="525" y="1428" width="80" height="24" as="geometry" />
226
+ </mxCell>
227
+ <mxCell id="decision-final" value="" style="endArrow=block;html=1;rounded=0;strokeColor=#222222;fontColor=#1F2933;fontSize=13;edgeStyle=orthogonalEdgeStyle;jumpStyle=arc;jumpSize=8;" edge="1" parent="1">
228
+ <mxGeometry relative="1" as="geometry">
229
+ <mxPoint x="500" y="1514" as="sourcePoint" />
230
+ <mxPoint x="500" y="1584" as="targetPoint" />
231
+ </mxGeometry>
232
+ </mxCell>
233
+ <mxCell id="action-label-else" value="[Else]" style="text;html=1;strokeColor=none;fillColor=none;fontColor=#1F2933;fontSize=13;align=left;verticalAlign=middle;" vertex="1" parent="1">
234
+ <mxGeometry x="513" y="1536" width="60" height="24" as="geometry" />
235
+ </mxCell>
236
+ <mxCell id="state2-state3" value="" style="endArrow=block;html=1;rounded=0;strokeColor=#222222;fontColor=#1F2933;fontSize=13;edgeStyle=orthogonalEdgeStyle;jumpStyle=arc;jumpSize=8;" edge="1" parent="1">
237
+ <mxGeometry relative="1" as="geometry">
238
+ <mxPoint x="870" y="1335" as="sourcePoint" />
239
+ <mxPoint x="725" y="1455" as="targetPoint" />
240
+ <Array as="points">
241
+ <mxPoint x="725" y="1335" />
242
+ </Array>
243
+ </mxGeometry>
244
+ </mxCell>
245
+ <mxCell id="action-label-guard3" value="[Guard3] / ActionB" style="text;html=1;strokeColor=none;fillColor=none;fontColor=#1F2933;fontSize=13;align=left;verticalAlign=middle;" vertex="1" parent="1">
246
+ <mxGeometry x="745" y="1430" width="130" height="24" as="geometry" />
247
+ </mxCell>
248
+ <mxCell id="state2-guard2-state3" value="" style="endArrow=block;html=1;rounded=0;strokeColor=#222222;fontColor=#1F2933;fontSize=13;edgeStyle=orthogonalEdgeStyle;jumpStyle=arc;jumpSize=8;" edge="1" parent="1">
249
+ <mxGeometry relative="1" as="geometry">
250
+ <mxPoint x="1060" y="1366" as="sourcePoint" />
251
+ <mxPoint x="820" y="1499" as="targetPoint" />
252
+ <Array as="points">
253
+ <mxPoint x="1060" y="1499" />
254
+ </Array>
255
+ </mxGeometry>
256
+ </mxCell>
257
+ <mxCell id="action-label-guard2" value="[Guard2]" style="text;html=1;strokeColor=none;fillColor=none;fontColor=#1F2933;fontSize=13;align=left;verticalAlign=middle;" vertex="1" parent="1">
258
+ <mxGeometry x="945" y="1510" width="80" height="24" as="geometry" />
259
+ </mxCell>
260
+ <mxCell id="state3-decision" value="" style="endArrow=block;html=1;rounded=0;strokeColor=#222222;fontColor=#1F2933;fontSize=13;edgeStyle=orthogonalEdgeStyle;jumpStyle=arc;jumpSize=8;" edge="1" parent="1">
261
+ <mxGeometry relative="1" as="geometry">
262
+ <mxPoint x="630" y="1499" as="sourcePoint" />
263
+ <mxPoint x="528" y="1499" as="targetPoint" />
264
+ </mxGeometry>
265
+ </mxCell>
266
+
267
+ <mxCell id="annot-initial" value="Initial Pseudo State" style="text;html=1;strokeColor=none;fillColor=none;fontColor=#E35C5C;fontStyle=1;fontSize=20;" vertex="1" parent="1">
268
+ <mxGeometry x="245" y="1188" width="230" height="28" as="geometry" />
269
+ </mxCell>
270
+ <mxCell id="annot-entry" value="Entry action" style="text;html=1;strokeColor=none;fillColor=none;fontColor=#E35C5C;fontStyle=1;fontSize=20;" vertex="1" parent="1">
271
+ <mxGeometry x="73" y="1306" width="150" height="28" as="geometry" />
272
+ </mxCell>
273
+ <mxCell id="annot-entry-arrow" value="" style="endArrow=block;html=1;rounded=0;strokeColor=#E35C5C;strokeWidth=3;dashed=1;dashPattern=10 8;edgeStyle=orthogonalEdgeStyle;" edge="1" parent="1">
274
+ <mxGeometry relative="1" as="geometry">
275
+ <mxPoint x="243" y="1318" as="sourcePoint" />
276
+ <mxPoint x="405" y="1318" as="targetPoint" />
277
+ </mxGeometry>
278
+ </mxCell>
279
+ <mxCell id="annot-action-state" value="Action in state" style="text;html=1;strokeColor=none;fillColor=none;fontColor=#E35C5C;fontStyle=1;fontSize=20;" vertex="1" parent="1">
280
+ <mxGeometry x="323" y="1408" width="180" height="28" as="geometry" />
281
+ </mxCell>
282
+ <mxCell id="annot-action-state-arrow" value="" style="endArrow=block;html=1;rounded=0;strokeColor=#E35C5C;strokeWidth=3;dashed=1;dashPattern=10 8;edgeStyle=orthogonalEdgeStyle;" edge="1" parent="1">
283
+ <mxGeometry relative="1" as="geometry">
284
+ <mxPoint x="447" y="1396" as="sourcePoint" />
285
+ <mxPoint x="447" y="1358" as="targetPoint" />
286
+ </mxGeometry>
287
+ </mxCell>
288
+ <mxCell id="annot-decision" value="Decision" style="text;html=1;strokeColor=none;fillColor=none;fontColor=#E35C5C;fontStyle=1;fontSize=20;" vertex="1" parent="1">
289
+ <mxGeometry x="295" y="1500" width="120" height="28" as="geometry" />
290
+ </mxCell>
291
+ <mxCell id="annot-decision-arrow" value="" style="endArrow=block;html=1;rounded=0;strokeColor=#E35C5C;strokeWidth=3;dashed=1;dashPattern=10 8;edgeStyle=orthogonalEdgeStyle;" edge="1" parent="1">
292
+ <mxGeometry relative="1" as="geometry">
293
+ <mxPoint x="385" y="1503" as="sourcePoint" />
294
+ <mxPoint x="472" y="1503" as="targetPoint" />
295
+ </mxGeometry>
296
+ </mxCell>
297
+ <mxCell id="annot-transition" value="Transition" style="text;html=1;strokeColor=none;fillColor=none;fontColor=#E35C5C;fontStyle=1;fontSize=20;" vertex="1" parent="1">
298
+ <mxGeometry x="665" y="1208" width="140" height="28" as="geometry" />
299
+ </mxCell>
300
+ <mxCell id="annot-transition-arrow" value="" style="endArrow=block;html=1;rounded=0;strokeColor=#E35C5C;strokeWidth=3;dashed=1;dashPattern=10 8;edgeStyle=orthogonalEdgeStyle;" edge="1" parent="1">
301
+ <mxGeometry relative="1" as="geometry">
302
+ <mxPoint x="715" y="1228" as="sourcePoint" />
303
+ <mxPoint x="715" y="1308" as="targetPoint" />
304
+ </mxGeometry>
305
+ </mxCell>
306
+ <mxCell id="annot-triggered" value="Triggered Action" style="text;html=1;strokeColor=none;fillColor=none;fontColor=#E35C5C;fontStyle=1;fontSize=20;" vertex="1" parent="1">
307
+ <mxGeometry x="835" y="1200" width="220" height="28" as="geometry" />
308
+ </mxCell>
309
+ <mxCell id="annot-triggered-arrow" value="" style="endArrow=block;html=1;rounded=0;strokeColor=#E35C5C;strokeWidth=3;dashed=1;dashPattern=10 8;edgeStyle=orthogonalEdgeStyle;" edge="1" parent="1">
310
+ <mxGeometry relative="1" as="geometry">
311
+ <mxPoint x="960" y="1214" as="sourcePoint" />
312
+ <mxPoint x="960" y="1318" as="targetPoint" />
313
+ </mxGeometry>
314
+ </mxCell>
315
+ <mxCell id="annot-exit" value="Exit action" style="text;html=1;strokeColor=none;fillColor=none;fontColor=#E35C5C;fontStyle=1;fontSize=20;" vertex="1" parent="1">
316
+ <mxGeometry x="1073" y="1384" width="130" height="28" as="geometry" />
317
+ </mxCell>
318
+ <mxCell id="annot-exit-arrow" value="" style="endArrow=block;html=1;rounded=0;strokeColor=#E35C5C;strokeWidth=3;dashed=1;dashPattern=10 8;edgeStyle=orthogonalEdgeStyle;" edge="1" parent="1">
319
+ <mxGeometry relative="1" as="geometry">
320
+ <mxPoint x="1069" y="1384" as="sourcePoint" />
321
+ <mxPoint x="1001" y="1366" as="targetPoint" />
322
+ </mxGeometry>
323
+ </mxCell>
324
+ <mxCell id="annot-final" value="Final State" style="text;html=1;strokeColor=none;fillColor=none;fontColor=#E35C5C;fontStyle=1;fontSize=20;" vertex="1" parent="1">
325
+ <mxGeometry x="285" y="1590" width="130" height="28" as="geometry" />
326
+ </mxCell>
327
+ <mxCell id="annot-final-arrow" value="" style="endArrow=block;html=1;rounded=0;strokeColor=#E35C5C;strokeWidth=3;dashed=1;dashPattern=10 8;edgeStyle=orthogonalEdgeStyle;" edge="1" parent="1">
328
+ <mxGeometry relative="1" as="geometry">
329
+ <mxPoint x="405" y="1598" as="sourcePoint" />
330
+ <mxPoint x="486" y="1598" as="targetPoint" />
331
+ </mxGeometry>
332
+ </mxCell>
333
+ </root>
334
+ </mxGraphModel>
335
+ </diagram>
336
+ </mxfile>
@@ -0,0 +1,114 @@
1
+ # Master Prompt: UML State Diagram Recreation
2
+
3
+ Recreate the diagrams from the latest downloaded Visual Paradigm UML state PDF
4
+ as editable draw.io XML and rendered SVG.
5
+
6
+ Use the most recent PDF in `~/Downloads` as source material. Convert the PDF
7
+ pages to PNG, inspect the pages that contain diagrams, and recreate the visual
8
+ content as closely as possible.
9
+
10
+ When no source PDF, screenshot, or design reference exists, create a diagram
11
+ contract before drawing: purpose, audience, diagram type, node inventory,
12
+ container/group inventory, relationship inventory, labels, annotations, expected
13
+ reading flow, and planned connector source/target/anchor points.
14
+
15
+ Pay attention to:
16
+
17
+ - element spacing and relative position.
18
+ - container width and height after real text is placed.
19
+ - connector routing, bend points, and post-render adjustment against the source
20
+ reference.
21
+ - line avoidance so connectors do not run over important labels or containers.
22
+ - arrows terminating at the intended connection edge, not deep inside shapes.
23
+ - endpoint distance from source to target, so every connector visibly touches
24
+ both the origin and destination edges.
25
+ - source-to-target distance validation: for each connector, confirm the line
26
+ starts at the visual boundary of the source element and ends at the visual
27
+ boundary of the intended target element.
28
+ - connector intent validation: if a label such as `Radio`, `CD`, `on`, or `off`
29
+ implies a specific target state, the arrow must reach that state instead of
30
+ stopping at the parent container.
31
+ - connector label avoidance: route arrows so they do not cover state labels or
32
+ transition labels unless the source diagram explicitly does so.
33
+ - label boundary clearance: after rendering, verify that every label has visual
34
+ clearance from container borders, connector lines, and arrowheads. Labels must
35
+ not sit directly on a shape boundary.
36
+ - annotation target clarity: every annotation arrow must have an explicit visual
37
+ target, and annotation text/arrows must not obscure the element, line, or label
38
+ they describe.
39
+ - concrete visual regression checklist: convert observed diagram issues into
40
+ explicit examples under the existing endpoint, z-order, label-clearance,
41
+ annotation-target, and layout-simplification rules instead of duplicating the
42
+ concepts.
43
+ - element ordering and z-index: draw containers and states before their
44
+ connectors, then draw connectors above the connected elements so arrowheads
45
+ and line endpoints remain visible at the target boundary. A connector must not
46
+ disappear behind the element it is intended to connect.
47
+ - connection point aesthetics: choose source and target anchor points that
48
+ minimize unnecessary bends and line travel. Prefer side midpoints or the
49
+ nearest clean boundary point when that produces fewer orthogonal turns than
50
+ starting from the top or bottom edge.
51
+ - orthogonal connector aesthetics: avoid diagonal connectors unless the source
52
+ diagram explicitly requires them. Prefer horizontal/vertical segments with
53
+ controlled bend points.
54
+ - line crossing treatment: when two lines must cross, use a visible line jump or
55
+ bridge on the line that visually passes over the other line; in draw.io,
56
+ prefer arc-style jumps such as `jumpStyle=arc`.
57
+ - layout simplification before bend acceptance: before accepting a connector
58
+ bend, evaluate whether moving the source or target element slightly can remove
59
+ the bend while preserving the diagram's semantic relationship and visual
60
+ balance.
61
+ - editable/rendered equivalence: keep the draw.io XML source and rendered SVG
62
+ geometrically equivalent. Any moved element, connector, label, or annotation in
63
+ the SVG must have a corresponding editable cell or edge in the draw.io source.
64
+ - source-free quality loop: when no reference exists, validate the first render
65
+ against the pre-declared diagram contract, not intuition.
66
+ - text and shape rotation: preserve vertical, horizontal, or diagonal text
67
+ orientation from the source. In draw.io, use explicit degree-based rotation
68
+ styles such as `rotation=270` or `textRotation=-90` when the source resembles
69
+ Lucid-style positive or negative axis rotation.
70
+ - fill, border, text, and annotation colors.
71
+ - rounded corners, border weight, dashed lines, and region separators.
72
+ - typography, label placement, and text wrapping.
73
+ - final resizing and visual balance pass after the diagram is assembled and
74
+ rendered.
75
+
76
+ Produce:
77
+
78
+ - `docs/diagrams/state-uml-recreated.drawio`
79
+ - `docs/diagrams/state-uml-recreated.svg`
80
+
81
+ Validate:
82
+
83
+ - XML validity for both draw.io and SVG artifacts.
84
+ - SVG render through a browser screenshot.
85
+ - Visual endpoint QA for every connector in the rendered screenshot.
86
+ - Visual z-order QA for every connector; no arrowhead or connector endpoint may
87
+ be hidden behind the element it connects.
88
+ - Visual anchor-point QA for every connector; source and target points should be
89
+ chosen for the shortest readable orthogonal route with the fewest bend points.
90
+ - Visual diagonal/crossing QA; connectors should be orthogonal when practical
91
+ and unavoidable line crossings should have a visible jump/bridge.
92
+ - Visual layout simplification QA; if a connector bends, check whether a modest
93
+ element repositioning can make the route straighter and clearer.
94
+ - Editable-source QA; compare draw.io XML against the SVG so the source artifact
95
+ can reproduce the same geometry after editing.
96
+ - Annotation QA; for every red annotation, verify the target element or line is
97
+ clear and the arrowhead visibly lands on it.
98
+ - Checklist QA; for known difficult annotations such as Shallow History State,
99
+ Transition, Triggered Action, Exit action, Action in state, and guard labels,
100
+ verify the exact target, clearance, and connector route explicitly.
101
+ - Source-free QA; when generated without a reference, verify every rendered node,
102
+ connector, label, annotation, anchor side, and bend count against the diagram
103
+ contract before delivery.
104
+ - No whitespace errors in the repository diff.
105
+
106
+ Current source PDF:
107
+
108
+ - `/Users/polux/Downloads/Dominar los diagramas de estado en UML_ Una guía completa - Visual Paradigm Guides Spanish.pdf`
109
+
110
+ Identified source pages:
111
+
112
+ - Page 6: concurrent state diagram.
113
+ - Page 7 top: shallow history state diagram.
114
+ - Page 7 bottom: entry/exit action diagram.
@@ -0,0 +1,52 @@
1
+ # Prompt Version 10: UML Concrete Visual Regression Checklist Delta
2
+
3
+ Use this as a delta over `state-uml-recreated.prompt.md` after the ninth
4
+ rendered SVG/draw.io pass.
5
+
6
+ This version does not introduce a new conceptual rule. It turns the existing
7
+ endpoint, z-order, label-clearance, annotation-target, and layout-simplification
8
+ rules into concrete visual regression checks.
9
+
10
+ ## Append Lines
11
+
12
+ - For every red annotation, explicitly identify the target before accepting the
13
+ diagram: state, pseudo-state, history marker, transition line, internal
14
+ action, guard label, exit action, or final state.
15
+ - A red annotation arrow must not point vaguely toward a container when the
16
+ intended target is a specific child element or line.
17
+ - `Shallow History State` must point to the `H` history marker or the specific
18
+ history notation being explained; the arrowhead must not disappear behind the
19
+ `BackingUp` container.
20
+ - `Transition` in Shallow History must clearly point to the transition line it
21
+ describes and must use a bridge/jump if crossing another line.
22
+ - `Triggered Action` must point to the triggered action text or the transition
23
+ action it explains without covering the `State2` title or state body text.
24
+ - `Exit action` must point to the exit action row or the state exit notation
25
+ without invading unreadably into the `State2` body.
26
+ - `Action in state` should use a direct vertical pointer when possible; move the
27
+ annotation text to create space before accepting a horizontal-then-vertical
28
+ bend.
29
+ - `[Guard3] / ActionB` and similar guard labels must have clear spacing from the
30
+ connector they describe; the text should not sit behind or on top of the line.
31
+ - After each correction, inspect the surrounding connectors and labels because a
32
+ fix for one annotation can create a regression in nearby state or transition
33
+ labels.
34
+
35
+ ## Modify Lines
36
+
37
+ - Change `Annotation QA; for every red annotation, verify the target element or
38
+ line is clear and the arrowhead visibly lands on it` to `Annotation QA; for
39
+ every red annotation, name the exact target, verify the arrowhead visibly
40
+ lands on it, and verify the annotation does not obscure that target`.
41
+ - Change `Editable-source QA; compare draw.io XML against the SVG so the source
42
+ artifact can reproduce the same geometry after editing` to `Editable-source
43
+ QA; compare draw.io XML against the SVG so moved annotations, labels,
44
+ connectors, and target points can be reproduced after editing`.
45
+
46
+ ## Validation Additions
47
+
48
+ - Review the rendered diagram as a checklist, not only as a general visual scan.
49
+ - For each concrete item above, record whether it is pass, fixed, or accepted as
50
+ approximation.
51
+ - If a rule already exists but a concrete failure still appears, add the failure
52
+ as a checklist example rather than creating a duplicate conceptual rule.
@@ -0,0 +1,52 @@
1
+ # Prompt Version 11: Source-Free Diagram Quality Loop Delta
2
+
3
+ Use this as a delta over `state-uml-recreated.prompt.md` for diagrams created
4
+ without a source PDF, screenshot, or design reference.
5
+
6
+ This version does not depend on comparing against an external source. It makes
7
+ quality explicit before drawing begins.
8
+
9
+ ## Append Lines
10
+
11
+ - Before drawing, define a diagram contract: purpose, audience, diagram type,
12
+ node inventory, container/group inventory, relationship inventory, labels,
13
+ annotations, and expected reading flow.
14
+ - Define the exact source and target for every connector before placing shapes.
15
+ - Reserve label lanes before drawing connectors. Do not place labels where
16
+ connectors are expected to pass.
17
+ - Place elements to minimize bends before routing connectors. Prefer moving an
18
+ element or anchor point before adding bends.
19
+ - Choose connector anchors deliberately: source edge, target edge, midpoint
20
+ preference, expected bend count, and whether the route needs a jump/bridge.
21
+ - Draw in layers: containers and groups first, nodes second, connectors third,
22
+ labels fourth, annotations last.
23
+ - Prefer orthogonal connectors from the first draft. Diagonal connectors require
24
+ an explicit reason.
25
+ - If a connector needs more than one bend, pause and re-evaluate the connected
26
+ element positions before accepting the route.
27
+ - If an annotation arrow needs an awkward path, move the annotation label before
28
+ accepting the arrow route.
29
+ - After first render, run a full visual QA pass: endpoint contact, z-order,
30
+ label clearance, annotation target clarity, line crossings, shape sizing,
31
+ whitespace balance, and editable/rendered equivalence when an editable source
32
+ exists.
33
+ - Correct and re-render before delivery. A diagram is not ready after the first
34
+ valid render unless the visual QA checklist passes.
35
+
36
+ ## Modify Lines
37
+
38
+ - Change `Use the most recent PDF in ~/Downloads as source material` to `When a
39
+ source reference exists, use it as source material; when no source reference
40
+ exists, create and validate a diagram contract before drawing`.
41
+ - Change `Visual endpoint QA for every connector` to `Visual endpoint QA for
42
+ every connector, backed by the pre-declared source/target inventory`.
43
+
44
+ ## Validation Additions
45
+
46
+ - Attach or record the diagram contract when the diagram is generated without a
47
+ source reference.
48
+ - Review the rendered diagram against the contract, not against intuition.
49
+ - For every connector, record whether the final route matches the planned
50
+ source, target, anchor side, and expected bend count.
51
+ - Record residual gaps when readability requires deviating from the initial
52
+ contract.
@@ -0,0 +1,50 @@
1
+ # Prompt Version 12: Global Layout Reflow Delta
2
+
3
+ Use this as a delta over `state-uml-recreated.prompt.md` and the later prompt
4
+ versions. This version addresses the failure mode where elements are drawn once,
5
+ then labels, subcards, chips, or connectors are added without recalculating the
6
+ layout.
7
+
8
+ ## Append Lines
9
+
10
+ - After placing real text, subcards, chips, icons, and internal connectors, run a
11
+ global layout reflow pass before accepting the render.
12
+ - For every composite container, validate that all child bounds fit inside the
13
+ parent bounds with minimum padding. Child nodes include text labels, nested
14
+ boxes, badges, icons, internal connectors, annotation anchors, and metadata
15
+ chips.
16
+ - If any child touches a parent edge, overflows, clips, crowds another child, or
17
+ reduces padding below the minimum, grow the parent container before trying to
18
+ shrink text.
19
+ - If a parent container grows, recalculate neighboring element positions,
20
+ connector routes, connector labels, annotation labels, and page/canvas bounds.
21
+ A local container fix is incomplete until the whole canvas is valid again.
22
+ - Reserve connector-label lanes after final element positions are known. Labels
23
+ must sit in intentional whitespace or on readable label backgrounds; they must
24
+ not touch connector strokes, arrowheads, container borders, or other labels.
25
+ - If a connector label collides with a route, first evaluate moving the label,
26
+ then rerouting the connector, then moving one of the connected elements. Do not
27
+ accept a collision because the connector technically reaches its target.
28
+ - If two connector routes become awkward after reflow, re-evaluate source and
29
+ target anchor points before adding more bends.
30
+ - After every correction, re-run the full visual QA checklist across the entire
31
+ canvas: parent containment, child spacing, text fit, connector endpoints,
32
+ connector labels, z-order, arrowhead visibility, crossing count, and whitespace
33
+ balance.
34
+
35
+ ## Modify Lines
36
+
37
+ - Change `Re-evaluate container width, height, text fit, spacing, and visual
38
+ balance after real labels are placed` to `Recalculate container width, height,
39
+ child positions, connector routes, label lanes, and neighboring positions after
40
+ real labels and child elements are placed`.
41
+ - Change `Correct and re-render before delivery` to `Correct, reflow the global
42
+ layout, re-render, and re-check the full canvas before delivery`.
43
+
44
+ ## Validation Additions
45
+
46
+ - Record whether each composite container passed child-bounds containment.
47
+ - Record which elements moved after a parent container grew.
48
+ - Record whether connector labels are clear of lines, arrowheads, and borders.
49
+ - Record the final render pass number used for acceptance. The first render
50
+ should not be accepted unless the full global reflow checklist passes.