-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathcomparative-analysis.html
More file actions
354 lines (341 loc) · 37.9 KB
/
Copy pathcomparative-analysis.html
File metadata and controls
354 lines (341 loc) · 37.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
<!doctype html>
<html lang="en">
<!-- GENERATED by catalog.py build — DO NOT EDIT. Edit the sibling .md and re-run `catalog.py build`. -->
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Comparative analysis</title>
<style>@font-face{font-family:'Source Serif 4';font-style:normal;font-weight:400;font-stretch:normal;font-display:swap;src:url('book/fonts/SourceSerif4/SourceSerif4-Regular.ttf') format('truetype');}@font-face{font-family:'Source Serif 4';font-style:normal;font-weight:600;font-stretch:normal;font-display:swap;src:url('book/fonts/SourceSerif4/SourceSerif4-Semibold.ttf') format('truetype');}@font-face{font-family:'Source Serif 4';font-style:normal;font-weight:700;font-stretch:normal;font-display:swap;src:url('book/fonts/SourceSerif4/SourceSerif4-Bold.ttf') format('truetype');}@font-face{font-family:'Source Serif 4';font-style:italic;font-weight:400;font-stretch:normal;font-display:swap;src:url('book/fonts/SourceSerif4/SourceSerif4-It.ttf') format('truetype');}@font-face{font-family:'Source Serif 4';font-style:italic;font-weight:600;font-stretch:normal;font-display:swap;src:url('book/fonts/SourceSerif4/SourceSerif4-SemiboldIt.ttf') format('truetype');}@font-face{font-family:'Source Serif 4';font-style:italic;font-weight:700;font-stretch:normal;font-display:swap;src:url('book/fonts/SourceSerif4/SourceSerif4-BoldIt.ttf') format('truetype');}@font-face{font-family:'Source Sans 3';font-style:normal;font-weight:400;font-stretch:normal;font-display:swap;src:url('book/fonts/SourceSans3/SourceSans3-Regular.ttf') format('truetype');}@font-face{font-family:'Source Sans 3';font-style:normal;font-weight:700;font-stretch:normal;font-display:swap;src:url('book/fonts/SourceSans3/SourceSans3-Bold.ttf') format('truetype');}@font-face{font-family:'Source Sans 3';font-style:italic;font-weight:400;font-stretch:normal;font-display:swap;src:url('book/fonts/SourceSans3/SourceSans3-It.ttf') format('truetype');}@font-face{font-family:'Source Sans 3';font-style:italic;font-weight:700;font-stretch:normal;font-display:swap;src:url('book/fonts/SourceSans3/SourceSans3-BoldIt.ttf') format('truetype');}@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-stretch:normal;font-display:swap;src:url('book/fonts/IBMPlexMono/IBMPlexMono-Regular.ttf') format('truetype');}@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-stretch:normal;font-display:swap;src:url('book/fonts/IBMPlexMono/IBMPlexMono-Regular.ttf') format('truetype');}</style>
<style>
/* Legacy var aliases → design tokens: --line/--link predate the token model and are referenced across
the landing + views CSS; alias them so every site rule resolves to the Umber-Monograph tokens without
touching hundreds of call sites. The token :root (inlined via FONT_CSS) defines --ink/--muted/--accent. */
:root { --line: var(--rule); --link: var(--accent); }
* { box-sizing: border-box; }
body { margin:0; font-family:var(--font-body);
color:var(--ink); background:var(--paper); line-height:var(--lh-body); font-size:var(--fs-body); }
main { width: 94vw; max-width: 1320px; margin: 0 auto; padding: 32px 26px 80px; }
/* The landing is a figure-prose BOARD — a controlled ceiling so wide-screen scan-lines stay comfortable
(was 2100); entry/prose pages keep the 1320 reading width. */
body.landing main { max-width: 1600px; }
body.landing .site-foot { max-width: 1600px; }
nav.crumb { font-size: var(--fs-meta); color: var(--muted); margin: 0 0 18px; letter-spacing:.01em; }
nav.crumb a { color: var(--link); text-decoration: underline; text-underline-offset: 2px; }
nav.crumb a:hover { text-decoration: underline; }
/* "Calm authority": the page title (h1) is the one BOLD level; h2/h3 stay semibold (--display-weight)
via the shared binding, with more air above each so headings organise rather than compete. */
h1 { font-size: var(--fs-thesis-title); font-weight:700; margin: 6px 0 4px; letter-spacing:var(--display-tracking); line-height:1.12; }
h2 { font-size: var(--fs-section); margin: 38px 0 8px; padding-top: 6px; border-top:var(--border-hairline) solid var(--line); }
h3 { font-size: var(--fs-card-title); margin: 26px 0 6px; }
h4 { font-size: var(--fs-card-body); margin: 16px 0 4px; color:var(--ink); }
p, li { font-size: var(--fs-body); }
a { color: var(--link); }
code { background:var(--code-bg); padding:1px 5px; border-radius:var(--radius-chip); font-size:.9em;
font-family:var(--font-mono); }
pre { background:var(--code-bg); padding:12px 14px; border-radius:var(--radius-code); overflow:auto; }
pre code { background:none; padding:0; }
table { border-collapse: collapse; margin: 12px 0; font-size: var(--fs-meta); width:100%; }
th, td { border:var(--border-hairline) solid var(--line); padding:6px 10px; text-align:left; vertical-align:top; }
th { background:var(--panel); font-weight:700; }
hr { border:none; border-top:var(--border-hairline) solid var(--line); margin: 22px 0; }
.subtitle { font-size: var(--fs-meta); color:var(--muted); font-style: italic; margin: 0 0 6px; }
a.abbr { color:var(--ink); text-decoration:none; border-bottom:var(--border-hairline) dotted var(--accent);
cursor:help; }
a.abbr:hover { color:var(--accent); border-bottom-style:solid; }
section.abbr-entry { scroll-margin-top:14px; }
section.abbr-entry h2 code.slug { font-size:var(--fs-micro); font-weight:400; color:var(--accent);
background:var(--accent-tint); vertical-align:middle; margin-left:8px; }
p.abbr-grounds { font-size:var(--fs-meta); color:var(--muted); margin:4px 0 2px; }
/* Derived "Governed by" block — appended to is-a-model entry pages (reverse of the Governs join). */
.govby { margin-top:28px; border-top:var(--border-accent-bar) solid var(--accent); padding-top:6px; }
.govby h2 { border-top:none; padding-top:0; margin-top:8px; }
.gb-note { font-size:var(--fs-meta); color:var(--muted); font-style:italic; margin:2px 0 8px; }
.gb-list { margin:0; padding-left:20px; }
.gb-list li { font-size:var(--fs-meta); margin:4px 0; }
.gb-list li a { font-weight:600; text-decoration:none; }
.gb-list li a:hover { text-decoration:underline; color:var(--accent); }
.gb-all { font-size:var(--fs-micro); color:var(--muted); background:var(--panel); border:var(--border-hairline) solid var(--rule);
border-radius:var(--radius-chip); padding:0 6px; margin-left:5px; white-space:nowrap; }
.tag { color: var(--accent); font-weight: 700; font-size: var(--fs-micro); letter-spacing:.08em; text-transform:uppercase; }
.census h3.role-h { color:var(--accent); border-top:var(--border-accent-bar) solid var(--line); padding-top:14px; margin-top:26px; }
.census .role-note { font-size:var(--fs-micro); color:var(--muted); background:var(--accent-tint); border-left:var(--border-accent-bar) solid var(--accent);
padding:7px 12px; border-radius:0 var(--radius-code) var(--radius-code) 0; margin:2px 0 10px; }
/* Census tables read as the card language: no full cell-grid — row hairlines only, header a stronger
bottom rule, warm-panel header fill. */
table.census-t th, table.census-t td { border:none; border-bottom:var(--border-hairline) solid var(--line); }
table.census-t thead th { border-bottom:2px solid var(--rule); background:var(--panel); }
table.census-t td.c-name a { font-weight:600; text-decoration:none; }
table.census-t td.c-name a:hover { text-decoration:underline; }
table.census-t td.c-sum { font-size:var(--fs-meta); color:var(--muted); }
table.census-t td.c-enf { white-space:nowrap; color:var(--ink); }
table.census-t th, table.census-t td { vertical-align:top; }
table.census-t tr:hover { background:var(--panel); }
.fam-lede { font-size:var(--fs-meta); color:var(--muted); font-style:italic; margin:2px 0 6px; }
.foot { font-size: var(--fs-micro); color: var(--muted); border-top:var(--border-hairline) solid var(--line); padding-top:14px; margin-top: 34px; }
/* Concept Card (the Concepts section's per-idea page). Single umber accent throughout — the section's
identity is the warm accent-tint band + the "Concept" chip + its idea glyph, never a new hue. */
.concept-band { display:flex; align-items:center; gap:12px; background:var(--accent-tint);
border-left:var(--border-accent-bar) solid var(--accent);
border-radius:0 var(--radius-code) var(--radius-code) 0; padding:8px 14px; margin:2px 0 20px; }
.concept-chip { display:inline-flex; align-items:center; gap:6px; color:var(--accent); font-weight:700;
font-size:var(--fs-micro); letter-spacing:.08em; text-transform:uppercase; white-space:nowrap; }
.concept-chip .cc-ico { width:1.1em; height:1.1em; flex:0 0 auto; }
.concept-kicker { font-size:var(--fs-meta); color:var(--muted); }
/* Industry-case pillar index — "The six" as a scannable card grid. Each card is a link, but only its
"Read the reconstruction" affordance underlines; the org/domain/blurb stay plain so the grid reads as
cards, not as one run-together underlined block. */
.ic-cards { display:grid; grid-template-columns:repeat(auto-fill, minmax(260px, 1fr)); gap:13px; margin:16px 0 8px; }
.ic-card { display:flex; flex-direction:column; border:1.4px solid var(--rule); border-radius:10px;
background:var(--panel); padding:14px 16px; text-decoration:none; color:var(--ink); }
.ic-card:hover { border-color:var(--accent); background:var(--accent-tint); }
.ic-card .ic-org { font-family:var(--font-display); font-weight:700; font-size:1.06rem; color:var(--ink); }
.ic-card .ic-dom { font-size:var(--fs-micro); text-transform:uppercase; letter-spacing:.05em;
color:var(--muted); margin-top:3px; }
.ic-card .ic-blurb { font-size:var(--fs-meta); color:var(--ink); line-height:1.45; margin-top:9px; }
.ic-card .ic-more { font-size:var(--fs-meta); font-weight:600; color:var(--accent); margin-top:11px; }
.ic-card:hover .ic-more { text-decoration:underline; }
figure.cc-fig { margin:20px 0; max-width:660px; }
figure.cc-fig svg { width:100%; height:auto; }
section.cc-rel, section.cc-mech, section.cc-intuition, section.cc-read { margin-top:8px; }
ul.cc-links { list-style:none; margin:8px 0; padding:0; }
ul.cc-links li { margin:5px 0; }
ul.cc-links li a { font-weight:600; text-decoration:none; }
ul.cc-links li a:hover { text-decoration:underline; color:var(--accent); }
.cc-mech-empty { font-size:var(--fs-meta); color:var(--muted); font-style:italic; margin:8px 0; }
a.cc-read-link { font-weight:600; text-decoration:none; }
a.cc-read-link:hover { text-decoration:underline; }
/* The brick's single "→ read the concept" link into each rich Concept ENTRY (two-tier split). */
a.s-concept { display:inline-block; font-size:var(--fs-meta); font-weight:600;
color:var(--accent); text-decoration:none; }
a.s-concept:hover { text-decoration:underline; }
/* The standalone Big Question page: the question blockquote, the three-step through-line, answer cards. */
blockquote.cq-q { margin:14px 0; padding:10px 18px; border-left:var(--border-accent-bar) solid var(--accent);
background:var(--accent-tint); border-radius:0 var(--radius-code) var(--radius-code) 0;
font-size:var(--fs-card-body); color:var(--ink); }
blockquote.cq-q-main { font-family:var(--font-display); font-weight:700; font-size:var(--fs-card-title);
line-height:1.24; }
ol.cq-through { list-style:none; counter-reset:none; margin:14px 0 8px; padding:0; }
li.cq-step { display:flex; gap:14px; align-items:flex-start; margin:0 0 14px; }
.cq-num { flex:0 0 auto; width:1.7em; height:1.7em; display:inline-flex; align-items:center;
justify-content:center; border-radius:50%; background:var(--accent); color:var(--paper);
font-weight:700; font-size:var(--fs-meta); margin-top:2px; }
.cq-body { flex:1 1 auto; }
h3.cq-h { margin:0 0 3px; }
p.cq-text { margin:0 0 4px; }
p.cq-ideas { margin:0; font-size:var(--fs-meta); color:var(--muted); }
.cq-lbl { text-transform:uppercase; letter-spacing:.06em; font-size:var(--fs-micro); margin-right:6px; }
p.cq-ideas a { color:var(--accent); text-decoration:none; font-weight:600; }
p.cq-ideas a:hover { text-decoration:underline; }
p.cq-lead { color:var(--muted); margin:4px 0 12px; }
.cq-answers { display:grid; gap:10px; grid-template-columns:1fr; margin:8px 0 4px; }
a.cq-ans { display:block; text-decoration:none; color:var(--ink); border:var(--border-hairline) solid var(--rule);
border-left:var(--border-accent-bar) solid var(--accent); border-radius:0 var(--radius-code) var(--radius-code) 0;
padding:10px 14px; background:var(--panel); transition:border-color .12s, background .12s; }
a.cq-ans:hover { border-color:var(--accent); background:var(--accent-tint); }
a.cq-ans b { display:block; font-size:var(--fs-card-body); margin-bottom:2px; }
a.cq-ans span { display:block; font-size:var(--fs-meta); color:var(--muted); }
@media (min-width:760px){ .cq-answers { grid-template-columns:repeat(3,1fr); } }
/* GENERATED by book-models/design_tokens.py from design-tokens.json — do not hand-edit. */
:root {
--ink: #1c1917;
--paper: #fdfcf9;
--panel: #f6f4ef;
--rule: #e4e0d8;
--muted: #57534e;
--accent: #9a3f12;
--accent-tint: #faf1e6;
--link: #9a3f12;
--code-bg: #f3efe7;
--box-thesis-rule: #15803d;
--box-thesis-fill: #eef7ee;
--box-def-rule: #1f6fae;
--box-def-fill: #eef4fb;
--box-inset-rule: #7c6bb0;
--box-inset-fill: #f2effb;
--diagram-churn: #b23b3b;
--diagram-churn-fill: #fbeaea;
--diagram-fleet: #2f5169;
--diagram-fleet-fill: #e7edf3;
--diagram-governed: #1f7a4d;
--diagram-governed-fill: #e3f0e7;
--diagram-trust: #155c38;
--diagram-trust-fill: #eef7f0;
--font-display: "Source Serif 4", Charter, "IBM Plex Serif", Georgia, serif;
--font-body: "Source Sans 3", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
--font-mono: "IBM Plex Mono", "SF Mono", Menlo, Consolas, monospace;
--display-weight: 600;
--display-tracking: -0.01em;
--fs-micro: 12px;
--fs-meta: 14px;
--fs-card-body: 16px;
--fs-body: 18px;
--fs-card-title: 22px;
--fs-section: 28px;
--fs-thesis-title: 36px;
--fs-display: 52px;
--lh-body: 1.62;
--lh-display: 1.08;
--lh-card: 1.5;
--space-0: 4px;
--space-1: 8px;
--space-2: 16px;
--space-3: 24px;
--space-4: 32px;
--space-5: 48px;
--space-6: 64px;
--radius-card: 10px;
--radius-chip: 4px;
--radius-code: 6px;
--border-hairline: 1px;
--border-accent-bar: 3px;
--border-box-rule: 4px;
}
body { font-family:var(--font-body); }
h1,h2,h3,h4,.walk-h,.section-h { font-family:var(--font-display); font-weight:var(--display-weight); }
.site-foot { max-width:1320px; margin:var(--space-5) auto 0; padding:var(--space-2) 26px var(--space-4); border-top:var(--border-hairline) solid var(--rule); font-size:var(--fs-micro); color:var(--muted); text-align:center; }
.site-foot a { color:var(--accent); text-decoration:underline; } .site-foot a:hover { text-decoration:none; }
.site-foot .gh { white-space:nowrap; }
.site-foot .foot-line { display:block; }
.site-foot .foot-line + .foot-line { margin-top:var(--space-1); }
.site-foot .foot-nsf { color:var(--muted); }
.topnav { position:absolute; top:14px; right:20px; font-size:var(--fs-micro); display:flex; gap:var(--space-2); }
.topnav a { color:var(--muted); text-decoration:none; white-space:nowrap; } .topnav a:hover { color:var(--accent); }
@media (max-width:640px){ .topnav { position:static; justify-content:flex-end; margin:0 0 var(--space-1); } }
</style>
</head>
<body>
<main>
<nav class="crumb"><a href="index.html">Home</a> / <a href="industry-case-studies.html">Industry case studies</a> / Comparative analysis</nav>
<!-- comparative-analysis: ch6-projection -->
<h1>Comparative analysis</h1>
<div class="concept-band"><span class="concept-chip">Chapter 6, in miniature</span><span class="concept-kicker">the six reconstructions, read at once</span></div>
<figure class="cc-body-fig"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 740"
role="group" aria-labelledby="cmp-hero-scmTitle cmp-hero-scmDesc"
font-family="'Source Sans 3', -apple-system, 'Segoe UI', sans-serif">
<title id="cmp-hero-scmTitle">Independent reconstructions of the theory: six industrial systems reconstruct regions of one theory of MAGE</title>
<desc id="cmp-hero-scmDesc">A table shows six industrial systems, each entering the design space through a
different problem yet landing on a region of the same theory, named in MAGE vocabulary in the last
column. Cloudflare starts from policy-first governance, invests in policy bound into mechanisms, and
lands on the Alignment Principle. Spotify starts from fleet-first autonomy, invests in fleet-scale
verification, and lands on the Governed Engineering Environment. Shopify starts from a shared
agent-ready environment, invests in organizational knowledge, and lands on the Engineered Environment.
Docker starts from authority boundaries and evaluation loops, invests in runtime authority, and lands on
Governance Conversion. Siemens starts from model-first engineering, invests in models as the development
surface, and lands on the Modeling Principle. Zenseact starts from autonomous knowledge work, invests in
context and delegation, and lands on the Reasoning Horizon. A closing synprinciple row reads: MAGE assembles
a unified vocabulary into an engineering theory that spans the whole landscape. Badge colours key each
landing to the house semantic language: rust for governance and alignment, green for modeling, knowledge,
and environment. No two organizations began with the same problem, yet they converge.</desc>
<defs>
<linearGradient id="cmp-hero-scmSynth" x1="0" y1="0" x2="1" y2="0">
<stop offset="0" stop-color="#e3f0e7"/>
<stop offset="1" stop-color="#faf1e6"/>
</linearGradient>
</defs>
<rect x="0" y="0" width="1000" height="740" fill="#fdfcf9"/>
<text x="500" y="42" text-anchor="middle" font-size="26" font-weight="700" fill="#1c1917">Independent reconstructions of the theory</text>
<text x="500" y="70" text-anchor="middle" font-size="17" font-style="italic" fill="#57534e">Different entry points, common destination — each durable investment lands on a region of one theory.</text>
<!-- legend: badge colour keys to the house semantic language -->
<g font-size="16" fill="#57534e">
<rect x="212" y="90" width="18" height="18" rx="3" fill="#e3f0e7" stroke="#1f7a4d" stroke-width="2"/>
<text x="238" y="105">Modeling · knowledge · environment</text>
<rect x="590" y="90" width="18" height="18" rx="3" fill="#faf1e6" stroke="#9a3f12" stroke-width="2"/>
<text x="616" y="105">Governance · alignment</text>
</g>
<!-- header row -->
<text x="48" y="150" font-size="16" font-weight="700" letter-spacing="1" fill="#57534e">ORGANIZATION</text>
<text x="210" y="150" font-size="16" font-weight="700" letter-spacing="1" fill="#57534e">DISTINCTIVE STARTING POINT</text>
<text x="486" y="150" font-size="16" font-weight="700" letter-spacing="1" fill="#57534e">DURABLE INVESTMENT</text>
<text x="839" y="150" text-anchor="middle" font-size="16" font-weight="700" letter-spacing="1" fill="#57534e">LANDS ON THE THEORY</text>
<!-- row rules -->
<g stroke="#e4e0d8" stroke-width="1.5">
<line x1="40" y1="164" x2="960" y2="164"/>
<line x1="40" y1="236" x2="960" y2="236"/>
<line x1="40" y1="308" x2="960" y2="308"/>
<line x1="40" y1="380" x2="960" y2="380"/>
<line x1="40" y1="452" x2="960" y2="452"/>
<line x1="40" y1="524" x2="960" y2="524"/>
</g>
<!-- Cloudflare -> Alignment Principle (rust) -->
<text x="48" y="206" font-size="20" font-weight="700" fill="#1c1917">Cloudflare</text>
<text x="210" y="206" font-size="17" fill="#57534e">Policy-first governance</text>
<text x="486" y="206" font-size="18" font-weight="700" fill="#1c1917">Policy → mechanisms</text>
<rect x="726" y="179" width="226" height="42" rx="8" fill="#faf1e6" stroke="#9a3f12" stroke-width="2.4"/>
<text x="839" y="206" text-anchor="middle" font-size="18" font-weight="700" fill="#9a3f12">Alignment Principle</text>
<!-- Spotify -> Governed Engineering Environment (green, emphasized) -->
<text x="48" y="278" font-size="20" font-weight="700" fill="#1c1917">Spotify</text>
<text x="210" y="278" font-size="17" fill="#57534e">Fleet-first autonomy</text>
<text x="486" y="278" font-size="18" font-weight="700" fill="#1c1917">Fleet-scale verification</text>
<rect x="726" y="251" width="226" height="42" rx="8" fill="#e3f0e7" stroke="#155c38" stroke-width="2.6"/>
<text x="839" y="270" text-anchor="middle" font-size="16" font-weight="700" fill="#155c38">Governed Engineering</text>
<text x="839" y="288" text-anchor="middle" font-size="16" font-weight="700" fill="#155c38">Environment</text>
<!-- Shopify -> Engineered Environment (green) -->
<text x="48" y="350" font-size="20" font-weight="700" fill="#1c1917">Shopify</text>
<text x="210" y="350" font-size="17" fill="#57534e">Shared agent-ready env.</text>
<text x="486" y="350" font-size="18" font-weight="700" fill="#1c1917">Organizational knowledge</text>
<rect x="726" y="323" width="226" height="42" rx="8" fill="#eef7f0" stroke="#1f7a4d" stroke-width="2.4"/>
<text x="839" y="342" text-anchor="middle" font-size="16" font-weight="700" fill="#1f7a4d">Engineering</text>
<text x="839" y="360" text-anchor="middle" font-size="16" font-weight="700" fill="#1f7a4d">Environment</text>
<!-- Docker -> Governance Conversion (rust) -->
<text x="48" y="422" font-size="20" font-weight="700" fill="#1c1917">Docker</text>
<text x="210" y="422" font-size="17" fill="#57534e">Authority + eval loops</text>
<text x="486" y="422" font-size="18" font-weight="700" fill="#1c1917">Runtime authority</text>
<rect x="726" y="395" width="226" height="42" rx="8" fill="#faf1e6" stroke="#9a3f12" stroke-width="2.4"/>
<text x="839" y="414" text-anchor="middle" font-size="16" font-weight="700" fill="#9a3f12">Governance</text>
<text x="839" y="432" text-anchor="middle" font-size="16" font-weight="700" fill="#9a3f12">Conversion</text>
<!-- Siemens -> Modeling Principle (green) -->
<text x="48" y="494" font-size="20" font-weight="700" fill="#1c1917">Siemens</text>
<text x="210" y="494" font-size="17" fill="#57534e">Model-first engineering</text>
<text x="486" y="494" font-size="18" font-weight="700" fill="#1c1917">Models as the surface</text>
<rect x="726" y="467" width="226" height="42" rx="8" fill="#e3f0e7" stroke="#1f7a4d" stroke-width="2.6"/>
<text x="839" y="494" text-anchor="middle" font-size="18" font-weight="700" fill="#1f7a4d">Modeling Principle</text>
<!-- Zenseact -> Reasoning Horizon (green) -->
<text x="48" y="566" font-size="20" font-weight="700" fill="#1c1917">Zenseact</text>
<text x="210" y="566" font-size="17" fill="#57534e">Autonomous knowledge work</text>
<text x="486" y="566" font-size="18" font-weight="700" fill="#1c1917">Context + delegation</text>
<rect x="726" y="539" width="226" height="42" rx="8" fill="#eef7f0" stroke="#1f7a4d" stroke-width="2.4"/>
<text x="839" y="566" text-anchor="middle" font-size="18" font-weight="700" fill="#1f7a4d">Reasoning Horizon</text>
<!-- synprinciple row: MAGE assembles the pieces -->
<line x1="40" y1="596" x2="960" y2="596" stroke="#57534e" stroke-width="2"/>
<rect x="40" y="600" width="920" height="60" rx="9" fill="url(#cmp-hero-scmSynth)" stroke="#e4e0d8" stroke-width="1.2"/>
<text x="64" y="637" font-size="20" font-weight="700" fill="#1c1917">MAGE</text>
<text x="210" y="637" font-size="18" fill="#57534e">unified vocabulary</text>
<text x="486" y="637" font-size="18" font-weight="700" fill="#1c1917">engineering theory</text>
<text x="839" y="637" text-anchor="middle" font-size="18" font-weight="700" fill="#155c38">the whole landscape</text>
<text x="500" y="700" text-anchor="middle" font-size="16" font-style="italic" fill="#57534e">No two organizations began with the same problem — yet they converge.</text>
</svg></figure>
<p>This page reads the six reconstructions next to one another. It projects the book’s Chapter 6 material straight to the web, drawn from the same model, so the two surfaces cannot drift. The two convergence tables are the exact tables the print edition lays out; the correspondence matrix and the modeling-ceiling ladder carry the same data the book renders, shaped here as tables where print presents it as cards and prose. MAGE ran at none of these companies. Every mark records how the book reads an independent report against the theory, never a claim a company makes about MAGE.</p>
<h2>Reading the tables</h2>
<p>The convergence and ceiling tables use a small set of marks. A check means the source establishes the pattern in full. A half-circle means it establishes the pattern in part. An em-dash means the source is silent. The modeling ceiling adds a hollow circle for a representation a team exercises without naming it. The correspondence matrix keeps its words — strong, partial, and the rest — because there the word carries the reading.</p>
<h2>Correspondence: each system against each construct</h2>
<p>The matrix places every reconstruction against the MAGE constructs, with DocAble — the system the theory was built on — as the first row. Read down a column to see how widely one construct recurs across independent systems. Read across a row to see which arm of the theory a single system leans on.</p>
<table><thead><tr><th>Case</th><th>Alignment</th><th>Modeling</th><th>Knowledge rep</th><th>Bootstrap</th><th>Conversion</th><th>Determinization</th><th>Reasoning horizon</th><th>Engineer's seat</th><th>Graduated governance</th></tr></thead><tbody><tr><td><strong>DocAble</strong></td><td>strong</td><td>strong</td><td>strong</td><td>strong</td><td>strong</td><td>strong</td><td>strong</td><td>strong</td><td>strong</td></tr><tr><td><strong>Cloudflare</strong></td><td>strong</td><td>partial</td><td>strong</td><td>strong</td><td>partial</td><td>strong</td><td>strong</td><td>strong</td><td>strong</td></tr><tr><td><strong>Spotify</strong></td><td>strong</td><td>strong</td><td>strong</td><td>strong</td><td>partial</td><td>strong</td><td>strong</td><td>strong</td><td>partial</td></tr><tr><td><strong>Shopify</strong></td><td>strong</td><td>partial</td><td>partial</td><td>strong</td><td>strong</td><td>strong</td><td>strong</td><td>strong</td><td>partial</td></tr><tr><td><strong>Docker</strong></td><td>strong</td><td>partial</td><td>—</td><td>strong</td><td>strong</td><td>tension</td><td>strong</td><td>strong</td><td>partial</td></tr><tr><td><strong>Siemens</strong></td><td>strong</td><td>strong</td><td>—</td><td>strong</td><td>not-described</td><td>strong</td><td>strong</td><td>strong</td><td>not-described</td></tr><tr><td><strong>Zenseact</strong></td><td>strong</td><td>partial</td><td>—</td><td>strong</td><td>strong</td><td>strong</td><td>strong</td><td>strong</td><td>partial</td></tr></tbody></table>
<h2>The modeling ceiling: how far each system’s models reach</h2>
<p>The ladder runs from the shallowest representation a system keeps to the deepest. A system’s ceiling is the highest rung its described practice reaches. Some stop at topology and policy; others climb into behavior, invariants, and model-derived verification. The book reads the rung a source reaches, not a grade.</p>
<table><thead><tr><th>Site</th><th>Service/component topology</th><th>Ownership/dependencies</th><th>Infra/environment as code</th><th>Structured policy/obligations</th><th>Data lineage</th><th>Behavioral/state models</th><th>Process/concurrency models</th><th>Scenario models</th><th>Explicit invariant registry</th><th>Model-derived verification</th><th>Bidirectional model<->code traceability</th><th>Drift gate enforcing model/code equality</th></tr></thead><tbody><tr><td><strong>MAGE</strong></td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td><strong>Cloudflare</strong></td><td>✓</td><td>✓</td><td>◐</td><td>✓</td><td>◐</td><td>—</td><td>—</td><td>—</td><td>—</td><td>◐</td><td>—</td><td>—</td></tr><tr><td><strong>Spotify</strong></td><td>✓</td><td>✓</td><td>✓</td><td>◐</td><td>✓</td><td>—</td><td>—</td><td>—</td><td>—</td><td>◐</td><td>—</td><td>—</td></tr><tr><td><strong>Shopify</strong></td><td>○</td><td>◐</td><td>✓</td><td>◐</td><td>—</td><td>—</td><td>—</td><td>—</td><td>—</td><td>◐</td><td>—</td><td>—</td></tr><tr><td><strong>Docker</strong></td><td>○</td><td>○</td><td>◐</td><td>◐</td><td>—</td><td>—</td><td>—</td><td>—</td><td>—</td><td>—</td><td>—</td><td>—</td></tr><tr><td><strong>Siemens</strong></td><td>✓</td><td>✓</td><td>◐</td><td>✓</td><td>✓</td><td>✓</td><td>◐</td><td>◐</td><td>◐</td><td>✓</td><td>✓</td><td>—</td></tr><tr><td><strong>Zenseact</strong></td><td>—</td><td>○</td><td>◐</td><td>◐</td><td>—</td><td>—</td><td>—</td><td>—</td><td>—</td><td>—</td><td>—</td><td>—</td></tr></tbody></table>
<h2>What every system establishes</h2>
<p>These patterns recur across all six. Each was engineered independently, for one company’s own reasons, yet every source lands on it. Convergence this broad is the evidence that a pattern is structural rather than a house style.</p>
<table><thead><tr><th>#</th><th>Pattern</th><th>Cloudflare</th><th>Spotify</th><th>Shopify</th><th>Docker</th><th>Siemens</th><th>Zenseact</th></tr></thead><tbody><tr><td>U1</td><td>Externalize knowledge</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>U2</td><td>Act through tools</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>U3</td><td>Bound authority</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>U4</td><td>Probabilistic + deterministic</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>U5</td><td>Preserve human authority</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>U6</td><td>Engineer context</td><td>✓</td><td>✓</td><td>✓</td><td>◐</td><td>✓</td><td>✓</td></tr><tr><td>U7</td><td>Reusable infrastructure</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>U8</td><td>Independent evidence</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>U9</td><td>Change the system</td><td>◐</td><td>✓</td><td>✓</td><td>✓</td><td>◐</td><td>✓</td></tr></tbody></table>
<p>The key names the construct each pattern instantiates and states what the source establishes.</p>
<table><thead><tr><th>#</th><th>Pattern</th><th>Construct</th><th>What the source establishes</th></tr></thead><tbody><tr><td>U1</td><td>Externalize knowledge</td><td>reasoning-horizon</td><td>Autonomy needs a representation the model cannot safely rebuild each run.</td></tr><tr><td>U2</td><td>Act through tools</td><td>alignment-principle</td><td>The sanctioned tool seam, not the prompt, is where authority is allocated.</td></tr><tr><td>U3</td><td>Bound authority</td><td>alignment-principle</td><td>The environment, not the reasoner, sets the limit on what an agent may do.</td></tr><tr><td>U4</td><td>Probabilistic + deterministic</td><td>determinization</td><td>Probabilistic reasoning on the ambiguous; deterministic machinery on the decidable residue.</td></tr><tr><td>U5</td><td>Preserve human authority</td><td>engineers-seat</td><td>Humans hold intent and consequential decisions while agents scale reach.</td></tr><tr><td>U6</td><td>Engineer context</td><td>reasoning-horizon</td><td>Curate what enters the context window; a bloated prompt degrades reasoning.</td></tr><tr><td>U7</td><td>Reusable infrastructure</td><td>bootstrap-governance</td><td>Shared infrastructure is the environment each new agent inherits.</td></tr><tr><td>U8</td><td>Independent evidence</td><td>alignment-principle</td><td>Generation is not evaluation, so verify the work independently.</td></tr><tr><td>U9</td><td>Change the system</td><td>governance-conversion</td><td>When a limit appears, fix the system rather than re-prompt the agent.</td></tr></tbody></table>
<h2>What industry is independently discovering</h2>
<p>This second set recurs too, but the support varies from site to site. Some sources establish the pattern in full, others only in part. MAGE generalizes what these systems reach for; the gaps in a row mark where one source stops short.</p>
<table><thead><tr><th>#</th><th>Pattern</th><th>Cloudflare</th><th>Spotify</th><th>Shopify</th><th>Docker</th><th>Siemens</th><th>Zenseact</th></tr></thead><tbody><tr><td>G1</td><td>Failure to improvement</td><td>◐</td><td>◐</td><td>✓</td><td>✓</td><td>—</td><td>✓</td></tr><tr><td>G2</td><td>Knowledge as capital</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>G3</td><td>Context routing</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td><td>◐</td><td>✓</td></tr><tr><td>G4</td><td>Automatic admission</td><td>◐</td><td>✓</td><td>—</td><td>—</td><td>—</td><td>◐</td></tr><tr><td>G5</td><td>Compositional roles</td><td>—</td><td>◐</td><td>◐</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>G6</td><td>Model-derived targeting</td><td>◐</td><td>✓</td><td>◐</td><td>—</td><td>✓</td><td>◐</td></tr></tbody></table>
<p>The key for this bucket reads the same way.</p>
<table><thead><tr><th>#</th><th>Pattern</th><th>Construct</th><th>What the source establishes</th></tr></thead><tbody><tr><td>G1</td><td>Failure to improvement</td><td>governance-conversion</td><td>A recurring loop turns each failure into a durable environmental fix.</td></tr><tr><td>G2</td><td>Knowledge as capital</td><td>bootstrap-governance</td><td>Institutional knowledge accumulates as compounding engineering capital.</td></tr><tr><td>G3</td><td>Context routing</td><td>reasoning-horizon</td><td>Disclose only task-relevant knowledge, on demand.</td></tr><tr><td>G4</td><td>Automatic admission</td><td>graduated-governance</td><td>Evidence gates admit the work; review is amortized, not per-change.</td></tr><tr><td>G5</td><td>Compositional roles</td><td>alignment-principle</td><td>Scoped specialist roles instead of one monolithic agent.</td></tr><tr><td>G6</td><td>Model-derived targeting</td><td>modeling-principle</td><td>Act through a model of the system, not raw code.</td></tr></tbody></table>
<h2>What none of the six generalizes</h2>
<p>MAGE is a theory of the engineering ENVIRONMENT ITSELF as the object of engineering: everyone else engineers an agent, a runtime, a policy engine, or a model; MAGE engineers the governed environment in which commodity intelligence operates.</p>
<p>None of the external cases we examined describes the following machinery in the generalized form MAGE does. Not 'nobody in industry has ever done this.'</p>
<p>None of the reconstructions states the following machinery in the general form the theory does:</p>
<ul><li>The strongest notion of model — a Model Zoo spanning logical / behavior / process / physical / scenario / invariant / lineage / traceability views.</li></ul>
<ul><li>Explicitly binds the model to the territory — general model<->implementation parity plus a mechanical drift check.</li></ul>
<ul><li>A common grammar for governance mechanisms — representation / constraint / sensor / validator / gate / feedback as cross-technology types.</li></ul>
<ul><li>Governance conversion as a general engineering operation — classify the failure, then choose the durable mechanism from model|constraint|sensor|validator|gate|interface|architecture|no-mechanism.</li></ul>
<ul><li>Governs the accumulated governance itself — strengthen / reconcile / retire.</li></ul>
<ul><li>Explicitly theorizes engineering capital — the compounding feedback loop as a dynamic, not just an accumulation.</li></ul>
<ul><li>Integrates Modeling and Alignment as the two irreducible moves — better models make more obligations deterministically enforceable.</li></ul>
<ul><li>Treats the environment itself as the object of engineering — THE SPINE (RH2), not a peer of the other seven; they are its consequences.</li></ul>
<footer class="site-foot"><span class="foot-line foot-copy">© <a href="https://davisjam.github.io">James C. Davis</a>, 2026–present · Assistant Professor, ECE @ Purdue</span><span class="foot-line foot-links"><a class="gh" href="https://github.com/davisjam/model-based-agentic-software-engineering"><svg viewBox="0 0 16 16" width="15" height="15" aria-hidden="true" style="vertical-align:-2px;fill:currentColor"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0016 8c0-4.42-3.58-8-8-8z"></path></svg> model-based-agentic-software-engineering</a> · <a class="book-foot" href="book/index.html">Read the book →</a> · <a class="book-foot" href="book/mage-book.pdf"><svg viewBox="0 0 16 16" width="14" height="14" aria-hidden="true" style="vertical-align:-2px;fill:currentColor"><path d="M4 0a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h9a1 1 0 0 0 1-1V4.5L9.5 0H4zm5 1.5L12.5 5H9V1.5zM4.9 8.2h1c.5 0 .9.4.9.9s-.4.9-.9.9h-.4v1.1h-.6V8.2zm.6.5v.8h.3c.2 0 .3-.1.3-.4s-.1-.4-.3-.4h-.3zm2 .0h.9c.6 0 1 .5 1 1.4s-.4 1.5-1 1.5h-.9V8.7zm.6.5v1.8h.2c.3 0 .5-.3.5-.9s-.2-.9-.5-.9h-.2zm2.3-.5h1.7v.5h-1.1v.6h1v.5h-1v1.2h-.6V8.7z"></path></svg> PDF</a></span><span class="foot-line foot-nsf">This work was supported by the U.S. National Science Foundation under grants #2541917 and #2452533.</span></footer>
</main>
</body>
</html>