From 18f976c9cb025992b632273c9f5686d4879be5d3 Mon Sep 17 00:00:00 2001 From: Speculator55005 <50082482+fas89@users.noreply.github.com> Date: Mon, 14 Sep 2026 21:53:06 +0200 Subject: [PATCH] fix: the repo-root README was outside every gate, and seven releases stale MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `README.md:18` advertised CLI `0.8.11` against a `0.15.0` pin, and line 19 claimed scaffolds emit `fluidVersion: 0.7.4`. This is the first thing a GitHub visitor reads. **It was unreachable by the checker on two separate counts**, which is why it survived a 149-agent audit and five merged clusters: 1. The sweep iterates `_iter_doc_files(DOCS_DIR)` — everything under `docs/`. The root README is not under `docs/`, so no pattern was ever applied to it. 2. Even once included, the "CLI release bullet" pattern required the version to follow `CLI release` immediately. The README writes "Current CLI release **documented here:** `0.8.11`", and the interposed words defeated the match. Both are fixed, and I only found the second because the first did not work: after widening the file sweep I seeded the stale value back and the gate stayed green. A fix that is not canary-tested is a guess. The canary now behaves correctly — seeding `0.8.11` produces `README.md:18: CLI release bullet says CLI 0.8.11, pin is 0.15.0`, and restoring it exits 0. `cli-consistency.yml` gains `README.md` to its path filter, so editing that file actually runs the job that now checks it. A gate that cannot be triggered by the file it guards is the same defect in a different place. --- .github/workflows/cli-consistency.yml | 4 ++++ README.md | 4 ++-- scripts/check_cli_docs.py | 13 ++++++++++++- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/.github/workflows/cli-consistency.yml b/.github/workflows/cli-consistency.yml index ba0edc6..ff97cab 100644 --- a/.github/workflows/cli-consistency.yml +++ b/.github/workflows/cli-consistency.yml @@ -10,6 +10,10 @@ on: # sdk-and-plugins as much as in the command reference. A narrower filter # means a PR can add a broken invocation and never run this job. - 'docs/**' + # The repo-root README is a docs surface too, and it is the one GitHub + # shows first. It is now swept for version claims, so a change to it must + # run this job. + - 'README.md' - 'scripts/check_cli_docs.py' - 'scripts/check_providers.py' - 'scripts/cli-docs-allowlist.yml' diff --git a/README.md b/README.md index 88755df..b5d05ad 100644 --- a/README.md +++ b/README.md @@ -15,8 +15,8 @@ Fluid Forge is a contract-first CLI for building, validating, and deploying data ## Current Versioning -- Current CLI release documented here: `0.8.11` -- Current scaffolded contract schema examples: `fluidVersion: 0.7.4` +- Current CLI release documented here: `0.15.0` +- Current scaffolded contract schema examples: `fluidVersion: 0.7.5` Those are different on purpose. `fluid version` reports the installed CLI release, while `fluidVersion` inside a contract selects the contract schema version. diff --git a/scripts/check_cli_docs.py b/scripts/check_cli_docs.py index 3588a23..ae9acdc 100644 --- a/scripts/check_cli_docs.py +++ b/scripts/check_cli_docs.py @@ -333,6 +333,14 @@ def _iter_doc_files(root: Path) -> list[Path]: if _SKIP_DIR_PARTS & set(path.relative_to(root).parts): continue out.append(path) + # The repo-root README is a docs surface with the widest audience of all - + # it is what GitHub shows first - but it lives outside docs/, so the sweep + # never saw it. It sat seven releases stale (0.8.11 against a 0.15.0 pin) + # while every in-tree page was green. + if root == DOCS_DIR: + root_readme = REPO_ROOT / "README.md" + if root_readme.is_file(): + out.append(root_readme) return out @@ -831,7 +839,10 @@ def check_doc_flags(allowlist: set[str]) -> int: ), ( "CLI release bullet", - re.compile(r"(?i)^\s*[-*]\s*CLI\s+release\s*" + _V), + # Tolerates words between "CLI release" and the version - the repo-root + # README writes "Current CLI release documented here: `x.y.z`", which the + # tighter form missed, letting it sit seven releases stale. + re.compile(r"(?i)^\s*[-*]\s*(?:current\s+)?CLI\s+release\b[^.\n]{0,32}?" + _V), "cli", ), (