From 334e6e61bc2517045ae5a3aa8089db085dc2f5b5 Mon Sep 17 00:00:00 2001
From: schickling-assistant
<261620128+schickling-assistant@users.noreply.github.com>
Date: Mon, 9 Nov 2026 15:51:46 +0100
Subject: [PATCH 1/2] Port legacy selected-content layout resolution
agent-identity: agent/compoundingtech/mergemaster
agent-persona: generalist
agent-supervisor: unavailable
agent-tool: OMP
agent-tool-version: 18.12.5
agent-runtime: OMP 18.12.5
agent-model: openai-codex/gpt-6.1-sol
---
README.md | 2 +
.../src/evidence/legacy_verify.rs | 1 +
.../src/evidence/legacy_verify/lane_git.rs | 43 +++++--
.../src/evidence/legacy_verify/selection.rs | 52 ++++++++
.../evidence/legacy_verify/selection_tests.rs | 115 ++++++++++++++++++
scripts/PROVENANCE | 2 +
6 files changed, 202 insertions(+), 13 deletions(-)
create mode 100644 crates/mergemaster-evidence/src/evidence/legacy_verify/selection.rs
create mode 100644 crates/mergemaster-evidence/src/evidence/legacy_verify/selection_tests.rs
diff --git a/README.md b/README.md
index 8328845..cf7d77a 100644
--- a/README.md
+++ b/README.md
@@ -536,6 +536,8 @@ job dependencies; it follows the legacy layout contract, not general YAML.
`selection_json::select_json` preserves legacy integer JSON selections. Selected
floats, JSON extensions and nesting above 127 containers refuse with named
`input-selection-*` reasons; extension diagnostics identify the token and byte offset.
+`selection::selected` resolves the preferred `.fractal`/legacy `.st` layout at
+the supplied Git tree and reads strict UTF-8 there, never from the checkout.
### Main-push tree-equality evidence
diff --git a/crates/mergemaster-evidence/src/evidence/legacy_verify.rs b/crates/mergemaster-evidence/src/evidence/legacy_verify.rs
index 77acd33..ffab221 100644
--- a/crates/mergemaster-evidence/src/evidence/legacy_verify.rs
+++ b/crates/mergemaster-evidence/src/evidence/legacy_verify.rs
@@ -7,6 +7,7 @@ pub mod lane_entry;
pub mod lane_git;
pub mod lanes;
pub mod routing;
+pub mod selection;
pub mod selection_json;
pub mod workflow;
use super::legacy_policy::kind_rules::KindRule;
diff --git a/crates/mergemaster-evidence/src/evidence/legacy_verify/lane_git.rs b/crates/mergemaster-evidence/src/evidence/legacy_verify/lane_git.rs
index d093327..c49f9bc 100644
--- a/crates/mergemaster-evidence/src/evidence/legacy_verify/lane_git.rs
+++ b/crates/mergemaster-evidence/src/evidence/legacy_verify/lane_git.rs
@@ -134,8 +134,12 @@ pub fn lane_definition(
}
const LANES: &str = ".st/required-lanes.json";
-const PREFERRED: &str = ".fractal/required-lanes.json";
-fn config_path(repo: &Path, commit: &str) -> Result