AISE502/Folien/AISE502_Vorlesung_7_Folien.tex

432 lines
26 KiB
TeX

% !TEX encoding = UTF-8 Unicode
% ============================================================================
% AISE502 -- AI in Software Engineering II
% Lecture 7 slides, typeset with the official FHGR beamer theme
% (beamerthemeFHGR.sty, University of Applied Sciences of the Grisons).
% Slide content is unchanged; only the presentation layer is the FHGR template.
% ============================================================================
\documentclass[aspectratio=169]{beamer}
\usetheme[showsection, titlebg=pics/theme_pics/titlepage.png]{FHGR}
% ============================================
% PACKAGES
% The theme already loads tikz, graphicx, xcolor, tabularx, colortbl,
% listings, hyperref, environ and xparse -- only the extras are needed here.
% ============================================
\usepackage[british]{babel}
\usepackage{booktabs}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{tcolorbox}
\usetikzlibrary{shapes.geometric, arrows.meta, positioning, fit, backgrounds, calc}
% ============================================
% SEMANTIC COLOURS, MAPPED ONTO THE FHGR PALETTE
% The names used throughout the slides are kept, so no slide text changes;
% they now resolve to the FHGR brand colours defined by the theme.
% ============================================
\colorlet{bankblue}{blue} % FHGR blue (4B92A4)
\colorlet{bankgreen}{green} % FHGR green (817E65)
\colorlet{bankred}{red} % FHGR red (C60219)
\colorlet{codegray}{gray} % FHGR gray (595959)
\colorlet{backcolour}{linen} % FHGR linen (E1D3B5)
\definecolor{aiviolet}{HTML}{6B4E71} % muted plum, kept distinct for the AI lens
% Attribution labels in English (theme default is German)
\renewcommand{\source}[1]{\par\hfill {\tiny\color{FHGRDeco} Source:\,\itshape #1}}
\renewcommand{\imagesource}[1]{\par\hfill {\tiny\color{FHGRDeco} Image source:\,\itshape #1}}
% ============================================
% CUSTOM TCOLORBOXES (same semantics as the script, FHGR colours)
% ============================================
\newtcolorbox{keypoint}{
colback=bankblue!7!white,
colframe=bankblue,
title=Key Concept,
fonttitle=\bfseries\small,
boxrule=0.8pt,
arc=2pt,
top=2pt, bottom=2pt, left=4pt, right=4pt
}
\newtcolorbox{examplebox}[1][]{
colback=bankgreen!10!white,
colframe=bankgreen,
title={Example: #1},
fonttitle=\bfseries\small,
boxrule=0.8pt,
arc=2pt,
top=2pt, bottom=2pt, left=4pt, right=4pt
}
\newtcolorbox{definitionbox}[1][]{
colback=linen!40!white,
colframe=camel!85!black,
title={Definition: #1},
fonttitle=\bfseries\small,
boxrule=0.8pt,
arc=2pt,
top=2pt, bottom=2pt, left=4pt, right=4pt
}
\newtcolorbox{thinkbox}{
colback=lightGray!35!white,
colframe=darkGray,
title=Discussion,
fonttitle=\bfseries\small,
boxrule=0.8pt,
arc=2pt,
top=2pt, bottom=2pt, left=4pt, right=4pt
}
\newtcolorbox{hinweisbox}{
colback=bankred!5!white,
colframe=bankred,
title=Important Note,
fonttitle=\bfseries\small,
boxrule=0.8pt,
arc=2pt,
top=2pt, bottom=2pt, left=4pt, right=4pt
}
\newtcolorbox{ailinse}[1][]{
colback=aiviolet!7!white,
colframe=aiviolet,
title={AI Lens: #1},
fonttitle=\bfseries\small,
boxrule=0.8pt,
arc=2pt,
top=2pt, bottom=2pt, left=4pt, right=4pt
}
\newtcolorbox{projektbox}{
colback=bankblue!4!white,
colframe=bankblue!70!black,
title=Project Link: Portfolio Intelligence Platform,
fonttitle=\bfseries\small,
boxrule=0.8pt,
arc=2pt,
top=2pt, bottom=2pt, left=4pt, right=4pt
}
% ============================================
% TITLE METADATA
% ============================================
\title[AI in Software Engineering II]{AISE502: AI in Software Engineering II}
\subtitle{Lecture 7: The Fit, Formally -- Three Cases, the Procedure, the Matrix\\[0.4ex]{\small Script: Part IV, Sections 30--32, 34; Section 37 (introduction)}}
\author{Dr.\ Florian Herzog}
\shortname{AISE502}
\fullname{Fachhochschule Graub\"unden, Chur -- Autumn Semester 2026}
\begin{document}
% ============================================
% TITLE SLIDE
% ============================================
\FHGRTitlePage
% ============================================
% AGENDA
% ============================================
\begin{frame}{Agenda}
\small
\begin{enumerate}\setlength\itemsep{1pt}
\item Recap: the match, seen once at small scale -- and run by you last week
\item Three matches, three stages: \textbf{C6} (gate), \textbf{C1} (veto), \textbf{C2} (holistic reading and its alarm)
\item The procedure in general -- and what a weighted sum would have destroyed
\item The matching matrix: cell semantics and the $7 \times 10$ grid
\item Reading the matrix as a whole: columns, rows, five support points
\item The measurement contract, introduced: fitness functions and the DORA metrics
\item This week's exercise: \textbf{the design-review gate and Deliverable A2}
\end{enumerate}
\end{frame}
% ============================================
% RECAP
% ============================================
\section{Recap}
\begin{frame}{Recap: where we are}
\footnotesize
\begin{center}
\small demand $\;\to\;$ supply $\;\to\;$ \textbf{match} $\;\to\;$ record $\;\to\;$ \textbf{test}
\end{center}
\vspace{0.1cm}
\textbf{Done} (weeks 1--6): Part I -- the framework and the C10 mini-match (L $-$, MM $++$, MS $\circ$); Part II -- seven capability profiles $C(p)$, the consolidated table, Maxims 3 and 4, ordinal reading only; Part III opened -- the C10 profile and the C1/C2 mirror pair (\emph{weights, not dimensions, define a class}).
\vspace{0.1cm}
\textbf{Last week's exercise}: you ran the three stages on your own platform (knock-out $\to$ veto $\to$ ordinal reading) and began the ADR -- today you will recognise every step.
\vspace{0.1cm}
\textbf{Today}:
\begin{itemize}\setlength\itemsep{1pt}
\item three cases from Part IV, \textbf{one per stage}
\item the general statement and the \textbf{seventy-cell grid}
\item the \textbf{measurement contract}, introduced
\end{itemize}
\vspace{0.1cm}
\begin{hinweisbox}
\footnotesize \textbf{A2 is due this week} -- the architecture dossier (ADR $+$ C4 $+$ measurement contract); the design-review gate closes the design phase; production code only after the gate.
\end{hinweisbox}
\end{frame}
% ============================================
% THREE MATCHES, THREE STAGES
% ============================================
\section{Three Matches, Three Stages}
\begin{frame}{Part IV opens: three matches, three stages}
\emph{\textcolor{bankblue}{What does the three-stage procedure actually do when it runs?}} -- usually far less than students expect: \textbf{most of the work happens before anything is scored}.
\vspace{0.1cm}
\footnotesize
\begin{itemize}\setlength\itemsep{1pt}
\item Every Part III class ends with a \textbf{verdict and a promise} -- a one-sentence primary and secondary recommendation, and the assurance that Part IV computes it through the three-stage procedure. You have seen one (C10) and the C1/C2 sketch; the other rows follow in weeks 8--9
\item You own both operands: {\scriptsize $R(a) = (w_1(a),\dots,w_{12}(a);\, S(a);\, K(a))$, $w_i \in \{\text{H},\text{M},\text{L}\}$ -- from A1 and Part III; $C(p) = (c_1(p),\dots,c_{12}(p);\, S(p))$, $c_i \in \{++,+,\circ,-,--\}$ -- the seven columns of Part II.} You have watched $\mathrm{fit}(a,p)$ run once at small scale (the C10 mini-match); not yet seen: \textbf{the machine at full load}
\item Cases first, generalisation after (as Parts II and III worked) -- three matches computed end to end, each exposing one stage: \textbf{C6} -- knock-out screening and shape gate (Stage 1) $\cdot$ \textbf{C1} -- veto rule with documented mitigations (Stage 2) $\cdot$ \textbf{C2} -- holistic ordinal reading with its built-in sensitivity alarm (Stage 3). Each lands on exactly the verdict its Part III section states
\end{itemize}
\vspace{0.1cm}
\begin{center}
\resizebox{\textwidth}{!}{%
\begin{tikzpicture}[
box/.style={rectangle, draw, rounded corners=3pt, align=center, font=\small\sffamily, minimum height=0.75cm, inner sep=5pt},
today/.style={box, fill=bankblue!20, draw=bankblue},
later/.style={box, fill=gray!15, draw=gray!60!black, text=gray!60!black},
node distance=0.2cm
]
\node[today] (a) {\S30 cases};
\node[today, right=of a] (b) {\S31 procedure};
\node[today, right=of b] (c) {\S32 matrix};
\node[today, right=of c] (d) {\S34 reading};
\node[today, right=of d] (e) {\S37 contract (intro)};
\node[later, right=0.7cm of e] (f) {\S33 rationales};
\node[later, right=of f] (g) {\S35 hybrids, evolution};
\node[later, right=of g] (h) {\S36 eight steps};
\node[later, right=0.7cm of h] (i) {\S37 in depth};
\node[later, right=of i] (j) {\S38 organisation};
\node[later, right=of j] (k) {\S39 limits};
\node[font=\small\sffamily\bfseries, text=bankblue, above=0.1cm of c] {today};
\node[font=\small\sffamily, text=gray!60!black, above=0.1cm of g] {Lecture 10};
\node[font=\small\sffamily, text=gray!60!black, above=0.1cm of j] {Lecture 11};
\end{tikzpicture}%
}
\end{center}
\end{frame}
\begin{frame}{Case 1 -- C6 against all seven: the shape gate}
\emph{\textcolor{bankblue}{The nightly risk run must finish by 06:00, reproduce to the bit, and cost as little as possible: which of the seven patterns can even apply for the job?}}
\vspace{0.05cm}
\footnotesize
\begin{itemize}\setlength\itemsep{0pt}
\item The C6 profile (given here as the operand; Part III, Lecture 9): High on \textbf{D2} (makespan reading), \textbf{D9} (reproducibility reading), \textbf{D10}; shape \textbf{scheduled batch}; deterministic seeds as a hard constraint
\item Before comparing a single rating, hold $S(\text{C6}) = $ scheduled batch against the native-shape row $S(p)$ of the capability table (deck 6): \textbf{only PF proceeds to Stages 2--3}; the verdict column is identical to the C6 row of the matching matrix
\end{itemize}
\vspace{-0.05cm}
\scriptsize
\renewcommand{\arraystretch}{0.85}%
\begin{center}
\begin{tabular}{@{}lp{2.6cm}p{7.6cm}c@{}}
\toprule
\textbf{Pattern} & \textbf{Native shape $S(p)$} & \textbf{Stage-1 outcome} & \textbf{Verdict} \\
\midrule
L & interactive & gate caps at $\circ$; harm clause -- no answer to makespan or checkpointing, $--$ against High D2 & $--$ \\
MM & interactive & gate caps at $\circ$: orchestration codebase around monolithic kernels & $\circ$ \\
HX & (host's) & gate caps at $\circ$: ports touch no binding dimension & $\circ$ \\
MS & interactive & gate caps; harm clause -- communication cost multiplied against High D10 & $--$ \\
EDA & stream / async & gate caps at $\circ$: job-status glue beside scheduler and DAG & $\circ$ \\
PF & scheduled batch & \textbf{gate passed} -- proceeds to Stages 2--3; no veto on $\{$D2, D9, D10$\}$ & $++$ \\
SL & event-trig., short-lived & gate caps at $\circ$: burst fan-out for communication-light sections only & $\circ$ \\
\bottomrule
\end{tabular}
\end{center}
\end{frame}
\begin{frame}{Case 1 -- one survivor, and the didactic point}
\footnotesize
\begin{itemize}\setlength\itemsep{2pt}
\item \textbf{Stages 2 and 3 -- one survivor.} Only PF reaches the veto stage, and no veto fires: against the High set $\{$D2, D9, D10$\}$ it rates $+$, $+$, $++$ (PF column, deck 6) -- throughput from data-parallel frameworks, reproducibility by construction, utilisation-driven cost
\item Its $--$ on D3 sits on a Low weight and is \emph{inert}; the holistic reading ranks a field of one
\item \textbf{Result: $\mathrm{fit}(\text{C6},\text{PF}) = {++}$, every other pattern at $\circ$ or below} -- the C6 row of the matrix, computed almost entirely at Stage 1
\item The didactic point generalises: \textbf{run the cheapest test first} -- six of seven candidates died before a single rating was weighed
\item The knock-outs of $K(a)$ belong to the same stage and work the same way: $K(\text{C1})$ eliminates any structure that cannot guarantee an ACID booking core, an immutable audit journal, and ten-plus-year retention -- \emph{before} scoring, however well it scales
\item The verdict the class's Part III section states (Lecture 9): \textbf{pipes-and-filters on HPC/batch infrastructure as primary}, serverless fan-out for bursty, communication-light parallel sections as secondary -- with the honest subsystem roles (the $\circ$ cells) stated, not hidden
\end{itemize}
\end{frame}
\begin{frame}{Case 2 -- C1: the gate passes both, the veto rule decides}
\emph{\textcolor{bankblue}{Two candidates pass the gate, both natively interactive -- and one of them cannot commit a transaction across its own internal boundaries: how does the procedure decide core banking?}}
\vspace{-0.05cm}
\footnotesize
\begin{itemize}\setlength\itemsep{0pt}
\item From the deck-6 mirror pair: C1 High on \textbf{D4, D5, D6, D7, D9}; $K(\text{C1})$: ACID booking core, BCBS 239 / FINMA auditability; shape interactive with batch edges. Contested pair: \textbf{MM against MS} -- the two columns side by side
\item \textbf{Stage 1.} Both natively interactive $\to$ the gate passes both; no hard constraint in $K(\text{C1})$ eliminates either -- \emph{a constraint names an obligation, not a pattern}
\item \textbf{Stage 2 for MS.} $c_4(\text{MS}) = {--}$: no ACID transactions across service boundaries; sagas trade atomicity for choreography complexity. D4 is High in C1 $\to$ \textbf{the veto fires and caps the cell at $-$}
\item The fact is \emph{structural}: a mitigation can only show that living without the property is \emph{survivable}
\item Monzo (deck 5): roughly 2{,}800 microservices in production banking -- under \textbf{organisational scale plus extreme technological homogeneity} (one language, one monorepo, central migration automation): a condition most organisations do not meet; the premium is paid in platform staffing with no gain for typical team sizes
\item Cap lifted \textbf{only to $\circ$}, the condition recorded in the cell rationale; MS's $--$ on D8 and D10 sit on Low weights -- no further veto fires. \textbf{Result: $\mathrm{fit}(\text{C1},\text{MS}) = \circ$}
\end{itemize}
\end{frame}
\begin{frame}{Case 2 -- stage 2 for MM, and the stage-3 reading}
\footnotesize
\begin{itemize}\setlength\itemsep{3pt}
\item \textbf{Stage 2 -- veto rule for MM.} $c_4(\text{MM}) = {++}$ (cross-module ACID transactions) -- no veto
\item But $c_5(\text{MM}) = {-}$ on High-weight D5 $\to$ caps the cell at $\circ$ -- \emph{unless a documented mitigation exists}
\item It does: \textbf{hot-standby replication of whole monolith instances} -- the classical banking high-availability tactic, in production at Fineract-class core-banking systems. The cap is lifted.
\item \textbf{Stage 3 -- holistic reading.} MM now stands at $++$ on D4, $+$ on D6, $+$ on D7, $+$ on D9 -- support on every High-weight dimension of the class, with the one structural weakness mitigated
\item \textbf{Result: $\mathrm{fit}(\text{C1},\text{MM}) = {++}$}
\item The ranking MM $\succ$ MS for the C1 core is \textbf{stable under plausible weight variation}: it would flip only if D11 (team scaling) rose to High \emph{and} the Monzo homogeneity condition held -- exactly what the C1 cell rationale (Section 33, Lecture 10) records as the escalation condition
\end{itemize}
\end{frame}
\begin{frame}{Case 2 -- two kinds of mitigation, and the C1 verdict}
\footnotesize
\begin{columns}[T]
\begin{column}{0.48\textwidth}
\textcolor{bankblue}{\textbf{Operational weakness}}
\begin{itemize}\setlength\itemsep{1pt}
\item MM's one-process blast radius (D5)
\item \emph{repaired outright} by a standard tactic -- hot standby, pod replication
\end{itemize}
\end{column}
\begin{column}{0.48\textwidth}
\textcolor{bankblue}{\textbf{Structural weakness}}
\begin{itemize}\setlength\itemsep{1pt}
\item atomicity surrendered at the boundary (MS, D4): no mitigation \emph{restores} ACID across service boundaries -- sagas buy coordination with compensating actions, not atomicity
\item can only be \emph{made survivable}, under a condition most organisations do not meet
\end{itemize}
\end{column}
\end{columns}
\vspace{0.15cm}
\begin{itemize}\setlength\itemsep{2pt}
\item The division of labour generalises: the veto rule does the heavy lifting, and the \textbf{``documented mitigation'' clause is where engineering knowledge -- not arithmetic -- enters the computation}
\item The rest of the row follows the same mechanics (Section 33, Lecture 10); in particular \textbf{HX -- a delta discipline, not a competitor -- joins MM at $++$} by isolating the long-lived booking core from volatile channels and providers
\end{itemize}
\vspace{0.1cm}
\textbf{The verdict the class's Part III section states (Lecture 9): a hexagonal modular monolith for the booking core} (MM and HX at $++$), EDA at the edges and PF for the batch runs as secondary, and microservices only when organisation size forces D11 to High -- the Monzo condition -- exactly the C1 row of the matrix.
\end{frame}
\begin{frame}{Case 3 -- C2: when scoring cannot separate the survivors}
\emph{\textcolor{bankblue}{Two finalists carry $++$ where it matters and neither dominates: what does the procedure return when scoring cannot separate the survivors?}}
\vspace{0.05cm}
\footnotesize
\begin{itemize}\setlength\itemsep{2pt}
\item C2 (from the deck-6 mirror pair): the \textbf{widest High set in the catalogue} -- D1, D3, D5, D7, D9, D11 -- and a constraint set that knocks out almost nothing; the discrimination work is done by the \emph{weights}, not the constraints
\item \textbf{Stage 1} requires one honest observation about shape: the class core has \textbf{two constitutive paths} -- the interactive read path that serves the feed, and the asynchronous fan-out path that delivers posts (the five-second delivery scenario, given here from the C2 profile of Part III, is binding for the class)
\item Neither MS (natively interactive) nor EDA (natively stream/async) is shape-foreign to the path it would carry $\to$ \textbf{the gate passes both}
\item \textbf{Stage 2} fires one veto against each, and documented practice lifts both: MS's $-$ on High-weighted D3 (mitigation: edge caching, precomputed timelines); EDA's $-$ on High-weighted D9 (mitigation: schema/contract tests, progressive delivery)
\item Both reach Stage 3 intact
\end{itemize}
\end{frame}
\begin{frame}{Case 3 -- stage 3: the comparison refuses to close}
\scriptsize
\renewcommand{\arraystretch}{0.9}%
\begin{center}
\begin{tabular}{@{}p{4.2cm}cc@{}}
\toprule
\textbf{High dimension (C2)} & \textbf{MS} & \textbf{EDA} \\
\midrule
D1 Read scalability & $++$ & $++$ \\
D3 Latency \& predictability & (mitigated) & $+$ \\
D5 Availability \& isolation & $++$ & $++$ \\
D7 Evolvability & $++$ & $++$ \\
D9 Testability \& deployability & $+$ & (mitigated) \\
D11 Team scaling & $++$ & $+$ \\
\bottomrule
\end{tabular}
\end{center}
\vspace{0.1cm}
\footnotesize
\begin{itemize}\setlength\itemsep{2pt}
\item \textbf{Neither dominates}: MS leads where \emph{teams} multiply (D9, D11 -- independent deployments), EDA where \emph{consumers} multiply (D3 on the asynchronous path; D7 in its attach-new-consumers reading)
\item The \textbf{mandatory sensitivity analysis flips the ordering under entirely plausible variation}: weight D11 the way a several-hundred-team organisation must, and MS wins; frame the feed as what it technically is -- an eventually consistent, precomputed product of an event flow -- and EDA wins
\item By Stage 3's own rule, that instability is \textbf{not noise}: it marks a genuine tradeoff point in the ATAM sense, to be escalated to scenario-based analysis rather than smoothed over
\end{itemize}
\end{frame}
\begin{frame}{Case 3 -- the record refuses the either/or}
\footnotesize
\begin{itemize}\setlength\itemsep{2pt}
\item Twitter's timeline architecture is \textbf{both patterns at once}: fan-out-on-write \emph{is} publish/subscribe -- an event flow whose product, the precomputed timeline, is served by independently scaled services
\item The honest reading of the instability is not ``the procedure failed to pick a winner'' but ``\textbf{the class genuinely needs both patterns, placed}'' -- the bridge to hybrids (Section 35, Lecture 10), where hybrids turn out to be the normal case, not the exception
\item The verdict the class's Part III section states (Lecture 8): an \textbf{EDA $+$ microservices hybrid at organisational scale} (MS and EDA at $++$), a modular monolith as secondary until that scale is \emph{measured}, not assumed -- Mastodon runs the full fan-out mechanics in a Rails monolith -- exactly the C2 row
\end{itemize}
\vspace{0.1cm}
\begin{keypoint}
\footnotesize \textbf{Three cases, three stages, one division of labour.} The knock-out screening and shape gate kill most candidates before any scoring (C6: the cheapest test runs first); the veto rule disciplines the High set and prices every mitigation as documented engineering rather than optimism (C1); the holistic ordinal reading ranks the survivors while flagging its own instability as a finding, not an error (C2). \emph{Every one of the seventy cells was produced by exactly this division of labour.}
\end{keypoint}
\end{frame}
% ============================================
% THE PROCEDURE IN GENERAL
% ============================================
\section{The Procedure in General}
\begin{frame}{The formal statement -- the deck-3 box, plus one clause}
\footnotesize
\emph{\textcolor{bankblue}{What rule were the three matches following?}} Stated briefly -- every element has already done visible work: $\mathrm{fit}(a,p)$ is the ordinal aggregate of the dimension-wise comparison of $R(a)$ and $C(p)$, same five-step scale, \textbf{non-compensatory, three stages}.
\vspace{-0.1cm}
\begin{definitionbox}[Architecture--application fit $\mathrm{fit}(a,p)$]
\footnotesize
\begin{enumerate}\setlength\itemsep{0pt}
\item \textbf{Knock-out screening and workload-shape gate.} $K(a)$ eliminates before any scoring; $S(p) \neq S(a)$ caps at $\circ$ (subsystem role), $+$ only for a \emph{constitutive} subsystem of a shape-hybrid class, $-$/$--$ where it would harm the binding scenarios. \textbf{Not shown in deck 3 -- the gate is read per constitutive path}: a pattern is not shape-foreign to a class one of whose binding scenarios constitutes a path of its native shape (Case 3: C2's fan-out delivery scenario).
\item \textbf{Veto rule on High-weight dimensions.} $c_i(p) = {--}$ on a High dimension caps at $-$; $c_i(p) = {-}$ caps at $\circ$ -- unless a documented mitigation exists (a tactic or hybrid composition with production evidence): the cell says so, the cap is lifted.
\item \textbf{Holistic ordinal reading with mandatory sensitivity analysis.} Survivors ranked by support of the High set; clustered Medium conflicts downgrade one step; a \emph{ranking with exclusions}, never ``12\,\% better''; a flip under plausible weight variation marks a tradeoff point (ATAM) $\to$ scenario-based analysis.
\end{enumerate}
\end{definitionbox}
\end{frame}
\begin{frame}{Three stages, decreasing hardness -- each with a worked face}
\footnotesize
The three stages are ordered by \textbf{decreasing hardness}, and each now has a worked face:
\vspace{0.1cm}
\renewcommand{\arraystretch}{1.0}%
\begin{center}
\begin{tabular}{@{}p{2.6cm}p{5.6cm}p{5.0cm}@{}}
\toprule
\textbf{Stage} & \textbf{What it encodes} & \textbf{Worked face} \\
\midrule
1 Knock-out and shape gate & facts no merit elsewhere can compensate -- a violated BCBS 239 obligation, an interactive pattern asked to carry a scheduled-batch core & Case 1 (C6): this stage running the show, emptying six of the row's seven cells on shape alone \\[0.2cm]
2 Veto rule & \textbf{Assumption A4}: the High weights come from the $(H,H)$ leaves of a utility tree (deck 2), so a structural failure on such a dimension fails precisely the scenarios that define the class -- unless engineering practice has produced a documented way around it & Case 2 (C1): both halves of the rule -- a mitigation that \emph{repairs} (MM's hot standby) and one that merely makes \emph{survivable under condition} (MS's Monzo condition) \\[0.2cm]
3 Holistic ordinal reading & deliberately the softest: produces an ordering, and carries a built-in alarm for its own instability & Case 3 (C2): the alarm fired and returned a hybrid rather than a false winner \\
\bottomrule
\end{tabular}
\end{center}
\end{frame}
\begin{frame}{Why the fit is not a weighted sum}
\footnotesize
\begin{itemize}\setlength\itemsep{2pt}
\item Deck 3 (Part I): $V(p) = \sum_i w_i \cdot v_i(p)$ presupposes cardinal scales, preferential independence, and weights as trade-off rates -- all three violated by ordinal profiles (A2); AHP inherits rank reversal
\item \textbf{What the three cases add -- a demonstration of what the formula would have destroyed:}
\begin{itemize}\setlength\itemsep{1pt}
\item \textbf{C6}: it would have averaged the shape gate away under good scores elsewhere
\item \textbf{C1}: it would have let MS's missing cross-service ACID be compensated by team scaling
\item \textbf{C2}: it would have manufactured a decimal-point winner exactly where the honest output is a flagged tradeoff point
\end{itemize}
\item Kept from multi-criteria decision analysis: the \emph{explication discipline} (criteria, weights, assumptions forced into the open); dropped: its arithmetic pretensions -- the matrix is an \textbf{explication and communication instrument}, not a computation that determines decisions; behind every contested cell stands \textbf{ATAM}, and, where money decides, \textbf{CBAM} (utility-response curves, return on investment)
\end{itemize}
\vspace{0.1cm}
\begin{keypoint}
\footnotesize The fit computation is \textbf{non-compensatory by design}: constraints knock out before anything is scored, structural failures on High-weight dimensions veto unless a documented mitigation exists, and only then does a holistic ordinal ranking follow -- with mandatory sensitivity analysis. \emph{A weighted sum over ordinal profiles would be formally illegitimate and would average away exactly the failures that matter most.}
\end{keypoint}
\end{frame}
\end{document}