{"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-2605-15815","title":"BootstrapAgent: Distilling Repository Setup into Reusable Agent Knowledge","arxiv_id":"2605.15815","date":"2026-05-15","proceeding":null,"authors":["Sihan Fu","Oucheng Liu","Shiyuan Wang","Jin Shi","Chengkun Wei"],"abstract":"Code agents increasingly help developers work with unfamiliar repositories, but every such task depends on a costly prerequisite: bootstrapping the repository into a usable development state. This process requires substantial trial-and-error exploration, yet the resulting knowledge--resolved dependencies, repair strategies--stays trapped in a single conversation, unavailable to future agents. We therefore formulate repository bootstrapping as a reusable startup knowledge problem and introduce BootstrapAgent, a multi-agent framework that distills the heuristics discovered during bootstrap exploration into a persistent, verifiable, agent-consumable .bootstrap contract. Through evidence extraction, structured planning, deterministic Docker-based verification, and trace-driven repair, BootstrapAgent generates a contract covering environment setup, diagnostic checks, minimal verification, and accumulated repair knowledge. We further propose warm repair with clean replay to accelerate iterative debugging without sacrificing cold-start reproducibility, and a delta repair with sanity check to prevent reward hacking. Experiments on three benchmarks show that BootstrapAgent achieves a 92.9% success rate, outperforming the baseline by over 10% while reducing downstream agent token usage by 25.9% and build time by 22.3%. Our code is available at https://github.com/Vossera/BootstrapAgent.","url_abs":"https://arxiv.org/abs/2605.15815","url_pdf":"https://arxiv.org/pdf/2605.15815","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=2605.15815","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2605.15815"}},"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/Vossera/BootstrapAgent","reach":null}],"summary":{"ran":1,"ran_draft_wrong":16,"ran_violates":2,"ran_honours":1,"unverified":4},"by_repo_kind":{"found_in_text":{"samples":24,"ran":20,"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":"2c63050a6b28631b","entry":"EvidenceItem","repo":"Vossera/BootstrapAgent","repo_kind":"found_in_text","path":"code/src/rethink/discovery.py","file_url":"https://github.com/Vossera/BootstrapAgent/blob/HEAD/code/src/rethink/discovery.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"2c63050a6b28631b"}},{"code_sha256_prefix":"17766fa700585c32","entry":"_detect_languages","repo":"Vossera/BootstrapAgent","repo_kind":"found_in_text","path":"code/src/rethink/discovery.py","file_url":"https://github.com/Vossera/BootstrapAgent/blob/HEAD/code/src/rethink/discovery.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"17766fa700585c32"}},{"code_sha256_prefix":"1e2e01a15582a427","entry":"_detect_package_managers","repo":"Vossera/BootstrapAgent","repo_kind":"found_in_text","path":"code/src/rethink/discovery.py","file_url":"https://github.com/Vossera/BootstrapAgent/blob/HEAD/code/src/rethink/discovery.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"1e2e01a15582a427"}},{"code_sha256_prefix":"5b96631b70572a72","entry":"_evidence_for_file","repo":"Vossera/BootstrapAgent","repo_kind":"found_in_text","path":"code/src/rethink/discovery.py","file_url":"https://github.com/Vossera/BootstrapAgent/blob/HEAD/code/src/rethink/discovery.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"5b96631b70572a72"}},{"code_sha256_prefix":"aa202a134a2de828","entry":"_excerpt","repo":"Vossera/BootstrapAgent","repo_kind":"found_in_text","path":"code/src/rethink/discovery.py","file_url":"https://github.com/Vossera/BootstrapAgent/blob/HEAD/code/src/rethink/discovery.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"aa202a134a2de828"}},{"code_sha256_prefix":"66e2f3cef95464e4","entry":"_find_important_files","repo":"Vossera/BootstrapAgent","repo_kind":"found_in_text","path":"code/src/rethink/discovery.py","file_url":"https://github.com/Vossera/BootstrapAgent/blob/HEAD/code/src/rethink/discovery.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"66e2f3cef95464e4"}},{"code_sha256_prefix":"5d1422bfe208145d","entry":"_important_file_sort_key","repo":"Vossera/BootstrapAgent","repo_kind":"found_in_text","path":"code/src/rethink/discovery.py","file_url":"https://github.com/Vossera/BootstrapAgent/blob/HEAD/code/src/rethink/discovery.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"5d1422bfe208145d"}},{"code_sha256_prefix":"f4450562f8396e42","entry":"_is_ignored","repo":"Vossera/BootstrapAgent","repo_kind":"found_in_text","path":"code/src/rethink/discovery.py","file_url":"https://github.com/Vossera/BootstrapAgent/blob/HEAD/code/src/rethink/discovery.py","link_basis":"first_harvest_node","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"f4450562f8396e42"}},{"code_sha256_prefix":"1a19b3d25a443477","entry":"_is_important_file","repo":"Vossera/BootstrapAgent","repo_kind":"found_in_text","path":"code/src/rethink/discovery.py","file_url":"https://github.com/Vossera/BootstrapAgent/blob/HEAD/code/src/rethink/discovery.py","link_basis":"first_harvest_node","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"1a19b3d25a443477"}},{"code_sha256_prefix":"fec2a1d438f829ec","entry":"_named_dirs","repo":"Vossera/BootstrapAgent","repo_kind":"found_in_text","path":"code/src/rethink/discovery.py","file_url":"https://github.com/Vossera/BootstrapAgent/blob/HEAD/code/src/rethink/discovery.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"fec2a1d438f829ec"}},{"code_sha256_prefix":"f7815c791d6ec045","entry":"_native_build_files","repo":"Vossera/BootstrapAgent","repo_kind":"found_in_text","path":"code/src/rethink/discovery.py","file_url":"https://github.com/Vossera/BootstrapAgent/blob/HEAD/code/src/rethink/discovery.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"f7815c791d6ec045"}},{"code_sha256_prefix":"e148f52037b19165","entry":"_project_structure_evidence","repo":"Vossera/BootstrapAgent","repo_kind":"found_in_text","path":"code/src/rethink/discovery.py","file_url":"https://github.com/Vossera/BootstrapAgent/blob/HEAD/code/src/rethink/discovery.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"e148f52037b19165"}},{"code_sha256_prefix":"b0159018982e496a","entry":"_python_package_dirs","repo":"Vossera/BootstrapAgent","repo_kind":"found_in_text","path":"code/src/rethink/discovery.py","file_url":"https://github.com/Vossera/BootstrapAgent/blob/HEAD/code/src/rethink/discovery.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b0159018982e496a"}},{"code_sha256_prefix":"f79d98f678f53d6f","entry":"_read_text","repo":"Vossera/BootstrapAgent","repo_kind":"found_in_text","path":"code/src/rethink/discovery.py","file_url":"https://github.com/Vossera/BootstrapAgent/blob/HEAD/code/src/rethink/discovery.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"f79d98f678f53d6f"}},{"code_sha256_prefix":"48a25328f4d98e2d","entry":"_readme_excerpt","repo":"Vossera/BootstrapAgent","repo_kind":"found_in_text","path":"code/src/rethink/discovery.py","file_url":"https://github.com/Vossera/BootstrapAgent/blob/HEAD/code/src/rethink/discovery.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"48a25328f4d98e2d"}},{"code_sha256_prefix":"c1fc08c21c27b547","entry":"_source_for_path","repo":"Vossera/BootstrapAgent","repo_kind":"found_in_text","path":"code/src/rethink/discovery.py","file_url":"https://github.com/Vossera/BootstrapAgent/blob/HEAD/code/src/rethink/discovery.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"c1fc08c21c27b547"}},{"code_sha256_prefix":"af0606086c956376","entry":"_summarize_file","repo":"Vossera/BootstrapAgent","repo_kind":"found_in_text","path":"code/src/rethink/discovery.py","file_url":"https://github.com/Vossera/BootstrapAgent/blob/HEAD/code/src/rethink/discovery.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"af0606086c956376"}},{"code_sha256_prefix":"33c609f01155443a","entry":"_targeted_lines","repo":"Vossera/BootstrapAgent","repo_kind":"found_in_text","path":"code/src/rethink/discovery.py","file_url":"https://github.com/Vossera/BootstrapAgent/blob/HEAD/code/src/rethink/discovery.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"33c609f01155443a"}},{"code_sha256_prefix":"c963ebcb82515f0a","entry":"_toml_array_values","repo":"Vossera/BootstrapAgent","repo_kind":"found_in_text","path":"code/src/rethink/discovery.py","file_url":"https://github.com/Vossera/BootstrapAgent/blob/HEAD/code/src/rethink/discovery.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"c963ebcb82515f0a"}},{"code_sha256_prefix":"10925c3b37574741","entry":"_toml_value","repo":"Vossera/BootstrapAgent","repo_kind":"found_in_text","path":"code/src/rethink/discovery.py","file_url":"https://github.com/Vossera/BootstrapAgent/blob/HEAD/code/src/rethink/discovery.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"10925c3b37574741"}},{"code_sha256_prefix":"37b3c8242b5d5a70","entry":"CommandSource","repo":"Vossera/BootstrapAgent","repo_kind":"found_in_text","path":"code/src/rethink/discovery.py","file_url":"https://github.com/Vossera/BootstrapAgent/blob/HEAD/code/src/rethink/discovery.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"37b3c8242b5d5a70"}},{"code_sha256_prefix":"3f97b0deb47a9456","entry":"DiscoveryReport","repo":"Vossera/BootstrapAgent","repo_kind":"found_in_text","path":"code/src/rethink/discovery.py","file_url":"https://github.com/Vossera/BootstrapAgent/blob/HEAD/code/src/rethink/discovery.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"3f97b0deb47a9456"}},{"code_sha256_prefix":"1f99aeaa182c5ac8","entry":"_emit","repo":"Vossera/BootstrapAgent","repo_kind":"found_in_text","path":"code/src/rethink/discovery.py","file_url":"https://github.com/Vossera/BootstrapAgent/blob/HEAD/code/src/rethink/discovery.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"1f99aeaa182c5ac8"}},{"code_sha256_prefix":"76c3664e375bd6f7","entry":"discover_repo","repo":"Vossera/BootstrapAgent","repo_kind":"found_in_text","path":"code/src/rethink/discovery.py","file_url":"https://github.com/Vossera/BootstrapAgent/blob/HEAD/code/src/rethink/discovery.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"76c3664e375bd6f7"}}]},"arxiv_metadata":{"licence":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)","fields":["title","abstract","authors","date"],"primary_category":"cs.CL","source":"arxiv_2026.jsonl"},"syntology_extracted_results":null}