Skip to content

PRDCT-353: fix the applications audit's live code-accuracy findings (Generative AI + trigger apps) - #1081

Merged
Iamfle4ka merged 4 commits into
mainfrom
PRDCT-353-genai-auth-swap
Aug 17, 2026
Merged

PRDCT-353: fix the applications audit's live code-accuracy findings (Generative AI + trigger apps)#1081
Iamfle4ka merged 4 commits into
mainfrom
PRDCT-353-genai-auth-swap

Conversation

@Iamfle4ka

@Iamfle4ka Iamfle4ka commented Aug 5, 2026

Copy link
Copy Markdown
Collaborator

The June audit flagged the swapped authentication as a blocker. It has been live ever since. Fixing it surfaced a worse defect on the same page, so this PR covers both.

1. The swapped key sources — the audit's finding

OpenAI Service Authentication told the reader to get their key from the Azure Portal; Azure OpenAI Service Authentication step 1 sent them to OpenAI platform settings. Each section now names its own provider.

The audit described this as a section swap, and acting on that would have been wrong. Only the key-source sentences were crossed — Azure steps 3–5 (API Base, Deployment ID, API Version) are genuinely Azure-only, each carrying options.dependencies.service = "azure_openai" in the live schema. Swapping the sections wholesale would have broken the half that was already right.

Confirmed two ways, independently of the audit:

  • the vendor's own component_config/configuration_description.md in keboola/component-generative-ai;
  • src/client/openai_client.py, where AzureOpenAIClient takes azure_endpoint/azure_deployment/api_version while the plain OpenAIClient takes only api_key.

The crossing entered in 0ff8c2aa ("replace OpenAI app docs with Generative AI app docs") — the page it replaced was correct. This restores that fact.

2. A reader failed at step one

The page said "set up a new configuration for the OpenAI application". But kds-team.app-open-ai is flagged deprecated and excludeFromNewList — it cannot be picked from the new-component list at all. The component this page actually documents is kds-team.app-generative-ai, named Generative AI, whose documentationUrl points here.

So anyone following the page hunted for a component they could not add. Fixed, with a note that existing OpenAI configurations keep working. That component also carries appInfo.beta, which the page never mentioned — now labelled.

3. Two providers documented, five shipped

authentication.service enum: openai, azure_openai, google, huggingface, anthropic. The lede now lists all five, including that Google is US-stack only and Hugging Face needs a per-row Endpoint URL.

4. UI labels, against the live configurationSchema

Page said Actual field
API Base URL API Base
List Models List models
"Prompt Template Sync Action" no such thing — it is the Prompt Templates section with a Prompt Template select

Also surfaced Maximum token spend (Optional), a prominent live option the page omitted.

5. Links

The Azure quickstart link now 301s to "Use the Responses API", which has no key-retrieval section — so step 1 pointed at guidance that had disappeared. Repointed to the Azure create-resource doc, which does cover key and endpoint. Every external link on the page was checked live.

Left for an owner rather than guessed

  • VERIFY(owner) on the Deployment ID click-path: Microsoft now routes deployments through the Foundry portal (ai.azure.com → Deployments), not "Azure Portal → Azure OpenAI → Model Deployments". I removed the stale path rather than invent a new one — someone with a live Azure tenant should confirm before a click-path goes back in.
  • platform.openai.com/account/api-keys returns 403 to any non-browser client, so its liveness cannot be verified from here. The page and the component's own config description use the same URL, so they at least agree.

Verification

Build clean, 306 pages. audit-phase2: 45 broken links / 0 missing images, and zero findings of any kind on this page.

Found by reconciling the June audits against the live sites; companion to #1080.


Second commit — the trigger apps

This closes the other two code-accuracy findings the June applications audit recorded on PRDCT-353. Both verified field-by-field against each component's live configurationSchema in the public Storage component index.

Power BI Refresh — the documented sample config could not have worked

Page said Live schema
"datasets": [{ "dataset_input": "<uuid>" }] dataset_list, and its items are plain UUID strings
"wait": true string enum "Yes" / "No", default "No"
"alldatasets": false string enum "Yes" / "No", default "No"
field "Fail if any dataset fails" real label Wait for all datasets to finish
"Load Workspaces" / "Reload Dataset Names" Load workspaces / Reload dataset names
"Interval" / "Timeout" Refresh job status polling interval(s) / … timeout

Anyone who copied that JSON got a configuration the component does not read — wrong key, wrong item shape, and wrong types on two fields.

