fix(docs): stop emitting an email-shaped string Cloudflare deletes (#93) - #95
Merged
Conversation
Closes #93. A live regression from #85, found by checking production rather than `dist`. ### What readers actually saw Every engine document page rendered: > Fetched at build time from CodeGateSoftware/**[email protected]**. Cloudflare's Email Address Obfuscation matched `keel@v0.11.2` as an address and replaced it at the edge: <a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="9af1fffff6daecaab4ababb4a8">[email protected]</a> Decoding `data-cfemail` with its leading-byte XOR key returns `keel@v0.11.2`, so the origin response was always correct — only the served bytes were wrong. ### Why #85 caused it The `${repo}@${ref}` template predates the pin. Before it, `ref` was `main`, and `keel@main` has no dot after the `@`, so it does not look like an address. `keel@v0.11.2` does. The irony is exact: #85 existed to make the documented version visible, and the moment it became a version number the edge deleted it. ### The fix, and why this one Two remedies existed. Turning Email Address Obfuscation off is a zone-level dashboard setting — not reachable from this repo, global in blast radius, and it would silently regress the day someone re-enables it. Emitting `repo at ref` instead carries the same information, matches no address pattern, and cannot be undone by a setting. All three locales get a connector in their own language — `at` / `عند` / `à` — rather than a symbol. A comment on the template says why, so nobody tidies it back to `@`. ### Same class as #82 An edge rewrite silently changing what the site says, invisible from inside the repo because `dist` was right. That is the second time; #93 suggests a production assertion, and `ai-crawler-check.yml` is the pattern to copy. ### Verification - `npm run check` — 0 errors, 0 warnings - `npm run build` — 56 pages, complete - Zero `CodeGateSoftware/keel@` occurrences in any built page - Renders in all three locales: - en — `from CodeGateSoftware/keel at v0.11.2` - ar — `من CodeGateSoftware/keel عند v0.11.2` - fr — `depuis CodeGateSoftware/keel à v0.11.2` Production must be re-checked after deploy: the origin was never the problem. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015cBJ2syTN4VoE73F9sBNGW
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Closes #93. A live regression from #85, found by checking production rather than
dist.What readers actually saw
Every engine document page rendered:
Cloudflare's Email Address Obfuscation matched
keel@v0.11.2as an address and rewrote it at the edge:Decoding
data-cfemailwith its leading-byte XOR key returnskeel@v0.11.2— the origin response was always correct, only the served bytes were wrong. Which is exactly whynpm run buildand every CI check stayed green.Why #85 caused it
The
${repo}@${ref}template predates the pin. Before it,refwasmain, andkeel@mainhas no dot after the@, so it does not look like an address.keel@v0.11.2does.The irony is exact: #85 existed to make the documented version visible, and the moment it became a version number the edge deleted it.
The fix, and why this one
All three locales get a connector in their own language —
at/عند/à— rather than a symbol. A comment on the template records why, so nobody tidies it back to@.Same class as #82
An edge rewrite silently changing what the site says, invisible from inside the repo because
distwas right. That is now twice.ai-crawler-check.ymlalready tests production for exactly this kind of thing — a sibling assertion for the version string is the obvious follow-up, noted on #93.Verification
npm run check— 0 errors, 0 warningsnpm run build— 56 pages, completeCodeGateSoftware/keel@occurrences in any built pagefrom CodeGateSoftware/keel at v0.11.2من CodeGateSoftware/keel عند v0.11.2depuis CodeGateSoftware/keel à v0.11.2Production must be re-checked after deploy — the origin was never the problem, so a green build proves nothing here.
Reviewer attention
atthe right English connector, or would@ v0.11.2with a space read better? A space defeats the matcher too, but it is easier to "fix" back into a defect later.عندand fràconnectors are my choice — worth a native eye.🤖 Generated with Claude Code
https://claude.ai/code/session_015cBJ2syTN4VoE73F9sBNGW