{"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-2603-22352","title":"WIST: Web-Grounded Iterative Self-Play Tree for Domain-Targeted Reasoning Improvement","arxiv_id":"2603.22352","date":"2026-03-22","proceeding":null,"authors":["Fangyuan Li","Pengfei Li","Shijie Wang","Junqi Gao","Jianxing Liu","Biqing Qi","Yuqiang Li"],"abstract":"Recent progress in reinforcement learning with verifiable rewards (RLVR) offers a practical path to self-improvement of language models, but existing methods face a key trade-off: endogenous self-play can drift over iterations, while corpus-grounded approaches rely on curated data environments. We present \\textbf{WIST}, a \\textbf{W}eb-grounded \\textbf{I}terative \\textbf{S}elf-play \\textbf{T}ree framework for domain-targeted reasoning improvement that learns directly from the open web without requiring any pre-arranged domain corpus. WIST incrementally expands a domain tree for exploration, and retrieves and cleans path-consistent web corpus to construct a controllable training environment. It then performs Challenger--Solver self-play with verifiable rewards, and feeds learnability signals back to update node posteriors and guide subsequent exploration through an adaptive curriculum. Across four backbones, WIST consistently improves over the base models and typically outperforms both purely endogenous self-evolution and corpus-grounded self-play baselines, with the Overall gains reaching \\textbf{+9.8} (\\textit{Qwen3-4B-Base}) and \\textbf{+9.7} (\\textit{OctoThinker-8B}). WIST is also domain-steerable, improving \\textit{Qwen3-8B-Base} by \\textbf{+14.79} in medicine and \\textit{Qwen3-4B-Base} by \\textbf{+5.28} on PhyBench. Ablations further confirm the importance of WIST's key components for stable open-web learning. Our Code is available at https://github.com/lfy-123/WIST.","url_abs":"https://arxiv.org/abs/2603.22352","url_pdf":"https://arxiv.org/pdf/2603.22352","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=2603.22352","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2603.22352"}},"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/lfy-123/WIST","reach":null}],"summary":{"ran":2,"unverified":17},"by_repo_kind":{"found_in_text":{"samples":19,"ran":2,"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":"812f2e3f5cda7c93","entry":"compute_reward","repo":"lfy-123/WIST","repo_kind":"found_in_text","path":"openrlhf/models/utils.py","file_url":"https://github.com/lfy-123/WIST/blob/HEAD/openrlhf/models/utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"812f2e3f5cda7c93"}},{"code_sha256_prefix":"75afa2affd2a8e36","entry":"log_probs_from_logits","repo":"lfy-123/WIST","repo_kind":"found_in_text","path":"openrlhf/models/utils.py","file_url":"https://github.com/lfy-123/WIST/blob/HEAD/openrlhf/models/utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"75afa2affd2a8e36"}},{"code_sha256_prefix":"8fc07cac16dfc157","entry":"best_wiki_match","repo":"lfy-123/WIST","repo_kind":"found_in_text","path":"knowledge_tree/Tree.py","file_url":"https://github.com/lfy-123/WIST/blob/HEAD/knowledge_tree/Tree.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"8fc07cac16dfc157"}},{"code_sha256_prefix":"2322cff6b05213f3","entry":"build_expansion_prompt_math","repo":"lfy-123/WIST","repo_kind":"found_in_text","path":"knowledge_tree/prompts.py","file_url":"https://github.com/lfy-123/WIST/blob/HEAD/knowledge_tree/prompts.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"2322cff6b05213f3"}},{"code_sha256_prefix":"b43e96775fe96be3","entry":"build_expansion_prompt_med","repo":"lfy-123/WIST","repo_kind":"found_in_text","path":"knowledge_tree/prompts.py","file_url":"https://github.com/lfy-123/WIST/blob/HEAD/knowledge_tree/prompts.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"b43e96775fe96be3"}},{"code_sha256_prefix":"1a0461b2603acbe0","entry":"build_expansion_prompt_phy","repo":"lfy-123/WIST","repo_kind":"found_in_text","path":"knowledge_tree/prompts.py","file_url":"https://github.com/lfy-123/WIST/blob/HEAD/knowledge_tree/prompts.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"1a0461b2603acbe0"}},{"code_sha256_prefix":"d05a8d5f53ca7fe1","entry":"clean_paragraphs","repo":"lfy-123/WIST","repo_kind":"found_in_text","path":"knowledge_tree/clean_utils.py","file_url":"https://github.com/lfy-123/WIST/blob/HEAD/knowledge_tree/clean_utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"d05a8d5f53ca7fe1"}},{"code_sha256_prefix":"d6e23db8c6a74238","entry":"compute_approx_kl","repo":"lfy-123/WIST","repo_kind":"found_in_text","path":"openrlhf/models/utils.py","file_url":"https://github.com/lfy-123/WIST/blob/HEAD/openrlhf/models/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"d6e23db8c6a74238"}},{"code_sha256_prefix":"2ee2729eaeb1d3ba","entry":"fetch_page_text","repo":"lfy-123/WIST","repo_kind":"found_in_text","path":"knowledge_tree/clean_utils.py","file_url":"https://github.com/lfy-123/WIST/blob/HEAD/knowledge_tree/clean_utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"2ee2729eaeb1d3ba"}},{"code_sha256_prefix":"5110d3bb195169a8","entry":"get_tensor_in_current_ring_attn_rank","repo":"lfy-123/WIST","repo_kind":"found_in_text","path":"openrlhf/models/ring_attn_utils.py","file_url":"https://github.com/lfy-123/WIST/blob/HEAD/openrlhf/models/ring_attn_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"5110d3bb195169a8"}},{"code_sha256_prefix":"f1cec62813419507","entry":"normalize_wiki_title","repo":"lfy-123/WIST","repo_kind":"found_in_text","path":"knowledge_tree/worker_web.py","file_url":"https://github.com/lfy-123/WIST/blob/HEAD/knowledge_tree/worker_web.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"f1cec62813419507"}},{"code_sha256_prefix":"e93117d99aa6b210","entry":"reset_ring_attn_position_ids","repo":"lfy-123/WIST","repo_kind":"found_in_text","path":"openrlhf/models/ring_attn_utils.py","file_url":"https://github.com/lfy-123/WIST/blob/HEAD/openrlhf/models/ring_attn_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"e93117d99aa6b210"}},{"code_sha256_prefix":"c987e22caed3c78a","entry":"search_and_fetch_grouped","repo":"lfy-123/WIST","repo_kind":"found_in_text","path":"knowledge_tree/search_pipeline.py","file_url":"https://github.com/lfy-123/WIST/blob/HEAD/knowledge_tree/search_pipeline.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"c987e22caed3c78a"}},{"code_sha256_prefix":"bb0ef9b6b9406010","entry":"search_mwmbl","repo":"lfy-123/WIST","repo_kind":"found_in_text","path":"knowledge_tree/worker_web.py","file_url":"https://github.com/lfy-123/WIST/blob/HEAD/knowledge_tree/worker_web.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"bb0ef9b6b9406010"}},{"code_sha256_prefix":"6d2dffb441337e76","entry":"search_searxng","repo":"lfy-123/WIST","repo_kind":"found_in_text","path":"knowledge_tree/utils.py","file_url":"https://github.com/lfy-123/WIST/blob/HEAD/knowledge_tree/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"6d2dffb441337e76"}},{"code_sha256_prefix":"2978c7a7d0ce7c14","entry":"show_path","repo":"lfy-123/WIST","repo_kind":"found_in_text","path":"knowledge_tree/utils.py","file_url":"https://github.com/lfy-123/WIST/blob/HEAD/knowledge_tree/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"2978c7a7d0ce7c14"}},{"code_sha256_prefix":"32ca89798c575b9e","entry":"split_path","repo":"lfy-123/WIST","repo_kind":"found_in_text","path":"knowledge_tree/utils.py","file_url":"https://github.com/lfy-123/WIST/blob/HEAD/knowledge_tree/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"32ca89798c575b9e"}},{"code_sha256_prefix":"e987ae3f372f129b","entry":"string_similarity","repo":"lfy-123/WIST","repo_kind":"found_in_text","path":"knowledge_tree/Tree.py","file_url":"https://github.com/lfy-123/WIST/blob/HEAD/knowledge_tree/Tree.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"e987ae3f372f129b"}},{"code_sha256_prefix":"f6a6ad219ca042d3","entry":"strip_all_markdown_links","repo":"lfy-123/WIST","repo_kind":"found_in_text","path":"knowledge_tree/search_pipeline.py","file_url":"https://github.com/lfy-123/WIST/blob/HEAD/knowledge_tree/search_pipeline.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"f6a6ad219ca042d3"}}]},"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}