Long-term maintainability comes less from complicated scripting and more from making upgrade, verification, documentation, and rollback habits explicit.
- keep a clean mapping to upstream
Signal-Serverversions - keep patches small and short-lived
- keep scripts and bilingual docs aligned
- make it fast to prove that the stack still works after each update
- create a new version branch
- update
versions/current.env - add
versions/<tag>.env - refresh upstream repos and re-apply patches
- run
./scripts/dev-up.sh --smoke-test - if Desktop is in scope, also run
./scripts/desktop-up.sh - update both Chinese and English docs
- record why the change is still necessary
- confirm that config cannot solve it instead
- rerun the smoke test
- if Desktop changed, rerun the standalone boot path
signal-serverhealth endpoint is healthy- verification session creation succeeds
- captcha submission succeeds
- verification code request succeeds
- verification code submission succeeds
dynamic-configand seeded objects are still consumed correctly- Desktop still reaches the local dev entry path if it is in scope
- keep README and docs aligned
- update Chinese and English versions in the same change when possible
- keep
docs/plans/for local planning only - always document what capability is lost when a cloud dependency is replaced locally
- vendor full upstream repos into this repository
- grow a large long-lived patch stack instead of using config and docs
- let
mainaccumulate too many unverified experiments - treat local demo success as proof of production readiness