fix(markdown-tooling): cut 1.16 to repair the Prettier gate and repin the lint action - #224
Merged
Merged
Conversation
… the lint action #209: the rendered local Prettier check handed Git's whole tracked selection to Prettier, which refuses an explicitly named symbolic link with a non-zero status while still reporting every real file clean. This repository's generated payload projection tracks 2067 such paths, so the documented gate exited 123 on a fully clean tree. The recipe now lists the corpus with `git ls-files -s` and drops index mode 120000 before `xargs`; the checked set is byte-identical (2499 files before and after, `comm` empty both ways), because a refused path was never read. Excluding the generated directory wholesale was rejected: it names one repository's layout instead of the property that breaks the tool. The markdownlint recipe is untouched — markdownlint-cli2 lints a symlink's target — and the no-Git fallback needs no filter, since Prettier skips a symlink reached by its own glob expansion. #211: `DavidAnson/markdownlint-cli2-action` advances to v24.2.0 (21c1be1b93ad9ed58fa840aacc3f279cde2a72ff, markdownlint-cli2 0.23.2) in the self-hosted lint workflow resource, with the SHA and its comment agreeing. The verify path also gains the render path's tolerance for an absent `runner_labels`: `_runner_label_reachability_warning` fed `config.get("runner_labels")` straight to its sequence coercion, so a config omitting the key raised a provider ValueError and aborted verify and drift-check instead of returning findings, while the same config rendered cleanly. The shipped option schema declares `default: []`, so this closes the gap for a caller that assembles the provider request itself. 1.16 moves both managed instruction blocks and the lint caller, so a 1.15-to-1.16 edge is declared and every older inbound route is retargeted and now relocks all three contributions. 1.15's payload bytes are unchanged. The installed `.github/workflows/lint-markdown.yml`, `AGENTS.md`, `CLAUDE.md`, `.standards/catalog.toml`, and `.standards/lock.toml` only advance at the release-prep reconcile, so the root-workflow parity, live action-pin, consumer-catalog projection, and lock-resolution rows are red until then by construction — CP-MODIFIED-MANAGED forbids moving an installed copy ahead of its package. Refs #209, #211
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
markdown-tooling 1.16 (1.15 retained, byte-immutable):
git ls-files -s -z … | sed -zn '/^120000 /!s/^[^\t]*\t//p' | xargs -0 -r npx prettier --check --), so it exits 0 on a clean checkout while checking exactly the same set of regular files. Git stays the corpus authority;sedrather thangrep -vso the pipeline cannot fail underpipefail. The markdownlint recipe and the no-Git fallback needed no change (verified).DavidAnson/markdownlint-cli2-actionpin advanced to21c1be1b…# v24.2.0(the old6bf21b07…was v24.1.0 commented# v24); SHA and comment now name the same release._runner_label_reachability_warningno longer raises on a request that omitsrunner_labels(render already tolerated it); robustness for callers assembling their own request — the control-plane path always resolves the schema default.Family root, top-level README pins,
catalogs/5.toml(1.16 default),standards/catalog.md, projection,_BASELINE_REF→v5.27.0, and CHANGELOG[Unreleased]entries included. Contract tests:test_markdown_tooling_1_16.py(new, includes a live reproduction of #209), retained flips, action-pin tests advanced.Six tests stay red until release-time reconcile re-renders
.github/workflows/lint-markdown.yml,AGENTS.md,CLAUDE.md,.standards/catalog.toml,.standards/lock.toml— the documented mid-train reconcile-lag class (same astest_markdown_tooling_1_13's docstring).reconcile --checknames exactly those pending updates.Governing work
Final: #209
The #211 pin advance ships in the same cut; #211 is closed separately with this PR as its evidence.
Acceptance coverage
commboth directions empty). AC3: a deliberately misformatteddocs/usage.mdfails the new command (exit 123 naming the file).# v24.2.0comment agree, asserted by a contract test; AC2: 1.15 byte-immutable (git diff --stat 3bda3cf4 -- …/1.15empty); AC3: validators green here, reconcile lands at release; AC4:npx markdownlint-cli2per the AGENTS.md command → 0 findings (hosted workflow proven after reconcile).Verification
check-release --baseline v5.27.0 --json→ onlyPC-RELEASE-PROJECTION(stale projection; mid-train by design);classify_catalog_diff(v5.27.0 → tree, 5.27.0→5.28.0)→minor, no findings.validate-packages,validate-graph,render-catalog --check,sync-payload-projection --check→ OK; ruff format/check → 0; basedpyright → 0.rexec -- … pytest <13 files>→ 145 passed, 6 failed (the reconcile-lag set above, each with its blocking file named);tests/package_contractfull → 1744 passed afternpm cion the worker.lint-markdown.ymlbyte diff at the pin); the new Prettier command → exit 0, "All matched files use Prettier code style!".