From c0549c9af63fa84cb5a55fad647a2e3c34b22efe Mon Sep 17 00:00:00 2001 From: Zack Jackson <25274700+ScriptedAlchemy@users.noreply.github.com> Date: Mon, 29 Jun 2026 19:32:03 +0200 Subject: [PATCH 01/10] chore: release v0.0.17 --- CHANGELOG.md | 6 ++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6c3f291f..a5e68dd0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.0.17](https://github.com/ScriptedAlchemy/tracedecay/compare/v0.0.16...v0.0.17) - 2026-06-29 + +### Other + +- Add TraceDecay registry, LCM, and transcript audit improvements ([#142](https://github.com/ScriptedAlchemy/tracedecay/pull/142)) + ## [0.0.16](https://github.com/ScriptedAlchemy/tracedecay/compare/v0.0.15...v0.0.16) - 2026-06-29 ### Fixed diff --git a/Cargo.lock b/Cargo.lock index 0da42026..f6f9ed2a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4499,7 +4499,7 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracedecay" -version = "0.0.16" +version = "0.0.17" dependencies = [ "amari-holographic", "axum 0.8.9", diff --git a/Cargo.toml b/Cargo.toml index 882063b9..8ed5446d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "tracedecay" -version = "0.0.16" +version = "0.0.17" edition = "2021" description = "Code intelligence tool that builds a semantic knowledge graph from Rust, Go, Java, Scala, TypeScript, Python, C, C++, Kotlin, C#, Swift, and many more codebases" license = "MIT" From 4ffe88bec566798883fe838ad1d26ddddeba8d04 Mon Sep 17 00:00:00 2001 From: ScriptedAlchemy Date: Mon, 29 Jun 2026 19:59:58 +0000 Subject: [PATCH 02/10] ci: cap Windows nextest concurrency --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 30dae4f4..66a78e3f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -159,7 +159,7 @@ jobs: "Windows Rust cache matched key: ${{ steps.windows-rust-cache.outputs.cache-matched-key }}" | Out-File -FilePath $env:GITHUB_STEP_SUMMARY -Encoding utf8 -Append - name: Run Windows tests - run: cargo nextest run --workspace --profile ci + run: cargo nextest run --workspace --profile ci --test-threads 16 - name: Save Windows Rust cache if: steps.windows-rust-cache.outputs.cache-hit != 'true' From bd11710d3880ade84af8a6f991bc2f6c5e227379 Mon Sep 17 00:00:00 2001 From: ScriptedAlchemy Date: Mon, 29 Jun 2026 20:35:35 +0000 Subject: [PATCH 03/10] ci: group Windows concurrency-sensitive tests --- .config/nextest.toml | 38 ++++++++++++++++++++++++++++++++++++++ .github/workflows/ci.yml | 2 +- 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/.config/nextest.toml b/.config/nextest.toml index 32e37a7c..4cdb6522 100644 --- a/.config/nextest.toml +++ b/.config/nextest.toml @@ -5,8 +5,46 @@ flaky-result = "fail" slow-timeout = { period = "10s", terminate-after = 36 } final-status-level = "slow" +[test-groups] +windows-dashboard-server = { max-threads = 4 } +windows-profile-storage = { max-threads = 1 } +windows-session-sqlite = { max-threads = 16 } +windows-process-heavy = { max-threads = 4 } +windows-subprocess = { max-threads = 2 } +windows-timing-sensitive = { max-threads = 1 } + [[profile.ci.overrides]] filter = 'all()' platform = { host = 'cfg(windows)' } retries = 2 flaky-result = 'pass' + +[[profile.ci.overrides]] +filter = 'binary(=dashboard_api_test) | binary(=dashboard_analytics_api_test) | binary(=dashboard_automation_api_test) | binary(=dashboard_automation_config_api_test) | binary(=dashboard_automation_skills_api_test) | binary(=dashboard_code_diagnostics_api_test) | binary(=dashboard_graph_api_test) | binary(=dashboard_lcm_api_test) | binary(=dashboard_lcm_fixes_test) | binary(=dashboard_memory_curation_api_test) | binary(=dashboard_savings_api_test)' +platform = { host = 'cfg(windows)' } +test-group = 'windows-dashboard-server' + +[[profile.ci.overrides]] +filter = 'binary(=storage_resolver_test) | binary(=profile_storage_migration_test) | binary(=cursor_transcript_ingest_test)' +platform = { host = 'cfg(windows)' } +test-group = 'windows-profile-storage' + +[[profile.ci.overrides]] +filter = 'binary(=session_lcm_compression_test) | binary(=session_lcm_query_test) | binary(=session_lcm_payload_test) | binary(=session_global_db_test) | binary(=session_transcript_backfill_test) | binary(=codex_transcript_ingest_test) | binary(=hermes_transcript_ingest_test) | binary(=cline_like_transcript_ingest_test) | binary(=corruption_test) | binary(=db_query_test) | binary(=mcp_handler_test) | binary(=mcp_server_test) | binary(=multi_mcp_coordination_test)' +platform = { host = 'cfg(windows)' } +test-group = 'windows-session-sqlite' + +[[profile.ci.overrides]] +filter = 'binary(=mcp_cli_serve_test) | binary(=tool_first_touch_test) | binary(=lsp_code_diagnostics_test) | binary(=mcp_dashboard_tool_test) | binary(=extract_worker_test)' +platform = { host = 'cfg(windows)' } +test-group = 'windows-process-heavy' + +[[profile.ci.overrides]] +filter = 'binary(=automation_backend_test)' +platform = { host = 'cfg(windows)' } +test-group = 'windows-subprocess' + +[[profile.ci.overrides]] +filter = 'test(=dead_code_marker_resolve_is_single_pass)' +platform = { host = 'cfg(windows)' } +test-group = 'windows-timing-sensitive' diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 66a78e3f..6dd98274 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -159,7 +159,7 @@ jobs: "Windows Rust cache matched key: ${{ steps.windows-rust-cache.outputs.cache-matched-key }}" | Out-File -FilePath $env:GITHUB_STEP_SUMMARY -Encoding utf8 -Append - name: Run Windows tests - run: cargo nextest run --workspace --profile ci --test-threads 16 + run: cargo nextest run --workspace --profile ci --test-threads 64 - name: Save Windows Rust cache if: steps.windows-rust-cache.outputs.cache-hit != 'true' From 681282b65b4d8af1cb7cc27d0d186e4993dbc36f Mon Sep 17 00:00:00 2001 From: ScriptedAlchemy Date: Mon, 29 Jun 2026 20:41:33 +0000 Subject: [PATCH 04/10] ci: use persistent Windows sccache WebDAV --- .github/workflows/ci.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6dd98274..a2aed174 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -113,7 +113,10 @@ jobs: - windows-runner env: RUSTC_WRAPPER: sccache - SCCACHE_GHA_ENABLED: "true" + SCCACHE_WEBDAV_ENDPOINT: http://10.10.10.20:8080/cache + SCCACHE_WEBDAV_USERNAME: sccache + SCCACHE_WEBDAV_PASSWORD: ${{ secrets.SCCACHE_WEBDAV_PASSWORD }} + SCCACHE_WEBDAV_KEY_PREFIX: tracedecay/windows-msvc steps: - uses: actions/checkout@v7 From 3f1515ae2fd07d3113d5371b299d7e00f028106f Mon Sep 17 00:00:00 2001 From: ScriptedAlchemy Date: Mon, 29 Jun 2026 21:37:40 +0000 Subject: [PATCH 05/10] ci: reset Windows sccache daemon --- .github/workflows/ci.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a2aed174..8fc32e89 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -161,6 +161,18 @@ jobs: "Windows Rust cache hit: ${{ steps.windows-rust-cache.outputs.cache-hit }}" | Out-File -FilePath $env:GITHUB_STEP_SUMMARY -Encoding utf8 -Append "Windows Rust cache matched key: ${{ steps.windows-rust-cache.outputs.cache-matched-key }}" | Out-File -FilePath $env:GITHUB_STEP_SUMMARY -Encoding utf8 -Append + - name: Reset sccache daemon + shell: pwsh + run: | + if ($env:SCCACHE_PATH -and (Test-Path $env:SCCACHE_PATH)) { + & $env:SCCACHE_PATH --stop-server + } elseif (Get-Command sccache -ErrorAction SilentlyContinue) { + sccache --stop-server + } else { + Write-Host "sccache was not installed; skipping daemon reset" + } + exit 0 + - name: Run Windows tests run: cargo nextest run --workspace --profile ci --test-threads 64 @@ -180,6 +192,8 @@ jobs: run: | if ($env:SCCACHE_PATH -and (Test-Path $env:SCCACHE_PATH)) { & $env:SCCACHE_PATH --show-stats + } elseif (Get-Command sccache -ErrorAction SilentlyContinue) { + sccache --show-stats } else { Write-Host "sccache was not installed; skipping stats" } From 5db404a9ceee266265ee422f0e5b0d16dfb9e445 Mon Sep 17 00:00:00 2001 From: ScriptedAlchemy Date: Mon, 29 Jun 2026 21:45:18 +0000 Subject: [PATCH 06/10] ci: use private-network sccache access --- .github/workflows/ci.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8fc32e89..7864db03 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -114,8 +114,6 @@ jobs: env: RUSTC_WRAPPER: sccache SCCACHE_WEBDAV_ENDPOINT: http://10.10.10.20:8080/cache - SCCACHE_WEBDAV_USERNAME: sccache - SCCACHE_WEBDAV_PASSWORD: ${{ secrets.SCCACHE_WEBDAV_PASSWORD }} SCCACHE_WEBDAV_KEY_PREFIX: tracedecay/windows-msvc steps: - uses: actions/checkout@v7 From 6549f4d778cc25e9409b17b6d742db32428cd7cc Mon Sep 17 00:00:00 2001 From: ScriptedAlchemy Date: Mon, 29 Jun 2026 22:28:44 +0000 Subject: [PATCH 07/10] ci: clean up Windows test processes --- .config/nextest.toml | 14 +++++++++- .github/workflows/ci.yml | 57 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+), 1 deletion(-) diff --git a/.config/nextest.toml b/.config/nextest.toml index 4cdb6522..06db7402 100644 --- a/.config/nextest.toml +++ b/.config/nextest.toml @@ -7,6 +7,8 @@ final-status-level = "slow" [test-groups] windows-dashboard-server = { max-threads = 4 } +windows-tracedecay-init = { max-threads = 1 } +windows-init-heavy = { max-threads = 8 } windows-profile-storage = { max-threads = 1 } windows-session-sqlite = { max-threads = 16 } windows-process-heavy = { max-threads = 4 } @@ -24,6 +26,16 @@ filter = 'binary(=dashboard_api_test) | binary(=dashboard_analytics_api_test) | platform = { host = 'cfg(windows)' } test-group = 'windows-dashboard-server' +[[profile.ci.overrides]] +filter = 'binary(=agent_test) | binary(=branch_db_safety_test) | binary(=cli_non_interactive_test) | binary(=mcp_cli_serve_test)' +platform = { host = 'cfg(windows)' } +test-group = 'windows-tracedecay-init' + +[[profile.ci.overrides]] +filter = 'binary(=automation_memory_curator_runner_test) | binary(=automation_runner_test) | binary(=automation_session_reflector_runner_test) | binary(=automation_skill_writer_runner_test) | binary(=branch_drift_test) | binary(=integration_test) | binary(=regression_core_engine_test) | binary(=tracedecay_test)' +platform = { host = 'cfg(windows)' } +test-group = 'windows-init-heavy' + [[profile.ci.overrides]] filter = 'binary(=storage_resolver_test) | binary(=profile_storage_migration_test) | binary(=cursor_transcript_ingest_test)' platform = { host = 'cfg(windows)' } @@ -35,7 +47,7 @@ platform = { host = 'cfg(windows)' } test-group = 'windows-session-sqlite' [[profile.ci.overrides]] -filter = 'binary(=mcp_cli_serve_test) | binary(=tool_first_touch_test) | binary(=lsp_code_diagnostics_test) | binary(=mcp_dashboard_tool_test) | binary(=extract_worker_test)' +filter = 'binary(=tool_first_touch_test) | binary(=lsp_code_diagnostics_test) | binary(=mcp_dashboard_tool_test) | binary(=extract_worker_test)' platform = { host = 'cfg(windows)' } test-group = 'windows-process-heavy' diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7864db03..21aaa539 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -171,9 +171,66 @@ jobs: } exit 0 + - name: Clean stale Windows test processes + shell: pwsh + run: | + $workspace = (Resolve-Path $env:GITHUB_WORKSPACE).Path + $repoWorkPath = "\_work\tracedecay\tracedecay" + $all = Get-CimInstance Win32_Process + $stale = foreach ($process in $all) { + if ($process.Name -notin @("tracedecay.exe", "cargo.exe", "cargo-nextest.exe", "rustc.exe", "link.exe", "sccache.exe")) { + continue + } + if (-not $process.CommandLine) { + continue + } + $inCurrentWorkspace = $process.CommandLine.IndexOf($workspace, [StringComparison]::OrdinalIgnoreCase) -ge 0 + $inRepoWorktree = $process.CommandLine.IndexOf($repoWorkPath, [StringComparison]::OrdinalIgnoreCase) -ge 0 + if (-not $inCurrentWorkspace -and -not $inRepoWorktree) { + continue + } + $parent = $all | Where-Object { $_.ProcessId -eq $process.ParentProcessId } + if (-not $parent) { + $process + } + } + foreach ($process in $stale) { + Write-Host "Stopping stale process $($process.Name) pid=$($process.ProcessId)" + Stop-Process -Id $process.ProcessId -Force -ErrorAction SilentlyContinue + } + - name: Run Windows tests run: cargo nextest run --workspace --profile ci --test-threads 64 + - name: Clean abandoned Windows test children + if: always() + shell: pwsh + run: | + $workspace = (Resolve-Path $env:GITHUB_WORKSPACE).Path + $repoWorkPath = "\_work\tracedecay\tracedecay" + $all = Get-CimInstance Win32_Process + $stale = foreach ($process in $all) { + if ($process.Name -ne "tracedecay.exe") { + continue + } + if (-not $process.CommandLine) { + continue + } + $inCurrentWorkspace = $process.CommandLine.IndexOf($workspace, [StringComparison]::OrdinalIgnoreCase) -ge 0 + $inRepoWorktree = $process.CommandLine.IndexOf($repoWorkPath, [StringComparison]::OrdinalIgnoreCase) -ge 0 + if (-not $inCurrentWorkspace -and -not $inRepoWorktree) { + continue + } + $parent = $all | Where-Object { $_.ProcessId -eq $process.ParentProcessId } + if (-not $parent) { + $process + } + } + foreach ($process in $stale) { + Write-Host "Stopping abandoned tracedecay child pid=$($process.ProcessId)" + Stop-Process -Id $process.ProcessId -Force -ErrorAction SilentlyContinue + } + - name: Save Windows Rust cache if: steps.windows-rust-cache.outputs.cache-hit != 'true' uses: actions/cache/save@v6 From 822e9b47b17bcda8c1054970d207d5db4c49fc74 Mon Sep 17 00:00:00 2001 From: ScriptedAlchemy Date: Tue, 30 Jun 2026 00:22:24 +0000 Subject: [PATCH 08/10] ci: relax Windows nextest constraints --- .config/nextest.toml | 40 +++++----------------------------------- 1 file changed, 5 insertions(+), 35 deletions(-) diff --git a/.config/nextest.toml b/.config/nextest.toml index 06db7402..dbc32664 100644 --- a/.config/nextest.toml +++ b/.config/nextest.toml @@ -6,13 +6,8 @@ slow-timeout = { period = "10s", terminate-after = 36 } final-status-level = "slow" [test-groups] -windows-dashboard-server = { max-threads = 4 } -windows-tracedecay-init = { max-threads = 1 } -windows-init-heavy = { max-threads = 8 } -windows-profile-storage = { max-threads = 1 } -windows-session-sqlite = { max-threads = 16 } -windows-process-heavy = { max-threads = 4 } -windows-subprocess = { max-threads = 2 } +windows-db-heavy = { max-threads = 16 } +windows-process-heavy = { max-threads = 8 } windows-timing-sensitive = { max-threads = 1 } [[profile.ci.overrides]] @@ -22,40 +17,15 @@ retries = 2 flaky-result = 'pass' [[profile.ci.overrides]] -filter = 'binary(=dashboard_api_test) | binary(=dashboard_analytics_api_test) | binary(=dashboard_automation_api_test) | binary(=dashboard_automation_config_api_test) | binary(=dashboard_automation_skills_api_test) | binary(=dashboard_code_diagnostics_api_test) | binary(=dashboard_graph_api_test) | binary(=dashboard_lcm_api_test) | binary(=dashboard_lcm_fixes_test) | binary(=dashboard_memory_curation_api_test) | binary(=dashboard_savings_api_test)' +filter = 'binary(=codex_transcript_ingest_test) | binary(=cline_like_transcript_ingest_test) | binary(=corruption_test) | binary(=cursor_transcript_ingest_test) | binary(=db_query_test) | binary(=hermes_transcript_ingest_test) | binary(=mcp_handler_test) | binary(=mcp_server_test) | binary(=memory_test) | binary(=multi_mcp_coordination_test) | binary(=profile_storage_migration_test) | binary(=session_global_db_test) | binary(=session_lcm_compression_test) | binary(=session_lcm_payload_test) | binary(=session_lcm_query_test) | binary(=session_transcript_backfill_test) | binary(=storage_resolver_test)' platform = { host = 'cfg(windows)' } -test-group = 'windows-dashboard-server' +test-group = 'windows-db-heavy' [[profile.ci.overrides]] -filter = 'binary(=agent_test) | binary(=branch_db_safety_test) | binary(=cli_non_interactive_test) | binary(=mcp_cli_serve_test)' -platform = { host = 'cfg(windows)' } -test-group = 'windows-tracedecay-init' - -[[profile.ci.overrides]] -filter = 'binary(=automation_memory_curator_runner_test) | binary(=automation_runner_test) | binary(=automation_session_reflector_runner_test) | binary(=automation_skill_writer_runner_test) | binary(=branch_drift_test) | binary(=integration_test) | binary(=regression_core_engine_test) | binary(=tracedecay_test)' -platform = { host = 'cfg(windows)' } -test-group = 'windows-init-heavy' - -[[profile.ci.overrides]] -filter = 'binary(=storage_resolver_test) | binary(=profile_storage_migration_test) | binary(=cursor_transcript_ingest_test)' -platform = { host = 'cfg(windows)' } -test-group = 'windows-profile-storage' - -[[profile.ci.overrides]] -filter = 'binary(=session_lcm_compression_test) | binary(=session_lcm_query_test) | binary(=session_lcm_payload_test) | binary(=session_global_db_test) | binary(=session_transcript_backfill_test) | binary(=codex_transcript_ingest_test) | binary(=hermes_transcript_ingest_test) | binary(=cline_like_transcript_ingest_test) | binary(=corruption_test) | binary(=db_query_test) | binary(=mcp_handler_test) | binary(=mcp_server_test) | binary(=multi_mcp_coordination_test)' -platform = { host = 'cfg(windows)' } -test-group = 'windows-session-sqlite' - -[[profile.ci.overrides]] -filter = 'binary(=tool_first_touch_test) | binary(=lsp_code_diagnostics_test) | binary(=mcp_dashboard_tool_test) | binary(=extract_worker_test)' +filter = 'binary(=automation_backend_test) | binary(=dashboard_api_test) | binary(=dashboard_analytics_api_test) | binary(=dashboard_automation_api_test) | binary(=dashboard_automation_config_api_test) | binary(=dashboard_automation_skills_api_test) | binary(=dashboard_code_diagnostics_api_test) | binary(=dashboard_graph_api_test) | binary(=dashboard_lcm_api_test) | binary(=dashboard_lcm_fixes_test) | binary(=dashboard_memory_curation_api_test) | binary(=dashboard_savings_api_test) | binary(=extract_worker_test) | binary(=lsp_code_diagnostics_test) | binary(=mcp_cli_serve_test) | binary(=mcp_dashboard_tool_test) | binary(=tool_first_touch_test)' platform = { host = 'cfg(windows)' } test-group = 'windows-process-heavy' -[[profile.ci.overrides]] -filter = 'binary(=automation_backend_test)' -platform = { host = 'cfg(windows)' } -test-group = 'windows-subprocess' - [[profile.ci.overrides]] filter = 'test(=dead_code_marker_resolve_is_single_pass)' platform = { host = 'cfg(windows)' } From 6384916003928d674a8682d1c0cc646c98d1e535 Mon Sep 17 00:00:00 2001 From: ScriptedAlchemy Date: Tue, 30 Jun 2026 01:28:11 +0000 Subject: [PATCH 09/10] ci: restore sensitive Windows test buckets --- .config/nextest.toml | 46 +++++++++++++++++++++++++++++++++++++++----- 1 file changed, 41 insertions(+), 5 deletions(-) diff --git a/.config/nextest.toml b/.config/nextest.toml index dbc32664..53fc9f5b 100644 --- a/.config/nextest.toml +++ b/.config/nextest.toml @@ -6,8 +6,14 @@ slow-timeout = { period = "10s", terminate-after = 36 } final-status-level = "slow" [test-groups] -windows-db-heavy = { max-threads = 16 } -windows-process-heavy = { max-threads = 8 } +windows-dashboard-server = { max-threads = 4 } +windows-tracedecay-init = { max-threads = 1 } +windows-init-heavy = { max-threads = 8 } +windows-profile-storage = { max-threads = 1 } +windows-session-sqlite = { max-threads = 16 } +windows-process-heavy = { max-threads = 4 } +windows-subprocess = { max-threads = 2 } +windows-memory-eval = { max-threads = 1 } windows-timing-sensitive = { max-threads = 1 } [[profile.ci.overrides]] @@ -17,15 +23,45 @@ retries = 2 flaky-result = 'pass' [[profile.ci.overrides]] -filter = 'binary(=codex_transcript_ingest_test) | binary(=cline_like_transcript_ingest_test) | binary(=corruption_test) | binary(=cursor_transcript_ingest_test) | binary(=db_query_test) | binary(=hermes_transcript_ingest_test) | binary(=mcp_handler_test) | binary(=mcp_server_test) | binary(=memory_test) | binary(=multi_mcp_coordination_test) | binary(=profile_storage_migration_test) | binary(=session_global_db_test) | binary(=session_lcm_compression_test) | binary(=session_lcm_payload_test) | binary(=session_lcm_query_test) | binary(=session_transcript_backfill_test) | binary(=storage_resolver_test)' +filter = 'binary(=dashboard_api_test) | binary(=dashboard_analytics_api_test) | binary(=dashboard_automation_api_test) | binary(=dashboard_automation_config_api_test) | binary(=dashboard_automation_skills_api_test) | binary(=dashboard_code_diagnostics_api_test) | binary(=dashboard_graph_api_test) | binary(=dashboard_lcm_api_test) | binary(=dashboard_lcm_fixes_test) | binary(=dashboard_memory_curation_api_test) | binary(=dashboard_savings_api_test)' platform = { host = 'cfg(windows)' } -test-group = 'windows-db-heavy' +test-group = 'windows-dashboard-server' [[profile.ci.overrides]] -filter = 'binary(=automation_backend_test) | binary(=dashboard_api_test) | binary(=dashboard_analytics_api_test) | binary(=dashboard_automation_api_test) | binary(=dashboard_automation_config_api_test) | binary(=dashboard_automation_skills_api_test) | binary(=dashboard_code_diagnostics_api_test) | binary(=dashboard_graph_api_test) | binary(=dashboard_lcm_api_test) | binary(=dashboard_lcm_fixes_test) | binary(=dashboard_memory_curation_api_test) | binary(=dashboard_savings_api_test) | binary(=extract_worker_test) | binary(=lsp_code_diagnostics_test) | binary(=mcp_cli_serve_test) | binary(=mcp_dashboard_tool_test) | binary(=tool_first_touch_test)' +filter = 'binary(=agent_test) | binary(=branch_db_safety_test) | binary(=cli_non_interactive_test) | binary(=mcp_cli_serve_test)' +platform = { host = 'cfg(windows)' } +test-group = 'windows-tracedecay-init' + +[[profile.ci.overrides]] +filter = 'binary(=automation_memory_curator_runner_test) | binary(=automation_runner_test) | binary(=automation_session_reflector_runner_test) | binary(=automation_skill_writer_runner_test) | binary(=branch_drift_test) | binary(=integration_test) | binary(=regression_core_engine_test) | binary(=tracedecay_test)' +platform = { host = 'cfg(windows)' } +test-group = 'windows-init-heavy' + +[[profile.ci.overrides]] +filter = 'binary(=storage_resolver_test) | binary(=profile_storage_migration_test) | binary(=cursor_transcript_ingest_test)' +platform = { host = 'cfg(windows)' } +test-group = 'windows-profile-storage' + +[[profile.ci.overrides]] +filter = 'binary(=session_lcm_compression_test) | binary(=session_lcm_query_test) | binary(=session_lcm_payload_test) | binary(=session_global_db_test) | binary(=session_transcript_backfill_test) | binary(=codex_transcript_ingest_test) | binary(=hermes_transcript_ingest_test) | binary(=cline_like_transcript_ingest_test) | binary(=corruption_test) | binary(=db_query_test) | binary(=mcp_handler_test) | binary(=mcp_server_test) | binary(=memory_test) | binary(=multi_mcp_coordination_test)' +platform = { host = 'cfg(windows)' } +test-group = 'windows-session-sqlite' + +[[profile.ci.overrides]] +filter = 'binary(=tool_first_touch_test) | binary(=lsp_code_diagnostics_test) | binary(=mcp_dashboard_tool_test) | binary(=extract_worker_test)' platform = { host = 'cfg(windows)' } test-group = 'windows-process-heavy' +[[profile.ci.overrides]] +filter = 'binary(=automation_backend_test)' +platform = { host = 'cfg(windows)' } +test-group = 'windows-subprocess' + +[[profile.ci.overrides]] +filter = 'binary(=memory_eval_test)' +platform = { host = 'cfg(windows)' } +test-group = 'windows-memory-eval' + [[profile.ci.overrides]] filter = 'test(=dead_code_marker_resolve_is_single_pass)' platform = { host = 'cfg(windows)' } From 346d6fdad4d6dcd1cadc0e30ec835896fbc219ba Mon Sep 17 00:00:00 2001 From: ScriptedAlchemy Date: Tue, 30 Jun 2026 02:31:40 +0000 Subject: [PATCH 10/10] ci: cap Windows test IO pressure --- .config/nextest.toml | 15 ++++++++++----- .github/workflows/ci.yml | 2 +- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/.config/nextest.toml b/.config/nextest.toml index 53fc9f5b..228a74b0 100644 --- a/.config/nextest.toml +++ b/.config/nextest.toml @@ -6,13 +6,13 @@ slow-timeout = { period = "10s", terminate-after = 36 } final-status-level = "slow" [test-groups] -windows-dashboard-server = { max-threads = 4 } +windows-dashboard-server = { max-threads = 2 } windows-tracedecay-init = { max-threads = 1 } -windows-init-heavy = { max-threads = 8 } +windows-init-heavy = { max-threads = 4 } windows-profile-storage = { max-threads = 1 } -windows-session-sqlite = { max-threads = 16 } -windows-process-heavy = { max-threads = 4 } -windows-subprocess = { max-threads = 2 } +windows-session-sqlite = { max-threads = 8 } +windows-process-heavy = { max-threads = 2 } +windows-subprocess = { max-threads = 1 } windows-memory-eval = { max-threads = 1 } windows-timing-sensitive = { max-threads = 1 } @@ -62,6 +62,11 @@ filter = 'binary(=memory_eval_test)' platform = { host = 'cfg(windows)' } test-group = 'windows-memory-eval' +[[profile.ci.overrides]] +filter = 'binary(=cli_non_interactive_test) | binary(=cursor_transcript_ingest_test) | binary(=memory_eval_test) | test(=curation_agent_plan_skips_when_automation_is_disabled_and_records_history) | test(=daily_model_series_limits_days_not_model_rows) | test(=memory_fact_store_update_trust_delta_uses_direct_fact_lookup)' +platform = { host = 'cfg(windows)' } +threads-required = "num-test-threads" + [[profile.ci.overrides]] filter = 'test(=dead_code_marker_resolve_is_single_pass)' platform = { host = 'cfg(windows)' } diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 21aaa539..503cae5b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -200,7 +200,7 @@ jobs: } - name: Run Windows tests - run: cargo nextest run --workspace --profile ci --test-threads 64 + run: cargo nextest run --workspace --profile ci --test-threads 32 - name: Clean abandoned Windows test children if: always()