diff --git a/crates/rds-core/tests/layering.rs b/crates/rds-core/tests/layering.rs index 97972e6c..cdf02b0f 100644 --- a/crates/rds-core/tests/layering.rs +++ b/crates/rds-core/tests/layering.rs @@ -23,8 +23,10 @@ const FORBIDDEN_DEPS: &[&str] = &[ #[test] fn rds_core_manifest_has_no_runtime_or_backend_dependencies() { - let manifest = std::fs::read_to_string(concat!(env!("CARGO_MANIFEST_DIR"), "/Cargo.toml")) - .expect("Cargo.toml readable"); + // Cargo may reuse this test artifact after an isolated source checkout + // has been removed. Embed the manifest being compiled, rather than a + // runtime dependency on that checkout's absolute path. + let manifest = include_str!("../Cargo.toml"); let deps = manifest .split("[dependencies]") diff --git a/crates/rds-observe/tests/pipeline.rs b/crates/rds-observe/tests/pipeline.rs index 5232b089..86ba6f2e 100644 --- a/crates/rds-observe/tests/pipeline.rs +++ b/crates/rds-observe/tests/pipeline.rs @@ -9,7 +9,7 @@ mod admin; use std::fs; use std::io::Write as _; -use std::path::{Path, PathBuf}; +use std::path::PathBuf; use std::process::{Command, Output}; use std::time::{Duration, Instant, SystemTime, UNIX_EPOCH}; @@ -56,7 +56,14 @@ impl Stack { .unwrap(); Self { root, - config: Path::new(env!("CARGO_MANIFEST_DIR")).join("../../ops/observability"), + // This fixture reads current on-disk Compose files. Resolve the + // checkout Cargo is running now, not a deleted compilation path + // retained in a shared target directory. + config: PathBuf::from( + std::env::var_os("CARGO_MANIFEST_DIR") + .expect("run the infrastructure fixture through cargo test"), + ) + .join("../../ops/observability"), project: format!("rds-observe-{suffix}"), password, } diff --git a/docs/continuation-plan.md b/docs/continuation-plan.md index 642236dc..331954a1 100644 --- a/docs/continuation-plan.md +++ b/docs/continuation-plan.md @@ -31,6 +31,7 @@ older revisions independently; neither is silently assumed to equal main. | S5 | Input ACK, payload receipt, decoded-frame submission and physical pixels prove different things. | Native diagnostics, visual probe, bench reports | Exact-build typing/Backspace count and causal submission evidence; loss and unanswered probes included | | S6 | Optional platform/media modules remain real stubs. Directory sync, native serving on macOS/Wayland, audio and automatic GDS grant issuance are not implemented. | Backend probe files, audio crate, sync engine, GDS policy adapters | Explicit later implementation/qualification tasks; never mark these complete from X11 or loopback results | | S7 | Owned relay drain priority was reused as RTT, making progress budgets effectively infinite. | Noq path policy | Keep real RTT separate from ranking; negative deadline regression and positive engine/drain qualification | +| S8 | A compiled architecture test retained an absolute source-checkout filename, making shared-cache verification depend on a removed checkout. | Core layering test; infrastructure fixture path resolution | Embed source-only assertions; resolve required live fixture files from the runtime checkout; preserve the original assertions | ## Wave A — interactive recovery correctness (W3.6, W6.8) @@ -98,6 +99,10 @@ both peers, with truthful measured recovery and no unrequested process restart. 5. Confirm main OID, consumed gitlink, installed artifact digest, running process identity and effective endpoint/policy config independently on each device. A clean checkout alone is not complete synchronization. +6. Verify reusable test artifacts independently of an old temporary checkout. + Embedded fixture data belongs to the compiled source; external fixture files + must resolve the actual running checkout. Serialize qualification processes + that share one Cargo target directory, including their test/doctest phases. Exit: published implementation, estate consumption, runtime receipts and current documentation agree; any remaining mismatch has its owning task and verifier. diff --git a/docs/reports/rds-relocatable-verification-20261007.md b/docs/reports/rds-relocatable-verification-20261007.md new file mode 100644 index 00000000..c2f17fc3 --- /dev/null +++ b/docs/reports/rds-relocatable-verification-20261007.md @@ -0,0 +1,27 @@ +# Verification fixtures across isolated checkouts — 2026-10-07 + +The core layering test embedded `CARGO_MANIFEST_DIR` as an absolute runtime +filename. Reusing its compiled artifact after that checkout was removed failed +with `Cargo.toml readable: NotFound`; this did not establish an invalid core +dependency graph. The failing verification is retained separately. + +Embed the tested manifest with `include_str!("../Cargo.toml")`. The dependency +assertions remain mandatory, and the compiler tracks the included input. The +existing test passes after the correction. Its actual compiled artifact also +passes when invoked from an empty directory with a nonexistent runtime +`CARGO_MANIFEST_DIR`, without reading a source checkout. + +The explicit Linux observability infrastructure fixture needs live Compose +files instead. Resolve Cargo's runtime manifest directory there, rather than +a removed compilation path. This changes fixture location handling; it does +not claim a new Docker/pipeline qualification. Full platform CI remains the +broader verifier. + +This is a verification-lifecycle correction with no transport or wire change. +The [standby measurements](bench-standby-20261007.md) remain scoped transport +evidence; they do not measure this fixture behavior or close a product gate. +[Rust's `include_str!` documentation](https://doc.rust-lang.org/std/macro.include_str.html) +defines compile-time file inclusion relative to the source file. Cargo's +[environment contract](https://doc.rust-lang.org/cargo/reference/environment-variables.html) +distinguishes values expanded during compilation from the running test's +environment. Both mechanisms predate the requested research boundary.