Auto-commit 2026-09-07 15:09: 12 files changed, 147 insertions(+), 129 deletions(-)

This commit is contained in:
herzogflorian 2026-09-07 15:09:30 +02:00
parent e47f225073
commit 161b95c757
12 changed files with 147 additions and 129 deletions

View File

@ -180,7 +180,7 @@
\footnotesize
\begin{columns}[T]
\begin{column}{0.48\textwidth}
\textbf{Eight of the ten primary recommendations of \S 33 are compositions:}
\textbf{Eight of the ten primary recommendations of \S 33 are compositions -- among them:}
\vspace{0.05cm}
\begin{center}
@ -227,7 +227,7 @@ C10 & a hexagonal core with pipelines and orchestration \\
\end{itemize}
\end{frame}
\begin{frame}{Fit is a function of time -- Strangler Fig in both directions, and sacrificial architecture}
\begin{frame}{Fit is a function of time -- Strangler Fig both ways, sacrificial architecture}
\footnotesize
\begin{itemize}\setlength\itemsep{3pt}
\item \textbf{Strangler Fig.} Grow the new structure around the old, intercepting and capturing function by function -- the migration stays \emph{incremental and stoppable at any point}
@ -250,10 +250,10 @@ C10 & a hexagonal core with pipelines and orchestration \\
lbl/.style={font=\footnotesize\sffamily, align=center}
]
\node[extern] (L) at (0,0) {L\\Layered monolith};
\node[core] (MM) at (7,0) {MM\\Modular monolith};
\node[comp] (MS) at (14,0) {MS\\Microservices};
\node[core] (MM) at (7.6,0) {MM\\Modular monolith};
\node[comp] (MS) at (15.2,0) {MS\\Microservices};
\node[extern] (SL) at (0,-3.2) {SL\\Serverless orchestration};
\node[comp] (DOM) at (14,-3.2) {Domain-bundled\\services (DOMA)};
\node[comp] (DOM) at (15.2,-3.2) {Domain-bundled\\services (DOMA)};
\draw[arr] (L) -- node[lbl, above=1pt] {enforce domain boundaries\\(Packwerk, ArchUnit, Modulith)} (MM);
\draw[arr] (MM) -- node[lbl, above=1pt] {Strangler-Fig extraction\\when D11 measurably binds} (MS);
@ -297,7 +297,6 @@ C10 & a hexagonal core with pipelines and orchestration \\
\end{projektbox}
\end{frame}
% ============================================
% THE DECISION PROCEDURE
% ============================================
@ -321,7 +320,7 @@ C10 & a hexagonal core with pipelines and orchestration \\
(ii) Quality attribute scenarios & six-part scenarios with response measures \\
(iii) Utility tree & $(H,H)$ leaves $=$ the weights of $R(a)$ \\
(iv) Pre-filter via the matrix & shortlist of two to three candidates or compositions \\
(v) Trade-off analysis (ATAM-light) & sensitivity and tradeoff points, risks, weight variation \\
(v) Trade-off analysis (ATAM-light) & sensitivity and trade-off points, risks, weight variation \\
(vi) Decide and record as ADR & MADR record with drivers and options \\
(vii) Measurement contract & fitness functions with thresholds \\
(viii) Measure in operation & DORA and QA measures continually, Lehman indicators quarterly \\
@ -354,12 +353,12 @@ C10 & a hexagonal core with pipelines and orchestration \\
\item \textbf{(iv) Pre-filter candidate patterns via the matrix.} Knock-out constraints and shape gate first, then the veto rule (the three stages of Lecture 7). Output: \textbf{two to three candidate patterns or compositions}, including the hybrid options named in the relevant class row
\item \textbf{(v) Trade-off analysis (ATAM-light).} Walk the $(H,H)$ scenarios against each candidate's tactic bundle; classify each point found as \emph{risk} or \emph{non-risk}
\item Where money decides, extend with \textbf{CBAM} utility-response curves -- what is $99.99\,\%$ availability \emph{worth}, versus $99.9\,\%$?
\item \textcolor{codegray}{Lecture 3's rule, now mandatory at step (v):} \textbf{sensitivity analysis} -- vary the weights plausibly; if the recommendation flips, you have found a genuine tradeoff point that deserves \textbf{stakeholder negotiation, not a formula}
\item \textcolor{codegray}{Lecture 3's rule, now mandatory at step (v):} \textbf{sensitivity analysis} -- vary the weights plausibly; if the recommendation flips, you have found a genuine trade-off point that deserves \textbf{stakeholder negotiation, not a formula}
\end{itemize}
\vspace{0.1cm}
\begin{definitionbox}[Sensitivity point / tradeoff point]
\footnotesize \textbf{Sensitivity point}: one decision, large effect on \emph{one} attribute. \textbf{Tradeoff point}: one decision, opposing effects on \emph{several} attributes.
\begin{definitionbox}[Sensitivity point / trade-off point]
\footnotesize \textbf{Sensitivity point}: one decision, large effect on \emph{one} attribute. \textbf{Trade-off point}: one decision, opposing effects on \emph{several} attributes.
\end{definitionbox}
\end{frame}
@ -463,12 +462,12 @@ C10 AI-native analysis / advisory & $-$ & {\boldmath$++$} & {\boldmath$++$} & $\
\footnotesize Two candidates, both compositions -- the hybrid options named in the class row, exactly as step (iv) prescribes.
\end{frame}
\begin{frame}{The reference run -- step (v): ATAM-light, one sensitivity point, one tradeoff point}
\begin{frame}{The reference run -- step (v): ATAM-light, sensitivity and trade-off points}
\begin{examplebox}[Decision run for the Portfolio Intelligence Platform (class C10) -- step (v)]
\footnotesize \textbf{(v) ATAM-light.} Walking the $(H,H)$ scenarios against both candidates identifies
\begin{itemize}\setlength\itemsep{1pt}
\item one dominant \textbf{sensitivity point}: the placement of the \textbf{LLM gateway}, on which auditability, cost telemetry, and migration cost all hinge
\item one genuine \textbf{tradeoff point}: LLM \textbf{context length} (answer quality up; cost and latency down)
\item one genuine \textbf{trade-off point}: LLM \textbf{context length} (answer quality up; cost and latency down)
\end{itemize}
\vspace{0.05cm}
\textbf{Weight variation test:} flips nothing between (a) and (b) for the core; it \emph{does} flip the job-spine choice when audit-log completeness is weighted maximally -- recorded as a \textbf{risk to be retired by a spike}.
@ -481,8 +480,8 @@ C10 AI-native analysis / advisory & $-$ & {\boldmath$++$} & {\boldmath$++$} & $\
\footnotesize \textcolor{codegray}{Against the C10 profile of Lecture 6: D5 $=$ M, D10 $=$ H -- CBAM here is a weight comparison, not a curve.}
\end{frame}
\begin{frame}{The reference run -- steps (vi)--(viii): ADR, contract, operation, evolution paths}
\begin{examplebox}[Decision run for the Portfolio Intelligence Platform (class C10) -- steps (vi)--(viii)]
\begin{frame}{The reference run -- steps (vi)--(viii): ADR, contract, operation, paths}
\begin{examplebox}[Decision run for the Portfolio Intelligence Platform -- steps (vi)--(viii)]
\footnotesize
\begin{itemize}\setlength\itemsep{1pt}
\item \textbf{(vi) ADR.} Recorded as \textbf{ADR-007}: decision drivers $=$ the utility-tree weights; considered options $=$ the matrix shortlist -- \emph{one matrix row, narrated}
@ -544,7 +543,7 @@ steps (v)/(vi)
\end{tcolorbox}
\vspace{0.15cm}
\footnotesize The options block is the record form of the step-(iv) shortlist: the ASCII ratings (++, +, o, --) are the C10 row, and every exclusion names its veto.
\footnotesize The options block is the record form of the step-(iv) shortlist: the ASCII ratings (++, +, o, -) are the C10 row; the one exclusion names its veto (L: veto D7), MS is capped at o, not vetoed -- exactly the step-(iv) reading.
\end{column}
\end{columns}
\end{frame}
@ -586,13 +585,12 @@ steps (vii)/(viii)
\begin{enumerate}\setlength\itemsep{4pt}
\item Do your \textbf{considered options} name the matrix row and the vetoes behind each exclusion -- or only the winner?
\item Which of the \textbf{seven ADR-007 fitness functions} does your measurement contract carry, with a threshold and a cadence? Which is missing?
\item Your \textbf{step (v)}: what was your sensitivity point, what your tradeoff point -- and did any weight variation flip a choice?
\item Your \textbf{step (v)}: what was your sensitivity point, what your trade-off point -- and did any weight variation flip a choice?
\item Which \textbf{evolution path} did you declare -- and is the seam for it bought as a module or port, or would it require a process boundary?
\end{enumerate}
\end{thinkbox}
\end{frame}
% ============================================
% THE TEN ROWS IN DETAIL
% ============================================
@ -691,6 +689,8 @@ SL & $\circ$ & viral spikes suit elastic functions (veto D3: cold starts), yet s
\end{frame}
\begin{frame}{C3 -- back-office / workflow: day-one simplicity vs.\ multi-decade evolvability}
\footnotesize \textcolor{codegray}{Lecture 3's Discussion predicted this row: L $+$, MM $++$, MS $--$.}
\vspace{-0.1cm}
\begin{center}
\scriptsize
\renewcommand{\arraystretch}{0.85}%
@ -709,7 +709,7 @@ SL & $\circ$ & sporadic office-hours load fits scale-to-zero economics, but the
\end{tabular}
\end{center}
\vspace{-0.05cm}
\footnotesize \textbf{Primary: modular monolith with externalised process logic (a Camunda-class workflow engine behind a port) -- central trade-off: day-one simplicity vs.\ multi-decade evolvability.} \textcolor{codegray}{(Lecture 3's Discussion -- L $+$, MM $++$, MS $--$ -- predicted this row.)}
\footnotesize \textbf{Primary: modular monolith with externalised process logic (a Camunda-class workflow engine behind a port) -- central trade-off: day-one simplicity vs.\ multi-decade evolvability.}
\end{frame}
\begin{frame}{C4 -- ERP core: the strongest anti-fit in the grid}
@ -803,6 +803,8 @@ SL & $+$ & scheduled, spiky transformation jobs fit pay-per-run functions (the $
\end{frame}
\begin{frame}{C8 -- real-time streaming: a log with stream processors}
\footnotesize \textcolor{codegray}{The documented Uber stack: Kafka $+$ Flink $+$ OLAP serving (Fu and Soman 2021).}
\vspace{-0.1cm}
\begin{center}
\scriptsize
\renewcommand{\arraystretch}{0.85}%
@ -821,7 +823,7 @@ SL & $-$ & per-event invocation at sustained millions of events per second is do
\end{tabular}
\end{center}
\vspace{-0.05cm}
\footnotesize \textbf{Primary: EDA (log-centric broker topology) with streaming pipes-and-filters as the processing layer -- Kafka $+$ Flink $+$ OLAP serving, the Uber stack -- central trade-off: delivery semantics vs.\ operational complexity and cost.}
\footnotesize \textbf{Primary: EDA (log-centric broker topology) with streaming pipes-and-filters as the processing layer -- central trade-off: delivery semantics vs.\ operational complexity and cost.}
\end{frame}
\begin{frame}{C9 -- collaboration / messaging: monolithic core, specialised push layer}
@ -866,6 +868,8 @@ SL & $\circ$ & event-glue around batch APIs fits (spiky advisory load hits the $
\bottomrule
\end{tabular}
\end{center}
\vspace{-0.05cm}
\footnotesize \textbf{Primary: hexagonal modular monolith core with pipelines and an orchestrated agent workflow -- the verdict and the determinism boundary on the next frame.}
\end{frame}
\begin{frame}{C10 -- the verdict: a designed hybrid, and the determinism boundary}
@ -970,10 +974,11 @@ C10 & HX-MM core $+$ PF $+$ orchestrated agents (EDA job/audit spine) & agent au
\begin{itemize}\small
\item fitness-function taxonomy in CI/CD
\item the four DORA metrics and the coupling finding
\item the four-layer cascade
\item the four-layer cascade and the C10 reference contract
\item the cost of change: Boehm vs.\ Menzies
\item Conway's law and Team Topologies as the third fit dimension
\item limits of the theory applied to itself
\item AI Lens on both axes; your project's contract
\item limits of the theory applied to itself; Maxim 9
\end{itemize}
\end{column}
\begin{column}{0.42\textwidth}
@ -993,7 +998,6 @@ C10 & HX-MM core $+$ PF $+$ orchestrated agents (EDA job/audit spine) & agent au
\end{columns}
\end{frame}
% ============================================
% END
% ============================================

View File

@ -201,9 +201,9 @@
arr/.style={-{Stealth[length=2.5mm]}, thick, gray!60!black}
]
\node[ax] (axisa) at (0,2.4) {\textbf{Axis A}\\AI as tool: agents, assistants};
\node[ax] (axisb) at (5.2,2.4) {\textbf{Axis B}\\AI as component: LLM, ML, solver};
\node[ax] (axisb) at (5.6,2.4) {\textbf{Axis B}\\AI as component: LLM, ML, solver};
\node[proc] (sdlc) at (0,0) {Development process\\(specify, build, verify, operate)};
\node[core] (system) at (5.2,0) {Delivered system\\(structure, quality attributes)};
\node[core] (system) at (5.6,0) {Delivered system\\(structure, quality attributes)};
\draw[arr] (axisa) -- node[right, font=\scriptsize\sffamily, align=left]{shifts SDLC\\economics} (sdlc);
\draw[arr] (axisb) -- node[right, font=\scriptsize\sffamily, align=left]{stretches quality\\attribute space} (system);
\draw[arr] (sdlc) -- node[above, font=\scriptsize\sffamily]{produces} (system);
@ -257,10 +257,10 @@
\end{frame}
\begin{frame}{The full empirical record, 2023--2025}
\scriptsize The two cases are the extreme corners of a larger record -- seven strands, 2023--2025, from randomised experiments to organisational telemetry and longitudinal code analysis; read every row \emph{setting first, finding second}.
\scriptsize The two cases are the extreme corners of a larger record -- seven strands, 2023--2025, from RCTs to organisational telemetry and longitudinal code analysis; read every row \emph{setting first, finding second}:
\vspace{-0.15cm}
\renewcommand{\arraystretch}{0.8}%
\renewcommand{\arraystretch}{0.78}%
\begin{center}
\begin{tabular}{@{}>{\raggedright\arraybackslash}p{2.4cm}>{\raggedright\arraybackslash}p{3.8cm}>{\raggedright\arraybackslash}p{6.8cm}@{}}
\toprule
@ -278,7 +278,7 @@ Stack Overflow survey & $>$49{,}000 developers & 84\,\% use or plan to use AI; \
\end{center}
\vspace{-0.22cm}
\scriptsize \textcolor{codegray}{Caution (GitHub's own telemetry-plus-survey study): the best predictor of \emph{perceived} productivity is the suggestion acceptance rate, not the persistence of accepted code -- much vendor-reported ``productivity'' evidence measures perception, not verified output; Case 2's perception gap is the controlled-trial demonstration of the same fact.}
\scriptsize \textcolor{codegray}{Caution (GitHub's own telemetry-plus-survey study): the best predictor of \emph{perceived} productivity is the suggestion acceptance rate, not the persistence of accepted code -- perception, not verified output; Case 2's perception gap is the controlled-trial demonstration of the same fact.}
\end{frame}
\begin{frame}{The system level: DORA 2024 and 2025}
@ -683,8 +683,8 @@ Integration form & gateway $+$ async $+$ cache & serving endpoint $+$ MLOps pipe
\begin{frame}{Three differences, 28 tests -- AI Lens: Parnas meets CACE}
\footnotesize
\begin{itemize}\setlength\itemsep{1pt}
\item \textbf{Amershi et al.\ (Microsoft product teams)} -- three fundamental differences between ML-based and classical development: (1) \emph{data} discovery, versioning, labelling, schema management: harder than and qualitatively different from code management, no Git-equivalent of comparable maturity; (2) model customisation and reuse demand combined SE and ML competence; (3) \textbf{AI components are harder to modularise than software modules} -- entangled (CACE), non-monotonic error behaviour, poorly predictable model interactions
\item Operational counterpart -- the \textbf{ML Test Score}: a rubric of \textbf{28 concrete tests} and monitoring requirements across data, model development, infrastructure, and monitoring, distilled from Google production experience -- production readiness made measurable; a ready-made checklist for the course project
\item \textbf{Amershi et al.\ (Microsoft product teams)} -- three fundamental differences from classical development: (1) \emph{data} discovery, versioning, labelling, schema management: harder than and qualitatively different from code management, no Git-equivalent of comparable maturity; (2) model customisation and reuse demand combined SE and ML competence; (3) \textbf{AI components are harder to modularise than software modules} -- entangled (CACE), non-monotonic error behaviour, poorly predictable model interactions
\item Operational counterpart -- the \textbf{ML Test Score}: a rubric of \textbf{28 concrete tests} and monitoring requirements across data, model development, infrastructure, and monitoring, from Google production experience: production readiness made measurable -- a checklist for the course project
\end{itemize}
\vspace{0.05cm}
@ -736,11 +736,12 @@ Integration form & gateway $+$ async $+$ cache & serving endpoint $+$ MLOps pipe
\draw[arr] (gw.east |- prov1.west) -- (prov1.west);
\draw[arr] (gw.east |- prov2.west) -- (prov2.west);
\draw[arr] (gw.east |- local.west) -- (local.west);
\draw[arr] ([xshift=-0.4cm]core.south) -- node[left, font=\scriptsize\sffamily]{non-interactive jobs} ([xshift=0.0cm]queue.north);
\draw[arr] ([xshift=-0.4cm]core.south) -- node[right, font=\scriptsize\sffamily]{non-interactive jobs} ([xshift=0.0cm]queue.north);
\draw[arr] (queue.east) -- (workers.west);
\draw[arr] (workers.north) |- ([yshift=-0.9cm]gw.west);
\draw[arr] (gw.south) -- node[right, font=\scriptsize\sffamily]{every output} (guard.north);
\draw[arr] (guard.west) -- ++(-0.4,0) -- ++(0,1.1) -| node[left, font=\scriptsize\sffamily, pos=0.9, align=right]{validated result\\or rejection} ([xshift=-0.3cm]core.south east);
\draw[arr] (guard.south) -- (8.8,-2.75) -- (-2.3,-2.75) -- (-2.3,1.0) -- (core.west |- 0,1.0);
\node[font=\scriptsize\sffamily, anchor=north] at (3.3,-2.8) {validated result or rejection};
\draw[arr, dashed] (eval.west) -- (guard.east);
\draw[arr, dashed] (eval.north) |- ([yshift=-0.2cm]gw.south east);
\end{tikzpicture}%

View File

@ -150,14 +150,14 @@
\begin{frame}{Recap: where we are}
\footnotesize
\begin{itemize}\setlength\itemsep{1pt}
\item Part V is the framework's stress test on two axes: \textbf{Axis A} -- AI in the process; \textbf{Axis B} -- AI in the product (components that are non-deterministic, fallible, latency-heavy, priced per call)
\item Part V is the framework's stress test on two axes: \textbf{Axis A} -- AI in the process (agentic tools, verification bottleneck, guardrails); \textbf{Axis B} -- AI in the product (components that are non-deterministic, fallible, latency-heavy, priced per call)
\item Lecture 12: Axis-A evidence -- two RCTs and their resolution; the \textbf{verification bottleneck} (Maxim 7: generation is cheap, verification and architecture are binding -- D7 and D9 gain weight); Axis A compact: documentation as control interface, fitness functions as operating licence, who merges answers; Axis B: sentiment call wired wrong and right; three component types; SE4AI classics; reference architecture (\textbf{LLM gateway} as single measurement point); eval-harness basics
\item The C10 verdict has been computed \textbf{three times}: mini-match (L, MM, MS -- Lecture 3), profile and real systems (Lecture 6), the full row with its cell rationales (Lecture 10; the $7 \times 10$ matrix itself was read in Lecture 7)
\item Lecture 6 filed the outlook: agent orchestration is a \emph{composition pattern} reusing the catalogue's topologies -- workflows before agents ($15\times$ tokens). Today that claim is paid out
\item Today: Axis B completed (threats, regulation) $\to$ how AI \emph{shifts} the matrix $\to$ the eighth pattern with a profile sketch $\to$ synthesis and exam orientation. \textbf{The last lecture of new material}; week 14: one lesson synthesis and exam hints, three lessons final presentations, architecture defence and peer reviews (A3, M6)
\end{itemize}
\vspace{0.1cm}
\vspace{0.03cm}
\centering\textcolor{codegray}{tenth class (done) -- twelfth dimension (done) -- shifted cells (today) -- one composition pattern (today)}
\end{frame}
@ -242,7 +242,7 @@ LLM10 & Unbounded consumption & Rate limits, token budgets, cost circuit breaker
\end{column}
\begin{column}{0.42\textwidth}
\scriptsize
\begin{tabular}{@{}p{1.7cm}p{3.7cm}@{}}
\begin{tabular}{@{}>{\raggedright\arraybackslash}p{1.7cm}>{\raggedright\arraybackslash}p{3.7cm}@{}}
\toprule
\textbf{Date} & \textbf{What applies} \\
\midrule
@ -259,7 +259,7 @@ LLM10 & Unbounded consumption & Rate limits, token budgets, cost circuit breaker
\begin{frame}{AI Act obligations -- K(a), not weights}
\footnotesize
\begin{itemize}\setlength\itemsep{1pt}
\item For this theory the AI Act has a precise, limited role: its obligations are \textbf{quality attributes with legal force} that enter the requirements profile as \textbf{hard constraints K(a), not as weights} -- Part I: constraints are knock-out filters, never averaged away
\item For this theory the AI Act has a precise, limited role: its obligations are \textbf{quality attributes with legal force} that enter the requirements profile as \textbf{hard constraints $K(a)$, not as weights} -- Part I: constraints are knock-out filters, never averaged away
\item A finance-related advisory platform -- class C10, particularly with any \emph{creditworthiness} bearing -- can fall into the \textbf{high-risk} class
\item Then logging of agent steps, technical documentation, human oversight, and demonstrated robustness stop being engineering preferences and become \textbf{conditions of legal operation}
\end{itemize}
@ -452,7 +452,7 @@ SL -- Serverless & $\circ$ & event-glue around batch AI APIs fits; platform time
\begin{frame}{Case: the course project's advisor workflow}
\begin{center}
\resizebox{0.92\textwidth}{!}{%
\resizebox{\textwidth}{!}{%
\begin{tikzpicture}[
sysbox/.style={rectangle, draw, rounded corners=4pt, align=center, font=\small\sffamily, line width=0.8pt},
agent/.style={sysbox, fill=aiviolet!15, draw=aiviolet, minimum width=2.7cm, minimum height=0.9cm},
@ -461,10 +461,10 @@ SL -- Serverless & $\circ$ & event-glue around batch AI APIs fits; platform time
arr/.style={-{Stealth[length=2.5mm]}, thick, gray!60!black}
]
\node[extern] (req) at (-8.6,1.7) {request};
\node[agent] (orch) at (0,1.7) {Orchestrator\\ \scriptsize LLM call, fixed system prompt};
\node[agent] (da) at (-4.2,-0.4) {Document analyst\\ \scriptsize findings with citations};
\node[agent] (pq) at (0,-0.4) {Portfolio quant\\ \scriptsize exposure, concentration};
\node[agent] (cc) at (4.2,-0.4) {Compliance checker\\ \scriptsize citations, ontology, mandate};
\node[agent] (orch) at (0,1.7) {Orchestrator\\ \footnotesize LLM call, fixed system prompt};
\node[agent] (da) at (-4.2,-0.4) {Document analyst\\ \footnotesize findings with citations};
\node[agent] (pq) at (0,-0.4) {Portfolio quant\\ \footnotesize exposure, concentration};
\node[agent] (cc) at (4.2,-0.4) {Compliance checker\\ \footnotesize citations, ontology, mandate};
\node[det] (ana) at (0,-2.4) {deterministic analytics services};
\node[det] (guard) at (7.4,1.7) {guard};
\node[extern] (out) at (10.9,1.7) {user / books};
@ -601,7 +601,7 @@ Consequence: the choice of topology can be compressed into the same style of dec
\vspace{0.1cm}
\begin{center}
\footnotesize
\begin{tabular}{@{}p{4.6cm}p{3.2cm}p{4.8cm}@{}}
\begin{tabular}{@{}>{\raggedright\arraybackslash}p{4.6cm}>{\raggedright\arraybackslash}p{3.2cm}>{\raggedright\arraybackslash}p{4.8cm}@{}}
\toprule
\textbf{Task signature} & \textbf{Topology} & \textbf{Cost/risk note} \\
\midrule
@ -639,24 +639,24 @@ Path genuinely unknown; open-ended tool use & Agent & highest cost and risk; gua
\renewcommand{\arraystretch}{0.8}%
\vspace{-0.35cm}
\begin{center}
\begin{tabular}{@{}p{3.45cm}cp{8.75cm}@{}}
\begin{tabular}{@{}p{3.45cm}c>{\raggedright\arraybackslash}p{8.75cm}@{}}
\toprule
\textbf{Dimension} & \textbf{Rating} & \textbf{Ground} \\
\midrule
D1 Read scalability & $\circ$ & state small and replicable; throughput bounded by provider rate limits \\
D2 Write scal.\ \& elasticity & $\circ$ & fan-out cheap in structure, expensive in tokens; volume quota-bound \\
D3 Latency \& predictability & $--$ & seconds per step, steps multiply; open-ended loops have no tail bound \\
D4 Consistency \& integrity & $--$ & non-deterministic by construction; integrity only in external validation \\
D5 Availability \& isolation & $-$ & each step adds failure modes and error accumulation; fallbacks mitigate \\
D6 Security \& auditability & $\circ$ & logging natural ($+$); injection, excessive agency widen the surface ($-$) \\
D4 Consistency \& integrity & $--$ & non-deterministic by construction; integrity only outside, in deterministic validation \\
D5 Availability \& isolation & $-$ & each step adds provider failure modes and error accumulation; evaluator loops and fallbacks mitigate \\
D6 Security \& auditability & $\circ$ & logging natural ($+$), legally required in high-risk uses; injection, excessive agency widen the surface ($-$) \\
D7 Evolvability & $+$ & prompts, tools, models swap behind contracts; churn claws part back \\
D8 Simplicity \& TTM & $-$ & a chain workflow is genuinely simple; every notch of autonomy is not \\
D9 Testability \& deployability & $--$ & exhaustive testing impossible; evals with thresholds replace assertions \\
D9 Testability \& deployability & $--$ & exhaustive testing impossible; evals with statistical thresholds replace assertions \\
D10 Operating cost & $--$ & token cost per request orders of magnitude up; multi-agent $\sim$15$\times$ chat \\
D11 Team scaling & $\circ$ & sub-agent and tool ownership parallelises teams moderately (PF analogy) \\
D12 AI integrability & $++$ & it \emph{is} the composition pattern for AI components -- its own best host \\
\midrule
Status & \multicolumn{2}{l}{provisional (state 2025/26): default hypotheses, re-verified on every model generation} \\
Status & \multicolumn{2}{@{}>{\raggedright\arraybackslash}p{10.1cm}@{}}{provisional (state 2025/26) -- every cell carries its own temporal fitness function; default hypotheses, re-verified on every model generation} \\
\bottomrule
\end{tabular}
\end{center}
@ -873,7 +873,7 @@ the test suite as the agent's operating licence & the eval harness as the model'
\begin{center}
\scriptsize
\renewcommand{\arraystretch}{0.85}%
\begin{tabular}{@{}p{5.4cm}p{7.2cm}@{}}
\begin{tabular}{@{}>{\raggedright\arraybackslash}p{5.4cm}>{\raggedright\arraybackslash}p{7.2cm}@{}}
\toprule
\textbf{Learning objective (Lecture 1)} & \textbf{Where the script settles it} \\
\midrule
@ -931,7 +931,7 @@ the test suite as the agent's operating licence & the eval harness as the model'
\end{columns}
\vspace{0.1cm}
Focus (Lecture 1): \textbf{architecture reasoning -- profiles, matching, trade-offs}; in the words of the §43 key concept: \emph{name, for any cell movement, the quality-attribute mechanism behind it}.
Focus (Lecture 1): \textbf{architecture reasoning -- profiles, matching, trade-offs}; in the words of the Section 43 key concept: \emph{name, for any cell movement, the quality-attribute mechanism behind it}.
\end{frame}
% ============================================
@ -945,7 +945,7 @@ Focus (Lecture 1): \textbf{architecture reasoning -- profiles, matching, trade-o
\begin{enumerate}\setlength\itemsep{1pt}
\item \textbf{Evaluation harness as a CI gate}; report accuracy and failure modes
\item \textbf{Observability} of token cost and latency per request
\item \textbf{Threat model} incl.\ prompt injection via news (today's §42.6: the OWASP table as your checklist; the same-channel rule) $+$ \textbf{basic hardening}
\item \textbf{Threat model} incl.\ prompt injection via news (today's Section 42.6: the OWASP table as your checklist; the same-channel rule) $+$ \textbf{basic hardening}
\item \textbf{Scaling/optimisation}: caching, batching
\end{enumerate}
\textbf{Optional distinction work} (semester plan: \emph{K\"ur}): autonomous planning, self-repair, model routing, CI/CD, tracing -- every topology escalation justified against the task-signature table and priced per the default rule.
@ -962,7 +962,7 @@ Focus (Lecture 1): \textbf{architecture reasoning -- profiles, matching, trade-o
\item \textbf{EU AI Act}: quality attributes with legal force enter $R(a)$ as hard constraints $K(a)$, never weights -- compliance is the same architecture, documented
\item \textbf{C10 row and five shifts}: boundary/port, queue and capped cells; EDA/PF $\uparrow$, HX $\uparrow$ most, MS $\downarrow$ in synchronous chains, SL conditional, cost load-bearing -- the matrix is \emph{shifted}, not rewritten; MLOps level $=$ how much of D9/D12 a team can cash in
\item \textbf{Agent orchestration} is a composition pattern, not a style: agent $=$ loop $+$ tools $+$ state; workflows vs.\ agents; topologies map onto PF, mediator EDA, broker, control loop
\item \textbf{Economics and profile}: 90.2\,\% at $\sim$15$\times$ tokens is a CBAM decision; $--$ on D3/D4/D9/D10 makes it an edge pattern -- workflows before agents, every escalation an ADR with token budget and eval threshold
\item \textbf{Economics and profile}: 90.2\,\% at $\sim$15$\times$ tokens is a CBAM decision; $--$ on D3/D4/D9/D10 makes it an edge pattern -- workflows before agents, every escalation an ADR with token budget and eval threshold (Maxim 6)
\item \textbf{Maxim 8}: the theory absorbs AI -- same assumptions, same procedure, same contract; one discipline at two binding sites: containing cheap, fallible generation behind expensive, explicit verification
\end{enumerate}
\end{frame}
@ -981,7 +981,7 @@ Focus (Lecture 1): \textbf{architecture reasoning -- profiles, matching, trade-o
\begin{column}{0.42\textwidth}
\textcolor{bankblue}{\textbf{Reading}}
\begin{itemize}\small
\item this week: Part V, §42.6--42.7, 43--45
\item this week: Part V, Sections 42.6--42.7, 43--45
\item ahead: \textbf{the whole script, Parts I--V} -- the four tables and Maxim 8's one sentence as the map
\end{itemize}

View File

@ -269,7 +269,7 @@ SL & event-trig., short-lived & gate caps at $\circ$: burst fan-out for communic
\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}; both can in principle be operated under FINMA-grade audit obligations
\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}. Is there one? Yes, but conditional -- 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)
\item The fact is \emph{structural}: a mitigation can only show that living without the property is \emph{survivable} -- yes, but conditional: 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)
\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}

View File

@ -153,7 +153,7 @@
\begin{itemize}\setlength\itemsep{2pt}
\item \textbf{Lecture 6 closed Part II}: the consolidated capability table, Maxims 3 and 4 (quantum count; partitioning beats distribution), ordinal reading only -- every cell a default hypothesis
\item \textbf{Lecture 6 opened Part III with C10}: Highs on D6/D7/D9/D10/D12, the binding scenarios, the verdict (hexagonal MM $+$ PF $+$ EDA) -- and the C1/C2 mirror pair in one frame: \emph{weights, not dimensions, define a class}
\item \textbf{Lecture 7 (Part IV)}: three cases, three stages; the procedure in general; reading the $7 \times 10$ matrix; the measurement contract introduced -- A2 dossier and design-review gate passed: \emph{implementation is free}
\item \textbf{Lecture 7 (Part IV)}: three cases, three stages; $\mathrm{fit}(a,p)$ formally -- ordinal, non-compensatory; the $7 \times 10$ grid read (MM primary or secondary in seven of ten); the measurement contract -- fitness functions and the four DORA metrics; A2 dossier and design-review gate passed: \emph{implementation is free}
\item \textbf{Method recall (Lectures 2--3)}: $R(a) = (w_1 \ldots w_{12};\, S(a);\, K(a))$ -- weights from the (H,\,H) leaves of the utility tree; shape gates; constraints knock out; every High is a veto trigger with the cap rule of the three-stage procedure
\item \textbf{Today}: the demand side in its full class rhythm for C1--C5 -- \emph{challenges $\to$ binding scenarios $\to$ profile $\to$ what real systems chose}; each closing verdict is a preview that Part IV recomputes
\item \textbf{Project}: the design phase is over -- the implementation phase opens with milestone M3, the walking skeleton (weeks 8--9)
@ -166,14 +166,14 @@
\section{Application Classes as Requirements Profiles}
\begin{frame}{Part III: the demand side, in the same vocabulary}
\small\emph{\textcolor{bankblue}{Part II priced the supply side: seven patterns, each a capability profile $C(p)$ over the twelve dimensions. Part III characterises the demand side -- and A2 and A3 require it in the \textbf{same} vocabulary at the \textbf{same} resolution.}}
\footnotesize\emph{\textcolor{bankblue}{Part II priced the supply side: seven patterns, each a capability profile $C(p)$ over the twelve dimensions. Part III characterises the demand side -- and A2 and A3 require it in the \textbf{same} vocabulary at the \textbf{same} resolution.}}
\vspace{0.02cm}
\footnotesize ``We are building a banking system'' carries almost no architectural information; ``an instant payment must reach confirmed finality in under ten seconds end-to-end, with zero transaction loss, under a regulator-enforced audit obligation'' carries almost all of it. The unit that packages such statements is the \textbf{application class}.
\vspace{0.02cm}
\begin{definitionbox}[Application class]
\footnotesize A recurring bundle of architecturally significant requirements (ASRs): a set of dominant quality attribute scenarios with \emph{typical response measures}, a characteristic \emph{workload shape} with its quantitative signature, and a \emph{regulatory frame} acting as hard constraints. Formally, $R(a) = \bigl(w_1(a), \ldots, w_{12}(a);\; S(a);\; K(a)\bigr)$ with $w_i(a) \in \{\text{H}, \text{M}, \text{L}\}$, $S(a)$ the dominant workload shape and $K(a)$ the set of hard constraints.
\footnotesize A recurring bundle of architecturally significant requirements (ASRs): a set of dominant quality attribute scenarios with \emph{typical response measures}, a characteristic \emph{workload shape}, and a \emph{regulatory frame} acting as hard constraints. Formally, $R(a) = \bigl(w_1(a), \ldots, w_{12}(a);\; S(a);\; K(a)\bigr)$ with $w_i(a) \in \{\text{H}, \text{M}, \text{L}\}$.
\end{definitionbox}
\vspace{-0.05cm}
@ -228,13 +228,13 @@
\resizebox{!}{4.75cm}{%
\begin{tikzpicture}[
x=1cm, y=1cm,
classnode/.style={rectangle, draw, rounded corners=3pt, minimum width=2.1cm, minimum height=0.72cm, align=center, font=\small\sffamily, line width=0.6pt},
classnode/.style={rectangle, draw, rounded corners=3pt, minimum width=2.6cm, minimum height=0.72cm, align=center, font=\small\sffamily, line width=0.6pt},
inter/.style={classnode, fill=bankblue!15, draw=bankblue},
stream/.style={classnode, fill=bankgreen!15, draw=bankgreen},
batchn/.style={classnode, fill=gray!15, draw=gray!60!black},
hybridn/.style={classnode, fill=bankblue!70!black!15, draw=bankblue!70!black, font=\small\sffamily\bfseries},
today/.style={line width=1.6pt},
bandlabel/.style={font=\small\sffamily\bfseries, anchor=west, text=gray!50!black},
bandlabel/.style={font=\small\sffamily\bfseries, anchor=west, align=left, text=gray!50!black},
axislabel/.style={font=\small\sffamily, text=gray!50!black}
]
% --- workload-shape bands ---
@ -245,7 +245,7 @@
\node[bandlabel] at (0.15,5.85) {interactive request/response};
\node[bandlabel] at (0.15,3.5) {continuous stream};
\node[bandlabel] at (0.15,2.3) {scheduled batch};
\node[bandlabel] at (0.15,1.1) {hybrid: interactive + batch/async};
\node[bandlabel] at (0.15,0.75) {hybrid:\\interactive + batch/async};
% --- consistency axis ---
\draw[-{Stealth[length=2.5mm]}, thick, gray!60!black] (0,0) -- (16.4,0);
\foreach \x in {2.0,6.9,11.3,15.0} \draw[gray!60!black, thick] (\x,0) -- (\x,0.12);
@ -255,19 +255,19 @@
\node[axislabel, anchor=north] at (15.0,-0.08) {eventual};
\node[axislabel, anchor=north] at (8.2,-0.62) {consistency semantics required by the class core (guarantee weakens $\rightarrow$)};
% --- interactive band ---
\node[inter, today] at (2.0,5.15) {C1 core banking\\ \tiny ACID ledger};
\node[inter, today] at (2.0,4.2) {C4 ERP\\ \tiny + batch runs};
\node[inter, today] at (2.0,5.15) {C1 core banking\\ \scriptsize ACID ledger};
\node[inter, today] at (2.0,4.2) {C4 ERP\\ \scriptsize + batch runs};
\node[inter, today] at (4.7,5.15) {C3 back-office};
\node[inter, today] at (6.9,4.2) {C5 e-commerce\\ \tiny checkout ACID, catalogue eventual};
\node[inter] at (11.3,5.15) {C9 collab/messaging\\ \tiny connection-stateful, causal per channel};
\node[inter, today] at (14.7,4.2) {C2 social/content\\ \tiny stale feed acceptable};
\node[inter, today] at (6.9,4.2) {C5 e-commerce\\ \scriptsize checkout ACID, catalogue eventual};
\node[inter] at (11.3,5.15) {C9 collab/messaging\\ \scriptsize connection-stateful, causal per channel};
\node[inter, today] at (14.7,4.2) {C2 social/content\\ \scriptsize stale feed acceptable};
% --- stream band ---
\node[stream] at (13.0,3.15) {C8 IoT streaming\\ \tiny event time, exactly-once state};
\node[stream] at (13.0,3.15) {C8 IoT streaming\\ \scriptsize event time, exactly-once state};
% --- batch band ---
\node[batchn] at (8.9,1.95) {C6 simulation/batch\\ \tiny reproducible (seeds)};
\node[batchn] at (12.4,1.95) {C7 DSS/BI\\ \tiny fresh by refresh contract};
\node[batchn] at (8.9,1.95) {C6 simulation/batch\\ \scriptsize reproducible (seeds)};
\node[batchn] at (12.4,1.95) {C7 DSS/BI\\ \scriptsize fresh by refresh contract};
% --- hybrid band ---
\node[hybridn] at (7.7,0.75) {C10 AI-native advisory\\ \tiny index eventual, audit path ACID};
\node[hybridn] at (6.9,0.75) {C10 AI-native advisory\\ \scriptsize index eventual, audit path ACID};
\end{tikzpicture}}%
\end{center}
@ -286,7 +286,7 @@
\vspace{0.25cm}
\begin{thinkbox}
\small Take three software systems you have used this week -- your e-banking app, a messaging tool, a streaming service.
\footnotesize Take three software systems you have used this week -- your e-banking app, a messaging tool, a streaming service.
\begin{itemize}\setlength\itemsep{2pt}
\item Which application classes do they instantiate?
\item Which single quality attribute scenario, with which response measure, would you nominate as each system's most binding requirement?
@ -346,8 +346,6 @@ Three scenarios compress these challenges into the (H,\,H) region of the C1 util
\vspace{0.1cm}
$K(\text{C1})$ -- \textbf{the densest constraint set in the catalogue:} BCBS~239 (risk-data aggregation and reporting: integration and lineage); FINMA Circular 2023/1 (in force 1~January 2024: ICT risk, protection of \emph{critical data}, business continuity with disruption tolerances); DORA (EU 2022/2554, applicable 17~January 2025: ICT risk, incident reporting, resilience testing, third-party register); GDPR throughout.
\vspace{0.05cm}
\textbf{Knock-out reading:} any structure that cannot guarantee an ACID booking core, an immutable and complete audit journal, and ten-plus-year retention is eliminated \emph{before} any fit scoring -- however well it scales.
\end{frame}
\begin{frame}{C1 -- requirements profile (column C1)}
@ -377,10 +375,14 @@ Constraints $K(a)$ & \multicolumn{2}{l}{BCBS 239; FINMA 2023/1; DORA; ACID core;
\bottomrule
\end{tabular}
\end{center}
\vspace{0.2cm}
\footnotesize \textbf{Knock-out reading:} any structure that cannot guarantee an ACID booking core, an immutable and complete audit journal, and ten-plus-year retention is eliminated \emph{before} any fit scoring -- however well it scales.
\end{frame}
\begin{frame}{C1 -- what real systems chose, and why}
\footnotesize
Two documented production systems show this profile does \emph{not} determine a single pattern:
\begin{itemize}\setlength\itemsep{0pt}
\item \textbf{LMAX} (retail trading): six million orders/s on a \emph{single} JVM thread -- in-memory, event-sourced, deterministic sequential core, lock-free ring buffers. Serialisable \emph{by construction} (the strongest answer to the D4 veto); journal replay answers D6 and D9; surrenders D2 -- weighted only Medium
\item \textbf{Monzo} (UK digital bank): ca.\ 2{,}800 Go microservices (ca.\ 1{,}600 in 2020), viable only through extreme homogeneity -- one language, one monorepo, central migration automation. Binding dimension D11, the MS column's strength; the $--$ on simplicity and cost paid deliberately; the D4 risk of sagas in the money path mitigated by homogeneity and central tooling
@ -388,7 +390,7 @@ Constraints $K(a)$ & \multicolumn{2}{l}{BCBS 239; FINMA 2023/1; DORA; ACID core;
\end{itemize}
\begin{keypoint}
\footnotesize One profile, two structures: $R(a)$ alone does not force one pattern -- it defines the feasible set, constraints decide within it. C1's veto dimensions D4/D5/D6/D7/D9 eliminate structures that cannot carry an ACID, journaled, decades-lived core; they do \emph{not} rank the survivors -- the LMAX/Monzo pair is evidence \textbf{for} the theory, not against it.
\footnotesize $R(a)$ alone does not force one pattern -- it defines the feasible set, constraints decide within it. C1's veto dimensions D4/D5/D6/D7/D9 eliminate structures that cannot carry an ACID, journaled, decades-lived core; they do \emph{not} rank the survivors -- the LMAX/Monzo pair is evidence \textbf{for} the theory, not against it.
\end{keypoint}
\end{frame}
@ -434,8 +436,8 @@ Constraints $K(a)$ & \multicolumn{2}{l}{BCBS 239; FINMA 2023/1; DORA; ACID core;
\begin{itemize}\setlength\itemsep{1pt}
\item \textbf{The ratio.} Twitter's documented 2013 figures, still the canonical calibration: roughly 300{,}000 timeline reads/s against roughly 6{,}000 tweet writes/s -- about \textbf{50:1}. A read path that carries the product at that ratio is a demand on D1 before anything else
\item Raw write rate modest; the \textbf{fan-out amplification} is not: one write by an account with millions of followers implies millions of logical deliveries. The naive materialisation (``\texttt{SELECT} over all follows at read time'') was tried and abandoned; the documented solution: fan-out-on-write into in-memory timeline caches (bounded to some 800 entries per home timeline), hybridised with fan-out-on-read for extreme-follower accounts
\item The textbook decision \emph{write work versus read work as a function of the read/write ratio} -- and the reason D2 stays Medium: the amplification is absorbed by a dedicated fan-out subsystem, not by the write path proper
\item \textbf{The pace.} Feature change rate among the highest in industry: permanent A/B experiments, daily deployments -- Instagram: roughly 100 deployments per day on a Django codebase of several million lines. A joint demand on D7, D9 and -- once the organisation grows into hundreds of feature teams -- D11
\item The textbook decision \emph{write work versus read work as a function of the read/write ratio} -- and why D2 stays Medium: the amplification is absorbed by a dedicated fan-out subsystem, not by the write path
\item \textbf{The pace.} Feature change rate among the highest in industry: permanent A/B experiments, daily deployments -- Instagram: roughly 100 deployments per day on a Django codebase of several million lines. A joint demand on D7, D9 and, once hundreds of feature teams exist, D11
\item \textbf{The spikes.} Spiky and viral load (breaking news, events), traffic multiplying within minutes: stresses D5 and keeps D3 binding at global peak. Data volume very large, predominantly unstructured (text, images, video); platform long-lived, individual features short-lived
\end{itemize}
\end{frame}
@ -498,15 +500,15 @@ Constraints $K(a)$ & \multicolumn{2}{l}{DSA; GDPR} \\
\begin{frame}{C2 -- AI lens and the verdict}
\begin{ailinse}[Feed ranking and moderation as runtime AI (Axis B)]
\footnotesize In C2, AI is the product's economic engine: feed ranking, recommendation and content moderation are ML components \emph{in the serving path}. They inherit the class's own discipline: ranking models trained in offline pipelines (a C6/C7-shaped subsystem) and served from precomputed feature stores at millisecond latency, so S1's p99 budget survives; moderation classifiers sit on the asynchronous ingestion path, where seconds of latency are invisible. General Axis-B rule (Part V): \textbf{the latency class of the AI component, not its accuracy, decides where in the topology it may live.}
\footnotesize In C2, AI is the product's economic engine: feed ranking, recommendation and content moderation are ML components \emph{in the serving path}. They inherit the class's own discipline: ranking models trained in offline pipelines and served from precomputed feature stores at millisecond latency, so S1's p99 budget survives; moderation classifiers sit on the asynchronous ingestion path. General Axis-B rule (Part V): \textbf{the latency class of the AI component, not its accuracy, decides where in the topology it may live.}
\end{ailinse}
\vspace{0.05cm}
\vspace{0cm}
\begin{keypoint}
\footnotesize \textcolor{codegray}{(recall, Lecture 6)} C1 and C2 are mirror images across the consistency/availability trade -- same twelve dimensions, inverted weights on D1 and D4; \emph{weights, not dimensions, define a class} -- now derived from both sides.
\end{keypoint}
\vspace{0.05cm}
\vspace{0cm}
\footnotesize \textbf{Verdict (preview):} primary -- an EDA $+$ microservices hybrid at organisational scale (MS and EDA at $++$); secondary -- a modular monolith until that scale is \emph{measured}, not assumed. The deciding measurement: deployments per developer per day as teams multiply. Part IV recomputes.
\end{frame}
@ -557,8 +559,6 @@ The (H,\,H) leaves of the C3 utility tree -- A4 in action:
\vspace{0.1cm}
$K(\text{C3})$: GDPR for employee data; statutory retention duties (Switzerland: Art.~958\emph{f} Code of Obligations -- business records retained for ten years); internal control systems with enforced dual control; for public administration additionally administrative law and accessibility requirements.
\vspace{0.05cm}
\textbf{Knock-out reading:} a structure that cannot produce a sequential, tamper-evident audit trail per case, or cannot guarantee retention, is excluded -- constraints that favour simple, journaled, transactional designs.
\end{frame}
\begin{frame}{C3 -- requirements profile (column C3)}
@ -588,6 +588,9 @@ Constraints $K(a)$ & \multicolumn{2}{l}{Retention law (e.g.\ OR 958\emph{f}); in
\bottomrule
\end{tabular}
\end{center}
\vspace{0.2cm}
\footnotesize \textbf{Knock-out reading:} a structure that cannot produce a sequential, tamper-evident audit trail per case, or cannot guarantee retention, is excluded -- constraints that favour simple, journaled, transactional designs.
\end{frame}
\begin{frame}{C3 -- what real systems chose, and why}
@ -674,8 +677,6 @@ The (H,\,H) leaves of the C4 utility tree -- A4 in action:
\vspace{0.1cm}
$K(\text{C4})$: financial-reporting law (Swiss CO, HGB, IFRS); audit-proof archiving duties (GoBD in Germany, GeB\"uV in Switzerland); GDPR for the HR module; SOX control requirements for US-listed groups.
\vspace{0.05cm}
\textbf{Knock-out reading:} auditability of posting chains is an obligation, not an option -- a candidate that cannot demonstrate an unbroken, tamper-evident chain from source document to ledger entry is knocked out before scoring.
\end{frame}
\begin{frame}{C4 -- requirements profile (column C4)}
@ -705,6 +706,9 @@ Constraints $K(a)$ & \multicolumn{2}{l}{GoBD/GeB\"uV; SOX; IFRS audit chains} \\
\bottomrule
\end{tabular}
\end{center}
\vspace{0.2cm}
\footnotesize \textbf{Knock-out reading:} auditability of posting chains is an obligation, not an option -- a candidate that cannot demonstrate an unbroken, tamper-evident chain from source document to ledger entry is knocked out before scoring.
\end{frame}
\begin{frame}{C4 -- what real systems chose, and why}
@ -713,7 +717,7 @@ Constraints $K(a)$ & \multicolumn{2}{l}{GoBD/GeB\"uV; SOX; IFRS audit chains} \\
\item \textbf{Odoo}: a modular Python monolith over PostgreSQL -- every business domain a module over one shared ORM data model, extended by inheritance. \textbf{ERPNext} (Frappe; Python, MariaDB): metadata-driven -- DocTypes generate schema, forms and REST APIs
\item Both: strict module boundaries, one deployment, one database, shared transactions -- \emph{the modular monolith in its purest industrial form}
\item Read against the MM column: one ACID quantum answers the D4 veto; domain modules and a disciplined extension mechanism answer D7 -- exactly S3; the $-$ on D5 is absorbed because the class weights D5 only Medium: \textbf{a rare case where a pattern's weak cell meets a class that does not care}
\item A2 starkest in the opposite direction: decomposing an ERP into independently deployable services turns cross-module atomicity into distributed sagas -- MS's $--$ on D4 meets the class's hardest High: \textbf{the structurally strongest anti-fit in the whole grid}; a decade of microservices enthusiasm produced no viable ERP counter-example
\item A2 starkest in the opposite direction: decomposing an ERP into independently deployable services turns cross-module atomicity into distributed sagas -- MS's $--$ on D4 meets the class's hardest High: \textbf{the structurally strongest anti-fit in the whole grid}; community attempts to cut such systems into microservices have remained marginal -- the near-absence of viable microservice ERPs after a decade of microservices enthusiasm is itself empirical evidence
\item Mitigation runs through the edges: hexagonal ports at the integration peripheries (EDI, banking, tax services) keep customising out of the core; period-end closing, MRP and payroll are canonical PF runs inside the batch window
\end{itemize}
\end{frame}
@ -828,15 +832,15 @@ Constraints $K(a)$ & \multicolumn{2}{l}{PCI DSS v4.0 scope minimisation; PSD2/SC
\begin{frame}{C5 -- hybrid consistency as a designed boundary}
\begin{examplebox}[Hybrid consistency as a designed boundary]
\footnotesize The C5 consistency split is not an accident but a boundary to be \emph{designed and documented}: catalogue reads may be minutes stale; inventory may oversell within a compensable bound; the checkout/payment path is ACID with idempotent order creation. The measurable contract: \textbf{p95 checkout latency within budget and zero \emph{uncompensated} oversells in peak-load tests at 10$\times$ baseline}. Where the boundary runs -- is the cart eventual or transactional? -- is a genuine ATAM tradeoff point: an ADR, not folklore.
\footnotesize The C5 consistency split is not an accident but a boundary to be \emph{designed and documented}: catalogue reads may be minutes stale; inventory may oversell within a compensable bound; the checkout/payment path is ACID with idempotent order creation. The measurable contract: \textbf{p95 checkout latency within budget and zero \emph{uncompensated} oversells in peak-load tests at 10$\times$ baseline}. Where the boundary runs (is the cart eventual?) is an ATAM tradeoff point: an ADR, not folklore.
\end{examplebox}
\vspace{0.02cm}
\vspace{0cm}
\begin{keypoint}
\footnotesize C5 is the class where quality attributes carry price tags: latency and availability convert to revenue at documented rates, seasonality defines elasticity, and the consistency profile is hybrid \emph{by definition} -- the one class where ``ACID or eventual?'' is answered \textbf{``both, along a designed boundary''}. Team size, not traffic, decides: Shopify or Amazon.
\footnotesize C5 is the class where quality attributes carry price tags: latency and availability convert to revenue at documented rates, seasonality defines elasticity, and the consistency profile is hybrid \emph{by definition} -- the one class where ``ACID or eventual?'' is answered \textbf{``both, along a designed boundary''}.
\end{keypoint}
\vspace{0.02cm}
\vspace{0cm}
\footnotesize \textbf{Verdict (preview):} primary -- a modular monolith with the hybrid consistency profile designed inside it, event-driven edges (MM at $++$); secondary -- microservices at organisational scale, MS/EDA/SL earning their $+$ at the edges. Part IV recomputes.
\end{frame}
@ -847,10 +851,10 @@ Constraints $K(a)$ & \multicolumn{2}{l}{PCI DSS v4.0 scope minimisation; PSD2/SC
\begin{frame}{Five classes side by side -- assembled from today's five tables}
\begin{columns}[T]
\begin{column}{0.72\textwidth}
\begin{column}{0.76\textwidth}
\scriptsize
\renewcommand{\arraystretch}{0.8}%
\setlength{\tabcolsep}{4pt}%
\setlength{\tabcolsep}{3.5pt}%
\vspace{-0.35cm}
\begin{center}
\begin{tabular}{@{}p{3.3cm}ccccc@{}}
@ -870,13 +874,13 @@ D10 Operating cost & L & M & \textbf{H} & M & M \\
D11 Team scaling & M & \textbf{H} & L & M & M \\
D12 AI integrability & M & M & L & L & M \\
\midrule
Shape (all interactive) & batch edges & read-heavy & -- & batch runs & seasonal \\
Shape (all interactive) & $+$ batch edges & read-heavy & \textcolor{codegray}{\textemdash} & $+$ batch runs & seasonal \\
Verdict (preview) & MM$+$HX & EDA$+$MS & MM & MM & MM \\
\bottomrule
\end{tabular}
\end{center}
\end{column}
\begin{column}{0.26\textwidth}
\begin{column}{0.22\textwidth}
\vspace{0.3cm}
\footnotesize
\begin{itemize}\setlength\itemsep{3pt}
@ -917,7 +921,7 @@ Verdict (preview) & MM$+$HX & EDA$+$MS & MM & MM & MM \\
\begin{frame}{Summary}
\footnotesize
\begin{enumerate}\setlength\itemsep{1pt}
\begin{enumerate}\setlength\itemsep{2pt}
\item An application class is an \textbf{ASR bundle, not an industry label}: $R(a) = (w;\, S(a);\, K(a))$ -- weights from the (H,\,H) leaves; H a veto trigger, not a coefficient; $S(a)$ gates; $K(a)$ knocks out before scoring; one organisation runs several classes, so the matrix is read per subsystem
\item The map: shape $\times$ consistency semantics -- today's five are all interactive; C1/C4 strict ACID, C3 ACID-leaning, C5 split, C2 eventual
\item \textbf{C1}: D4/D5/D6/D7/D9 High, the densest $K$; LMAX vs.\ Monzo -- $R(a)$ defines the feasible set, constraints decide within it; verdict MM$+$HX core, EDA edges, PF batch
@ -938,8 +942,7 @@ Verdict (preview) & MM$+$HX & EDA$+$MS & MM & MM & MM \\
\item C7 DSS/BI -- freshness by refresh contract
\item C8 IoT streaming -- event time, exactly-once state
\item C9 collaboration/messaging -- connection-stateful, causal per channel
\item the consolidated requirements table with its seventeen footnotes (\S29)
\item reading the catalogue as a whole: five cross-class observations (\S29.1)
\item the consolidated requirements table with its seventeen footnotes, and five cross-class observations (\S29, \S29.1)
\item C6 and C7 inside your C10 project (projektboxes \S24.3, \S25.3)
\end{itemize}
\end{column}

View File

@ -138,7 +138,7 @@
\item Closing the loop: C6 and C7 inside your C10 project
\item \textbf{C8} -- Real-time / IoT streaming: correctness under failure
\item \textbf{C9} -- Collaboration / messaging: connection fan-out and push
\item Stepping back: \textbf{ten profiles side by side} -- the consolidated table and its seventeen footnotes
\item Stepping back: \textbf{ten profiles side by side} -- the consolidated table, seventeen footnotes
\item Reading the catalogue as a whole: five cross-class observations
\item This week's exercise: \textbf{the walking skeleton runs end-to-end}
\end{enumerate}
@ -166,7 +166,7 @@
% ============================================
\section{C6 -- Scientific Simulation / Batch Compute}
\begin{frame}{Part III continues: C6 -- scientific simulation / batch compute}
\begin{frame}{Part III continues: C6 -- Scientific simulation / batch compute}
\emph{\textcolor{bankblue}{The nightly risk run must reproduce, to the bit, on ten thousand cores by 06:00: what does that demand?}}
\vspace{0.15cm}
@ -174,7 +174,7 @@
\vspace{0.15cm}
\textbf{Three challenges define the class:}
\begin{enumerate}\setlength\itemsep{1pt}
\begin{enumerate}\setlength\itemsep{0pt}
\item \textbf{The interactive vocabulary does not apply} -- no read/write ratio, only read-input $\to$ compute $\to$ write-output over immutable datasets; the response measures are \textbf{makespan} (hours to weeks) and \textbf{batch-window adherence}: D2 High in its makespan reading (note 2), D3 Low (note 4); planned, queue-based load at a utilisation target near 100\,\%
\item \textbf{The reproducibility obligation} -- bit-identical reruns from versioned inputs, code and seeds: a scientific duty and, for regulated risk models, a supervisory one $\to$ D9 in its reproducibility reading (note 14), D4 ``as of this run'' (note 8)
\item \textbf{Physics: scaling has a measurable ceiling} -- OpenFOAM domain decomposition pays down to roughly 50{,}000--200{,}000 cells per core, below which communication overhead dominates (Amdahl's law as an architecture boundary); Monte-Carlo is embarrassingly parallel -- the ideal pipeline case
@ -215,9 +215,10 @@ Both are \emph{weaker} than ACID and \emph{stronger} than unqualified eventual c
\begin{frame}{C6 -- requirements profile (column C6)}
\scriptsize
\renewcommand{\arraystretch}{0.8}%
\vspace{-0.35cm}
\setlength{\tabcolsep}{4pt}%
\vspace{-0.1cm}
\begin{center}
\begin{tabular}{@{}p{3.0cm}cp{7.7cm}@{}}
\begin{tabular}{@{}p{3.4cm}c>{\raggedright\arraybackslash}p{8.9cm}@{}}
\toprule
\textbf{Dimension} & \textbf{Weight} & \textbf{Why} \\
\midrule
@ -269,7 +270,7 @@ Constraints $K(a)$ & \multicolumn{2}{l}{model validation and backtesting (financ
% ============================================
\section{C7 -- Decision Support / BI Analytics}
\begin{frame}{C7 -- decision support / BI analytics}
\begin{frame}{C7 -- Decision support / BI analytics}
\emph{\textcolor{bankblue}{Monday, 08:00: the management dashboard must be complete as of yesterday 24:00 -- and every number must prove where it came from. What delivers that, night after night?}}
\vspace{0.15cm}
@ -277,7 +278,7 @@ Constraints $K(a)$ & \multicolumn{2}{l}{model validation and backtesting (financ
\vspace{0.15cm}
\textbf{Three challenges define the class:}
\begin{enumerate}\setlength\itemsep{1pt}
\begin{enumerate}\setlength\itemsep{0pt}
\item \textbf{The shape of the reads} -- almost pure read, but \textbf{heavy OLAP scans by few users}, not point reads by many (note 7): a D1 demand in its own reading, scan capacity \emph{delegated} to the warehouse engine; writes bundled into the ELT/ETL window (D2 Low); dashboards render in seconds (D3 Medium)
\item \textbf{The refresh contract} -- marts refreshed within the window and visible \emph{atomically}; consumers never see a half-updated state (D4 Medium, note 10); adherence tracked as a fitness function (D9)
\item \textbf{Provenance under interrogation} -- a regulator questions a reported risk figure: trace it back through every transformation to the source systems (D6); BCBS~239 hardens this into $K(a)$ where banking data are involved
@ -302,9 +303,10 @@ $K(\text{C7})$: BCBS~239 for banks (risk reporting: accuracy, completeness, time
\begin{frame}{C7 -- requirements profile (column C7)}
\scriptsize
\renewcommand{\arraystretch}{0.8}%
\vspace{-0.35cm}
\setlength{\tabcolsep}{4pt}%
\vspace{-0.1cm}
\begin{center}
\begin{tabular}{@{}p{3.0cm}cp{7.7cm}@{}}
\begin{tabular}{@{}p{3.4cm}c>{\raggedright\arraybackslash}p{8.9cm}@{}}
\toprule
\textbf{Dimension} & \textbf{Weight} & \textbf{Why} \\
\midrule
@ -338,15 +340,14 @@ Constraints $K(a)$ & \multicolumn{2}{l}{BCBS 239 lineage (banks)} \\
\end{itemize}
\end{frame}
\begin{frame}{C7 -- AI lens}
\begin{frame}{C7 -- AI lens and key concept}
\begin{ailinse}[Natural-language analytics (Axis B)]
\footnotesize The visible frontier: the natural-language query (``show me revenue by region, last four quarters'') compiled by an LLM into SQL against the semantic layer. The profile dictates the containment: the LLM \emph{proposes} a query; the semantic layer's schema and access-control contracts \emph{validate and execute} it -- \textbf{text-to-SQL against governed models, not raw tables} -- so that lineage (S3) and purpose limitation survive the convenience. Failure mode to design against: \textbf{silent plausibility} -- a syntactically valid, semantically wrong query returns confident nonsense; the Part V eval harness (golden question/answer sets over a \emph{frozen} warehouse state) is the class-appropriate test instrument, and note 10's refresh contract keeps such golden sets stable.
\footnotesize A natural-language query (``show me revenue by region, last four quarters'') compiled by an LLM into SQL against the semantic layer. The profile dictates the containment: the LLM \emph{proposes} a query; the semantic layer's schema and access-control contracts \emph{validate and execute} it -- \textbf{text-to-SQL against governed models, not raw tables} -- so lineage (S3) and purpose limitation survive the convenience. Failure mode to design against: \textbf{silent plausibility} (a valid but semantically wrong query returns confident nonsense); the Part V eval harness -- golden question/answer sets over a \emph{frozen} warehouse state -- is the test instrument, kept stable by note 10's refresh contract.
\end{ailinse}
\end{frame}
\begin{frame}{C7 -- key concept}
\vspace{-0.05cm}
\begin{keypoint}
\footnotesize C7 is an integration product over C1--C5 whose consistency semantics -- freshness by refresh contract -- is a \emph{designed} third option beside ACID and eventual. \textbf{The ADR to write is the freshness contract itself}; fitness functions: refresh-window adherence and p95 dashboard latency; tightening towards real time is a class change into C8 economics. \textbf{In one sentence:} PF (ELT) feeding a thin layered serving tier -- the canonical hybrid of the row (PF at $++$; L, MM, SL at $+$) -- EDA ingestion secondary where the freshness contract demands it.
\footnotesize C7 is an integration product over C1--C5 whose consistency semantics -- freshness by refresh contract -- is a \emph{designed} third option beside ACID and eventual. \textbf{The ADR to write is the freshness contract itself}; fitness functions: refresh-window adherence and p95 dashboard latency; tightening towards real time is a class change into C8 economics. \textbf{In one sentence:} PF (ELT) feeding a thin layered serving tier (PF at $++$; L, MM, SL at $+$), EDA ingestion secondary where the freshness contract demands it.
\end{keypoint}
\end{frame}
@ -356,7 +357,7 @@ Constraints $K(a)$ & \multicolumn{2}{l}{BCBS 239 lineage (banks)} \\
\vspace{0.05cm}
\begin{projektbox}
\footnotesize
\begin{columns}[T]
\begin{columns}[T,totalwidth=\linewidth]
\begin{column}{0.48\textwidth}
\textcolor{bankblue}{\textbf{The C6 subsystems}} -- ingestion (chunking, embedding, indexing) and the eval pipeline
\begin{itemize}\setlength\itemsep{1pt}
@ -384,15 +385,15 @@ Constraints $K(a)$ & \multicolumn{2}{l}{BCBS 239 lineage (banks)} \\
% ============================================
\section{C8 -- Real-Time / IoT Streaming}
\begin{frame}{C8 -- real-time / IoT streaming}
\begin{frame}{C8 -- Real-time / IoT streaming}
\emph{\textcolor{bankblue}{The sensors never stop: what ingests the world at the world's own rate, indefinitely -- and stays exactly right when a node dies mid-window?}}
\vspace{0.15cm}
\footnotesize The class: systems that process continuously arriving event data -- sensor telemetry, clickstreams, vehicle positions, market data. Defining property: data are produced by the world at the world's own rate and \textbf{lose value quickly}; the system must sustain ingest at the production rate \emph{indefinitely}, master backpressure, and guarantee state correctness across failures.
\footnotesize The class: systems that process continuously arriving event data -- sensor telemetry, clickstreams, vehicle positions, market data -- produced by the world at the world's own rate and \textbf{losing value quickly}; the system must sustain ingest at the production rate \emph{indefinitely}, master backpressure, and guarantee state correctness across failures.
\vspace{0.15cm}
\textbf{Three challenges define the class:}
\begin{enumerate}\setlength\itemsep{1pt}
\begin{enumerate}\setlength\itemsep{0pt}
\item \textbf{The sheer, unending inflow} -- ingest around the clock with bounded consumer lag and mastered backpressure $\to$ D2 (the \emph{inversion} of C2's read-heavy profile); 24/7 without pause $\to$ D5 (the world does not stop producing while a node recovers); value decay $\to$ D3
\item \textbf{The genuinely hard one: declared correctness semantics under failure} -- event time vs.\ processing time, windowing, watermarks (the Dataflow model); exactly-once state via checkpointing -- bought with machinery and \emph{permanent operational competence}: D4 in its stream reading (note 11), D8 Low (nobody chooses streaming for its ease)
\item \textbf{Longevity of the plumbing} -- topologies change moderately but \textbf{schema evolution is a permanent concern} (D7 Medium); the largest data volume of all classes (append-only logs), retention often TTL-bounded, the infrastructure long-lived even where the data are not
@ -438,9 +439,10 @@ $K(\text{C8})$ is \textbf{technical rather than statutory}: per-key ordering and
\begin{frame}{C8 -- requirements profile (column C8)}
\scriptsize
\renewcommand{\arraystretch}{0.8}%
\vspace{-0.35cm}
\setlength{\tabcolsep}{4pt}%
\vspace{-0.1cm}
\begin{center}
\begin{tabular}{@{}p{3.0cm}cp{7.7cm}@{}}
\begin{tabular}{@{}p{3.4cm}c>{\raggedright\arraybackslash}p{8.9cm}@{}}
\toprule
\textbf{Dimension} & \textbf{Weight} & \textbf{Why} \\
\midrule
@ -474,15 +476,14 @@ Constraints $K(a)$ & \multicolumn{2}{l}{per-key ordering; exactly-once where sta
\end{itemize}
\end{frame}
\begin{frame}{C8 -- AI lens}
\begin{frame}{C8 -- AI lens and key concept}
\begin{ailinse}[Online inference and drift on streams (Axis B)]
\footnotesize C8 is where ML meets its hardest operational constraint: models score events \emph{in the stream} (fraud, anomaly, predictive maintenance) at \textbf{millisecond budgets} -- per-event LLM calls are ruled out entirely; pre-trained, locally served models are demanded. The stream is simultaneously the \textbf{monitoring instrument}: input-distribution statistics computed in the pipeline detect data and concept drift (production-readiness rubrics such as the ML Test Score assume exactly this telemetry). Architecturally, the model is \textbf{one more stateful stream operator} -- checkpointed, versioned, replayable -- so that S2's exactly-once discipline extends to inference results.
\footnotesize ML's hardest operational constraint: models score events \emph{in the stream} (fraud, anomaly, predictive maintenance) at \textbf{millisecond budgets} -- per-event LLM calls are ruled out; pre-trained, locally served models are demanded. The stream is also the \textbf{monitoring instrument}: input-distribution statistics computed in the pipeline detect data and concept drift (the ML Test Score rubric assumes exactly this telemetry). The model is \textbf{one more stateful stream operator} -- checkpointed, versioned, replayable -- so S2's exactly-once discipline extends to inference results.
\end{ailinse}
\end{frame}
\begin{frame}{C8 -- key concept}
\vspace{-0.05cm}
\begin{keypoint}
\footnotesize C8 must keep pace with the production rate of the world -- indefinitely. The genuinely hard requirement is \emph{not throughput} but \textbf{declared correctness semantics under failure}: exactly-once state and event-time correctness are bought with checkpointing machinery and permanent operational competence -- so the pragmatic norm is at-least-once plus idempotence, decided per stream, per scenario, and recorded as such. \textbf{In one sentence:} EDA over a durable log with streaming PF as the processing layer -- the documented Uber stack (EDA at $++$; PF and MS at $+$) -- microservice processors secondary where team ownership demands it.
\footnotesize C8 must keep pace with the production rate of the world -- indefinitely. The genuinely hard requirement is \emph{not throughput} but \textbf{declared correctness semantics under failure}: exactly-once state and event-time correctness are bought with checkpointing machinery and permanent operational competence -- so the pragmatic norm is at-least-once plus idempotence, decided per stream, per scenario, recorded as such. \textbf{In one sentence:} EDA over a durable log with streaming PF as the processing layer -- the documented Uber stack (EDA at $++$; PF and MS at $+$), MS processors secondary where team ownership demands it.
\end{keypoint}
\end{frame}
@ -491,7 +492,7 @@ Constraints $K(a)$ & \multicolumn{2}{l}{per-key ordering; exactly-once where sta
% ============================================
\section{C9 -- Collaboration / Messaging}
\begin{frame}{C9 -- collaboration / messaging}
\begin{frame}{C9 -- Collaboration / messaging}
\emph{\textcolor{bankblue}{Five million people are connected at this moment, and every message must reach its channel within half a second: what holds the connections?}}
\vspace{0.15cm}
@ -499,7 +500,7 @@ Constraints $K(a)$ & \multicolumn{2}{l}{per-key ordering; exactly-once where sta
\vspace{0.15cm}
\textbf{Three challenges define the class:}
\begin{enumerate}\setlength\itemsep{1pt}
\begin{enumerate}\setlength\itemsep{0pt}
\item \textbf{The connections themselves} -- the boot storm, not the message rate, threatens the core databases: the binding load is \textbf{connection fan-out and push} $\to$ D1/D2 Medium (note 9); the crux is D3/D5: a message must reach its channel in 100--500\,ms, and \emph{a disconnected messenger is a dead messenger}
\item \textbf{The history tail} -- message histories are enormous and users scroll deep into them expecting low-tens-of-milliseconds reads: a D3 demand on the read path
\item \textbf{Consistency relaxed by design} -- causal order per channel suffices (D4 Medium, note 12), the deliberate weakening that makes the fan-out scalable; feature churn high while the core protocol stays stable (D7 Medium); lifetimes exceed ten years
@ -508,15 +509,16 @@ Constraints $K(a)$ & \multicolumn{2}{l}{per-key ordering; exactly-once where sta
\begin{frame}{C9 -- the connections and the history tail: two measured cases}
\footnotesize
\vspace{0.1cm}
\begin{center}
\renewcommand{\arraystretch}{0.85}%
\renewcommand{\arraystretch}{0.8}%
\begin{tabular}{@{}>{\raggedright\arraybackslash}p{2.0cm}>{\raggedright\arraybackslash}p{1.5cm}>{\raggedright\arraybackslash}p{3.7cm}>{\raggedright\arraybackslash}p{5.0cm}@{}}
\toprule
\textbf{System} & \textbf{Problem} & \textbf{Magnitude} & \textbf{Measure and result} \\
\midrule
\textbf{Slack} & connection storms & more than \textbf{five million} simultaneous WebSocket sessions at peak; a morning peak rolling across a timezone means millions of clients connecting and booting within minutes & application-level edge cache \textbf{Flannel} at global points of presence: p99 latency for channel-membership queries from roughly \textbf{2{,}000\,ms to roughly 200\,ms}, shielding the core from the boot storms \\
\addlinespace
\textbf{Discord} \newline {\scriptsize\textcolor{codegray}{(week 4: the D7/D9 seam story; today the D3 demand on the storage tier)}} & the history tail & stores \textbf{trillions of messages}; users scroll deep expecting low-tens-of-milliseconds reads & storage migrations MongoDB $\to$ Cassandra $\to$ ScyllaDB behind Rust data services performing request coalescing: p99 read latency from \textbf{40--125\,ms to roughly 15\,ms} \\
\textbf{Discord} \newline {\scriptsize\textcolor{codegray}{(week 4: D7/D9 seam; today: D3 on storage)}} & the history tail & stores \textbf{trillions of messages}; users scroll deep expecting low-tens-of-milliseconds reads & storage migrations MongoDB $\to$ Cassandra $\to$ ScyllaDB behind Rust data services performing request coalescing: p99 read latency from \textbf{40--125\,ms to roughly 15\,ms} \\
\bottomrule
\end{tabular}
\end{center}
@ -543,9 +545,10 @@ $K(\text{C9})$: the GDPR, with \textbf{data residency} as an explicit selling ar
\begin{frame}{C9 -- requirements profile (column C9)}
\scriptsize
\renewcommand{\arraystretch}{0.8}%
\vspace{-0.35cm}
\setlength{\tabcolsep}{4pt}%
\vspace{-0.1cm}
\begin{center}
\begin{tabular}{@{}p{3.0cm}cp{7.9cm}@{}}
\begin{tabular}{@{}p{3.4cm}c>{\raggedright\arraybackslash}p{8.9cm}@{}}
\toprule
\textbf{Dimension} & \textbf{Weight} & \textbf{Why} \\
\midrule
@ -628,8 +631,8 @@ Ten times the same movement -- what no single section could deliver is the view
\vspace{0.1cm}
\begin{enumerate}\setlength\itemsep{3pt}
\item \textbf{Read columns to see a class:} each column repeats the per-class table of its section cell for cell; every H is backed by a binding scenario with a response measure
\item \textbf{Read rows to see what a dimension discriminates:} D7 (evolvability) is High in six classes and Low in none -- long life is the norm, not the exception -- and Medium exactly in the four classes taught today; D12 is High only in C10, the definitional case
\item \textbf{The seventeen footnotes are part of the table's semantics, not decoration:} testability as reproducibility in C6 (note 14), as eval pass rate in C10 (note 15), read scalability as OLAP scan capacity in C7 (note 7); the D4 row of C6--C9 carries the same letter M with four footnoted meanings (notes 8, 10, 11, 12) -- \emph{using the bare letter without its footnote produces wrong matches in Part IV}
\item \textbf{Read rows to see what a dimension discriminates:} D7 (evolvability) is High in six classes and Low in none -- long life is the norm, not the exception -- and Medium exactly in the four classes taught today \textcolor{codegray}{(read off the table)}; D12 is High only in C10, the definitional case
\item \textbf{The seventeen footnotes are part of the table's semantics, not decoration:} testability as reproducibility in C6 (note 14), as eval pass rate in C10 (note 15), read scalability as OLAP scan capacity in C7 (note 7); the D4 row of C6--C9 carries the same letter M with four footnoted meanings (notes 8, 10, 11, 12) \textcolor{codegray}{(read off the table)} -- \emph{using the bare letter without its footnote produces wrong matches in Part IV}
\end{enumerate}
\end{frame}
@ -772,7 +775,7 @@ D12 AI integrability & C10 & 1 \\
\footnotesize \textbf{Observation 1 -- the strongest discriminators are the read/write ratio (the D1/D2 rows) and the consistency semantics (the D4 row).} C1 (write-critical, strict ACID) and C2 (roughly 50:1 read-heavy, deliberately eventual) are mirror images across both at once -- the fastest diagnostic pair in the catalogue. \emph{When classifying an unknown system, ask these two questions first}: they eliminate more patterns via the shape gate and the D4 row than any other pair.
\end{frame}
\begin{frame}{Reading the catalogue as a whole (1/2): scale does not force microservices}
\begin{frame}{Reading the catalogue as a whole (1/3): scale does not force microservices}
\footnotesize
\textbf{Observation 2 -- scale does not force microservices.} The documented monolith-at-scale cases span four classes \textcolor{codegray}{(all cases met in weeks 3--6; now read from the demand side)}:
@ -795,12 +798,19 @@ LMAX & six million orders/s & one thread \\
Stateless replication, sharding and mechanical sympathy scale monoliths far; what microservices primarily solve is an \emph{organisational} scaling problem -- deployments per developer as team count grows. \textbf{In profile terms: D1/D2 rarely force distribution; D11 $=$ H is what does.}
\end{frame}
\begin{frame}{Reading the catalogue as a whole (2/2): rollbacks, regulation, inheritance}
\begin{frame}{Reading the catalogue as a whole (2/3): rollbacks and regulation}
\footnotesize
\begin{enumerate}\setlength\itemsep{4pt}
\begin{enumerate}\setlength\itemsep{6pt}
\setcounter{enumi}{2}
\item \textbf{The rollback case studies share one pattern.} Segment and Prime Video both cut \emph{one} coherent dataflow along technical rather than domain seams -- one service per integration destination, one function per processing step -- and the interaction costs (queues, orchestrator state transitions, storage round-trips, the test matrix) consumed the benefit. Granularity must follow the coupling structure of the domain. For the catalogue: \textbf{a class's workload shape is not merely a gate for pattern selection -- it also predicts where the expensive boundaries lie \emph{within} a pattern}
\item \textbf{Regulation is a first-class architectural requirement.} $K(a)$ translates directly into structure: BCBS~239 and FINMA 2023/1 into immutable journals, lineage and resilience testing; DORA into incident-reporting and third-party risk machinery; PCI~DSS v4.0 into cardholder-data zoning and scope minimisation; the EU AI Act into logging and human-oversight duties for AI components. None can be bolted on late at reasonable cost -- \textbf{Booch-significant decisions}, which is exactly why they live in $K(a)$ as knock-outs rather than in the weights
\end{enumerate}
\end{frame}
\begin{frame}{Reading the catalogue as a whole (3/3): inheritance}
\footnotesize
\begin{enumerate}\setlength\itemsep{4pt}
\setcounter{enumi}{4}
\item \textbf{The AI-native class inherits before it innovates.} C10 inherits the disciplines of C6/C7 (batch index and eval pipelines) and C3 (deterministic transactional services), and adds exactly \textbf{two} genuinely new elements: a cost model that is expensive per request rather than per user, and evals as the operative meaning of testability. \emph{Design instruction for the project in one sentence: solve the inherited profiles with the inherited, well-understood structures, and concentrate the architectural attention on the two novelties}
\end{enumerate}
\end{frame}