diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml index 6762221..30b5467 100644 --- a/.github/workflows/validate.yml +++ b/.github/workflows/validate.yml @@ -11,9 +11,11 @@ on: workflow_dispatch: env: - # Bumped to 0.0.78: carries L3 build.mcpp native build program (build-mcpp member), - # compat.openblas Windows recipe (bin/libopenblas.dll staged beside the .exe). - MCPP_VERSION: "0.0.87" + # Bumped to 0.0.91: carries standard = "c++fly" (experimental playground + # mode) in the resolver grammar — required so descriptors declaring it get + # the lint WARN below instead of a hard grammar-parse rejection from an + # older pinned mcpp (admission policy: warn, don't reject). + MCPP_VERSION: "0.0.91" jobs: lint: @@ -56,6 +58,17 @@ jobs: if ! lua5.4 tests/check_mirror_urls.lua "$f"; then fail=1 fi + # 5. c++fly admission policy (mcpp design 2026-07-14 §11-Q2, v1): + # c++fly means "toolchain's latest level + every experimental + # gate" — deliberately toolchain-dependent, so a published + # package built with it is not reproducible for consumers. + # Policy: WARN (never fail) and observe ecosystem usage before + # deciding whether to tighten. Two spellings: `language = ` is + # the descriptor's inline mcpp-segment key; `standard = ` covers + # mcpp.toml content embedded in heredoc/generated_files blocks. + if grep -nE '\b(language|standard)[[:space:]]*=[[:space:]]*"c\+\+fly"' "$f" >/dev/null; then + echo "::warning file=$f::declares C++ standard \"c++fly\" (experimental playground mode) — toolchain-dependent and non-reproducible for consumers; published packages should pin a concrete standard (c++23/c++26)" + fi done [ $fail -eq 0 ] && echo "All package files valid." exit $fail @@ -133,22 +146,25 @@ jobs: fail-fast: false matrix: include: + # Archive names are derived from env.MCPP_VERSION in the Download + # step — bumping the pin is a ONE-line change (hardcoded versions + # here once 404'd a pin bump). - platform: linux os: ubuntu-latest - archive: mcpp-0.0.87-linux-x86_64.tar.gz - root: mcpp-0.0.87-linux-x86_64 + suffix: linux-x86_64 + ext: tar.gz mcpp: bin/mcpp xlings: registry/bin/xlings - platform: macos os: macos-15 - archive: mcpp-0.0.87-macosx-arm64.tar.gz - root: mcpp-0.0.87-macosx-arm64 + suffix: macosx-arm64 + ext: tar.gz mcpp: bin/mcpp xlings: registry/bin/xlings - platform: windows os: windows-latest - archive: mcpp-0.0.87-windows-x86_64.zip - root: mcpp-0.0.87-windows-x86_64 + suffix: windows-x86_64 + ext: zip mcpp: bin/mcpp.exe xlings: registry/bin/xlings.exe steps: @@ -165,8 +181,8 @@ jobs: - name: Download mcpp shell: bash env: - MCPP_ARCHIVE: ${{ matrix.archive }} - MCPP_ROOT: ${{ matrix.root }} + MCPP_ARCHIVE: mcpp-${{ env.MCPP_VERSION }}-${{ matrix.suffix }}.${{ matrix.ext }} + MCPP_ROOT: mcpp-${{ env.MCPP_VERSION }}-${{ matrix.suffix }} run: | curl -L -fsS -o "$MCPP_ARCHIVE" \ "https://github.com/mcpp-community/mcpp/releases/download/v${MCPP_VERSION}/${MCPP_ARCHIVE}"