QUEUE row 17, MVP iteration 2. scripts/discord-service.sh renders and installs mosaic-discord@<binding> from packages/discord/systemd/. The unit's main process is `run --supervised`, which applies the new recover policy first: a lock whose owner is gone is cleared and only the STOP written for that is removed; an operator STOP or a held binding refuses with exit 3, which RestartPreventExitStatus never retries. `recover` is also a CLI verb. First cut used ExecStartPre and looped live, since systemd honours the never-retry status only from the main process; replaced and re-verified before any message traffic. Suite 40/40, 95 node tests. Co-Authored-By: Claude Fable 5.1 <[email protected]>
12 lines
457 B
JavaScript
12 lines
457 B
JavaScript
// One error class for the package. exitCode follows docs/TOOLS.md: 1 operation
|
|
// failed, 2 invalid data or configuration, 3 refused by a brake (STOP or a
|
|
// held binding; a supervisor must not retry), 4 usage.
|
|
export class DiscordError extends Error {
|
|
constructor(message, exitCode = 2, details = undefined) {
|
|
super(message);
|
|
this.name = "DiscordError";
|
|
this.exitCode = exitCode;
|
|
if (details !== undefined) this.details = details;
|
|
}
|
|
}
|