diff --git a/.machine_readable/6a2/ECOSYSTEM.a2ml b/.machine_readable/6a2/ECOSYSTEM.a2ml index 930b0eb..a1ec66e 100644 --- a/.machine_readable/6a2/ECOSYSTEM.a2ml +++ b/.machine_readable/6a2/ECOSYSTEM.a2ml @@ -3,7 +3,7 @@ (metadata (name "a2ml-ecosystem") (version "0.1.0") - (updated "2026-06-27") + (updated "2026-09-09") (authority "coordination-hub") (semantic-authority "satellite")) @@ -19,24 +19,20 @@ (membership (implementations - (member "a2ml-rs" (group "implementations") (path "members/implementations/a2ml-rs") (branch "main") (repo "hyperpolymath/a2ml-rs")) - (member "a2ml_ex" (group "implementations") (path "members/implementations/a2ml_ex") (branch "main") (repo "hyperpolymath/a2ml_ex")) - (member "a2ml_gleam" (group "implementations") (path "members/implementations/a2ml_gleam") (branch "main") (repo "hyperpolymath/a2ml_gleam")) - (member "a2ml-deno" (group "implementations") (path "members/implementations/a2ml-deno") (branch "main") (repo "hyperpolymath/a2ml-deno")) - (member "a2ml-haskell" (group "implementations") (path "members/implementations/a2ml-haskell") (branch "main") (repo "hyperpolymath/a2ml-haskell"))) + (member "a2ml-rs" (group "implementations") (path "rs") (branch "main") (repo "hyperpolymath/a2ml-rs")) + (member "a2ml_ex" (group "implementations") (path "ex") (branch "main") (repo "hyperpolymath/a2ml_ex")) + (member "a2ml_gleam" (group "implementations") (path "gleam") (branch "main") (repo "hyperpolymath/a2ml_gleam")) + (member "a2ml-deno" (group "implementations") (path "deno") (branch "main") (repo "hyperpolymath/a2ml-deno")) + (member "a2ml-haskell" (group "implementations") (path "haskell") (branch "main") (repo "hyperpolymath/a2ml-haskell"))) (tooling - (member "tree-sitter-a2ml" (group "tooling") (path "members/tooling/tree-sitter-a2ml") (branch "main") (repo "hyperpolymath/tree-sitter-a2ml")) - (member "vscode-a2ml" (group "tooling") (path "members/tooling/vscode-a2ml") (branch "main") (repo "hyperpolymath/vscode-a2ml")) - (member "pandoc-a2ml" (group "tooling") (path "members/tooling/pandoc-a2ml") (branch "main") (repo "hyperpolymath/pandoc-a2ml")) - (member "a2mliser" (group "tooling") (path "members/tooling/a2mliser") (branch "main") (repo "hyperpolymath/a2mliser"))) + (member "vscode-a2ml" (group "tooling") (path "members/tooling/vscode-a2ml") (branch "main") (repo "hyperpolymath/vscode-a2ml"))) (ci - (member "a2ml-validate-action" (group "ci") (path "members/ci/a2ml-validate-action") (branch "main") (repo "hyperpolymath/a2ml-validate-action")) - (member "a2ml-pre-commit" (group "ci") (path "members/ci/a2ml-pre-commit") (branch "main") (repo "hyperpolymath/a2ml-pre-commit"))) + (member "a2ml-validate-action" (group "ci") (path "validate-action") (branch "main") (repo "hyperpolymath/a2ml-validate-action"))) (examples - (member "a2ml-showcase" (group "examples") (path "members/examples/a2ml-showcase") (branch "main") (repo "hyperpolymath/a2ml-showcase")))) + (member "a2ml-showcase" (group "examples") (path "showcase") (branch "main") (repo "hyperpolymath/a2ml-showcase")))) (related (related "contractiles-a2-lab" (relationship "private-lab-cross-reference") (repo "hyperpolymath/contractiles-a2-lab") (member false)))) diff --git a/members/ci/a2ml-pre-commit b/members/ci/a2ml-pre-commit deleted file mode 160000 index 0308630..0000000 --- a/members/ci/a2ml-pre-commit +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 030863006cc35b25ee965839b78e7b994b6bd0da diff --git a/members/tooling/pandoc-a2ml b/members/tooling/pandoc-a2ml deleted file mode 160000 index 4d02131..0000000 --- a/members/tooling/pandoc-a2ml +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 4d021312dc507c5fe94573cc20b439b81da4baf0 diff --git a/members/tooling/tree-sitter-a2ml b/members/tooling/tree-sitter-a2ml deleted file mode 160000 index 628b145..0000000 --- a/members/tooling/tree-sitter-a2ml +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 628b145cf3a03fe15cef515a8ada1e58953b9dd4 diff --git a/scripts/check-membership.sh b/scripts/check-membership.sh index 350527a..f04eb59 100755 --- a/scripts/check-membership.sh +++ b/scripts/check-membership.sh @@ -14,47 +14,39 @@ fail() { check_member() { local group="$1" local name="$2" - local url="https://github.com/hyperpolymath/${name}.git" - local path="members/${group}/${name}" - local module="submodule.${path}" - local actual_url - local actual_branch - local mode + local path="$3" - if ! grep -Fq "(member \"${name}\" (group \"${group}\")" .machine_readable/6a2/ECOSYSTEM.a2ml; then - fail ".machine_readable/6a2/ECOSYSTEM.a2ml missing ${group}/${name}" + if ! grep -Fq "(member \"${name}\" (group \"${group}\") (path \"${path}\")" .machine_readable/6a2/ECOSYSTEM.a2ml; then + fail ".machine_readable/6a2/ECOSYSTEM.a2ml missing ${group}/${name} at ${path}" fi - actual_url="$(git config -f .gitmodules --get "${module}.url" || true)" - if [[ "${actual_url}" != "${url}" ]]; then - fail ".gitmodules ${path} url is '${actual_url}', expected '${url}'" + if [[ ! -d "${path}" ]]; then + fail "${group}/${name} vendored directory '${path}' is missing" + return fi - actual_branch="$(git config -f .gitmodules --get "${module}.branch" || true)" - if [[ "${actual_branch}" != "main" ]]; then - fail ".gitmodules ${path} branch is '${actual_branch}', expected 'main'" - fi - - mode="$(git ls-files -s "${path}" | awk '{print $1}')" - if [[ "${mode}" != "160000" ]]; then - fail "${path} is not a pinned submodule gitlink" + if ! git ls-files "${path}/" | grep -q .; then + fail "${group}/${name} vendored directory '${path}' has no tracked files" fi } -check_member implementations a2ml-rs -check_member implementations a2ml_ex -check_member implementations a2ml_gleam -check_member implementations a2ml-deno -check_member implementations a2ml-haskell -check_member tooling tree-sitter-a2ml -check_member tooling vscode-a2ml -check_member tooling pandoc-a2ml -check_member tooling a2mliser -check_member ci a2ml-validate-action -check_member ci a2ml-pre-commit -check_member examples a2ml-showcase - -if grep -R "contractiles-a2-lab" .gitmodules members >/dev/null 2>&1; then +check_member implementations a2ml-rs rs +check_member implementations a2ml_ex ex +check_member implementations a2ml_gleam gleam +check_member implementations a2ml-deno deno +check_member implementations a2ml-haskell haskell +check_member tooling vscode-a2ml members/tooling/vscode-a2ml +check_member ci a2ml-validate-action validate-action +check_member examples a2ml-showcase showcase + +# Members were consolidated into this monorepo by aa4b836. A surviving gitlink +# without a matching .gitmodules entry breaks actions/checkout cleanup and can +# never be initialized, so fail with the exact stale paths if one reappears. +while IFS= read -r gitlink; do + [[ -n "${gitlink}" ]] && fail "orphan submodule gitlink remains at ${gitlink}" +done < <(git ls-files -s | awk '$1 == "160000" { print $4 }') + +if grep -R "contractiles-a2-lab" members >/dev/null 2>&1; then fail "contractiles-a2-lab must not be a member submodule" fi