diff --git a/.github/workflows/build-genecluster-runner.yml b/.github/workflows/build-genecluster-runner.yml index 68416ee..372de72 100644 --- a/.github/workflows/build-genecluster-runner.yml +++ b/.github/workflows/build-genecluster-runner.yml @@ -19,7 +19,8 @@ permissions: env: REGISTRY: ghcr.io - IMAGE_NAME: ${{ github.repository_owner }}/genecluster-runner + # IMAGE_NAME is computed (lowercased) in the "Normalize image name" step below. + # GHCR rejects tags containing uppercase characters and the owner is "BioSymphony". jobs: build: @@ -29,6 +30,12 @@ jobs: digest: ${{ steps.build.outputs.digest }} steps: + - name: Normalize image name + # GHCR repository names must be lowercase; github.repository_owner is "BioSymphony". + env: + OWNER: ${{ github.repository_owner }} + run: echo "IMAGE_NAME=${OWNER,,}/genecluster-runner" >> "$GITHUB_ENV" + - name: Checkout uses: actions/checkout@v6 diff --git a/.github/workflows/build-genecluster-superpowers.yml b/.github/workflows/build-genecluster-superpowers.yml index c614776..4decafa 100644 --- a/.github/workflows/build-genecluster-superpowers.yml +++ b/.github/workflows/build-genecluster-superpowers.yml @@ -39,7 +39,8 @@ permissions: env: REGISTRY: ghcr.io - IMAGE_NAME: ${{ github.repository_owner }}/genecluster-superpowers + # IMAGE_NAME is computed (lowercased) in the "Normalize image name" step below. + # GHCR rejects tags containing uppercase characters and the owner is "BioSymphony". jobs: build: @@ -49,6 +50,12 @@ jobs: digest: ${{ steps.build.outputs.digest }} steps: + - name: Normalize image name + # GHCR repository names must be lowercase; github.repository_owner is "BioSymphony". + env: + OWNER: ${{ github.repository_owner }} + run: echo "IMAGE_NAME=${OWNER,,}/genecluster-superpowers" >> "$GITHUB_ENV" + - name: Checkout uses: actions/checkout@v6 @@ -79,7 +86,7 @@ jobs: BASE_IMAGE_INPUT: ${{ inputs.base_runner_image }} GITHUB_REPOSITORY_OWNER: ${{ github.repository_owner }} run: | - DEFAULT_BASE_IMAGE="${REGISTRY}/${GITHUB_REPOSITORY_OWNER}/genecluster-runner:v0.1" + DEFAULT_BASE_IMAGE="${REGISTRY}/${GITHUB_REPOSITORY_OWNER,,}/genecluster-runner:v0.1" { echo "args< dict[str, Any]: def main() -> int: parser = argparse.ArgumentParser(description="Probe local BioSymphony capability tiers.") parser.add_argument("--json", action="store_true", help="Emit machine-readable JSON.") + parser.add_argument( + "--no-fail", + action="store_true", + help=( + "Report-only: always exit 0 even when Tier A is not locally ready. " + "Used by `make capability` so CI (which lacks local GUI apps / tooling / " + "the ValarTTS server) does not fail. Direct invocation without this flag " + "keeps the exit-1 signal for local readiness checks." + ), + ) args = parser.parse_args() path_commands = {cmd: shutil.which(cmd) for cmd in PATH_COMMANDS} @@ -173,6 +183,8 @@ def main() -> int: if missing_mods: print("Missing Python modules: " + ", ".join(missing_mods)) + if args.no_fail: + return 0 return 0 if tier_a_ready else 1