Conversation
CI has failed on every run that reached the sibling build since the
Origin crates adopted `workspace = true` inheritance, and the failure
reads as the pull request's own breakage. It is neither upstream churn
nor the PR:
setup-workspace checks the siblings out under `.ci-sources/`, inside the
Lite workspace. Cargo resolves a path dependency's inherited fields
against the root manifest of the workspace it considers that dependency
to be in — nested like that, Lite's root. `nodedb-array` asks its root
for `nodedb-wal`, Lite's root defines none, and `cargo metadata` dies
before a line of Lite compiles:
error inheriting `nodedb-wal` from workspace root manifest's
`workspace.dependencies.nodedb-wal`
Outside the workspace tree — the layout local development uses,
`../nodedb` — cargo walks up to the sibling's own root and the
inheritance resolves. actions/checkout rejects a `path:` outside
$GITHUB_WORKSPACE, so fetch the refs with git into $RUNNER_TEMP.
With that fixed, make the remaining failure mode legible and early:
- Parse both sibling workspaces after the patch table is written, so a
genuinely inconsistent Origin ref fails with an annotation naming the
ref, not a raw cargo error deep in the log.
- Run the same suites nightly on main. The `run-ci` label gate keeps
upstream churn out of PR runs, but then nothing reports it at all: the
first run to see a broken Origin workspace is the next PR a maintainer
labels.
EnRaiha
force-pushed
the
fix/ci-sibling-preflight
branch
from
September 22, 2026 13:27
bcd6e03 to
c129a44
Compare
Two failures keep the suite from running at all. The interop setup builds the Origin workspace with --all-features; rdkafka-sys compiles librdkafka from source and needs the libcurl and libsasl2 headers. Without them the setup script exits non-zero and nextest never runs — 0 of 1217 tests. Origin's test.yml has installed both since the interop suite landed; Lite's copy was missing them. The dependency audit then fails on three advisory ignores the sibling tree needs: loro-internal pulls im and its support crates, all archived upstream with no fixed version. Origin's deny.toml already carries the three with review-by dates; Lite's did not. The advisory gate is copied from Origin's scripts/ci so the review-by dates stay enforced on both sides.
Contributor
Author
|
Pushed one more commit onto this branch: the three fixes that keep the suite from running at all.
Closes #22 (the suite aborting before running) and #23 (the audit ignores). Nothing else moved: the sibling-checkout fix from the original commit is unchanged, and the PR still needs a maintainer's |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
CI fails on every run that reaches the sibling build, and the failure reads as the PR's own breakage. It is neither upstream churn nor the PR.
setup-workspacechecks the siblings out under.ci-sources/, inside the Lite workspace. Cargo resolves a path dependency'sworkspace = trueinheritance against the root manifest of the workspace it considers that dependency to be in — nested like that, Lite's root.nodedb-arrayasks its root fornodedb-wal, Lite's root defines none, andcargo metadatadies before a line of Lite compiles:Reproduced on current
main(Origin4664c821, consistent by every other measure), so it is structural, not upstream churn. Cargo's own trace names the root it used:Fix
Fetch the siblings into
$RUNNER_TEMP/ci-sources— outside the workspace tree, the layout local development uses (../nodedb). Cargo then walks up to the sibling's own root and the inheritance resolves.actions/checkoutrejects apath:outside$GITHUB_WORKSPACE, so the refs are fetched with git; fetching a ref covers branches, tags and SHAs alike.scripts/ensure-origin.shneeds no change: it locates the Origin root throughcargo metadata, not a path literal.Also in this PR
schedule— therun-cilabel gate keeps upstream churn out of PR runs, but then nothing reports it at all: the first run to see a broken Origin workspace is the next PR a maintainer labels.CI status on this branch
Run: https://github.com/NodeDB-Lab/nodedb-lite/actions/runs/35733597625
The sibling setup passes. Every step that compiles or checks the workspace is green:
Three failures remain. All three are pre-existing on
mainand unrelated to this diff — CI never reached them before because it died insetup-workspace.Evidence for the three remaining failures
1.
cargo deny— unmaintained advisoriesJob: Test Suite / Lint & Check → Dependency audit
loro, pulled bynodedb-array, brings inim→bitmaps/sized-chunks. All three advisories postdate the config, so this fails on a calendar rather than on a commit. Fix: adeny.toml[advisories]ignore with a rationale, or an upstreamlorobump that dropsim.2. Interop build —
libcurl4-openssl-devmissingJob: Test Suite / Test → Run tests
ensure-origin.shbuilds Origin with--all-features;rdkafka-syscompiles librdkafka from source and needs the libcurl headers.test.yml's "Install system deps" installs cmake, clang, libclang-dev, pkg-config, protobuf-compiler, perl — notlibcurl4-openssl-dev. Because the setup script exits non-zero, nextest aborts before running any of the 1217 tests: one missing header hides the whole suite.Fix: add
libcurl4-openssl-devto the apt list.libsasl2-dev,libssl-dev,zlib1g-devmay also be wanted by the same build — unconfirmed until curl resolves.3. WASM node tests —
array::create_put_slice_roundtripFAILJob: WASM → Run WASM node tests
Source:
nodedb-lite-wasm/tests/array.rs:69A wall-clock call (
std::time) onwasm32-unknown-unknown, where std has no time source. A genuine Lite-vs-current-Origin failure in the wasm path, not a path issue. Fix: gate or replace theSystemTime/Instantcaller for wasm.Evidence for the fix itself
nodedb@4664c821+pagedb@e4a6902cargo metadataexit 0, 602 packages,nodedb-wal/nodedb-array/pagedball resolve from$RUNNER_TEMP/ci-sourcesactionlintonci.yml,test.yml,wasm.ymlNotes