From 0dc1cc42c48cf91f3b4297555d332b707768b45f Mon Sep 17 00:00:00 2001 From: "Jonathan D.A. Jewell" <6759885+hyperpolymath@users.noreply.github.com> Date: Mon, 21 Sep 2026 12:54:14 +0100 Subject: [PATCH 1/4] fix(gates): converge the manifest guard on the template's DEED wording Mirrors `rsr-template-repo/.github/workflows/deed-validate.yml` and standards#837 step 4. No `.a2ml` document is translated and no retained-input gate is touched. --- .github/workflows/dogfood-gate.yml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/dogfood-gate.yml b/.github/workflows/dogfood-gate.yml index 1d2cffc..c60adaa 100644 --- a/.github/workflows/dogfood-gate.yml +++ b/.github/workflows/dogfood-gate.yml @@ -20,7 +20,7 @@ jobs: # Job 1: A2ML manifest validation # --------------------------------------------------------------------------- a2ml-validate: - name: Validate A2ML manifests + name: Validate DEED manifests runs-on: ubuntu-latest steps: @@ -30,10 +30,10 @@ jobs: - name: Check for A2ML files id: detect run: | - COUNT=$(find . -name '*.a2ml' -not -path './.git/*' | wc -l) + COUNT=$(find . \( -name '*.a2ml' -o -name '*.deed' \) -not -path './.git/*' | wc -l) echo "count=$COUNT" >> "$GITHUB_OUTPUT" if [ "$COUNT" -eq 0 ]; then - echo "::warning::No .a2ml manifest files found. Every RSR repo should have 0-AI-MANIFEST.a2ml" + echo "::warning::No .a2ml/.deed manifest files found. Every RSR repo should have a repo deed (_chora.deed); legacy 0-AI-MANIFEST.a2ml accepted mid-migration — standards #837" fi - name: Validate A2ML manifests @@ -46,14 +46,14 @@ jobs: cat <<'EOF' >> "$GITHUB_STEP_SUMMARY" ## A2ML Validation - :warning: **No .a2ml files found.** Every RSR-compliant repo should have at least `0-AI-MANIFEST.a2ml`. + :warning: **No .a2ml/.deed manifest files found.** Every RSR-compliant repo should have a repo deed (`_chora.deed`) at its root. - Create one with: `a2mliser init` or copy from [rsr-template-repo](https://github.com/hyperpolymath/rsr-template-repo). + Copy it from [rsr-template-repo](https://github.com/hyperpolymath/rsr-template-repo). EOF else echo "## A2ML Validation" >> "$GITHUB_STEP_SUMMARY" echo "" >> "$GITHUB_STEP_SUMMARY" - echo "Scanned **${A2ML_COUNT}** .a2ml file(s). See step output for details." >> "$GITHUB_STEP_SUMMARY" + echo "Scanned **${A2ML_COUNT}** manifest file(s) (.deed, or legacy .a2ml). See step output for details." >> "$GITHUB_STEP_SUMMARY" fi # --------------------------------------------------------------------------- @@ -91,7 +91,7 @@ jobs: cat <<'EOF' >> "$GITHUB_STEP_SUMMARY" ## K9 Contract Validation - :warning: **No K9 contract files found.** Repos with configuration files should have K9 contracts. + :warning: **No .a2ml/.deed manifest files found.** Every RSR-compliant repo should have a repo deed (`_chora.deed`) at its root. Generate contracts with: `k9iser generate .` EOF @@ -305,7 +305,7 @@ jobs: MAX=6 # A2ML manifest present? - if find . -name '*.a2ml' -not -path './.git/*' | head -1 | grep -q .; then + if find . \( -name '*.a2ml' -o -name '*.deed' \) -not -path './.git/*' | head -1 | grep -q .; then SCORE=$((SCORE + 1)) A2ML_STATUS=":white_check_mark:" else @@ -359,7 +359,7 @@ jobs: | Tool/Format | Status | Notes | |-------------|--------|-------| - | A2ML manifest (0-AI-MANIFEST.a2ml) | ${A2ML_STATUS} | Required for all RSR repos | + | DEED repo deed (`_chora.deed`) | ${A2ML_STATUS} | Required for all RSR repos | | K9 contracts | ${K9_STATUS} | Required for repos with config files | | .editorconfig | ${EC_STATUS} | Required for all repos | | Groove endpoint | ${GROOVE_STATUS} | Required for service repos | From de859e8663f75a5841c31f48170d1867f210e4f5 Mon Sep 17 00:00:00 2001 From: "Jonathan D.A. Jewell" <6759885+hyperpolymath@users.noreply.github.com> Date: Mon, 21 Sep 2026 13:14:45 +0100 Subject: [PATCH 2/4] fix(gates): converge the manifest guard on the template's DEED wording Mirrors `rsr-template-repo/.github/workflows/deed-validate.yml` and standards#837 step 4. No `.a2ml` document is translated and no retained-input gate is touched. From 64df8fe89b29807422429408c708dee95ca80e4b Mon Sep 17 00:00:00 2001 From: "Jonathan D.A. Jewell" <6759885+hyperpolymath@users.noreply.github.com> Date: Mon, 21 Sep 2026 14:57:51 +0100 Subject: [PATCH 3/4] Update .github/workflows/dogfood-gate.yml Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Signed-off-by: Jonathan D.A. Jewell <6759885+hyperpolymath@users.noreply.github.com> --- .github/workflows/dogfood-gate.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dogfood-gate.yml b/.github/workflows/dogfood-gate.yml index c60adaa..49da940 100644 --- a/.github/workflows/dogfood-gate.yml +++ b/.github/workflows/dogfood-gate.yml @@ -91,7 +91,7 @@ jobs: cat <<'EOF' >> "$GITHUB_STEP_SUMMARY" ## K9 Contract Validation - :warning: **No .a2ml/.deed manifest files found.** Every RSR-compliant repo should have a repo deed (`_chora.deed`) at its root. + :warning: **No K9 contracts found.** Generate contracts with `k9iser generate .`. Generate contracts with: `k9iser generate .` EOF From 57bcf376c41ea91154cfe8edb3ad5fd520266cf4 Mon Sep 17 00:00:00 2001 From: "coderabbitai[bot]" <136622811+coderabbitai[bot]@users.noreply.github.com> Date: Mon, 21 Sep 2026 14:02:30 +0000 Subject: [PATCH 4/4] fix(ci): include DEED files in manifest validation --- .github/hooks/validate-a2ml.sh | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/hooks/validate-a2ml.sh b/.github/hooks/validate-a2ml.sh index b053676..41bff11 100755 --- a/.github/hooks/validate-a2ml.sh +++ b/.github/hooks/validate-a2ml.sh @@ -2,9 +2,9 @@ # SPDX-License-Identifier: MPL-2.0 # Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) # -# validate-a2ml.sh — A2ML manifest validation script +# validate-a2ml.sh — A2ML and DEED manifest validation script # -# Scans for .a2ml files and validates: +# Scans for .a2ml and .deed files and validates: # 1. Required fields: agent-id or pedigree name, version # 2. SPDX-License-Identifier header presence # 3. Attestation block structure (if present) @@ -89,7 +89,7 @@ report_issue() { } # --------------------------------------------------------------------------- -# Validator: check a single .a2ml file +# Validator: check a single manifest file # --------------------------------------------------------------------------- validate_a2ml() { local file="$1" @@ -281,15 +281,15 @@ validate_a2ml() { } # --------------------------------------------------------------------------- -# Main: discover and validate .a2ml files +# Main: discover and validate .a2ml and .deed files # --------------------------------------------------------------------------- -echo "::group::A2ML Manifest Validation" -echo "Scanning ${SCAN_PATH} for .a2ml files..." +echo "::group::A2ML and DEED Manifest Validation" +echo "Scanning ${SCAN_PATH} for .a2ml and .deed files..." echo "" -# Find all .a2ml files, excluding .git directory -mapfile -t a2ml_candidates < <(find "$SCAN_PATH" -name '*.a2ml' -not -path '*/.git/*' -type f | sort) +# Find all supported manifest files, excluding the .git directory. +mapfile -t a2ml_candidates < <(find "$SCAN_PATH" -type f \( -name '*.a2ml' -o -name '*.deed' \) -not -path '*/.git/*' | sort) # Apply paths-ignore filter a2ml_files=() @@ -307,7 +307,7 @@ if [[ $SKIPPED -gt 0 ]]; then fi if [[ ${#a2ml_files[@]} -eq 0 ]]; then - echo "::notice::No .a2ml files found in ${SCAN_PATH}" + echo "::notice::No .a2ml or .deed files found in ${SCAN_PATH}" echo "files_scanned=0" >> "$GITHUB_OUTPUT_FILE" 2>/dev/null || true echo "errors=0" >> "$GITHUB_OUTPUT_FILE" 2>/dev/null || true echo "warnings=0" >> "$GITHUB_OUTPUT_FILE" 2>/dev/null || true @@ -315,7 +315,7 @@ if [[ ${#a2ml_files[@]} -eq 0 ]]; then exit 0 fi -echo "Found ${#a2ml_files[@]} .a2ml file(s)" +echo "Found ${#a2ml_files[@]} manifest file(s) (.a2ml or .deed)" echo "" for file in "${a2ml_files[@]}"; do