- 2.1: packs/ -> archive/packs/ - 2.2: site/ -> archive/site/ - 2.3: src/lab/ -> archive/lab/ - 2.4: examples/ -> archive/examples-legacy/ (SSI-based)
156 lines
5.8 KiB
HTML
156 lines
5.8 KiB
HTML
<!doctype html>
|
||
<html lang="en">
|
||
<head>
|
||
<!--#include virtual="/_include/head.html" -->
|
||
<title>Build Pipeline Metrics — ASW Examples</title>
|
||
<meta name="description" content="CI/CD pipeline performance — build
|
||
time breakdown, weekly success rate, failure counts by repo">
|
||
</head>
|
||
<body>
|
||
<!--#include virtual="/_include/nav.html" -->
|
||
|
||
<main>
|
||
<header>
|
||
<h1>Build Pipeline Metrics</h1>
|
||
<p data-text="lead">CI/CD pipeline performance — build time
|
||
breakdown, weekly success rate, failure counts by repo</p>
|
||
</header>
|
||
|
||
<hgroup>
|
||
<h1>Build Pipeline Metrics — CI/CD Performance</h1>
|
||
<p>Ten weeks of pipeline data across five repos. No theories. Just results.</p>
|
||
</hgroup>
|
||
|
||
<div data-layout="stats">
|
||
<div>
|
||
<span data-stat="value">5</span>
|
||
<span data-stat="label">Repos tracked</span>
|
||
</div>
|
||
<div>
|
||
<span data-stat="value">94%</span>
|
||
<span data-stat="label">Avg success rate</span>
|
||
</div>
|
||
<div>
|
||
<span data-stat="value">120s</span>
|
||
<span data-stat="label">Longest build</span>
|
||
</div>
|
||
<div>
|
||
<span data-stat="value">32</span>
|
||
<span data-stat="label">Failures (10 wk)</span>
|
||
</div>
|
||
</div>
|
||
|
||
<section>
|
||
<h2>Build time breakdown</h2>
|
||
<p>Seconds per phase across all tracked repos — compile, test, deploy. Max is 120s (agentic-semantic-web). Test dominates every build. That's expected. Don't cut your test suite to make this chart look better.</p>
|
||
|
||
<table data-chart="bar" data-chart-stacked>
|
||
<caption>Build time breakdown — seconds per phase (max 120s)</caption>
|
||
<thead>
|
||
<tr><th></th><th>Compile</th><th>Test</th><th>Deploy</th></tr>
|
||
</thead>
|
||
<tbody>
|
||
<!-- max=120s. --size per segment = seconds / 120. totals must sum ≤ 1.0 -->
|
||
<tr>
|
||
<th scope="row">agentic-semantic-web</th>
|
||
<td style="--size: 0.175" data-value="21s">21s</td>
|
||
<td style="--size: 0.667" data-value="80s">80s</td>
|
||
<td style="--size: 0.158" data-value="19s">19s</td>
|
||
</tr>
|
||
<tr>
|
||
<th scope="row">api-gateway</th>
|
||
<td style="--size: 0.100" data-value="12s">12s</td>
|
||
<td style="--size: 0.542" data-value="65s">65s</td>
|
||
<td style="--size: 0.183" data-value="22s">22s</td>
|
||
</tr>
|
||
<tr>
|
||
<th scope="row">trentuna-web</th>
|
||
<td style="--size: 0.150" data-value="18s">18s</td>
|
||
<td style="--size: 0.458" data-value="55s">55s</td>
|
||
<td style="--size: 0.125" data-value="15s">15s</td>
|
||
</tr>
|
||
<tr>
|
||
<th scope="row">commons</th>
|
||
<td style="--size: 0.125" data-value="15s">15s</td>
|
||
<td style="--size: 0.375" data-value="45s">45s</td>
|
||
<td style="--size: 0.100" data-value="12s">12s</td>
|
||
</tr>
|
||
<tr>
|
||
<th scope="row">vault</th>
|
||
<td style="--size: 0.067" data-value="8s">8s</td>
|
||
<td style="--size: 0.250" data-value="30s">30s</td>
|
||
<td style="--size: 0.083" data-value="10s">10s</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
|
||
<p data-text="dim">Segment totals: asw 120s · api-gateway 99s · trentuna-web 88s · commons 72s · vault 48s</p>
|
||
</section>
|
||
|
||
<section>
|
||
<h2>Weekly build success rate</h2>
|
||
<p>Percentage of successful builds per week over the last ten weeks. Week 8 hit 100%. That's the target. Everything else is noise telling you where to look.</p>
|
||
|
||
<table data-chart="column" data-chart-spacing="1" style="--chart-height: 200px">
|
||
<caption>Build success rate — weeks 1–10 (max 100%)</caption>
|
||
<tbody>
|
||
<!-- max=100%, Week 8 -->
|
||
<tr><th scope="row">W1</th><td style="--size: 0.94">94%</td></tr>
|
||
<tr><th scope="row">W2</th><td style="--size: 0.88">88%</td></tr>
|
||
<tr><th scope="row">W3</th><td style="--size: 0.91">91%</td></tr>
|
||
<tr><th scope="row">W4</th><td style="--size: 0.78">78%</td></tr>
|
||
<tr><th scope="row">W5</th><td style="--size: 0.95">95%</td></tr>
|
||
<tr><th scope="row">W6</th><td style="--size: 0.82">82%</td></tr>
|
||
<tr><th scope="row">W7</th><td style="--size: 0.96">96%</td></tr>
|
||
<tr><th scope="row">W8</th><td style="--size: 1.00">100%</td></tr>
|
||
<tr><th scope="row">W9</th><td style="--size: 0.89">89%</td></tr>
|
||
<tr><th scope="row">W10</th><td style="--size: 0.97">97%</td></tr>
|
||
</tbody>
|
||
</table>
|
||
|
||
<p data-text="dim">W4 dip: flaky integration test on api-gateway, fixed W5. W6 dip: deploy timeout regression, fixed W7.</p>
|
||
</section>
|
||
|
||
<section>
|
||
<h2>Failure count by repo</h2>
|
||
<p>Total build failures over the last ten weeks. Two repos are over the acceptable threshold. They're marked. Fix them.</p>
|
||
|
||
<div data-callout="warning">
|
||
<strong>api-gateway and agentic-semantic-web are above threshold.</strong>
|
||
Both repos averaged more than one failure per week. api-gateway has the most — 14 failures in 10 weeks. That's not a fluke. That's a structural problem.
|
||
</div>
|
||
|
||
<table data-chart="bar">
|
||
<caption>Build failures — last 10 weeks (max 14, api-gateway)</caption>
|
||
<tbody>
|
||
<!-- max=14. --size = failures / 14. Red rows = above threshold (>7 failures) -->
|
||
<tr style="--color: var(--accent-red)">
|
||
<th scope="row">api-gateway</th>
|
||
<td style="--size: 1.000" data-value="14">14</td>
|
||
</tr>
|
||
<tr style="--color: var(--accent-red)">
|
||
<th scope="row">agentic-semantic-web</th>
|
||
<td style="--size: 0.643" data-value="9">9</td>
|
||
</tr>
|
||
<tr>
|
||
<th scope="row">trentuna-web</th>
|
||
<td style="--size: 0.357" data-value="5">5</td>
|
||
</tr>
|
||
<tr>
|
||
<th scope="row">commons</th>
|
||
<td style="--size: 0.214" data-value="3">3</td>
|
||
</tr>
|
||
<tr>
|
||
<th scope="row">vault</th>
|
||
<td style="--size: 0.071" data-value="1">1</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
|
||
<p data-text="dim">Threshold: >7 failures in 10 weeks. vault and commons are solid. trentuna-web is borderline — watch it.</p>
|
||
</section>
|
||
</main>
|
||
|
||
<!--#include virtual="/_include/footer.html" -->
|
||
</body>
|
||
</html>
|