{"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-09452","title":"SafeAdapt: Provably Safe Policy Updates in Deep Reinforcement Learning","arxiv_id":"2604.09452","date":"2026-04-10","proceeding":null,"authors":["Maksim Anisimov","Francesco Belardinelli","Matthew Wicker"],"abstract":"Safety guarantees are a prerequisite to the deployment of reinforcement learning (RL) agents in safety-critical tasks. Often, deployment environments exhibit non-stationary dynamics or are subject to changing performance goals, requiring updates to the learned policy. This leads to a fundamental challenge: how to update an RL policy while preserving its safety properties on previously encountered tasks? The majority of current approaches either do not provide formal guarantees or verify policy safety only a posteriori. We propose a novel a priori approach to safe policy updates in continual RL by introducing the Rashomon set: a region in policy parameter space certified to meet safety constraints within the demonstration data distribution. We then show that one can provide formal, provable guarantees for arbitrary RL algorithms used to update a policy by projecting their updates onto the Rashomon set. Empirically, we validate this approach across grid-world navigation environments (Frozen Lake and Poisoned Apple) where we guarantee an a priori provably deterministic safety on the source task during downstream adaptation. In contrast, we observe that regularisation-based baselines experience catastrophic forgetting of safety constraints while our approach enables strong adaptation with provable guarantees that safety is preserved.","url_abs":"https://arxiv.org/abs/2604.09452","url_pdf":"https://arxiv.org/pdf/2604.09452","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":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=2604.09452","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2604.09452"}},"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/maxanisimov/provably-safe-policy-updates","reach":null}],"summary":{"unverified":8},"by_repo_kind":{"found_in_text":{"samples":8,"ran":0,"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":"18cc3cc26a80178d","entry":"apply_figure_size","repo":"maxanisimov/provably-safe-policy-updates","repo_kind":"found_in_text","path":"src/plotting_style.py","file_url":"https://github.com/maxanisimov/provably-safe-policy-updates/blob/HEAD/src/plotting_style.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":"18cc3cc26a80178d"}},{"code_sha256_prefix":"2f85f93346c4df7e","entry":"finetune_policy_with_safety_bc","repo":"maxanisimov/provably-safe-policy-updates","repo_kind":"found_in_text","path":"rl_project/experiments/poisoned_apple/train_source_policy.py","file_url":"https://github.com/maxanisimov/provably-safe-policy-updates/blob/HEAD/rl_project/experiments/poisoned_apple/train_source_policy.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":"2f85f93346c4df7e"}},{"code_sha256_prefix":"a0acfafc8a8777db","entry":"get_emnist_digits","repo":"maxanisimov/provably-safe-policy-updates","repo_kind":"found_in_text","path":"src/data_utils.py","file_url":"https://github.com/maxanisimov/provably-safe-policy-updates/blob/HEAD/src/data_utils.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":"a0acfafc8a8777db"}},{"code_sha256_prefix":"c0cbd765fc023025","entry":"get_fully_connected_model","repo":"maxanisimov/provably-safe-policy-updates","repo_kind":"found_in_text","path":"src/models.py","file_url":"https://github.com/maxanisimov/provably-safe-policy-updates/blob/HEAD/src/models.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":"c0cbd765fc023025"}},{"code_sha256_prefix":"bcd17f3fc951f451","entry":"get_mnist","repo":"maxanisimov/provably-safe-policy-updates","repo_kind":"found_in_text","path":"src/data_utils.py","file_url":"https://github.com/maxanisimov/provably-safe-policy-updates/blob/HEAD/src/data_utils.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":"bcd17f3fc951f451"}},{"code_sha256_prefix":"2ca48f9728ce0cfe","entry":"get_mnist_model","repo":"maxanisimov/provably-safe-policy-updates","repo_kind":"found_in_text","path":"src/models.py","file_url":"https://github.com/maxanisimov/provably-safe-policy-updates/blob/HEAD/src/models.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":"2ca48f9728ce0cfe"}},{"code_sha256_prefix":"d7a1d7a0a22bcfcb","entry":"get_parameters","repo":"maxanisimov/provably-safe-policy-updates","repo_kind":"found_in_text","path":"abstract_gradient_training/model_utils.py","file_url":"https://github.com/maxanisimov/provably-safe-policy-updates/blob/HEAD/abstract_gradient_training/model_utils.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":"d7a1d7a0a22bcfcb"}},{"code_sha256_prefix":"a59d5a2e050c4ba0","entry":"split_mnist_by_labels","repo":"maxanisimov/provably-safe-policy-updates","repo_kind":"found_in_text","path":"src/data_utils.py","file_url":"https://github.com/maxanisimov/provably-safe-policy-updates/blob/HEAD/src/data_utils.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":"a59d5a2e050c4ba0"}}]},"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}