Skip to content

v0.7.0

Choose a tag to compare

@github-actions github-actions released this 01 Jul 04:37
· 12 commits to main since this release
05f7858

Added

  • Unattended one-shot policy clamp (scoot -e --unattended): the E2 keystone
    prerequisite for scoot-edge job dispatch. An unattended -e run 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_policy config knob (default readonly, override
    SCOOT_EDGE_MAX_JOB_POLICY) is the ceiling; an optional --policy <mode> may
    only lower it. The correctUnattended/privilegeMin lattice
    (readonly ⊑ guarded ⊑ unrestricted, deliberately not the Mode enum order)
    is now the single source of truth shared with the scheduler's effectiveMode.
  • scoot-edge (E1) gains a continuous run heartbeat loop: it dials out and
    POSTs a status heartbeat on a --interval-ms cadence until stopped, with a
    bounded jittered exponential backoff on transient failure (the loop never
    crashes and never opens a listener) and an optional --max-posts bound 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,
    advisory node capability descriptor (--report-capabilities, off by
    default; --label / --skill plus SCOOT_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 run now shuts down gracefully on SIGINT/SIGTERM: it finishes
    the in-flight heartbeat, then exits 0 instead of being hard-killed, making it a
    well-behaved systemd/launchd service. One-shot commands gained stable, documented
    exit codes
    (0 success, 1 dial-out POST failed, 2 config/usage error, 3
    local-status collection failed), so a failed/missing scoot 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 | sh

macOS (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 checks

Each target also ships a separate scoot-wasm-* archive: the optional
standalone Wasm host. The zero-dependency core scoot binary never embeds it.