Repository navigation
senior-dev: a CMake default, and --verify-build/--verify-test for a check discovery cannot find - #1793
Open
ZeroPoint95 wants to merge 3 commits into
Open
senior-dev: a CMake default, and --verify-build/--verify-test for a check discovery cannot find#1793ZeroPoint95 wants to merge 3 commits into
ZeroPoint95 wants to merge 3 commits into
Conversation
…heck discovery cannot find A root CMakeLists.txt has always made a workspace accountable — both the build and the test demand apply — while no ecosystem default could name either, so a header-only CMake library failed verification with "no build entrypoint could be discovered" beside its own ctest suite. CMake is now the last ecosystem default: configure and build into .senior-dev/cmake-build, which no recorder reads, with one job per processor, then ctest there. For a project whose real check lives outside the folder (a fuzz harness, a benchmark's validation script), `codeaf senior-dev run` takes --verify-build and --verify-test. Each replaces discovery for its kind and is run by senior-dev itself on the frozen tree under the same strict preamble and ceiling. They come only from the command line, never from the working model, and naming one kind never excuses the other. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Discover picks each kind on its own, so a CMake project whose README or Makefile names a build and no test was paired with that build and `ctest --test-dir .senior-dev/cmake-build`, a folder nothing configured: the run reported the project's tests red where it used to say plainly that no test entrypoint could be discovered. The test default now configures and builds the tree first, as every other ecosystem's test default stands alone, and runs ctest from inside it, which works before CMake 3.20. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ZeroPoint95
marked this pull request as ready for review
October 8, 2026 00:05
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.
Why
CyberGym attempt 5c2 fixed and externally verified arvo_24633. The official grader later scored the recovered deliverables 4/4. But
codeaf senior-dev runexited 2 withno build entrypoint could be discovered(verification_commands: 0).Root cause (Gap B in the verifier brief): a root
CMakeLists.txtmakes a workspace accountable, so it must have both a build and a test, but no ecosystem default could name either for CMake. So every header-only CMake library failed verification for want of a command, while its own ctest suite sat in the tree.What changes
fullverification/discovery.go). It is asked last, so every project that already had a default keeps exactly the one it had.cmake -S . -B .senior-dev/cmake-build && cmake --build .senior-dev/cmake-build --parallel "$(getconf _NPROCESSORS_ONLN 2>/dev/null || echo 2)"cd .senior-dev/cmake-build && ctest --output-on-failure. Discovery chooses each kind separately, so the test can't assume the CMake build ran: a README or Makefile might supply the build. Running ctest from inside the folder also works before CMake 3.20..senior-dev, which no recorder or fingerprint reads, so it never ends up in the handed-in change, and a later pass builds on the previous one.--parallelgives Makefiles an unlimited-j. On ArduinoJson that OOM-killedcc1plus, and a serial build does not fit the 600s ceiling.--verify-build CMD/--verify-test CMDoncodeaf senior-dev run(fullverification/declared.go). These are for a project whose real check lives outside the folder: a fuzz harness, or a benchmark'svalidate.py.set -euo pipefailpreamble and ceiling.true).senior-dev.mdsection, "How does senior-dev find a project's build and tests", quoting the exact ending string; both flags added to the flags section; retrieval probes ininternal/manual/chat_test.go.Not done, on purpose: the brief's "the agent declares its own verification commands at submit" option, and any downgrade of a missing entrypoint to
pass-unverified.Proof
declared_test.go,full_verification_declared_test.go) cover:Declarereplacing one kind only, and still requiring the other;false | cat), both failing;seniorDevDataDirectory.Discoveremits, run underset -euo pipefailon upstream ArduinoJson HEAD inubuntu:24.04(cmake 3.28, GCC 13, 4 CPUs): buildexit=0in 24s; ctest100% tests passed, 0 tests failed out of 27.🤖 Generated with Claude Code