Addresses two review findings: - the dynamic CPU limit applied a cap and only then saved the active state. A failed save left the cap in place with no record, so it could never expire and switching the rule off would not lift it — the container would stay pinned to the reduced quota. The caps applied by a pass are now held back until the state is written; if the write fails they are lifted again (each back to the user's own quota) and the failure is reported. The quota writer is behind a one-method interface so the failure path is covered by a test that fails the state write with a trigger and asserts cap-then-rollback, plus a test that a failed rollback is reported rather than swallowed - migrations only compared the highest recorded version, so rows missing from schema_migrations silently skipped a step and surfaced later as obscure "no such column" failures. The recorded versions must now form the unbroken run 2..cur (v1 is the baseline, created unconditionally and never recorded) or the database refuses to open The third finding (a failed cross-container share install deleting the old container before the new one is up) is left as is: the user confirms a reinstall that discards the data, and the retry costs nothing — Delete treats an already-missing container as success (verified against the live Incus socket), so the user simply installs again. Co-authored-by: CommandCodeBot <noreply@commandcode.ai>
Documentation
Technical documentation for vpsmgr. All docs are in English.
| Doc | What it covers |
|---|---|
| architecture.md | System design: components, storage, network, security, traffic, users and user groups, image, install/uninstall lifecycle |
| configuration.md | Full reference for /etc/vpsmgr/config.yaml |
| ipv6.md | IPv6 pass-through design: deterministic addresses, prefix support, routing, installer flow |
| ipv6-ndp-responder.md | Why prefix mode replaced ndppd with an in-tree NDP responder, design hardening, and what to test at scale |
| development.md | Building, testing, releasing, conventions |
See also AGENTS.md at the repo root — short version aimed at AI coding agents.