Skip to content

Releases: litmuschaos/litmus-lite

v0.2.0

Choose a tag to compare

@ksatchit ksatchit released this 29 Oct 04:35
b00f325

litmus-lite v0.2.0

The first release meant for people who did not write it, and the first from the litmuschaos organisation. It makes a green run mean something, closes several ways an agent or a stray scenario could do more than its author intended, and turns the project into one a stranger can install and try in five minutes.

It changes behaviour in ways that can turn a run that passed on v0.1.x red, or make a command refuse something it used to do. The list is below; read "Upgrading" first.

Quick start: README. Install: download the archive for your system below, check it against checksums.txt.

Upgrading from v0.1.x

Before Now What to do
A hypothesis value that could not be read (800 for a latency, lots) became 0 or was ignored It is an error when the file is loaded. Units are strict: error_rate and availability are percentages (5 or 5%), p50/p95/p99 are durations (a bare number is milliseconds), recovery is a duration (a bare number is seconds), rps is a number Run litmus-lite validate FILE on your scenarios
A hypothesis over a window with no samples passed It fails with observed: "no data" Fix the probe, or set allowNoData: true on a hypothesis that is expected to have no samples
recovery <= 30s passed if the run ended before the service recovered It fails with observed: "not recovered" Lengthen recover, or fix the service
on-chaos probes ran all the time; an unknown mode was ignored on-chaos samples only while the faults are armed; an unknown mode is an error; SOT in probes runs once before the faults and stops the run if it fails Check your mode values
Misspelled keys (dealy: 800ms) were ignored They produce a warning, with the closest valid name. -strict turns warnings into errors Add -strict to validate in CI
An agent (MCP) could pass yes, allow-target and allow-pid MCP refuses them unless a person enabled them in LITMUS_LITE_MCP_ALLOW of the server entry litmus-lite init -env LITMUS_LITE_MCP_ALLOW=allow-pid, then restart the server
The live view was on by default It does nothing until a service is configured (live enable URL, -live-url, or LITMUS_LITE_LIVE_URL). Nothing is sent and no browser opens otherwise Configure it if you use one. init -live-dir is replaced by init -env KEY=VALUE
Ctrl-C or SIGTERM could leave faults in place Faults are rolled back on SIGINT and SIGTERM; the exit code is 130 and there is no report None
A Kubernetes service host (*.svc) was refused even with -allow-target It needs -allow-target HOST and -yes Pass both
export job used an image that does not exist -image IMAGE is required; the output is a ConfigMap and a Job; the Job passes -yes and -allow-target only when you did; a scenario the Job would refuse is refused at export. The project publishes no image Build or mirror an image with litmus-lite on its PATH. Still experimental
ci github wrote a workflow that only worked in this repository It writes a workflow that installs a release (checked against checksums.txt) and runs validate -strict on every *.chaos.yaml. -version TAG pins a release; -force overwrites an existing file Re-run litmus-lite ci github -force. Because it runs validate -strict, a scenario with no hypotheses or a proxy fault no probe calls now fails that job until fixed
move-to -adapter harness Removed (it was a stub). ir and litmus remain None
A scenario with no hypotheses ran green whatever the probes saw validate and run warn "no hypotheses: this run cannot fail", and -strict makes it an error. The cpu.hog, memory.hog and disk.fill templates now ship with hypotheses Add at least one hypothesis (error_rate or recovery)
An HTTP fault (http.latency, http.status-inject, http.timeout) whose listen address no probe called passed, because nothing went through the proxy validate warns when no probe calls the listen address, -strict makes it an error, and run warns when the proxy saw no request while armed Point the probes, the load generator or your client at listen, not at the upstream
The code lived at github.com/ksatchit/litmus-lite It lives at github.com/litmuschaos/litmus-lite, and the Go module path changed with it. GitHub redirects the old URLs Update go install, clone and release links. A Homebrew install is not published for v0.2.0; use the release archive
report.json had no version schemaVersion: 2, and noData and allowNoData on each hypothesis. Older reports are read as version 1; a report from a newer version is refused None

