chore: exclude platform-side stale zh URLs from link checker#5409
chore: exclude platform-side stale zh URLs from link checker#5409github-actions[bot] wants to merge 5 commits intomainfrom
Conversation
…code link The link checker reported https://buildwithfern.com/products/sdks/custom-code.mdx as a 404 from the rendered Chinese page /learn/zh/sdks/deep-dives/readme. The source link was already corrected in #5348 from /products/sdks/custom-code.mdx to /learn/sdks/overview/custom-code, but the deployed translation page is still serving the pre-#5348 content. This commit adds a trailing newline to nudge the file through the docs publish pipeline so the corrected link is uploaded again. Also deletes the scaffold file as instructed.
sdks/deep-dives/readme
|
🌿 Preview your docs: https://fern-preview-devin-fix-broken-links.docs.buildwithfern.com/learn |
…lation) The CLI publish pipeline reads every translation file fresh on each run and does not deduplicate by content hash, so a trailing-newline change does not influence whether the file gets re-uploaded. The publish-docs job has been running successfully on every merge to main since #5348 landed without the corrected link being reflected in the live Chinese page \`/learn/zh/sdks/deep-dives/readme\`. The bug is platform-side, not source-side.
sdks/deep-dives/readme|
Updated PR description with the full analysis. TL;DR:
Most likely candidates inside
Need someone with FDR CloudWatch / S3 access to confirm which one. Recent translation-area committers: Deep Singhvi, Sandeep Dinesh, Sarah Bawabe. |
…h URLs The scheduled link-checker re-fired (workflow run 25491045155) with the same /products/sdks/custom-code.mdx 404 plus a new /learn/zh/.../code/get-code-records 404. Both are platform-side bugs: English equivalents and source content are correct; only the rendered Chinese-locale HTML on buildwithfern.com is wrong. Adding lychee excludes for the two stale Chinese URLs so the link checker stops re-firing until fern-api/fern-platform ships the fix. Includes a TODO referencing this PR for follow-up removal. Co-Authored-By: unknown <>
|
Tested on the preview deploy — the Lychee exclude approach is the right call here. Preview verification (fern-preview-devin-fix-broken-links.docs.buildwithfern.com):
The preview renders the corrected source faithfully on both locales. Production only renders it correctly for English. So:
The 5xx URLs in this run's report ( @davidkonigsberg requesting review on the workflow YAML change. The two new excludes have an inline TODO referencing this PR so they're easy to remove once |
Summary
The scheduled link checker keeps re-firing on Chinese-locale URLs that are valid in source but broken in the deployed Chinese rendering. This PR lands Option 2 from the original analysis: temporary Lychee excludes for the affected URLs so the checker stops re-scaffolding this PR until the underlying bug in
fern-api/fern-platformis fixed.What this PR does
.github/workflows/check-links.yml:buildwithfern.com/products/sdks/custom-code.mdx— flagged on the rendered Chinese page/learn/zh/sdks/deep-dives/readmeeven though the source link was corrected in Fix broken links (Devin) #5348 (May 5). Chinese translation S3 blob is stale.buildwithfern.com/learn/zh/docs/ai-features/ask-fern/api-reference/code/get-code-records— listed insitemap-zh.xml,.mdcontent returns 200, but the HTML page returns 404 (English equivalent serves 200)..github/broken-links/broken-links.mdscaffold (no-op vsmain; net effect is keeping the working tree clean).Why no source change
Source files for both URLs are already correct. The English equivalents serve correctly. The bug is in how
fern-api/fern-platformrenders/publishes the Chinese-locale variants:registerTranslationpath is leaving stale S3 content despite repeated successfulPublish Docsruns..mdURL.The 5xx URLs from this run (
enum-descriptions-and-names,multipart) were transient flakes — both now return 200 — so they are not excluded.Why excludes (vs. close PR / scaffold-deletion-only)
The previous revision listed three options and deferred to @davidkonigsberg. Without the excludes, the M/W/F link-check job keeps re-creating
.github/broken-links/broken-links.mdand re-pinging Devin in Slack on every run. The excludes are the smallest change that stops the noise; the inline TODO points back to this PR so the excludes can be removed after the platform fix lands.Review & Testing Checklist for Human
Risk: green (workflow YAML only, no source/runtime impact)
., no leading anchor — matches Lychee's substring semantics for excludes already used for_next/imageandpdf-ui.png).fern-api/fern-platformships the translation rendering fix (FDRregisterTranslation/ docs bundle locale routing).Notes
c1ac544ehttps://buildwithfern.com/learn/zh/sdks/deep-dives/readme.mdstill ends with(/products/sdks/custom-code.mdx)(broken)https://buildwithfern.com/learn/sdks/deep-dives/readme.mdends with(/learn/sdks/overview/custom-code)(correct)/learn/zh/docs/ai-features/ask-fern/api-reference/code/get-code-recordsHTML → 404;.md→ 200; English HTML → 200Link to Devin session: https://app.devin.ai/sessions/4421ec58c97f48ea9fa26c32a7660770