.gitbay/ci.yml jobs took steps, schedule and tags, with no way to say a
job only matters for some paths. Every branch push queued every push job, so a
one-line prose fix ran the full e2e suite.
Jobs now take paths and paths-ignore. A job runs when paths is empty or a
changed file matches one; it is skipped only when every changed file matches a
paths-ignore pattern, so a commit touching one ignored file and one source
file still builds.
Matching is not bare path.Match: Go's * does not cross /, so
.gitbay/wiki/** would match .gitbay/wiki/Home.md and silently miss
.gitbay/wiki/sub/Page.md. A trailing /** is a prefix match over the
directory at any depth; everything else goes to path.Match.
Filters fail open. A new branch with no diff base, a DiffFiles error, or a job
declaring neither key runs the job. A filter that skips a build when it cannot
tell is worse than no filter, because nothing surfaces that CI stopped running.
Prerequisite for #170, where wiki pages become ordinary commits on the default branch.
Design: docs/specs/2026-09-04-wiki-in-repo-design.md.
Closes #169