Skip to content

docs: 24 drift findings, every one verified against the code first - #595

Merged
rainmanjam merged 1 commit into
mainfrom
fix/docs-drift
Aug 27, 2026
Merged

docs: 24 drift findings, every one verified against the code first#595
rainmanjam merged 1 commit into
mainfrom
fix/docs-drift

Conversation

@rainmanjam

Copy link
Copy Markdown
Owner

Closes #533 #534 #535 #536 #537 #538 #561 #562 #563 #564 #565 #566 #567 #568 #569 #570 #571 #572 #573 #589 #590 #591 #592 #593.

All 24 confirmed real against the code — none stale, none already fixed.

The worst one — #533

CONFIGURATION.md told container operators to pass flags in command:. Docker's command: replaces the image's CMD, which carries -data /data — so DataDir fell back to ./data, and with WORKDIR /data the server opened the empty /data/data and presented the first-run password screen on a live install. The data is intact one directory up and nothing said so.

Now a section that states the CMD, says command: replaces it, puts the config-file mount first, repeats -data /data in the flag form, and names the symptom alongside the reassurance. The compose file has no command: at all, so the old "shows both" was wrong twice over.

The port — #534/#535

Three website snippets and QUICKSTART.md omitted -p 1935:1935 while the next step told the reader to pick RTMP: a container with no RTMP ingest and nothing saying why. All now byte-identical to README's, /udp note included.

download.astro was not already fixed. It carried a caveat paragraph about the port while the copied string still lacked it — which is how it read as fixed to the reviewer and to me. Verified against the built HTML, not the source: ten snippets, all ten carry the trio.

#536

HOOKS.md said "No SSRF protection". There is — hooks.go refuses at save time, naming allowPrivateTarget, a field documented nowhere. Now in HOOKS.md and API.md with the refused ranges (including Tailscale's CGNAT block), and the limitation corrected to what's true: hooks are defended, alert-rule webhooks are not.

What sweeping found

RULE 5 — grep for every other site of a fact before calling it fixed — turned up a seventh Go-version site the review missed, the third bad snippet, and four stale counts on the testing page.

Not fixed — outside this assignment

CONTRIBUTING.md (Go 1.26.5+), config.example.yaml (missing transcription:), CHANGELOG.md (no :443 warning), and a RenditionsPage.tsx comment. Listed in the report.

One Warning where Control was possible (#533): Control is a startup check warning when dataDir is empty and a polyemesis.db sits beside it. That's a code change, recommended not made.

npm run build passes — 38 pages, 0 errors. Go doc-drift tests green.

https://claude.ai/code/session_01A8N3W5ct9SZtHK9sCDD9cL

Closes #533 #534 #535 #536 #537 #538 #561 #562 #563 #564 #565 #566 #567 #568
#569 #570 #571 #572 #573 #589 #590 #591 #592 #593.

A doc that describes behaviour the code no longer has is worse than no doc: it
is a confident wrong answer, and for INSTALL and CONFIGURATION it is one an
operator acts on while a broadcast is live.

THE WORST ONE. CONFIGURATION.md told container operators to pass flags in
`command:`. Docker's `command:` REPLACES the image's CMD -- which carries
`-data /data` -- so DataDir fell back to `./data`, and with WORKDIR /data the
server opened the empty /data/data and presented the FIRST-RUN PASSWORD SCREEN
on a live install. The data is intact one directory up and nothing said so. Now
a section that states the CMD, says `command:` replaces it, puts the config
mount first, repeats `-data /data` in the flag form, and names the symptom
alongside the reassurance. The compose file has no `command:` at all, so the
old "shows both" was wrong twice.

THE PORT. Three website snippets and QUICKSTART's `docker run` omitted
`-p 1935:1935`, while the next step told the reader to pick RTMP -- a container
with no RTMP ingest and nothing saying why. All are now byte-identical to
README's, /udp note included, which is the classic silent-ingest failure.

download.astro was NOT already fixed. It carried a caveat paragraph about the
port while the copied string still lacked it, which is how it read as fixed to
a reviewer and to me. Verified against the BUILT HTML rather than the source:
ten snippets, all ten carry the trio.

HOOKS.md said "No SSRF protection". There is: hooks.go refuses at save time,
naming allowPrivateTarget -- a field documented nowhere in the repo. Now
documented in HOOKS.md and API.md, with the refused ranges including Tailscale's
CGNAT block, and the limitation corrected to what is actually true: hooks are
defended, alert-rule webhooks are not.

The Go floor was documented as 1.26.5 in SEVEN places against go.mod's 1.27.0 --
one more than the review found.

Sweeping for other sites of each fact is what turned up the seventh Go-version
site, the third bad snippet, and four further contradictions on the testing page
whose counts had gone stale. That is RULE 5 of the fix brief and it earned its
place every time it was applied.

Claude-Session: https://claude.ai/code/session_01A8N3W5ct9SZtHK9sCDD9cL
Copilot AI lite review requested due to automatic review settings August 26, 2026 21:03

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@sonarqubecloud

Copy link
Copy Markdown

@rainmanjam
rainmanjam merged commit 07213b0 into main Aug 27, 2026
30 of 31 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

docs: CONFIGURATION.md tells container operators to do the one thing that silently starts a fresh install

2 participants