chaos, in a scenario with an INJECT_FAULT step, or from a coding agent with arm_fault.
HTTP faults
Delays compose: a
latency fault on top of an error delays the error. Every delay is capped at 60 seconds.
Webhook faults
These match on the event (--event, default any) rather than on a method and path.
Virtual versus real time
By default every delay is virtualized: the response is instant and carriesx-pikopod-fault-delay-ms with the delay it represents. That is what scenario run measures, and it is why a 30-second timeout scenario finishes in milliseconds. hang, slow_body, connection_reset, malformed_response and wrong_content_length are transport-level lies and only act on the real wire.
To put delays and hangs on the wire for your own tests, arm with --wallclock, or start the server with pikopod up --wallclock-faults.
Probability and windows
Every response that a fault touched carries
x-pikopod-fault-applied, which is what the execution.faultApplied assertion reads.
Listing and clearing
--clear with no method and path clears every fault, including webhook faults. mode clear also clears every fault. See pikopod chaos.