From 785a002e8a0b12c9d594b723551eed39e77a2dc9 Mon Sep 17 00:00:00 2001 From: "Jonathan D.A. Jewell" <6759885+hyperpolymath@users.noreply.github.com> Date: Fri, 7 Aug 2026 16:51:13 +0100 Subject: [PATCH] fix(debt): track Deno removal as a probed integer, and un-collide the audit name MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit **The rename first, because it was my error.** I added `Debtfile.adoc` at the repository root in #598. `.machine_readable/Debtfile.a2ml` already existed from #591 — a probe-backed, monotone-decreasing integer register with its own spec, runner, CI ratchet and 30 tests. Two files a directory apart, both called Debtfile, meaning different things, is precisely the drift this canon exists to prevent. The prose one is an AUDIT and now says so: `docs/audits/2026-08-07-estate-cicd-debt.adoc`, matching the four `docs/audits/2026-05-26-estate-*-debt` files. **Then the part that matters.** Deno removal is now a MEASURED entry rather than a sentence in a document, because DEBTFILE-SPEC.adoc's own opening example is what happens otherwise: standards#309 claimed ~45 banned `.py` files, the measured figure was 176 — wrong by 4x, unchallenged for ten weeks. Two entries, both `accepted-until: 2026-11-01`: deno-residue probe: workflows and scripts that INVOKE deno count 4 deno-artefacts probe: files that exist only to serve Deno count 6 The counts can now only go down without an explicit exception, and a stale claim is impossible — the probe re-measures on every run. ⚠ The owner has ruled Deno REMOVED and Bun permanent three times, yet `governance-reusable.yml:264` still runs `denoland/setup-deno`, which INSTALLS DENO ON EVERY ESTATE REPOSITORY ON EVERY RUN, and `docs/migrations/npm-to-deno-template/` is a live recipe pointing repositories AT the retired runtime. That is why the ruling keeps needing repeating: the canon has been propagating the opposite. ⚠ Both probes deliberately EXCLUDE `*/bindings/deno/` (292 files in a2ml, more in k9-svc, beside elixir/gleam/haskell/rust). Those exist so OTHER people's Deno code can call estate libraries — the same shape as the `proven` polyglot adapter exception. "We do not use Deno" and "nobody may call us from Deno" are different statements, and only the first has been made. Verified: `check-debtfile-structure.sh` OK (7 entries); `run-debtfile.sh` measures both new probes as HOLDING at 4 and 6; structure tests 14/14 and runner tests 16/16 pass. --- .machine_readable/Debtfile.a2ml | 20 +++++++++++++++++++ .../audits/2026-08-07-estate-cicd-debt.adoc | 15 +++++++++++--- 2 files changed, 32 insertions(+), 3 deletions(-) rename Debtfile.adoc => docs/audits/2026-08-07-estate-cicd-debt.adoc (93%) diff --git a/.machine_readable/Debtfile.a2ml b/.machine_readable/Debtfile.a2ml index 9780bb2b..1bf1ba23 100644 --- a/.machine_readable/Debtfile.a2ml +++ b/.machine_readable/Debtfile.a2ml @@ -86,3 +86,23 @@ forgotten. - tri: control - tracking: hyperpolymath/standards#308 - accepted-until: 2027-01-01 + +### deno-residue +- description: Deno residue in this repository after the Bun ruling. `governance-reusable.yml` still runs `denoland/setup-deno`, which INSTALLS DENO ON EVERY ESTATE REPO ON EVERY RUN; `deno-ci{,-reusable}.yml` still ship the failing `deno / Deno CI`; `scripts/check-ts-allowlist.deno.js` is a worked Deno example in scripts/; and `docs/migrations/npm-to-deno-template/` is a live recipe pointing repos AT the retired runtime. Owner ruled Deno REMOVED and Bun permanent (said three times, reaffirmed 2026-08-07). Must reach 0. Excludes */bindings/deno/, which is interop for OTHER people's Deno code and a separate question. +- probe: git grep -lE "denoland/setup-deno|deno run|deno test|deno fmt|deno lint" -- ".github/workflows/*.yml" "scripts/*" | wc -l +- count: 4 +- ceiling: 4 +- severity: medium +- policy: remediable +- tri: substitute +- accepted-until: 2026-11-01 + +### deno-artefacts +- description: Files that exist only to serve Deno — the deno-ci workflow pair, the compiled check-ts-allowlist.deno.js, and the npm-to-deno migration template. Deleting these is the completion of the Bun migration, not a precondition of it. Excludes */bindings/deno/. +- probe: git ls-files ".github/workflows/deno*" "scripts/*deno*" "docs/migrations/npm-to-deno-template/*" | wc -l +- count: 6 +- ceiling: 6 +- severity: medium +- policy: remediable +- tri: substitute +- accepted-until: 2026-11-01 diff --git a/Debtfile.adoc b/docs/audits/2026-08-07-estate-cicd-debt.adoc similarity index 93% rename from Debtfile.adoc rename to docs/audits/2026-08-07-estate-cicd-debt.adoc index 14564456..cbabc530 100644 --- a/Debtfile.adoc +++ b/docs/audits/2026-08-07-estate-cicd-debt.adoc @@ -1,13 +1,22 @@ // SPDX-License-Identifier: MPL-2.0 // SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell -= Debtfile — estate CI/CD debt register += Estate CI/CD debt audit — 2026-08-07 :toc: macro :toclevels: 2 :sectanchors: -Things *found and measured but not fixed*, carried between sessions. +Things *found and measured but not fixed* during the 2026-08-07 estate CI/CD +sweep. -This is the human-readable companion to +NOTE: This is an *audit*, not a Debtfile. The Debtfile is +`.machine_readable/Debtfile.a2ml` — a probe-backed, monotone-decreasing integer +register with its own spec (`docs/DEBTFILE-SPEC.adoc`), runner and CI ratchet. +Countable items from this audit belong THERE, where the number can be +re-measured instead of believed; items awaiting a ruling stay here. This file +was briefly named `Debtfile.adoc` at the repository root, which collided with +that mechanism — renamed to the `docs/audits/` convention. + +It is also the human-readable companion to `.machine_readable/agent_instructions/debt.a2ml`. Every item below states what was measured, when, and *what decision it is waiting on* — because most of what remains is not blocked on effort, it is blocked on a ruling.