Vote for your favorite SkillMD. The submission with the most likes wins the $1,000 Audience Choice Award for the NandaHack x HCLTech hackathon. Voting is open through September 25.Vote now →
mergedhumanPR #255Transport

Fail closed on invalid fault-rule numbers

- Validate every current fault-rule numeric field before a run starts.

Author

JamesCarnley avatar

@JamesCarnley

github profile →
Status
Merged
Merged on
Sep 4
Branch
fix/fault-rule-number-domain

Description

The pitch.

## Summary

- Validate every current fault-rule numeric field before a run starts.
- Require exact integer `nth >= 1`, finite non-negative delay, and finite drop rate in `[0, 1]`.
- Reject booleans, strings, negative values, NaN, infinity, and out-of-range values even when a field is unused by the chosen action.
- Keep the shipped JSON schema synchronized with the runtime model.

## Why

Malformed fault values could silently change test meaning: negative delays were clamped, out-of-range rates became always-or-never behavior, and positive infinity could enter the event queue. A test harness must fail closed on invalid fault configuration rather than produce a misleading run.

This fail-closed requirement was surfaced while reviewing legacy PR #8 from @mariagorskikh. This is a fresh implementation against current `main`; no contributor code was executed or copied.

## Scope boundary

This PR validates the existing drop, duplicate, delay, and drop-rate rules. It does not adopt the legacy latency-model plugin, jitter distributions, bandwidth, queue, partition, or SLO policy.

## Verification

- Fault/schema/tooling tests: 31 passed
- Full suite: 552 passed, 8 existing warnings
- Diff check passed
- Independent review: no findings for this isolated change

Try it

Open PR on GitHubView diff

Checkout locally

git fetch origin pull/255/head:pr-255
git checkout pr-255