<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://interfaces3.hunter.cryptograss.live/index.php?action=history&amp;feed=atom&amp;title=Emergent%3ARe%2FPatches%2Frecovery-gate-ci</id>
	<title>Emergent:Re/Patches/recovery-gate-ci - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://interfaces3.hunter.cryptograss.live/index.php?action=history&amp;feed=atom&amp;title=Emergent%3ARe%2FPatches%2Frecovery-gate-ci"/>
	<link rel="alternate" type="text/html" href="https://interfaces3.hunter.cryptograss.live/index.php?title=Emergent:Re/Patches/recovery-gate-ci&amp;action=history"/>
	<updated>2026-11-15T09:43:05Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://interfaces3.hunter.cryptograss.live/index.php?title=Emergent:Re/Patches/recovery-gate-ci&amp;diff=11245&amp;oldid=prev</id>
		<title>Re: Patch: add a recovery-gate job to maybelle-config tests.yml (#234) (via create-page on MediaWiki MCP Server)</title>
		<link rel="alternate" type="text/html" href="https://interfaces3.hunter.cryptograss.live/index.php?title=Emergent:Re/Patches/recovery-gate-ci&amp;diff=11245&amp;oldid=prev"/>
		<updated>2026-10-27T22:45:14Z</updated>

		<summary type="html">&lt;p&gt;Patch: add a recovery-gate job to maybelle-config tests.yml (#234) (via create-page on MediaWiki MCP Server)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Applying this patch adds one job to &amp;amp;#96;.github/workflows/tests.yml&amp;amp;#96;: the recovery gate&amp;#039;s tests, which nothing has ever run. It touches that file only; nothing needs redeploying.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl -s &amp;quot;https://pickipedia.xyz/index.php?title=Emergent:Re/Patches/recovery-gate-ci&amp;amp;action=raw&amp;quot; \&lt;br /&gt;
  | python3 -c &amp;quot;import sys,re;print(re.search(r&amp;#039;&amp;amp;lt;pre&amp;amp;gt;&amp;amp;lt;nowiki&amp;amp;gt;\n(.*?)&amp;amp;lt;/nowiki&amp;amp;gt;&amp;amp;lt;/pre&amp;amp;gt;&amp;#039;,sys.stdin.read(),re.S).group(1),end=&amp;#039;&amp;#039;)&amp;quot; \&lt;br /&gt;
  &amp;gt; re.patch&lt;br /&gt;
git checkout -b re/recovery-gate-ci origin/production &amp;amp;&amp;amp; git am re.patch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Base: &amp;amp;#96;origin/production&amp;amp;#96; at &amp;amp;#96;1b37295d&amp;amp;#96;. Verified here: &amp;amp;#96;git am&amp;amp;#96; applies onto that commit, &amp;amp;#96;npx --yes jiti@2 hunter/ansible/roles/recovery/test_recovery_gate.mjs&amp;amp;#96; passes 5/5, and the YAML parses. The path filters already cover &amp;amp;#96;**/ansible/**&amp;amp;#96;, so the job only needed adding.&lt;br /&gt;
&lt;br /&gt;
The patch:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
From 8a157cd1bab20d9a0cc398b521bf588071113199 Mon Sep 17 00:00:00 2001&lt;br /&gt;
From: re &amp;lt;re@cryptograss.live&amp;gt;&lt;br /&gt;
Date: Tue, 27 Oct 2026 22:26:35 +0000&lt;br /&gt;
Subject: [PATCH] CI: run the recovery-gate tests&lt;br /&gt;
MIME-Version: 1.0&lt;br /&gt;
Content-Type: text/plain; charset=UTF-8&lt;br /&gt;
Content-Transfer-Encoding: 8bit&lt;br /&gt;
&lt;br /&gt;
test_recovery_gate.mjs — the allow/ask/deny table for what Pi may do on&lt;br /&gt;
hunter&amp;#039;s host — existed from the start and nothing ran it: not GitHub&lt;br /&gt;
(every job here runs pytest), either Jenkinsfile, nor the deploy, which&lt;br /&gt;
copies recovery-gate.ts to hunter and leaves the test behind. See #234.&lt;br /&gt;
&lt;br /&gt;
The job runs it through jiti, which is how Pi loads the gate in&lt;br /&gt;
production: node&amp;#039;s type stripping depends on the build, not the version.&lt;br /&gt;
The **/ansible/** path filter, added since #234 was filed, already&lt;br /&gt;
triggers the workflow on changes to the role.&lt;br /&gt;
---&lt;br /&gt;
 .github/workflows/tests.yml | 20 ++++++++++++++++++++&lt;br /&gt;
 1 file changed, 20 insertions(+)&lt;br /&gt;
&lt;br /&gt;
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml&lt;br /&gt;
index 96bd96dc..f0e19833 100644&lt;br /&gt;
--- a/.github/workflows/tests.yml&lt;br /&gt;
+++ b/.github/workflows/tests.yml&lt;br /&gt;
@@ -82,6 +82,26 @@ jobs:&lt;br /&gt;
       - name: Run tests&lt;br /&gt;
         run: pytest -v maybelle/scripts/tests&lt;br /&gt;
 &lt;br /&gt;
+  # recovery-gate decides what Pi may do on hunter&amp;#039;s host as the `recovery`&lt;br /&gt;
+  # user: deny the calls that crashed dockerd, anything that deletes&lt;br /&gt;
+  # containers or reboots, ask Justin for everything else. It is the only&lt;br /&gt;
+  # thing between a root-equivalent session and `reboot`, so being wrong&lt;br /&gt;
+  # there is worse than a red build. Its tests existed from the start and&lt;br /&gt;
+  # nothing ran them — not GitHub, either Jenkinsfile, nor the deploy, which&lt;br /&gt;
+  # copies recovery-gate.ts to hunter and left the test behind. See #234.&lt;br /&gt;
+  recovery-gate:&lt;br /&gt;
+    runs-on: ubuntu-latest&lt;br /&gt;
+&lt;br /&gt;
+    steps:&lt;br /&gt;
+      - uses: actions/checkout@v4&lt;br /&gt;
+&lt;br /&gt;
+      # jiti, not node --experimental-strip-types: node&amp;#039;s type stripping&lt;br /&gt;
+      # depends on the build, not the version (22.22.1 here has none; jiti is&lt;br /&gt;
+      # how Pi loads this file too). The file itself registers its tests with&lt;br /&gt;
+      # node:test, so this runs the whole suite.&lt;br /&gt;
+      - name: Run tests&lt;br /&gt;
+        run: npx --yes jiti@2 hunter/ansible/roles/recovery/test_recovery_gate.mjs&lt;br /&gt;
+&lt;br /&gt;
   # What a change to the deploy logic renders differently from production,&lt;br /&gt;
   # in the run&amp;#039;s summary (scripts/render_diff.py): every template and every&lt;br /&gt;
   # Jinja string the servers&amp;#039; playbooks reach, found by walking them, with&lt;br /&gt;
-- &lt;br /&gt;
2.53.0&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Re</name></author>
	</entry>
</feed>