Diagram generation: ref-arch-driven procedure + spec validator + KB enrichment

The diagram path now follows a documented standard procedure (lookup
the closest Oracle Architecture Center reference → confirm components
→ author absolute_layout → spec validator → render → visually verify)
and ships persistent guardrails so layout regressions can't recur.

Persistent procedure changes (apply to all users, all sessions):
- tools/diagram_spec_validator.py — geometry checks (CONTAINER_TOO_THIN,
  CONTAINER_PADDING_VIOLATION, LABEL_OVERFLOW_PARENT) run BEFORE either
  renderer (drawio + PPTX). Catches the subnet-collapse / label-overflow
  bugs that the post-render drawio validator missed.
- tools/oci_diagram_gen.py + tools/oci_pptx_diagram_gen.py — call the
  spec validator before emitting any output. Adds mysql / mysql_heatwave
  type aliases.
- tools/archcenter_pattern_lookup.py — scores against cached page
  descriptions (not just the 1-line summary), supports --queries for
  multi-fragment composition, and applies synonym expansion via
  kb/architecture-center/synonyms.yaml so "LB HA cross AD" matches
  "load balancer high availability availability domain".
- kb/architecture-center/synonyms.yaml — canonical synonym table
  (load balancer, autonomous database, data guard, …) used by the
  lookup scorer.

KB enrichment:
- tools/archcenter_description_fetcher.py + 121 cached _description.md
  under kb/diagram/assets/archcenter-refs/<slug>/. Removes the runtime
  dependency on docs.oracle.com when authoring specs and feeds the
  pattern-lookup scorer.
- 110+ cached .drawio / .svg / .png references for offline reuse,
  plus the OCI Toolkit v24.2 import (kb/diagram/assets/oci-toolkit-drawio).

Documentation:
- docs/skill/output-formats.md — new "Standard diagram-generation
  procedure (MANDATORY)" + geometry rules + the new validator entry.
- SKILL.md option 2 — references the mandatory procedure.
- README.md — describes the spec validator, archcenter_pattern_lookup
  and description fetcher, and updates the KB-health table.

Tooling that backs the procedure (cumulative across recent sessions):
tools/archcenter_case_runner.py, archcenter_batch_driver.py,
archcenter_zip_downloader.py, drawio_visual_validator.py,
drawio_fidelity_eval.py, harvest_drawio_icon.py, import_oci_library.py,
oci_pptx_diagram_gen.py, oci_pptx_render.py, refresh_pptx_icon_index.py.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
root
2026-04-25 21:15:21 -03:00
parent 2491c38d4b
commit b30a4f0d32
635 changed files with 365317 additions and 1014 deletions

View File

@@ -0,0 +1,43 @@
---
last_verified: 2026-04-25
source: https://docs.oracle.com/en/solutions/implement-lbaas-error-page/index.html
diagram_asset: https://docs.oracle.com/en/solutions/implement-lbaas-error-page/img/lbaas-maintenance-page.png
pattern: cloud-native-lbaas-error-page
classification: single-region cloud-native operations workflow
---
lessons:
- Oracle Architecture Center operational workflow diagrams can place regional managed services outside the VCN while still inside the OCI region boundary. Do not force Object Storage, Monitoring, Notifications, or DNS into a subnet unless the source diagram does.
- Numbered flow badges are part of the official visual grammar for process-oriented reference architectures. Render them only when the spec provides `flow_order`.
- The LBaaS custom error page reference uses a fixed-coordinate composition rather than a standard tiered top-to-bottom layout: users and Object Storage are left of the VCN, Monitoring and Notifications are below the VCN, and DNS sits at the lower-right edge of the VCN.
- Native PowerPoint reconstruction needs icon aliases for `internet_gateway`, `functions`, `monitoring`, `notifications`, and `dns`; otherwise the renderer falls back to generic service cards.
layout_rules:
absolute_layout:
use_when:
- Reconstructing an official Architecture Center diagram from a PNG/SVG reference.
- The source diagram uses non-grid subnets, regional services outside VCN, or numbered workflow connectors.
required_fields:
- canvas
- containers
- services
- connections
validation:
- Generate draw.io and native PPTX from the same coordinate model.
- Render the coordinate model to PNG using `tools/oci_archcenter_eval.py`.
- Compare against the official PNG and inspect deviations before accepting.
service_aliases:
internet_gateway: internet_gateway
igw: internet_gateway
functions: oci_functions
function: oci_functions
monitoring: monitoring
notifications: notifications
notification: notifications
dns: dns
benchmark_case:
workspace: examples/eval-2026-04-25-lbaas-error-page
drawio_spec: examples/eval-2026-04-25-lbaas-error-page/specs/lbaas-error-page-diagram-spec.yaml
deck_spec: examples/eval-2026-04-25-lbaas-error-page/specs/lbaas-error-page-deck-spec.yaml