Commit Graph
57 Commits
Author SHA1 Message Date
Dean 661a1118cc Merge pull request #6626 from IshmamDC217/fix/conventions-ci-gate-indent
fix(tools): read workflow job keys at the indentation the file uses
2026-10-17 18:00:57 +13:00
Dean 10e0906273 Merge pull request #6407 from MarcZX100/codex/conventions-duplicate-export-quotepath-6388
fix(tools): keep duplicate export paths unquoted
2026-10-17 17:55:52 +13:00
Dean 4e15bde13d Merge pull request #6397 from MarcZX100/codex/conventions-crlf-fences-6387
fix(tools): recognize markdown fences with CRLF endings
2026-10-17 16:37:26 +13:00
AlxcBTW ad2b2b4c9c docs: add AGENTS.md with the rules coding agents break 2026-10-16 19:41:49 +02:00
Ishmam Ahmed 3ee7ab8ffb fix(tools): read workflow job keys at the indentation the file uses
The ci-gate check read a job's needs and if only two spaces deeper
than the job name. In a workflow indented by four spaces those keys
were never found, so a job gated with needs: eligibility and an if on
its outputs was reported as ungated. Read the keys at the indentation
of the job's first child instead.
2026-10-16 01:02:47 +01:00
MarcZX100 ad64fa844b fix(tools): keep duplicate export paths unquoted 2026-10-15 14:13:26 +00:00
MarcZX100 345fca11db fix(tools): recognize markdown fences with CRLF endings 2026-10-15 13:59:17 +00:00
Adrià FranchandClaude 1b94074869 fix(conventions): also check comments in .glsl shaders
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-15 14:39:47 +02:00
GalaxyGamingFRandClaude Opus 5.5 939b3d8a9f fix(conventions): check comments in GLSL shaders
The comment rule only scanned C++, Python and CMake files, so a
comment added to a .comp, .frag or .vert shader passed the check.
TextureDetile.comp and ColorTransfer.comp carry such comments today.
Shaders are now masked with the same C-style lexer and report
comment on changed lines, with the same #endif allowance and the
same technical-debt exemption as C++.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012zyXkUzTZGh3nBwNMtrLaW
2026-10-15 14:39:25 +02:00
Adrià b08db6a093 Merge pull request #5765 from GalaxyGamingFR/fix/conventions-depends-on-list
fix(conventions): accept Depends on answered as a list
2026-10-15 14:39:14 +02:00
Adrià f0634088bc Merge pull request #6013 from TaymKal/fix/conventions-renames
fix(conventions): check only changed lines in renamed files
2026-10-14 22:20:34 +02:00
Adrià 101c23a813 Merge pull request #5378 from MiniRML/fix/conventions-bom-shebang
fix(conventions): accept first-line BOM shebangs
2026-10-14 21:25:39 +02:00
TaymKal 1f11d60fee fix(conventions): check only changed lines in renamed files 2026-10-14 21:18:21 +02:00
Adrià 2b0d680903 Merge pull request #5360 from thuanquang/fix/conventions-type-change
fix(conventions): pair each type change with both of its patch headers
2026-10-14 20:58:06 +02:00
Adrià 6fe6764b9b Merge pull request #5354 from pushkarreddyy/fix/conventions-modern-agent-files
fix(conventions): reject modern agent instruction files
2026-10-14 20:57:48 +02:00
Adrià 3864da5959 Merge pull request #3909 from GalaxyGamingFR/fix/conventions-doc-link-code-blocks
fix(conventions): ignore code blocks when checking doc links
2026-10-14 19:13:06 +02:00
GalaxyGamingFRandClaude Opus 5.5 efde691a45 fix(conventions): accept Depends on answered as a list
The pr-template check only accepted "Depends on: #N" or "none" on the same
line, so a checklist answering it as a bulleted list failed CI although
pr_overlap reads exactly that form (test_pr_overlap_dependencies covers
"Depends on:
- #2
- #3"). Allow one list marker before the first answer;
an empty answer is still reported.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012zyXkUzTZGh3nBwNMtrLaW
2026-10-14 02:32:58 -07:00
Alexej Szpevák 739fcd7862 perf(tools): read checker file contents through one git cat-file process
Check read every technical debt file and every changed file with its
own git show, so each run started one process per file: 99 git
processes for a typical pull request, 311 for a 118-file range, and the
count grew with docs/dev/debt. Process start-up dominates on Windows.

Read the blobs the checks use in one git cat-file --batch process,
keyed by the object ids ls-tree already returns, and batch the files
duplicates() inspects the same way. Paths that are not cached still go
through git show, so failures are unchanged.
2026-10-14 11:11:38 +02:00
GalaxyGamingFRandClaude Opus 5.5 e052811006 fix(conventions): ignore code blocks when checking doc links
The doc-link check matched C++ lambdas such as `[](int a)` inside fenced
code blocks and inline code, reporting bogus missing targets. Links now
require non-empty link text, and links() strips fenced blocks and inline
code spans first. docs() also skips added lines that sit inside a fence
of the full file.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 00:49:22 -07:00
Dean 39bf2b9e9d Merge pull request #4986 from Ondra97/codex/fix-conventions-raw-literals
fix(conventions): ignore C++ raw literal contents
2026-10-14 15:54:04 +13:00
Dean 622fb542d2 Merge pull request #4764 from nikowolf123/fix/conventions-test-fixtures
fix(conventions): skip library test fixtures in the export checks
2026-10-14 15:37:56 +13:00
Dean 5a81f6085b Merge pull request #4765 from nikowolf123/fix/conventions-template-subsections
fix(conventions): keep #### subsections inside the pull request template sections
2026-10-14 14:41:00 +13:00
MiniRML ef1f2b8c77 fix(conventions): accept first-line BOM shebangs 2026-10-13 11:19:59 -07:00
pushkarreddyy bf1aadea66 fix(conventions): reject modern agent instruction files
Expand AGENT_FILES in tools/check_conventions.py to include instruction and configuration files for modern AI coding assistants (.windsurfrules, windsurf.md, chatgpt.md, .chatgptrules, .aider.conf.yml). Add test coverage in tools/tests/test_check_conventions_agent_files.py.
2026-10-13 23:39:04 +05:30
thuanquangandClaude Opus 5.5 ae28529f35 fix(conventions): pair each type change with both of its patch headers
git diff prints a file whose type changes (a file replaced by a link or
a submodule) as a deletion and a creation, two diff --git headers for
one --name-status entry, so the checker ran out of paths and stopped
with StopIteration instead of checking the pull request.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 00:56:08 +07:00
NikoandClaude Opus 5.5 0f7cd5b7ac fix(conventions): skip library test fixtures in the export checks
The duplicate-export and silent-stub rules treated every APS5_VABI
definition under core/libs/prx/ as a library export, including mocks
and callbacks in a library's tests/ directory. Those files are built
only into separate test executables, never into the library, so they
are not exports. PR #3533 failed CI because a sceKernelGetProcessTime
mock in libSceAudioOut/tests was reported as a duplicate of libkernel's
export. An sce* fixture with a stub-shaped body was also reported as a
silent stub, and a real export that shares a name with a fixture in
another library's tests/ was reported as a duplicate.

Skip files under a tests directory on both sides of the check, with the
same test code() already uses for title-specific and progress.py uses
for its function counts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 17:39:20 +02:00
Adrià a56c905df6 Merge pull request #4589 from MiniRML/fix/tools-cut-helper-accounting
fix(tools): exclude cut helpers from NID accounting
2026-10-13 17:24:55 +02:00
GalaxyGamingFRandClaude Fable 5.1 b12d6f5394 fix(conventions): match agent instruction files case-insensitively
The repository check compared the file name to a lower-case set, so a
file added as CLAUDE.md, Agents.md or GEMINI.md passed the check while
claude.md was rejected. Compare the lower-cased name so every spelling
of an agent instruction file is reported.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V9UU71SP1UKGR51Sowbgmq
2026-10-13 14:48:43 +02:00
GalaxyGamingFRandClaude Fable 5.1 d15cc41299 fix(conventions): read the PR body file with utf-8-sig
A pull request body saved with a UTF-8 byte order mark starts with
U+FEFF before "### What", so the first heading is not recognised and the
checker reports the What section as missing. Decode the body file with
utf-8-sig so the mark is dropped and the sections are found.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V9UU71SP1UKGR51Sowbgmq
2026-10-13 11:48:36 +02:00
Ondra97 6706e44d95 fix(conventions): ignore C++ raw literal contents 2026-10-13 09:15:31 +02:00
NikoandClaude Opus 5.5 7f39ac991b fix(conventions): keep #### subsections inside the pull request template sections
SECTION matched every heading that starts with ###, so a #### line opened
a new section named "# ...". A Tested section written as #### Linux and
#### Windows subsections was reported as missing or empty, and an
unchecked item after a #### line in Checklist was not reported.

A level-4 heading belongs to the level-3 section above it (CommonMark
4.2), and silent_stub_debt() already keeps deeper headings inside their
section. SECTION now matches only headings with exactly three #.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 23:14:49 +02:00
Adrià FranchandClaude 555099ae23 feat(tools): keep technical debt in one file per library
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-12 20:38:17 +02:00
Dean 59a2167a93 Merge pull request #4368 from SandstromPL/fix/conventions-run-from-subdirectory
fix(conventions): check the whole repository when run from a subdirectory
2026-10-13 07:21:13 +13:00
MiniRML 53d10eac9a fix(tools): exclude cut helpers from NID accounting 2026-10-12 09:24:13 -07:00
Adrià FranchandClaude d9d00f0e34 ci(build): run pull request jobs only when their files change
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-12 11:35:11 +02:00
SandstromPLandClaude Opus 5.5 872c3ba6ff fix(conventions): check the whole repository when run from a subdirectory
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 13:10:44 +05:30
Paritosh LahreandClaude Opus 5.5 436e310ddb fix(conventions): report 3rdparty submodules without a .gitmodules entry (#4304)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 20:31:24 +13:00
Dean e088868801 Merge pull request #3908 from GalaxyGamingFR/fix/conventions-wrapped-declarations
fix(conventions): treat wrapped declarations as declarations
2026-10-12 16:10:06 +13:00
GalaxyGamingFRandClaude Fable 5.1 ede6fad8b2 fix(conventions): treat wrapped declarations as declarations
Check.duplicates reported a duplicate export for a hit in another
library unless that single grep line ended with a semicolon, so a
prototype wrapped over two lines was reported as a duplicate
definition. The hit file is now read at the head commit and the
existing function_body decides whether the hit is a definition.

The git grep pattern also used the GNU escapes \b and \s, which the
BSD regex library on macOS does not support, so the check never
matched there. The pattern now uses POSIX classes instead.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V9UU71SP1UKGR51Sowbgmq
2026-10-11 12:20:36 -07:00
MrMha 45f349df9b fix(conventions): handle unusual Git paths and escaped links 2026-10-11 18:21:09 +04:00
GalaxyGamingFRandClaude Fable 5.1 0e7ccce2ec fix(conventions): match ordinary CMake spellings of system lookups
The system-dependency rule was case-sensitive, so FIND_PACKAGE(SDL2) passed,
and its trailing word boundary failed when whitespace followed the opening
parenthesis. find_path, find_program and find_file were not covered at all.
The pattern is now case-insensitive, anchors each command name, and covers
the find_* family.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V9UU71SP1UKGR51Sowbgmq
2026-10-11 12:21:30 +02:00
Adrià Franch 68f60cf348 fix(conventions): spell the stripped tab as an escape 2026-10-11 12:07:35 +02:00
GalaxyGamingFRandClaude Fable 5.1 3a1deb48a8 fix(conventions): strip trailing tab from spaced diff paths
Git appends a tab after file names containing spaces in the +++ header, so the
added-lines key kept the tab and its suffix no longer matched. Comment,
extension, title and silent-stub rules then skipped such files. The tab is
now stripped, with a test covering core/a b.cpp.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V9UU71SP1UKGR51Sowbgmq
2026-10-11 12:07:34 +02:00
GalaxyGamingFRandClaude Fable 5.1 2f1b4aaf97 fix(conventions): count * and + checklist bullets as unchecked
The pull request check only matched unchecked items written with a dash,
so a checklist rewritten with * or + bullets passed with every box empty.
GitHub renders all three bullet styles as task items. The pattern now
accepts any of them, and new tests cover each bullet style.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V9UU71SP1UKGR51Sowbgmq
2026-10-11 02:41:54 -07:00
GalaxyGamingFRandClaude Fable 5.1 8365766e93 fix(conventions): read non-ASCII paths unquoted from git
With git's default core.quotePath=true, paths with non-ASCII characters
were printed quoted and octal-escaped. The checker stored the quoted
string as the path and then failed in git show with a traceback. git()
now passes core.quotePath=false so raw UTF-8 paths are used. A test
covers a diff containing a non-ASCII file name.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V9UU71SP1UKGR51Sowbgmq
2026-10-11 02:32:41 -07:00
Adrià 407b5324de Merge pull request #2373 from 011010/ci/conventions-systemdeps-exemption
ci(conventions): exempt cmake/SystemDeps.cmake from the system-dependency rule
2026-10-11 10:26:03 +02:00
Blazing Cook 271e31a5a3 fix(conventions): restrict silent stub exemptions to their section 2026-10-11 16:45:35 +09:00
GalaxyGamingFRandClaude Fable 5.1 3dbcc5f1c7 fix(tools): keep apostrophes in comments from opening character literals
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-10 21:21:07 -07:00
husari.orozco 1c6e53b9bf ci(conventions): exempt cmake/SystemDeps.cmake from the system-dependency rule 2026-10-09 10:46:35 -06:00
darhebkf a00559a222 fix(tools): preserve function bodies after line comments 2026-10-09 13:42:24 +02:00