feat(example): nft_marker_gen .fset3 via RustFreakMatcher — drop ffi-backend (#179)#219
Merged
Merged
Conversation
…backend (#179) `nft_marker_gen` now produces a COMPLETE NFT marker (.iset + .fset + .fset3) in a single pure-Rust invocation, with no C++ toolchain. This removes the last user-facing dependence on `ffi-backend`. - Swap the `.fset3` step from `CppFreakMatcher` to `RustFreakMatcher` (`KpmRefDataSet::generate` is backend-agnostic — `&mut dyn FreakMatcherBackend`). Drop the `#[cfg(feature = "ffi-backend")]` gates on the `.fset3` block and the `KPM_SURF_FEATURE_DENSITY` const. - Remove the now-pointless `--yes` flag and the "no .fset3" warning/prompt. - Update the example header docs and README to the single-invocation workflow. Parity (per the agreed policy — accept tolerance if downstream pose holds): the pure-Rust path generated a complete marker for pinball-893x1117-120dpi.jpg (.fset3 667 KB vs the C++ 625 KB — comparable, not byte-identical). Downstream round-trip: feeding the Rust-generated .fset3 into simple_nft detection yields a KPM match (page 0, error 6.05 vs the C++ baseline 5.09) — the marker works. Rust↔C++ FREAK extraction parity is additionally CI-gated by `cross_stack_parity` (pose) and `dual-mode`. Closes #179. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
nft_marker_gennow produces a complete NFT marker (.iset+.fset+.fset3) in a single pure-Rust invocation — no C++ toolchain. This removes the last user-facing dependence onffi-backend.Closes #179. (v0.8.0 milestone close-out, 4/4 — the final one.)
Changes
.fset3step fromCppFreakMatcher→RustFreakMatcher.KpmRefDataSet::generateis backend-agnostic (&mut dyn FreakMatcherBackend), so it's a drop-in.#[cfg(feature = "ffi-backend")]gates on the.fset3block +KPM_SURF_FEATURE_DENSITY.--yesflag and the "no .fset3" warning/confirmation prompt.--yes).Parity validation
Per the agreed policy (accept a documented tolerance if the downstream pose holds):
pinball-893x1117-120dpi.jpg—.fset3667 KB vs the C++ path's 625 KB (comparable, not byte-identical: slightly more features)..fset3intosimple_nftdetection yields a KPM match — page 0, error 6.05 vs the C++-marker baseline 5.09. The marker detects correctly.cross_stack_parity(pose drift vs C++/JS) anddual-mode(descriptor comparison) — the sameRustFreakMatcher.extractthatgenerate()calls.Verification
cargo build --example nft_marker_gen --features log-helperscleancargo clippy --all-targets --all-features -- -D warningsclean🤖 Generated with Claude Code