[Grid agent] Package and document portable service operation and secret handling #134
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Objective
Package and document the agent for safe unattended operation while preserving one portable binary and the same behavior in foreground, integrated-TUI, and split service/TUI modes.
Runtime and configuration
systemdunit/example because headless service operation is required. Keep the binary independent of systemd and provide equivalent Windows service-wrapper/SCM guidance plus portable foreground operation; avoid OS-specific core APIs.Build and dependency evidence
ubuntu-latest; use portable compile/static checks rather than macOS/Windows Gitea jobs.Acceptance criteria
Dependencies
Depends on stable configuration, service/control, TUI, observability, and test interfaces. It must be complete before live-grid milestone validation.
Implemented and pushed as commit
00707fd. Added schema-versioned placeholder configurations, platform config/data discovery, storage environment precedence, offline --check-config and --print-paths operation, and fail-closed Unix secret permissions. Added hardened systemd packaging, state-preserving POSIX and Windows installers, equivalent Windows service/control/shutdown guidance, and a complete operations runbook covering TLS/firewalls, retention, backup/recovery, upgrades/rollback, emergency handling, secret rotation, threat/privacy/resource limits, failure playbooks, and unsupported operations. Recorded native release size/hash/dependency evidence. Verification: focused packaging tests (3/3), config tests (9/9), all-feature strict Clippy, rustdoc warnings-as-errors, formatting, and diff checks passed. The Windows Rust target check reached the existing AWS-LC native build and was blocked solely because x86_64-w64-mingw32-gcc is not installed on this host; platform-conditioned behavior and installer contracts are covered by tests. Namespace audit confirms the service remains metacrate-grid-agent and the libremetaverse facade has no metacrate references.