diff --git a/crates/ledger-cli/tests/update.rs b/crates/ledger-cli/tests/update.rs index 8410e57..8aaafb4 100644 --- a/crates/ledger-cli/tests/update.rs +++ b/crates/ledger-cli/tests/update.rs @@ -917,7 +917,11 @@ fn the_host_stages_a_daily_update_and_the_next_start_applies_it() { wait_for(10, || sha256(&home.program()) == sha256(&next)), "the staged update wasn't applied" ); - assert!(wait_for(10, || !home.updates().join("staged").exists())); + // Whether `staged/` is gone is not asserted: the test's "newer" + // program is this binary with bytes appended, so its compiled version + // never catches up with the feed's, and the new host's next look (the + // knob makes it soon) may stage 9.0.0 again. The kept copy below and + // the program in place are what the apply means. assert!( home.updates() .join("previous") diff --git a/crates/ledger-store/tests/root.rs b/crates/ledger-store/tests/root.rs index 079fb9f..6d0b58b 100644 --- a/crates/ledger-store/tests/root.rs +++ b/crates/ledger-store/tests/root.rs @@ -189,7 +189,11 @@ fn the_root_is_found_without_the_environment() { fn setup_makes_a_private_root_and_its_folders() { let home = tmp("setup"); let (root, report) = Root::setup(home.path(), None, None).unwrap(); - assert_eq!(root.path(), default_root(home.path())); + // The root as the system spells it (macOS: /tmp is /private/tmp). + assert_eq!( + root.path(), + default_root(&std::fs::canonicalize(home.path()).unwrap()) + ); assert!(report.created && !report.tightened && !report.recorded); assert_eq!(mode(root.path()), 0o700); for sub in ["books", "run", "legacy"] { @@ -225,7 +229,10 @@ fn setup_records_a_root_chosen_elsewhere_and_forgets_it_when_back_to_default() { let fresh = tmp("setup-xdg"); let xdg = fresh.path().join("xdg"); let (root, report) = Root::setup(fresh.path(), None, Some(&xdg)).unwrap(); - assert_eq!(root.path(), xdg.join("wanderbooks")); + assert_eq!( + root.path(), + std::fs::canonicalize(&xdg).unwrap().join("wanderbooks") + ); assert!(report.recorded); assert_eq!( Root::find_in(fresh.path(), None).unwrap().path(), diff --git a/plan/STATUS.md b/plan/STATUS.md index 288e925..3b26abb 100644 --- a/plan/STATUS.md +++ b/plan/STATUS.md @@ -19,6 +19,25 @@ owner's), **P12** (max testing, after P11c), and P10's re-audit itself and red until they land. Every push is watched; a docs-only push is never made alone (it cancels the running gate). +**2026-10-30, early.** The Linux gate on `main` is green again +(`659a4266`, `cc6bb25d`) after a day of fixes the waves' merges owed: +P8's gate on the spec script's package export, P8's event +`period.attested` no longer an "unknown" example, the eval's close +step, P5's demo-books test out of the server-only build, the update +tests' races with the host's staging (and their messages: programs +compared by hash, never by bytes, which had cost GitHub a whole step +log). macOS, in its own workflow now so its log is readable at once, +went from "the server didn't say ready" to one store test: the harness +spelled Linux's data folder and joined words without quoting (a macOS +root has a space), BSD `script` and bash 3.2 differ, `/tmp` is +`/private/tmp`, and a deep root's sockets needed a short private link +under `/tmp` (a product fix, `root.rs::short_link_for`); setup now +reads the default root canonically (a product fix too). P11c's branch +compiles and runs the suite on Windows; its Linux gate is green; the +Windows job's remaining failures were tests of other units spelled for +Unix (the backup remote check, a books home's listing), fixed on +`main`. The two-user HTTP door on Windows is its last unverified piece. + **Who builds.** The owner chose (the question tool) that this planning session is the EM and launches Sonnet subagents in parallel worktrees,