Skip to content

Implement machines signal / exec / ps — clear the roadmap#57

Merged
lex00 merged 1 commit into
mainfrom
feat/machines-signal-exec-ps
Jul 12, 2026
Merged

Implement machines signal / exec / ps — clear the roadmap#57
lex00 merged 1 commit into
mainfrom
feat/machines-signal-exec-ps

Conversation

@lex00

@lex00 lex00 commented Jul 12, 2026

Copy link
Copy Markdown
Contributor

Closes #54, closes #55, closes #56.

What

Implements the last three roadmap endpoints, moving them from 501 to fully implemented — so /_mudflaps/health now reports an empty unimplemented list.

  • POST /v1/apps/{app}/machines/{id}/signal — validates the signal name against the Machines API enum (400 on invalid, 404 unknown machine). Like stop, mudflaps doesn't model real signal delivery.
  • POST /v1/apps/{app}/machines/{id}/exec — returns a deterministic ExecResponse (exit 0, stdout echoes the command; 400 with no command, 404 unknown). mudflaps runs no real command.
  • GET /v1/apps/{app}/machines/{id}/ps — returns a deterministic process list (a pid-1 init; 404 unknown).

New wire types: SignalRequest, MachineExecRequest, ExecResponse, ProcessStat, ListenSocket — hand-mirrored against the Machines OpenAPI.

Also

  • unimplementedPaths is now empty (retained for staging future endpoints).
  • Health test updated to expect an empty roadmap; positive tests added for each endpoint.
  • README + docs/api-coverage.md refreshed — and corrected: they no longer overstate volumes/secrets/certs/IP as 501 (those already shipped in 0.3.0).

Release

Cutting v0.4.0 after merge (minor — new endpoints). go test ./..., go vet, gofmt all clean.

The last three roadmap endpoints move from 501 to implemented, so the
/_mudflaps/health unimplemented list is now empty.

- POST .../signal — validate the signal against the Machines API enum (400 on an
  invalid name), 404 for an unknown machine; like stop, the signal is not really
  delivered (SignalRequest).
- POST .../exec — return a deterministic ExecResponse (exit 0, stdout echoes the
  command); 400 with no command, 404 for an unknown machine. mudflaps runs no
  real command (MachineExecRequest / ExecResponse).
- GET .../ps — return a deterministic process list (a pid-1 init); 404 for an
  unknown machine (ProcessStat / ListenSocket).

Moves the three paths from unimplementedPaths to implementedPaths (the former is
now empty). Updates the health test, adds positive tests for each endpoint, and
refreshes the README + api-coverage docs (which also stops overstating
volumes/secrets/certs/IP as 501 — those already ship).

Closes #54, closes #55, closes #56.
@lex00
lex00 merged commit 404a8ec into main Jul 12, 2026
2 checks passed
@lex00
lex00 deleted the feat/machines-signal-exec-ps branch July 12, 2026 17:22
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.

Implement GET /v1/apps/{app}/machines/{id}/ps Implement POST /v1/apps/{app}/machines/{id}/exec Implement POST /v1/apps/{app}/machines/{id}/signal

1 participant