fix: don't flag outline as truncated at exactly MAX_OUTLINE_ENTRIES headings (#3856)

extract_outline appended the {truncated: True} sentinel as soon as len(outline) >= MAX_OUTLINE_ENTRIES, i.e. right after the 50th heading, before knowing whether a 51st exists. A document with exactly 50 headings was therefore reported as truncated, and uploads_middleware injected a misleading 'showing first 50 headings' hint into the agent's context. Use a lookahead: only mark truncated once a heading beyond the limit is actually seen, then drop that extra entry. Adds an exact-boundary regression test.
This commit is contained in:
Syed Osama Ali Shah 2026-07-02 03:24:15 +03:00 committed by GitHub
parent 4fcb4bc366
commit d9305989f3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 14 additions and 1 deletions

View File

@ -279,7 +279,11 @@ def extract_outline(md_path: Path) -> list[dict]:
if title:
outline.append({"title": title, "line": lineno})
if len(outline) >= MAX_OUTLINE_ENTRIES:
if len(outline) > MAX_OUTLINE_ENTRIES:
# We collected one heading beyond the limit, which proves the
# document genuinely has more than MAX_OUTLINE_ENTRIES headings.
# Drop that extra entry and append the truncation sentinel.
outline.pop()
outline.append({"truncated": True})
break
except Exception:

View File

@ -422,6 +422,15 @@ class TestExtractOutline:
assert len(outline) == 5
assert not any(e.get("truncated") for e in outline)
def test_no_truncation_sentinel_at_exact_limit(self, tmp_path):
"""A document with exactly MAX_OUTLINE_ENTRIES headings is not truncated."""
lines = [f"# Heading {i}" for i in range(MAX_OUTLINE_ENTRIES)]
md = tmp_path / "exact.md"
md.write_text("\n".join(lines), encoding="utf-8")
outline = extract_outline(md)
assert len(outline) == MAX_OUTLINE_ENTRIES
assert not any(e.get("truncated") for e in outline)
def test_blank_lines_and_whitespace_ignored(self, tmp_path):
"""Blank lines between headings do not produce empty entries."""
md = tmp_path / "spaced.md"