Skip to content

coverage-gap stage 1: preflight + ABI-break-sweep skills, make_pr gate fixes#3098

Merged
borisbat merged 1 commit into
masterfrom
bbatkin/coverage-gap-stage1
Jun 11, 2026
Merged

coverage-gap stage 1: preflight + ABI-break-sweep skills, make_pr gate fixes#3098
borisbat merged 1 commit into
masterfrom
bbatkin/coverage-gap-stage1

Conversation

@borisbat

Copy link
Copy Markdown
Collaborator

Stage 1 of COVERAGE_GAP.md (follow-up to #3095, plan landed in #3097). Docs-only — the process layer that the Stage 2 utils/preflight tool will later automate.

New: skills/preflight.md

CI-lane ↔ local-mirror table for every PR-triggered lane, built from a fresh read of the five workflows:

  • build.yml matrix: interp/JIT/ctest/AOT mirrors, plus the lanes that need honesty — sanitizers (WSL only), Debug (fused-path divergence note), ARM/mac, mingw (80/20 = clang syntax pass), clang-cl (fully mirrorable on Windows, commands included)
  • bundle_smoke: WSL-verbatim, when to run it
  • extended_checks: per-step commands, led by the defining divergence — CI configures with ALL release modules ON while local dev builds don't, which is exactly how the safe_addr(bool[4]) regression hid in dasOpenGL
  • doc.yml: the six gates as a table, with the stop-at-first-panic warning
  • wasm_build / build_eastl: what puts them at risk, when to let CI carry them

New: skills/abi_break_sweep.md

The externals checklist distilled from the #3095 experience: why extended_checks builds external dasImgui's master against your branch, both-worlds spellings (the isArray() precedent) preferred over shims preferred over feature macros, externals-merge-FIRST ordering, the stale-.shared_module → misleading error[20605] trap, and daspkg-index as the sweep scope.

skills/make_pr.md gate fixes

  • Step 4 triggers: struct fields/enum values removed or reordered now explicitly trigger doc regen (das2rst validates positionally); six-gate + first-panic note added
  • 4f runs both sphinx builders (CI runs latex -W too, and it warns on things html accepts)
  • 4g verifies no untracked generated RST (a doc.yml gate that had no local step)
  • New step 2.7: type-system / daslib-generics changes → sequence smoke + externals sweep
  • Two stale claims fixed, probe-verified: das-fmt/dasfmt.das is in-tree now (utils/das-fmt/), and MCP format_file agrees with it on named-arg spacing (both wrap daslib/das_source_formatter; probed Foo(a=1) → both rewrite to a = 1). Kept the name trap: a locally built bin/Release/das-fmt.exe is still the v1→v2 converter from utils/dasFormatter/.

Housekeeping

  • CLAUDE.md skill table: registered the two new skills + wsl_ci_repro.md (existed but was never indexed)
  • COVERAGE_GAP.md Stage 2: cross-platform (Windows / macOS / WSL) is now a stated requirement for utils/preflight — pure .das + clargs, clang-cl /Zs vs clang -fsyntax-only behind one flag, multi-config vs single-config binary discovery, missing host tools degrade to explicit SKIP

🤖 Generated with Claude Code

…e fixes

skills/preflight.md maps every PR-triggered CI lane (build matrix incl.
sanitizer/Debug/mingw/clang-cl, bundle_smoke, every extended_checks step,
the six doc gates, wasm, eastl) to its exact local mirror command, or an
honest "not mirrorable" with the WSL pointer.

skills/abi_break_sweep.md: externals checklist — both-worlds spellings
(the isArray() precedent) over feature macros, externals-merge-first
ordering, stale-.shared_module 20605 trap, daspkg-index as scope.

skills/make_pr.md: step-4 triggers gain positional doc validation
(removed fields are CI-fatal too), the six-gate / first-panic note, and
the untracked-RST check; 4f now runs BOTH sphinx builders; new step 2.7
routes type-system/generics changes to sequence smoke + externals sweep.
Two stale claims fixed (probe-verified): das-fmt is in-tree at
utils/das-fmt/dasfmt.das, and MCP format_file now agrees with it on
named-arg spacing; kept the das-fmt.exe name trap (the cmake target is
still the v1-to-v2 converter).

CLAUDE.md skill table: register preflight + abi_break_sweep + the
previously unlisted wsl_ci_repro. COVERAGE_GAP.md stage 2: cross-platform
(Windows/mac/WSL) is a requirement for utils/preflight, with degrade-to-
explicit-SKIP semantics for missing host tools.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings June 11, 2026 15:44

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Docs-only Stage 1 of the coverage-gap plan: adds a “preflight” process layer that maps PR-triggered CI lanes to local reproduction commands, plus an externals/ABI-break sweep checklist, and updates the PR-making checklist/gates accordingly.

Changes:

  • Added skills/preflight.md mapping each PR-triggered workflow lane to a local mirror (or explicitly “not mirrorable”).
  • Added skills/abi_break_sweep.md checklist for handling ABI/API breaks that affect external modules (e.g., dasImgui via extended_checks).
  • Updated skills/make_pr.md, COVERAGE_GAP.md, and CLAUDE.md to reflect the new gates/skills and cross-platform requirements for the planned utils/preflight tool.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
skills/preflight.md New CI-lane ↔ local-mirror command reference for PR-triggered workflows
skills/make_pr.md Updates PR checklist/gates (docs gates, formatter reality, type-system triggers)
skills/abi_break_sweep.md New externals compatibility/ABI-break sweep checklist
COVERAGE_GAP.md Stage 2 tool requirements clarified (cross-platform constraints, SKIP semantics)
CLAUDE.md Registers the new skills in the skill index table

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread skills/make_pr.md
Comment on lines +256 to 260
rm -rf doc/sphinx-build site/doc build/latex
sphinx-build -W --keep-going -b latex -d doc/sphinx-build doc/source build/latex
sphinx-build -b html -d doc/sphinx-build doc/source site/doc 2>&1 | sed 's/\x1b\[[0-9;]*m//g' | tee /tmp/sphinx_out.txt
tail -3 /tmp/sphinx_out.txt
grep -iE "warning:|error:" /tmp/sphinx_out.txt
Comment thread skills/make_pr.md
Comment on lines +196 to 198
- **Struct fields or enum values added, REMOVED, or reordered** in any C++ type documented under `doc/source/stdlib/handmade/` — das2rst validates handmade docs **positionally** (line 1 = type description, line N+1 = Nth field/value), so a removed field is just as CI-fatal as an added one
- RST files in `doc/source/` (handwritten tutorials, reference pages, TOCs)
- `doc/reflections/das2rst.das` or `doc/reflections/rst.das`
Comment thread skills/preflight.md

| Workflow | Trigger | Jobs |
|---|---|---|
| `build.yml` | every PR | `build` matrix (5 targets × Debug/Release/RelWithDebInfo × sanitizers), `bundle_smoke`, `build_windows_mingw`, `build_windows_clangcl` |
@borisbat borisbat merged commit d9c0c73 into master Jun 11, 2026
31 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants