File size: 21,452 Bytes
e2d1708
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
<!DOCTYPE html>
<!--
  a11oy · A SIGNATURE IS NOT PROOF OF SAFETY — public case study (showcase lane).
  © 2026 Lutar, Stephen P. — SZL Holdings. SPDX-License-Identifier: Apache-2.0
  0 runtime CDN: system fonts only, no external scripts. Where a claim can be
  proven LIVE it is wired to a real a11oy production endpoint
  (/api/a11oy/v1/{compliance,pinn/certificate,...}) via fetch with an HONEST
  NO-LIVE-DATA fallback — never a fabricated value. Maturity is labelled
  LIVE-today vs ROADMAP throughout (doctrine v11). Content mirrors the
  SZL thought-leadership case study of the same name.
-->
<html lang="en">
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>a11oy · A Signature Is Not Proof of Safety</title>
<style>
  :root{
    --bg:#0a0e14; --panel:#121823; --panel2:#0f141d; --line:#1f2a3a;
    --ink:#e6edf3; --mut:#8b98a9; --acc:#5ad1c9; --acc2:#7aa2f7;
    --ok:#3fb950; --warn:#d29922; --err:#f85149; --road:#a371f7;
  }
  *{box-sizing:border-box}
  body{margin:0;background:var(--bg);color:var(--ink);
       font:14px/1.6 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
  header{padding:18px 22px;border-bottom:1px solid var(--line);
         background:linear-gradient(180deg,#0d1320,#0a0e14)}
  h1{margin:0;font-size:19px;letter-spacing:.3px}
  .sub{color:var(--mut);font-size:12px;margin-top:4px;max-width:980px}
  .nav{margin-top:10px;display:flex;gap:14px;flex-wrap:wrap;font-size:12px}
  .nav a{color:var(--acc2);text-decoration:none}
  .nav a:hover{text-decoration:underline}
  .wrap{max-width:1080px;margin:0 auto;padding:22px}
  section{margin:0 0 26px}
  .eyebrow{color:var(--acc);font-size:11px;letter-spacing:.16em;text-transform:uppercase;margin-bottom:6px}
  h2{font-size:16px;letter-spacing:.3px;margin:0 0 10px;color:var(--ink)}
  h3{font-size:14px;letter-spacing:.2px;margin:0 0 6px;color:var(--acc)}
  p{margin:0 0 12px}
  .hook{font-size:26px;line-height:1.35;font-weight:700;letter-spacing:.3px;margin:6px 0 14px}
  .hook .em{color:var(--acc)}
  .lede{font-size:15px;color:#cdd8e6}
  .card{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:16px 18px;margin:0 0 14px}
  .quote{border-left:3px solid var(--acc);background:var(--panel2);padding:12px 16px;
         border-radius:0 8px 8px 0;color:#cdd8e6;margin:0 0 14px;font-style:normal}
  .quote.big{font-size:16px;color:var(--ink)}
  .pill{display:inline-block;padding:2px 9px;border-radius:999px;font-size:11px;
        border:1px solid var(--line);white-space:nowrap}
  .pill.ok{color:var(--ok);border-color:#163a1f;background:#0e2113}
  .pill.err{color:var(--err);border-color:#4a1c1c;background:#240f0f}
  .pill.warn{color:var(--warn);border-color:#3a3015;background:#1f1a0a}
  .pill.road{color:var(--road);border-color:#2e2147;background:#160f24}
  .pill.acc{color:var(--acc);border-color:#13403c;background:#0a201e}
  .pill.live{color:var(--ok);border-color:#163a1f;background:#0e2113}
  table{width:100%;border-collapse:collapse;font-size:12.5px;margin:6px 0}
  th,td{text-align:left;padding:8px 10px;border-bottom:1px solid #1a2435;vertical-align:top}
  th{color:var(--mut);font-weight:600;letter-spacing:.04em}
  td.no{color:var(--err)} td.yes{color:var(--ok)}
  .grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}
  .mech{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:15px 17px;display:flex;flex-direction:column}
  .mech .head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}
  .mech .num{color:var(--mut);font-size:11px}
  .mech h3{margin:2px 0 8px}
  .mech .body{color:#c4d0de;flex:1}
  .mech .status{margin-top:10px;padding-top:10px;border-top:1px dotted #1a2435;font-size:12px;color:var(--mut)}
  .mech .status b{color:var(--ink);font-weight:600}
  .live-line{display:flex;align-items:center;gap:8px;margin-top:8px;font-size:12px}
  .live-line .v{color:var(--ink);word-break:break-word}
  .cite{color:var(--mut);font-size:11.5px;margin-top:10px;line-height:1.6}
  .cite a{color:var(--acc2)}
  a{color:var(--acc2)}
  code{color:var(--acc2);font-size:12px}
  .loading{color:var(--mut)}
  .nolive{color:var(--warn)}
  footer{color:var(--mut);font-size:11px;padding:18px 22px;border-top:1px solid var(--line);line-height:1.7}
  .reflist{font-size:11.5px;color:var(--mut);line-height:1.7}
  .reflist li{margin-bottom:5px}
  .reflist a{color:var(--acc2);word-break:break-all}
  @media(max-width:640px){.hook{font-size:21px}.wrap{padding:16px}}
</style>
</head>
<body>
<header>
  <h1>a11oy · A Signature Is Not Proof of Safety</h1>
  <div class="sub">SZL Holdings thought leadership · What the May 2026 “Mini Shai-Hulud” npm worm taught us — and why a11oy is built for a world where the cryptography is genuine but the code is not. Every maturity claim labelled <span class="pill live">LIVE</span> / <span class="pill road">ROADMAP</span>; live claims wired to real a11oy endpoints (honest <span class="nolive">NO-LIVE-DATA</span> fallback).</div>
  <nav class="nav">
    <a href="/console/">← Console</a>
    <a href="/governance">Governance</a>
    <a href="/compliance">Compliance crosswalk</a>
    <a href="/defense-readiness">Defense readiness →</a>
  </nav>
</header>

<div class="wrap">

  <!-- HOOK -->
  <section>
    <div class="eyebrow">SZL Holdings · Thought Leadership · June 2026</div>
    <div class="hook">A signature is not proof of safety.<br><span class="em">The cryptography was genuine. The package was malicious anyway.</span></div>
    <p class="lede">On May 11, 2026, a piece of malware did something the software industry had quietly
    assumed was impossible: it shipped with a valid, cryptographically signed SLSA Build Level 3
    provenance attestation. The signature checked out. The provenance was genuine. The package was
    malicious anyway.</p>
    <p class="cite">Stephen P. Lutar Jr., Founder &amp; CEO, SZL Holdings · <a href="https://a11oy.net">a11oy.net</a></p>
  </section>

  <!-- 1. WHAT HAPPENED -->
  <section>
    <div class="eyebrow">1 · What happened</div>
    <h2>Mini Shai-Hulud — a signed supply-chain worm</h2>
    <div class="card">
      <p>Between May 10 and 12, 2026 — with the main publishing burst compressed into roughly five
      hours on May 11 — the threat group TeamPCP compromised <b>more than 170 packages</b> across the
      npm and PyPI ecosystems, publishing over 400 malicious versions spanning 19 namespaces.
      Affected projects had accumulated more than <b>half a billion cumulative downloads</b>. It is the
      first documented npm worm to propagate while carrying <b>legitimately attested</b> malicious
      packages.</p>
      <p>The entry point was an orphaned CI/CD trust configuration in TanStack’s GitHub Actions
      workflows — a <code>pull_request_target</code> workflow that retained OIDC federation despite no
      longer being actively maintained. The attacker read short-lived OIDC tokens directly out of the
      GitHub Actions runner’s process memory (<code>/proc/&lt;pid&gt;/mem</code>), then exchanged those
      tokens with the Sigstore Fulcio certificate authority to mint legitimate signing certificates.
      From there: stolen OIDC token → short-lived npm publish token → malicious versions released under
      the real maintainer identity, with valid provenance describing the exact GitHub Actions job that
      produced them.</p>
      <div class="quote">Nothing in the cryptographic chain failed. Sigstore did exactly what it is
      designed to do: it verified the identity of the token presenter. What it cannot do — what no
      signature can do — is verify that the build environment had not been compromised, or that the
      code executing inside that legitimate, identity-verified job was safe.</div>
      <p>The provenance was accurate. It correctly described a build that produced malware. Phase 2 of
      the campaign reportedly reached infrastructure at OpenAI, Grafana, and GitHub itself.</p>
    </div>
    <div class="quote big">The attack did not break the signature. It exploited the gap between
    identity verification and behavioural integrity. The signature told you <i>who</i> built it. It
    told you nothing about <i>what it does</i>.</div>
  </section>

  <!-- 2. WHY IT MATTERS -->
  <section>
    <div class="eyebrow">2 · Why it matters</div>
    <h2>The signature-trust fallacy</h2>
    <p>A cryptographic signature answers two questions with mathematical confidence: <b>who</b> signed
    this, and <b>what exact bytes</b> were signed. It answers a third question — <i>is the signed thing
    safe?</i> — not at all. The industry has spent a decade conflating the first two with the third.</p>
    <div class="card">
      <table>
        <tr><th>What a signature proves</th><th>What it does NOT prove</th><th>Mini Shai-Hulud reality</th></tr>
        <tr>
          <td>Identity of the signer (the OIDC subject)</td>
          <td class="no">That the signer’s environment was uncompromised</td>
          <td>OIDC tokens stolen from runner memory; identity genuine</td>
        </tr>
        <tr>
          <td>The exact bytes that were signed</td>
          <td class="no">That those bytes are safe to execute</td>
          <td>Provenance accurately described a malicious build</td>
        </tr>
        <tr>
          <td>That a recognized pipeline produced the artifact</td>
          <td class="no">That the pipeline behaved as intended</td>
          <td>Legitimate GitHub Actions job produced malware</td>
        </tr>
      </table>
    </div>
    <p>SLSA and Sigstore are good. They are <b>necessary but not sufficient</b>. When a control becomes
    a checkbox — “signed: yes” — it stops being a security boundary and becomes a false sense of one.</p>
  </section>

  <!-- 3. THE LESSON -->
  <section>
    <div class="eyebrow">3 · The lesson</div>
    <h2>Doctrine v11 — Signature ≠ Safety</h2>
    <div class="quote big">“A signature is not proof of safety.” Trust the behaviour you can observe
    and the receipts you can replay — not the attestation you were handed.</div>
    <p>The corollary is a posture we call <b>behaviour-over-attestation</b>. An attestation is a claim
    made at build time about the past. Behaviour is evidence gathered at runtime about the present. When
    the two disagree, behaviour wins. The rest of our doctrine follows from this: <b>prove-or-downgrade</b>
    (claim only what has a checkable artifact), label every value <span class="pill acc">MEASURED</span>
    <span class="pill warn">MODELED</span> <span class="pill">SAMPLE</span>, and never present an
    attestation as a guarantee. We do not claim a11oy is unbreakable. We claim it <b>stops trusting the
    signature alone</b>.</p>
  </section>

  <!-- 4. HOW a11oy IS ARCHITECTED -->
  <section>
    <div class="eyebrow">4 · How a11oy is architected for exactly this</div>
    <h2>Five mechanisms — each labelled LIVE-today vs ROADMAP</h2>
    <p>Below are the five mechanisms that make a11oy a structural answer to a Mini Shai-Hulud-class
    attack. We are explicit throughout about what is live today versus what is roadmap. The credibility
    comes from the honesty. Where a mechanism can be proven right now, the card binds to a real a11oy
    production endpoint below.</p>

    <div class="grid">
      <!-- 4.1 -->
      <div class="mech">
        <div class="head"><span class="num">4.1</span><span class="pill live">LIVE — GAP1</span></div>
        <h3>Artifact-behaviour monitor</h3>
        <div class="body">Observe what an artifact actually <i>does</i> at runtime and compare it against an
        expected behavioural envelope. A signature would have passed Mini Shai-Hulud straight through; a
        behaviour monitor asks the question the signature cannot — does this thing act the way a safe
        version of it should? Deny-by-default applied to behaviour, not identity.</div>
        <div class="status"><b>Today:</b> live as the GAP1 capability, backed by a certified live PINN
        (physics-informed) certificate from production APIs. <b>Roadmap:</b> broader behavioural-envelope
        catalogue per artifact class / ecosystem (npm, PyPI, container, model).</div>
        <div class="live-line" id="pinn-live"><span class="pill warn">checking…</span><span class="v">PINN certificate</span></div>
      </div>

      <!-- 4.2 -->
      <div class="mech">
        <div class="head"><span class="num">4.2</span><span class="pill live">LIVE</span></div>
        <h3>3-axis attestation</h3>
        <div class="body">Single-axis attestation is the exact weakness Mini Shai-Hulud exploited: a valid
        build attestation, and nothing binding it to runtime behaviour. a11oy’s assurance mesh binds three
        axes — <b>build provenance · model lineage · runtime behaviour</b> — so compromise of any one axis
        does not silently pass the others. A genuine build signature riding on a malicious runtime fails
        the cross-axis check.</div>
        <div class="status"><b>Today:</b> 3-axis model + DSSE-signed verdicts/receipts in the live mesh.
        <b>Roadmap:</b> deeper third-party STIX/TAXII threat-intel correlation into the model + runtime axes.</div>
        <div class="live-line" id="comp-live"><span class="pill warn">checking…</span><span class="v">Compliance crosswalk</span></div>
      </div>

      <!-- 4.3 -->
      <div class="mech">
        <div class="head"><span class="num">4.3</span><span class="pill live">LIVE</span></div>
        <h3>Hash-chained Forge ledger + kill switch</h3>
        <div class="body">Every verdict is written to a hash-chained, offline-verifiable governance ledger
        (the Forge ledger), so any action is replayable after the fact and any decision is revocable through
        the kill switch. In a Mini Shai-Hulud scenario this is the difference between “we think we contained
        it” and “we can prove, line by line, what was admitted, when, and on what evidence — and revoke it now.”</div>
        <div class="status"><b>Today:</b> hash-chained ledger + kill switch live, with signed receipts
        (including MEASURED energy receipts via a real NVML exporter, kept distinct from any modeled figure).
        <b>Roadmap:</b> publishing ledger inclusion proofs to an external transparency service (§5).</div>
      </div>

      <!-- 4.4 -->
      <div class="mech">
        <div class="head"><span class="num">4.4</span><span class="pill live">LIVE</span></div>
        <h3>Hybrid Ed25519 + ML-DSA &amp; C2PA</h3>
        <div class="body">We do not deprecate signing — we harden it and stop over-trusting it. a11oy signs
        with a hybrid <b>Ed25519 + ML-DSA</b> scheme so verdicts remain verifiable in a post-quantum world,
        and attaches <b>C2PA content credentials</b> so the provenance of generated content is transparent.
        This anticipates EU AI Act Article 50 transparency obligations.</div>
        <div class="status"><b>Today:</b> hybrid signing + C2PA implemented, alongside a NIST AI RMF / ISO
        42001 / EU AI Act compliance crosswalk. <b>Roadmap:</b> third-party attestation of the crosswalk
        mapping ahead of enforcement.</div>
      </div>

      <!-- 4.5 -->
      <div class="mech">
        <div class="head"><span class="num">4.5</span><span class="pill road">ROADMAP</span></div>
        <h3>SCITT-style independent transparency</h3>
        <div class="body">The deepest lesson of Mini Shai-Hulud is that <b>self-attestation is not enough</b>:
        the build attested honestly to its own malicious output. Independent, append-only transparency
        ledgers — as standardized by IETF SCITT — let third parties verify receipts without trusting the
        producer.</div>
        <div class="status"><b>Today:</b> internal hash-chained ledger (4.3) is live and offline-verifiable.
        <b>Roadmap:</b> external SCITT-style transparency service with third-party inclusion proofs — we label
        this honestly as not-yet-live.</div>
      </div>
    </div>
  </section>

  <!-- 5. THE BROADER SHIFT -->
  <section>
    <div class="eyebrow">5 · The broader shift</div>
    <h2>From self-attestation to independent, behavioural assurance</h2>
    <div class="grid">
      <div class="card">
        <h3>EU AI Act · Article 50</h3>
        <p>Transparency obligations for AI-generated content take effect <b>August 2, 2026</b>. a11oy’s
        C2PA content credentials and hybrid signing (4.4) are built toward exactly this — provenance of
        generated content, transparent and verifiable.</p>
      </div>
      <div class="card">
        <h3>IETF SCITT</h3>
        <p>Supply Chain Integrity, Transparency and Trust — independent, append-only ledgers that let
        third parties verify receipts without trusting the producer. The direct standards answer to the
        self-attestation gap (4.5, roadmap).</p>
      </div>
      <div class="card">
        <h3>OMB · risk-based shift</h3>
        <p>The 2026 OMB action rescinding the prior secure-software-development self-attestation mandate
        in favor of a risk-based approach reflects the same realization: an attestation checkbox is not a
        risk control. Behaviour and replayable evidence are.</p>
      </div>
    </div>
  </section>

  <!-- TALK TO US -->
  <section>
    <div class="card">
      <h3>Tabletop it against a live instance</h3>
      <p>We are happy to walk through a Mini Shai-Hulud tabletop against a live a11oy instance — what the
      artifact-behaviour monitor would have flagged, what the 3-axis check would have rejected, and what
      the governance ledger would let you prove and revoke after the fact. Live signed APIs and the GAP1
      behavioural monitor are available now at <a href="https://a11oy.net">a11oy.net</a>.</p>
    </div>
  </section>

  <!-- REFERENCES -->
  <section>
    <div class="eyebrow">References</div>
    <ol class="reflist">
      <li>Cloud Security Alliance, “Mini Shai-Hulud: When Signed Provenance Certified a Supply Chain Worm,” May 15, 2026. <a href="https://labs.cloudsecurityalliance.org/research/csa-research-note-mini-shai-hulud-supply-chain-sigstore-2026/">labs.cloudsecurityalliance.org</a></li>
      <li>Open Source For U, “Hackers Abuse GitHub Actions and SLSA Signing to Spread Malware Across Open Source Ecosystems,” May 14, 2026. <a href="https://www.opensourceforu.com/2026/05/hackers-abuse-github-actions-and-slsa-signing-to-spread-malware-across-open-source-ecosystems/">opensourceforu.com</a></li>
      <li>EU AI Act Service Desk FAQ. <a href="https://ai-act-service-desk.ec.europa.eu/en/faq">ai-act-service-desk.ec.europa.eu</a>; Latham &amp; Watkins, “AI Act Update,” May 13, 2026. <a href="https://www.lw.com/en/insights/ai-act-update-eu-resolves-to-change-rules-and-extend-deadlines">lw.com</a></li>
      <li>IETF SCITT Working Group, Datatracker (draft-ietf-scitt-architecture; draft-dawkins-scitt-ai-article50-00, filed May 25, 2026). <a href="https://datatracker.ietf.org/wg/scitt/">datatracker.ietf.org/wg/scitt</a></li>
      <li>Wiley Law, “OMB Rescinds Secure Software Development Mandate in Favor of a Risk-Based Approach,” Jan 29, 2026. <a href="https://www.wiley.law/alert-OMB-Rescinds-Secure-Software-Development-Mandate-in-Favor-of-a-Risk-Based-Approach">wiley.law</a></li>
    </ol>
  </section>

</div>

<footer>
  a11oy showcase · doctrine v11 · A signature is not proof of safety · behaviour-over-attestation ·
  prove-or-downgrade · Λ = Conjecture 1 (advisory, &lt; 1.0) · trust &lt; 100% · 0 runtime CDN ·
  every maturity claim labelled LIVE / ROADMAP.<br>
  Live proofs fetched from <span style="color:var(--acc2)">/api/a11oy/v1/{pinn/certificate, compliance}</span> — honest NO-LIVE-DATA fallback, never fabricated.
  About SZL Holdings · sovereign-compute, AI-governance &amp; defense-tech, NYC · UEI [PLACEHOLDER: UEI] · CAGE [PLACEHOLDER: CAGE] · NAICS 541715.
</footer>

<script>
// 0-CDN inline. Prove what we can, LIVE, against real a11oy endpoints; otherwise
// render an HONEST NO-LIVE-DATA chip — never a fabricated value.
(function(){
  function setLive(id, ok, label, href){
    var el = document.getElementById(id);
    if(!el) return;
    var pill = ok ? '<span class="pill live">LIVE ✓</span>'
                  : '<span class="pill warn">NO-LIVE-DATA</span>';
    var v = href && ok
        ? '<span class="v"><a href="'+href+'">'+label+'</a></span>'
        : '<span class="v">'+label+'</span>';
    el.innerHTML = pill + v;
  }
  function probe(url, id, label, href){
    fetch(url, {headers:{'accept':'application/json'}})
      .then(function(r){ return r.ok ? r.json().catch(function(){return {};}) : null; })
      .then(function(j){ setLive(id, j!==null, label, href); })
      .catch(function(){ setLive(id, false, label, href); });
  }
  // 4.1 — certified live PINN (physics-informed) certificate.
  probe('/api/a11oy/v1/pinn/certificate', 'pinn-live',
        'PINN certificate (GAP1 behaviour monitor)', '/api/a11oy/v1/pinn/certificate');
  // 4.2/4.4 — NIST AI RMF / ISO 42001 / EU AI Act compliance crosswalk.
  probe('/api/a11oy/v1/compliance', 'comp-live',
        'NIST AI RMF / ISO 42001 / EU AI Act crosswalk', '/compliance');
})();
</script>
</body>
</html>