epic: the gate scopes to the change, runs heavy tests as their own stage, and reads as a list of guarantees #767
Labels
No labels
breaking
bug
documentation
enhancement
epic
good first issue
help wanted
refactoring
resolution/duplicate
resolution/invalid
resolution/wontfix
security
severity/critical
severity/high
severity/low
severity/medium
status/abandoned
status/blocked
status/needs-decision
status/needs-info
status/needs-verification
testing
upstream
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Depends on
#768 gate: run the formatter and Go linters behind golangci-lint
sixfold-space/madtea
#769 gate: split into scoped targets that fail closed when the diff exceeds their scope
sixfold-space/madtea
#770 gate: each check states what it proves and what it needs, and the skip flags become derived
sixfold-space/madtea
#771 docs(adr): record the gate structure
sixfold-space/madtea
Reference
sixfold-space/madtea#767
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
The gate is one lump, and three problems follow.
It runs everything regardless of the change. A doc-only edit runs the full
suite. The one exception is a single hardcoded path that drops to two checks
when every changed file ends in
.md- a one-off, because there is nostructure to scope a run to a change.
The skip flags name what they turn off, not what the check does or why it
needs its environment.
--no-forge,--no-conformance, and--skip-remote-issuessay nothing about the forge integration test, the MCPschema conformance check, or the issue-state check behind them.
The heavy forge tests run in the default local gate, which needs the Incus
VM, while CI skips them with
--no-forge. That is backwards: the default runshould be fast, and heavy tests should run as their own stage. A contributor
with no VM cannot get a green default run, and CI - the side with the
infrastructure - does not run the forge tests at all, against #678.
Direction
what they touched: a doc target, a code target, a lint target. CI selects the
matching stage with path filters. There is no diff-detector.
inside them, and fails closed when the diff spills out, naming the target to
run instead. A scoped pass is a checked claim, not a silent subset. This
replaces the hardcoded
.mdshortcut.and on demand. They are already tagged
//go:build forge; the stage ownsthem, not the default. No contributor needs a VM for a green default run. This
is the forge half of #678 and #692.
every linter and its settings, so the config is the description. The
staticcheck export-data gap that #741 tracks is resolved in that work: either
the bundled staticcheck clears it, or staticcheck stays a pinned step beside
the config.
list of guarantees, not a set of negative flags.
Children
To file once this is agreed.
export-data gap resolved.
their scope, replacing the
.mdshortcut.become derived, not hand-set.
The forge stage is #678 and #692, not duplicated here.
Relates to #674 (the forge apparatus), #678 (forge tests in the gate and CI),
#766 (shellcheck on every script), #741 (staticcheck in the gate).