From d119d9d17eb9e0c0fd2a4a04d092b75f9033ee42 Mon Sep 17 00:00:00 2001 From: "Jonathan D.A. Jewell" <6759885+hyperpolymath@users.noreply.github.com> Date: Thu, 17 Sep 2026 18:17:55 +0000 Subject: [PATCH] chore(phase-2.1): delete root Mustfile and Dustfile MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Phase 2.1 of the reorg plan — the first of the four deletions, taken first because it is two files and trivially reversible, so it proves the CI story before anything larger moves. WHAT AND WHY Root `Mustfile` (15 lines, YAML `checks:` list) and `Dustfile` (32 lines, `recovery:`/`generated:`/`templates:` handlers) are extension-less contractiles sitting at the repository root, superseded by `.machine_readable/contractiles/{must,dust}/`. The map entry already said so: from = "Mustfile" target = "DELETE" kind = "superseded-contractile" note = "extension-less contractiles at root, superseded by machine-readable/contractiles/. Two naming conventions in one tree." This commit is that map entry being carried out, not a new decision. That note IS the naming-convention contradiction Phase 2.1 was scheduled to clear. NEITHER FILE WAS LOAD-BEARING Both CI consumers of these contractiles already read the dotted copies, and neither reads the root ones: scripts/check-mustfile-structure.sh default: .machine_readable/contractiles/must/Mustfile.a2ml scripts/run-mustfile.sh default: .machine_readable/contractiles/must/Mustfile.a2ml Both dotted files exist and are untouched. The remaining grep hits for "Mustfile"/"Dustfile" are prose about the *convention* (`.claude/CLAUDE.md`, `.githooks/pre-commit`, the Makefile blocker, `validate-a2ml.sh`); no document links to the root files and no script sources them. `tasks/Mustfile`, `contractiles/must/Mustfile` and the ~20 others elsewhere in the tree are out of scope and untouched — this deletes the root pair only. THE MAP MOVES WITH THE FILES Gate D is bidirectional (assertion 1: every `from` exists; assertion 2: every top-level entry is mapped), so deleting the files without deleting their map entries would have failed assertion 1. Both `[[entry]]` blocks are removed and `entry_count` goes 120 -> 118 in the same commit — the property that makes Gate D able to police a deletion at all. WITNESSES Gate D [1] all 118 mapped paths exist [2] all 118 top-level entries are mapped [3] ok [4] ok [5] entry_count = 118 GATE D PASSED Gate A passed 8 failed 0 skipped 2 GATE A PASSED Gate A is unaffected by design: `standards-map.toml`, `Mustfile` and `Dustfile` are not named in canon.lock [canon.artifacts] (criteria, gates, applicability, lifecycle, constitution), so this is not a canon change and no version bump is required or made. --- Dustfile | 32 -------------------------------- Mustfile | 15 --------------- standards-map.toml | 28 +--------------------------- 3 files changed, 1 insertion(+), 74 deletions(-) delete mode 100644 Dustfile delete mode 100644 Mustfile diff --git a/Dustfile b/Dustfile deleted file mode 100644 index 7b6bda2ad..000000000 --- a/Dustfile +++ /dev/null @@ -1,32 +0,0 @@ -# SPDX-License-Identifier: MPL-2.0 -# Dustfile — Standards repo recovery and rollback -# Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) - -version: 1 - -recovery: - source: - - name: source-rollback - description: "Revert all source changes to the last commit." - rollback: "git checkout HEAD -- ." - notes: "Use when a bad spec or template edit lands before review." - - generated: - - name: regen-contractile-just - description: "Re-derive contractile.just from the contractiles/ template set." - handler: "contractile gen-just --dir contractiles" - notes: "Regenerate after any change to Dustfile, Mustfile, Trustfile.a2ml, or Intentfile.a2ml." - - templates: - - name: template-rollback - description: "Roll back a specific contractile template to its last known-good revision." - rollback: "git checkout HEAD~1 -- contractiles/" - notes: "Use when a template update introduces an SPDX typo or template residue regression." - -deprecation: - - name: lust-intentfile-legacy - what: "contractiles/lust/Intentfile (plain-text compatibility form)" - since: "v1.0.0" - remove-by: "v2.0.0" - migration: "Use contractiles/intend/Intentfile.a2ml (canonical A2ML form) for all new repos." - notes: "lust/ is kept only while repos that copied the old template still exist in the estate." diff --git a/Mustfile b/Mustfile deleted file mode 100644 index ff72c6223..000000000 --- a/Mustfile +++ /dev/null @@ -1,15 +0,0 @@ -# SPDX-License-Identifier: MPL-2.0 -# Mustfile - hyperpolymath mandatory checks -# See: https://github.com/hyperpolymath/mustfile - -version: 1 - -checks: - - name: security - run: just lint - - name: tests - run: just test - - name: format - run: just fmt - - name: tooling-version-integrity - run: bash tasks/tooling-integrity-lint.sh --strict diff --git a/standards-map.toml b/standards-map.toml index 66b96c8eb..1ccb1e5df 100644 --- a/standards-map.toml +++ b/standards-map.toml @@ -32,7 +32,7 @@ [map] repo = "hyperpolymath/standards" version = "1.0.0" -entry_count = 120 +entry_count = 118 generated = false # hand-curated; the district index.adoc files ARE generated checked_by = "scripts/check-standards-map.sh" @@ -1171,19 +1171,6 @@ canon_slot = "" canonical_doc = "5-machine//index.adoc" gate = "actions-lock-gate" -[[entry]] -from = "Dustfile" -target = "DELETE" -district = "5-machine" -kind = "superseded-contractile" -files = 1 -lifecycle = "deprecated" -canonical = false -canon_slot = "" -canonical_doc = "" -gate = "check-mustfile-structure" -note = "extension-less contractiles at root, superseded by machine-readable/contractiles/. Two naming conventions in one tree." - [[entry]] from = "Justfile" target = "5-machine/ (root if spine-mandated): Justfile" @@ -1196,19 +1183,6 @@ canon_slot = "" canonical_doc = "5-machine//index.adoc" gate = "actions-lock-gate" -[[entry]] -from = "Mustfile" -target = "DELETE" -district = "5-machine" -kind = "superseded-contractile" -files = 1 -lifecycle = "deprecated" -canonical = false -canon_slot = "" -canonical_doc = "" -gate = "check-mustfile-structure" -note = "extension-less contractiles at root, superseded by machine-readable/contractiles/. Two naming conventions in one tree." - [[entry]] from = "REGISTRY.adoc" target = "5-machine/ (root if spine-mandated): REGISTRY.adoc"