On the mislabeled option: the page's meaning was right (the schema's description is "End job with an error if any dataset finishes with a failed status") but no field by that name exists in the UI. Worth flagging to the component owner that alldatasets' own title and description disagree — per the 07-28 components call, that copy is fixed at the source, not here.

Also corrected the workspace hint to the schema's own wording, and added the defaults (30 / 3600) plus the project-level maximum timeout the schema mentions.

dbt Cloud Job Trigger — two parameters missing, and one made a sentence wrong

  • ignore_artifacts ("Don't store artifacts", default false) was undocumented while the page stated unconditionally that the component "will also store all available artifacts". Now documented, and that sentence is qualified.
  • dbt_cloud_url ("DBT Cloud URL", default https://cloud.getdbt.com) was undocumented — it is exactly what a non-default region or a single-tenant dbt Cloud instance needs.
  • Smaller: the field is API Key; the text now names the Max wait time field rather than the raw max_wait_time parameter, and carries its default (60s) and the Cause default (Triggered from Keboola).

Left alone deliberately: the developers.keboola.com artifacts link stays until that section migrates into help, per the link rule — it is the one audit-phase2 finding on either page.

Verification

Build clean, 306 pages. audit-phase2 at 45 broken links / 0 missing images, unchanged from main.

Scope note: with this commit the PR covers all three live findings the audit recorded for components/applications/, which keeps it to one section = one PR rather than adding a third PR to a queue where unmerged work is already the bottleneck.

…name

The June audit flagged the swapped authentication as a blocker; it has been live
since. Fixing it exposed a worse defect on the same page, so this covers both.

Swapped key sources (the audit's finding):
- "OpenAI Service Authentication" told the reader to get their key from the
  Azure Portal; "Azure OpenAI Service Authentication" sent them to OpenAI
  platform settings. Each section now names its own provider.
- Note this is NOT the whole-section swap the audit described: Azure steps 3-5
  (API Base, Deployment ID, API Version) are genuinely Azure-only -- each has
  options.dependencies.service = "azure_openai" in the live schema -- so they
  stay put. Swapping the sections wholesale would have broken the half that was
  already right.
- Confirmed against the vendor's own component_config/configuration_description.md
  in keboola/component-generative-ai and against src/client/openai_client.py,
  where AzureOpenAIClient takes azure_endpoint/azure_deployment/api_version and
  the plain OpenAIClient takes only api_key.
- The crossing entered in 0ff8c2a ("replace OpenAI app docs with Generative AI
  app docs"); the page it replaced was correct. This restores that fact.

Stale component name -- a reader failed at step one:
- The page said "set up a new configuration for the OpenAI application", but
  kds-team.app-open-ai is flagged `deprecated` + `excludeFromNewList`, so it
  cannot be picked from the new-component list at all. The component this page
  documents is kds-team.app-generative-ai, named "Generative AI", and its
  documentationUrl points here. Verified against the public Storage component
  index, and a note now tells existing OpenAI users their configs keep working.
- That component carries `appInfo.beta`, which the page never mentioned -- added.

Two providers documented, five shipped:
- authentication.service enum is openai, azure_openai, google, huggingface,
  anthropic. The lede now lists all five, including that Google is US-stack only
  and Hugging Face needs a per-row Endpoint URL.

UI labels corrected against the live configurationSchema:
- "API Base URL" -> API Base; "List Models" -> List models; the nonexistent
  "Prompt Template Sync Action" -> the real Prompt Templates section and its
  Prompt Template select. Added Maximum token spend (Optional).

Links:
- The Azure quickstart now 301s to "Use the Responses API", which no longer has
  a key-retrieval section -- so step 1 pointed at guidance that had vanished.
  Repointed to the Azure create-resource doc, which does cover key and endpoint.
- Every external link on the page verified live.

Left for an owner rather than guessed:
- VERIFY(owner) on the Deployment ID click-path: Microsoft now routes deployments
  through the Foundry portal, not "Azure Portal -> Azure OpenAI -> Model
  Deployments". Not restated here without confirmation.
- platform.openai.com/account/api-keys returns 403 to non-browser clients, so its
  liveness is unverifiable; the page and the component config use the same URL.

Verified: build clean (306 pages); audit-phase2 reports 45 broken links /
0 missing images, and zero findings of any kind on this page.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@linear-code

linear-code Bot commented Aug 5, 2026

Copy link
Copy Markdown

PRDCT-353

@vercel

vercel Bot commented Aug 5, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
connection-docs Ready Ready Preview Aug 5, 2026 4:26pm

Request Review

…hemas

Closes the two remaining code-accuracy findings from the June applications
audit. Both verified field-by-field against each component's live
configurationSchema in the public Storage component index.

Power BI Refresh (kds-team.app-powerbi-refresh) -- the sample config could not
have worked:
- The datasets parameter is `dataset_list`, not `datasets`, and its items are
  plain UUID strings, not objects with a `dataset_input` key. Anyone copying the
  documented JSON got a configuration the component does not read.
- `wait` and `alldatasets` are string enums "Yes"/"No" (both default "No"), not
  booleans. The sample passed `true` / `false`.
- `alldatasets` was documented as "Fail if any dataset fails". Its real label is
  "Wait for all datasets to finish". The page's *meaning* was right -- that is
  what the schema's description says -- but no such field name exists in the UI.
- Button labels: "Load workspaces" and "Reload dataset names" (not title-cased).
- `interval` / `timeout` are labelled "Refresh job status polling interval(s)"
  and "Refresh job status polling timeout"; added their defaults (30 / 3600) and
  the project-level maximum the schema mentions.
- Corrected the workspace hint to the schema's own wording: leave blank or set
  "Default Workspace" for a dataset not assigned to a workspace.

dbt Cloud Job Trigger (kds-team.app-dbt-cloud-job-trigger) -- two parameters were
missing entirely, and one of them made an existing sentence wrong:
- `ignore_artifacts` ("Don't store artifacts", default false) was undocumented
  while the page stated unconditionally that the component "will also store all
  available artifacts". Now documented, and that sentence is qualified.
- `dbt_cloud_url` ("DBT Cloud URL", default https://cloud.getdbt.com) was
  undocumented -- it is what a non-default region or single-tenant instance needs.
- Field label is "API Key"; referred to the "Max wait time" field rather than the
  raw `max_wait_time` parameter name, and added its default (60s) and the
  Cause default ("Triggered from Keboola").

Left alone deliberately: the developers.keboola.com artifacts link stays until
that section migrates into help, per the link rule.

Verified: build clean (306 pages); audit-phase2 at 45 broken links / 0 missing
images, unchanged; the only finding on either page is that intentional dev link.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@Iamfle4ka Iamfle4ka changed the title PRDCT-353: fix the swapped OpenAI/Azure auth and the stale component name on Generative AI PRDCT-353: fix the applications audit's live code-accuracy findings (Generative AI + trigger apps) Aug 5, 2026
@Iamfle4ka Iamfle4ka added the june-audit-fixes Lands a finding from the June 2026 Devin docs audit that was never applied label Aug 5, 2026
@jordanrburger
jordanrburger marked this pull request as ready for review August 5, 2026 16:25

@keboola-pr-reviewer-bot keboola-pr-reviewer-bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verdict: needs_human (risk 3/5) · profile docs

Needs human: the diff makes many unverifiable product-behaviour claims across three component pages, and one external link's liveness is explicitly unverifiable.

Concerns:

  • src/content/docs/components/applications/ai/generative-ai/index.md: Unverifiable product claims: OpenAI-app deprecation, five-provider enum, Google US-stack-only
  • src/content/docs/components/applications/triggers/powerbi-refresh/index.md: Sample config rewritten to dataset_list/string enums — schema shape unverifiable from diff
  • src/content/docs/components/applications/ai/generative-ai/index.md: platform.openai.com/account/api-keys liveness unverifiable (403 to non-browser clients)
  • + 1 more concern — see Check Run summary.

Suggested reviewers: @keboola/docs

@keboola-pr-reviewer-bot keboola-pr-reviewer-bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verdict: needs_human (risk 3/5) · profile docs

Escalating: the diff introduces many product-behaviour and config-schema claims across three component pages that can't be verified from the diff and need product-team confirmation.

Concerns:

  • src/content/docs/components/applications/triggers/powerbi-refresh/index.md: Rewritten sample config (dataset_list, string "Yes"/"No" enums) unverifiable from diff; customers copy it.
  • src/content/docs/components/applications/ai/generative-ai/index.md: New product claims: five providers, Google US-stack-only, OpenAI app deprecated, beta — need product confirmation.
  • src/content/docs/components/applications/ai/generative-ai/index.md: VERIFY(owner) comment left in published content flagging an unconfirmed Azure click-path.

Suggested reviewers: @keboola/docs

@Iamfle4ka
Iamfle4ka merged commit b382aa0 into main Aug 17, 2026
1 check passed
@Iamfle4ka
Iamfle4ka deleted the PRDCT-353-genai-auth-swap branch August 17, 2026 14:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

june-audit-fixes Lands a finding from the June 2026 Devin docs audit that was never applied

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants