This release is the v1 beta. It adds three detectors, resolves the last planned platform cell, and
extends guarded values to Windows and byte strings. It also closes runtime and host-integration
gaps before the v1 release proof.
Detector coverage
instrumentation.local_agentsends a bounded protocol query to loopback. A port alone creates no
finding. The peer must answer a Frida-compatible WebSocket exchange.- The loopback probe uses no DNS or non-loopback address. It caps its read and its deadline. It runs
in a full scan rather than the synchronous cheap scan. - Frida 17.17.0 supplies the real hostile control on macOS. An exact protocol control and an
unrelated service run on all five platforms. instrumentation.image_catalogcompares executable file mappings with the loader catalog on
Linux, Android, and Windows. It reportsMediumwhen a file-backed image bypasses the loader.- The image-catalog clean controls cover normal late loads and runtime code. The hostile control
maps a valid library image without loader registration. device_compromise.verified_bootreads the Android verified-boot color and the vbmeta device
state. It usesro.boot.flash.lockedonly as a compatibility fallback.- An unlocked or unverified boot reports
Medium. A missing or conflicting answer reports aLow
health finding rather than a clean device. - A locked physical device supplies the verified-boot clean control. The hostile property states
have deterministic controls. A real unlocked-device control remains open. - Each new detector gets a narrow capability. The release adds no detector plug-in system and no
second platform pattern.
Guarded values
- Windows gains code-identity binding for
guarded!(). The binding uses the SHA-256 digest of the
Authenticode signer certificate that the Windows probe already reports. - A trusted signer, another signer, and an unsigned image supply the Windows controls. The wrong
signer returns a wrong guarded value with no error path. guarded_bytes!()protects a byte-string literal and returns a bounded value that wipes on drop.
It permits data that the printable string alphabet cannot hold.- The byte form keeps one inline reader per call site. It shares the existing key schedule and adds
no common decryption function. - The artifact tests reject plaintext and recover each value with the correct public inputs. They
recover no value with another identity, and two seeds produce two different artifacts.
Runtime and failure contracts
- The cheap and full scan sets become different for the first time. The loopback detector runs in
the full set, and the other bounded detectors remain in both sets. require_complete_coverage()runs each required detector before success. This includes a bounded
full-only detector when its category is required.deny_until_first_full_scan(),first_full_scan_complete(), and the bounded wait gain controls
against the real full-only detector.- After a resume, the worker completes
scan_all()before it applies a pending host callback or a
pending stop action. - The resume control suspends the worker during its wait and during an active scan. Both paths must
put a new full scan before host code. - A capability error remains
Observation::Failedthrough start and every worker path. It becomes
aLowhealth finding and never a clean or unsupported result. - A detector panic stays inside that detector. The worker continues the scan and later cycles.
- The loopback deadline, a callback panic, a failed platform read, and a worker setup failure each
get a deterministic control. - The implementation keeps two scan sets and one worker loop. It adds no general task scheduler.
Platform completion
MachineHostdistinguishes a virtual machine from a simulator or an emulator.
SimulatedEnvironmentcarries the new public evidence without a false monitor claim.- iOS gains
emulation. A physical device and a simulator supply themachine_hostcontrols. - The iOS
devicecell becomesno. The iOS 26.5 SDK exposes no public compromise state, and a
provisioned iOS 26.6.1 application receivesEPERMfromkern.securelevel. - The release adds no jailbreak path list. A missing public state stays visible as
Unsupported. - The clean iOS device also proves a signed team identity and the bounded local-agent exchange.
- A physical Android device proves its build state, hardware host, signed archive, guarded values,
and system-driven resume. - The Android harness runs on ARM64 hardware. The cross-check builds ARM64 and x86-64 Android
targets. The minimum release gets a build check. - The project guests supply the hostile Linux and Windows
machine_hostcontrols. The clean
physical-host controls remain open. - Linux and Windows run the detector controls on ARM64. Windows also runs selected controls through
x64 emulation and signs the identity subjects in the guest. - macOS 26 on ARM64 gets all runtime controls on a physical host and the project guest.
- The platform record must show each required control on all five platforms. A platform gets the
supported label only after its record is complete.
Tauri and host integration
- The Tauri adapter gains fallible handle access with a typed error. A missing plug-in no longer
needs a panic as the only answer. - The Rust extension supplies direct methods for the denial check and a
UiAbusereport. It still
exposes no WebView command or frontend event. - A Tauri mock application proves setup, state access, a denial, a host report, and an initial
full-scan wait. - The package gate checks both fallible access paths and the compatibility panic path on macOS.
Compatibility and release proof
- The project accepts the expanded Rust surface and the Serde shape as the v1 compatibility
baseline. The surface and schema tests hold that baseline. - The existing process-map fuzz target reaches the new image-catalog classification. The release
run covers all 14 hostile-input targets. - The sanitizers cover the socket boundary and all probe code. Miri covers the new portable state
and detector paths. The package gate covers each facade feature and both Tauri access paths. - The release publishes all versioned workspace crates and
tauri-plugin-fidelityto crates.io.
A clean consumer buildsfidelityon Rust 1.85 and the adapter on Rust 1.88. - The Fidelity workspace graph contains no RustSec vulnerability, unaccepted source, remote runtime
client, or accidental WebView surface. - The adapter accepts
RUSTSEC-2024-0429in Tauri's Linux GTK3 graph. Tauri 2.11.5 is current and
offers no safe update. The adapter calls noglibAPI, and the GitHub alert stays open. main, thev0.4.0tag, the manifest version, the test record, and the public release must
identify one commit.
This release adds no new category, remote service, remote attestation, proactive OS enforcement,
language binding, or obfuscation.