aws/event-ruler
66.4
Adequate · 22 September 2026
9.7k
lines of production code
Java
primary language
6
measurements over time
What this system is
Event Ruler is a Java library designed for evaluating rules against JSON event data. It provides a matching engine that supports case-insensitive comparisons, wildcard patterns, and strict array-boundary enforcement to prevent false positives. The system includes utilities for high-performance number parsing and automated benchmarking to monitor performance regressions.
Features
Added perf-compare.sh script for StableBenchmarks analysis
A new shell script, scripts/perf-compare.sh, has been added to automate the comparison of performance benchmark results between two git references. The script checks out specified refs, runs the StableBenchmarks harness, and generates a CSV report highlighting improvements, regressions, or noise based on a stddev-aware heuristic.
scripts · high confidence
Behavioural changes
Add array-consistent rule matching via ACFinder
The library now includes an array-consistent matching engine (ACFinder) that ensures rules are not matched by combining fields from different elements within the same JSON array. This new capability, supported by internal classes like ArrayMembership and ACStep, prevents false positives where a rule might incorrectly match if its conditions are satisfied by separate items in an array rather than a single object. This addresses a specific behavioral gap in the previous matching logic where array boundaries were not strictly enforced during rule evaluation.
src/main/software/amazon/event/ruler · high confidence
Refactored input parsing to support case-insensitive and wildcard matching
The input parsing logic has been refactored to introduce dedicated parsers for specific match types, enabling support for case-insensitive comparisons (equals-ignore-case, prefix, and suffix) and wildcard patterns. The new architecture uses specialized classes like EqualsIgnoreCaseParser and WildcardParser to correctly handle UTF-8 multi-byte characters and case variations, while DefaultParser routes rule values to the appropriate handler based on the MatchType. This change also includes a fix for shortcut expansion bugs related to equality comparisons between InputByte and InputMultiByteSet.
src/main/software/amazon/event/ruler/input · high confidence
Test coverage
Added unit tests for input parsing components; Expanded test coverage for rule matching, deletion, and performance.
Dependencies
Initial Maven build configuration for Event Ruler v2.2.0
This change introduces the Maven \pom.xml\ for the Event Ruler library, establishing the project structure for version 2.2.0. It configures the build to target Java 1.8 and includes runtime dependencies on Jackson Databind (v2.22.2) for JSON processing, fastdoubleparser (v2.0.1) for high-performance number parsing, and JSR-305 for annotations. The configuration also sets up test dependencies including JUnit 4.13.2 and JMH 1.37 for microbenchmarking, along with build plugins for source and javadoc generation, checkstyle, SpotBugs, and GPG signing.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 63 → 66 (+3.6)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 73 → 82 (+9.2)
- Architecture 100 → 100 (-0.0)
- Maturity 55 → 59 (+3.4)
- Readiness 73 → 68 (-5.2)
- Security 62 → 70 (+8.2)
Resolved (44)
- ByteMachine.findMatchPattern (cognitive 29) (src/main/software/amazon/event/ruler/ByteMachine.java)
- ByteMachineTest.WHEN_NumericRangesAreAdded_THEN_TheyWorkCorrectly (cognitive 126) (src/test/software/amazon/event/ruler/ByteMachineTest.java)
- ByteMachineTest.WHEN_NumericRangesAreAdded_THEN_TheyWorkCorrectly (cyclomatic 59) (src/test/software/amazon/event/ruler/ByteMachineTest.java)
- ByteMachineTest.WHEN_PatternAdded_THEN_ItCouldBeFound_AndReturnNullForOtherPatternSearch (cognitive 16) (src/test/software/amazon/event/ruler/ByteMachineTest.java)
- ByteMachineTest.WHEN_ShortcutTransAddedAndDeleted_THEN_TheyWorkCorrectly (cognitive 22) (src/test/software/amazon/event/ruler/ByteMachineTest.java)
- ByteMachineTest.WHEN_ShortcutTransAddedAndDeleted_THEN_TheyWorkCorrectly (cyclomatic 16) (src/test/software/amazon/event/ruler/ByteMachineTest.java)
- Coverage not included — suite not readable by the collector
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- Dormant codebase
- Duplicated block (10 lines × 2) (src/main/software/amazon/event/ruler/ByteMachine.java)
- Duplicated block (10 lines × 2) (src/main/software/amazon/event/ruler/JsonRuleCompiler.java)
- Duplicated block (10 lines × 2) (src/main/software/amazon/event/ruler/JsonRuleCompiler.java)
- Duplicated block (10 lines × 2) (src/main/software/amazon/event/ruler/JsonRuleCompiler.java)
- Duplicated block (10 lines × 2) (src/main/software/amazon/event/ruler/JsonRuleCompiler.java)
- Duplicated block (10 lines × 4) (src/main/software/amazon/event/ruler/JsonRuleCompiler.java)
- Duplicated block (11 lines × 2) (src/main/software/amazon/event/ruler/Event.java)
- Duplicated block (11 lines × 2) (src/main/software/amazon/event/ruler/JsonRuleCompiler.java)
- Duplicated block (12 lines × 2) (src/main/software/amazon/event/ruler/CIDR.java)
- Duplicated block (12 lines × 2) (src/main/software/amazon/event/ruler/JsonRuleCompiler.java)
- Duplicated block (12 lines × 2) (src/main/software/amazon/event/ruler/JsonRuleCompiler.java)
- …and 24 more
New (60)
- ByteMachine.findAllMatchPattern (cognitive 29) (src/main/software/amazon/event/ruler/ByteMachine.java)
- ClassTooLong: ByteMachine (src/main/software/amazon/event/ruler/ByteMachine.java)
- ClassTooLong: JsonRuleCompiler (src/main/software/amazon/event/ruler/JsonRuleCompiler.java)
- ClassTooLong: RuleCompiler (src/main/software/amazon/event/ruler/RuleCompiler.java)
- Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
- Documentation: no installation or build instructions (README.md)
- Duplicated block (10 lines × 2) (src/main/software/amazon/event/ruler/JsonRuleCompiler.java)
- Duplicated block (11 lines × 2) (src/main/software/amazon/event/ruler/CIDR.java)
- Duplicated block (12–13 lines × 2) (src/main/software/amazon/event/ruler/Event.java)
- Duplicated block (13–14 lines × 2) (src/main/software/amazon/event/ruler/JsonRuleCompiler.java)
- Duplicated block (14 lines × 2) (src/main/software/amazon/event/ruler/ByteMachine.java)
- Duplicated block (14 lines × 4) (src/main/software/amazon/event/ruler/JsonRuleCompiler.java)
- Duplicated block (14–15 lines × 2) (src/main/software/amazon/event/ruler/StructuredFinder.java)
- Duplicated block (15 lines × 2) (src/main/software/amazon/event/ruler/ACTask.java)
- Duplicated block (15 lines × 3) (src/main/software/amazon/event/ruler/JsonRuleCompiler.java)
- Duplicated block (16 lines × 2) (src/main/software/amazon/event/ruler/JsonRuleCompiler.java)
- Duplicated block (16 lines × 3) (src/main/software/amazon/event/ruler/JsonRuleCompiler.java)
- Duplicated block (17 lines × 2) (src/main/software/amazon/event/ruler/JsonRuleCompiler.java)
- Duplicated block (17 lines × 2) (src/main/software/amazon/event/ruler/JsonRuleCompiler.java)
- Duplicated block (18 lines × 2) (src/main/software/amazon/event/ruler/Event.java)
- …and 40 more
Changes since last survey
- 27 commits — 16 feature/other, 11 fixes
By area
- (repo) — 9 commits
- (root) — 6 commits
- src/main — 6 commits
- src/test — 4 commits
- .github/workflows — 2 commits
Notable commits
- fix: Fix order-dependent deletion for superset value lists
- fix: Merge pull request #263 from Pybsama/codex/fix-superset-value-delete
- fix: Merge pull request #270 from aws/fix-mce-exponential-evaluation
- fix: Merge pull request #277 from aws/fix-trailing-content-after-rule
- fix: Merge pull request #280 from aws/fix-anything-but-delete-strand
- fix: fix: Count machines behind absent-key patterns toward complexity
- fix: fix: Recurse once per next NameState in complexity evaluation
- fix: fix: Reject content after the rule's root object
- fix: fix: Return every NameState an anything-but pattern reaches
- fix: fix: guard forward multi-byte walker against non-InputByte continuation positions
- fix: test: Add complexity evaluator benchmarks and regression checks
- change: Merge pull request #265 from leezachydev/forward-walker-inputbyte-guard
- change: Merge pull request #267 from aws/dependabot/maven/com.fasterxml.jackson.core-jackson-databind-2.22.2
- change: Merge pull request #268 from aws/dependabot/github_actions/actions/setup-java-6
- change: Merge pull request #275 from aws/dependabot/maven/org.apache.maven.plugins-maven-compiler-plugin-3.16.0
- change: Merge pull request #278 from aws/absent-key-complexity-opt-out
- change: chore(deps): bump actions/setup-java from 4 to 6
- change: chore(deps): bump com.fasterxml.jackson.core:jackson-databind
- change: chore(deps-dev): bump org.apache.maven.plugins:maven-compiler-plugin
- change: chore: Bump version to 2.0.2
- …and 7 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
aws/event-ruler was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 22 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit ced786201c1f43ec73482b78f3d1843aa4bd2f89 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-90d5d2fe38ee.