@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,207 @@
1
+ # Diagram Master Prompt
2
+
3
+ Use this prompt when generating, recreating, validating, or exporting diagrams.
4
+ It is source-free and applies to architecture, workflow, state, sequence,
5
+ infrastructure, timeline, roadmap, story map, swimlane, and integration
6
+ diagrams.
7
+
8
+ ## Role
9
+
10
+ You are producing a diagram artifact that must be useful to humans and safe to
11
+ handoff. Prioritize semantic correctness, readable layout, editable sources,
12
+ visual clarity, and validation evidence.
13
+
14
+ ## Classify The Work
15
+
16
+ Before drawing, classify the request:
17
+
18
+ - `semantic`: explain an idea or system. Mermaid is usually acceptable.
19
+ - `inspired-by-reference`: borrow structure or style, but exact fidelity is not
20
+ required.
21
+ - `recreation`: reproduce a source reference. Acceptance is pixel-perfect source
22
+ fidelity unless the user explicitly accepts an approximation.
23
+
24
+ For `recreation`, inventory every visible source element before drawing:
25
+ containers, labels, icons, connectors, arrowheads, line styles, colors, borders,
26
+ spacing, rotations, z-order, and page/canvas bounds.
27
+
28
+ For source-free diagrams, create a diagram contract before drawing:
29
+
30
+ - purpose and audience;
31
+ - required nodes, groups, containers, and annotations;
32
+ - relationships and connector intent;
33
+ - expected reading flow;
34
+ - target format and validation criteria;
35
+ - known constraints or non-goals.
36
+
37
+ ## Choose The Target
38
+
39
+ Use Mermaid first when the goal is semantic documentation, markdown-native
40
+ review, fast validation, or offline evidence.
41
+
42
+ Use draw.io XML or equivalent editable geometry when the goal requires exact
43
+ layout, controlled connector anchors, bend points, line jumps, rotated labels,
44
+ manual label lanes, or SVG parity.
45
+
46
+ Use a collaborative visual tool when the goal is stakeholder editing, live
47
+ review, or a team-owned visual board.
48
+
49
+ Do not treat Mermaid as a pixel-perfect recreation target when exact geometry,
50
+ icons, connector paths, rotations, or reference styling are acceptance criteria.
51
+
52
+ ## Drafting Rules
53
+
54
+ - Use domain language from the task, but keep labels short enough to remain
55
+ readable.
56
+ - Group related elements in containers only when the group adds meaning.
57
+ - Preserve clear reading flow from entry points to outcomes.
58
+ - Give repeated shapes consistent sizing, padding, typography, and spacing.
59
+ - Keep cards, groups, labels, and connector lanes visually balanced across the
60
+ canvas.
61
+ - Avoid decorative complexity unless it supports the diagram's purpose.
62
+
63
+ ## Layout And Reflow
64
+
65
+ After placing real text, subcards, chips, icons, labels, badges, and internal
66
+ connectors, run a global layout reflow before accepting the render.
67
+
68
+ For every composite container, validate actual rendered child bounds against
69
+ parent bounds. Children include text labels, nested boxes, badges, icons,
70
+ internal connectors, annotation anchors, metadata chips, and arrowheads.
71
+
72
+ If any child touches a parent edge, clips, overflows, crowds another child, or
73
+ reduces padding below the intended minimum, grow the parent container or move
74
+ children before shrinking text.
75
+
76
+ When a parent container grows, recalculate neighboring element positions,
77
+ connector routes, connector labels, annotation labels, and page/canvas bounds.
78
+ A local fix is incomplete until the whole canvas passes again.
79
+
80
+ ## Text And Bounded Labels
81
+
82
+ Long text must be layout-managed. Re-evaluate wrapping, line count, width, and
83
+ placement for every note, annotation, card title, legend item, badge, pill, and
84
+ connector label.
85
+
86
+ Text inside bounded elements must fit inside its own shape. If text grows beyond
87
+ the available width, wraps poorly, overlaps another element, or visually escapes
88
+ its shape, split it into multiple lines, grow the containing shape, or move the
89
+ element.
90
+
91
+ Treat text wrapping as a geometry change. After any bounded text wraps to more
92
+ lines, recalculate the rendered bounding box and revalidate connector lanes,
93
+ neighboring labels, parent boundaries, and page bounds. The expanded box must
94
+ not cover a connector, border, arrowhead, or nearby element it previously
95
+ cleared.
96
+
97
+ Do not use label backgrounds as a visual patch. A label background must not
98
+ hide, interrupt, or visually erase the connector it describes.
99
+
100
+ ## Connectors
101
+
102
+ Every connector must have an explicit source, target, semantic intent, endpoint
103
+ type, and preferred anchor side before final routing.
104
+
105
+ Connector intent determines the endpoint:
106
+
107
+ - a connector targeting a group or boundary stops at that boundary edge;
108
+ - a connector targeting a child element visibly attaches to that child;
109
+ - a connector must not drift inside a container unless the interior target is
110
+ intentional and unambiguous.
111
+
112
+ Prefer the simplest readable connector route:
113
+
114
+ - straight when source and target have clear line-of-sight;
115
+ - one orthogonal bend when it improves readability;
116
+ - curves, multi-bend paths, diagonals, or jumps only when they avoid a real
117
+ obstacle, crossing, or ambiguous relationship.
118
+
119
+ Before accepting a curved or multi-bend connector, verify that a straight or
120
+ orthogonal route would collide with an element, label, boundary, or reserved
121
+ lane. If no collision exists, simplify the route.
122
+
123
+ Reserve connector-label lanes after final element positions are known. A
124
+ connector label must clear the whole connector stroke, arrowhead, crossing
125
+ point, border, and adjacent labels after final wrapping and padding.
126
+
127
+ If a connector label collides with a route, evaluate fixes in this order:
128
+
129
+ 1. move the label to a clear lane;
130
+ 2. reroute the connector;
131
+ 3. move one of the connected elements;
132
+ 4. grow or reflow the containing region.
133
+
134
+ ## Z-Order And Visual Integrity
135
+
136
+ Connectors and arrowheads must remain visible and must not sit hidden behind the
137
+ elements they connect. Labels must not obscure the target they describe.
138
+
139
+ Avoid connector lines crossing over containers, labels, or important symbols
140
+ whenever practical. If crossings are unavoidable, use clear spacing or line
141
+ jumps where the target format supports them.
142
+
143
+ Validate annotation target clarity: annotation arrows must visibly land on the
144
+ element or line they describe, and annotation text must not obscure the target.
145
+
146
+ ## Validation Loop
147
+
148
+ Before accepting any rendered diagram, run a whole-canvas acceptance matrix:
149
+
150
+ - semantic completeness;
151
+ - text fit;
152
+ - parent containment;
153
+ - connector endpoints;
154
+ - connector route simplicity;
155
+ - connector-label clearance;
156
+ - label-to-label clearance;
157
+ - z-order and arrowhead visibility;
158
+ - whitespace balance;
159
+ - page/canvas bounds;
160
+ - editable-source/render parity when an editable source exists.
161
+
162
+ After every correction, re-render and inspect the whole canvas again. A local
163
+ fix is incomplete until no new collisions, hidden endpoints, containment
164
+ failures, or whitespace problems appear elsewhere.
165
+
166
+ A regenerated version must materially change geometry when it claims to fix a
167
+ visual finding. If the same collision, overflow, endpoint gap, or unnecessary
168
+ route persists across versions, stop re-rendering and change the layout
169
+ strategy: move elements, grow containers, reserve a different lane, or reroute
170
+ the connector.
171
+
172
+ Do not deliver the first render of a source-free diagram unless the complete
173
+ acceptance matrix passes.
174
+
175
+ ## Evidence To Record
176
+
177
+ Record the following before handoff:
178
+
179
+ - target classification: `semantic`, `inspired-by-reference`, or `recreation`;
180
+ - chosen output target and reason;
181
+ - final artifact paths;
182
+ - final render pass number;
183
+ - whether text wrapping changed geometry;
184
+ - whether parent containment passed after final reflow;
185
+ - whether connector endpoints match their semantic targets;
186
+ - whether curved or multi-bend connectors have concrete obstacle reasons;
187
+ - source-vs-output gaps for recreations;
188
+ - residual visual risks, if any.
189
+
190
+ ## Final Artifact Hygiene
191
+
192
+ Before final delivery, keep only:
193
+
194
+ - accepted editable source;
195
+ - accepted rendered output;
196
+ - prompt master or final prompt when it adds traceability;
197
+ - minimum QA evidence needed for review;
198
+ - short handoff note with final paths and residual risks.
199
+
200
+ Archive or exclude intermediate previews, failed renders, temporary prompts,
201
+ superseded SVGs, one-off correction notes, and source-specific prompt fragments.
202
+ Keep audit-relevant iterations in workflow evidence, an explicit archive folder,
203
+ or an ignored output location.
204
+
205
+ Do not promote source-specific text, raw user prompts, secrets, or one-off
206
+ coordinates into reusable prompt guidance. Rewrite reusable learnings as
207
+ source-free rules before adding them to the prompt bank.
@@ -0,0 +1,22 @@
1
+ # Enterprise Diagram Set
2
+
3
+ Task: DIAGRAM-ENTERPRISE-PROCESS-TIMELINE-SET
4
+
5
+ ## Diagrams
6
+
7
+ 1. `salesforce-enterprise-architecture.svg`
8
+ - Salesforce enterprise solution architecture with web, mobile,
9
+ integrations, SAP, Oracle, AWS, and on-prem systems.
10
+ 2. `lead-to-account-swimlanes.svg`
11
+ - Swimlane process from lead prospecting through account conversion.
12
+ 3. `product-implementation-timeline.svg`
13
+ - Multi-year product implementation timeline from discovery to release.
14
+
15
+ ## Validation Focus
16
+
17
+ - Text fits inside cards, chips, labels, swimlane cells, and milestone blocks.
18
+ - Parent regions contain all child elements with padding.
19
+ - Connector labels sit in lanes and do not hide connector strokes.
20
+ - Long labels are wrapped instead of escaping their shapes.
21
+ - The diagrams are source-free candidates and should be reviewed against their
22
+ stated intent, not against a visual reference.
@@ -0,0 +1,38 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="1500" height="920" viewBox="0 0 1500 920" role="img" aria-labelledby="title desc">
2
+ <title id="title">Lead prospecting to account conversion swimlanes</title>
3
+ <desc id="desc">Swimlane process from lead prospecting through qualification, account conversion, and customer onboarding.</desc>
4
+ <defs><marker id="arrow" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="8" markerHeight="8" orient="auto"><path d="M0 0 L10 5 L0 10 z" fill="#475569"/></marker>
5
+ <style>.font{font-family:Arial,Helvetica,sans-serif}.title{font-size:28px;font-weight:700;fill:#172033}.sub{font-size:13px;fill:#4b596c}.laneLabel{font-size:13px;font-weight:700;fill:#526174;text-transform:uppercase}.laneA{fill:#f3f8ff}.laneB{fill:#f7fbf5}.laneC{fill:#fff7ed}.laneD{fill:#f8f5ff}.laneE{fill:#fff8f8}.border{fill:none;stroke:#94a3b8;stroke-width:1.5}.step{fill:#fff;stroke:#64748b;stroke-width:1.5}.stepTitle{font-size:14px;font-weight:700;fill:#1f2a3d}.small{font-size:12px;fill:#445267}.edge{fill:none;stroke:#475569;stroke-width:2;marker-end:url(#arrow)}.edgeSoft{fill:none;stroke:#64748b;stroke-width:2;stroke-dasharray:7 5;marker-end:url(#arrow)}.pill{fill:#fff;stroke:#d8dee8;stroke-width:1}.pillText{font-size:12px;fill:#263445}</style></defs>
6
+ <rect width="1500" height="920" fill="#fff"/>
7
+ <g class="font">
8
+ <text class="title" x="48" y="56">Lead Prospecting To Account Conversion</text>
9
+ <text class="sub" x="48" y="80">Source-free swimlane process candidate for lead lifecycle validation.</text>
10
+ <rect class="border" x="48" y="126" width="1404" height="724" rx="16"/>
11
+ <rect class="laneA" x="48" y="126" width="1404" height="126" rx="16"/><text class="laneLabel" x="72" y="172">Marketing</text>
12
+ <rect class="laneB" x="48" y="252" width="1404" height="126"/><text class="laneLabel" x="72" y="298">Sales Development</text>
13
+ <rect class="laneC" x="48" y="378" width="1404" height="126"/><text class="laneLabel" x="72" y="424">Account Executive</text>
14
+ <rect class="laneD" x="48" y="504" width="1404" height="168"/><text class="laneLabel" x="72" y="550">Sales Operations</text>
15
+ <rect class="laneE" x="48" y="672" width="1404" height="178" rx="16"/><text class="laneLabel" x="72" y="718">Customer Success</text>
16
+ <path class="border" d="M48 252 H1452 M48 378 H1452 M48 504 H1452 M48 672 H1452"/>
17
+
18
+ <rect class="step" x="212" y="158" width="150" height="62" rx="10"/><text class="stepTitle" x="232" y="184">Capture Lead</text><text class="small" x="232" y="206">campaign form</text>
19
+ <rect class="step" x="420" y="158" width="160" height="62" rx="10"/><text class="stepTitle" x="440" y="184">Score + Enrich</text><text class="small" x="440" y="206">fit and intent</text>
20
+ <rect class="step" x="640" y="284" width="166" height="62" rx="10"/><text class="stepTitle" x="660" y="310">SDR Qualification</text><text class="small" x="660" y="332">BANT / ICP</text>
21
+ <rect class="step" x="866" y="284" width="164" height="62" rx="10"/><text class="stepTitle" x="886" y="310">Create Meeting</text><text class="small" x="886" y="332">accepted handoff</text>
22
+ <rect class="step" x="866" y="410" width="164" height="70" rx="10"/><text class="stepTitle" x="886" y="436">Discovery</text><text class="small" x="886" y="458">pain, value,</text><text class="small" x="886" y="474">decision process</text>
23
+ <rect class="step" x="1090" y="410" width="166" height="70" rx="10"/><text class="stepTitle" x="1110" y="436">Opportunity</text><text class="small" x="1110" y="458">qualified pipeline</text><text class="small" x="1110" y="474">next step set</text>
24
+ <rect class="step" x="1090" y="546" width="166" height="82" rx="10"/><text class="stepTitle" x="1110" y="572">Convert Lead</text><text class="small" x="1110" y="594">account, contact,</text><text class="small" x="1110" y="612">opportunity</text>
25
+ <rect class="step" x="1282" y="546" width="132" height="82" rx="10"/><text class="stepTitle" x="1300" y="572">Data QA</text><text class="small" x="1300" y="594">dedupe and</text><text class="small" x="1300" y="612">ownership</text>
26
+ <rect class="step" x="1282" y="724" width="132" height="78" rx="10"/><text class="stepTitle" x="1300" y="750">Onboard</text><text class="small" x="1300" y="772">welcome plan</text><text class="small" x="1300" y="790">success owner</text>
27
+
28
+ <path class="edge" d="M362 189 H420"/><rect class="pill" x="370" y="162" width="42" height="20" rx="4"/><text class="pillText" x="378" y="176">raw</text>
29
+ <path class="edge" d="M580 189 H610 Q640 189 640 315"/><rect class="pill" x="592" y="214" width="82" height="20" rx="4"/><text class="pillText" x="600" y="228">MQL route</text>
30
+ <path class="edge" d="M806 315 H866"/><rect class="pill" x="820" y="288" width="34" height="20" rx="4"/><text class="pillText" x="828" y="302">SQL</text>
31
+ <path class="edge" d="M948 346 V410"/><rect class="pill" x="966" y="368" width="76" height="20" rx="4"/><text class="pillText" x="974" y="382">meeting held</text>
32
+ <path class="edge" d="M1030 445 H1090"/><rect class="pill" x="1040" y="418" width="38" height="20" rx="4"/><text class="pillText" x="1048" y="432">SAO</text>
33
+ <path class="edge" d="M1173 480 V546"/><rect class="pill" x="1192" y="508" width="92" height="20" rx="4"/><text class="pillText" x="1200" y="522">conversion</text>
34
+ <path class="edge" d="M1256 587 H1282"/><rect class="pill" x="1256" y="518" width="76" height="20" rx="4"/><text class="pillText" x="1264" y="532">validate</text>
35
+ <path class="edge" d="M1348 628 V724"/><rect class="pill" x="1364" y="660" width="76" height="38" rx="4"/><text class="pillText" x="1372" y="676">handoff</text><text class="pillText" x="1372" y="692">package</text>
36
+ <path class="edgeSoft" d="M640 330 H560 Q532 330 532 220"/><rect class="pill" x="514" y="280" width="106" height="38" rx="4"/><text class="pillText" x="522" y="296">recycle if not</text><text class="pillText" x="522" y="312">sales-ready</text>
37
+ </g>
38
+ </svg>
@@ -0,0 +1,45 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="1500" height="860" viewBox="0 0 1500 860" role="img" aria-labelledby="title desc">
2
+ <title id="title">Product implementation timeline</title>
3
+ <desc id="desc">Two to three year product implementation timeline from discovery through release and scale.</desc>
4
+ <defs><marker id="arrow" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="8" markerHeight="8" orient="auto"><path d="M0 0 L10 5 L0 10 z" fill="#475569"/></marker>
5
+ <style>.font{font-family:Arial,Helvetica,sans-serif}.title{font-size:28px;font-weight:700;fill:#172033}.sub{font-size:13px;fill:#4b596c}.axis{stroke:#475569;stroke-width:3;marker-end:url(#arrow)}.tick{stroke:#64748b;stroke-width:1.5}.year{font-size:13px;font-weight:700;fill:#526174}.phase{fill:#fff;stroke:#64748b;stroke-width:1.5}.p1{fill:#f3f8ff}.p2{fill:#f7fbf5}.p3{fill:#fff7ed}.p4{fill:#f8f5ff}.p5{fill:#fff8f8}.phaseTitle{font-size:15px;font-weight:700;fill:#1f2a3d}.small{font-size:12px;fill:#445267}.label{font-size:13px;font-weight:700;fill:#526174;text-transform:uppercase}.milestone{fill:#fff;stroke:#64748b;stroke-width:1.5}.diamond{fill:#fff;stroke:#475569;stroke-width:1.5}.lane{fill:#f8fafc;stroke:#cbd5e1;stroke-width:1}.pill{fill:#fff;stroke:#d8dee8;stroke-width:1}.pillText{font-size:12px;fill:#263445}</style></defs>
6
+ <rect width="1500" height="860" fill="#fff"/>
7
+ <g class="font">
8
+ <text class="title" x="48" y="56">Product Implementation Timeline To Release</text>
9
+ <text class="sub" x="48" y="80">Source-free 30-month implementation plan with staged releases, gates, and adoption waves.</text>
10
+ <line class="axis" x1="100" y1="426" x2="1396" y2="426"/>
11
+ <g>
12
+ <line class="tick" x1="132" y1="406" x2="132" y2="446"/><text class="year" x="106" y="388">Q1 Y1</text>
13
+ <line class="tick" x1="300" y1="406" x2="300" y2="446"/><text class="year" x="274" y="388">Q2 Y1</text>
14
+ <line class="tick" x1="468" y1="406" x2="468" y2="446"/><text class="year" x="442" y="388">Q3 Y1</text>
15
+ <line class="tick" x1="636" y1="406" x2="636" y2="446"/><text class="year" x="610" y="388">Q4 Y1</text>
16
+ <line class="tick" x1="804" y1="406" x2="804" y2="446"/><text class="year" x="778" y="388">Q1 Y2</text>
17
+ <line class="tick" x1="972" y1="406" x2="972" y2="446"/><text class="year" x="946" y="388">Q2 Y2</text>
18
+ <line class="tick" x1="1140" y1="406" x2="1140" y2="446"/><text class="year" x="1114" y="388">Q3 Y2</text>
19
+ <line class="tick" x1="1308" y1="406" x2="1308" y2="446"/><text class="year" x="1282" y="388">Q4 Y2</text>
20
+ </g>
21
+
22
+ <rect class="lane" x="84" y="120" width="1334" height="112" rx="14"/><text class="label" x="112" y="154">Strategy And Discovery</text>
23
+ <rect class="phase p1" x="150" y="164" width="244" height="52" rx="10"/><text class="phaseTitle" x="170" y="186">Vision + Business Case</text><text class="small" x="170" y="206">funding, KPIs, roadmap</text>
24
+ <rect class="phase p1" x="428" y="164" width="244" height="52" rx="10"/><text class="phaseTitle" x="448" y="186">Domain Discovery</text><text class="small" x="448" y="206">journeys, risks, data</text>
25
+
26
+ <rect class="lane" x="84" y="250" width="1334" height="112" rx="14"/><text class="label" x="112" y="284">Foundation And MVP</text>
27
+ <rect class="phase p2" x="318" y="294" width="300" height="52" rx="10"/><text class="phaseTitle" x="338" y="316">Platform Foundation</text><text class="small" x="338" y="336">architecture, CI/CD, security</text>
28
+ <rect class="phase p2" x="666" y="294" width="300" height="52" rx="10"/><text class="phaseTitle" x="686" y="316">MVP Build</text><text class="small" x="686" y="336">core journeys and integrations</text>
29
+
30
+ <rect class="lane" x="84" y="490" width="1334" height="112" rx="14"/><text class="label" x="112" y="524">Scale And Hardening</text>
31
+ <rect class="phase p3" x="646" y="534" width="284" height="52" rx="10"/><text class="phaseTitle" x="666" y="556">Pilot Release</text><text class="small" x="666" y="576">limited users, feedback loop</text>
32
+ <rect class="phase p3" x="982" y="534" width="284" height="52" rx="10"/><text class="phaseTitle" x="1002" y="556">Enterprise Hardening</text><text class="small" x="1002" y="576">performance, DR, compliance</text>
33
+
34
+ <rect class="lane" x="84" y="626" width="1334" height="126" rx="14"/><text class="label" x="112" y="660">Launch And Adoption</text>
35
+ <rect class="phase p4" x="1102" y="674" width="216" height="58" rx="10"/><text class="phaseTitle" x="1122" y="696">GA Release</text><text class="small" x="1122" y="716">go-live, support readiness</text>
36
+ <rect class="phase p5" x="1328" y="674" width="72" height="58" rx="10"/><text class="phaseTitle" x="1344" y="696">Scale</text><text class="small" x="1342" y="716">waves</text>
37
+
38
+ <polygon class="diamond" points="636,410 652,426 636,442 620,426"/><rect class="pill" x="574" y="448" width="124" height="38" rx="5"/><text class="pillText" x="582" y="464">Architecture</text><text class="pillText" x="582" y="480">gate</text>
39
+ <polygon class="diamond" points="972,410 988,426 972,442 956,426"/><rect class="pill" x="912" y="448" width="120" height="38" rx="5"/><text class="pillText" x="920" y="464">Pilot go/no-go</text><text class="pillText" x="920" y="480">decision</text>
40
+ <polygon class="diamond" points="1140,410 1156,426 1140,442 1124,426"/><rect class="pill" x="1078" y="448" width="124" height="38" rx="5"/><text class="pillText" x="1086" y="464">Release</text><text class="pillText" x="1086" y="480">readiness</text>
41
+ <polygon class="diamond" points="1308,410 1324,426 1308,442 1292,426"/><rect class="pill" x="1250" y="448" width="116" height="38" rx="5"/><text class="pillText" x="1258" y="464">GA sign-off</text><text class="pillText" x="1258" y="480">and launch</text>
42
+
43
+ <rect class="pill" x="520" y="774" width="458" height="42" rx="8"/><text class="pillText" x="536" y="792">Timeline assumes a 24 to 30 month product journey with phased delivery,</text><text class="pillText" x="536" y="808">progressive release gates, adoption waves, and post-launch scaling.</text>
44
+ </g>
45
+ </svg>
@@ -0,0 +1,54 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="1500" height="940" viewBox="0 0 1500 940" role="img" aria-labelledby="title desc">
2
+ <title id="title">Salesforce enterprise solution architecture</title>
3
+ <desc id="desc">Enterprise architecture diagram showing Salesforce, web app, mobile app, integration layer, SAP, Oracle, AWS, and on-prem backends.</desc>
4
+ <defs>
5
+ <marker id="arrow" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="8" markerHeight="8" orient="auto"><path d="M0 0 L10 5 L0 10 z" fill="#475569"/></marker>
6
+ <marker id="arrow-start" viewBox="0 0 10 10" refX="1" refY="5" markerWidth="8" markerHeight="8" orient="auto"><path d="M10 0 L0 5 L10 10 z" fill="#475569"/></marker>
7
+ <style>
8
+ .font{font-family:Arial,Helvetica,sans-serif}.title{font-size:28px;font-weight:700;fill:#172033}.subtitle{font-size:13px;fill:#4b596c}
9
+ .region{fill:#f8fafc;stroke:#94a3b8;stroke-width:1.5}.channel{fill:#f3f8ff;stroke:#8fb2dc;stroke-width:1.5}.sf{fill:#f5fbff;stroke:#7fb7df;stroke-width:1.5}.int{fill:#fff7ed;stroke:#e5ad70;stroke-width:1.5}.back{fill:#f7fbf5;stroke:#91bd9b;stroke-width:1.5}.sec{fill:#fff5f5;stroke:#e0a1a1;stroke-width:1.5}
10
+ .card{fill:#fff;stroke:#64748b;stroke-width:1.5}.label{font-size:13px;font-weight:700;fill:#526174;text-transform:uppercase}.cardTitle{font-size:17px;font-weight:700;fill:#1f2a3d}.small{font-size:12px;fill:#445267}.badgeText{font-size:10px;font-weight:700;fill:#fff}
11
+ .pill{fill:#fff;stroke:#d8dee8;stroke-width:1}.pillText{font-size:12px;fill:#263445}.edge{fill:none;stroke:#475569;stroke-width:2;marker-end:url(#arrow)}.edgeBoth{fill:none;stroke:#475569;stroke-width:2;marker-start:url(#arrow-start);marker-end:url(#arrow)}.edgeSoft{fill:none;stroke:#64748b;stroke-width:2;stroke-dasharray:7 5;marker-end:url(#arrow)}
12
+ </style>
13
+ </defs>
14
+ <rect width="1500" height="940" fill="#fff"/>
15
+ <g class="font">
16
+ <text class="title" x="48" y="56">Salesforce Enterprise Solution Architecture</text>
17
+ <text class="subtitle" x="48" y="80">Source-free enterprise architecture candidate with channels, Salesforce, integrations, security, and heterogeneous backends.</text>
18
+
19
+ <rect class="channel" x="52" y="140" width="260" height="470" rx="18"/><text class="label" x="84" y="174">Digital Channels</text>
20
+ <rect class="card" x="92" y="236" width="180" height="110" rx="12"/><circle cx="124" cy="270" r="17" fill="#2563eb"/><text class="badgeText" x="124" y="274" text-anchor="middle">WEB</text><text class="cardTitle" x="156" y="266">Web App</text><text class="small" x="114" y="300">customer portal</text><text class="small" x="114" y="320">agent workspace</text>
21
+ <rect class="card" x="92" y="430" width="180" height="112" rx="12"/><circle cx="124" cy="464" r="17" fill="#7c3aed"/><text class="badgeText" x="124" y="468" text-anchor="middle">MOB</text><text class="cardTitle" x="156" y="460">Mobile App</text><text class="small" x="114" y="494">field sales</text><text class="small" x="114" y="514">service actions</text>
22
+
23
+ <rect class="sec" x="360" y="116" width="220" height="610" rx="18"/><text class="label" x="392" y="150">Security Edge</text>
24
+ <rect class="card" x="400" y="244" width="140" height="104" rx="12"/><circle cx="432" cy="278" r="17" fill="#dc2626"/><text class="badgeText" x="432" y="282" text-anchor="middle">IAM</text><text class="cardTitle" x="462" y="274">Identity</text><text class="small" x="422" y="308">SSO / MFA</text><text class="small" x="422" y="328">policy claims</text>
25
+ <rect class="card" x="400" y="434" width="140" height="104" rx="12"/><circle cx="432" cy="468" r="17" fill="#d97706"/><text class="badgeText" x="432" y="472" text-anchor="middle">API</text><text class="cardTitle" x="462" y="464">API Edge</text><text class="small" x="422" y="498">WAF, throttling</text><text class="small" x="422" y="518">TLS policy</text>
26
+
27
+ <rect class="sf" x="640" y="116" width="330" height="610" rx="18"/><text class="label" x="672" y="150">Salesforce Platform</text>
28
+ <rect class="card" x="688" y="212" width="232" height="98" rx="12"/><circle cx="720" cy="244" r="17" fill="#0ea5e9"/><text class="badgeText" x="720" y="248" text-anchor="middle">SF</text><text class="cardTitle" x="752" y="240">Sales Cloud</text><text class="small" x="714" y="274">leads, accounts</text><text class="small" x="714" y="292">opportunities</text>
29
+ <rect class="card" x="688" y="374" width="232" height="98" rx="12"/><circle cx="720" cy="406" r="17" fill="#059669"/><text class="badgeText" x="720" y="410" text-anchor="middle">SVC</text><text class="cardTitle" x="752" y="402">Service Cloud</text><text class="small" x="714" y="436">cases, entitlements</text><text class="small" x="714" y="454">knowledge</text>
30
+ <rect class="card" x="688" y="536" width="232" height="116" rx="12"/><circle cx="720" cy="570" r="17" fill="#4f46e5"/><text class="badgeText" x="720" y="574" text-anchor="middle">D360</text><text class="cardTitle" x="752" y="566">Data 360</text><text class="small" x="714" y="600">profiles, segments</text><text class="small" x="714" y="620">consent signals</text>
31
+
32
+ <rect class="int" x="1030" y="116" width="210" height="610" rx="18"/><text class="label" x="1062" y="150">Integration Layer</text>
33
+ <rect class="card" x="1070" y="250" width="130" height="116" rx="12"/><circle cx="1102" cy="284" r="17" fill="#0f766e"/><text class="badgeText" x="1102" y="288" text-anchor="middle">MW</text><text class="cardTitle" x="1132" y="280">API /</text><text class="cardTitle" x="1132" y="300">Middleware</text><text class="small" x="1092" y="334">events, ETL</text><text class="small" x="1092" y="352">orchestration</text>
34
+ <rect class="card" x="1070" y="482" width="130" height="112" rx="12"/><circle cx="1102" cy="516" r="17" fill="#0ea5e9"/><text class="badgeText" x="1102" y="520" text-anchor="middle">BUS</text><text class="cardTitle" x="1132" y="512">Event Bus</text><text class="small" x="1092" y="546">streaming</text><text class="small" x="1092" y="566">replay</text>
35
+
36
+ <rect class="back" x="1290" y="116" width="160" height="610" rx="18"/><text class="label" x="1320" y="150">Backends</text>
37
+ <rect class="card" x="1318" y="194" width="104" height="72" rx="10"/><text class="cardTitle" x="1346" y="230">SAP</text><text class="small" x="1336" y="250">ERP</text>
38
+ <rect class="card" x="1318" y="306" width="104" height="72" rx="10"/><text class="cardTitle" x="1338" y="342">Oracle</text><text class="small" x="1336" y="362">finance</text>
39
+ <rect class="card" x="1318" y="418" width="104" height="72" rx="10"/><text class="cardTitle" x="1340" y="454">AWS</text><text class="small" x="1336" y="474">services</text>
40
+ <rect class="card" x="1318" y="530" width="104" height="86" rx="10"/><text class="cardTitle" x="1340" y="566">On-Prem</text><text class="small" x="1336" y="588">legacy</text><text class="small" x="1336" y="606">systems</text>
41
+
42
+ <path class="edge" d="M272 291 H400"/><rect class="pill" x="298" y="260" width="106" height="20" rx="4"/><text class="pillText" x="306" y="274">web identity</text>
43
+ <path class="edge" d="M272 486 H400"/><rect class="pill" x="298" y="506" width="112" height="20" rx="4"/><text class="pillText" x="306" y="520">mobile access</text>
44
+ <path class="edge" d="M540 296 H688"/><rect class="pill" x="566" y="264" width="102" height="20" rx="4"/><text class="pillText" x="574" y="278">claims + SSO</text>
45
+ <path class="edge" d="M540 486 H614 Q640 486 640 423 H688"/><rect class="pill" x="560" y="506" width="94" height="20" rx="4"/><text class="pillText" x="568" y="520">API traffic</text>
46
+ <path class="edgeBoth" d="M920 262 H1030"/><rect class="pill" x="940" y="230" width="72" height="20" rx="4"/><text class="pillText" x="948" y="244">CRM APIs</text>
47
+ <path class="edgeBoth" d="M920 594 H1004 Q1030 594 1030 538 H1070"/><rect class="pill" x="930" y="612" width="90" height="20" rx="4"/><text class="pillText" x="938" y="626">profile sync</text>
48
+ <path class="edgeBoth" d="M1200 292 H1318"/><rect class="pill" x="1222" y="260" width="82" height="20" rx="4"/><text class="pillText" x="1230" y="274">ERP flow</text>
49
+ <path class="edgeBoth" d="M1200 320 H1280 Q1290 320 1290 342 H1318"/><rect class="pill" x="1216" y="334" width="92" height="20" rx="4"/><text class="pillText" x="1224" y="348">finance sync</text>
50
+ <path class="edgeBoth" d="M1200 538 H1280 Q1290 538 1290 454 H1318"/><rect class="pill" x="1212" y="500" width="90" height="20" rx="4"/><text class="pillText" x="1220" y="514">cloud events</text>
51
+ <path class="edgeBoth" d="M1200 566 H1272 Q1290 566 1290 573 H1318"/><rect class="pill" x="1212" y="586" width="86" height="20" rx="4"/><text class="pillText" x="1220" y="600">legacy API</text>
52
+ <path class="edgeSoft" d="M804 652 V790 H1135 V594"/><rect class="pill" x="858" y="768" width="174" height="38" rx="5"/><text class="pillText" x="866" y="784">async customer data</text><text class="pillText" x="866" y="800">and observability events</text>
53
+ </g>
54
+ </svg>
@@ -0,0 +1,124 @@
1
+ # Diagram Pixel V2 Review
2
+
3
+ Task: DIAGRAM-PIXEL-REGEN-V2
4
+
5
+ ## Generated Artifacts
6
+
7
+ - `output/diagram-experiments/pixel-v2/roadmap/preview-v2.png`
8
+ - `output/diagram-experiments/pixel-v2/sfdc-implementation/preview-v2.png`
9
+ - `output/diagram-experiments/pixel-v2/swimlane/preview-v2.png`
10
+ - `output/diagram-experiments/pixel-v2/timeline/preview-v2.png`
11
+
12
+ ## Evaluation Method
13
+
14
+ The v2 candidates were rendered from the current SVG sources with Playwright to
15
+ create fresh screenshots for visual review. Each render was compared against the
16
+ downloaded source reference at the diagram level: page framing, primary
17
+ containers, typography scale, element order, connector behavior, spacing, and
18
+ semantic completeness.
19
+
20
+ ## Roadmap Findings
21
+
22
+ Source: `output/diagram-experiments/sources/roadmap-tech-1.png`
23
+
24
+ - Not pixel-perfect. The current output omits the source page chrome, footer URL,
25
+ and top timestamp line. That is acceptable only if the contract is diagram-only,
26
+ not full-page recreation.
27
+ - Title and legend placement are close, but the title text is too large and too
28
+ high compared with the source.
29
+ - The source roadmap grid starts lower and uses a taller body; the generated
30
+ grid is compressed vertically.
31
+ - Initiative cards do not match the source y positions and several month spans
32
+ are visually shifted.
33
+ - The source uses real component icons; the generated output uses text/dot
34
+ abstractions. For pixel recreation this must be declared as a deviation or
35
+ replaced with icon-equivalent symbols.
36
+
37
+ Prompt corrections needed:
38
+
39
+ - Declare whether page chrome must be recreated or intentionally cropped out.
40
+ - Include exact grid bounds, lane label bounds, and month column width before
41
+ drawing cards.
42
+ - Re-evaluate each card against start/end dates using the month grid as a hard
43
+ placement constraint.
44
+
45
+ ## SFDC Implementation Findings
46
+
47
+ Source: `output/diagram-experiments/sources/sfdc-impl-1.png`
48
+
49
+ - Not pixel-perfect. The output is a simplified architecture approximation; the
50
+ source has many more internal cards, badges, side rails, external systems, and
51
+ integration bars.
52
+ - Layer count and high-level reading direction are correct, but the density and
53
+ semantic completeness are much lower than the source.
54
+ - The source has a right-side marketing platform rail in the application layer;
55
+ the output omits that structure.
56
+ - Several source connectors run through intermediate bars and external data
57
+ systems; the output collapses them into broad vertical lines.
58
+ - The source left rail labels are taller and align exactly with source layer
59
+ bands; the output is visually clean but not faithful.
60
+
61
+ Prompt corrections needed:
62
+
63
+ - Split architecture recreation into inventory first, then render. The inventory
64
+ must list every lane, system card, internal subcard, external rail, and
65
+ connector group before drawing.
66
+ - Add a density mode: `faithful recreation` keeps small labels and badges;
67
+ `readable abstraction` may simplify them but must not be called pixel-perfect.
68
+ - For source matching, connectors must be grouped by source/target layer and
69
+ validated against visible landing points.
70
+
71
+ ## Swimlane Findings
72
+
73
+ Source: `output/diagram-experiments/sources/swimlane-def-01.png`
74
+
75
+ - The current output is not recreating the visible source. The source image is a
76
+ website page with an embedded monitor illustration, while the output is an
77
+ independent swimlane process diagram.
78
+ - This is acceptable as a source-free diagram experiment, but not as a
79
+ recreation.
80
+ - The output itself has readable lane structure and mostly orthogonal routing.
81
+ It still needs a stricter source-free contract for lane count, process steps,
82
+ decision labels, and unused whitespace.
83
+
84
+ Prompt corrections needed:
85
+
86
+ - Classify the source as `page screenshot`, `embedded diagram`, or
87
+ `source-free inspiration` before generation.
88
+ - If the source contains an embedded diagram inside another illustration, crop or
89
+ isolate the embedded diagram before asking for pixel recreation.
90
+ - If source-free, define acceptance criteria for visual quality independent of
91
+ the source.
92
+
93
+ ## Timeline Findings
94
+
95
+ Source: `output/diagram-experiments/sources/timeline-steps-01.png`
96
+
97
+ - The current output is a clean source-free timeline, not a recreation. The
98
+ source is a web page screenshot with a small preview image and Vecteezy chrome.
99
+ - The timeline pattern is plausible, but it does not match the reference
100
+ preview's tiny scale, web chrome, typography, or content.
101
+ - This confirms the rule gap: downloaded marketplace PDFs/pages need source
102
+ region extraction before diagram generation.
103
+
104
+ Prompt corrections needed:
105
+
106
+ - Extract or define the diagram region before generation.
107
+ - If the source only shows a tiny preview, mark pixel-perfect recreation as
108
+ blocked until a higher-resolution diagram region is available.
109
+ - For source-free timelines, validate even milestone spacing, vertical stem
110
+ alignment, text fit, and balanced top/bottom annotation density.
111
+
112
+ ## Overall Result
113
+
114
+ The v2 renders are useful baseline artifacts, but none should be accepted as
115
+ pixel-perfect recreation. The next implementation pass should update the master
116
+ diagram prompt/rules to force:
117
+
118
+ - source classification before rendering;
119
+ - element inventory before drawing;
120
+ - explicit recreation mode versus source-free mode;
121
+ - post-render screenshot review before delivery;
122
+ - connector landing-point validation;
123
+ - text fit and container bounds validation;
124
+ - page-crop or diagram-region extraction for downloaded web/PDF sources.
@@ -0,0 +1,14 @@
1
+ gantt
2
+ title Technology Component Roadmap
3
+ dateFormat YYYY-MM-DD
4
+ axisFormat %b
5
+
6
+ section Sales Cloud
7
+ Environment Set-Up :env, 2026-01-15, 2026-02-01
8
+ Account and Contact Management :acct, 2026-02-05, 2026-03-15
9
+ Custom Lead Conversion Process :lead, 2026-02-15, 2026-04-10
10
+ Opportunity and Quote Mgmt :opp, 2026-03-15, 2026-04-15
11
+ CPQ Integration :cpq, 2026-03-20, 2026-04-25
12
+ Forecasting :forecast, 2026-04-20, 2026-05-15
13
+ Territory Management :territory, 2026-04-15, 2026-05-10
14
+
@@ -0,0 +1,48 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="1280" height="820" viewBox="0 0 1280 820" role="img" aria-labelledby="title desc">
2
+ <title id="title">Technology roadmap experiment</title>
3
+ <desc id="desc">Six-month technology component roadmap with timeline columns and initiative cards.</desc>
4
+ <defs>
5
+ <style>
6
+ .font{font-family:Arial,Helvetica,sans-serif}.title{fill:#153e75;font-size:24px;font-weight:700}.sub{fill:#153e75;font-size:12px}.month{fill:#111827;font-size:14px;font-weight:700}.lane{fill:#24324f;font-size:17px;font-weight:700}.card{fill:#fff;stroke:#687185;stroke-width:1.6}.cardTitle{fill:#111827;font-size:13px;font-weight:700}.meta{fill:#111827;font-size:10px}.legend{fill:#fff;stroke:#d0d4dd}.dotBlue{fill:#123e75}.dotPurple{fill:#2d125f}.dotViolet{fill:#4b2aad}.grid{stroke:#8d96a9;stroke-width:1}.iconText{fill:#fff;font-size:11px;font-weight:700}
7
+ </style>
8
+ </defs>
9
+ <rect width="1280" height="820" fill="#fff"/>
10
+ <g class="font">
11
+ <text class="title" x="70" y="156">Technology Component Roadmap</text>
12
+ <text class="sub" x="70" y="184">Specific components deployed to assist planning, budgeting, and dependency review.</text>
13
+ <path d="M520 86 C565 136 565 196 520 246 H1190 V86 Z" fill="#e5e5e5"/>
14
+ <rect class="legend" x="610" y="106" width="520" height="100" rx="8"/>
15
+ <g transform="translate(640 132)">
16
+ <circle class="dotBlue" cx="0" cy="0" r="14"/><text class="iconText" x="0" y="4" text-anchor="middle">A</text><text class="meta" x="26" y="4">Authentication</text>
17
+ <circle class="dotBlue" cx="160" cy="0" r="14"/><text class="iconText" x="160" y="4" text-anchor="middle">M</text><text class="meta" x="186" y="4">App Menu</text>
18
+ <circle class="dotPurple" cx="320" cy="0" r="14"/><text class="iconText" x="320" y="4" text-anchor="middle">P</text><text class="meta" x="346" y="4">Pro Code</text>
19
+ <circle class="dotPurple" cx="440" cy="0" r="14"/><text class="iconText" x="440" y="4" text-anchor="middle">L</text><text class="meta" x="466" y="4">Lightning</text>
20
+ <circle class="dotBlue" cx="0" cy="54" r="14"/><text class="iconText" x="0" y="58" text-anchor="middle">D</text><text class="meta" x="26" y="58">Administration</text>
21
+ <circle class="dotViolet" cx="160" cy="54" r="14"/><text class="iconText" x="160" y="58" text-anchor="middle">LC</text><text class="meta" x="186" y="58">Low Code</text>
22
+ <circle class="dotViolet" cx="320" cy="54" r="14"/><text class="iconText" x="320" y="58" text-anchor="middle">DB</text><text class="meta" x="346" y="58">Potential LDV</text>
23
+ </g>
24
+ <rect x="220" y="280" width="940" height="470" fill="#fafafa" stroke="#687185"/>
25
+ <rect x="84" y="365" width="136" height="385" fill="#fff" stroke="#687185"/>
26
+ <text class="lane" x="152" y="565" text-anchor="middle">Sales Cloud</text>
27
+ <g>
28
+ <path class="grid" d="M376 280V750M532 280V750M688 280V750M844 280V750M1000 280V750"/>
29
+ <path class="grid" d="M220 365H1160"/>
30
+ <text class="month" x="298" y="328" text-anchor="middle">January</text>
31
+ <text class="month" x="454" y="328" text-anchor="middle">February</text>
32
+ <text class="month" x="610" y="328" text-anchor="middle">March</text>
33
+ <text class="month" x="766" y="328" text-anchor="middle">April</text>
34
+ <text class="month" x="922" y="328" text-anchor="middle">May</text>
35
+ <text class="month" x="1078" y="328" text-anchor="middle">June</text>
36
+ </g>
37
+ <g>
38
+ <rect class="card" x="270" y="390" width="160" height="140" rx="10"/><text class="cardTitle" x="285" y="424">Environment Set-Up</text><text class="meta" x="285" y="454">Start Date: January 15</text><text class="meta" x="285" y="476">End Date: February 1</text><text class="meta" x="285" y="498">Dependencies: None</text>
39
+ <circle class="dotBlue" cx="295" cy="514" r="10"/><circle class="dotPurple" cx="335" cy="514" r="10"/><circle class="dotBlue" cx="375" cy="514" r="10"/><circle class="dotBlue" cx="415" cy="514" r="10"/>
40
+ <rect class="card" x="414" y="610" width="190" height="112" rx="10"/><text class="cardTitle" x="429" y="644">Account and Contact</text><text class="cardTitle" x="429" y="662">Management</text><text class="meta" x="429" y="692">Start Date: February 5</text><text class="meta" x="429" y="714">End Date: March 15</text>
41
+ <rect class="card" x="520" y="512" width="310" height="112" rx="10"/><text class="cardTitle" x="535" y="546">Custom Lead Conversion Process</text><text class="meta" x="535" y="576">Start Date: February 15</text><text class="meta" x="535" y="598">End Date: April 10</text><circle class="dotViolet" cx="674" cy="604" r="12"/>
42
+ <rect class="card" x="636" y="610" width="190" height="112" rx="10"/><text class="cardTitle" x="651" y="644">Opportunity and Quote</text><text class="cardTitle" x="651" y="662">Management</text><text class="meta" x="651" y="692">Start Date: March 15</text><circle class="dotViolet" cx="707" cy="704" r="12"/><circle class="dotPurple" cx="743" cy="704" r="12"/>
43
+ <rect class="card" x="754" y="390" width="190" height="112" rx="10"/><text class="cardTitle" x="769" y="424">CPQ Integration</text><text class="meta" x="769" y="454">Start Date: March 20</text><text class="meta" x="769" y="476">End Date: April 25</text>
44
+ <rect class="card" x="880" y="510" width="190" height="112" rx="10"/><text class="cardTitle" x="895" y="544">Forecasting</text><text class="meta" x="895" y="574">Start Date: April 20</text><text class="meta" x="895" y="596">End Date: May 15</text><circle class="dotViolet" cx="975" cy="604" r="12"/>
45
+ <rect class="card" x="858" y="624" width="190" height="112" rx="10"/><text class="cardTitle" x="873" y="658">Territory Management</text><text class="meta" x="873" y="688">Start Date: April 15</text><text class="meta" x="873" y="710">End Date: May 10</text><circle class="dotViolet" cx="948" cy="712" r="12"/><circle class="dotPurple" cx="982" cy="712" r="12"/>
46
+ </g>
47
+ </g>
48
+ </svg>