Skip to content

Portfolio Platform — Layered Architecture

This diagram captures the three-layer model of the portfolio platform: a content site, a governance layer, and the CI/CD pipeline that enforces both. It is the canonical visual reference for ARCHITECTURE.md §2.

flowchart TB
    subgraph L1["Layer 1 — Content Site (MkDocs Material)"]
        direction TB
        A1["docs/index.md, docs/about.md<br/>docs/architecture-philosophy.md<br/>docs/selected-work.md, docs/contact.md"]
        A2["docs/narratives/<br/>6 long-form case studies"]
        A3["docs/assets/<br/>images, favicon"]
        A4["docs/diagrams/<br/>Mermaid sources"]
        A5[("site/<br/>generated HTML")]
    end

    subgraph L2["Layer 2 — Governance"]
        direction TB
        G1["governance/terminology.yaml<br/>canonical terms + rejected variants"]
        G2["scripts/validate_governance.py<br/>terminology validator"]
        G3["scripts/run_governance.sh<br/>combined runner"]
        G4[".cas/rules/architecture_rules.md"]
        G5[".cas/patterns/patterns-catalogue.yaml"]
        G6[".cas/cas-add-or-modify-feature/<br/>.cas/cas-refactor-module/<br/>skill specifications"]
    end

    subgraph L3["Layer 3 — CI/CD"]
        direction TB
        C1["portfolio-governance.yml<br/>(PR + main push)<br/>build + terminology"]
        C2["cas-validate-sdd.yml<br/>(PR only)<br/>SDD spec presence"]
        C3["deploy.yml<br/>(main push only)<br/>build + GitHub Pages"]
    end

    A1 --> A5
    A2 --> A5
    A3 --> A5
    A4 --> A5

    G2 -. reads .-> G1
    G3 -. invokes .-> G2
    G6 -. references .-> G4
    G6 -. references .-> G5

    C1 -. invokes .-> G3
    C1 -. invokes .-> G2
    C2 -. requires spec for .-> A1
    C2 -. requires spec for .-> A2
    C2 -. requires spec for .-> G1
    C3 -. builds .-> A5

    style L1 fill:#e8f4f8,stroke:#1f6feb,stroke-width:2px,color:#0b3d5c
    style L2 fill:#fdf6e3,stroke:#b58900,stroke-width:2px,color:#5c4b00
    style L3 fill:#f0e6f6,stroke:#7d3c98,stroke-width:2px,color:#3d1f5c

Reading the diagram

  • Solid arrows inside Layer 1 represent content flow: authored Markdown → generated site/.
  • Dashed arrows between layers represent invocation or enforcement: CI workflows invoke scripts; scripts read policy files; CAS skills reference rules and patterns.
  • Each layer has a distinct color to make boundaries visible at a glance.
  • The site/ node is shown as a cylinder to signal that it is generated output, not authored content.

How this maps to code

Diagram node Repo path
A1 docs/*.md (top-level pages)
A2 docs/narratives/*.md
A3 docs/assets/
A4 docs/diagrams/*.md (this file)
A5 site/ (generated)
G1 governance/terminology.yaml
G2 scripts/validate_governance.py
G3 scripts/run_governance.sh
G4 .cas/rules/architecture_rules.md
G5 .cas/patterns/patterns-catalogue.yaml
G6 .cas/cas-add-or-modify-feature/, .cas/cas-refactor-module/
C1 .github/workflows/portfolio-governance.yml
C2 .github/workflows/cas-validate-sdd.yml
C3 .github/workflows/deploy.yml

See ARCHITECTURE.md §2 for the narrative explanation of each layer.