Skip to content

PRDCT-572: consolidated dev→help redirect map + conservation checker (re-cut off main) - #1091

Draft
Iamfle4ka wants to merge 6 commits into
mainfrom
PRDCT-572-redirect-map-recut
Draft

PRDCT-572: consolidated dev→help redirect map + conservation checker (re-cut off main)#1091
Iamfle4ka wants to merge 6 commits into
mainfrom
PRDCT-572-redirect-map-recut

Conversation

@Iamfle4ka

@Iamfle4ka Iamfle4ka commented Aug 19, 2026

Copy link
Copy Markdown
Collaborator

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 off main, 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-edited
  • scripts/check-redirects.mjs--gen · --build (conservation gate) · --flippable · --live (cutover day)

Refreshed against a month of main

Variables 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. --build counted 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:

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

--build currently fails: 120 of 175 dev URLs resolve nowhere on main, 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.

--flippable reports 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

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>
@linear-code

linear-code Bot commented Aug 19, 2026

Copy link
Copy Markdown

PRDCT-572

@vercel

vercel Bot commented Aug 19, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
connection-docs Ready Ready Preview Sep 8, 2026 12:43pm UTC

Request Review

…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>
@Iamfle4ka Iamfle4ka added the dev-docs-migration developers.keboola.com → help.keboola.com migration label Aug 26, 2026
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dev-docs-migration developers.keboola.com → help.keboola.com migration

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant