Skip to content

docs(#6689): two setup routes and per-repository trust in the OpenAI WIF guide - #6777

Closed
waynesun09 wants to merge 1 commit into
mainfrom
docs-6689-openai-wif-routes
Closed

docs(#6689): two setup routes and per-repository trust in the OpenAI WIF guide#6777
waynesun09 wants to merge 1 commit into
mainfrom
docs-6689-openai-wif-routes

Conversation

@waynesun09

Copy link
Copy Markdown
Member

Summary

The operator guide docs/guides/infrastructure/openai-workload-identity.md presented "you can manage Workload Identity Providers in your OpenAI organization" as a prerequisite. In most companies an IT administrator owns Organization Settings and the GitHub Actions identity provider, and a team owns (or requests) a project and a service account. The guide now has an explicit fork:

  • What you end up with — the three identifiers, what each is and where it comes from per route; the audience is whatever the provider was created with (any string, used verbatim), not a fullsend://… value.
  • Which route are you on? — route A (you manage providers: add or reuse one, add the mapping yourself) or route B (send the administrator a request — copy-paste template included — and record the identifiers you get back). Step 1 (see the real claims) is shared and comes first; step 4 onwards is common.
  • Per-repository trust, stated for both routes: one mapping (or explicit allowlist entry) per company-owned repository, never repository_owner, a prefix or a derived attribute — a GitHub organization can contain repositories the company does not own, and a pattern would let them obtain the token. Adding a repository means adding its assertion; that is the gate.
  • Route B says what to ask for when the administrator's standard mapping is broader than model access (fullsend refuses such a token and only warns when the mapping does not narrow at all).
  • Drops the org-wide installation note (that mode is deprecated), re-points the troubleshooting rows at the new step numbers, and fixes the pi runtime doc's "three repository variables" wording.

Docs only; no behaviour change. Follows up on #6695 / #6689.

Testing

  • pre-commit (make lint: markdown links, prettier, gitlint) on the commit.
  • In-page anchors checked against the new headings.

@qodo-code-review

Copy link
Copy Markdown

PR Summary by Qodo

Document two OpenAI WIF setup routes and per-repository trust

📝 Documentation 🕐 10-20 Minutes

Grey Divider

AI Description

• Splits OpenAI WIF setup into self-managed and administrator-managed provider routes.
• Requires explicit per-repository trust mappings and clarifies audience semantics.
• Aligns pi runtime guidance with identifier-based fullsend setup.
Diagram

graph TD
  Owner["Repository owner"] --> Claims["Inspect OIDC claims"] --> Route{"Provider access?"}
  Route -->|Yes| Self["Manage provider"] --> Mapping["Per-repo mapping"] --> Setup["Configure fullsend"]
  Route -->|No| Admin["Request administrator"] --> Mapping
Loading
High-Level Assessment

The route-based structure is appropriate because organization-level provider permissions genuinely divide the audience into two workflows, while a shared claims check and common configuration steps avoid duplication. A single linear guide would either retain the incorrect permissions prerequisite or obscure the administrator handoff.

Files changed (2) +120 / -53

Documentation (2) +120 / -53
openai-workload-identity.mdSplit OpenAI WIF setup by provider ownership +119/-52

Split OpenAI WIF setup by provider ownership

• Reorganizes setup around self-managed and centrally managed provider routes, with a shared OIDC claims check and administrator request template. Clarifies that audiences are arbitrary provider-defined strings, requires explicit per-repository trust, removes deprecated organization-wide installation guidance, and converges both routes on the same three-identifier setup.

docs/guides/infrastructure/openai-workload-identity.md

pi.mdClarify pi OpenAI WIF configuration inputs +1/-1

Clarify pi OpenAI WIF configuration inputs

• Replaces the claim that OpenAI WIF requires three repository variables with guidance that the three identifiers can be supplied through 'fullsend github setup --openai-*' or repository variables.

docs/runtimes/pi.md

@waynesun09

Copy link
Copy Markdown
Member Author

/fs-fix-stop

@github-actions github-actions Bot added the fullsend-no-fix Skip bot-triggered fix agent runs label Aug 30, 2026
@github-actions

Copy link
Copy Markdown

Fix agent disabled for this PR. Remove the fullsend-no-fix label or use /fs-fix to re-engage.

@fullsend-ai-review

fullsend-ai-review Bot commented Aug 30, 2026

Copy link
Copy Markdown

🤖 Review · ⚠️ Cancelled · Started 3:37 PM UTC · Ended 3:42 PM UTC

Commit: d89179d · View workflow run →

@github-actions

github-actions Bot commented Aug 30, 2026

Copy link
Copy Markdown

Site preview

Preview: https://d67afca9-site.fullsend-ai.workers.dev

Commit: 3d094bcde5e9cac73518399869f74e47b83f31bd

@codecov

codecov Bot commented Aug 30, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

…WIF guide

The guide read as if managing the organization's identity provider were
a prerequisite. In most companies an IT administrator owns Organization
Settings and the GitHub Actions provider, and a team owns (or requests)
a project and a service account. The setup is now an explicit fork:
shared claims check first, then route A (you manage providers: add or
reuse one, add the mapping) or route B (send the administrator a
request — template included — and record the identifiers you get
back); step 4 onwards is common to both.

The audience is described as whatever the provider has (any string,
used verbatim) instead of a fullsend:// value. The per-repository trust
rule is stated for both routes: one mapping (or allowlist entry) per
company-owned repository, never a pattern over the organization, since
an organization can contain repositories the company does not own.

Also drops the org-wide installation note (that mode is deprecated),
re-points the troubleshooting rows, and fixes the pi runtime doc's
"three repository variables" wording.

Assisted-by: Claude
Signed-off-by: Wayne Sun <gsun@redhat.com>
@qodo-code-review

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (2) 📘 Rule violations (1) 📜 Skill insights (3)

Grey Divider


Action required

1. Prerequisites heading was removed 📜 Skill insight ✧ Quality
Description
The guide replaces its Before you start section with What you end up with, leaving prerequisite
information unlabeled before step 1. Readers can begin the procedure without a clearly identified
prerequisites section.
Code

docs/guides/infrastructure/openai-workload-identity.md[15]

-## Before you start
+## What you end up with
Relevance

●●● Strong

Prerequisite labeling is treated as a guide requirement; accepted docs precedent explicitly
preserves a Prerequisites section.

PR-#3903

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
PR Compliance ID 1062078 requires every guide to have a clearly labeled prerequisites section before
step 1. The PR deletes ## Before you start; the resulting branch moves from `## What you end up
with and route selection directly into step 1 without any Prerequisites` heading.

docs/guides/infrastructure/openai-workload-identity.md[15-55]
Skill: writing-user-docs

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The modified guide no longer has a clearly labeled prerequisites section before its procedure.

## Issue Context
The OpenAI project, repository enrollment, and route-specific access requirements should be grouped under `## Prerequisites` before step 1.

## Fix Focus Areas
- docs/guides/infrastructure/openai-workload-identity.md[15-30]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Remediation recommended

2. Route procedures use prose 📜 Skill insight ✧ Quality
Description
The new route-specific procedures describe sequences of actions in prose paragraphs rather than
ordered lists. This makes the operational sequence less explicit and violates the required guide
procedure format.
Code

docs/guides/infrastructure/openai-workload-identity.md[R106-108]

+If your organization already has a provider for GitHub Actions, reuse it: open it, note its
+**audience** and copy its **identity provider ID**, and go to A3. Otherwise, in **Organization
+Settings → Security → Workload Identity Provider**, add one:
Relevance

●●● Strong

The team recently accepted converting procedural prose into numbered ordered steps in user guides.

PR-#5778
PR-#2663

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
PR Compliance ID 1062079 requires procedural guide content to use numbered lists. The added A2
paragraph tells the reader to open, note, copy, navigate, and add a provider in narrative prose; the
new B2/B3 sections similarly present action sequences as paragraphs.

docs/guides/infrastructure/openai-workload-identity.md[104-138]
docs/guides/infrastructure/openai-workload-identity.md[150-191]
Skill: writing-user-docs

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The new A2/A3 and B2/B3 procedures express multiple actions as prose instead of numbered steps.

## Issue Context
Preserve the route headings, but format each action sequence as an ordered list, including provider reuse/creation, mapping creation, administrator request, and verification.

## Fix Focus Areas
- docs/guides/infrastructure/openai-workload-identity.md[104-138]
- docs/guides/infrastructure/openai-workload-identity.md[150-191]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


3. ADR 0044 reference omitted 📘 Rule violation § Compliance
Description
The PR removes documentation for deprecated org-wide installation mode, but the PR description does
not reference ADR 0044. The checklist explicitly requires that reference even for removals of
per-org mode content.
Code

docs/guides/infrastructure/openai-workload-identity.md[L123-125]

-fullsend workflow on a feature branch will not match `refs/heads/main`; that is expected. In the
-org-wide installation mode the runs happen in the organization's central `.fullsend` repository,
-so assert that repository instead.
+fullsend workflow on a feature branch will not match `refs/heads/main`; that is expected.
+
+## B2. Send the request (route B)
+
+You cannot see the provider, so ask the administrator who owns it. Send one request per
+repository (or one with the full list), and include the claims from step 1 so the assertions are
+copied, not retyped. A template:
+
+```text
+Subject: OpenAI Workload Identity mapping for GitHub repository <org>/<repo>
+
+Please add a service-account mapping on the organization's GitHub Actions identity provider
+(issuer https://token.actions.githubusercontent.com) with these claim assertions, exactly:
+
+  iss        = https://token.actions.githubusercontent.com
+  aud        = <the provider's audience>
+  repository = <org>/<repo>
+  ref        = refs/heads/main
+
+Target project: <project name / id>  (the project these runs are billed to)
+Service account: create a new one named fullsend-<repo>-ci in that project
+                 (or map the existing service account <id>)
+Permissions on the mapping: api.model.request only — nothing broader, and please do not
+create an API key for the service account; the mapping is the credential.
+
+One mapping per repository, please — not a pattern over the organization, since not every
+repository in it is ours.
+
+Please send back: the identity provider ID, the provider's audience string, and the
+service account ID.
+```
+
+If the administrator's standard mapping grants more than model access, ask for it to be narrowed:
+fullsend refuses a token whose permissions exceed `api.model.request`/`api.model.read`, and only
+warns when the mapping does not narrow at all.
+
+## B3. Record what you get back (route B)
+
+The reply gives you the three identifiers from [What you end up with](#what-you-end-up-with).
+Re-run the step-1 workflow with the real audience in `AUD` and confirm `aud` and `repository` print
+as expected — that is the whole verification you can do from your side before the first run. If the
+first run's exchange still returns 4xx, the assertions and the claims differ somewhere (compare them
+character for character with the administrator); a `repository` that is not in any mapping is the
+usual cause when a second repository is enrolled.
Relevance

●●● Strong

Recent deprecation documentation explicitly retained or added ADR references, supporting this
compliance requirement.

PR-#5462
PR-#2743

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
PR Compliance ID 2795055 applies to any touch of deprecated per-org installation content, including
deletion, and requires the PR description to cite ADR 0044. The diff deletes the org-wide
installation-mode instructions; although the description calls that mode deprecated, it contains no
ADR 0044 reference.

Rule 2795055: Flag and avoid changes to deprecated per-org installation mode content (ADR 0044)


4. Mapping trusts every main workflow 🐞 Bug ⛨ Security
Description
The recommended mapping constrains only repository and ref, so any job in that repository
running from main with id-token: write can obtain a matching GitHub token—not only the implied
fullsend workflow. This overstates the mapping's security boundary and can cause administrators to
overlook other OIDC-enabled workflows in the repository.
Code

docs/guides/infrastructure/openai-workload-identity.md[222]

+a mapping, and only your repository's `main` workflow can obtain one. fullsend reads
Relevance

●●● Strong

Recent security reviews accepted findings that narrow overstated security boundaries and clarify
residual access risks.

PR-#6167
PR-#716

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The guide's mapping includes iss, aud, repository, and ref but deliberately omits
workflow_ref; the repository also contains multiple workflows that grant id-token: write.
Therefore matching authorization is not exclusive to one fullsend workflow.

docs/guides/infrastructure/openai-workload-identity.md[98-102]
docs/guides/infrastructure/openai-workload-identity.md[123-128]
.github/workflows/reusable-code.yml[58-68]
.github/workflows/release.yml[7-11]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The guide says only the repository's `main` workflow can obtain a token, but the documented mapping does not assert a workflow identity. Any workflow job in that repository on `main` with `id-token: write` can request matching OIDC claims.

## Issue Context
Clarify that the mapping establishes repository-and-ref isolation, while workflow-level restriction requires an additional claim or another control. Keep the explanation consistent with the earlier discussion of `workflow_ref` and dispatch authorization.

## Fix Focus Areas
- docs/guides/infrastructure/openai-workload-identity.md[220-225]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


View medium (2)
5. Troubleshooting uses obsolete steps 🐞 Bug ⚙ Maintainability
Description
The route split renames the claims check from step 2 to step 1 and the mapping step from step 3 to
A3/B2, but troubleshooting still tells readers to compare claims from “step 2” and narrow
permissions in “step 3.” Those instructions now point to nonexistent sections and can send users to
the wrong setup action.
Code

docs/guides/infrastructure/openai-workload-identity.md[55]

+## 1. See what your repository actually claims (both routes)
Relevance

●●● Strong

Reviewers accept corrections for stale documentation references and renumbered procedural steps.

PR-#1039
PR-#2428

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The changed guide now labels claim inspection as step 1 and mapping as A3, while the troubleshooting
table still cites the former step numbers.

docs/guides/infrastructure/openai-workload-identity.md[55-62]
docs/guides/infrastructure/openai-workload-identity.md[119-131]
docs/guides/infrastructure/openai-workload-identity.md[319-329]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The new route-specific numbering leaves two troubleshooting entries referring to the removed step 2 and step 3 labels.

## Issue Context
Point the claims comparison to step 1. Point permission narrowing to A3 for route A or to the administrator request in B2 for route B; links are preferable to bare step numbers.

## Fix Focus Areas
- docs/guides/infrastructure/openai-workload-identity.md[319-329]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


6. Step 1 explains before acting 📜 Skill insight ✧ Quality
Description
Step 1 begins with diagnostic explanation before telling the reader to add and run the temporary
workflow. The required action should lead the step, with the explanation following it.
Code

docs/guides/infrastructure/openai-workload-identity.md[R57-60]

+OpenAI decides whether to trust a run by comparing claims in the GitHub token with the mapping's
+assertions. A wrong audience and a wrong claim fail the same way, so look at the real values before
+writing the mapping (route A) or before asking for it (route B). Add this temporary workflow to
+the repository, run it, and copy the printed claims. Put the provider's audience in `AUD` if you
Relevance

●● Moderate

Action-before-explanation is plausible, but available history does not establish a decisive team
pattern for this ordering nit.

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
PR Compliance ID 1062080 requires the command or action to appear before its explanation. The
changed step first explains how OpenAI compares claims and only afterward instructs the reader to
add and run the workflow.

docs/guides/infrastructure/openai-workload-identity.md[55-62]
Skill: writing-user-docs

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Step 1 explains claim matching before stating the action the reader must perform.

## Issue Context
Start the step with the action to add and run the temporary workflow, then explain why inspecting the claims is necessary and how to set `AUD`.

## Fix Focus Areas
- docs/guides/infrastructure/openai-workload-identity.md[55-62]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Context sources
✅ Compliance rules (platform): 62 rules
Review mode: ⚖️ Balanced

Grey Divider

Tip of the day
💡 Did you know, you can enable the Remediation agent and Qodo fixes findings in a dedicated fix PR

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Qodo Logo

> **GitHub Actions only.** The exchange needs the job's OIDC endpoint. For GitLab CI and for runs
> on your own machine, use an API key in the runner environment — see [Run it locally](#run-it-locally).

## Before you start

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Action required

1. Prerequisites heading was removed 📜 Skill insight ✧ Quality

The guide replaces its Before you start section with What you end up with, leaving prerequisite
information unlabeled before step 1. Readers can begin the procedure without a clearly identified
prerequisites section.
Agent Prompt
## Issue description
The modified guide no longer has a clearly labeled prerequisites section before its procedure.

## Issue Context
The OpenAI project, repository enrollment, and route-specific access requirements should be grouped under `## Prerequisites` before step 1.

## Fix Focus Areas
- docs/guides/infrastructure/openai-workload-identity.md[15-30]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment on lines +106 to +108
If your organization already has a provider for GitHub Actions, reuse it: open it, note its
**audience** and copy its **identity provider ID**, and go to A3. Otherwise, in **Organization
Settings → Security → Workload Identity Provider**, add one:

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Remediation recommended

2. Route procedures use prose 📜 Skill insight ✧ Quality

The new route-specific procedures describe sequences of actions in prose paragraphs rather than
ordered lists. This makes the operational sequence less explicit and violates the required guide
procedure format.
Agent Prompt
## Issue description
The new A2/A3 and B2/B3 procedures express multiple actions as prose instead of numbered steps.

## Issue Context
Preserve the route headings, but format each action sequence as an ordered list, including provider reuse/creation, mapping creation, administrator request, and verification.

## Fix Focus Areas
- docs/guides/infrastructure/openai-workload-identity.md[104-138]
- docs/guides/infrastructure/openai-workload-identity.md[150-191]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment on lines +57 to +60
OpenAI decides whether to trust a run by comparing claims in the GitHub token with the mapping's
assertions. A wrong audience and a wrong claim fail the same way, so look at the real values before
writing the mapping (route A) or before asking for it (route B). Add this temporary workflow to
the repository, run it, and copy the printed claims. Put the provider's audience in `AUD` if you

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Remediation recommended

3. Step 1 explains before acting 📜 Skill insight ✧ Quality

Step 1 begins with diagnostic explanation before telling the reader to add and run the temporary
workflow. The required action should lead the step, with the explanation following it.
Agent Prompt
## Issue description
Step 1 explains claim matching before stating the action the reader must perform.

## Issue Context
Start the step with the action to add and run the temporary workflow, then explain why inspecting the claims is necessary and how to set `AUD`.

## Fix Focus Areas
- docs/guides/infrastructure/openai-workload-identity.md[55-62]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment on lines -123 to -125
fullsend workflow on a feature branch will not match `refs/heads/main`; that is expected. In the
org-wide installation mode the runs happen in the organization's central `.fullsend` repository,
so assert that repository instead.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Remediation recommended

4. Adr 0044 reference omitted 📘 Rule violation § Compliance

The PR removes documentation for deprecated org-wide installation mode, but the PR description does
not reference ADR 0044. The checklist explicitly requires that reference even for removals of
per-org mode content.

**Is it safe to commit these?** Yes. They are identifiers, not secrets: on their own they grant
nothing. OpenAI issues a token only to a caller presenting a GitHub OIDC token whose claims match
the mapping from step 3, and only your repository's `main` workflow can obtain one. fullsend reads
a mapping, and only your repository's `main` workflow can obtain one. fullsend reads

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Remediation recommended

5. Mapping trusts every main workflow 🐞 Bug ⛨ Security

The recommended mapping constrains only repository and ref, so any job in that repository
running from main with id-token: write can obtain a matching GitHub token—not only the implied
fullsend workflow. This overstates the mapping's security boundary and can cause administrators to
overlook other OIDC-enabled workflows in the repository.
Agent Prompt
## Issue description
The guide says only the repository's `main` workflow can obtain a token, but the documented mapping does not assert a workflow identity. Any workflow job in that repository on `main` with `id-token: write` can request matching OIDC claims.

## Issue Context
Clarify that the mapping establishes repository-and-ref isolation, while workflow-level restriction requires an additional claim or another control. Keep the explanation consistent with the earlier discussion of `workflow_ref` and dispatch authorization.

## Fix Focus Areas
- docs/guides/infrastructure/openai-workload-identity.md[220-225]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

> repositories the company does not own, and a pattern would let every one of them obtain your
> token. Adding a repository later means adding its assertion; that is the gate, by design.

## 1. See what your repository actually claims (both routes)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Remediation recommended

6. Troubleshooting uses obsolete steps 🐞 Bug ⚙ Maintainability

The route split renames the claims check from step 2 to step 1 and the mapping step from step 3 to
A3/B2, but troubleshooting still tells readers to compare claims from “step 2” and narrow
permissions in “step 3.” Those instructions now point to nonexistent sections and can send users to
the wrong setup action.
Agent Prompt
## Issue description
The new route-specific numbering leaves two troubleshooting entries referring to the removed step 2 and step 3 labels.

## Issue Context
Point the claims comparison to step 1. Point permission narrowing to A3 for route A or to the administrator request in B2 for route B; links are preferable to bare step numbers.

## Fix Focus Areas
- docs/guides/infrastructure/openai-workload-identity.md[319-329]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

@fullsend-ai-review

fullsend-ai-review Bot commented Aug 30, 2026

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 3:44 PM UTC · Completed 4:05 PM UTC

Commit: 3d094bc · View workflow run →

Runtime: claude · Model: opus → claude-opus-4-6 · Effort: high · Cost: $6.03

@fullsend-ai-review

Copy link
Copy Markdown

Risk Assessment: low (1/5)

Details

Docs-only follow-up PR by a known contributor updating an infrastructure guide and a runtime page; no protected paths, no CI/dependency/security-sensitive changes, and the linked implementation issue is already closed and merged.

@fullsend-ai-review

Copy link
Copy Markdown

Review

Findings

Low

  • [removed guidance] docs/guides/infrastructure/openai-workload-identity.md:119 — Section A3 (route A) no longer explicitly warns against asserting workflow_ref in the "Two things not to do" list. The old section 3 had a clear prohibition explaining that fullsend runs agents from seven workflow files, so a single workflow_ref value would exclude the others. In the new structure, this reasoning appears in step 1's explanation ("which is why a mapping asserts repository and ref, not workflow_ref") and in the B2 request template, but route A users creating mappings themselves lose the direct warning at the point where they fill in assertions.
    Remediation: Add a brief "Do not assert workflow_ref" note to the A3 section's "Two things not to do" list, expanding it to three items.

  • [removed troubleshooting guidance] docs/guides/infrastructure/openai-workload-identity.md:254 — The troubleshooting row for "OpenAI WIF exchange failed: ... token endpoint returned 4xx" removed the diagnostic hint about PR-vs-main ref differences. The remaining body text in the "Which runs this mapping trusts" section and step 1 provide the same information more accurately, and the old hint was partially misleading since PRs should match refs/heads/main (the job runs in the target repo).


Labels: PR modifies only documentation files (operator guide and runtime docs)


Next steps:

  • /fs-fix — agent addresses review findings automatically
  • /fs-fix <your instruction> — agent fixes with your specific guidance
  • Push commits directly — review re-runs automatically on push
  • /fs-fix-stop — disable automatic fix runs for this PR

@fullsend-ai-review fullsend-ai-review 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.

Note: The following review comments could not be posted on the diff (GitHub returned 422) and are included here instead:

  • docs/guides/infrastructure/openai-workload-identity.md (file-level): Line 254 · [low] removed troubleshooting guidance

The troubleshooting row for 'OpenAI WIF exchange failed: token endpoint returned 4xx' removed the diagnostic hint about PR-vs-main ref differences. The remaining body text in the 'Which runs this mapping trusts' section and step 1 provide the same information more accurately, and the old hint was partially misleading since PRs should match refs/heads/main (the job runs in the target repo).

@fullsend-ai-review fullsend-ai-review 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.

See the review comment for full details.

| Use uploaded JWKS for token verification | **Off** |

Copy the **identity provider ID**. One provider serves every repository; OpenAI allows 50 providers
per organization and 50 mappings per provider.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

[low] removed guidance

Section A3 (route A) no longer explicitly warns against asserting workflow_ref in the 'Two things not to do' list. The old section 3 had a clear prohibition explaining that fullsend runs agents from seven workflow files, so a single workflow_ref value would exclude the others. In the new structure, this reasoning appears in step 1's explanation and in the B2 request template, but route A users creating mappings themselves lose the direct warning at the point where they fill in assertions.

Suggested fix: Add a brief 'Do not assert workflow_ref' note to the A3 section's 'Two things not to do' list, expanding it to three items.

@fullsend-ai-review fullsend-ai-review Bot added the component/docs User-facing documentation label Aug 30, 2026
waynesun09 added a commit that referenced this pull request Aug 30, 2026
Supersedes #6777, which rewrote the operator guide's setup half while
this branch was being written. The guide read as if managing the
organization's identity provider were a prerequisite; in most companies
an IT administrator owns Organization Settings and the GitHub Actions
provider, and a team owns (or requests) a project. It is now an explicit
fork: shared claims check first, then route A (you manage providers) or
route B (send the administrator a request), with common steps from
"tell fullsend the three identifiers" on.

Trust is stated as per repository for both routes: one mapping per
company-owned repository, never a wildcard or a pattern over the
organization, since an organization can contain repositories the company
does not own. Mappings match exact values only and have no list form.

The new commands are wired into that structure rather than bolted onto
the old sections: route A points at `request` for the console fields,
route B generates its ticket with `request --format md` (the hand-written
template stays for readers who prefer it), B3 records the reply with
`import` and checks it with `status`, and step 4 keeps a shortcut note.
Also fixes the pi runtime doc's "three repository variables" wording.

Assisted-by: Claude
Signed-off-by: Wayne Sun <gsun@redhat.com>
@waynesun09

Copy link
Copy Markdown
Member Author

Superseded by #6779: the guide rewrite is folded into that PR, where the new fullsend inference openai request|import|status commands are wired into the same route A / route B structure (triage on #6778 flagged the overlap in this file). Same content, plus the command references.

@waynesun09 waynesun09 closed this Aug 30, 2026
@fullsend-ai-retro

fullsend-ai-retro Bot commented Aug 30, 2026

Copy link
Copy Markdown

🤖 Finished Retro · ✅ Success · Started 4:19 PM UTC · Completed 4:31 PM UTC

Commit: 3d094bc · View workflow run →

Runtime: claude · Model: opus → claude-opus-4-6 · Effort: high · Cost: $3.90

@fullsend-ai-retro

Copy link
Copy Markdown

Retro: PR #6777 — docs(#6689): two setup routes and per-repository trust in the OpenAI WIF guide

Timeline

Wayne Sun opened this docs-only PR at 15:35 UTC, immediately disabled the fix agent (/fs-fix-stop), and force-pushed once (commit d89179d3d094bc). The first review run was cancelled on the old commit; the second completed successfully at 16:05 with a CHANGES_REQUESTED verdict (2 low-severity findings). At 16:17 — 42 minutes after opening — Wayne closed the PR as superseded by #6779, where the docs rewrite was folded into the new fullsend inference openai CLI commands.

Workflow quality

Review quality was good. The fullsend review agent produced 2 sensible low-severity findings with no false positives: (1) a removed workflow_ref warning in route A's mapping section (actionable, with specific remediation), and (2) a removed troubleshooting hint that was partially misleading (informational). The challenger sub-agent correctly validated both. By contrast, the qodo bot produced at least one false positive — it flagged "Troubleshooting still references step 2 and step 3" at line 55, but verification of the diff confirms the author correctly updated all step-number references in the troubleshooting section.

Cost was inflated by the known sonnet model failure. The review orchestrator dispatched 4 sub-agents with model: "sonnet" which resolved to claude-sonnet-4-5@20250929, unavailable on the Vertex deployment. All 4 failed immediately (zero tokens consumed) and were redispatched on opus. Total review cost: $6.03 (~10M tokens). With working sonnet sub-agents, this would have been approximately $1.20.

Evidence for existing issues

No new proposals

All improvement opportunities identified are covered by existing open issues. The workflow operated correctly given its constraints — the review agent outperformed the third-party bot on signal quality, and the PR's short lifespan was a human workflow decision, not a system failure.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

component/docs User-facing documentation fullsend-no-fix Skip bot-triggered fix agent runs risk/low PR risk: low

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant