Conversation
25 links across 14 files, found by check-redirects.mjs --flippable (#1091) plus two checker-blind cases (pre-rename /extend/docker/running/ URLs absent from the 175-row map). Anchors preserved where the target heading exists and verified in dist; one dead dev anchor (#technical-differences, now a redirect stub that would drop it) reworded to /extend/component/#component-types. Deliberately NOT flipped, still reported by --flippable: - 3 SSH-tunnel links in database pages — #1019 owns those files - 4 /integrate/storage-family links — their real home is /storage/api/, which lands with #1053; /storage/ today would strand them one level short Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
keboola-pr-reviewer-bot
left a comment
There was a problem hiding this comment.
Verdict: auto_approve (risk 2/5) · profile connection-docs
Auto-approve: content-only dev-domain link flips, all targets and anchors verified present at HEAD.
Concerns:
src/content/docs/components/writers/storage/aws-s3/index.md: Whole-file line-ending/whitespace churn with identical prose; will noise up git blame.
Dismissing prior approval — superseded by a fresh review on this PR.
# Conflicts: # src/content/docs/components/extractors/other/generic/generic.md # src/content/docs/transformations/index.md # src/content/docs/transformations/mappings/index.md
Dismissing prior approval — a new commit was pushed and this review was for an earlier SHA. Run @keboola-pr-reviewer-bot review to get a fresh verdict.
|
New commit on |
David's call: the 59 legacy CLI pages are not being ported into help. The
banner names the repository instead, so every link that pointed at
developers.keboola.com/cli/ now goes to github.com/keboola/keboola-as-code —
which survives the domain retirement.
Six links across five pages. Five go to the repository:
- cli/index.md — the kbagent-vs-legacy banner
- overview/index.md — "the legacy Keboola as Code CLI is still available"
- transformations/dbt/cli/cli.md ×2 — local dbt development runs on kbc, and
the installation link now points at the repository's install section
- management/project/index.md — CLI Sync is a Keboola-as-Code feature
The sixth goes to help instead: tutorial/index.md listed "Command-line
interface (CLI)" among the advanced steps with wording that fits either tool
("operate a project efficiently using the Keboola command-line tool"). A reader
starting the tutorial today should land on the supported CLI, so that one points
at /cli/, whose banner then explains the legacy tool and links the repository.
This clears the last developers.keboola.com/cli/ reference in the docs.
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>
…s documented The banner read as a footnote about deprecation timing — "still supported for now; new work should use kbagent" — which leaves a reader guessing whether the two tools share anything and where the older one is written up. Per David and Martin (2026-09-03): the legacy CLI reference is being deleted with developers.keboola.com, not moved into help. So the banner now says the three things a reader actually needs — what kbc is, that it shares nothing with kbagent, and where it lives if they still use it — and points at the repository rather than a domain that is going away. Also drops the TODO asking Jordan for a deprecation timeline: that question is answered. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…e them The dbt local-development page teaches Keboola as Code — install it, kbc dbt init, generate profile/sources/env — and told the reader that platforms other than macOS were "covered in the installation instructions", linking the tool's repository. The repository has no installation instructions; the page that had them is the one being deleted with developers.keboola.com, and the move into the repo was rejected (keboola-as-code#2654). So the commands move here, where they are actually used: Debian/Ubuntu, Fedora and Alpine with their repository and GPG-key setup, the three Windows package managers, the MSI and the precompiled binaries. macOS was already inline. Taken from the page being deleted, at its corrected revision (developers-docs#397). Also drops the same false promise from management/project: it sent readers to the repository "for more detailed information". This is the only place in help that still teaches kbc. Checked the rest: cli/index.md carries the banner, overview names the tool and links the repo, and cli/web-ui.md's `keboola-cli` is the kbagent Python package from keboola/cli — a name collision, not this tool.
…n help Batch 1 landed the Storage API pages after this branch was cut, so nine /integrate/storage/** links now have homes: /storage/api/**, with the #working-with-sliced-files fragment verified against the built id. The dev home links follow the precedent already on this branch (→ /extend/), the home-page bullet that advertised developers.keboola.com as a sibling site now names Extending Keboola, and /extend/docker-runner/processors/ takes its help alias. 78 → 35 remaining. All 35 are gated: 29 wait for the eight identity-landed pages (#1120), three SSH-tunnel links are rewritten by #1019, three #development-project links wait for #1022. Verified: build 361 pages, audit-phase2 missing images 0, unclosed fences 0, broken internal links unchanged at the pre-existing 29; every flipped target exists in dist. Line endings preserved (four of the nine files are CRLF). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…s become 5, in their topic homes Nikita's call (2026-09-09): no 1:1 landing. Triage each of the eight pages by section against the June audits (PRDCT-363/368/369), the service swaggers and what help already says; keep what is useful and new, fold it where the concept already lives, drop the rest with the evidence recorded here. Kept, merged, moved: - /management/jobs/api/ (287 lines) from integrate/jobs + automate/run-job + automate/run-orchestration (504 + 53 + 56). Run a job, run a flow, poll, debug, and the API-level reference: states, waiting reasons, runId hierarchy via X-KBC-RunId, configuration vs configData, modes, runtime settings, the five job types. - /extend/common-interface/encryption/ (150), content unchanged from overview/encryption. - /extend/common-interface/artifacts/ + /tutorial/ (132 + 215) from integrate/artifacts. - /flows/schedule-api/ (105) from automate/set-schedule (308). - /overview/ gains "APIs and service endpoints": portals per stack, the token header, GET /v2/storage as the authoritative service list, the machine-readable apis.json. /overview/api/ redirects there. Dropped, with evidence: - The API catalogue table and the 144-line service-endpoint table: the portal and the Storage index are the source of truth; the table already listed 8 of 23 services, a wrong OAuth URL and no Sandboxes (audit PRDCT-363). - The Apiary console section and its screenshot: the portal is not Apiary any more. - run-orchestration's claim that one component serves Orchestrator and Flow jobs: the job queue defines keboola.orchestrator and keboola.flow separately (audit PRDCT-369). - Field-by-field job object dump (120 lines), a 35-line component-list response and two 45-line job responses: replaced by trimmed excerpts plus the swagger link. - Eleven Postman deep links and one dead apiary.io link. - Three of four full Scheduler request/response dumps; the scheduler.azure URL that no swagger server lists; the master-token claim the code does not confirm (VERIFY). - Four screenshots: apiary-console, postman-import, orchestration-parameters, job-row-parameters. Corrections applied from the audits: artifacts config key `orchestration` → `shared` (job-queue Artifacts.php); job types are five, retryContainer added with a VERIFY for its description; `[job types](todo)` link; three typos. 52 help links repointed to the new homes in 34 files; management/project/tokens and transformations/python-plain are left to a follow-up because #1094 edits the same lines. Nav: the temporary group is gone; the pages sit under Management › Jobs, Flows and Common Interface. Verified: build 367 pages, 273 redirect pages; audit-phase2 broken internal links 0, missing images 0, unclosed fences 0; every inbound fragment (#run-a-job, #job-runtime-configuration, #job-polling, #job-id, #working-with-the-jobs-api, #encrypting-data-with-api, #apis-and-service-endpoints) resolves to an id in dist; all nine old paths redirect to the new pages. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
… files Four on the API tokens page (three to the APIs subsection on /overview/, the "region" one to /overview/#stacks) and the encryption link on the Python transformations page. Their targets exist only once #1120 is on main, so this PR merges after #1120 — the order the PR bodies already state. After both land, the only dev-domain links left in help are the three to the dev home's #development-project section, which wait for #1022. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
#1120 promotes the APIs subsection out of the /overview/ glossary into a first-class section with id #apis; the three tokens-page links follow. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
… job states, dev project on help Nikita's decisions on the review's placement findings (2026-09-14): APIs get their own `## APIs` section on /overview/, ahead of the glossary, instead of an h3 inside "Other Commonly Used Terms". The home page's "API reference" and the other 24 repointed links now land on a first-class section; the anchor is #apis, followed in 15 places here and in #1094, #1091 and developers-docs#418. Job states have one canonical home, /management/jobs/api/#job-status, the list checked against the queue swagger. /management/jobs/ keeps the UI half and drops both its own three-state list and the claim that a job always waits for infrastructure first — the API page says platform delays keep a job in `created`, and the two contradicted each other. /components/running-jobs-in-parallel/ keeps the billing rule and points at the same anchor. Two duplicate explanations collapse to a pointer: ai/index.md on apis.json, and extend/job-queue's API menu, which listed the same Queue API calls the Jobs API page documents in full. The dev home's "Development Project" section lands as /extend/development-project/ — the address #1022 also uses, so that PR drops the file when it rebases. The last three developers.keboola.com links in help point there now, which leaves only the three that #1022 owns. Its figures carry a VERIFY(owner): they come from the dev site unchanged. Verified: build 368 pages, audit-phase2 broken links 0 / missing images 0 / unclosed fences 0; #apis, #stacks, #job-status and the new page resolve in dist; no #apis-and-service-endpoints and no dev-home links left in content. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
jordanrburger
left a comment
There was a problem hiding this comment.
Review
The link flipping itself is right, and I verified the results — but the PR has grown well past what the description says, and two things should be settled before it merges.
Verified
Merged onto main together with #1120 (clean both ways), built, and ran the audit: build clean at 369 pages, 0 broken internal links, 0 missing images. Live developers.keboola.com links across help go from 78 to 3, and the three that remain are exactly the /integrate/database/ SSH-tunnel ones #1019 owns. Anchor preservation checks out — the flipped anchors all resolve in dist/.
I also checked the new kbc install instructions on the dbt page against the live distribution, since those are user-facing commands: deb/Packages, deb/Release, apk/x86_64/APKINDEX.tar.gz, rpm/repodata/repomd.xml and all three GPG keys return 200, and both the Homebrew tap and the Scoop bucket exist. The instructions are accurate.
1. CRLF → LF normalization inflates the diff by ~480 lines
Three files were rewritten end to end for one changed character each:
| File | Diff | Real change (--ignore-all-space) |
|---|---|---|
storage/tables/data-types/index.md |
200+ / 200- | 1 line |
transformations/code-patterns/index.md |
94+ / 94- | 1 line |
components/writers/storage/aws-s3/index.md |
90+ / 90- | 1 line |
All three had CRLF endings on main and are LF on the branch. That's 480 of the PR's 487 insertions.
This has a concrete cost: git merge-tree confirms it conflicts with #1084 on data-types/index.md. The two changes are adjacent anyway, so some conflict was likely — but a whole-file rewrite turns a small hunk conflict into a 200-line one.
It's also half a migration: the repo has no .gitattributes, and 53 more Markdown files under src/content/docs/ still have CRLF. Either restore the original line endings in these three files so the diff is three lines, or split the normalization into its own PR with a .gitattributes so it's done once and consistently. Doing it incidentally in a link-flip PR is the one option that has the costs of both.
2. The description no longer matches the PR
The body is dated to the original 2026-08-19 cut and describes a purely mechanical flip. Since then the PR has gained:
- ~60 lines of new
kbcinstall documentation across five platforms on the dbt CLI page - a rewrite of how Keboola as Code is positioned in
cli/index.md - the CRLF normalization above
None of it is mentioned. The "Deliberately NOT flipped" table is stale too — #1053 and #1054 both merged on 2026-08-26, and the storage and generic-extractor links they were waiting on were in fact flipped in the later commits. Since the description is what a reviewer reads first, it'd be worth a rewrite before merge.
3. This resolves a TODO(human-review, Jordan) — that call is mine
cli/index.md previously read:
kbagent is a different tool from the legacy Keboola as Code CLI (
kbc) ... That tool is still supported for now; new command-line work should use kbagent.
<!-- TODO(human-review, Jordan): confirm the legacy Keboola-as-Code CLI deprecation timeline and where to state it. -->
The PR removes the TODO and replaces this with "a different, older tool ... it is not documented here", dropping the "still supported" statement.
I understand the motivation — #1093, which would have ported the kbc docs under /cli/, was closed, so this PR picked up the job of not stranding kbc users, and conserving the install commands rather than losing them is the right instinct. But the support status of a shipped tool is a product fact, and AGENTS.md is explicit that those go to a maintainer rather than being decided in the edit. Let's agree the wording before this lands; I'll confirm the deprecation position.
Minor
scripts/check-redirects.mjs, which the --flippable verification rests on, isn't in the repo — so a reviewer can't reproduce that part. Worth committing it, or noting that it's a local tool.
Summary
The flips and the install content are good. Please revert or split out the line-ending change, refresh the description, and let's settle the Keboola-as-Code wording — then this is ready.
Jordan's review: these three had CRLF on main and the branch rewrote them end to end for one changed character each — 480 of the PR's 487 insertions — which turned a small hunk conflict with #1084 into a 200-line one on data-types/index.md. Each file is back to its original bytes with only its single link flipped, so the diff is three lines. `git merge-tree` against #1084 is now clean. Normalizing line endings repo-wide (50 more Markdown files still have CRLF, and there is no .gitattributes) stays a separate job rather than a side effect of a link flip. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
His review is right that the support status of a shipped tool is a product fact, not an edit-time decision, and this branch had removed both the "still supported for now" sentence and the TODO marker that held the question open. The banner keeps what David Esner asked for in Slack on 2026-09-03 — name the tool, say it shares nothing with kbagent, link the repository — and now asserts no support status in either direction. The TODO records both inputs so Jordan can settle the deprecation position in one edit. Broken internal links on this branch go 29 → 30: the extra one is the encryption link flipped on transformations/python-plain, whose target lands in #1120. Merge order is unchanged: #1120, then this. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…s being republished Both items from Jordan's review of this PR. 1. `/overview/api/` is the most-linked retired dev URL, and `redirect-from.mjs` derives its target from the page slug, so a `redirect_from` structurally cannot carry a fragment: the redirect landed at the top of a 200-line page and the reader had to scroll past four sections to reach APIs. Jordan's own suggestion, and the better Diátaxis fit, is a page of its own. `/overview/apis/` now holds the portals table, the token header, the service-endpoint rule, `apis.json` and the Postman collection; the redirect lands exactly on it; `/overview/` keeps one sentence under Stacks. 16 links follow, plus the ones in #1094, #1091 and developers-docs#418. 2. The Development Project page committed to third parties on figures no public source confirms — 3.5 GB storage, Snowflake backend, 10 users, 3 orchestrations — carried from the dev site. Jordan would not merge that unverified, and the cost of publishing a wrong commitment is not the cost of a wrong behaviour note. The page keeps what a developer actually needs (the conditions, registering in the Developer Portal, the support email and the template) and no longer states the size. The figures are logged in the PR body so nothing is lost, and a VERIFY asks the owner to put them back if they still hold. Verified: build 370 pages, audit-phase2 broken internal links 0, missing images 0, unclosed fences 0; /overview/api/ redirects to /overview/apis/; no /overview/#apis references left. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
#1120 splits it out as /overview/apis/ so the /overview/api/ redirect can land exactly. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Linear: PRDCT-658
What
Every
developers.keboola.comlink in help whose target already lives on help is flipped to the internal path. Plus two pieces of content that the dev-domain retirement would otherwise have destroyed.Merge order: #1120 first, then this. 30 of the links here point at pages #1120 creates.
Links
78 → 3 across help, counted in the built site. The three that remain are the
/integrate/database/SSH-tunnel links, which #1019 rewrites when it folds that page in.Flipped in waves as targets landed:
/extend/**after #1046, Storage API after batch 1, Generic Extractor and Generic Writer after their batches, and finally the five that share lines with #1120's files plus the three pointing at the dev home's Development Project section. Anchors were checked againstid=attributes indist/, not assumed:#working-with-sliced-files,#stacks,#apis,#job-statusand the rest all resolve.Content this PR keeps alive
kbcinstall instructions (transformations/dbt/cli/cli.md, ~60 lines). That page is the one place in help that teaches Keboola as Code, because local dbt development runs on it, and it promised "other platforms covered in the installation instructions" while linking a repository that has none. The commands are inlined instead: Debian/Ubuntu, Fedora and Alpine with their repositories and GPG keys, WinGet, Chocolatey and Scoop, MSI and binaries. Taken from the dev page at its corrected revision (developers-docs#397) before that page was deleted. Jordan verified them against the live distribution in review: every repository path and all three GPG keys answer, and both the Homebrew tap and the Scoop bucket exist.The
/cli/banner (cli/index.md) now routeskbcusers to the repository rather than to a dying domain, per David Esner's call in Slack on 2026-09-03. It names the tool, says it shares nothing with kbagent, and linkskeboola/keboola-as-code. It deliberately asserts no support status;TODO(human-review, Jordan)holds that question open with both inputs recorded.The same false promise was removed from
management/project/index.md.Review fixes (2026-09-14)
git merge-treeagainst PRDCT-689: document text-column widening and DuckDB output data types (CFTL-713 / SUPPORT-16781) #1084 is clean again. Repo-wide normalization (50 more Markdown files, no.gitattributes) stays a separate job.TODO(human-review, Jordan)on the CLI banner is back, and the banner no longer states a support status either way.Verification
npm run buildaudit-phase2missing images / unclosed fencesid=indist/git merge-treevs #1120scripts/check-redirects.mjs, which backs the--flippablecount, lives in #1091 rather than in this branch, so reproduce that part from there.🤖 Generated with Claude Code