Harden bizcase, bom, deck, and diagram generators to tolerate payload
shape variants (metadata/cover/summary/line_item aliases, current_state
as string, alternate pillar keys) so MCP and CLI flat specs render
consistently. Add input-alias tests per generator.
Also loosen KB governance tests to handle multi-document service YAMLs
with optional changelogs, untrack the customer demo output under
examples/output-demo-pharma-mx/ (matches .gitignore), and ship an
ADB-S vs Aurora 500GB sample deck.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
6 improvements based on Oracle Architecture Center reference diagrams:
1. Edge label offset — labels pushed 15px away from edge midpoint via
mxGeometry offset injection, prevents overlap with icons
2. Auto-sizing containers — regions, VCNs, tenancy calculate dimensions
from content instead of using fixed sizes (DR region: 540→260px)
3. jettySize=auto on all edges — clean stubs leaving/entering shapes
4. Dual connection merging — duplicate from/to pairs merged into single
edge with combined label (e.g., dual FastConnect)
5. DRG placed OUTSIDE VCN, INSIDE region — matches Oracle ref arch
pattern where DRG is the central hub between external and VCN
6. container=1;collapsible=0 injected into container XML styles
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Fixes two issues: (1) diagrams adding unrequested components (EBS, WAF, Vault,
Monitoring, etc.) by replacing vague "implied dependencies" with a closed
whitelist of 6 technical dependencies and making pre-generation review mandatory
with 3 sections (REQUESTED/TECHNICAL/OPTIONAL). (2) Unstructured data consumption
by adding mandatory Extraction Receipt (CONFIRMED/INFERRED/MISSING), source
tracking in workload profiles, and completeness gate per engagement tier.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Root cause: elbow=vertical conflicted with orthogonalEdgeStyle + port
constraints, causing arrows to route backwards and cross content.
Changes to oci_diagram_gen.py (generic, all diagrams):
- Remove elbow=vertical from edge base style
- Use edgeStyle=orthogonalEdgeStyle explicitly in extra_style
- Add jumpStyle=arc;jumpSize=8 — crossing edges show arc, not overlap
- Remove drawpyo waypoints="orthogonal" (now controlled via extra_style
to avoid style merging conflicts)
- Vertical edges with labels: align=left so text doesn't overlap icons
- Regression tested with PharmaCorp (dual-region) and MELI (single-region)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Edges now auto-detect exit/entry ports based on relative positions of
source and target services. Uses absolute coordinates from the layout
engine to determine whether connections should exit right→left,
top→bottom, etc.
- exitX/exitY/entryX/entryY added to every edge style
- 1.5x threshold favors vertical routing over horizontal when positions
are diagonal — matches Oracle ref arch top-down subnet flow
- Eliminates crossing arrows in multi-subnet, multi-region diagrams
- Verified with both PharmaCorp (dual-region) and MELI (single-region)
Generic code fix — applies to all diagrams, not just this spec.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
oci_diagram_gen.py auto-layout improvements:
- Gateways now placed FIRST, vertically centered on VCN left edge
- Subnets offset RIGHT by gateway lane width to avoid overlap
- Gateway lane width auto-calculated from widest gateway + padding
- Network edges: teal color, thicker (2px) for visual hierarchy
- Internal edges: gray dashed for management connections
- Data edges: solid charcoal (unchanged, default)
These are generic code fixes — apply to any diagram spec, not just
the PharmaCorp demo. Verified with both PharmaCorp and MELI specs.
Also regenerated all PharmaCorp deliverables with prior fixes:
- Business case: PharmaCorp (was MELI), correct TCO/ROI/value schema
- BOM: verified SKUs from catalog, 45% global discount applied
- PDF: environment catalogue with new schema
- Diagram: clean layout with gateway offset
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
oci_bom_gen.py from_spec now reads metadata.discount_pct as fallback
when individual line items don't specify a discount. This means
discount_pct: 0.45 in the spec metadata applies 45% to every SKU.
Previously, global discount was silently ignored — only per-item
discount fields were read (defaulting to 0.0).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- oci_pdf_gen.py: auto-detect new env catalogue schema (name/sizing/cost_pct)
- business-case-spec.yaml: rewritten to match oci_bizcase_gen.py expected
schema (tco.current_state/proposed_oci with annual_* fields, roi with
three_year_roi_pct/total_investment/annual_net_benefit, value_drivers
with category/driver/quantification, roadmap.phases, recommendation.summary)
- bom-spec.yaml: all SKUs verified against oci-sku-catalog.yaml (B110627
B110629 B110632 for ExaCS X11M, B95703 for ADB-S BYOL, B88326 for
FastConnect 10G, B91628 for Object Storage, B92092 for Vault)
- diagram-spec.yaml: full dual-region architecture (231 cells, 15 services)
- Now generates: PharmaCorp business case 11 slides, correct env catalogue
in PDF, 13 SKU lines in BOM with real prices
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- oci_pdf_gen.py: add_environment_catalogue now auto-detects new schema
(name/sizing/cost_pct) vs legacy (environment/tier/databases/ocpus),
same fix as oci_deck_gen.py. Also normalizes cost_notes string to list.
- business-case-spec.yaml: created PharmaCorp spec (was using MELI).
Fixed schema: risks as {migration_risks, do_nothing_risks}, roadmap
as {phases, total_duration}, recommendation as {summary, next_steps}.
- diagram-spec.yaml: rewrote to match generator format
(tenancy.regions[].vcns[].subnets[].services[] with explicit IDs).
Now generates 231 cells, 11 containers, 15 services, 10 connections.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The diagram-spec.yaml was using a flat regions/subnets format but
the generator expects tenancy.regions[].vcns[].subnets[].services[]
with explicit IDs. Rewrote with full pharma architecture:
- Queretaro (primary): Hub VCN with 4 subnets (DB, App, Public, Mgmt),
ExaCS X11M, EBS app tier, WAF, Vault, DRG, monitoring
- Sao Paulo (DR): DR VCN with ExaCS standby, FSDR, Object Storage
- 10 connections: dual FastConnect, Data Guard, FSDR, WAF chain, RMAN
Result: 231 cells, 11 containers, 15 services, 10 connections (was empty)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Skill repo: git.tech-lad.com.br/diegoecab/oci-deal-accelerator
- MCP repo: github.com/Diegoecab/arch-mcp-oracle
- Both links on Get Started slide and closing slide
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Slide 10: MCP Server — zero setup, 14 tools over HTTP, supported
clients (Claude, Codex, Cursor, Windsurf), 1-command connection.
"Zero Python. Zero repo cloning. SA opens IDE and starts working."
- Slide 12: Get Started — Option A (MCP, recommended), Option B
(clone repo), link to github.com/Diegoecab/arch-mcp-oracle.
Placeholder for final get-started link.
- Updated closing slide with MCP repo URL.
- Takeaways now include MCP as differentiator.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
New slide 4: side-by-side table comparing Generic LLM vs OCI Deal
Accelerator across 8 dimensions (pricing, architecture, field gotchas,
competitive, WA validation, compliance, output format, improves over
time). Red header for generic LLM, green for skill.
Key message: "The LLM is the engine. The KB + tools are the fuel.
The SA is the driver."
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Two new slides replace the generic "Under the Hood":
- Slide 8: The Knowledge Base Is the Moat — 40+ YAML files of field
knowledge, auto-refreshed pricing, 123 reference architectures,
honest competitive mapping. Without KB = chatbot, with KB = domain expert.
- Slide 9: Self-Updating KB + Collaborative Field Intelligence —
auto-refresh (SKU API, Arch Center crawler), collaborative model
(findings_cli add/confirm with attribution), governance (health
dashboard, staleness detection, domain owners).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>