Nothing modelled workflow triggers: the forge decided when a run started and
the runner never asked. The control plane has to decide, so on: becomes part
of what a workflow says.
Deciding
An event states its kind, its branch and what it touched. A trigger admits it by
branch and by path. An exclusion always wins, which is what makes paths-ignore mean what it says. A workflow that declares nothing is never
triggered — saying nothing is not saying everything. An event that touched no
path cannot satisfy a path filter.
Glob support is deliberately partial: literals, * within a segment and **
across segments. Character classes and the rest are refused when the workflow is
read, rather than matched by accident. An event this control plane cannot act on
is refused the same way.
Verification
cargo fmt --check, cargo clippy --workspace --all-targets --all-features -- -D warnings, cargo test --workspace --all-targets --all-features, check-architecture.sh, check-rust-loc.sh. Eight tests on the matching rules and three on reading on:
in each of its three shapes.
Next
The control plane's trigger path takes an event and only queues the runs whose
workflow admits it. Reading workflow files from a commit, and the forge event
feed that produces the events, are the two pieces after that.
Nothing modelled workflow triggers: the forge decided when a run started and
the runner never asked. The control plane has to decide, so `on:` becomes part
of what a workflow says.
## Deciding
An event states its kind, its branch and what it touched. A trigger admits it by
branch and by path. An exclusion always wins, which is what makes
`paths-ignore` mean what it says. A workflow that declares nothing is never
triggered — saying nothing is not saying everything. An event that touched no
path cannot satisfy a path filter.
Glob support is deliberately partial: literals, `*` within a segment and `**`
across segments. Character classes and the rest are refused when the workflow is
read, rather than matched by accident. An event this control plane cannot act on
is refused the same way.
## Verification
`cargo fmt --check`, `cargo clippy --workspace --all-targets --all-features -- -D warnings`,
`cargo test --workspace --all-targets --all-features`, `check-architecture.sh`,
`check-rust-loc.sh`. Eight tests on the matching rules and three on reading `on:`
in each of its three shapes.
## Next
The control plane's trigger path takes an event and only queues the runs whose
workflow admits it. Reading workflow files from a commit, and the forge event
feed that produces the events, are the two pieces after that.
Nothing modelled workflow triggers, because the forge decided when to start a
run and the runner never asked. The control plane has to decide instead: an
event states its kind, its branch and what it touched, and a trigger admits it
by branch and path.
An exclusion always wins, a workflow that says nothing is never triggered, an
event that touched nothing cannot satisfy a path filter, and glob syntax this
compiler does not implement is refused rather than matched by accident.
The reader dropped 'on:' because the forge decided when a run started. It now
becomes typed triggers: a single event, a list, or a mapping with branch and
path filters. An event this control plane cannot act on is refused when the
workflow is read, rather than read as a workflow that triggers on nothing.
day01
merged commit e7fbcebb81 into %!s()2026-08-06 07:22:01 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Nothing modelled workflow triggers: the forge decided when a run started and
the runner never asked. The control plane has to decide, so
on:becomes partof what a workflow says.
Deciding
An event states its kind, its branch and what it touched. A trigger admits it by
branch and by path. An exclusion always wins, which is what makes
paths-ignoremean what it says. A workflow that declares nothing is nevertriggered — saying nothing is not saying everything. An event that touched no
path cannot satisfy a path filter.
Glob support is deliberately partial: literals,
*within a segment and**across segments. Character classes and the rest are refused when the workflow is
read, rather than matched by accident. An event this control plane cannot act on
is refused the same way.
Verification
cargo fmt --check,cargo clippy --workspace --all-targets --all-features -- -D warnings,cargo test --workspace --all-targets --all-features,check-architecture.sh,check-rust-loc.sh. Eight tests on the matching rules and three on readingon:in each of its three shapes.
Next
The control plane's trigger path takes an event and only queues the runs whose
workflow admits it. Reading workflow files from a commit, and the forge event
feed that produces the events, are the two pieces after that.