Skip to content

config_env tests: fresh temp dir per call (card 4c820b46) - #5242

Merged
joelteply merged 1 commit into
canaryfrom
fable/config-env-fresh-temp
Oct 21, 2026
Merged

joelteply merged 1 commit into
canaryfrom
fable/config-env-fresh-temp

Conversation

@joelteply

Copy link
Copy Markdown
Contributor

tmp_config named temp paths with a per-process counter that restarts at 0, so a config.env left by an earlier run was read back and the "missing file" test failed on dev machines (M5, 2026-10-21: 9,004 passed, this 1 failed). CI runners start clean, so it never failed there. Now each call gets a fresh empty dir from tempfile::Builder.

Evidence: local cargo test on #5228 7bcdb2b, failure at config_env.rs:316. CI compiles this change.

🤖 Generated with Claude Code

https://claude.ai/code/session_01LoTjvf5j3Ez13g6k8mRkFo

…ast run left behind

Card 4c820b46. tmp_config numbered paths with a per-process counter that
restarts at 0, so continuum-config-env-test-0/config.env from an earlier run
was read back: read_all_on_a_missing_file_is_empty_not_a_panic failed locally
(M5, 2026-10-21, cargo test on #5228 7bcdb2b: 9004 passed, this 1 failed)
while CI's clean runners passed. tempfile::Builder gives an empty, unique dir.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LoTjvf5j3Ez13g6k8mRkFo
@joelteply

Copy link
Copy Markdown
Contributor Author

PASS #5242 at f9a187a, Cormac. Claim checked: each tmp_config call is a fresh empty dir, so a file left by an earlier run can't be read back. tempfile::Builder::tempdir() is unique per call, which the restarting counter was not. .keep() leaves one small dir per call to the OS temp sweep; acceptable for test fixtures.

@joelteply
joelteply merged commit c2fbdd9 into canary Oct 21, 2026
9 checks passed
@joelteply
joelteply deleted the fable/config-env-fresh-temp branch October 21, 2026 06:30
joelteply added a commit that referenced this pull request Oct 21, 2026
…e the monolith (redo of #5194 on post-split canary) (#5249)

* refactor(core): create continuum-base, the floor crate, and git mv the leaf modules into it

Card a31492cb, redone on post-split canary (supersedes #5194, whose branch cannot rebase
over the many files canary has since split). New crate core/continuum-base joins the
workspace and continuum-core depends on it. Moved with git mv, whole module trees:
time (mod + age), config_env, secrets, id_resolve, fs_portable (mod + replace),
shell_portable, audio_constants. They have zero Continuum dependencies, so none of their
crate:: paths needed repair. The probe!, time_sync! and time_probe! macros (pure tracing)
move out of routing/macros.rs into continuum-base/src/probe.rs, carrying canary's
probe!(target: ..., class = ...) arm; stack! stays because it needs continuum-core's
routing. The root `pub use audio_constants::*` is deleted: users name the owner.

fs_portable's publication-fence fault hook moves to fs_portable::fault_injection behind a
test-fixtures feature that continuum-core's test-fixtures enables, so continuum-core's
spill test no longer reaches into a private test module. config_env keeps canary's own
temp-dir fix (#5242).

References are rewritten in the next commit; this one is the move.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LoTjvf5j3Ez13g6k8mRkFo

* refactor(core): rewrite every reference to the moved modules and probe macros to name continuum-base

Mechanical rewrite by script, no re-exports left behind: crate::/continuum_core::/$crate::
time, config_env, secrets, id_resolve, fs_portable, shell_portable, audio_constants and
the probe!, time_sync!, time_probe! macros become continuum_base::... in continuum-core's
src, tests, benches and examples (1,779 substitutions across 538 files: ~451 module
references and ~1,327 macro call sites, matching #5194's count). The macros.rs doc example
now imports probe from its owner.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LoTjvf5j3Ez13g6k8mRkFo

* fix(hygiene): split crates stay under every gate; wall_clock follows time to continuum-base

source-hygiene audited only continuum-core/src, so code split into a crate would silently
leave every ratchet (unwraps, file size, wall clock, layer discipline). audited_files() now
covers continuum-core plus each SPLIT_CRATES entry, with the crate name as a path prefix so
totals stay continuous across the cut and per-path rules stay unambiguous; a listed crate
with no src fails loudly instead of auditing nothing. wall_clock's owner path and bare
wrapper spellings follow time to continuum-base. Same change as #5194's 8d69153, applied
cleanly onto canary's current scanner.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LoTjvf5j3Ez13g6k8mRkFo

* fix(base): Windows dependency for fs_portable; binding doc path follows the moved module

continuum-base's fs_portable calls MoveFileExW on Windows, which continuum-core declares
and the new crate did not (windows-msvc would fail with E0433 windows_sys, as #5194's CI
did). Declared with only the two features it uses. KeysSetResult.ts changes because its
Rust doc comment now names continuum_base::secrets (ts-rs copies doc comments).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LoTjvf5j3Ez13g6k8mRkFo

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant