From d80e48e3148376bc1862c55e8f623b99f39e47f8 Mon Sep 17 00:00:00 2001 From: hyperpolymath <6759885+hyperpolymath@users.noreply.github.com> Date: Sun, 18 Oct 2026 15:10:40 +0000 Subject: [PATCH 1/2] test(config): cover unreadable cascade refusal Co-authored-by: arena-agent <297053741+arena-agent@users.noreply.github.com> --- test/unit/test_differential.jl | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/test/unit/test_differential.jl b/test/unit/test_differential.jl index dcab0549..c7bd275d 100644 --- a/test/unit/test_differential.jl +++ b/test/unit/test_differential.jl @@ -599,6 +599,31 @@ end end end + @testset "Parent PATCH refuses an unreadable affected cascade" begin + SV = MetaManifold.Server + keym = "analysis.differential.method" + _da_fixture() do + root = SV.ServerState._root[] + global_path = joinpath(root, "config", "pipeline.yml") + study_path = joinpath(root, "data", "studyD", "pipeline.yml") + YAML.write_file(global_path, Dict("analysis"=>Dict("differential"=> + Dict("method"=>"nb_glm", "dispersion"=>"ml")))) + write(study_path, "analysis: [broken") + before_global = read(global_path, String) + before_study = read(study_path, String) + + response = SV.Oxygen.internalrequest(HTTP.Request("PATCH", "/api/v1/config", + ["Content-Type"=>"application/json"], + JSON3.write(Dict(keym=>"clr_welch", "seed"=>789)))) + body = JSON3.read(String(response.body)) + @test response.status == 400 + @test body.error == "invalid_config_value" + @test occursin("Cannot validate the affected config cascade", body.message) + @test read(global_path, String) == before_global + @test read(study_path, String) == before_study + end + end + @testset "DELETE validates inherited values at every config scope" begin SV = MetaManifold.Server keym, keyd = "analysis.differential.method", "analysis.differential.dispersion" From a3d3832286f41ed5de396d6a8312768ad179fc07 Mon Sep 17 00:00:00 2001 From: hyperpolymath <6759885+hyperpolymath@users.noreply.github.com> Date: Sun, 18 Oct 2026 17:29:36 +0000 Subject: [PATCH 2/2] Revert "test(config): cover unreadable cascade refusal" This reverts commit d80e48e3148376bc1862c55e8f623b99f39e47f8. --- test/unit/test_differential.jl | 25 ------------------------- 1 file changed, 25 deletions(-) diff --git a/test/unit/test_differential.jl b/test/unit/test_differential.jl index c7bd275d..dcab0549 100644 --- a/test/unit/test_differential.jl +++ b/test/unit/test_differential.jl @@ -599,31 +599,6 @@ end end end - @testset "Parent PATCH refuses an unreadable affected cascade" begin - SV = MetaManifold.Server - keym = "analysis.differential.method" - _da_fixture() do - root = SV.ServerState._root[] - global_path = joinpath(root, "config", "pipeline.yml") - study_path = joinpath(root, "data", "studyD", "pipeline.yml") - YAML.write_file(global_path, Dict("analysis"=>Dict("differential"=> - Dict("method"=>"nb_glm", "dispersion"=>"ml")))) - write(study_path, "analysis: [broken") - before_global = read(global_path, String) - before_study = read(study_path, String) - - response = SV.Oxygen.internalrequest(HTTP.Request("PATCH", "/api/v1/config", - ["Content-Type"=>"application/json"], - JSON3.write(Dict(keym=>"clr_welch", "seed"=>789)))) - body = JSON3.read(String(response.body)) - @test response.status == 400 - @test body.error == "invalid_config_value" - @test occursin("Cannot validate the affected config cascade", body.message) - @test read(global_path, String) == before_global - @test read(study_path, String) == before_study - end - end - @testset "DELETE validates inherited values at every config scope" begin SV = MetaManifold.Server keym, keyd = "analysis.differential.method", "analysis.differential.dispersion"