Complete first release candidate audit (#107)
Some checks failed
API and SemVer surface / api-surface (push) Failing after 1m34s
Native code generation / deterministic (push) Has been cancelled
Concurrency and resource soak audit / soak (push) Has been cancelled
Documentation / documentation (push) Has been cancelled
performance evidence / audit (push) Has been cancelled
First release candidate / non-fuzz-release-gate (push) Has been cancelled
Release platform and feature matrix / audit (push) Has been cancelled
Release platform and feature matrix / matrix (false, linux-stable-minimal, x86_64-unknown-linux-gnu, stable) (push) Has been cancelled
Release platform and feature matrix / matrix (false, macos-stable-portable, x86_64-apple-darwin, stable) (push) Has been cancelled
Release platform and feature matrix / matrix (false, windows-stable-portable, x86_64-pc-windows-gnu, stable) (push) Has been cancelled
Release platform and feature matrix / matrix (true, linux-msrv-portable, x86_64-unknown-linux-gnu, 1.96.0) (push) Has been cancelled
Release platform and feature matrix / matrix (true, linux-stable-default, x86_64-unknown-linux-gnu, stable) (push) Has been cancelled
Release platform and feature matrix / matrix (true, linux-stable-features, x86_64-unknown-linux-gnu, stable) (push) Has been cancelled
Release platform and feature matrix / matrix (true, linux-stable-release-surface, x86_64-unknown-linux-gnu, stable) (push) Has been cancelled
Dependency and supply-chain audit / audit (push) Has been cancelled
Native release artifact audit / audit (push) Has been cancelled
Imaging and meshing gate / native (push) Failing after 53s
JPEG 2000 feature / linux (push) Successful in 2m49s
Native Rust workspace compile / compile (push) Failing after 59s
Skia feature / linux (push) Has been cancelled

This commit is contained in:
2026-08-12 14:44:28 +00:00
parent dceb394378
commit c9a1170a27
140 changed files with 82175 additions and 27179 deletions

View File

@@ -221,9 +221,17 @@ enum Stage {
Logout,
}
#[derive(Clone, Copy, Debug, Serialize)]
#[serde(rename_all = "kebab-case")]
enum EvidenceMode {
Fake,
OpenSimLive,
}
#[derive(Serialize)]
struct EvidenceRecord {
schema: u8,
mode: EvidenceMode,
sequence: u8,
recorded_unix_seconds: u64,
program_version: &'static str,
@@ -235,15 +243,17 @@ struct EvidenceRecord {
struct EvidenceWriter {
writer: BufWriter<File>,
mode: EvidenceMode,
sequence: u8,
forbidden: Vec<String>,
}
impl EvidenceWriter {
fn create(path: &Path, forbidden: Vec<String>) -> Result<Self, SmokeError> {
fn create(path: &Path, mode: EvidenceMode, forbidden: Vec<String>) -> Result<Self, SmokeError> {
let file = OpenOptions::new().write(true).create_new(true).open(path)?;
Ok(Self {
writer: BufWriter::new(file),
mode,
sequence: 0,
forbidden: forbidden
.into_iter()
@@ -276,6 +286,7 @@ impl EvidenceWriter {
.ok_or(SmokeError::Evidence("too many evidence records"))?;
let line = serde_json::to_string(&EvidenceRecord {
schema: 1,
mode: self.mode,
sequence: self.sequence,
recorded_unix_seconds: SystemTime::now()
.duration_since(UNIX_EPOCH)
@@ -1128,7 +1139,7 @@ async fn run(cli: Cli) -> Result<(), SmokeError> {
"live permissions and confirmations cannot be combined with --fake",
));
}
let mut writer = EvidenceWriter::create(evidence, Vec::new())?;
let mut writer = EvidenceWriter::create(evidence, EvidenceMode::Fake, Vec::new())?;
let mut backend = FakeSmokeBackend::new();
run_smoke(&mut backend, &mut writer).await?;
writer.finish()?;
@@ -1159,7 +1170,11 @@ async fn run(cli: Cli) -> Result<(), SmokeError> {
));
}
let config = SmokeConfig::load()?;
let mut writer = EvidenceWriter::create(evidence, config.forbidden_values())?;
let mut writer = EvidenceWriter::create(
evidence,
EvidenceMode::OpenSimLive,
config.forbidden_values(),
)?;
let mut backend = LiveSmokeBackend::new(config, Duration::from_secs(cli.timeout_seconds));
run_smoke(&mut backend, &mut writer).await?;
writer.finish()

View File

@@ -115,6 +115,7 @@ fn fake_smoke_records_every_sanitized_stage_without_skips_or_credentials() {
);
assert!(records.iter().all(|record| record["status"] == "ok"));
assert!(records.iter().all(|record| record["schema"] == 1));
assert!(records.iter().all(|record| record["mode"] == "fake"));
assert!(
records
.iter()