From 8fe0c85b12878bd86cf8bdac0930b03fa2965df2 Mon Sep 17 00:00:00 2001 From: "Jonathan D.A. Jewell" <6759885+hyperpolymath@users.noreply.github.com> Date: Tue, 6 Oct 2026 22:43:57 +0100 Subject: [PATCH 1/3] docs(ci): correct the Haskell build step comment after #1184 #1181 and #1184 merged opposite answers to standards#1161. #1181 made the build step generate a cabal.project for every tracked package, because detect then counted *.cabal at any depth. #1184, merged after it, narrowed detect to a root cabal.project or root *.cabal and reports nested-only Haskell as unsupported. The owner ruled on 2026-10-06 that #1184's root-only detect stands. The build step's comment still claimed the probe "counts *.cabal at ANY depth" and that narrowing it "would have hidden nested Haskell". Both are false on main now. The guard's error text named "*.hs or stack.yaml", which detect no longer counts. Behaviour is unchanged. With a root *.cabal and no cabal.project, the generated project still lists the root package and every tracked nested package, so a satellite package beside a root one is still built. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_012kgrMQRhSmZMBbF9Ui1zBw --- .github/workflows/ci-pipeline.yml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ci-pipeline.yml b/.github/workflows/ci-pipeline.yml index da609a9c0..4a6fd3e7e 100644 --- a/.github/workflows/ci-pipeline.yml +++ b/.github/workflows/ci-pipeline.yml @@ -891,22 +891,22 @@ jobs: # trade than a narrower gate. -Wall -Werror is the spec's "fail on # warnings" and is read-only with respect to tracked files. # - # BUILD WHAT `detect` COUNTED. The probe counts `*.cabal` at ANY depth - # (a git pathspec `*` crosses `/`), so a repo whose only package is - # nested — standards' own sanctify-php satellite — turned this job on - # and then died in a root that holds no package. A guard that counts - # a different set than its consumer builds is the defect; narrowing - # the probe to the root would have hidden nested Haskell instead. + # BUILD WHAT `detect` COUNTED. Since #1184 the probe counts Haskell only + # from a ROOT `cabal.project` or a ROOT `*.cabal` (`:(glob)` stops `*` + # crossing `/`); a repo whose only packages are nested is reported by + # detect as UNSUPPORTED and this job does not run (owner ruling + # 2026-10-06, standards#1161). So this step always has a root package. # A root `cabal.project` is the repo's own word and is used as-is; - # otherwise one is written (untracked) listing every package - # directory, from the SAME pathspec the probe uses. + # otherwise one is written (untracked) listing the root package and + # every tracked nested package directory, so a satellite package that + # sits beside the root one is built too, not silently skipped. if [ -f cabal.project ]; then echo "Using the repository's own cabal.project." source_note="root cabal.project" else mapfile -t pkg_dirs < <(git ls-files -- '*.cabal' | xargs -r -n1 dirname | sort -u) if [ "${#pkg_dirs[@]}" -eq 0 ]; then - echo "::error::Haskell was detected (*.hs or stack.yaml) but no *.cabal package is tracked, so there is nothing cabal can build. Add a .cabal file (hpack users: commit the generated one) or a cabal.project." + echo "::error::Haskell was detected from a root *.cabal, but git ls-files lists no tracked *.cabal, so there is nothing cabal can build. Commit the .cabal file (hpack users: commit the generated one) or add a root cabal.project." exit 1 fi { echo "packages:"; printf ' %s/\n' "${pkg_dirs[@]}"; } > cabal.project From 949302ecfb4568295c36e6a7dfe9317f0a821ba1 Mon Sep 17 00:00:00 2001 From: "Jonathan D.A. Jewell" <6759885+hyperpolymath@users.noreply.github.com> Date: Tue, 6 Oct 2026 22:50:01 +0100 Subject: [PATCH 2/3] docs(ci): a root cabal.project may list only nested packages CodeRabbit (#1186): a tracked root cabal.project makes detect fire even when every package it lists is nested, so the step does not always have a root package. Say so. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_012kgrMQRhSmZMBbF9Ui1zBw --- .github/workflows/ci-pipeline.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci-pipeline.yml b/.github/workflows/ci-pipeline.yml index 4a6fd3e7e..c25c5db87 100644 --- a/.github/workflows/ci-pipeline.yml +++ b/.github/workflows/ci-pipeline.yml @@ -893,11 +893,12 @@ jobs: # # BUILD WHAT `detect` COUNTED. Since #1184 the probe counts Haskell only # from a ROOT `cabal.project` or a ROOT `*.cabal` (`:(glob)` stops `*` - # crossing `/`); a repo whose only packages are nested is reported by - # detect as UNSUPPORTED and this job does not run (owner ruling - # 2026-10-06, standards#1161). So this step always has a root package. - # A root `cabal.project` is the repo's own word and is used as-is; - # otherwise one is written (untracked) listing the root package and + # crossing `/`); a repo with nested packages and neither root file is + # reported by detect as UNSUPPORTED and this job does not run (owner + # ruling 2026-10-06, standards#1161). A root `cabal.project` is the + # repo's own word and is used as-is, even when every package it lists + # is nested. Without one, detect fired on a root `*.cabal`, and one is + # written (untracked) listing the root package and # every tracked nested package directory, so a satellite package that # sits beside the root one is built too, not silently skipped. if [ -f cabal.project ]; then From 0d83aca6f21f8a1701930df238feb7bb052c2451 Mon Sep 17 00:00:00 2001 From: "coderabbitai[bot]" <136622811+coderabbitai[bot]@users.noreply.github.com> Date: Tue, 6 Oct 2026 22:34:11 +0000 Subject: [PATCH 3/3] chore(registry): refresh three specification source hashes --- .machine_readable/REGISTRY.a2ml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.machine_readable/REGISTRY.a2ml b/.machine_readable/REGISTRY.a2ml index d5c96f198..7d07b3e2f 100644 --- a/.machine_readable/REGISTRY.a2ml +++ b/.machine_readable/REGISTRY.a2ml @@ -135,7 +135,7 @@ name = "K9 Coordination Protocol" stream = "protocol" home = "2-protocols/k9-coordination/" canonical_doc = "2-protocols/k9-coordination/README.adoc" -source_hash = "sha256:548def6808dc22da192758da17bbadacdd0d3e43130035801a2e4b0a6ca02aed" +source_hash = "sha256:7481a72434e1961c002f6e6a69955034cb219cf5357756d59a15a5d4595b2905" route = "multi-agent coordination on top of K9" [[spec]] @@ -207,7 +207,7 @@ name = "RSR — Rhodium Standard Repositories" stream = "governance" home = "rhodium-standard-repositories/" canonical_doc = "rhodium-standard-repositories/README.adoc" -source_hash = "sha256:daeb002c345125c6a5132a71ae07a120691840ca0048b49674a7aab02e40acad" +source_hash = "sha256:1c630312120db85f7c578ed9927c85a86901e073550d76230bdca923f96a5c61" route = "the repository-compliance standard every repo is graded against" [[spec]] @@ -216,7 +216,7 @@ name = "Session Management Standards" stream = "governance" home = "3-practice/session-management-standards/" canonical_doc = "3-practice/session-management-standards/README.adoc" -source_hash = "sha256:9e3e5f7bc1469e0736359e3e85cba5311b8ed87056d137d86a98e81c4e3c4b5a" +source_hash = "sha256:6bcaa3e434103f1cbe50147d130a44c4d3695bdc518805c9e20ba97bdf34fefb" route = "continuity / verify / handover protocols" [[spec]]