zed-industries/zed · error
start marker must come before end marker
Error message
start marker must come before end marker
What it means
The model's marker-tag output referenced a start marker number greater than the end marker number, so the computed replacement span would be reversed (end byte before start byte) in apply_marker_span. It fires when the parsed tag pair from the model output is internally inconsistent with the marker numbering of the old editable region.
Source
Thrown at crates/zeta_prompt/src/multi_region.rs:401
pub fn apply_marker_span(old_editable: &str, output: &str) -> Result<String> {
let (start_num, end_num, raw_new_span) = extract_marker_span(output)?;
let marker_offsets = compute_marker_offsets(old_editable);
let start_idx = start_num
.checked_sub(1)
.context("marker numbers are 1-indexed")?;
let end_idx = end_num
.checked_sub(1)
.context("marker numbers are 1-indexed")?;
let start_byte = *marker_offsets
.get(start_idx)
.context("start marker number out of range")?;
let end_byte = *marker_offsets
.get(end_idx)
.context("end marker number out of range")?;
if start_byte > end_byte {
return Err(anyhow!("start marker must come before end marker"));
}
let old_span = &old_editable[start_byte..end_byte];
let mut new_span = raw_new_span;
if old_span.ends_with('\n') && !new_span.ends_with('\n') && !new_span.is_empty() {
new_span.push('\n');
}
if !old_span.ends_with('\n') && new_span.ends_with('\n') {
new_span.pop();
}
let mut result = String::new();
result.push_str(&old_editable[..start_byte]);
result.push_str(&new_span);
result.push_str(&old_editable[end_byte..]);
Ok(result)
}View on GitHub (pinned to f4178619ac)
Solutions
- Reject the model output and re-request the edit so the model emits a valid ordered marker pair
- Validate marker ordering before applying and surface the rejection to the retry/feedback loop
- Log the raw output to diagnose systematic marker-ordering mistakes from the model
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at crates/zeta_prompt/src/multi_region.rs:401 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of zed-industries/zed@f4178619ac (2026-08-20).
Data as JSON: /api/errors/1a9438c0d7d996fa.
Report an issue: GitHub.