Skip to content

fix(service): replace unusable tmux advice on hosts with no service manager (#479) - #486

Merged
lidge-jun merged 1 commit into
devfrom
codex/479-service-guidance
Aug 26, 2026
Merged

fix(service): replace unusable tmux advice on hosts with no service manager (#479)#486
lidge-jun merged 1 commit into
devfrom
codex/479-service-guidance

Conversation

@parkjs101

Copy link
Copy Markdown
Collaborator

What

The message jaw service printed on a host with no service manager told the operator to run jaw serve under tmux/screen. This replaces it with a recipe that works, and fixes the same class of problem in the docker branch.

Why the old advice could not be followed

Operators reach that message from a one-shot ssh host '...' command. A terminal multiplexer needs an interactive session to attach to, which is exactly what that does not have — and tmux would inherit the same non-interactive PATH that just failed to resolve jaw, so it would fail for the original reason.

What replaces it

What the #479 reporter had to work out by hand:

Token Why
absolute node + jaw paths nothing to resolve; a bare jaw is what fails here
setsid the server outlives the SSH connection
< /dev/null never blocks on a terminal that is about to vanish
>> …log something to read when it dies silently

It also names the liveness check and the log path, because the #479 failure mode is silence rather than an error.

Docker branch

Same shape of problem: it printed "the container's restart policy manages this" and exited 0 even when jaw was not the container's entrypoint — so jaw service reported success having started nothing. It now says so and prints the same recipe.

Verification

Rendered with the reporter's exact paths; output matches the workaround they arrived at independently. 7 unit tests (tests/unit/manual-supervision.test.ts), tsc --noEmit clean.

One test is deliberately narrow: it scans only console.* lines for tmux/screen, so a comment may still explain why the advice was removed.

Refs #479

Stack (merge bottom-up):

# PR Layer Review focus
4 #488 docs — remote/headless guide docs only
3 #487 supervisor backend generated sh + liveness contract
2 #486 service guidance ← you are here operator message correctness
1 #485 doctor detection detection logic + probe seam

Review this PR's diff only; its base is the layer below.

@coderabbitai

coderabbitai Bot commented Aug 26, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

…anager

A systemd-less container (PID 1 = tini) falls through every backend branch,
and the message it hit told the operator to run `jaw serve` under tmux/screen.
That is not a recipe they can follow: they arrived here from a one-shot
`ssh host '...'` command, which has no interactive session for a multiplexer
to attach to, and tmux would inherit the same non-interactive PATH that just
failed to resolve `jaw`.

The replacement is what the reporter had to work out by hand: absolute node
and jaw paths (nothing to resolve), setsid so the process outlives the SSH
connection, stdin from /dev/null so it never blocks on a vanishing terminal,
and a log to read when it dies. It also names the liveness check, since the
#479 failure mode is silence rather than an error.

The docker branch had the same shape of problem: it printed "the container's
restart policy manages this" and exited 0 even when jaw was not the
container's entrypoint, so `jaw service` reported success having started
nothing. It now says so and prints the same manual recipe.

Refs #479
@parkjs101
parkjs101 force-pushed the codex/479-service-guidance branch from 0172cf6 to 419132d Compare August 26, 2026 10:53
Base automatically changed from codex/479-remote-path to dev August 26, 2026 15:04
@lidge-jun
lidge-jun merged commit 27fc4f8 into dev Aug 26, 2026
5 checks passed
@lidge-jun
lidge-jun deleted the codex/479-service-guidance branch August 26, 2026 15:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants