Repository navigation
ci: add just recipes, CI gates, PR-title check and the agent standards - #1
Merged
Merged
Conversation
Taken from nevr-runtime's .clang-format with IndentWidth 4, which is what .editorconfig and the existing code use, so the diff is only the 43 spots that drifted. include/ is the nEVR ABI header and stays untouched. Co-Authored-By: Andrew Bates <a@sprock.io>
- justfile: build, test, check, lint, fmt, verify (the full gate), clean. - build.yml: format, lint, -Werror build, Wine smoke test, release check with this repo's own check_mod.py (no curl of code from the network), tests. Actions pinned by commit SHA. - pr-title-check.yml + tools/check_pr_title.py: PR titles are Conventional Commits headers. - CMake: ECHO_MOD_WERROR, on in tools/ci-build.sh and so in CI. - AGENTS.md: commits and PR titles, credit trailer, platform parity, reconstruct before taking a patch, prefer hooks to byte patches, before you push. Standards taken from nevr-runtime's AGENTS.md and workflows; release.yml is left for the release-step PR. Co-Authored-By: Andrew Bates <a@sprock.io>
nevr-runtime's file is a full dump from clang-format 23; CI's Ubuntu 24.04 has 18, which rejects AlignCaseArrows. The Google-based file with the four differences from it formats the sources identically. Co-Authored-By: Andrew Bates <a@sprock.io>
This was referenced Oct 26, 2026
main moved to b53afe8 (plugin API 7 and the asset example). Both conflicts were additive: AGENTS.md keeps the just recipes and main's asset-example build command, CMakeLists.txt keeps ECHO_MOD_WERROR next to ECHO_MOD_ASSET_EXAMPLE. - format gate (justfile, build.yml) now covers examples/assets/*.cpp; include/ stays out because those headers are copies of nevr-runtime's and are never hand-edited - asset_example.cpp formatted - the asset example builds under -DECHO_MOD_WERROR=ON: plugin_assets.h's GetProcAddress casts trip -Wcast-function-type, so that one warning stays a warning for that file Co-Authored-By: Andrew Bates <a@sprock.io>
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.
Brings the standards that fit a small plugin repo over from nevr-runtime's
AGENTS.md, justfile and workflows (work item 2 of the plugin-signing design, §7). The release step (release.yml) is deliberately not touched here; it is its own PR.What changes
justrecipes:build,test,check,lint,fmt,fmt-check,verify(the full gate = lint + check + test),clean.verifyis the one the design's §7 marked "no" for the template; included because the order asked for it, and defined as exactly what CI runs.build.yml): format (clang-format), lint (shellcheck, Python compile), build with-Werror(newECHO_MOD_WERRORoption, on intools/ci-build.sh), Wine smoke test, release check, tests. The release check now runs this repo's owntools/check_mod.pyinstead ofcurl-ing the template'smain(that URL also still points at the pre-rename repo name). Actions pinned by commit SHA.pr-title-check.yml+tools/check_pr_title.py: PR titles must be Conventional Commits headers (copied from nevr-runtime)..clang-format: nevr-runtime's, withIndentWidth: 4(what.editorconfigand the code use) andIncludeBlocks: Preserve(the Windows headers needwindows.hfirst; a regroup brokegame.cpp). Formatting the sources is its own commit (32c08cf), 62 insertions / 33 deletions across 7 files, no behaviour change.include/(the nEVR ABI header) is untouched.AGENTS.md: new sections: Commits and PR titles, Credit (trailer + NOTICE), Platforms (Quest parity: not applicable, PC-only), Taking someone else's patch (reconstruct first), Prefer a hook to a byte patch, Before you push; the Commands and layout tables updated.Not here, on purpose:
release.yml(stillcurls and uses@v4; the release-step PR replaces it), theNEVR-PLUGIN-BUILDstamp, README (next PR), VERSIONINFO.Failing-first test
tests/test_check_pr_title.pywas written beforetools/check_pr_title.pyexisted:After adding the checker (same file the tests import):
Commands run, on this PR's tip (
43dddf8)just verify, exit 0. The recipes it ran, with the relevant output:Also the MinHook build with warnings as errors:
cmake -S . -B build/mh -G Ninja -DCMAKE_TOOLCHAIN_FILE=cmake/mingw-toolchain.cmake -DECHO_MOD_MINHOOK=ON -DECHO_MOD_WERROR=ON && cmake --build build/mh->[14/14] Linking CXX shared library ExampleMod.dll.Not run: the GitHub workflows themselves (they run on this PR; their results are the checks below), and the game itself.
Notes for the reviewer
Co-Authored-By: Andrew Bates a@sprock.io
Update 2026-10-28: main moved, brought up to date by merge
Main moved to
b53afe8(PR #5, plugin API 7 and the asset example) and this branch conflicted inAGENTS.mdandCMakeLists.txt. Mergedorigin/maininto it (merge commit6450530, a plain fast-forward push, no force-push). Both conflicts were additive:AGENTS.md: kept thejustrecipes and added main's asset-example build command to the "withoutjust" paragraph.CMakeLists.txt:ECHO_MOD_WERRORandECHO_MOD_ASSET_EXAMPLEsit side by side.Two further changes the merge needed:
justfile,build.yml) now also coversexamples/assets/*.cpp, andasset_example.cppis formatted.include/stays out of the gate:plugin_assets.his a copy of nevr-runtime's and must not be hand-edited (clang-format --dry-runflags it).-DECHO_MOD_ASSET_EXAMPLE=ON -DECHO_MOD_WERROR=ONfailed withinclude/plugin_assets.h:38:27: error: cast between incompatible function types from 'FARPROC' ... [-Werror=cast-function-type](also :40). The default gate never builds the example. The example's CMake block now sets-Wno-error=cast-function-typefor that one file; the two warnings still print. After the change:build exit=0,Linking CXX shared library ExampleMod.dll.Commands run on
6450530:CI on
6450530: build (push and PR) pass, PR-title check pass, CodeQL (actions, c-cpp, python) pass.Co-Authored-By: Andrew Bates a@sprock.io