Remove merge conflict markers from a published page, and gate against them - #442
Conversation
…gainst them
docs/limitations.md carries three raw conflict markers on main, under "Vacuum and
compaction":
<<<<<<< HEAD
...
=======
...
>>>>>>> origin/main
They are live on the documentation site. Both arms were correct, so the
resolution is a union: the autovacuum_parallel_workers bullet is additive, and
the REPACK bullet supersedes the older VACUUM FULL and CLUSTER one, since REPACK
dispatches through the same path and is refused for the same reason.
The reason this reached main is worth more than the fix. Every check in
docs_style.sh passed with the markers present, because conflict markers are
valid Markdown text. The STE checker reads prose. The nav check reads mkdocs.yml.
mkdocs build --strict resolves links. None of them asks whether the page is a
coherent document.
So docs_style.sh now fails on a conflict marker in docs/ or in any top-level
Markdown file. Removal-proved: it fails against main's copy of the page and
passes against the resolved one.
Found while verifying an unrelated documentation claim, which is the only reason
anybody looked.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UqprqkCXuH8SegiZejE1Tw
jdatcmd
left a comment
There was a problem hiding this comment.
This is my defect. Thank you for catching it, and the gate is the right response.
git log -L on those lines:
e8122d8 Joshua D. Drake 2026-08-05
Merge remote-tracking branch 'origin/main' into feat/398-pg19-vacuum-options
That is my conflict resolution on #412, early yesterday. I resolved
test/run_all_versions.sh with a script, then ran git add -A && git commit --no-edit.
git add -A staged docs/limitations.md with its markers still in it and marked the
path resolved, so the commit succeeded and the merge looked clean.
I resolved one file and assumed one file was all there was. git diff --name-only --diff-filter=U would have told me otherwise in one command, and I have used exactly that
command in later resolutions this session without connecting it back to this one.
It then survived every merge since, because nothing looks.
The fix and the gate, both verified
Prose reads correctly with the REPACK sentence intact and no duplication.
The gate, removal-proved:
clean tree PASS no document carries a merge conflict marker (6 checks)
markers appended to a doc FAIL no document carries a merge conflict marker: got [.../docs/limitations.md]
Your framing of why this got through is the part worth keeping, and it generalises past
this bug:
The STE checker reads prose and the nav check reads mkdocs.yml. Neither asks whether the
page is a coherent document.
Conflict markers are valid Markdown. Every existing check passed with them on the page,
which is the same shape as check "" "" and ALL VERSIONS PASSED with nothing run: the
check that ran and the check you thought ran were different things.
One suggestion, not blocking
The grep covers docs/ and top-level *.md. The same accident in design/ or in a
test/*.sh header would not be caught, and design/ is where our own decisions live.
Widening it costs nothing:
grep -rlE '^(<<<<<<< |>>>>>>> )' "$SRCDIR/docs" "$SRCDIR/design" "$SRCDIR"/*.md "$SRCDIR"/test/*.shNot blocking because the published site is the urgent surface and that is covered. Your
call whether it belongs in this PR or a follow-up.
Approving, and merging as soon as CI is green. This one should not sit.
docs/limitations.mdhas three raw merge conflict markers onmain, under Vacuum andcompaction. They are live on the documentation site right now.
Introduced by the merge at
a0c8189.The resolution is a union, because both arms are right
The
autovacuum_parallel_workersbullet is additive: it documents #398 and is pinned bytest/pg19_vacuum_options.sh. TheREPACKbullet supersedes the olderVACUUM FULLand
CLUSTERone, because REPACK dispatches through the same copy-for-cluster path and isrefused for the same reason, which is #399 and is pinned by
test/native_repack.sh.Both kept, in that order. No prose invented.
Why it reached main is the more useful half
Every check in
docs_style.shpassed with the markers present. I ran it myself on mainearlier today and got twelve pages
ok.Conflict markers are valid Markdown text. The STE checker reads prose and counts words. The
nav check reads
mkdocs.yml.mkdocs build --strictresolves links and finds nothing wrongwith a paragraph that happens to begin
<<<<<<< HEAD. Nothing was asking whether the pageis a coherent document.
So
docs_style.shnow fails on a conflict marker anywhere indocs/or in a top-levelMarkdown file.
Removal proof
Same suite, same box, only the page differing:
My first attempt at that proof reported FAIL on both arms, because I had edited the file
without committing and
git checkout HEAD --restored the unfixed version. The proof caughtmy own mistake, which is the argument for running it rather than reasoning about it.
Scope
Deliberately only this. The content work from the external validation report is #440 and I
have kept it separate, since a broken published page should not wait behind a review of new
prose.
🤖 Generated with Claude Code