PRDCT-572: consolidated dev→help redirect map + conservation checker (re-cut off main) - #1091
Draft
Iamfle4ka wants to merge 6 commits into
Draft
PRDCT-572: consolidated dev→help redirect map + conservation checker (re-cut off main)#1091Iamfle4ka wants to merge 6 commits into
Iamfle4ka wants to merge 6 commits into
Conversation
Re-cut off main: the original branch was stacked on the closed phase-1/phase-2 chain, so it carried 16 superseded commits and a merge-base from 2026-07-08. Refreshed against main since: - Variables rows point at /components/variables/ — the section owners settled (Matyas 08-04, Jordan 08-05: variables are a base component), executed in #1051. - The 59 Keboola-as-Code rows are surfaced as an open question rather than left asserting a home that exists nowhere: #1027 died and #1015 gave /cli/ to kbagent. - --build no longer accepts a live dev path as conservation when the row moves; an unrelated page can occupy that URL, which is exactly what /cli/* does today. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This was referenced Aug 19, 2026
…t it at /storage/api/ The row said MERGE → /storage/, but #1053 factually landed the dev page's technical layer (API intro + clients) at /storage/api/ with a clients/ tree. A /storage/ 301 would strand readers one level short of the content. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Iamfle4ka
pushed a commit
that referenced
this pull request
Aug 19, 2026
The dev Storage page's content (API intro + clients) lives on this page now, but only /integrate/storage/api/ was redirected — the bare URL resolved nowhere. Found by the redirect contract's conservation check (#1091). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
David's call (2026-09-02): the legacy Keboola-as-Code pages are not ported into help. The kbagent banner names github.com/keboola/keboola-as-code instead, and every dev-CLI link in the docs now points there (#1094). #1093 is closed. The contract has to say so, otherwise it reports 59 URLs as conservation failures forever. Adds an `external` status: the destination is kept verbatim rather than forced into a help path, --build stops expecting those URLs in dist and reports them separately, and --live checks the 301 against the off-site URL instead of prefixing help's host. The honest reading of the gate on today's main changes accordingly: before 67 resolve nowhere after 59 off-site by decision, 8 genuinely unresolved The remaining 8 are the PRDCT-550 rows — /integrate/ artifacts and jobs, /automate/ run-job and set-schedule, /overview/ api and encryption. Note for the retirement (PRDCT-565): these 59 are the one group whose 301 does not point at help. The edge rules need `developers.keboola.com/cli/**` sent to the repository — or to /cli/, whose banner routes onward — and that choice is now visible in the map rather than implied. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…epo root The 59 CLI rows pointed at github.com/keboola/keboola-as-code — the repository, not the page. That is fine as a statement of intent and useless as an edge rule: a reader following developers.keboola.com/cli/commands/sync/pull/ would land on a monorepo root and have to hunt. keboola-as-code#2654 lands the pages at a predictable path, so each row now carries the file it actually became — commands/sync/pull/ → docs/user-docs/commands/sync/pull.md, and so on for all 59. The same table now exists three times over and agrees with itself: here, in the redirect stubs of the developers-docs deletion PR (keboola/developers-docs#417), and in the ported tree itself. Written into PLACEMENT-MAP.md rather than only into the TSV: --gen regenerates the TSV from the map, so a hand-edited TSV would have been silently reverted by the next person to run it. Verified by regenerating — the destinations survive. The lossy-parse guard earned its keep here: a first attempt at the map edit ate a space before the target column, dropped the parse to 116/175 rows, and the generator refused to write the result instead of shipping a truncated contract.
…y one Yesterday's commit gave each retired CLI URL the exact file it would become in keboola-as-code. That PR (keboola-as-code#2654) was closed by the repo owner on 2026-09-03, so docs/user-docs/ will not exist and those 59 destinations would have been 404s. All 59 now point at the repository root, which is what stays true: the tool lives there, its documentation does not. The map's decision note now says so plainly, including what the choice costs — end-user installation instructions exist nowhere else, and 21 of the CLI's 68 embedded help texts are empty, so for those commands no prose survives at all. That is the owner's call to make; the contract's job is to state it rather than imply a destination that isn't there.
…ses, add the cutover runbook The contract had eight rows carrying proposed topic targets that never got an owner call; #1120 lands those pages 1:1 at their dev paths (the /extend/ precedent), so the rows now record identity and `unsure` drops to zero. Against a main+#1120 build, --build reports 201/201 reachable. New in the map: the 26 Jekyll redirect_from aliases the dev site still honours (/extend/docker/**, /extend/custom-science/**, /integrate/push-data/** …). Help already resolves each through redirect_from on the canonical page; they are rows now — status `alias` — so cutover day checks them too. --live judged the first Location header, which assumed a per-path map at the edge. The edge rule is a host-swap (help + same path; help's own redirect_from does the second hop), so --live now follows the chain — HTTP redirects and help's meta-refresh pages — and compares where a browser actually lands. --vercel prints the vercel.json `redirects` block (148 rules) that would turn help's second hop into a real 301; printed, not written — wiring it is a production routing change for its own PR. PLACEMENT-MAP.md gains the cutover runbook for PRDCT-565: the CloudFront Function (host-swap with the /cli/* → repository carve-out, since help's /cli/ is kbagent), preconditions, cutover-day checks, archive steps, Search Console, rollback. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
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.
Linear: PRDCT-572 · Re-cut off
main, replaces #1043 (same content, no dead base).#1043 was based on
PRDCT-560-devdocs-link-cleanup— a branch belonging to a closed PR in the abandoned phase-1/phase-2 stack. It carried 16 superseded commits and a merge-base from 2026-07-08, so it could never have merged anywhere useful. This is the same deliverable re-cut offmain, exactly as #1051–#1054 were.What it adds
The dev-domain retirement contract as a checkable artifact — today that truth is scattered across PLACEMENT-MAP, MIGRATION-REPORTs and batch PRs, and the in-build redirects are meta-refresh pages, not 301 rules.
PLACEMENT-MAP.md— 175/175 dev pages mapped_data/redirects/dev-to-help.tsv— generated, never hand-editedscripts/check-redirects.mjs—--gen·--build(conservation gate) ·--flippable·--live(cutover day)Refreshed against a month of
mainVariables rows now point at
/components/variables/. The map still said Transformations; the owners settled it since (Matyáš 08-04: variables are a base component with no location constraint; Jordan 08-05), and #1051 executes it.The checker accepted false conservation — fixed.
--buildcounted a row as safe if either the dev path or the final target resolved. For a row that moves, a live dev path can be an unrelated page occupying that URL — which is precisely/cli/*today: kbagent sits there, so three Keboola-as-Code rows were reported "pending" while a reader following them lands on a different tool's docs. Conservation now requires the final target, except for identity redirects. The honest count went 117 → 120.The finding that needs a call: 59 Keboola-as-Code pages have no home
Added to the map's UNSURE section rather than answered, since placement is not mine to make:
/cli/keboola-as-code/**, a tree that exists in no branch and no open PR — PRDCT-470: phase-1 dev-docs migration — one script run (165 pages) #1027 (phase 1) was closed, and PRDCT-490: new top-level CLI section — kbagent #1015 gave/cli/to kbagent.cli/index.mdstill sends readers to the livedevelopers.keboola.com/cli/for the legacy tool.The page already carries
TODO(human-review, Jordan)on the KaC deprecation timeline — this is the same decision: port them under/cli/keboola-as-code/, or declare end-of-life and 301 the lot to/cli/?Expected state of the gate
--buildcurrently fails: 120 of 175 dev URLs resolve nowhere onmain, because the four batch PRs (#1051–#1054) are still open and phase-1's redirect pages died with #1027. That failure is the artifact's value — it quantifies the gap. It goes green as the batches land; the 59 CLI rows will not, until the question above is answered.--flippablereports 29 dev-domain links in content whose target already lives on help — a separate mechanical follow-up, not included here.🤖 Generated with Claude Code
Update 2026-09-08 — contract complete, cutover runbook included
redirect_fromaliases the dev site still honours (/extend/docker/**,/extend/custom-science/**,/integrate/push-data/**…) are rows with statusalias, so--livecovers them.unsure→ 0.--buildagainst a main + PRDCT-582: land the last 8 dev pages on help at their original paths #1120 build: ✓ 201/201 reachable. Againstmainalone it lists those eight until PRDCT-582: land the last 8 dev pages on help at their original paths #1120 merges, so the merge order is PRDCT-582: land the last 8 dev pages on help at their original paths #1120 → this.--livenow follows the whole chain (edge 301 → helpredirect_from→ page) and judges the landing URL. The edge rule is a host-swap, not a per-path map, so the firstLocationwas the wrong thing to check.--vercelprints theredirectsblock (148 rules) that would make help's second hop a real 301 instead of a meta-refresh page. Printed only; wiring it intovercel.jsonis a separate PR.PLACEMENT-MAP.md: the CloudFront Function (host-swap with the/cli/*→ repository carve-out, because help's/cli/is kbagent), preconditions, cutover-day checks, archive steps, Search Console, rollback. This is the PRDCT-565 hand-off.