Fix systemd service restart

This commit is contained in:
2026-10-27 21:55:59 +02:00
parent 4bb975f122
commit 86c28a35b5
5 changed files with 516 additions and 45 deletions
+54 -1
View File
@@ -123,6 +123,7 @@ Each row is a delivery milestone, not a completion claim. Expand its record befo
| 11 | Valid subnet routes shown as a capability limitation | 10 | accepted |
| 12 | Aligned, responsive client table | 11 | accepted |
| 13 | Compact terminal QR disclosure | 12 | accepted |
| 14 | Restart verification for valid legacy peers | 13 | accepted |
### Milestone 1 — Rust foundation, settings, and domain states
@@ -3593,8 +3594,60 @@ QR cells; the tested bordered layout with a one-row notice fits at 75×44.
Longer notices increase the required terminal height. Physical terminal and
phone/decoder scanning remain unverified; M9 systemd acceptance remains retired.
### Milestone 14 — Restart verification for valid legacy peers
Status: accepted (2026-10-27T21:55:11+02:00). M13 is accepted; M9 remains retired and
unaccepted. This is a scoped fix for restart preview and durable verification.
#### Outcome and scope
Use the complete saved technical peer set for restart eligibility and runtime
verification, independently of optional managed alias metadata and the narrower
management `Client` shape. Do not fabricate aliases/dates, rewrite saved peers,
omit peers, or record a partial management snapshot as applied. Preserve the
pre-restart backup, explicit choice, configured service/timeout, draft handling,
and address-release boundary. Unsafe saved documents must stop before service
mutation with secret-free identity/section and condition diagnostics.
#### Tasks and acceptance
| Task | Owner | State | Evidence required |
| --- | --- | --- | --- |
| M14.1 | implementer | complete for implementation scope | Restart projection and fixture regressions in `src/app.rs`, `src/domain.rs`, `tests/runtime_restart.rs` |
| M14.2 | independent reviewer; repairer | complete | Independent behavior review found no issue; M14-R1 Clippy repair independently re-reviewed and closed |
| M14.3 | coordinator | complete | Integrated files, pinned Rust gates and source/artifact identity recorded in [M14 evidence](docs/evidence/milestone-14.md) |
- [x] M14-A1: saved managed client plus valid metadata-free legacy peer previews
and restarts after full synthetic runtime match, without config rewrites.
- [x] M14-A2: supported IPv4-only and technically valid route shapes outside
the management model can be verified as a complete saved peer set.
- [x] M14-A3: malformed/ambiguous peers and structural problems block before
backup/service mutation with actionable public identity or section location.
- [x] M14-A4: missing/extra/mismatched or incomplete runtime peers cannot be
recorded as applied or release deleted addresses; successful full verification
persists historical status and safe reservations across reopen.
- [x] M14-A5: independent review closes findings; focused and required Rust
completion gates pass. Fixture results remain separate from VM systemd evidence.
Planned checks: focused `cargo test --locked app::tests::` and runtime restart
tests, `cargo fmt --all -- --check`, `cargo clippy --locked --all-targets -- -D warnings`,
`cargo test --locked`, `cargo build --locked --release`, `git diff --check`.
Synthetic tests use fake service/runtime adapters; no Docker or VM is required.
Detailed evidence will be recorded in `docs/evidence/milestone-14.md`.
#### Outcome and handoff
Accepted for the synthetic application/runtime-adapter scope. Complete
`SavedPeerProjection` verification covers valid legacy and broader-route peers;
no partial `Client` snapshot is recorded as applied. M14-R1 (P3, closed):
Clippy's collapsible diagnostic guard was repaired, independently re-reviewed,
and all integrated gates passed. [M14 evidence](docs/evidence/milestone-14.md)
records source identity and tests. No disposable-VM systemd acceptance or
production access is claimed; M9 remains retired and unaccepted.
## Current progress and resume point
- Milestone 14 is accepted (2026-10-27) for fixture restart orchestration: complete saved-peer projection, legacy/IPv4-only/broader-route eligibility, safe blockers and durable verified history passed independent review and pinned Rust gates. [M14 evidence](docs/evidence/milestone-14.md) records source/artifact identity. No disposable-VM systemd acceptance or production result is claimed.
- Milestone 13 is accepted (2026-10-27): compact, explicitly colored QR disclosure, complete quiet zone and dimensioned fallback passed synthetic rendering tests, independent R5 closure and pinned Rust gates. [M13 evidence](docs/evidence/milestone-13.md) records the reviewed source and release artifact. No manual scan, Alpine rerun, VM or production validation is claimed.
- Bounded TUI maintenance TUI-TS-001 (2026-10-27): new-client form creation timestamps now have whole-second UTC precision before strict metadata rendering. A fixed fractional-second instant and a synthetic blank-IP form-to-draft workflow passed; saved bytes stayed unchanged. Independent review found no actionable issue, and pinned-toolchain Rust completion gates passed. [Timestamp repair evidence](docs/evidence/tui-creation-timestamp.md) identifies the source and release artifact. This repairs M7 behavior without claiming new Alpine or VM validation; earlier artifact identities remain historical after this Rust change.
- Bounded TUI maintenance (2026-10-26): repaired list arrows opening client details. Up/Down now only move the highlight; Enter opens details and Esc returns. Initial navigation follows the renderer's first-row highlight. Independent review closed NAV-001 with no remaining scoped findings; validation is recorded in [navigation repair evidence](docs/evidence/tui-navigation.md). This does not advance M9 or supply VM/Alpine acceptance evidence; prior artifact identities remain historical after this Rust change.
@@ -3614,7 +3667,7 @@ phone/decoder scanning remain unverified; M9 systemd acceptance remains retired.
- Milestone 8 delivered reviewed opt-in Alpine Testcontainers coverage for real IPv4 WireGuard peers, application lifecycle, saved/runtime separation, restoration, import/reissue, backup failures and the real Rustix reader. Host gates and three fresh real-container runs passed on one stable source fingerprint; M8-A1–A10 accepted. Real IPv6 behavior is unverified by user-authorized scope.
- Milestone 9 is retired and unaccepted: the reviewed disposable VM preparation and guarded first start did not establish Debian/systemd acceptance. The exact VM was powered off after the user stopped work. M9.2–M9.3 were not started; M9-A1–A9 are unchecked.
- Next action: await user direction after M13. Do not restart the VM, access production, commit, or deploy.
- Next action: await user direction after M14. Do not restart the VM, access production, commit, or deploy.
## Plan maintenance