{"record":{"id":"8ab50dda6ddd1ff2","repo":"zed-industries/zed","slug":"output-does-not-contain-a-marker-bounded-span","errorCode":null,"errorMessage":"output does not contain a marker-bounded span","messagePattern":"output does not contain a marker-bounded span","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/zeta_prompt/src/hashed_regions.rs","lineNumber":609,"sourceCode":"    /// 0-based row where the snippet starts in its file.\n    pub start_row: u32,\n}\n\n/// One marker-bounded edit resolved against a parse snippet.\nstruct ParsedSpanEdit {\n    snippet_ix: usize,\n    range: Range<usize>,\n    new_text: String,\n    cursor_offset_in_new_text: Option<usize>,\n}\n\n/// Split raw model output into marker-bounded spans by pairing marker tags two\n/// at a time. Returns `(start_id, end_id, raw_new_span)` per pair, where\n/// `raw_new_span` may still contain the cursor marker.\nfn pair_marker_spans(output: &str) -> Result<Vec<(String, String, String)>> {\n    let tags = find_all_marker_tags(output);\n    if tags.len() < 2 {\n        return Err(anyhow!(\"output does not contain a marker-bounded span\"));\n    }\n    let mut spans = Vec::new();\n    let mut i = 0;\n    while i + 1 < tags.len() {\n        let (start_id, _, start_tag_end) = &tags[i];\n        let (end_id, end_tag_start, _) = &tags[i + 1];\n        let content = &output[*start_tag_end..*end_tag_start];\n        let content = content.strip_prefix('\\n').unwrap_or(content);\n        let content = multi_region::strip_marker_tags(content);\n        spans.push((start_id.clone(), end_id.clone(), content));\n        i += 2;\n    }\n    Ok(spans)\n}\n\n/// Find every marker tag in `text`, in order, as `(id, tag_start, tag_end)`.\nfn find_all_marker_tags(text: &str) -> Vec<(String, usize, usize)> {\n    let mut tags = Vec::new();","sourceCodeStart":591,"sourceCodeEnd":627,"githubUrl":"https://github.com/zed-industries/zed/blob/f4178619acd0d47ea1f76a2025c42962c6d6638c/crates/zeta_prompt/src/hashed_regions.rs#L591-L627","documentation":"Raised in pair_marker_spans when parsing model output as a marker-bounded patch: marker tags were found but they cannot be paired into complete start/end spans (odd count, nesting, or missing end tag). The raw output contains no well-formed marker-bounded region to extract an edit from.","triggerScenarios":"Thrown at crates/zeta_prompt/src/hashed_regions.rs:609 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Retry the model request so it emits matched start/end markers"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"f4178619acd0d47ea1f76a2025c42962c6d6638c","analyzedAt":"2026-08-20T19:29:52.058Z","contentChangedAt":"2026-08-20T19:29:52.058Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}