Skip to content

docs(ep-v2): add Portal Features page documenting Ask AI - #4391

Open
Bishibop wants to merge 3 commits into
mainfrom
nick/ep-v2-portal-features-ask-ai-docs
Open

docs(ep-v2): add Portal Features page documenting Ask AI#4391
Bishibop wants to merge 3 commits into
mainfrom
nick/ep-v2-portal-features-ask-ai-docs

Conversation

@Bishibop

@Bishibop Bishibop commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

Part 3 of 3 for sc-139273. Ask AI is live and entirely undocumented. Parts 1 and 2 merged as #4389 and #4390.

The provider is described but not named, deliberately

The data disclosure states what leaves the portal — the question, up to 10 prior messages, and the entitlement-filtered content — but calls the destination "a third-party AI provider" rather than naming it.

The provider is Groq, and it is absent from Infrastructure and Subprocessors, which today lists OpenAI and FireworksAI. Publishing a disclosure that names a processor missing from our own published list advertises the inconsistency. Adding a subprocessor is not a docs-team editorial call, and the listing is owned outside this PR with no timeline I can state. Rather than hold this page indefinitely — Ask AI is shipping to customers undocumented right now — the naming is deferred to a follow-up.

To be explicit about what that means for review: this PR is complete and mergeable on its own. The follow-up is not a loose end in this change, it is a separate change that becomes possible later. If the listing never happens, this page is still correct as written.

The model id is withheld for the same reason, and this part is not obvious: it reads as openai/gpt-oss-120b, and OpenAI is on the subprocessor list. Naming the model while withholding the provider would imply the processor is OpenAI, which is wrong. Provider and model are restored together or not at all.

The links to Infrastructure and Subprocessors are dropped for the same reason — a reader following one to learn who processes their AI data would find OpenAI and FireworksAI and draw the wrong conclusion.

Follow-up, once Groq is listed: restore the provider name and link, the model id, the sentence pointing at the subprocessor page, the Related topics entry, and Groq in styles/config/vocabularies/ThirdPartyProducts/accept.txt (Vale flags it as a spelling error otherwise). Roughly a five-line diff.

What this PR does not do: hide that data leaves. A vendor reading this page learns that enabling Ask AI sends their content and their customers' questions to a third party, and is told to check that against their own customer agreements. Only the identity is deferred.

Why a new page

The Portal Features section of Enterprise Portal > Content holds three app-level settings and had no page describing it. sc-139271 needs a single Learn more link pointing at documentation covering all the toggles in the box, and #4373 documented the two Security Center toggles by topic on the Security Center page.

Rather than move that merged work, this page documents all three settings and links out to #4373's section for the Security Center detail. sc-139271 gets its single target; #4373 is untouched.

The page is a sibling of Customize Portal Content rather than a section inside it: that page is a content-authoring reference, and these are app settings.

Changes

  • New docs/vendor/enterprise-portal-v2-portal-features.mdx
  • security-center-enable-customer-access.mdx — one reciprocal link (the only line changed outside the new file)
  • sidebars.js — entry after vendor/enterprise-portal-v2-content

No availability admonition, deliberately

This is currently the only page in the Enterprise Portal (New) section without a :::note Alpha Feature block. That is intentional, not an oversight.

sc-138827 is replacing those 16 blocks with :::note Beta Feature at the EP v2 Beta launch. Adding one here would introduce, in a brand-new file, the exact string that sweep exists to remove. Publishing a Beta banner now is also not an option: the process rule is that public docs announcing Beta merge at launch, not before.

Note that the earlier version of this PR argued this page would very likely merge after the sweep. With the subprocessor gate removed that is no longer a safe bet — this may well land first, and be the only page of 17 with no marker until the sweep runs.

For whoever runs the sc-138827 sweep: this page needs the "additional access" variant, not the plain one, since every capability it documents is gated (Security Center by team, Ask AI by a per-vendor toggle, and the Security Center settings by their own RBAC resource):

:::note Beta Feature
Features described on this page are Beta and subject to change. Some capabilities might require additional access.
:::

Defaults, and how they were derived

Two of the three defaults are 0 in the schema and read as "Disabled". The third does not, and that is worth a reviewer's eye:

Setting Stored field Stored default Toggle shows
Enable Ask AI kots_app.ask_ai_enabled 0 Disabled
Display only fixable CVEs in Security Center report enterprise_portal_security_settings.show_unfixable_cves 0 Enabled
Enable raw CVE scan to be downloadable enterprise_portal_security_settings.allow_raw_scan_download 0 Disabled

The middle row inverts because the toggle is rendered as checked={!securitySettings.showUnfixableCVEs} (PortalFeatureSettings.tsx:199, label at :191). With show_unfixable_cves defaulting to false — in both the table schema and DefaultSecuritySettings() in pkg/enterprise-portal/security_settings.go, which also covers apps with no settings row — the toggle is on out of the box, so customers see only fixable CVEs until a vendor turns it off. The page says Enabled for that reason.

I had this backwards in an earlier revision of this PR. #4373 states a default only for the raw scan download, so this page was the only place asserting the other two and the error would have shipped here.

A note for future edits: this default is a derived claim, not a value read off a column. If anyone ever normalizes the toggle's polarity so the label matches the stored field, the documented default flips with no schema change to signal it.

What the page documents

All three settings, with the conditions that hide some of them. The two Security Center settings render only for teams with Security Center enabled (PortalFeatureSettings.tsx:54-57), so a vendor without it sees one toggle and would otherwise conclude the docs are wrong. The Security Center settings also use a separate RBAC resource, so a team member can be able to change Ask AI and not those.

