v0.9.0-rc.1
Pre-releasesykli 0.9.0-rc.1
Release candidate — GitHub-only prerelease. No registry publishes; binaries
below are for local testing.
The mandate release.
Schema v5 lands end to end: contracts declare who executes a task (actor)
and under what bounded authority (mandate), the engine enforces those
bounds with git-backed verification, and sykli audit judges any recorded
run against the pinned contract. Alongside it: the Sykli Workbench, a
local-first web control room for one repo.
Highlights
v5: actor + mandate, enforced
- All five SDKs emit v5 (
actor,mandate). Agent actors require a
mandate, non-emptysuccess_criteria, and non-emptyevidence_required
— a hard schema error otherwise. Gate and review tasks reject the new
fields. - The executor enforces mandates. Scope is verified with git
fingerprints (pre-existing dirty files cannot hide task writes), budgets
cap diff lines and wall clock, andcapabilities.network: falsedenies
network where the runtime supports isolation. Every executable task with
a mandate records amandate_outcome
(kept/violated/unverified/unsupported) in run history —
verification never fails open. sykli audit <run-id>. Judges a recorded run manifest: lock hash
match, success-criteria and evidence results recorded, mandate outcomes
present for agent tasks. The verdict is computed at read time against the
currentsykli.lock— re-locking a different contract flips old runs
to fail. The core lives inSykli.Services.Audit, shared by CLI and the
Workbench.
Sykli Workbench (sykli gui)
A local-first control room for one repo: contract, run graph, members,
work items, gates, evidence, activity — one screen. Bandit + Plug bound to
127.0.0.1 only; the SPA is embedded in the binary at compile time.
- Real data by default. Repo identity from git, contract from
sykli.lock/.sykli/context.json, runs and evidence from.sykli/runs/,
work items and gates from their local stores. The GUI never executes repo
code —GET /api/statecannot trigger an SDK emit.--demoserves the
showcase dataset. - Gate decisions write through. Approving a gate in the browser produces
the same.sykli/gates/<id>.jsonartifact assykli gate approve, with
member:-qualified attribution. - The v5 story rendered. Contract-declared agent actors appear as
members with their mandates; nodes show mandate outcomes; evidence rows
show the live audit verdict and a per-run mandate summary.
Fixes
- Daemon heartbeat shutdown. The final offline goodbye in
terminate/2
can no longer turn a clean stop into a crash when the transport is
already gone (e.g.:inetsstopping during VM drain). - Run lookup by id.
Sykli.RunHistory.get/2finds a run without
loading every manifest; corrupt manifests cannot hide valid runs.
Using the SDKs with this rc
This is a GitHub-only prerelease: no SDK package was pushed to any
registry (crates.io, PyPI, Hex, npm, Go module tag). Registry versions
resolve again at the stable 0.9.0 tag. Until then, depend on the tag
directly:
Rust (verified against this tag):
[dependencies]
sykli = { git = "https://github.com/false-systems/sykli", tag = "v0.9.0-rc.1" }Python:
pip install "git+https://github.com/false-systems/sykli@v0.9.0-rc.1#subdirectory=sdk/python"Elixir:
{:sykli, git: "https://github.com/false-systems/sykli.git", tag: "v0.9.0-rc.1", sparse: "sdk/elixir"}Go (the module-aware sdk/go/v… tag ships with stable releases only;
pin the release commit):
go get github.com/false-systems/sykli/sdk/go@5e0130eTypeScript: npm cannot install a subdirectory of a git repo — clone the
tag and use a local file: dependency on sdk/typescript for now.
Compatibility
- Pipelines emitting versions
"1"–"4"are unchanged."5"is emitted
automatically whenactor/mandateare used. - Run manifests gain optional
mandate_outcomeon task results; older
manifests read cleanly. - New CLI surface:
sykli audit <run-id>,sykli gui. New error codes are
cataloged indocs/error-codes.md.
Checksums
SHA256SUMS.txt is attached to this release.