Add nightly check against known semantic convention repos and examples - #1672
Add nightly check against known semantic convention repos and examples#1672lmolkova wants to merge 3 commits into
Conversation
Runs the weaver built from this working tree against the weaver-driven CI checks of the repos that consume it, so breaking changes surface before a release. Repos and checks are declared in downstream-check.yaml, used by both `just downstream-check` and the nightly workflow.
Pull request dashboard statusWaiting on reviewers · refreshed 2026-08-05 19:38 UTC Review the latest changes. Status above doesn't look right?
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #1672 +/- ##
=======================================
- Coverage 81.4% 81.4% -0.1%
=======================================
Files 131 131
Lines 11714 11714
=======================================
- Hits 9539 9538 -1
- Misses 2175 2176 +1 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
The downstream check drives sh commands, so it is unix-only in practice, but it still has to compile everywhere: gate the process-group handling on unix and fall back to killing just the spawned child.
There was a problem hiding this comment.
Pull request overview
Adds a nightly (and on-demand) “downstream check” that builds Weaver from this repo and runs a curated set of Weaver-driven checks in downstream repositories, so breaking changes are detected before release.
Changes:
- Introduces
cargo xtask downstream-checkto clone downstream repos and execute configured checks with timeouts and a summary. - Adds
downstream-check.yamlas the single source of truth for downstream repos/refs/check commands (shared by localjustand the nightly workflow). - Adds a
Downstream CheckGitHub Actions workflow plus contributing docs and ajust downstream-checkentry point.
Reviewed changes
Copilot reviewed 7 out of 8 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
justfile |
Adds a just downstream-check wrapper over the new xtask. |
downstream-check.yaml |
Declares the downstream repos and the weaver-driven checks to run in each. |
crates/xtask/src/main.rs |
Wires a new downstream-check subcommand into xtask dispatch and help text. |
crates/xtask/src/downstream.rs |
Implements cloning, selection, execution, timeouts, and reporting for downstream checks. |
crates/xtask/Cargo.toml |
Adds serde/serde_yaml deps needed to parse the YAML config. |
CONTRIBUTING.md |
Documents how to run downstream checks locally and what the nightly does. |
Cargo.lock |
Locks new serde/serde_yaml transitive dependencies for xtask. |
.github/workflows/downstream-check.yml |
Adds the nightly/dispatch workflow and a tracking-issue reporter job. |
Suppressed comments (2)
crates/xtask/src/downstream.rs:446
- On timeout, this unconditionally calls
kill_group(...)(Unix-only) and relies on the externalkillcommand. To keepxtaskportable enough to compile on Windows/macOS, gate the Unix path and fall back tochild.kill()on non-Unix platforms.
}
if Instant::now() >= deadline {
eprintln!("!!! timed out, killing the check");
kill_check(&mut child);
crates/xtask/src/downstream.rs:456
kill_groupis inherently Unix-specific (spawns thekillcommand and targets a process group). Once the timeout path is cfg-gated, this function should also be#[cfg(unix)]so the crate still compiles on non-Unix platforms.
/// Signals the whole process group of a check, so anything it spawned dies too.
#[cfg(all(unix, not(tarpaulin_include)))]
fn kill_check(child: &mut Child) {
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Build ui/dist in the workflow (the weaver binary embeds it), shell-quote the weaver path substituted into the check commands, keep multi-line errors from breaking the job summary table, and fail the live-check example if the admin endpoint never comes up.
Runs the weaver built from this working tree against the weaver-driven CI checks of the repos that consume it, so breaking changes surface before a release. Repos and checks are declared in downstream-check.yaml, used by both
just downstream-checkand the nightly workflow.