This repository has been archived on 2026-08-19. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
tend/docs/SCHEMA_V2_MIGRATION.md
T
gamertan 00d1dd4209 feat: publish Tend v0.2 preview source
Publish the reviewed allowlisted snapshot whose exact binary completed maintenance deployment, rollback, and reactivation exercises for Gamertan and Sandwich Hime.

Private-Source-Commit: 4d7094c8b7c61991bfb67b11fc1558724c874eb2

Private-Source-Tree: 54a2f74804f7acddf3755d7d4da5b97f5fc28381

AI-Assistance: OpenAI Codex assisted implementation, testing, security review, and release verification.
Signed-off-by: Cole Speelman <crspeelman@gmail.com>
2026-08-16 19:02:08 -04:00

1.5 KiB

Schema 1 to schema 2

Schema 2 is intentionally not loaded as schema 1. Keep the installed v0.1 Tend binary available until the first schema-2 activation and rollback have both been exercised.

  1. Move each configuration to /etc/tend/services/<service>.json.
  2. Set schema_version to 2.
  3. Add service.environment_file below /etc/tend/environment/.
  4. Create that file as a regular root-owned file with mode 0600. Move secret values out of JSON. Do not put the environment file in Git. For a singleton, keep its listen_env key out of this shared file: set the live address in the installed unit and let Tend supply only the candidate address.
  5. Set every service's deployment.lock_file to /run/lock/tend-deploy.lock.
  6. Add one or more query-free HTTPS deployment.public_smoke checks.
  7. Update installed systemd units to read the same environment file as the transient candidate.
  8. Install a root-owned 0600 receive policy mapping each service name to its exact configuration and artifact-size ceiling.
  9. Run tend check-server as root before accepting a transfer.
  10. Validate, activate, rollback, and reactivate one service at a time. Confirm unrelated services never restart.

Tend does not discover .env, infer old values, rewrite a production file, or silently migrate state. For local development, copy a committed .env.example to an ignored .env.local, restrict its mode, and load it with the application's own tooling. Tend never loads local dotenv files implicitly.