Problem
scripts/trigger-add-submodules.sh silently defaulted to unordered, json when --submodules was omitted, so operator-triggered dispatches could diverge from raw API behavior. When submodules is omitted from a repository_dispatch payload sent via the GitHub API, the workflow auto-discovers the full library list from boostorg/boost .gitmodules via resolve_add_submodules_names — a behavior the script default masked.
Acceptance Criteria
Implementation Notes
- Removed
DEFAULT_SUBMODULES and the SUBMODULES="${SUBMODULES:-$DEFAULT_SUBMODULES}" fallback; added an explicit guard before dispatch
- Renamed jq variable from
pairs to kv_pairs in build_dispatch_json to avoid jq 1.7 built-in name collision
- Added
install_dispatch_curl_stub / extract_dispatch_request_body helpers in tests/helpers/http_mock.bash for offline dispatch testing
References
CHANGELOG.md
docs/GETTING-STARTED.md
docs/endpoint-contract.md
scripts/trigger-add-submodules.sh
scripts/trigger-dispatch-common.sh
tests/helpers/http_mock.bash
tests/test_getting_started.bats
tests/test_trigger_add_submodules.bats
tests/test_trigger_dispatch_common.bats
tests/test_trigger_start_translation.bats
Problem
scripts/trigger-add-submodules.shsilently defaulted tounordered, jsonwhen--submoduleswas omitted, so operator-triggered dispatches could diverge from raw API behavior. Whensubmodulesis omitted from arepository_dispatchpayload sent via the GitHub API, the workflow auto-discovers the full library list fromboostorg/boost.gitmodulesviaresolve_add_submodules_names— a behavior the script default masked.Acceptance Criteria
trigger-add-submodules.shexits with an error and usage text when--submodulesis missing or emptyGETTING-STARTED.md,endpoint-contract.md) states that--submodulesis required on the script while the API field remains optional for auto-discoverybuild_dispatch_jsonproduces correct payloads under jq 1.7 (no collision with the built-inpairsfunction)trigger-dispatch-common.sh,trigger-add-submodules.sh, andtrigger-start-translation.shwith a curl stub forrepository_dispatchPOSTsImplementation Notes
DEFAULT_SUBMODULESand theSUBMODULES="${SUBMODULES:-$DEFAULT_SUBMODULES}"fallback; added an explicit guard before dispatchpairstokv_pairsinbuild_dispatch_jsonto avoid jq 1.7 built-in name collisioninstall_dispatch_curl_stub/extract_dispatch_request_bodyhelpers intests/helpers/http_mock.bashfor offline dispatch testingReferences
CHANGELOG.mddocs/GETTING-STARTED.mddocs/endpoint-contract.mdscripts/trigger-add-submodules.shscripts/trigger-dispatch-common.shtests/helpers/http_mock.bashtests/test_getting_started.batstests/test_trigger_add_submodules.batstests/test_trigger_dispatch_common.batstests/test_trigger_start_translation.bats