Integrate release recovery, semantic review, coverage and Windows packaging

This commit is contained in:
Codex
2026-09-06 16:31:55 -07:00
parent c091f80e6e
commit 2b2d2bc18b
174 changed files with 27635 additions and 127 deletions
+1
View File
@@ -0,0 +1 @@
include!("../../build/windows_manifest.rs");
+18 -7
View File
@@ -487,9 +487,12 @@ async fn oversized_source_and_json_are_rejected_without_stalling_the_catalog() {
.expect("catalog stalled by rejected import")
.unwrap();
assert_eq!(read.status(), StatusCode::OK);
let rejected = tokio::time::timeout(std::time::Duration::from_secs(5), upload)
// Completion includes transport/decoding while other tests may saturate
// the two-core runner. Catalog responsiveness is asserted separately
// above; this watchdog only prevents a hung request from hanging CI.
let rejected = tokio::time::timeout(std::time::Duration::from_secs(30), upload)
.await
.expect("oversized import not rejected promptly")
.expect("oversized import did not complete within the test watchdog")
.unwrap();
assert_eq!(rejected.status(), StatusCode::UNPROCESSABLE_ENTITY);
assert_eq!(
@@ -500,12 +503,14 @@ async fn oversized_source_and_json_are_rejected_without_stalling_the_catalog() {
}
// The same budgets apply to replacement and non-mutating candidate checks;
// neither endpoint may run expensive structural validation before admission.
// Their completion watchdog is not a catalog latency measurement: real
// JSON encoding/decoding can contend with accepted deep-graph preparation.
for (suffix, media, body) in [
("source", "text/plain", source.as_bytes().to_vec()),
("model", "application/json", native_json),
] {
let rejected = tokio::time::timeout(
std::time::Duration::from_secs(5),
std::time::Duration::from_secs(30),
server
.client
.put(server.url(&format!("/projects/{existing}/{suffix}")))
@@ -528,7 +533,7 @@ async fn oversized_source_and_json_are_rejected_without_stalling_the_catalog() {
json!({"format":"json", "model":model}),
] {
let checked = tokio::time::timeout(
std::time::Duration::from_secs(5),
std::time::Duration::from_secs(30),
server
.client
.post(server.url(&format!("/projects/{existing}/validation")))
@@ -568,7 +573,10 @@ async fn accepted_slow_source_does_not_lock_catalog_and_loses_to_a_newer_http_re
);
// This is within all admission budgets. A nested engineering graph forces
// real validation work after the source route's initial revision snapshot.
for i in 1..2_000 {
// Keep this concurrency fixture below the service's 30-second deadline:
// 2,000 nested activities returned a legitimate 504 on the two-core runner.
// The overlap assertion below prevents shrinking it into a sequential test.
for i in 1..1_000 {
source.push_str(&format!(
"oa_activity a{i} \"Activity {i}\" {{ parent @a{}; }}\n",
i - 1
@@ -614,9 +622,12 @@ async fn accepted_slow_source_does_not_lock_catalog_and_loses_to_a_newer_http_re
.expect("unrelated preparation held the commit lock")
.unwrap();
assert_eq!(winner.status(), StatusCode::OK);
let loser = tokio::time::timeout(std::time::Duration::from_secs(25), proposed)
// The two-second read/PATCH bounds above test responsiveness and lock
// ownership. Finishing the deliberately expensive admitted candidate is
// a separate watchdog, not a latency promise under parallel CPU contention.
let loser = tokio::time::timeout(std::time::Duration::from_secs(45), proposed)
.await
.unwrap()
.expect("admitted candidate did not complete within the test watchdog")
.unwrap();
assert_eq!(loser.status(), StatusCode::PRECONDITION_FAILED);
let failure: Value = loser.json().await.unwrap();