| Age | Commit message (Collapse) | Author | Files | Lines | |
|---|---|---|---|---|---|
| 17 hours | Merge the two device state files and reduce mutation | Luke Hoersten | 2 | -118/+117 | |
| The registry (device names) and service-state (sync results) were two JSON files keyed the same way, split only for a TypeScript-compatibility that is moot now that the fabric identity cannot migrate between implementations. Merge them into one devices.json with a DeviceRecord per node, which also removes the parallel-map join in status and collapses the per-command load/store pairs. identity.json stays separate as a write-once secret. Also, from a reduction/immutability review: - Fix with_timeout passing a literal "{what}" instead of the error context - Drop needless mut: CompactDuration and parse_wall_clock become immutable expressions; run_status filters with a predicate instead of a mutator; sync_one extracts write_zone_and_dst; InspectOutcome gains Default plus a failed() constructor - Share a join_ids helper and a devices_path helper; add IdentityReport From; minor combinator tidy-ups 35 unit tests, clippy clean. | |||||
| 18 hours | Split the controller operations into a submodule | Luke Hoersten | 2 | -0/+1425 | |
| controller.rs had grown to ~1400 lines gluing the one-shot stack harness and persistent-identity lifecycle to the four on-wire operations. Move the operations (commission, sync, inspect, decommission, plus connect and the timeout helper) into controller/ops.rs; the harness, identity/fabric bootstrap, KV store, and locking stay in controller/mod.rs. ops.rs sees the parent module private items via use super::*, so no visibility changes were needed, and pub use ops::* keeps the existing controller::* paths. No behavior change. 36 unit tests, clippy clean. | |||||
