{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/arxiv-2604-17184","title":"SynthFix: Adaptive Neuro-Symbolic Code Vulnerability Repair","arxiv_id":"2604.17184","date":"2026-04-19","proceeding":null,"authors":["Yifan Zhang","Jieyu Li","Kexin Pei","Yu Huang","Kevin Leach"],"abstract":"Large Language Models (LLMs) can generate plausible code patches, but plausibility is not enough for automated repair: a patch must compile, pass tests, and remove the target vulnerability. We present SynthFix, a neuro-symbolic repair framework that combines supervised repair learning with compiler-informed feedback. During training, a lightweight router selects between Supervised Fine-Tuning (SFT) for common repair patterns and Reward Fine-Tuning (RFT) for examples that benefit from symbolic feedback. The reward combines static structure, lint/compile checks, security scanning, and public execution tests where available; at inference time, the same evidence guides best-of-K candidate selection under a greedy floor. Across five code LLMs (1.3B-7B) on pyrepair, CodeFlaws, and SVEN, SynthFix improves deployable repair metrics over SFT-only and RFT-only baselines, with relative gains up to 54 percent in functional correctness and 14 percent in security clearance. Our code and data are available at https://github.com/CoderDoge1108/SynthFix.","url_abs":"https://arxiv.org/abs/2604.17184","url_pdf":"https://arxiv.org/pdf/2604.17184","source":{"archive":null,"snapshot":"2025-07-28","note":"not in the Papers with Code archive (frozen at the snapshot)","row_kind":"graph","title_abstract_authors_date":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)"},"code_links":[],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2604.17184","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2604.17184"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"mentioned_in_github":null,"is_official":null,"provenance":"deterministic:regex_extraction","mentioned_in_paper":null,"url":"https://github.com/CoderDoge1108/SynthFix","reach":null}],"summary":{"ran_honours":4,"ran_fixture":1,"ran_draft_wrong":3},"by_repo_kind":{"found_in_text":{"samples":8,"ran":8,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"4ba6ce8e929d6665","entry":"_ast_score","repo":"CoderDoge1108/SynthFix","repo_kind":"found_in_text","path":"artifact/src/models/symbolic.py","file_url":"https://github.com/CoderDoge1108/SynthFix/blob/HEAD/artifact/src/models/symbolic.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"4ba6ce8e929d6665"}},{"code_sha256_prefix":"459cffb85a4d80d3","entry":"_cfg_score","repo":"CoderDoge1108/SynthFix","repo_kind":"found_in_text","path":"artifact/src/models/symbolic.py","file_url":"https://github.com/CoderDoge1108/SynthFix/blob/HEAD/artifact/src/models/symbolic.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"459cffb85a4d80d3"}},{"code_sha256_prefix":"23b7abd0148b2f78","entry":"_chrf_score","repo":"CoderDoge1108/SynthFix","repo_kind":"found_in_text","path":"artifact/src/models/symbolic.py","file_url":"https://github.com/CoderDoge1108/SynthFix/blob/HEAD/artifact/src/models/symbolic.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"23b7abd0148b2f78"}},{"code_sha256_prefix":"e21a2747ee0ad1cf","entry":"_lcs_length","repo":"CoderDoge1108/SynthFix","repo_kind":"found_in_text","path":"artifact/src/models/symbolic.py","file_url":"https://github.com/CoderDoge1108/SynthFix/blob/HEAD/artifact/src/models/symbolic.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"well_formed","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"e21a2747ee0ad1cf"}},{"code_sha256_prefix":"786f88a9c7667442","entry":"_sem_score","repo":"CoderDoge1108/SynthFix","repo_kind":"found_in_text","path":"artifact/src/models/symbolic.py","file_url":"https://github.com/CoderDoge1108/SynthFix/blob/HEAD/artifact/src/models/symbolic.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"786f88a9c7667442"}},{"code_sha256_prefix":"e0d769fca6ddbf2a","entry":"compute_reward_split","repo":"CoderDoge1108/SynthFix","repo_kind":"found_in_text","path":"artifact/src/models/symbolic.py","file_url":"https://github.com/CoderDoge1108/SynthFix/blob/HEAD/artifact/src/models/symbolic.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"e0d769fca6ddbf2a"}},{"code_sha256_prefix":"686bec01c667249d","entry":"compute_reward_split_rich","repo":"CoderDoge1108/SynthFix","repo_kind":"found_in_text","path":"artifact/src/models/symbolic.py","file_url":"https://github.com/CoderDoge1108/SynthFix/blob/HEAD/artifact/src/models/symbolic.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"686bec01c667249d"}},{"code_sha256_prefix":"01150d135703eb60","entry":"compute_reward_split_rich_exec","repo":"CoderDoge1108/SynthFix","repo_kind":"found_in_text","path":"artifact/src/models/symbolic.py","file_url":"https://github.com/CoderDoge1108/SynthFix/blob/HEAD/artifact/src/models/symbolic.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"01150d135703eb60"}}]},"arxiv_metadata":{"licence":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)","fields":["title","abstract","authors","date"],"primary_category":"cs.LG","source":"arxiv_2026.jsonl"},"syntology_extracted_results":null}