Dashboard from proof/ at 3b432232
Browse files- README.md +1 -1
- index.html +3 -3
README.md
CHANGED
|
@@ -8,4 +8,4 @@ pinned: false
|
|
| 8 |
license: mit
|
| 9 |
---
|
| 10 |
|
| 11 |
-
Generated by `secondkey/dashboard.py` from `proof/` at commit `
|
|
|
|
| 8 |
license: mit
|
| 9 |
---
|
| 10 |
|
| 11 |
+
Generated by `secondkey/dashboard.py` from `proof/` at commit `3b432232` of https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key.
|
index.html
CHANGED
|
@@ -32,7 +32,7 @@ svg.chart{max-width:720px;display:block}svg text{fill:var(--ink2);font-size:12px
|
|
| 32 |
and a project-aware review, and a human turns the second key for the exact commit. Everything below is generated from <code>proof/</code>.</p>
|
| 33 |
<div class="links"><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key">Repository</a><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/blob/main/README.md">README</a>
|
| 34 |
<a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/releases">Releases</a><a href="https://second-key-uptime-kuma.onrender.com/status/sk-demo">Live status page</a><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/blob/main/docs/SESSIONS.md">Agent sessions</a></div>
|
| 35 |
-
<div class="tiles"><div class="tile"><div class="n">15 of 16</div><div class="l">seeded faults flagged by Second Key (BLOCK or NEEDS_REVIEW), both rounds</div></div><div class="tile"><div class="n">4 of 16</div><div class="l">stopped by the usual rule, merge when the MR's own tests pass</div></div><div class="tile"><div class="n">0 of 6</div><div class="l">clean controls blocked after the calibration MR</div></div><div class="tile"><div class="n">86%</div><div class="l">less measured CI energy on the same 6 commits; 70-73% less carbon</div></div><div class="tile"><div class="n">
|
| 36 |
|
| 37 |
<h2>The same merge requests, judged two ways</h2>
|
| 38 |
<p class="lede">Left: the rule most projects use, merge when the MR's own tests pass. Right: Second Key's deterministic verdict.
|
|
@@ -40,7 +40,7 @@ The usual rule lets every clean change through, so it is not a strawman; Second
|
|
| 40 |
<div class="wrap"><table><thead><tr><th>MR</th><th>Round</th><th>Kind</th><th>Change</th><th>Tests</th><th>Tests-pass rule</th><th>Second Key</th><th class="num">CI energy (J)</th><th></th></tr></thead>
|
| 41 |
<tbody><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/3">!3</a></td><td>1</td><td>seed</td><td>[seeded fault #1] checkStatusCode upper bound exclusive</td><td>passed</td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td><span class="chip review"><i aria-hidden="true">!</i>NEEDS REVIEW</span></td><td class="num">628.97</td><td class="tag"><span class="only">caught only by Second Key</span></td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/4">!4</a></td><td>1</td><td>seed</td><td>[seeded fault #2] flatStatus maps MAINTENANCE to DOWN</td><td>passed</td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td><span class="chip review"><i aria-hidden="true">!</i>NEEDS REVIEW</span></td><td class="num">750.44</td><td class="tag"><span class="only">caught only by Second Key</span></td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/5">!5</a></td><td>1</td><td>seed</td><td>[seeded fault #3] number <= operator becomes <</td><td>failed</td><td><span class="chip block"><i aria-hidden="true">β</i>BLOCK</span></td><td><span class="chip block"><i aria-hidden="true">β</i>BLOCK</span></td><td class="num">112.6</td><td class="tag"></td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/6">!6</a></td><td>1</td><td>seed</td><td>[seeded fault #4] evaluator swaps AND and OR</td><td>failed</td><td><span class="chip block"><i aria-hidden="true">β</i>BLOCK</span></td><td><span class="chip block"><i aria-hidden="true">β</i>BLOCK</span></td><td class="num">93.92</td><td class="tag"></td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/7">!7</a></td><td>1</td><td>seed</td><td>[seeded fault #7] system-service check builds a shell command</td><td>passed</td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td><span class="chip review"><i aria-hidden="true">!</i>NEEDS REVIEW</span></td><td class="num">518.69</td><td class="tag"><span class="only">caught only by Second Key</span></td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/8">!8</a></td><td>1</td><td>seed</td><td>[seeded fault #8] status page preload loses script-context escaping</td><td>passed</td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td class="num">20.29</td><td class="tag">missed by both</td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/9">!9</a></td><td>1</td><td>seed</td><td>[seeded fault #9] deleteMonitor handler without checkLogin</td><td>passed</td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td><span class="chip block"><i aria-hidden="true">β</i>BLOCK</span></td><td class="num">79.21</td><td class="tag"><span class="only">caught only by Second Key</span></td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/10">!10</a></td><td>1</td><td>seed</td><td>[seeded fault #10] fake GitLab token committed in config</td><td>passed</td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td><span class="chip block"><i aria-hidden="true">β</i>BLOCK</span></td><td class="num">526.26</td><td class="tag"><span class="only">caught only by Second Key</span></td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/11">!11</a></td><td>1</td><td>seed</td><td>[seeded fault #12] uptime-calculator test loses assertions</td><td>passed</td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td><span class="chip review"><i aria-hidden="true">!</i>NEEDS REVIEW</span></td><td class="num">41.84</td><td class="tag"><span class="only">caught only by Second Key</span></td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/12">!12</a></td><td>1</td><td>seed</td><td>[seeded fault #13] parseTimeObject reads hours as minutes</td><td>passed</td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td><span class="chip review"><i aria-hidden="true">!</i>NEEDS REVIEW</span></td><td class="num">356.37</td><td class="tag"><span class="only">caught only by Second Key</span></td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/13">!13</a></td><td>1</td><td>seed</td><td>[seeded fault #20] certificate hostname check always passes</td><td>failed</td><td><span class="chip block"><i aria-hidden="true">β</i>BLOCK</span></td><td><span class="chip block"><i aria-hidden="true">β</i>BLOCK</span></td><td class="num">559.46</td><td class="tag"></td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/14">!14</a></td><td>1</td><td>seed</td><td>[seeded fault #21] retry delay says 30 seconds, code waits 30 minutes</td><td>passed</td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td><span class="chip review"><i aria-hidden="true">!</i>NEEDS REVIEW</span></td><td class="num">553.57</td><td class="tag"><span class="only">caught only by Second Key</span></td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/15">!15</a></td><td>1</td><td>clean</td><td>[clean control] document the push route query parameters</td><td>passed</td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td><span class="chip review"><i aria-hidden="true">!</i>NEEDS REVIEW</span></td><td class="num">147.7</td><td class="tag">review load (clean change sent to review or blocked)</td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/16">!16</a></td><td>1</td><td>clean</td><td>[clean control] clarify the numeric operator comment</td><td>passed</td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td class="num">129.11</td><td class="tag"></td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/17">!17</a></td><td>1</td><td>clean</td><td>[clean control] README wording fix</td><td>passed</td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td class="num">12.73</td><td class="tag"></td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/18">!18</a></td><td>1</td><td>clean</td><td>[clean control] unit test for checkStatusCode</td><td>passed</td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td class="num">12.92</td><td class="tag"></td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/19">!19</a></td><td>1</td><td>clean</td><td>[clean control] rename a local variable in the push route</td><td>passed</td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td><span class="chip block"><i aria-hidden="true">β</i>BLOCK</span></td><td class="num">134.7</td><td class="tag">review load (clean change sent to review or blocked)</td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/20">!20</a></td><td>1</td><td>clean</td><td>[clean control] JSDoc for flatStatus</td><td>passed</td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td><span class="chip review"><i aria-hidden="true">!</i>NEEDS REVIEW</span></td><td class="num">824.17</td><td class="tag">review load (clean change sent to review or blocked)</td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/34">!34</a></td><td>2 (after calibration)</td><td>seed</td><td>[seeded fault #5] PENDING to DOWN no longer notifies</td><td>passed</td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td><span class="chip review"><i aria-hidden="true">!</i>NEEDS REVIEW</span></td><td class="num">139.31</td><td class="tag"><span class="only">caught only by Second Key</span></td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/35">!35</a></td><td>2 (after calibration)</td><td>seed</td><td>[seeded fault #14] JSON query == compares with !=</td><td>failed</td><td><span class="chip block"><i aria-hidden="true">β</i>BLOCK</span></td><td><span class="chip block"><i aria-hidden="true">β</i>BLOCK</span></td><td class="num">684.11</td><td class="tag"></td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/36">!36</a></td><td>2 (after calibration)</td><td>seed</td><td>[seeded fault #15] condition groups always use AND</td><td>passed</td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td><span class="chip review"><i aria-hidden="true">!</i>NEEDS REVIEW</span></td><td class="num">445.38</td><td class="tag"><span class="only">caught only by Second Key</span></td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/37">!37</a></td><td>2 (after calibration)</td><td>seed</td><td>[seeded fault #22] /metrics served without apiAuth</td><td>passed</td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td><span class="chip block"><i aria-hidden="true">β</i>BLOCK</span></td><td class="num">154.41</td><td class="tag"><span class="only">caught only by Second Key</span></td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/38">!38</a></td><td>2 (after calibration)</td><td>clean</td><td>[clean control] clarify a comment in the DNS monitor</td><td>passed</td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td><span class="chip review"><i aria-hidden="true">!</i>NEEDS REVIEW</span></td><td class="num">65.78</td><td class="tag">review load (clean change sent to review or blocked)</td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/39">!39</a></td><td>2 (after calibration)</td><td>clean</td><td>[clean control] unit test for isImportantForNotification</td><td>passed</td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td class="num">18.55</td><td class="tag"></td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/40">!40</a></td><td>2 (after calibration)</td><td>clean</td><td>[clean control] name the default push message</td><td>passed</td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td><span class="chip review"><i aria-hidden="true">!</i>NEEDS REVIEW</span></td><td class="num">151.49</td><td class="tag">review load (clean change sent to review or blocked)</td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/41">!41</a></td><td>2 (after calibration)</td><td>clean</td><td>[clean control] CONTRIBUTING wording fix</td><td>passed</td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td class="num">9.15</td><td class="tag"></td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/42">!42</a></td><td>2 (after calibration)</td><td>clean</td><td>[clean control] slightly wider button padding</td><td>passed</td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td class="num">111.96</td><td class="tag"></td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/43">!43</a></td><td>2 (after calibration)</td><td>clean</td><td>[clean control] normalise the status page slug in one expression</td><td>passed</td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td><span class="chip review"><i aria-hidden="true">!</i>NEEDS REVIEW</span></td><td class="num">134.37</td><td class="tag">review load (clean change sent to review or blocked)</td></tr></tbody></table></div>
|
| 42 |
|
| 43 |
-
<h2>Where the GO threshold sits</h2><p class="lede">The current policy replayed on the 28 seeded and clean MRs' recorded evidence at every GO threshold. Blockers do not depend on it; the curve shows what the score buys. These are the MRs the policy was calibrated on once, so this describes the trade-off, it does not test it.</p><div class="legend"><span><span class="sw" style="background:var(--s1)"></span>seeded faults flagged</span><span><span class="sw" style="background:var(--s2)"></span>clean controls passed (GO)</span></div><svg class="chart" viewBox="0 0 720 270" width="100%" role="img" aria-label="Seeded faults flagged and clean controls passed, by GO threshold"><line x1="44" x2="704" y1="226.0" y2="226.0" style="stroke:var(--line)"/><text x="36" y="230.0" text-anchor="end">0%</text><line x1="44" x2="704" y1="119.0" y2="119.0" style="stroke:var(--line)"/><text x="36" y="123.0" text-anchor="end">50%</text><line x1="44" x2="704" y1="12.0" y2="12.0" style="stroke:var(--line)"/><text x="36" y="16.0" text-anchor="end">100%</text><text x="44.0" y="244" text-anchor="middle">0</text><text x="176.0" y="244" text-anchor="middle">12</text><text x="308.0" y="244" text-anchor="middle">24</text><text x="440.0" y="244" text-anchor="middle">36</text><text x="572.0" y="244" text-anchor="middle">48</text><text x="704.0" y="244" text-anchor="middle">60</text><line x1="308.0" x2="308.0" y1="12" y2="226" style="stroke:var(--ink2);stroke-dasharray:4 4"/><text x="314.0" y="52">current GO β€ 24</text><text x="374.0" y="269" text-anchor="middle">GO threshold (score)</text><polyline points="44.0,12.0 66.0,12.0 88.0,12.0 110.0,12.0 132.0,12.0 154.0,12.0 176.0,12.0 198.0,12.0 220.0,12.0 242.0,12.0 264.0,12.0 286.0,12.0 308.0,12.0 330.0,38.8 352.0,38.8 374.0,
|
| 44 |
<h2>Real upstream pull requests, replayed</h2>
|
| 45 |
<p class="lede">Held-out Uptime Kuma PRs cherry-picked onto this fork and run as MRs; "later" comes from the same bad-change definition as the backtest
|
| 46 |
and was not visible to the gate. On the sealed held-out backtest (history and diff signals only) it flagged 1 of 4 later-bad PRs and blocked 1 of 229 good ones.</p>
|
|
@@ -52,7 +52,7 @@ and was not visible to the gate. On the sealed held-out backtest (history and di
|
|
| 52 |
<div class="wrap"><table><thead><tr><th>Change (same commit)</th><th class="num">Risk-proportional (J)</th><th class="num">Full suite (J)</th><th>MRs</th></tr></thead><tbody><tr><td>07-dns-comment</td><td class="num">65.78</td><td class="num">572.85</td><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/38">!38</a> / <a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/44">!44</a></td></tr><tr><td>08-notification-test</td><td class="num">18.55</td><td class="num">604.75</td><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/39">!39</a> / <a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/45">!45</a></td></tr><tr><td>09-push-default-message</td><td class="num">151.49</td><td class="num">526.23</td><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/40">!40</a> / <a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/46">!46</a></td></tr><tr><td>10-contributing-wording</td><td class="num">9.15</td><td class="num">609.65</td><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/41">!41</a> / <a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/47">!47</a></td></tr><tr><td>11-button-padding</td><td class="num">111.96</td><td class="num">503.17</td><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/42">!42</a> / <a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/48">!48</a></td></tr><tr><td>12-status-page-router-slug</td><td class="num">134.37</td><td class="num">652.07</td><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/43">!43</a> / <a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/49">!49</a></td></tr></tbody></table></div>
|
| 53 |
|
| 54 |
<h2>DevSecOps stages</h2>
|
| 55 |
-
<div class="stages"><div class="stage"><b>Plan</b><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/work_items/1">evidence</a></div><div class="stage"><b>Create</b><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/automate/agent-sessions/10009882">evidence</a></div><div class="stage"><b>Verify</b><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/pipelines/2985393119">evidence</a></div><div class="stage"><b>Secure</b><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/pipelines/2985393392">evidence</a></div><div class="stage"><b>Govern</b><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/packages">evidence</a></div><div class="stage"><b>Package</b><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/pipelines/2986180269">evidence</a></div><div class="stage"><b>Release</b><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/
|
| 56 |
<p class="foot">Generated by <code>secondkey/dashboard.py</code> from <code>proof/</code> and <code>docs/</code>. Seeded faults are deliberately bad changes made for the evaluation.
|
| 57 |
Base project: <a href="https://github.com/louislam/uptime-kuma">Uptime Kuma</a> 2.5.7 (MIT).</p>
|
| 58 |
</main></body></html>
|
|
|
|
| 32 |
and a project-aware review, and a human turns the second key for the exact commit. Everything below is generated from <code>proof/</code>.</p>
|
| 33 |
<div class="links"><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key">Repository</a><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/blob/main/README.md">README</a>
|
| 34 |
<a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/releases">Releases</a><a href="https://second-key-uptime-kuma.onrender.com/status/sk-demo">Live status page</a><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/blob/main/docs/SESSIONS.md">Agent sessions</a></div>
|
| 35 |
+
<div class="tiles"><div class="tile"><div class="n">15 of 16</div><div class="l">seeded faults flagged by Second Key (BLOCK or NEEDS_REVIEW), both rounds</div></div><div class="tile"><div class="n">4 of 16</div><div class="l">stopped by the usual rule, merge when the MR's own tests pass</div></div><div class="tile"><div class="n">6 of 12</div><div class="l">clean controls Second Key sent to review or blocked: the price of the catches</div></div><div class="tile"><div class="n">0 of 6</div><div class="l">clean controls blocked after the calibration MR</div></div><div class="tile"><div class="n">86%</div><div class="l">less measured CI energy on the same 6 commits; 70-73% less carbon</div></div><div class="tile"><div class="n">18</div><div class="l">GitLab Duo agent sessions on this project, failures listed</div></div></div>
|
| 36 |
|
| 37 |
<h2>The same merge requests, judged two ways</h2>
|
| 38 |
<p class="lede">Left: the rule most projects use, merge when the MR's own tests pass. Right: Second Key's deterministic verdict.
|
|
|
|
| 40 |
<div class="wrap"><table><thead><tr><th>MR</th><th>Round</th><th>Kind</th><th>Change</th><th>Tests</th><th>Tests-pass rule</th><th>Second Key</th><th class="num">CI energy (J)</th><th></th></tr></thead>
|
| 41 |
<tbody><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/3">!3</a></td><td>1</td><td>seed</td><td>[seeded fault #1] checkStatusCode upper bound exclusive</td><td>passed</td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td><span class="chip review"><i aria-hidden="true">!</i>NEEDS REVIEW</span></td><td class="num">628.97</td><td class="tag"><span class="only">caught only by Second Key</span></td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/4">!4</a></td><td>1</td><td>seed</td><td>[seeded fault #2] flatStatus maps MAINTENANCE to DOWN</td><td>passed</td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td><span class="chip review"><i aria-hidden="true">!</i>NEEDS REVIEW</span></td><td class="num">750.44</td><td class="tag"><span class="only">caught only by Second Key</span></td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/5">!5</a></td><td>1</td><td>seed</td><td>[seeded fault #3] number <= operator becomes <</td><td>failed</td><td><span class="chip block"><i aria-hidden="true">β</i>BLOCK</span></td><td><span class="chip block"><i aria-hidden="true">β</i>BLOCK</span></td><td class="num">112.6</td><td class="tag"></td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/6">!6</a></td><td>1</td><td>seed</td><td>[seeded fault #4] evaluator swaps AND and OR</td><td>failed</td><td><span class="chip block"><i aria-hidden="true">β</i>BLOCK</span></td><td><span class="chip block"><i aria-hidden="true">β</i>BLOCK</span></td><td class="num">93.92</td><td class="tag"></td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/7">!7</a></td><td>1</td><td>seed</td><td>[seeded fault #7] system-service check builds a shell command</td><td>passed</td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td><span class="chip review"><i aria-hidden="true">!</i>NEEDS REVIEW</span></td><td class="num">518.69</td><td class="tag"><span class="only">caught only by Second Key</span></td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/8">!8</a></td><td>1</td><td>seed</td><td>[seeded fault #8] status page preload loses script-context escaping</td><td>passed</td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td class="num">20.29</td><td class="tag">missed by both</td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/9">!9</a></td><td>1</td><td>seed</td><td>[seeded fault #9] deleteMonitor handler without checkLogin</td><td>passed</td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td><span class="chip block"><i aria-hidden="true">β</i>BLOCK</span></td><td class="num">79.21</td><td class="tag"><span class="only">caught only by Second Key</span></td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/10">!10</a></td><td>1</td><td>seed</td><td>[seeded fault #10] fake GitLab token committed in config</td><td>passed</td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td><span class="chip block"><i aria-hidden="true">β</i>BLOCK</span></td><td class="num">526.26</td><td class="tag"><span class="only">caught only by Second Key</span></td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/11">!11</a></td><td>1</td><td>seed</td><td>[seeded fault #12] uptime-calculator test loses assertions</td><td>passed</td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td><span class="chip review"><i aria-hidden="true">!</i>NEEDS REVIEW</span></td><td class="num">41.84</td><td class="tag"><span class="only">caught only by Second Key</span></td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/12">!12</a></td><td>1</td><td>seed</td><td>[seeded fault #13] parseTimeObject reads hours as minutes</td><td>passed</td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td><span class="chip review"><i aria-hidden="true">!</i>NEEDS REVIEW</span></td><td class="num">356.37</td><td class="tag"><span class="only">caught only by Second Key</span></td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/13">!13</a></td><td>1</td><td>seed</td><td>[seeded fault #20] certificate hostname check always passes</td><td>failed</td><td><span class="chip block"><i aria-hidden="true">β</i>BLOCK</span></td><td><span class="chip block"><i aria-hidden="true">β</i>BLOCK</span></td><td class="num">559.46</td><td class="tag"></td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/14">!14</a></td><td>1</td><td>seed</td><td>[seeded fault #21] retry delay says 30 seconds, code waits 30 minutes</td><td>passed</td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td><span class="chip review"><i aria-hidden="true">!</i>NEEDS REVIEW</span></td><td class="num">553.57</td><td class="tag"><span class="only">caught only by Second Key</span></td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/15">!15</a></td><td>1</td><td>clean</td><td>[clean control] document the push route query parameters</td><td>passed</td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td><span class="chip review"><i aria-hidden="true">!</i>NEEDS REVIEW</span></td><td class="num">147.7</td><td class="tag">review load (clean change sent to review or blocked)</td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/16">!16</a></td><td>1</td><td>clean</td><td>[clean control] clarify the numeric operator comment</td><td>passed</td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td class="num">129.11</td><td class="tag"></td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/17">!17</a></td><td>1</td><td>clean</td><td>[clean control] README wording fix</td><td>passed</td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td class="num">12.73</td><td class="tag"></td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/18">!18</a></td><td>1</td><td>clean</td><td>[clean control] unit test for checkStatusCode</td><td>passed</td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td class="num">12.92</td><td class="tag"></td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/19">!19</a></td><td>1</td><td>clean</td><td>[clean control] rename a local variable in the push route</td><td>passed</td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td><span class="chip block"><i aria-hidden="true">β</i>BLOCK</span></td><td class="num">134.7</td><td class="tag">review load (clean change sent to review or blocked)</td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/20">!20</a></td><td>1</td><td>clean</td><td>[clean control] JSDoc for flatStatus</td><td>passed</td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td><span class="chip review"><i aria-hidden="true">!</i>NEEDS REVIEW</span></td><td class="num">824.17</td><td class="tag">review load (clean change sent to review or blocked)</td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/34">!34</a></td><td>2 (after calibration)</td><td>seed</td><td>[seeded fault #5] PENDING to DOWN no longer notifies</td><td>passed</td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td><span class="chip review"><i aria-hidden="true">!</i>NEEDS REVIEW</span></td><td class="num">139.31</td><td class="tag"><span class="only">caught only by Second Key</span></td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/35">!35</a></td><td>2 (after calibration)</td><td>seed</td><td>[seeded fault #14] JSON query == compares with !=</td><td>failed</td><td><span class="chip block"><i aria-hidden="true">β</i>BLOCK</span></td><td><span class="chip block"><i aria-hidden="true">β</i>BLOCK</span></td><td class="num">684.11</td><td class="tag"></td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/36">!36</a></td><td>2 (after calibration)</td><td>seed</td><td>[seeded fault #15] condition groups always use AND</td><td>passed</td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td><span class="chip review"><i aria-hidden="true">!</i>NEEDS REVIEW</span></td><td class="num">445.38</td><td class="tag"><span class="only">caught only by Second Key</span></td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/37">!37</a></td><td>2 (after calibration)</td><td>seed</td><td>[seeded fault #22] /metrics served without apiAuth</td><td>passed</td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td><span class="chip block"><i aria-hidden="true">β</i>BLOCK</span></td><td class="num">154.41</td><td class="tag"><span class="only">caught only by Second Key</span></td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/38">!38</a></td><td>2 (after calibration)</td><td>clean</td><td>[clean control] clarify a comment in the DNS monitor</td><td>passed</td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td><span class="chip review"><i aria-hidden="true">!</i>NEEDS REVIEW</span></td><td class="num">65.78</td><td class="tag">review load (clean change sent to review or blocked)</td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/39">!39</a></td><td>2 (after calibration)</td><td>clean</td><td>[clean control] unit test for isImportantForNotification</td><td>passed</td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td class="num">18.55</td><td class="tag"></td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/40">!40</a></td><td>2 (after calibration)</td><td>clean</td><td>[clean control] name the default push message</td><td>passed</td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td><span class="chip review"><i aria-hidden="true">!</i>NEEDS REVIEW</span></td><td class="num">151.49</td><td class="tag">review load (clean change sent to review or blocked)</td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/41">!41</a></td><td>2 (after calibration)</td><td>clean</td><td>[clean control] CONTRIBUTING wording fix</td><td>passed</td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td class="num">9.15</td><td class="tag"></td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/42">!42</a></td><td>2 (after calibration)</td><td>clean</td><td>[clean control] slightly wider button padding</td><td>passed</td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td class="num">111.96</td><td class="tag"></td></tr><tr><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/43">!43</a></td><td>2 (after calibration)</td><td>clean</td><td>[clean control] normalise the status page slug in one expression</td><td>passed</td><td><span class="chip go"><i aria-hidden="true">β</i>GO</span></td><td><span class="chip review"><i aria-hidden="true">!</i>NEEDS REVIEW</span></td><td class="num">134.37</td><td class="tag">review load (clean change sent to review or blocked)</td></tr></tbody></table></div>
|
| 42 |
|
| 43 |
+
<h2>Where the GO threshold sits</h2><p class="lede">The current policy replayed on the 28 seeded and clean MRs' recorded evidence at every GO threshold. Blockers do not depend on it; the curve shows what the score buys. These are the MRs the policy was calibrated on once, so this describes the trade-off, it does not test it.</p><div class="legend"><span><span class="sw" style="background:var(--s1)"></span>seeded faults flagged</span><span><span class="sw" style="background:var(--s2)"></span>clean controls passed (GO)</span></div><svg class="chart" viewBox="0 0 720 270" width="100%" role="img" aria-label="Seeded faults flagged and clean controls passed, by GO threshold"><line x1="44" x2="704" y1="226.0" y2="226.0" style="stroke:var(--line)"/><text x="36" y="230.0" text-anchor="end">0%</text><line x1="44" x2="704" y1="119.0" y2="119.0" style="stroke:var(--line)"/><text x="36" y="123.0" text-anchor="end">50%</text><line x1="44" x2="704" y1="12.0" y2="12.0" style="stroke:var(--line)"/><text x="36" y="16.0" text-anchor="end">100%</text><text x="44.0" y="244" text-anchor="middle">0</text><text x="176.0" y="244" text-anchor="middle">12</text><text x="308.0" y="244" text-anchor="middle">24</text><text x="440.0" y="244" text-anchor="middle">36</text><text x="572.0" y="244" text-anchor="middle">48</text><text x="704.0" y="244" text-anchor="middle">60</text><line x1="308.0" x2="308.0" y1="12" y2="226" style="stroke:var(--ink2);stroke-dasharray:4 4"/><text x="314.0" y="52">current GO β€ 24</text><text x="374.0" y="269" text-anchor="middle">GO threshold (score)</text><polyline points="44.0,12.0 66.0,12.0 88.0,12.0 110.0,12.0 132.0,12.0 154.0,12.0 176.0,12.0 198.0,12.0 220.0,12.0 242.0,12.0 264.0,12.0 286.0,12.0 308.0,12.0 330.0,38.8 352.0,38.8 374.0,52.1 396.0,52.1 418.0,52.1 440.0,65.5 462.0,65.5 484.0,65.5 506.0,78.9 528.0,78.9 550.0,92.2 572.0,92.2 594.0,105.6 616.0,105.6 638.0,119.0 660.0,119.0 682.0,119.0 704.0,119.0" style="fill:none;stroke:var(--s1);stroke-width:2"/><circle cx="44.0" cy="12.0" r="4.5" style="fill:var(--s1);stroke:var(--bg);stroke-width:2"><title>GO β€ 0: seeded faults flagged 16 of 16</title></circle><circle cx="110.0" cy="12.0" r="4.5" style="fill:var(--s1);stroke:var(--bg);stroke-width:2"><title>GO β€ 6: seeded faults flagged 16 of 16</title></circle><circle cx="176.0" cy="12.0" r="4.5" style="fill:var(--s1);stroke:var(--bg);stroke-width:2"><title>GO β€ 12: seeded faults flagged 16 of 16</title></circle><circle cx="242.0" cy="12.0" r="4.5" style="fill:var(--s1);stroke:var(--bg);stroke-width:2"><title>GO β€ 18: seeded faults flagged 16 of 16</title></circle><circle cx="308.0" cy="12.0" r="4.5" style="fill:var(--s1);stroke:var(--bg);stroke-width:2"><title>GO β€ 24: seeded faults flagged 16 of 16</title></circle><circle cx="374.0" cy="52.1" r="4.5" style="fill:var(--s1);stroke:var(--bg);stroke-width:2"><title>GO β€ 30: seeded faults flagged 13 of 16</title></circle><circle cx="440.0" cy="65.5" r="4.5" style="fill:var(--s1);stroke:var(--bg);stroke-width:2"><title>GO β€ 36: seeded faults flagged 12 of 16</title></circle><circle cx="506.0" cy="78.9" r="4.5" style="fill:var(--s1);stroke:var(--bg);stroke-width:2"><title>GO β€ 42: seeded faults flagged 11 of 16</title></circle><circle cx="572.0" cy="92.2" r="4.5" style="fill:var(--s1);stroke:var(--bg);stroke-width:2"><title>GO β€ 48: seeded faults flagged 10 of 16</title></circle><circle cx="638.0" cy="119.0" r="4.5" style="fill:var(--s1);stroke:var(--bg);stroke-width:2"><title>GO β€ 54: seeded faults flagged 8 of 16</title></circle><circle cx="704.0" cy="119.0" r="4.5" style="fill:var(--s1);stroke:var(--bg);stroke-width:2"><title>GO β€ 60: seeded faults flagged 8 of 16</title></circle><polyline points="44.0,226.0 66.0,226.0 88.0,226.0 110.0,154.7 132.0,154.7 154.0,154.7 176.0,154.7 198.0,154.7 220.0,119.0 242.0,119.0 264.0,119.0 286.0,119.0 308.0,119.0 330.0,101.2 352.0,101.2 374.0,101.2 396.0,101.2 418.0,101.2 440.0,65.5 462.0,65.5 484.0,47.7 506.0,47.7 528.0,47.7 550.0,29.8 572.0,29.8 594.0,29.8 616.0,29.8 638.0,12.0 660.0,12.0 682.0,12.0 704.0,12.0" style="fill:none;stroke:var(--s2);stroke-width:2"/><circle cx="44.0" cy="226.0" r="4.5" style="fill:var(--s2);stroke:var(--bg);stroke-width:2"><title>GO β€ 0: clean controls passed 0 of 12</title></circle><circle cx="110.0" cy="154.7" r="4.5" style="fill:var(--s2);stroke:var(--bg);stroke-width:2"><title>GO β€ 6: clean controls passed 4 of 12</title></circle><circle cx="176.0" cy="154.7" r="4.5" style="fill:var(--s2);stroke:var(--bg);stroke-width:2"><title>GO β€ 12: clean controls passed 4 of 12</title></circle><circle cx="242.0" cy="119.0" r="4.5" style="fill:var(--s2);stroke:var(--bg);stroke-width:2"><title>GO β€ 18: clean controls passed 6 of 12</title></circle><circle cx="308.0" cy="119.0" r="4.5" style="fill:var(--s2);stroke:var(--bg);stroke-width:2"><title>GO β€ 24: clean controls passed 6 of 12</title></circle><circle cx="374.0" cy="101.2" r="4.5" style="fill:var(--s2);stroke:var(--bg);stroke-width:2"><title>GO β€ 30: clean controls passed 7 of 12</title></circle><circle cx="440.0" cy="65.5" r="4.5" style="fill:var(--s2);stroke:var(--bg);stroke-width:2"><title>GO β€ 36: clean controls passed 9 of 12</title></circle><circle cx="506.0" cy="47.7" r="4.5" style="fill:var(--s2);stroke:var(--bg);stroke-width:2"><title>GO β€ 42: clean controls passed 10 of 12</title></circle><circle cx="572.0" cy="29.8" r="4.5" style="fill:var(--s2);stroke:var(--bg);stroke-width:2"><title>GO β€ 48: clean controls passed 11 of 12</title></circle><circle cx="638.0" cy="12.0" r="4.5" style="fill:var(--s2);stroke:var(--bg);stroke-width:2"><title>GO β€ 54: clean controls passed 12 of 12</title></circle><circle cx="704.0" cy="12.0" r="4.5" style="fill:var(--s2);stroke:var(--bg);stroke-width:2"><title>GO β€ 60: clean controls passed 12 of 12</title></circle></svg>
|
| 44 |
<h2>Real upstream pull requests, replayed</h2>
|
| 45 |
<p class="lede">Held-out Uptime Kuma PRs cherry-picked onto this fork and run as MRs; "later" comes from the same bad-change definition as the backtest
|
| 46 |
and was not visible to the gate. On the sealed held-out backtest (history and diff signals only) it flagged 1 of 4 later-bad PRs and blocked 1 of 229 good ones.</p>
|
|
|
|
| 52 |
<div class="wrap"><table><thead><tr><th>Change (same commit)</th><th class="num">Risk-proportional (J)</th><th class="num">Full suite (J)</th><th>MRs</th></tr></thead><tbody><tr><td>07-dns-comment</td><td class="num">65.78</td><td class="num">572.85</td><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/38">!38</a> / <a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/44">!44</a></td></tr><tr><td>08-notification-test</td><td class="num">18.55</td><td class="num">604.75</td><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/39">!39</a> / <a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/45">!45</a></td></tr><tr><td>09-push-default-message</td><td class="num">151.49</td><td class="num">526.23</td><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/40">!40</a> / <a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/46">!46</a></td></tr><tr><td>10-contributing-wording</td><td class="num">9.15</td><td class="num">609.65</td><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/41">!41</a> / <a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/47">!47</a></td></tr><tr><td>11-button-padding</td><td class="num">111.96</td><td class="num">503.17</td><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/42">!42</a> / <a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/48">!48</a></td></tr><tr><td>12-status-page-router-slug</td><td class="num">134.37</td><td class="num">652.07</td><td><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/43">!43</a> / <a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/merge_requests/49">!49</a></td></tr></tbody></table></div>
|
| 53 |
|
| 54 |
<h2>DevSecOps stages</h2>
|
| 55 |
+
<div class="stages"><div class="stage"><b>Plan</b><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/work_items/1">evidence</a></div><div class="stage"><b>Create</b><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/automate/agent-sessions/10009882">evidence</a></div><div class="stage"><b>Verify</b><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/pipelines/2985393119">evidence</a></div><div class="stage"><b>Secure</b><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/pipelines/2985393392">evidence</a></div><div class="stage"><b>Govern</b><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/packages">evidence</a></div><div class="stage"><b>Package</b><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/pipelines/2986180269">evidence</a></div><div class="stage"><b>Release</b><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/releases/sk-v2.5.7-174">evidence</a></div><div class="stage"><b>Configure</b><a href="https://second-key-uptime-kuma.onrender.com/status/sk-demo">evidence</a></div><div class="stage"><b>Monitor</b><a href="https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43701009/second-key/-/pipelines?source=schedule">evidence</a></div></div>
|
| 56 |
<p class="foot">Generated by <code>secondkey/dashboard.py</code> from <code>proof/</code> and <code>docs/</code>. Seeded faults are deliberately bad changes made for the evaluation.
|
| 57 |
Base project: <a href="https://github.com/louislam/uptime-kuma">Uptime Kuma</a> 2.5.7 (MIT).</p>
|
| 58 |
</main></body></html>
|