master is red: build ladder_bank_server in ladder-tests, and let the pre-flight expect it - #475
Open
Yaraslaut wants to merge 1 commit into
Open
master is red: build ladder_bank_server in ladder-tests, and let the pre-flight expect it#475Yaraslaut wants to merge 1 commit into
Yaraslaut wants to merge 1 commit into
Conversation
…expect it Master went red on the merge of #470 (bank's server and 22-scenario corpus) into #473's pre-flight, exactly as #473's own comment said it would: ::error::scripts/scenario/scenarios/bank/ is a corpus for 'bank', which is not listed in examples/rungs.txt -- this job configures no ladder_bank_server for it. Either list it there, or build its server in this job and extend this check to expect it. That is the gate working. A corpus with no server in this job would otherwise have run five of six directories and reported green, which is morph#462's defect one level down. So this takes the second branch the error names rather than weakening the check or adding bank to examples/rungs.txt -- the latter would enrol bank in wasm-ladder.yml's build loop, coverage.sh and codecov.yml's per-rung components, which is a scope decision that rungs.txt and examples/LADDER.md have already settled the other way. ladder-tests now configures -DMORPH_BUILD_BANK_EXAMPLE=ON. That option alone guards add_subdirectory(examples/bank) in the root CMakeLists.txt; examples/bank/CMakeLists.txt then declares ladder_bank_server inside its own if(MORPH_BUILD_QT), which this job already sets. Nothing new to install: the apt step already names Lightweight's libsqlite3-dev, libyaml-cpp-dev, libzip-dev, unixodbc-dev and libsqliteodbc (MORPH_BUILD_LADDER=ON fetches the same pinned ORM through examples/common) and libgl1-mesa-dev, and the server links only Qt6::Core and Qt6::WebSockets, both already installed. The Build step names the target after the all-target build -- a no-op when the flag is present, and "no rule to make target" when someone drops it, instead of a silent absence surfacing as the scenario step's exit 2 a Qt build later. The pre-flight gains a third arm, not a relaxation: a corpus that is neither a listed rung nor served by an add_executable(ladder_<name>_server) in examples/<name>/CMakeLists.txt still fails. The arm is keyed on that declaration rather than on the literal name "bank", so deleting the target makes the check fire again -- verified by commenting the add_executable() out and watching bank go red -- and a scratch scenarios/nonesuch/ still fails. scripts/scenario/README.md's "In CI" section said CI does not run the corpus because no workflow builds the servers. That has been false since #473; rewritten to describe the pre-flight, the whole-corpus run, and the scripts/scenario/ entry in the job's path filter. Verified locally with the job's own flags: ladder_bank_server builds, all six servers exist, `run_scenarios.py` over bank+bookmarks+kanban+ledger+pastebin+ polls reports "every scenario passed", ctest -L ladder -LE stress is 1026/1026, scripts/check_rung_filters.sh is 39/39, and `ladder_rungs.sh ci-path-regex` is byte-identical (neither of its inputs is touched). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C6uB9zxdSG8qp3VNAAyFvF
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
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.
Master is red
59788351(#473) added a pre-flight toladder-tests: everyscripts/scenario/scenarios/<name>/must have aRungSpecand a server thisjob builds.
1d690d5d(#470) then added bank's 22-scenario corpus and aladder_bank_serverthat deliberately is not a rung. The pre-flight fires onmaster, naming bank — exactly as #473's own comment predicted:
The gate is working. A corpus with no server would otherwise have run five of
six directories and reported green — morph#462's defect one level down. This PR
takes the second branch the error names, rather than weakening the check or
adding bank to
examples/rungs.txt(which would enrol bank inwasm-ladder.yml's build loop,coverage.shandcodecov.yml's per-rungcomponents — a scope decision
examples/rungs.txtandexamples/LADDER.mdalready settled the other way).
What changed
ladder-testsconfigures-DMORPH_BUILD_BANK_EXAMPLE=ON. That optionalone guards
add_subdirectory(examples/bank)in the rootCMakeLists.txt;examples/bank/CMakeLists.txtthen declaresladder_bank_serverinside itsown
if(MORPH_BUILD_QT), which this job already sets. Nothing new to install:the apt step already names Lightweight's
libsqlite3-dev,libyaml-cpp-dev,libzip-dev,unixodbc-dev,libsqliteodbcandlibgl1-mesa-dev, and theserver links only
Qt6::Core+Qt6::WebSockets—qtwebsocketsis alreadyin the aqtinstall step's
modules:.the flag is present;
no rule to make targetwhen someone drops it, ratherthan a silent absence surfacing as the scenario step's
exit 2a Qt buildlater.
that is neither a listed rung nor served by an
add_executable(ladder_<name>_server)inexamples/<name>/CMakeLists.txtstill fails. The arm is keyed on that declaration, not on the literal name
bank, so deleting the target makes the check fire again.scripts/scenario/README.md's "In CI" section claimed CI does not run thecorpus because no workflow builds the servers. False since ci: run the scenario corpus in ladder-tests, and let corpus changes reach it #473; rewritten to
describe the pre-flight, the whole-corpus run, and the
scripts/scenario/entry in the job's path filter.
Verification
Pre-flight
run:script extracted fromci.ymlwithyaml.safe_loadand run ona clean checkout.
Before (at
1d690d5d) — exit 1:After — exit 0:
Still refuses an unknown corpus — scratch
scripts/scenario/scenarios/nonesuch/:Still refuses bank if the target goes away —
add_executable(ladder_bank_server …)commented out:The target actually builds.
cmake --preset gcc-debug -DMORPH_BUILD_QT=ON -DMORPH_BUILD_LADDER=ON -DMORPH_LADDER_RUNGS=all -DMORPH_BUILD_BANK_EXAMPLE=ON→ exit 0; fullcmake --build --preset gcc-debug(469 targets) → exit 0:Whole corpus, all six directories (
run_scenarios.py --build-dir build/gcc-debug --rung bank …) — exit 0:Other job steps, unchanged and green:
ctest --preset gcc-debug -L ladder -LE stress→100% tests passed out of 1026bash scripts/check_automoc_includes.sh build/gcc-debug→32 generated moc source(s), none ascendingbash scripts/check_rung_filters.sh→All 39 rung-filter checks passed.bash scripts/ladder_rungs.sh ci-path-regex→ byte-identical; neither of itsinputs (
examples/rungs.txt,scripts/ladder_rungs.sh) is touched.ci.ymlparses withyaml.safe_load(17 jobs).Not verified here: the run above used this machine's system Qt 6.11.2 and
GCC 16.2.1, not CI's aqtinstall Qt 6.8.1 on GCC 15 — the flags and target are
the same, but the exact CI toolchain combination is untested outside CI.
🤖 Generated with Claude Code