New

  • HTTP body assertions. expect.body.contains, notContains and matches on an HTTP probe, each a string or a list. The first 1 MiB is judged; the failing assertion is recorded in the sample without quoting the body. An assertion that cannot work (a bad regular expression, a number) is an error when the file loads.
  • A notice when a scenario runs commands. validate and run list every cmd probe and load.tool: command command before anything runs; validate -output json returns them as runsCommands.
  • README quick start with one green and one red run using only examples/cashier (charge.chaos.yaml, and the new charge-must-survive.chaos.yaml).
  • SECURITY.md with what is checked, what is not, and how to report; CONTRIBUTING.md (DCO), CODE_OF_CONDUCT.md, GOVERNANCE.md, MAINTAINERS.md, issue and pull request templates.
  • A steady-state failure says where and why. A probe that fails before any fault starts reports its name, method, URL (without credentials or query) and the reason, with a hint when the connection was refused.
  • Strict checking (-strict) on validate and run, and MCP strict.
  • init -env KEY=VALUE writes environment variables into the MCP server entry; live enable|disable.
  • The report and the HTML name the load generator that ran (tool and version), and doctor warns when an older copy shadows a newer one.
  • A run is judged and reported the same in report.json and in the streamed run.finished event (startup warnings are in both).

Fixed

  • An interrupted run rolls everything back (process.pause, docker.pause, disk.fill).
  • export job and the hub import closed against injection through a scenario name or a template.
  • An older vegaload without -stream-file no longer leaves a stray report or opens a browser tab.
  • The Linux and Windows tests that blocked the v0.1.2 release; every release path is tested in CI, and the tests run before the release job, not inside it.

Known limitations

Listed in full in SECURITY.md and the README: docker.pause has no allowlist; a command probe or a load.tool: command runs with your permissions; SIGKILL of litmus-lite during process.pause leaves the process stopped; HTTP probes follow redirects; a failing EOT probe is recorded but does not change the verdict; command probes need sh; release binaries are not signed. The HTTP fault proxy speaks HTTP/1.1 on plain TCP: gRPC and cleartext HTTP/2 are not supported, an https-only upstream and long-lived connections (WebSockets, SSE) are untested, and a fault applies to a long-lived connection only when it is opened. A failed probe sample can carry the probe URL, with its query string, in the report: keep secrets out of probe URLs.

Checksums

checksums.txt is attached to the release. Verify with sha256sum --check --ignore-missing checksums.txt (shasum -a 256 -c on macOS).

v0.1.1

Choose a tag to compare

@github-actions github-actions released this 13 Oct 13:48

Changelog

  • 9456c2b Advertise MCP tool input schemas, forward hub_import name, and report the real version at initialize

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 13 Oct 13:25

Changelog

  • 7bde6a0 Add a Go failpoint SDK and the cashier sample so a named hook stays dark until a scenario arms it for the inject window
  • f586029 Add a Litmus 4.0 move-to file adapter and an optional git-pinned ChaosHub so a scenario can leave the laptop without ChaosEngine CRDs or a required network.
  • 47c5510 Add docker.pause, cpu/memory hog, and capped disk.fill (kill/fill still need -yes), plus JUnit output, a Windows HTTP CI job, richer hub import, a clearer overlay HTML report, and terminal/Cursor/VegaLoad LaunchPad playbooks.
  • f5246da Add litmus-lite: agent-native chaos CLI, hub faults, and self-contained overlay reports.
  • 1626cce Add process.kill with SIGTERM-then-SIGKILL so a local process can be terminated only when the operator passes -yes.
  • 5176d7d Fail closed on destructive faults: signal only an allowlisted PID, and refuse to let disk.fill overwrite an existing file.
  • 5d6e50d Generalize load: so VegaLoad stays the default and k6 or an internal command can merge into the same overlay.
  • 20e44aa Initial commit
  • cbeb73a Make mcp eval run versioned CLI-backed fixtures so a tool without a CLI equivalent fails before an agent can rely on it.
  • d71a66a Merge VegaLoad time series into the overlay and keep the HTTP proxy up across steady/inject/recover.
  • 5ccbfe8 Serve now skips any message without an id, and removed the fake reply for initialized
  • 8489fcc add homebrew based install support
  • 2d55227 add newer todo and other notes as comments
  • 7b812e4 add todo and other notes as comments
  • a283edc fix the launchpad probe path
  • 39aec49 fix windows ci build