com um clique
com um clique
Differential audit comparing matched code paths that should behave identically. Spawns one auditor per sibling pair (sync/async, bounded/unbounded, view consistency, bulk vs single, generated node variants, read fast vs slow) and requires a concrete witness scenario where the two paths diverge observably.
Heavyweight history-mining bug audit. Walks the caffeine module's git history chronologically (oldest to HEAD), maintains a forward-tracked issue database, and surfaces concerns introduced by past commits that were never resolved. Catches bugs that snapshot mining cannot — half-fixes invisible from current state, latent+trigger pairs across multi-commit interactions, and partial refactors. Slow (~8-14 hours) and rare-run (every several months or before a major release).
Find places where documented API contracts and the implementation diverge
Audit exception safety and failure atomicity across all throw sites
Analyze feature interaction pairs and triples for concurrent defects
Analyze concurrent iteration and view consistency guarantees
| name | audit-jmm |
| description | Java Memory Model audit of all VarHandle/volatile field access modes |
| context | fork |
| agent | auditor |
| disable-model-invocation | true |
Perform a Java Memory Model audit of the cache.
For every field accessed via VarHandle or Unsafe, and for every field declared volatile or accessed under synchronization:
Specific areas to examine:
For each issue:
Do not report issues that only affect performance. Do not report deliberately racy patterns with documented stale-read tolerance.
Platform focus: Pay specific attention to aarch64 (ARM) memory ordering. ARM's weaker-than-TSO model exposes reordering bugs invisible on x86. Historical bug: WeakValueReference.keyReference required setRelease + storeStoreFence (not just setRelease alone) because the field is non-final and aarch64 reorders the field write after reference publication. Check for similar patterns — non-final fields published via release without a fence.