Linux systemd — E2E status¶
Status summary
| Evidence | Value |
|---|---|
| IMPLEMENTED | YES (offline-first prebuilt binary production installer) |
| AUTOMATED / STATIC TESTED | AUTOMATED TESTED (prebuilt_deploy_test.sh, package_linux_test.sh, go_toolchain_test.sh, existing helpers) |
| Offline deployment | LIVE PASS |
| Reboot auto-start | LIVE PASS |
| NO-OP update | LIVE PASS |
| Functional inbound POST | BLOCKED / RETEST REQUIRED |
| Actor/installer fix | IMPLEMENTED / AUTOMATED TESTED / LIVE RETEST REQUIRED |
PRODUCTION vs DEVELOPMENT¶
| Path | Go | Source build | Git | Internet | Typical host |
|---|---|---|---|---|---|
| PRODUCTION INSTALLATION (recommended) | No | No | No | No (offline package) | Ubuntu customer + systemd |
| DEVELOPMENT BUILD | Yes | Yes | Optional (metadata) | Yes (modules as needed) | CI / developer machine |
Production Linux native install does not install Go, does not download from go.dev, does not build from source, and does not require git, curl, wget, or apt package installs.
Recorded Ubuntu Live E2E (lab host)¶
| Item | Value |
|---|---|
| Host | Ubuntu lab API host (private address omitted from public docs) |
| Deployment | Linux Native / systemd / offline prebuilt binary (no Go, no source build) |
| MongoDB | External lab MongoDB (private address omitted); database name is an operator choice |
| Check | Status |
|---|---|
| Offline package / ELF amd64 / SHA256 | LIVE PASS |
| Config bootstrap / migrations / systemd | LIVE PASS |
| Reboot auto-start | LIVE PASS |
| health/live + health/ready | LIVE PASS |
| Ubuntu → MongoDB / Windows → Ubuntu API | LIVE PASS |
| NO-OP update | LIVE PASS |
POST /api/v1/inbound/work-orders |
BLOCKED / RETEST REQUIRED |
Root cause of the functional block: the installer generated a random INTEGRATION_ACTOR_USER_ID that did not reference an existing user. Live POST returned HTTP 500 INTERNAL_ERROR (integration actor user not found).
Fix (this change set): installer never generates an actor ObjectID; --integration-actor-user-id is required on first install; read-only application check verifies exists+active; live API returns INTEGRATION_ACTOR_USER_NOT_FOUND / INACTIVE / TENANT_MISMATCH (HTTP 409). Live functional POST was not re-run in this documentation cycle.
Next live install must pass a real active user ObjectID:
bash
sudo ./scripts/install.sh \
--external-mongodb \
--mongo-uri "mongodb://<MONGODB_HOST>:27017" \
--mongo-database "<DATABASE_NAME>" \
--integration-actor-user-id "<EXISTING_ACTIVE_USER_OBJECT_ID>" \
--port 4242 \
--public-base-url "http://<API_HOST>:4242"
Operations reference: Linux systemd installation, Update and rollback.
Historical note (superseded)¶
The previous production installer tried to download a Go toolchain from go.dev. That model is removed. Production installers must never call go, git, curl, or wget.
Automated / static evidence¶
| Check | Command / file | Status |
|---|---|---|
| Shell syntax | bash -n on Linux service/release scripts |
AUTOMATED PASS (syntax only) |
| Prebuilt deploy (offline, SHA256, actor, rollback, uninstall) | scripts/linux/service/tests/prebuilt_deploy_test.sh |
AUTOMATED TESTED |
| Release package contents | scripts/release/tests/package_linux_test.sh |
AUTOMATED TESTED |
| No Go auto-install in production | scripts/linux/service/tests/go_toolchain_test.sh |
AUTOMATED TESTED |
| Update decision | scripts/linux/common/tests/update_decision_test.sh |
AUTOMATED PASS |
| Update / rollback helpers | scripts/linux/common/tests/update_rollback_test.sh |
AUTOMATED PASS |
| Linux Docker regression | scripts/linux/docker/tests/docker_deploy_test.sh |
AUTOMATED (offline image model; live E2E RETEST REQUIRED) |
Exit codes (Linux service)¶
Source: scripts/linux/service/common.sh
| Code | Constant | Meaning |
|---|---|---|
| 0 | EXIT_SUCCESS |
Success |
| 1 | EXIT_ROOT_REQUIRED |
root required |
| 2 | EXIT_ENV_INVALID |
Invalid environment (including missing/invalid actor format) |
| 3 | EXIT_PREREQ |
Prerequisite |
| 4 | EXIT_REPO_DIRTY |
Reserved (not used by prebuilt production path) |
| 5 | EXIT_DEPS |
Dependencies |
| 6 | EXIT_VET_TEST |
Reserved (not used by prebuilt production path) |
| 7 | EXIT_BUILD |
Reserved (not used by prebuilt production path) |
| 8 | EXIT_CHECK |
Binary / SHA256 / application check (actor exists/active) |
| 9 | EXIT_BACKUP |
Backup |
| 10 | EXIT_MIGRATION |
Migration |
| 11 | EXIT_SERVICE |
Service / systemd operation |
| 12 | EXIT_FIREWALL |
Firewall |
| 13 | EXIT_HEALTH |
Health |
| 14 | EXIT_ROLLBACK |
Rollback |
| 15 | EXIT_PORT |
Port conflict |
| 16 | EXIT_DOCKER |
Docker |
| 17 | EXIT_SYSTEMD |
systemd missing / not running |