From 1ab00fd5bc0246b754eb3372897e2a97a87cd44c Mon Sep 17 00:00:00 2001 From: sunrisepeak Date: Wed, 15 Jul 2026 02:31:31 +0800 Subject: [PATCH 1/2] =?UTF-8?q?ci(validate):=20c++fly=20admission=20WARN?= =?UTF-8?q?=20(design=20=C2=A711-Q2=20v1)=20+=20mcpp=20pin=20->=200.0.91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - lint check 5: descriptors declaring C++ standard "c++fly" (either the mcpp-segment key 'language' or embedded mcpp.toml 'standard') get a ::warning annotation — never a failure. c++fly is toolchain-dependent by design (latest level + all experimental gates), so published packages built with it are not reproducible for consumers; observe usage first. - MCPP_VERSION 0.0.87 -> 0.0.91: required for policy coherence — the grammar-parse step's older pinned mcpp hard-rejects 'c++fly' as an unknown standard (verified: 0.0.90 rc=1, 0.0.91 rc=0), which would contradict warn-not-reject. --- .github/workflows/validate.yml | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml index 6762221..a105ab0 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 From 7d6839fc1008465f2a058d8323a96a912a810bd3 Mon Sep 17 00:00:00 2001 From: sunrisepeak Date: Wed, 15 Jul 2026 02:36:21 +0800 Subject: [PATCH 2/2] ci(validate): derive workspace archive names from MCPP_VERSION (hardcoded 0.0.87 404'd the pin bump) --- .github/workflows/validate.yml | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml index a105ab0..30b5467 100644 --- a/.github/workflows/validate.yml +++ b/.github/workflows/validate.yml @@ -146,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: @@ -178,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}"