Problem. After ck module rescan applies a change that touches only env, args or protocol, every surface says the running module is current while the process still runs the old spec. ck module list shows reload nothing, pending_reload shows path and image match, and a second rescan --dry-run reports no changes. The #108 fix covers the program path and a swapped binary, as ruled there; these fields were out of scope.
Evidence (master 5d1501d).
PendingReloadVerdict carries only path and image (crates/subc-control/src/lib.rs:615-617).
- The rescan compares config against the stored spec (
crates/subc-daemon/src/control.rs:4064-4069), and apply overwrites the stored spec through update_configuration (:4154-4158). After apply, nothing is left to differ.
docs/daemon-config.md:141-143 names protocol (and args) changes as pending-reload differences.
- Repro on our install (2026-09-24): I removed one env var from a module's entry, and rescan printed
changed-pending-reload. Afterwards the list said nothing and the dry-run said "no changes", while the running process's environment still had the removed variable.
Question. Which of these?
I recommend (b) and can build it if you want it.
Problem. After
ck module rescanapplies a change that touches only env, args or protocol, every surface says the running module is current while the process still runs the old spec.ck module listshows reloadnothing,pending_reloadshows path and imagematch, and a secondrescan --dry-runreports no changes. The #108 fix covers the program path and a swapped binary, as ruled there; these fields were out of scope.Evidence (master 5d1501d).
PendingReloadVerdictcarries onlypathandimage(crates/subc-control/src/lib.rs:615-617).crates/subc-daemon/src/control.rs:4064-4069), and apply overwrites the stored spec throughupdate_configuration(:4154-4158). After apply, nothing is left to differ.docs/daemon-config.md:141-143namesprotocol(andargs) changes as pending-reload differences.changed-pending-reload. Afterwards the list saidnothingand the dry-run said "no changes", while the running process's environment still had the removed variable.Question. Which of these?
nothing (path, image)) and document that env/args/protocol edits stay invisible until the next restart.spawned_from. Compare it with the configured spec's digest and add aspec: match | mismatch | unavailabledimension. It is derived rather than stored, likeck module rescan --dry-runsays "would restart", apply defers — and once applied, a second dry-run reports "no changes" while the old process is still running #108's other two signals, and keeps env values off the wire.I recommend (b) and can build it if you want it.