1{{define "title"}}Cartograph · {{.Volume.Title}} · diff{{end}}2{{define "content"}}3<section class="page-head">4 <h1>{{.Volume.Title}} <span class="dim">what moved</span></h1>5 <p class="dim"><a href="/volume/{{.Volume.Slug}}">{{.Volume.Slug}}</a> · {{.Diff.A.File}} → {{.Diff.B.File}}</p>6</section>78<section class="card">9 <h2>Axes</h2>10 <table>11 <thead><tr><th>measure</th><th class="num">{{.Diff.A.ShortStamp}}</th><th class="num">{{.Diff.B.ShortStamp}}</th><th class="num">Δ</th></tr></thead>12 <tbody>13 {{range .Diff.Axes}}14 <tr>15 <td>{{.Name}}</td><td class="num">{{.A}}</td><td class="num">{{.B}}</td>16 <td class="num {{if gt .Sign 0}}delta-up{{else if lt .Sign 0}}delta-down{{else}}delta-flat{{end}}">{{.Delta}}</td>17 </tr>18 {{end}}19 </tbody>20 </table>21</section>2223<div class="columns">24<section class="card">25 <h2>Pins added <span class="dim">{{len .Diff.Added}}</span></h2>26 {{if .Diff.Added}}27 <table>28 <thead><tr><th>map</th><th class="num">id</th><th>title</th></tr></thead>29 <tbody>{{range .Diff.Added}}<tr><td>{{.Map}}</td><td class="num">{{.ID}}</td><td>{{.Title}}</td></tr>{{end}}</tbody>30 </table>31 {{else}}<p class="dim">None.</p>{{end}}32</section>33<section class="card">34 <h2>Pins removed <span class="dim">{{len .Diff.Removed}}</span></h2>35 {{if .Diff.Removed}}36 <table>37 <thead><tr><th>map</th><th class="num">id</th><th>title</th></tr></thead>38 <tbody>{{range .Diff.Removed}}<tr><td>{{.Map}}</td><td class="num">{{.ID}}</td><td>{{.Title}}</td></tr>{{end}}</tbody>39 </table>40 {{else}}<p class="dim">None.</p>{{end}}41</section>42</div>4344<section class="card">45 <h2>Matched-pair stability</h2>46 {{if .Diff.Pairs}}47 <p class="dim">A pair is the same pair only when donor and winner both agree; a match that changed winners reads as one lost, one gained.</p>48 <table>49 <thead><tr><th>map</th><th>source</th><th class="num">kept</th><th class="num">gained</th><th class="num">lost</th></tr></thead>50 <tbody>51 {{range .Diff.Pairs}}52 <tr><td>{{.Map}}</td><td>{{.Source}}</td><td class="num">{{.Kept}}</td><td class="num">{{.Gained}}</td><td class="num">{{.Lost}}</td></tr>53 {{end}}54 </tbody>55 </table>56 {{else}}<p class="dim">Neither build carries a merge ledger.</p>{{end}}57</section>58{{end}}