onnx.8: sync dev @ 0.25.0 stable (shutdown fixes #1673), prepare 0.25.0-alpha.onnx.8#1695
Merged
Aaronontheweb merged 13 commits intoJul 18, 2026
Conversation
…ll headroom (netclaw-dev#1673) Two related shutdown-race defects: 1. The SIGTERM/daemon-stop CoordinatedShutdown drain task called SessionDrainHelper.DrainAsync with CancellationToken.None for the operation token, so a session parked on interactive tool approval (which can never ack) hung the call for the full 200s Akka before-service-unbind phase timeout, leaking the abandoned drain task. Fixed by bounding the drain with a TimeProvider-driven CTS sized to DaemonConfig.BoundedDrainTimeout (GracefulShutdownBudget minus a 10s safety margin), so it always finishes before the phase timeout fires. The drain's existing timeout logging now also lists which sessions didn't drain. 2. `netclaw daemon stop` waited only 10s before force-killing, and even after fixing that to match the daemon's own 200s phase timeout, the CLI and daemon would race exactly at the boundary (production evidence: a daemon force-killed ~100ms from a clean exit). Fixed by giving the CLI a 15s grace window to poll for exit after its budget elapses before escalating to SIGKILL, and adding TimeoutStopSec= to the generated systemd unit so systemd itself can't SIGKILL the cgroup out from under a still-waiting `netclaw daemon stop` (ExecStop=). All the shutdown-timing constants now live in one place (DaemonConfig.GracefulShutdownBudget and friends) so the layering (bounded drain < Akka phase timeout < CLI budget+grace < systemd TimeoutStopSec) can't drift out of lockstep again. Fixes netclaw-dev#1664, netclaw-dev#1665
…#1678) * fix(cli): handle model migration validation errors * test(configuration): use non-resetting path joins
Bumps [actions/setup-dotnet](https://github.com/actions/setup-dotnet) from 5 to 6. - [Release notes](https://github.com/actions/setup-dotnet/releases) - [Commits](actions/setup-dotnet@v5...v6) --- updated-dependencies: - dependency-name: actions/setup-dotnet dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* fix(channels): clarify authoritative attachment paths * chore: remove unnecessary openspec artifacts * test(evals): cover authoritative attachment paths * test(evals): stage attachment path fixture
…dev#1690) * test(sessions): make tool result assertion deterministic * test(sessions): restore tool result regression coverage
* fix(approvals): show MCP arguments in prompts * fix(approvals): harden MCP invocation previews
* feat(install): automate shell PATH integration for Unix installers Replace manual PATH instructions with automatic shell profile modification. The installer now detects the user's shell and writes a self-guarding env script (~/.netclaw/env) that is sourced from the appropriate RC file. Key changes: - Add --skip-shell flag to opt out of automatic shell modification - Detect shell via $SHELL (bash, zsh, fish supported; others get manual instructions) - Write ~/.netclaw/env with colon-affixed case guard (rustup/fzf pattern) - Append source line to correct RC: ~/.bashrc (Linux), ~/.profile (macOS bash), ~/.zshrc (zsh with ZDOTDIR support), ~/.config/fish/conf.d/netclaw.fish (fish) - Duplicate prevention: grep -xF guard before appending to RC - RC file validated with bash -n after modification Smoke tests (section 9): - Separate tests for bash-linux, zsh, and fish RC modification - --skip-shell flag: verify no RC/env file created - Unknown shell: verify graceful fallback message - ZDOTDIR: verify zsh respects ZDOTDIR for RC location - Duplicate prevention: second install adds no extra source lines * feat(install): automate PATH modification for Windows installer Replace manual PATH instructions with automatic User-scope PATH modification. The installer now prepends the install dir to the User PATH and broadcasts WM_SETTINGCHANGE to Explorer so new terminal windows pick up the change. Key changes: - Add -SkipShell switch to opt out of automatic PATH modification - Read User-scope PATH (not merged $env:PATH) to avoid Machine entry corruption - Prepend install dir to User PATH (highest priority) - Update current session's $env:PATH - Broadcast WM_SETTINGCHANGE via P/Invoke SendMessageTimeout - Guard against duplicates: normalize trailing backslash before comparison - Check 32K character limit before writing, warn if near limit Smoke tests: - PATH automation logic: duplicate detection with fake PATH strings - Trailing backslash normalization - Null User PATH handled as empty - -SkipShell flag: verify install completes with skipped message * fix(smoke): isolate real install test to temp HOME The real install test now uses a temp HOME directory so shell integration writes to the temp dir instead of the CI runner's real profile. This also lets us verify the env script was created and the RC file was modified. Adds 2 new assertions: env script exists, RC file sources env script. * fix(smoke): cross-platform install smoke test fixes - bash test: select .profile on macOS (login shell) vs .bashrc on Linux - fish test: unset XDG_CONFIG_HOME so config path stays within temp HOME - fish test: add duplicate prevention and re-install assertions - Windows: remove false-positive regex check on success message * fix(smoke): use @() array coercion for empty PATH entries count $entries4 is a 0-element array which PowerShell can coerce to $null in some contexts, causing '$entries4.Count' to throw ParentContainsErrorRecordException. $(@entries4).Count forces array coercion so .Count always works. * fix(install): validate PATH integration through real shells * fix(install): make manifest fallback portable * Harden installer PATH mutations * fix(smoke): compare persisted physical paths * fix(installer): harden shell path mutation * test(installer): support Windows PowerShell path joins * test(installer): normalize manifest fixture encoding * test(installer): capture expected PowerShell failures
….onnx.8 # Conflicts: # Directory.Build.props # RELEASE_NOTES.md # feeds/skills/.system/files/netclaw-operations/SKILL.md # feeds/skills/.system/files/netclaw-operations/references/diagnostics.md # src/Netclaw.Cli/Daemon/DaemonManager.cs # src/Netclaw.Configuration.Tests/DaemonConfigTests.cs # src/Netclaw.Configuration/DaemonConfig.cs # src/Netclaw.Daemon.Tests/DaemonShutdownConfigurationTests.cs # src/Netclaw.Daemon/DaemonShutdownConfiguration.cs # src/Netclaw.Daemon/Program.cs
Aaronontheweb
merged commit Jul 18, 2026
83ad906
into
netclaw-dev:feature/memory-embeddings
15 checks passed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
upstream/dev@ 0.25.0 stable (commit 75e46be) intofeature/memory-embeddings.0.25.0-alpha.onnx.8(VersionPrefix unchanged at0.25.0, VersionSuffixalpha.onnx.8— sorts below stable, so this experimental build never captures the:beta/latestPrereleasechannels).netclaw-operationsskill (SKILL.md v2.36.0 + diagnostics.md) with both branches' content edits.Conflict resolution (10 files)
DaemonConfig.cs,DaemonManager.cs,Program.cs,DaemonConfigTests.cs,DaemonShutdownConfiguration.cs,DaemonShutdownConfigurationTests.cs) — took dev's superset design in full (bounded drain, CLI force-kill grace window, systemdTimeoutStopSeclayering from fix(daemon): bound the daemon-stop session drain and give CLI stop kill headroom #1673); removed a stale feature-branch-onlyTimeoutStopSecValuefield inDaemonManager.csthat dev had replaced withDaemonConfig.SystemdTimeoutStopSec. Confirmed embeddings service wiring inProgram.cs(EmbeddingModelProvisioner, MemoryEmbedderHolder, MemoryVectorIndexHolder, RelevanceScorerHolder, EmbeddingWarmupHostedService) survived untouched.Directory.Build.props— VersionSuffix set toalpha.onnx.8; PackageReleaseNotes already matched both sides.RELEASE_NOTES.md— merged both histories in date order (onnx.8 → 0.25.0 stable → beta.5 → onnx.7 → onnx.6 → beta.4 → ...), added new onnx.8 entry on top.feeds/skills/.system/files/netclaw-operations/SKILL.md— combined both content additions (memory backfill note + MCP approval-prompt redaction section); version bumped to 2.36.0 (one above max of 2.32.0/2.35.0).references/diagnostics.md— combined both content additions (embedding-model-unavailable symptom row +NETCLAW_HOMEpath wording).Test totals (dotnet test, full solution)
0 failed across all projects: Embeddings.Tests 48, Configuration.Tests 519, Security.Tests 609, Media.Tests 65, MemoryRetrievalPoC.Tests 5, Search.Tests 46, Cli.Tests 1347, Actors.Tests 2769, Daemon.Tests 880 (6288 passed total). 14 pre-existing integration-test skips (container/live-service dependent, unrelated to this merge).
dotnet build— 0 warnings/errors.dotnet slopwatch analyze— 0 issues.Add-FileHeaders.ps1 -Verify— all files have headers.Operator note: after upgrading, re-run
netclaw daemon installso the regenerated systemd unit picks upTimeoutStopSec=230.