<?xml version="1.0" encoding="UTF-8"?>
<mxfile host="Electron" modified="2026-02-23T08:00:00.000Z" agent="draw.io" version="24.0.0">
  <diagram name="Tech Lead Risk Register" id="techlead-playbook">
    <mxGraphModel dx="1300" dy="800" grid="1" gridSize="10">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />

        <!-- Title -->
        <mxCell id="title" value="Tech Lead Playbook — Risk Register &amp; Stack Assessment (Part 11)" style="text;html=1;strokeColor=none;fillColor=none;align=center;fontSize=17;fontStyle=1;" vertex="1" parent="1">
          <mxGeometry x="80" y="20" width="1060" height="40" as="geometry" />
        </mxCell>

        <!-- Strengths -->
        <mxCell id="str-bg" value="✅ Stack Strengths" style="swimlane;startSize=30;fillColor=#E8F5E9;strokeColor=#2E7D32;fontSize=13;fontStyle=1;" vertex="1" parent="1">
          <mxGeometry x="40" y="80" width="510" height="280" as="geometry" />
        </mxCell>
        <mxCell id="s1" value="&lt;b&gt;Kiota codegen pipeline&lt;/b&gt;&lt;br/&gt;Type safety from .NET model → Angular template&lt;br/&gt;Contract drift fails CI before code review" style="rounded=1;fillColor=#F1F8E9;strokeColor=#4CAF50;fontSize=11;whiteSpace=wrap;html=1;" vertex="1" parent="str-bg">
          <mxGeometry x="20" y="50" width="470" height="55" as="geometry" />
        </mxCell>
        <mxCell id="s2" value="&lt;b&gt;Signals reduce cognitive overhead&lt;/b&gt;&lt;br/&gt;CartService 80% fewer lines vs RxJS equivalent&lt;br/&gt;resource() replaces subscribe patterns" style="rounded=1;fillColor=#F1F8E9;strokeColor=#4CAF50;fontSize=11;whiteSpace=wrap;html=1;" vertex="1" parent="str-bg">
          <mxGeometry x="20" y="120" width="470" height="55" as="geometry" />
        </mxCell>
        <mxCell id="s3" value="&lt;b&gt;Clean Architecture enables parallel teams&lt;/b&gt;&lt;br/&gt;B2B pricing engine built without touching Angular&lt;br/&gt;Kiota auto-generated types for new API surface" style="rounded=1;fillColor=#F1F8E9;strokeColor=#4CAF50;fontSize=11;whiteSpace=wrap;html=1;" vertex="1" parent="str-bg">
          <mxGeometry x="20" y="190" width="470" height="55" as="geometry" />
        </mxCell>

        <!-- Weaknesses -->
        <mxCell id="weak-bg" value="⚠️ Stack Weaknesses" style="swimlane;startSize=30;fillColor=#FFEBEE;strokeColor=#C62828;fontSize=13;fontStyle=1;" vertex="1" parent="1">
          <mxGeometry x="600" y="80" width="510" height="280" as="geometry" />
        </mxCell>
        <mxCell id="w1" value="&lt;b&gt;6-month Angular release cycle&lt;/b&gt;&lt;br/&gt;Plan 1 sprint/year for major version upgrades&lt;br/&gt;Pin to LTS (even-numbered): 22, 24, 26" style="rounded=1;fillColor=#FFEBEE;strokeColor=#EF9A9A;fontSize=11;whiteSpace=wrap;html=1;" vertex="1" parent="weak-bg">
          <mxGeometry x="20" y="50" width="470" height="55" as="geometry" />
        </mxCell>
        <mxCell id="w2" value="&lt;b&gt;NgRx Signals Store documentation gap&lt;/b&gt;&lt;br/&gt;withEntities + optimistic update edge cases undocumented&lt;br/&gt;Monitor GitHub issues + NgRx Discord" style="rounded=1;fillColor=#FFEBEE;strokeColor=#EF9A9A;fontSize=11;whiteSpace=wrap;html=1;" vertex="1" parent="weak-bg">
          <mxGeometry x="20" y="120" width="470" height="55" as="geometry" />
        </mxCell>
        <mxCell id="w3" value="&lt;b&gt;SSR + TransferState manual wiring&lt;/b&gt;&lt;br/&gt;resource() + TransferState requires custom adapter&lt;br/&gt;Better HttpClient integration expected in Angular 22" style="rounded=1;fillColor=#FFEBEE;strokeColor=#EF9A9A;fontSize=11;whiteSpace=wrap;html=1;" vertex="1" parent="weak-bg">
          <mxGeometry x="20" y="190" width="470" height="55" as="geometry" />
        </mxCell>

        <!-- Risk Table -->
        <mxCell id="risk-bg" value="Risk Register" style="swimlane;startSize=30;fillColor=#FFF9C4;strokeColor=#F57F17;fontSize=13;fontStyle=1;" vertex="1" parent="1">
          <mxGeometry x="40" y="390" width="1070" height="310" as="geometry" />
        </mxCell>

        <!-- Header row -->
        <mxCell id="rh1" value="Risk" style="rounded=0;fillColor=#F57F17;fontColor=#ffffff;fontSize=12;fontStyle=1;" vertex="1" parent="risk-bg">
          <mxGeometry x="10" y="40" width="340" height="30" as="geometry" />
        </mxCell>
        <mxCell id="rh2" value="Probability" style="rounded=0;fillColor=#F57F17;fontColor=#ffffff;fontSize=12;fontStyle=1;" vertex="1" parent="risk-bg">
          <mxGeometry x="360" y="40" width="100" height="30" as="geometry" />
        </mxCell>
        <mxCell id="rh3" value="Impact" style="rounded=0;fillColor=#F57F17;fontColor=#ffffff;fontSize=12;fontStyle=1;" vertex="1" parent="risk-bg">
          <mxGeometry x="470" y="40" width="80" height="30" as="geometry" />
        </mxCell>
        <mxCell id="rh4" value="Mitigation" style="rounded=0;fillColor=#F57F17;fontColor=#ffffff;fontSize=12;fontStyle=1;" vertex="1" parent="risk-bg">
          <mxGeometry x="560" y="40" width="490" height="30" as="geometry" />
        </mxCell>

        <!-- Risk rows -->
        <mxCell id="rr1a" value="Angular major upgrade breaks SSR routes" style="rounded=0;fillColor=#FFFDE7;fontSize=11;" vertex="1" parent="risk-bg"><mxGeometry x="10" y="80" width="340" height="30" as="geometry"/></mxCell>
        <mxCell id="rr1b" value="Medium" style="rounded=0;fillColor=#FFE082;fontSize=11;" vertex="1" parent="risk-bg"><mxGeometry x="360" y="80" width="100" height="30" as="geometry"/></mxCell>
        <mxCell id="rr1c" value="High" style="rounded=0;fillColor=#FFCDD2;fontSize=11;" vertex="1" parent="risk-bg"><mxGeometry x="470" y="80" width="80" height="30" as="geometry"/></mxCell>
        <mxCell id="rr1d" value="Pin to LTS; test upgrades in staging first" style="rounded=0;fillColor=#FFFDE7;fontSize=11;" vertex="1" parent="risk-bg"><mxGeometry x="560" y="80" width="490" height="30" as="geometry"/></mxCell>

        <mxCell id="rr2a" value="Kiota codegen falls behind API changes" style="rounded=0;fillColor=#FFFDE7;fontSize=11;" vertex="1" parent="risk-bg"><mxGeometry x="10" y="120" width="340" height="30" as="geometry"/></mxCell>
        <mxCell id="rr2b" value="Low" style="rounded=0;fillColor=#C8E6C9;fontSize=11;" vertex="1" parent="risk-bg"><mxGeometry x="360" y="120" width="100" height="30" as="geometry"/></mxCell>
        <mxCell id="rr2c" value="High" style="rounded=0;fillColor=#FFCDD2;fontSize=11;" vertex="1" parent="risk-bg"><mxGeometry x="470" y="120" width="80" height="30" as="geometry"/></mxCell>
        <mxCell id="rr2d" value="CI drift check on every PR (Part 10)" style="rounded=0;fillColor=#FFFDE7;fontSize=11;" vertex="1" parent="risk-bg"><mxGeometry x="560" y="120" width="490" height="30" as="geometry"/></mxCell>

        <mxCell id="rr3a" value=".NET dev writes logic in Angular component" style="rounded=0;fillColor=#FFFDE7;fontSize=11;" vertex="1" parent="risk-bg"><mxGeometry x="10" y="160" width="340" height="30" as="geometry"/></mxCell>
        <mxCell id="rr3b" value="High" style="rounded=0;fillColor=#FFCDD2;fontSize=11;" vertex="1" parent="risk-bg"><mxGeometry x="360" y="160" width="100" height="30" as="geometry"/></mxCell>
        <mxCell id="rr3c" value="Medium" style="rounded=0;fillColor=#FFE082;fontSize=11;" vertex="1" parent="risk-bg"><mxGeometry x="470" y="160" width="80" height="30" as="geometry"/></mxCell>
        <mxCell id="rr3d" value="ESLint rule + code review checklist + pairing" style="rounded=0;fillColor=#FFFDE7;fontSize=11;" vertex="1" parent="risk-bg"><mxGeometry x="560" y="160" width="490" height="30" as="geometry"/></mxCell>

        <mxCell id="rr4a" value="Signal Forms experimental API changes" style="rounded=0;fillColor=#FFFDE7;fontSize=11;" vertex="1" parent="risk-bg"><mxGeometry x="10" y="200" width="340" height="30" as="geometry"/></mxCell>
        <mxCell id="rr4b" value="High" style="rounded=0;fillColor=#FFCDD2;fontSize=11;" vertex="1" parent="risk-bg"><mxGeometry x="360" y="200" width="100" height="30" as="geometry"/></mxCell>
        <mxCell id="rr4c" value="Medium" style="rounded=0;fillColor=#FFE082;fontSize=11;" vertex="1" parent="risk-bg"><mxGeometry x="470" y="200" width="80" height="30" as="geometry"/></mxCell>
        <mxCell id="rr4d" value="Don't use experimental APIs in production forms" style="rounded=0;fillColor=#FFFDE7;fontSize=11;" vertex="1" parent="risk-bg"><mxGeometry x="560" y="200" width="490" height="30" as="geometry"/></mxCell>

        <mxCell id="rr5a" value="Playwright E2E flakiness in CI" style="rounded=0;fillColor=#FFFDE7;fontSize=11;" vertex="1" parent="risk-bg"><mxGeometry x="10" y="240" width="340" height="30" as="geometry"/></mxCell>
        <mxCell id="rr5b" value="Medium" style="rounded=0;fillColor=#FFE082;fontSize=11;" vertex="1" parent="risk-bg"><mxGeometry x="360" y="240" width="100" height="30" as="geometry"/></mxCell>
        <mxCell id="rr5c" value="Low" style="rounded=0;fillColor=#C8E6C9;fontSize=11;" vertex="1" parent="risk-bg"><mxGeometry x="470" y="240" width="80" height="30" as="geometry"/></mxCell>
        <mxCell id="rr5d" value="--retries=2; stable data-testid selectors; test reset API" style="rounded=0;fillColor=#FFFDE7;fontSize=11;" vertex="1" parent="risk-bg"><mxGeometry x="560" y="240" width="490" height="30" as="geometry"/></mxCell>

        <!-- 6-month milestones -->
        <mxCell id="mile-bg" value="What Success Looks Like at 6 Months" style="swimlane;startSize=30;fillColor=#E8F5E9;strokeColor=#2E7D32;fontSize=12;fontStyle=1;" vertex="1" parent="1">
          <mxGeometry x="40" y="730" width="1070" height="70" as="geometry" />
        </mxCell>
        <mxCell id="mile1" value="Every dev reads&lt;br/&gt;all codebase" style="rounded=1;fillColor=#F1F8E9;strokeColor=#4CAF50;fontSize=11;" vertex="1" parent="mile-bg">
          <mxGeometry x="15" y="28" width="220" height="30" as="geometry" />
        </mxCell>
        <mxCell id="mile2" value="No single-point-of-knowledge&lt;br/&gt;cart or auth" style="rounded=1;fillColor=#F1F8E9;strokeColor=#4CAF50;fontSize=11;" vertex="1" parent="mile-bg">
          <mxGeometry x="255" y="28" width="220" height="30" as="geometry" />
        </mxCell>
        <mxCell id="mile3" value="PR comments = business logic,&lt;br/&gt;not Angular syntax" style="rounded=1;fillColor=#F1F8E9;strokeColor=#4CAF50;fontSize=11;" vertex="1" parent="mile-bg">
          <mxGeometry x="495" y="28" width="230" height="30" as="geometry" />
        </mxCell>
        <mxCell id="mile4" value="Deployments are&lt;br/&gt;boring" style="rounded=1;fillColor=#F1F8E9;strokeColor=#4CAF50;fontSize=11;fontStyle=1;" vertex="1" parent="mile-bg">
          <mxGeometry x="745" y="28" width="300" height="30" as="geometry" />
        </mxCell>

      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
