v0.7.0
Added
- Unattended one-shot policy clamp (
scoot -e --unattended): the E2 keystone
prerequisite forscoot-edgejob dispatch. An unattended-erun now computes
its effective policy in-child as
correctUnattended(privilegeMin(requested, edge.max_job_policy)), so argv (and a
future wire) can only ever lower policy below the local ceiling, never raise it.
A new local-only[edge].max_job_policyconfig knob (defaultreadonly, override
SCOOT_EDGE_MAX_JOB_POLICY) is the ceiling; an optional--policy <mode>may
only lower it. ThecorrectUnattended/privilegeMinlattice
(readonly ⊑ guarded ⊑ unrestricted, deliberately not theModeenum order)
is now the single source of truth shared with the scheduler'seffectiveMode. scoot-edge(E1) gains a continuousrunheartbeat loop: it dials out and
POSTs a status heartbeat on a--interval-mscadence until stopped, with a
bounded jittered exponential backoff on transient failure (the loop never
crashes and never opens a listener) and an optional--max-postsbound for
supervised/bounded runs. Each iteration uses a reset-per-post arena so an
unbounded run holds bounded memory. The heartbeat can also carry an opt-in,
advisorynodecapability descriptor (--report-capabilities, off by
default;--label/--skillplusSCOOT_EDGE_LABELS/SCOOT_EDGE_SKILLS
feed it) for capability-aware routing — advertising never grants authority, the
local policy ceiling still gates every job.scoot-edge runnow shuts down gracefully onSIGINT/SIGTERM: it finishes
the in-flight heartbeat, then exits0instead of being hard-killed, making it a
well-behaved systemd/launchd service. One-shot commands gained stable, documented
exit codes (0success,1dial-out POST failed,2config/usage error,3
local-status collection failed), so a failed/missingscoot daemon status --json
child now prints a clean message instead of a raw error trace.
Install
curl -fsSL https://raw.githubusercontent.com/jamiesun/scoot/main/install.sh | shmacOS (Homebrew):
brew install jamiesun/tap/scoot # the agent
brew install jamiesun/tap/scoot-wasm # optional Wasm compute-unit host (pulls in scoot)Build flavors
Prebuilt archives are ReleaseSafe only (runtime safety checks on). If you
need a smaller binary, compile from source:
zig build -Doptimize=ReleaseSmall # smallest, fewer safety checksEach target also ships a separate scoot-wasm-* archive: the optional
standalone Wasm host. The zero-dependency core scoot binary never embeds it.