1.0.0
1.0.0 (2026-06-19)
Bug Fixes
- connection module — use typed API client, fix all test failures (176d8f3)
- core: append libraries to LD_PRELOAD instead of overwriting (a57309e)
- core: getBinaryName returns null for tools with no binary (CA_CERTIFICATES) (46e0663)
- core: remove hardcoded localhost assertion — environment-dependent host (4d82338)
- core: resolve reviewer gaps in L1 field-scope implementation (9bf0a2f)
- core: update PackageInstallationHandlerTest to verify ensureInstalled not install (af8f02b)
- cpu: add docker-init to KNOWN_INIT_NAMES (88cee16)
- cpu: add startup readiness polling for cpulimit background process (a7ca0a4)
- cpu: revert exact-match to fast grep, ash-compatible prefix zombie filter (140580e)
- cpu: use PPid scan for init child detection instead of /proc/1/task/1/children (3a9e15d)
- cpu: zombie-aware process detection + tini init for test containers (ebb4e7e)
- disk: replace dd with cp/python3 in end-to-end tests; fix EIO assertions (f3e2318)
- disk: use sqlite3 for pwrite test; tighten BGSAVE-ENOSPC scenario (48bcff5)
- dns: use inet4/inet6 string tokens for FILTER_FAMILY wire format (7e0dda2)
- java: add missing @repeatable contract to NioSelectorSelect* annotations (efff890)
- java: close JVM L1 gaps — rollback, MethodSelector, Gate annos, deeper tests (78c6390)
- java: split spring-boot wrappers into production + test variants (9c2ef91)
- l1: add FIELD to nested Repeatable @target; fix FailAfter Javadoc (f1341f8)
- libchaos: reconcile Java surface with libchaos C parsers (254d00e)
- make reset() surgical, add shutdown() for nuclear teardown (ee1a5d4)
- memory: use MMAP selector for simulateOomKiller instead of WILDCARD (cfd2363)
- network: split tc netem correlated loss percent into two tokens (923bdc8)
- patterns: eliminate chunk boundary duplicates and sentinel race (0e7a123)
- process: strip LD_PRELOAD and use Docker API in integration tests (d10d410)
- process: update ProcessErrno union count to 14 after ECHILD and EINTR (d7521bc)
- proxy: convert dangling {@link} to {@code} on cross-module reference (026fbce)
- proxy: Fix test compilation and runtime failures after API evolution (82b9457)
- readme: correct three L3 annotation names to match actual implementations (89d068c)
- redis: correct factory package-info link to SentinelCluster (748b7f0)
- redis: eliminate all raw port literals — single source of truth (2d4bc8f)
- redis: final sweep — catch finals, ArrayList elimination, stale Javadoc (3c4a5c2)
- redis: remove stale Disabled imports from Sentinel test files (0cffd94)
- redis: resolve 6 L9+ issues — constants, exceptions, dedup, strategy pattern (475729f)
- toxi-core: unblock javadoc — convert 11 dangling cross-module (c67bfa4)
- update tests to match refactored API contracts (a2a135f)
Features
- Add core annotations and internal utilities for chaos testing. (59c9b88)
- add github support (f1a13cd)
- Add inital version for the modules of core, network and redis. Add comprehensive unit and integration tests. (4a203ea)
- Add Toxiproxy configuration and toxic operations (fe9926c)
- build: vendor libchaos binaries into owning modules (88f2958)
- connection: 47 L1 annotations covering 4 NetRule effect kinds (7ac81dd)
- connection: add AdvancedConnectionChaos capability interface and RuleHandle (1b236b7)
- connection: add LibchaosNetConnectionChaos strategy (e6c6dce)
- connection: add typed rule model for libchaos-net (1d3eb8e)
- connection: expose the 8 libchaos-net errnos missing from Java (2f674c2)
- connection: lazy Toxiproxy install with sticky-fail state machine (62e38c9)
- core,redis: Hybrid programmatic access pattern (INSTANCE + base interface helpers) (40f4c09)
- core,redis: Universal chaos testing extension + plugin architecture (09df73b)
- core: add @SyscallLevelChaos annotation and pre-start preparation hook (edba540)
- core: add libchaos transport infrastructure (aed9afa)
- core: add libchaos-io pre-compiled binaries to classpath resources (c0f09d2)
- core: add removeToxic and removeAllToxics to ConnectionChaos contract (5c92c7b)
- core: add ToolPackage record and PackageInstaller.ensureInstalled (dc54f09)
- core: field-scope L1 annotations, priority system, and method suspension (a56ce87)
- core: introduce ToolDefinition interface — open extension point for custom tool catalogues (8708fad)
- core: L1 chaos annotation tier scaffolding (c508f40)
- core: L10 push — SPI priority, ShellCapability, AshShell, typed prerequisites, ShellSanitizer (b1ae902)
- core: promote CPULIMIT/TASKSET/RENICE/NPROC to Tool enum + wire ensureInstalled into PackageInstallationHandler (f373749)
- core: Support List parameter injection + repeatable annotations (cf3f836)
- core: SyscallFaultInjector + SyscallRule — Java control plane for libchaos-io (4cc6d75)
- core: Validate single-instance parameter with multiple containers (b664be6)
- core: wire Tool enum into PackageInstaller.ensureInstalled (c58f89d)
- cpu: dynamic main PID resolution — works with and without --init (4ffac8a)
- disk: complete rewrite with syscall-level fault injection (6986632)
- disk: type-safe libchaos-io API with DiskOperation + DiskErrno enums (03c7ec2)
- dns: 18 L1 annotations covering EAI errnos + LATENCY (13e8cf0)
- dns: add libchaos-dns resolver-boundary backend + repair iptables backend (ddc0fe5)
- eliminate all raw PackageInstaller.install() from production code (491408c)
- end-to-end pattern→libchaos integration test + dep-verifier polish (87de150)
- filesystem: 53 L1 annotations covering 4 IoRule effect kinds (dab6ed4)
- filesystem: add libchaos-io syscall-level backend alongside shell strategy (8d3361c)
- Initial version of chaos testing. (d28ba9d)
- Introduce HTTP command builder with
CurlCommandBuilderimplementation (3a881ce) - java: add macstab-chaos-java module for JVM agent integration (7def3ca)
- java: full typed JVM L1 surface — 130 annotations + 23 translators (43edfb8)
- java: JVM L1 escape-hatch annotation (@ChaosJvmPlan) (01146a3)
- java: single-line per-framework wrapper modules + README (dad18da)
- java: wire @JvmAgentChaos into ChaosTestingExtension (annotation-only) (c4f9eaf)
- java: wire chaos-testing-java-agent for container-side delivery (ebe7445)
- l1 to l3: add L1 to L3 annotations and composers for different failure scenarios (9d54062)
- l1: add @repeatable nested-List pattern and expand Javadoc on all L1 annotations (bc6438e)
- l1: add ElementType.FIELD to @target on all L1 annotations (9a8613a)
- memory: 52 L1 annotations + parameterised translators (f87349d)
- memory: add libchaos-memory VM-syscall backend + repair cgroups backend (5e32dc4)
- patterns: add RuleSwapper for pattern-driven chaos rule mutation (1d6a7ec)
- patterns: scheduled-callback executor + failure policy + composition (43bf394)
- process: 108 L1 annotations covering ERRNO, LATENCY, FAIL_AFTER (477b25c)
- process: add libchaos-process libc-symbol backend + repair cgroups backend (a4f67ae)
- proxy,core: deleteProxy, addLimitData, shared Toxiproxy lifecycle docs (b9a9511)
- redis: add enableConnectionChaos for libchaos-net + Toxiproxy access (767438f)
- redis: command tester v2 — inspector framework, fluent assertions, dual-backend executor (4e1aa0e)
- scripts: add
sync-libchaos.shfor automated libchaos binary management and checksum verification (eaf74c5) - time: 29 L1 annotations covering ERRNO, LATENCY, OFFSET (810b1ef)
- time: add libchaos-time libc-symbol backend alongside libfaketime (7ffb86b)
- wire ensureInstalled into all consumers — CgroupsCpuChaos, ToxiproxyInstaller, Redis factories (4fee64c)
Performance Improvements
- cpu: fast grep in waitUntilGone + reduce shutdown timeouts (790ebfa)
- cpu: reduce waitUntilGone poll interval from 100ms to 10ms (e7b691d)
BREAKING CHANGES
- core,redis: Introduces plugin-based pattern, replaces per-module extensions
Phase 1: Core Foundation
- @Chaostest meta-annotation (DRY extension registration)
- @Resources universal constraints (memory/cpus/diskSize)
- ResourceParser (Docker-compatible string parsing, 26 tests)
- ChaosPlugin SPI interface (ServiceLoader discovery)
- ChaosTestingExtension (universal orchestrator, 368 lines)
- PluginRegistrationException (fail-fast plugin errors)
- MockChaosPlugin + integration tests (41 tests, all passing)
Phase 2: Redis Migration
- RedisStandalone: Added @Chaostest, removed @ExtendWith
- RedisSentinel: Added @Chaostest, removed @ExtendWith
- RedisPlugin: Container-specific setup (89 lines, 80% reduction vs 437)
- ServiceLoader registration (META-INF/services)
- RedisResourceConstraintIntegrationTest
Architecture:
- Before: 10 extensions (duplication)
- After: 1 extension + N plugins (DRY)
Benefits:
- 80% code reduction per module (437 → 89 lines)
- Zero duplication (lifecycle + resources centralized)
- Consistent UX (same pattern across all modules)
- Open/Closed (add module = 0 core changes)
- L9+ architecture (clean, reliable, resilient, safe)
- Maximum UX (fail-fast, clear errors, intuitive)
Backward compatible:
- User code unchanged (annotations work same way)
- Parameter injection unchanged
- Container creation unchanged
- Only internal: @ExtendWith → @Chaostest (users never see)
Testing:
- 36 unit tests (100% passing)
- 5 integration tests (real Docker containers)
- 100% ResourceParser coverage
- ~85% ChaosTestingExtension coverage
Security:
- Shell injection impossible (strict regex validation)
- Plugin discovery explicit (no classpath scanning)
- Input validation at every boundary
- Fail-fast with actionable errors
Phase 3 (future):
- Restore INSTANCE programmatic access
- Create SentinelPlugin
- Delete old extensions
- Full integration test suite
Co-authored-by: Christian Schnapka christian.schnapka@macstab.com
Co-authored-by: Flux flux@openclaw.ai