From d407a79fa2f8585b68fd5271623775d65d28cb67 Mon Sep 17 00:00:00 2001 From: Zoey Rose Date: Thu, 13 Aug 2026 06:27:19 +0000 Subject: [PATCH 1/4] docs(tools): describe MIT-default license boundary --- bin/validate | 5 +++++ community-health/profile/README.md | 4 +++- tests/validate-community-health.sh | 4 ++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/bin/validate b/bin/validate index 8d45f1d..18f5c9a 100755 --- a/bin/validate +++ b/bin/validate @@ -970,6 +970,11 @@ for required_text in \ 'They do not yet form a complete game release.' \ 'Game content and' \ 'media remain separately licensed' \ + '[Tools](https://github.com/atrinik/tools)' \ + 'is MIT by default with a GPL-2.0-or-later' \ + 'exception; historical' \ + 'historical' \ + 'tools tags and releases remain under the terms that applied when published' \ 'historical MIT provenance registry' \ 'exact, independently separable' \ 'copy it, migrate or port it, translate or adapt it, or' \ diff --git a/community-health/profile/README.md b/community-health/profile/README.md index 649e524..34aa13e 100644 --- a/community-health/profile/README.md +++ b/community-health/profile/README.md @@ -11,7 +11,9 @@ implementation is being developed with Go, Rust, and Protobuf foundations. They do not yet form a complete game release. Game content and media remain separately licensed under the terms in their source repositories. -Classic and [tools](https://github.com/atrinik/tools) remain GPL as distributed. +Classic remains GPL as distributed. [Tools](https://github.com/atrinik/tools) +is MIT by default with a GPL-2.0-or-later `map-checker-qt/` exception; historical +tools tags and releases remain under the terms that applied when published. Under the [historical MIT provenance registry](https://github.com/atrinik/atrinik/blob/main/docs/PROVENANCE.md), an MIT destination may inspect exact, independently separable material as diff --git a/tests/validate-community-health.sh b/tests/validate-community-health.sh index 15da1e2..7698102 100755 --- a/tests/validate-community-health.sh +++ b/tests/validate-community-health.sh @@ -34,6 +34,10 @@ sed -i 's/GPL-licensed/GPL-compatible/' "${profile}" assert_invalid 'an organization profile without the Classic license boundary' reset_repository +sed -i 's/MIT by default/MIT-only/' "${profile}" +assert_invalid 'an organization profile without the tools mixed-license boundary' +reset_repository + jq 'del(.files[] | select(.target == "profile/README.md"))' \ "${temporary}/repository/config/community-health.json" \ >"${temporary}/community-health.json" From 41549694a9caee3bd78702ecd2a600c6e9870cf6 Mon Sep 17 00:00:00 2001 From: Zoey Rose Date: Thu, 13 Aug 2026 06:35:21 +0000 Subject: [PATCH 2/4] test(tools): enforce checker license scope --- bin/validate | 1 + tests/validate-community-health.sh | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/bin/validate b/bin/validate index 18f5c9a..a8326dd 100755 --- a/bin/validate +++ b/bin/validate @@ -972,6 +972,7 @@ for required_text in \ 'media remain separately licensed' \ '[Tools](https://github.com/atrinik/tools)' \ 'is MIT by default with a GPL-2.0-or-later' \ + 'map-checker-qt/' \ 'exception; historical' \ 'historical' \ 'tools tags and releases remain under the terms that applied when published' \ diff --git a/tests/validate-community-health.sh b/tests/validate-community-health.sh index 7698102..3f7d2df 100755 --- a/tests/validate-community-health.sh +++ b/tests/validate-community-health.sh @@ -38,6 +38,10 @@ sed -i 's/MIT by default/MIT-only/' "${profile}" assert_invalid 'an organization profile without the tools mixed-license boundary' reset_repository +sed -i 's/map-checker-qt/wrong-checker/' "${profile}" +assert_invalid 'an organization profile without the tools path-scoped exception' +reset_repository + jq 'del(.files[] | select(.target == "profile/README.md"))' \ "${temporary}/repository/config/community-health.json" \ >"${temporary}/community-health.json" From 80124a192c5f879745f26e59db753470d304d03b Mon Sep 17 00:00:00 2001 From: Zoey Rose Date: Thu, 13 Aug 2026 06:40:39 +0000 Subject: [PATCH 3/4] fix(tools): bind checker license exception --- bin/validate | 5 +---- community-health/profile/README.md | 2 +- tests/validate-community-health.sh | 5 ++++- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/bin/validate b/bin/validate index a8326dd..a0e823f 100755 --- a/bin/validate +++ b/bin/validate @@ -971,10 +971,7 @@ for required_text in \ 'Game content and' \ 'media remain separately licensed' \ '[Tools](https://github.com/atrinik/tools)' \ - 'is MIT by default with a GPL-2.0-or-later' \ - 'map-checker-qt/' \ - 'exception; historical' \ - 'historical' \ + 'is MIT by default with a GPL-2.0-or-later map-checker-qt/ exception; historical' \ 'tools tags and releases remain under the terms that applied when published' \ 'historical MIT provenance registry' \ 'exact, independently separable' \ diff --git a/community-health/profile/README.md b/community-health/profile/README.md index 34aa13e..8df6258 100644 --- a/community-health/profile/README.md +++ b/community-health/profile/README.md @@ -12,7 +12,7 @@ They do not yet form a complete game release. Game content and media remain separately licensed under the terms in their source repositories. Classic remains GPL as distributed. [Tools](https://github.com/atrinik/tools) -is MIT by default with a GPL-2.0-or-later `map-checker-qt/` exception; historical +is MIT by default with a GPL-2.0-or-later map-checker-qt/ exception; historical tools tags and releases remain under the terms that applied when published. Under the [historical MIT provenance registry](https://github.com/atrinik/atrinik/blob/main/docs/PROVENANCE.md), diff --git a/tests/validate-community-health.sh b/tests/validate-community-health.sh index 3f7d2df..f06a95d 100755 --- a/tests/validate-community-health.sh +++ b/tests/validate-community-health.sh @@ -38,7 +38,10 @@ sed -i 's/MIT by default/MIT-only/' "${profile}" assert_invalid 'an organization profile without the tools mixed-license boundary' reset_repository -sed -i 's/map-checker-qt/wrong-checker/' "${profile}" +sed -i \ + 's/GPL-2.0-or-later map-checker-qt\/ exception/GPL-2.0-or-later wrong-checker\/ exception/' \ + "${profile}" +printf '\nUnrelated replacement tracker: map-checker-qt/.\n' >>"${profile}" assert_invalid 'an organization profile without the tools path-scoped exception' reset_repository From 5339270321c71cef2d7183fb21df5f25baa636ea Mon Sep 17 00:00:00 2001 From: Zoey Rose Date: Fri, 14 Aug 2026 12:53:44 +0000 Subject: [PATCH 4/4] fix(tools): render checker exception precisely --- bin/validate | 3 ++- community-health/profile/README.md | 2 +- tests/validate-community-health.sh | 3 ++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/bin/validate b/bin/validate index a0e823f..aea4a12 100755 --- a/bin/validate +++ b/bin/validate @@ -962,6 +962,7 @@ while IFS= read -r community_file; do done < <(jq -r '.files[].source' "${community_health_config}") profile_readme=${root}/community-health/profile/README.md +# shellcheck disable=SC2016 # Markdown code markers are intentionally literal. for required_text in \ '# Atrinik' \ 'Atrinik is an open-source cooperative fantasy role-playing world' \ @@ -971,7 +972,7 @@ for required_text in \ 'Game content and' \ 'media remain separately licensed' \ '[Tools](https://github.com/atrinik/tools)' \ - 'is MIT by default with a GPL-2.0-or-later map-checker-qt/ exception; historical' \ + 'is MIT by default with a GPL-2.0-or-later `map-checker-qt/` exception; historical' \ 'tools tags and releases remain under the terms that applied when published' \ 'historical MIT provenance registry' \ 'exact, independently separable' \ diff --git a/community-health/profile/README.md b/community-health/profile/README.md index 8df6258..34aa13e 100644 --- a/community-health/profile/README.md +++ b/community-health/profile/README.md @@ -12,7 +12,7 @@ They do not yet form a complete game release. Game content and media remain separately licensed under the terms in their source repositories. Classic remains GPL as distributed. [Tools](https://github.com/atrinik/tools) -is MIT by default with a GPL-2.0-or-later map-checker-qt/ exception; historical +is MIT by default with a GPL-2.0-or-later `map-checker-qt/` exception; historical tools tags and releases remain under the terms that applied when published. Under the [historical MIT provenance registry](https://github.com/atrinik/atrinik/blob/main/docs/PROVENANCE.md), diff --git a/tests/validate-community-health.sh b/tests/validate-community-health.sh index f06a95d..a445165 100755 --- a/tests/validate-community-health.sh +++ b/tests/validate-community-health.sh @@ -38,8 +38,9 @@ sed -i 's/MIT by default/MIT-only/' "${profile}" assert_invalid 'an organization profile without the tools mixed-license boundary' reset_repository +# shellcheck disable=SC2016 # Markdown code markers are intentionally literal. sed -i \ - 's/GPL-2.0-or-later map-checker-qt\/ exception/GPL-2.0-or-later wrong-checker\/ exception/' \ + 's/GPL-2.0-or-later `map-checker-qt\/` exception/GPL-2.0-or-later `wrong-checker\/` exception/' \ "${profile}" printf '\nUnrelated replacement tracker: map-checker-qt/.\n' >>"${profile}" assert_invalid 'an organization profile without the tools path-scoped exception'