Ask AI in full, since it has no other home:

  • Default off (kots-app.yaml, ask_ai_enabled default "0"), app-level, applies to all customers at once
  • Header-button-and-right-panel delivery, with no supported way to move, rename, or hide it (sc-139279 is deferred)
  • Answer scope, stated precisely. The assistant answers product questions only from the asking customer's entitlement-filtered content, and it may use general public knowledge about Kubernetes, Helm, Linux, Docker, networking, TLS, and DNS while refusing outside knowledge about the application (ask_ai.go:350). "Only your docs" is the natural summary and it is not quite right, so the page says both halves.
  • The data sent to the provider: the question, up to the last 10 messages of the conversation, and the entitlement-filtered content. Not only the question.

Verified against source

All claims were checked against replicatedhq/vandoor at a56ae15d2, not against UI copy:

  • History cap is 10 messages, not 10 turns — historyLimit := 10 (ask_ai.go:103) counts user and assistant messages together, so roughly five exchanges. The page says messages.
  • Provider and model come from ask_ai.go:499 and the request target at ask_ai.go:513. Withheld from the page per the section above, recorded here so the follow-up does not have to re-derive them.
  • The Vendor Portal's own helper text says the assistant is "trained on your documentation". It is retrieval over the content, not training, and the page describes it accurately rather than repeating that phrasing.

Vale

Clean apart from four deliberate skips: three Headings sentence-case warnings, because Portal Features and Ask AI are UI proper nouns and every sibling EP v2 page H1 is title case and identically flagged; and one PositionalLanguage warning on the assistant panel's right-side placement, which is load-bearing description rather than navigation prose.

@replicated-ci replicated-ci added type::docs Improvements or additions to documentation type::feature labels Aug 20, 2026
@netlify

netlify Bot commented Aug 20, 2026

Copy link
Copy Markdown

Deploy Preview for replicated-docs-upgrade ready!

Name Link
🔨 Latest commit 41cba47
🔍 Latest deploy log https://app.netlify.com/projects/replicated-docs-upgrade/deploys/6a876db8df6b760008f20de8
😎 Deploy Preview https://deploy-preview-4391--replicated-docs-upgrade.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

@netlify

netlify Bot commented Aug 20, 2026

Copy link
Copy Markdown

Deploy Preview for replicated-docs ready!

Name Link
🔨 Latest commit 41cba47
🔍 Latest deploy log https://app.netlify.com/projects/replicated-docs/deploys/6a876db86747f800083cbaa9
😎 Deploy Preview https://deploy-preview-4391--replicated-docs.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

@Bishibop
Bishibop force-pushed the nick/ep-v2-portal-features-ask-ai-docs branch from 92418b0 to 96af099 Compare August 20, 2026 15:04
Ask AI is live and undocumented. The Portal Features section of the Content tab
now holds three app-level settings and had no single page describing it, which
sc-139271 needs as the target for its "Learn more" link.

- Add docs/vendor/enterprise-portal-v2-portal-features.mdx covering all three
  settings, the team and RBAC conditions that hide some of them, and Ask AI in
  full: header-only delivery, entitlement-filtered answer scope, and the data
  sent to the AI provider
- Link the Security Center settings to their existing documentation on the
  Security Center page rather than duplicating it (#4373)
- Add the reciprocal link and the sidebar entry

Carries no availability admonition. sc-138827 is replacing the Alpha banners
across EP v2 with Beta ones, and this page would introduce a string that sweep
exists to remove. It needs the "additional access" variant when that lands.

The Ask AI disclosure names Groq and openai/gpt-oss-120b. This PR must not
merge before Groq appears on the Infrastructure and Subprocessors page, which
it references.

Story: sc-139273
@Bishibop
Bishibop force-pushed the nick/ep-v2-portal-features-ask-ai-docs branch from 96af099 to 3a1d636 Compare August 20, 2026 15:08
…page

- Add Groq to the ThirdPartyProducts accept list (Vale.Spelling)
- Rephrase "enable Enable Ask AI" (Vale.Repetition)
- Drop positional "below" from the settings table links
- Drop "once" and "currently" per WordSwaps and Timeless

Deliberately skipped: the three Headings sentence-case warnings, because
Portal Features and Ask AI are UI proper nouns and every sibling EP v2 page
H1 is title case; and the one PositionalLanguage warning on the assistant
panel's right-side placement, which is load-bearing description.
…r listing

The data disclosure still states what leaves the portal -- the question, up
to 10 prior messages, and the entitlement-filtered content -- but no longer
names the provider or the model.

Naming a processor absent from the published Infrastructure and
Subprocessors page advertises the inconsistency, and that page is being
worked separately. The model id is dropped for the same reason: it reads as
openai/gpt-oss-120b, and OpenAI is on the list, so naming the model while
withholding the provider implies the wrong processor.

A follow-up restores the provider name, the model, and the subprocessor
links once Groq is listed.
@Bishibop
Bishibop marked this pull request as ready for review August 20, 2026 21:13
@Bishibop
Bishibop requested a review from a team as a code owner August 20, 2026 21:13
Bishibop added a commit that referenced this pull request Aug 20, 2026
Restores what #4391 deliberately withheld while Groq was absent from the
Infrastructure and Subprocessors page.

Depends on #4396 adding the Groq row. Must not merge before it: naming a
processor missing from the published list is the exact inconsistency #4391
avoided, and Vale.Spelling fails on Groq until #4396 adds the vocabulary
entry.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type::docs Improvements or additions to documentation type::feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants