# Contract: Application Binary Version: 1.0 ## Purpose Правила сборки, упаковки ресурсов и первого запуска Go-приложений. See `README.md` for deployment examples and a sample config template. ## Rules - When the agent deploys or runs commands on a host, the application lives in `/appdata//`. - Do not suggest alternate default install paths such as `/opt`, `/usr/local/bin`, or `~/`. - The binary must be self-contained. Templates, static assets, config templates, and DB migrations are embedded with `//go:embed` or an equivalent application-owned mechanism. - The application creates its config automatically on first run if it does not exist yet. - Default config path: - single-user mode: `~/.config//config.yaml` - server or multi-user mode: `/etc//config.yaml` or next to the binary - Config stores application settings and centralized DB credentials only. It must not store user data, cache/state, or SQLite path configuration. - For local SQLite mode, the database file lives next to the config and its path is derived by the application, not configured separately. - On first run with no config, the application must create the config, print its path, exit 0, and stop. It must not continue startup with a fresh placeholder config. - The binary must not depend on the caller's working directory. - Build with `CGO_ENABLED=0` when possible. Enable CGO only when the chosen storage/runtime actually requires it, such as SQLite drivers that need CGO.