spb/ka-guardian
Public
Python 57.1%
Shell 13.8%
CSS 12%
JavaScript 10%
HTML 7.2%
1<!doctype html>2<html lang="fr-CA">3<head>4<meta charset="utf-8">5<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">6<title>Guardian — Groupe KA</title>7<meta name="description" content="Agent gardien autonome du Groupe KA : il détecte les connecteurs en panne, les répare avec Claude, surveille la guérison et revient en arrière si ça empire. Tout est public, en direct.">8<!-- Partage (Open Graph / Twitter) — les jetons __NUM__/__DOMAIN__/__TAGLINE__ sont rendus par agent dans main.py -->9<meta property="og:type" content="website">10<meta property="og:site_name" content="KA Guardian — Groupe KA">11<meta property="og:title" content="ka·__NUM__ guardian — __TAGLINE__">12<meta property="og:description" content="Agent gardien autonome des connecteurs du Groupe KA : il détecte les pannes, répare avec Claude, surveille la guérison. Tout est public, en direct.">13<meta property="og:url" content="https://__DOMAIN__/">14<meta property="og:image" content="https://__DOMAIN__/og.png">15<meta property="og:image:width" content="2400">16<meta property="og:image:height" content="1260">17<meta property="og:locale" content="fr_CA">18<meta name="twitter:card" content="summary_large_image">19<meta name="twitter:title" content="ka·__NUM__ guardian — __TAGLINE__">20<meta name="twitter:description" content="Agent gardien autonome des connecteurs du Groupe KA — public, en direct.">21<meta name="twitter:image" content="https://__DOMAIN__/og.png">22<link rel="icon" href="/favicon.ico" sizes="48x48">23<link rel="icon" type="image/svg+xml" href="/favicon.svg">24<link rel="icon" type="image/png" sizes="32x32" href="/favicon.png">25<link rel="apple-touch-icon" href="/apple-touch-icon.png">26<link rel="preconnect" href="https://fonts.googleapis.com">27<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>28<link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@500;700&family=Inter:wght@400;500;600&family=JetBrains+Mono:wght@400;600;700&display=swap" rel="stylesheet">29<link rel="stylesheet" href="/static/style.css">30</head>31<body>3233<header class="topbar">34 <a class="wordmark" href="/"><span id="wm-name">ka·—</span><span class="ka" id="wm-ka">guardian</span></a>35 <nav class="tabs">36 <a class="tab active" href="/">⚡ Flux</a>37 <a class="tab" href="/commander">🎛 Commander</a>38 </nav>39 <nav class="topnav">40 <a class="gk-badge" href="https://www.groupe-ka.com">groupe<b><span class="ka">·KA</span></b></a>41 <span id="siblings"></span>42 </nav>43</header>4445<main>46 <!-- ============ HÉROS ============ -->47 <section class="hero">48 <div class="hero-main">49 <p class="klabel" id="hero-label">agent gardien autonome</p>50 <h1>Il veille. Il répare.<br>Il <span class="hl">rend des comptes</span>.</h1>51 <p class="lede" id="lede">Un connecteur tombe en panne quelque part dans l'écosystème ·Ka ?52 Cet agent le détecte, ouvre le code, le répare, prouve que ça marche — et si ça empire,53 il revient au commit d'avant. Tout ce qu'il fait est public, ici, en direct.</p>54 <div class="hero-chips" id="hero-chips">55 <span class="chip chip-accent"><span class="live-dot" id="live-dot"></span> en direct</span>56 </div>57 </div>58 <aside class="defcard card">59 <p class="klabel">définition</p>60 <p class="defword">gar·dien <span class="phon">/ɡaʁ.djɛ̃/</span> <span class="nat">n.m.</span></p>61 <ol class="defs">62 <li><b>détecte</b> — lit la supervision api-ka toutes les 5 minutes ; un connecteur <i>cassé</i> ou <i>endormi</i> devient un incident.</li>63 <li><b>répare</b> — dépêche Claude dans le repo de l'app, sur le nœud même : diagnostic, correctif minimal, test réel, commit.</li>64 <li><b>surveille</b> — 8 heures d'observation post-réparation avant de déclarer victoire.</li>65 <li><b>recule</b> — l'app tombe ou rien ne guérit ? <i>git reset</i> au commit d'avant, redémarrage, et on le dit publiquement.</li>66 </ol>67 </aside>68 </section>6970 <!-- ============ CHIFFRES ============ -->71 <section>72 <p class="klabel">l'état du gardien</p>73 <div class="tiles" id="tiles"></div>74 </section>7576 <!-- ============ ÉCRAN + INCIDENTS ============ -->77 <section class="cols">78 <div class="screen card" id="screen">79 <div class="screen-head">80 <span class="screen-dots"><i></i><i></i><i></i></span>81 <span class="screen-title" id="screen-title">flux — tout ce que l'agent fait, en temps réel</span>82 </div>83 <div class="feed" id="feed"><div class="feed-empty">// en attente d'activité — le gardien scrute api-ka toutes les 5 minutes…</div></div>84 </div>85 <div class="side">86 <div class="card pad">87 <p class="klabel">incidents</p>88 <div id="incidents" class="incidents"></div>89 </div>90 <div class="card pad">91 <p class="klabel">territoire surveillé</p>92 <div id="coverage" class="coverage"></div>93 </div>94 </div>95 </section>9697 <!-- ============ MISSIONS ============ -->98 <section>99 <p class="klabel">registre des missions <span class="hint">— cliquer une ligne pour le déroulé complet, commits inclus</span></p>100 <div class="card table-wrap">101 <table id="missions">102 <thead><tr><th>Quand</th><th>Connecteur</th><th>Service</th><th>Nœud</th><th>Verdict</th><th>Commits</th><th>Durée</th><th>Coût</th></tr></thead>103 <tbody></tbody>104 </table>105 </div>106 </section>107</main>108109<footer class="ka-footer">110 <div class="foot-in">111 <a class="wordmark wordmark-foot" href="/"><span id="foot-name">ka·—</span><span class="ka">guardian</span></a>112 <p class="notice"><b>Zéro boîte noire.</b> Chaque diagnostic, chaque commit, chaque rollback de cet agent113 est journalisé et affiché ici. Les réparations sont committées dans les repos des plateformes,114 jamais poussées sans passage humain.</p>115 <p class="sites" id="foot-sites"></p>116 <p class="legal">Groupe KA — agrégation automatisée, Québec. <a href="https://www.groupe-ka.com">groupe-ka.com</a></p>117 </div>118</footer>119120<div class="modal" id="modal" hidden>121 <div class="modal-box card">122 <div class="modal-head"><h3 id="modal-title">Mission</h3><button id="modal-close" aria-label="fermer">✕</button></div>123 <div class="modal-body" id="modal-body"></div>124 </div>125</div>126127<script src="/static/app.js"></script>128</body>129</html>130