ci: run the compatibility suite on a schedule #13

Merged
day01 merged %!d() commits from %!s() into %!s() 2026-08-03 13:34:08 +00:00
Owner

The compatibility suite only ran when someone clicked workflow_dispatch, and
it covered two features. It now runs nightly at 03:17, on pull requests that
touch the workflow or cache adapters, and still on demand.

New coverage:

  • cache round-trip through the runner's own cache API (actions/cache/save
    and restore on v3, with fail-on-cache-miss);
  • job outputs consumed by a dependent job;
  • expression functions — hashFiles runs the bundled hash-files.js through
    the job image's node, format and contains go through the evaluator.

Nothing here asserts vendor contexts or matrix expansion. Comparing
gitea.repository to github.repository only proves an alias lookup, and the
matrix check could not tell a lost leg from a passing run — a suite that stays
green when expansion drops a job is worse than no check at all.

The schedule only starts firing once this reaches main. The forge detects
scheduled workflows on pushes to the default branch
(services/actions/notifier_helper.go:120), so on develop the cron is inert
and the pull request trigger does the work until the next release merge.

Cache actions stay on v3 for the same reason as the artifact ones: the runner
implements the v1 _apis/artifactcache API, not the newer backend.

The compatibility suite only ran when someone clicked `workflow_dispatch`, and it covered two features. It now runs nightly at 03:17, on pull requests that touch the workflow or cache adapters, and still on demand. New coverage: - cache round-trip through the runner's own cache API (`actions/cache/save` and `restore` on v3, with `fail-on-cache-miss`); - job outputs consumed by a dependent job; - expression functions — `hashFiles` runs the bundled `hash-files.js` through the job image's node, `format` and `contains` go through the evaluator. Nothing here asserts vendor contexts or matrix expansion. Comparing `gitea.repository` to `github.repository` only proves an alias lookup, and the matrix check could not tell a lost leg from a passing run — a suite that stays green when expansion drops a job is worse than no check at all. The schedule only starts firing once this reaches `main`. The forge detects scheduled workflows on pushes to the default branch (`services/actions/notifier_helper.go:120`), so on `develop` the cron is inert and the pull request trigger does the work until the next release merge. Cache actions stay on v3 for the same reason as the artifact ones: the runner implements the v1 `_apis/artifactcache` API, not the newer backend.
day01 added 1 commit 2026-08-03 13:11:14 +00:00
		The suite only ran when someone clicked it, and covered two features. It now
runs nightly, on pull requests that touch the workflow or cache adapters, and
still on demand.

New coverage: cache round-trip through the runner's cache API, matrix
expansion, job outputs consumed across jobs, expression functions including
hashFiles, and the vendor contexts a SynCode control plane exposes.
	
day01 added 1 commit 2026-08-03 13:24:32 +00:00
		The SynCode variable surface is deferred until the Gitea rewrite settles, so
the suite must not demand it. Issue #19 tracks it.
	
day01 added 1 commit 2026-08-03 13:28:11 +00:00
		The check only proved that the runner substitutes an alias from a lookup
table. Nothing there fails in a way the rest of the suite would miss.
	
day01 added 1 commit 2026-08-03 13:32:18 +00:00
		It asserted that two keys of one include entry land in the same leg, but
never that both legs ran. A silently lost leg stayed green.
	
day01 merged commit 19f2f7569f into %!s() 2026-08-03 13:34:08 +00:00
day01 deleted branch ci/schedule-compatibility 2026-08-03 13:34:12 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: syncode/runner#13