All notable changes to the orchestration contract of this repository are documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning
for this repository only. Mirror content tags (boost-1.90.0-algorithm-zh_Hans)
are a separate namespace — see README and
.github/workflows/assets/README.md.
1.1.0 - 2026-07-31
- JSON Schema for the outbound Weblate add-or-update POST request:
weblate-add-or-update.request.schema.json
(
organization,version,extensions,add_or_update). - Documented Weblate success response bodies in
endpoint-contract.md: HTTP 202 (
task_id), HTTP 200 (status: "ok"). - Lint/CI schema checks via pinned
check-jsonschema(metaschema + fixture validation); bats validates captured Weblate request bodies against the schema and asserts success response fields. - Slack failure notifications for
sync-translation(vianotify-failurejob) and stale-sync alerts forheartbeat(sharednotify.sh+SLACK_WEBHOOK_URLsecret).
- Extracted shared dispatch helpers into
scripts/trigger-dispatch-common.sh(DEFAULT_REPO,DEFAULT_VERSION, JSON build,POST …/dispatches); bothtrigger-*.shwrappers source it. - Mirror
create-tag.ymlbot identity now usesset_git_bot_configfromenv.sh/lib.shinstead of a hardcoded org email. - Renamed and expanded operator quick reference to GETTING-STARTED.md: end-to-end walkthrough with per-step verification and create-tag coverage.
- endpoint-contract.md Outbound Weblate section: request schema is now the source of truth for payload fields.
scripts/trigger-add-submodules.shnow requires--submodules; theunordered, jsonscript default is removed so the operator script cannot silently diverge from raw API auto-discovery.- Bats coverage for
scripts/trigger-dispatch-common.sh,trigger-add-submodules.sh, andtrigger-start-translation.sh. start-translation.ymlfail-on-empty-discovery success criteria andstart-localgate (#69, c098a18):sync-mirrorsexits non-zero when.gitmoduleshas zerolibs/entries (require_libs_submodules_in_gitmodules;Run add-submodules first.) instead of exiting 0 withupdated_submodules=[].start-localif:gates onsync-mirrorsjob success rather than a non-emptyupdated_submoduleshandoff; whensync-mirrorssucceeds with an empty array,start-localruns and exits non-zero with a distinct empty-handoff error instead of silently succeeding. Ships as MINOR (not MAJOR) because the versioned consumer surface—repository_dispatchevent types,client_payloadfields, dispatch HTTP contract, and shell 0 / 1 / 2 meanings—is unchanged; the prior green-on-misconfiguration paths were an implementation defect (silent success on violated dispatch-order preconditions), not a documented intentional success criterion operators should have pinned against.
build_dispatch_jsonintrigger-dispatch-common.sh: pass key/value pairs positionally via jq--argsand$ARGS.positionalinstead of building an intermediate array.- Clone and finalize steps now fail fast:
clone_repo,sync_translations_branch, andfinalize_translations_*propagate non-zero status instead of continuing with incomplete state. combine_batch_and_finalize_rccollapses all three exit sources—batchsubmodule_fatal,finalize_rc, and optionalweblate_rc—with documented last-wins priority;start-translation.ymlstart-localdelegates to it instead of inline collapse logic.commit_and_push_translations_branch: bounded retry (up to 3 attempts) on--force-with-leaserejection with inter-attemptfetchand--force-if-includessafety (#70);sync-translation.ymlsync-localnow routes through the same helper instead of a baregit push --force-with-lease.
1.0.0 - 2026-07-07
Initial semver baseline for the orchestration repo. Summarizes the operator and consumer surface as it stood at this release; routine submodule pointer updates are not listed.
- Core workflows:
add-submodules,start-translation, andsync-translationtriggered viarepository_dispatchor (for sync) daily schedule. - Local trigger scripts:
scripts/trigger-add-submodules.shandscripts/trigger-start-translation.sh. client_payloadfields for dispatch events:version,submodules,lang_codes(add-submodules);version,lang_codes,extensions(start-translation).- Endpoint contract: GitHub
POST …/dispatchesshapes, auth headers, success = HTTP 204, and outbound Weblate POST contract. - Weblate integration:
WEBLATE_ENDPOINT_PATHconsolidation, structured HTTP error handling, success codes 200 or 202. - Shell per-submodule batch return codes 0 / 1 / 2 with workflow job collapse rules documented in ARCHITECTURE §6 (code 2 is never propagated to GitHub Actions step exit).
- Branch and path constants in
.github/workflows/assets/env.sh:MASTER_BRANCH,LOCAL_BRANCH_PREFIX,TRANSLATION_BRANCH_PREFIX,WEBLATE_ENDPOINT_PATH. - Mirror asset
create-tag.yml(copied into library mirrors; produces content tags, not orchestration semver). - Test harness and CI:
make check(ShellCheck, actionlint, bats suite). - Operator quick reference: GETTING-STARTED.md (formerly OPERATOR.md).