During a hybrid-CPU benchmark investigation, the sender was found on CPU 21 while the experiment expected performance-core placement. Operators had to inspect PMU lists and CPU frequencies manually. This change exposes those observations without changing allocation or claiming that a sampled frequency proves performance.
Add immutable CPU capability snapshots, restricted to the caller-supplied mask intersected with online CPUs. Intel hybrid PMU membership supplies coarse PERFORMANCE/EFFICIENCY/UNKNOWN class and source. Optional cpuinfo_max_freq supplies maximum kHz and its separate source; missing values remain unknown. Do not infer class from CPU IDs or MHz, and do not substitute a governor cap for the hardware maximum. Includes corrected README affinity examples and a focused capability guide.
Verification: fresh Linux/Java 21 offline mvn -o -q -f affinity/pom.xml verify: 93 tests, 91 passed, two existing JNIClock skips, zero failures/errors. Fifteen capability/frequency fixture tests cover sparse/restricted/offline CPUs, unknown/malformed/conflicting data, refresh, optional maximum and source semantics. Retained online-mask negative control fails. The updated API also compiles for Java 8. A local observation reported CPU 0/12/21 maxima of 4800000/3800000/2500000 kHz; this is not a benchmark.
Draft conditions: review the public API and source/unknown semantics. The PMU source cannot distinguish E from LP-E, sysfs reads are not atomic with hotplug, and the caller owns the eligibility envelope. Other hosts/platforms and manual acceptance remain open. No automatic placement, performance ranking or speedup is established.
Develop refresh — 11 November 2026
Rebased onto develop e2da74d257f993d08f39a844848bae503fb3a036; incremental PR changes are unchanged. Fresh Linux/Java 21 offline clean verify passed for the full affinity module; the two existing JNIClock skips remain. Previously triaged cross-platform CI failures remain open; this local verification does not establish green TeamCity matrices.
Candidate-owned CI repair — 11 November 2026
Windows CI exposed slash-specific expected source paths. Build the expected paths with the fixture filesystem instead. Production detection is unchanged. Linux/Java 21 offline module verify: 93 tests, zero failures/errors, two existing JNIClock skips. Windows rerun remains required.