Skip to content

content(iac): consolidate day-2 docs under IaC Operations (#16045)#19382

Open
jkodroff wants to merge 3 commits into
masterfrom
jkodroff/iac-operations
Open

content(iac): consolidate day-2 docs under IaC Operations (#16045)#19382
jkodroff wants to merge 3 commits into
masterfrom
jkodroff/iac-operations

Conversation

@jkodroff
Copy link
Copy Markdown
Member

@jkodroff jkodroff commented May 23, 2026

Follow-up to the Operations section introduced earlier on this branch. Pulls scattered day-2 content into iac/operations/, reframes the Support section as FAQs + support channels, and adds a Getting Support page that spells out community vs. paid options.

Changes

  • Moved /docs/support/debugging//docs/iac/operations/debugging/ (split debugging-providers back into the providers guide).
  • Moved using-a-diy-backend/docs/iac/operations/stack-management/.
  • Rewrote the Support & Troubleshooting overview to point readers at Operations for day-2 workflows.
  • Added /docs/support/getting-support/ covering Community Slack, GitHub issues, and paid support channels.
  • Rewired all internal links; aliases preserve every old URL.

Fixes #16045
Fixes #19022

jkodroff and others added 2 commits May 23, 2026 09:54
Paused pending CI/CD page cleanup landing first; do not merge as-is.

Adds a new top-level `Operations` section under `iac/` to consolidate
day-2 operational content that was scattered across `iac/guides/basics/`,
`iac/guides/continuous-delivery/`, and `support/troubleshooting/`. See

Why this is WIP
---------------
The CI/CD pages (`iac/operations/continuous-delivery/`) are a mess and
need their own cleanup pass before this lands. That cleanup is being
done on a separate branch and will merge first; this branch should be
rebased on master afterward and the CI/CD content re-evaluated against
the new structure.

Structure
---------
content/docs/iac/operations/
├── _index.md (new landing)
├── iac-least-privileges/   ← from guides/basics/
├── stack-management/
│   ├── _index.md (new)
│   ├── targeted-updates.md ← from guides/basics/
│   ├── update-plans.md     ← from guides/basics/
│   └── editing-state-files.md ← from support/troubleshooting/
├── continuous-delivery/    ← from guides/continuous-delivery/ (17 files; slug preserved)
└── troubleshooting/        ← from support/troubleshooting/, common-issues/ flattened
    ├── _index.md (cards rewritten)
    ├── ci-cd.md
    └── 7 ex-common-issues pages

Adjacent changes
----------------
- `support/troubleshooting/using-dev-builds.md` → `support/debugging/`
  (so `support/troubleshooting/` disappears cleanly).
- `support/_index.md` Troubleshooting card now links to `iac/operations/troubleshooting/`.
- `iac/_index.md` gets a new Operations card section; Continuous Delivery dropped from Guides.
- `guides/basics/_index.md` drops moved pages, adds a cross-link to Operations.
- `layouts/page/superpowers.html` and `layouts/product/github-actions.html`
  `relref` paths updated to the new continuous-delivery location.
- `Operations` declared via `iac/operations/_index.md` frontmatter (parent `iac-home`,
  weight 25), not via `config/_default/menus.yml` — matches how Concepts is wired.

Aliases
-------
Every moved page has an alias to its old URL. Verified by inspecting
generated redirects in `public/` after `make build`. Spot-checked URLs:
old `/docs/iac/guides/basics/...`, `/docs/iac/guides/continuous-delivery/...`,
`/docs/support/troubleshooting/...`, and `/docs/support/troubleshooting/common-issues/...`
all redirect to the new canonical paths.

A bulk sed for internal-link rewrites over-reached and rewrote aliases
on 5 non-moved files (support/debugging/_index, 4 integrations pages
under integrations/version-control/ and integrations/clouds/kubernetes/
that historically lived under /docs/iac/guides/continuous-delivery/X/).
Those were manually reverted; their original old-URL aliases are
preserved.

Ambiguity decisions made interactively
--------------------------------------
- `iac-least-privileges` placed directly under `operations/`, not under
  `operations/stack-management/`.
- `support/troubleshooting/using-dev-builds.md` kept under `support/`
  (moved to `support/debugging/`); it's installation guidance, not
  troubleshooting.
- `common-issues/` subdirectory flattened into `operations/troubleshooting/`
  (matches the issue's proposed tree literally; new URLs are
  `/docs/iac/operations/troubleshooting/<page>/`).
- CI/CD directory slug kept as `continuous-delivery/` (issue suggested
  `ci-cd-pipelines/` but preserving the slug shrinks the alias surface
  and avoids a second URL change later).

Build / lint state at WIP point
-------------------------------
- `make build` clean (no errors, no REF_NOT_FOUND).
- `make lint` clean (1760 files, 0 errors).
- 32 file renames, 54 modifications, 2 new files, 1 deletion = 89 changes.

Follow-ups when picking this back up
------------------------------------
- Rebase on master after the CI/CD cleanup branch merges; resolve
  conflicts in `iac/operations/continuous-delivery/` against the
  cleaned-up versions.
- Re-evaluate the `operations/troubleshooting/_index.md` cards —
  current version was rewritten from scratch and may benefit from a
  pass after the CI/CD work clarifies how the CI/CD troubleshooting
  card should read.
- Decide whether `iac-least-privileges/` should stay flat under
  `operations/` or be folded into a "security" sub-section if more
  security pages move in.
- The `update-plans.md` frontmatter still has `concepts.weight: 11`
  in its menu block (carried over from before #19016 was reverted) —
  decide whether to keep or strip.
- Consider whether to also move `concepts/state-and-backends.md` into
  Operations; it's adjacent to editing-state-files but it's concept-y.
- The issue (#19022) lists `refresh-strategies` as a future
  stack-management page; not in scope here.

🤖 Generated with Claude Code (Opus 4.7).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Follow-up to the Operations section introduced in #19022:

- Move debugging under iac/operations/, splitting debugging-providers
  out to the providers section where authoring-focused content belongs.
- Move using-a-diy-backend under iac/operations/stack-management/.
- Rewrite the Support & Troubleshooting overview to point readers
  to Operations for day-2 workflows and keep Support for FAQs and
  support channels.
- Add Getting Support page covering community channels and paid
  support options (fixes #16045).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@github-actions github-actions Bot added the review:triaging Claude Triage is currently classifying the PR label May 23, 2026
@jkodroff jkodroff requested a review from CamSoper May 23, 2026 15:33
@github-actions github-actions Bot added domain:docs PR touches technical docs domain:mixed PR touches more than one domain domain:infra PR touches workflows, scripts, infra, Makefile, or build config review:in-progress Claude review is currently running and removed review:triaging Claude Triage is currently classifying the PR labels May 23, 2026
@pulumi-bot
Copy link
Copy Markdown
Collaborator

pulumi-bot commented May 23, 2026

@pulumi-bot
Copy link
Copy Markdown
Collaborator

pulumi-bot commented May 23, 2026

Lighthouse Performance Report

Commit: d77aa2b | Metric definitions

Page Device Score FCP LCP TBT CLS SI
Homepage Mobile 🟡 53 3.0s 3.3s 1618ms 0.000 7.5s
Homepage Desktop 🟡 80 0.8s 1.0s 284ms 0.027 2.7s
Install Pulumi Mobile 🔴 38 5.3s 7.9s 302ms 0.378 5.3s
Install Pulumi Desktop 🟡 83 1.2s 1.8s 22ms 0.013 2.8s
AWS Get Started Mobile 🟡 53 4.9s 7.5s 249ms 0.081 7.8s
AWS Get Started Desktop 🟡 82 1.2s 1.9s 21ms 0.021 2.8s

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 23, 2026

Pre-merge Review — Last updated 2026-05-24T00:00:00Z

Tip

Summary: This PR consolidates day-2 docs under a new /docs/iac/operations/ subtree — moving debugging, using-a-diy-backend, stack-management, troubleshooting, and the continuous-delivery guides into IaC Operations — and adds a new support/getting-support page. The high-value review surface is URL/anchor correctness: a reader following a link to install the GitHub App or jump into a CI/CD subsection will hit a 404 if the migration left stale paths. Verification ran a frontmatter sweep, 238 claim extractions + verification (with cited-link spot-checks), and a Hugo-build/link-integrity check (skipped — content-only PR per .hugo-build.json).

Review confidence:

Dimension Level Notes
mechanics HIGH
facts MEDIUM A few preexisting how-pulumi-works architectural claims couldn't be verified within the verifier's turn budget; they're not introduced by this PR.
cross-sibling consistency LOW In-review sibling fan-out skipped for time; relied on the verifier's per-link spot checks for migration/cards and the structural overlap with the new operations/_index.md.
Investigation log
  • Cross-sibling reads: 0 of 75 sibling fan-outs (skipped in-review; relied on per-claim verification + structural overlap with new operations/_index.md cards)
  • External claim verification: 159 of 238 claims verified (19 unverifiable, 26 contradicted) · 4 specialists (numerical, cross-reference, capability, framing); 0 cross-specialist corroborations · routed: 0 inline, 229 Pass 1, 4 Pass 2 (verified 2, contradicted 1, unverifiable 1), 5 Pass 3 (verified 1, contradicted 1, unverifiable 3).
  • Cited-claim spot-checks: 4 of 4 cited claims fetched and compared
  • Frontmatter sweep: ran on body + meta_desc
  • Temporal-trigger sweep: ran (recency words present in diff; spot-check in-review)
  • Code execution: not run (no static/programs/ change)
  • Code-examples checks: not run (no fenced code blocks in content files)
  • Editorial-balance pass: not run (not under content/blog/)
🚨 Outstanding ⚠️ Low-confidence 💡 Pre-existing ✅ Resolved
0 6 10 6

🔍 Verification trail

238 claims extracted · 159 verified · 19 unverifiable · 26 contradicted
  • L68 in content/docs/administration/onboarding-guide/choose-subscription.md "A DIY backend is needed to manage state for the deployment that stands up the self-hosted Pulumi Cloud platform, because Pulumi Cloud isn't yet available to st…" → ✅ verified (evidence: The file at content/docs/administration/onboarding-guide/choose-subscription.md contains: "Because Pulumi Cloud isn't yet available to store state during the initial bootstrap process, you'll need a [DIY backend](/docs/iac/operations/stack…; source: repo:content/docs/administration/onboarding-guide/choose-subscription.md)
  • L128 in content/docs/administration/onboarding-guide/ways-of-working.md "Pulumi Deployments is purpose-built for IaC deployments and integrated into Pulumi Cloud." → ✅ verified (framing: strengthened — claim narrows "purpose-built for infrastructure as code" to "purpose-built for IaC deployments and integrated into Pulumi Cloud"; source's broad…; evidence: The official Pulumi Deployments docs state: "Pulumi Deployments is a managed CI/CD platform purpose-built for infrastructure as code. It provides everything you need to securely deploy infrastructure changes across your organization, inclu…; source: repo:content/docs/deployments/deployments/_index.md)
  • L129 in content/docs/administration/onboarding-guide/ways-of-working.md "The Pulumi Kubernetes Operator triggers deployments from within Kubernetes clusters." → ✅ verified (evidence: The pulumi-kubernetes-operator README (decoded from base64) states it is "A Kubernetes operator that provides a CI/CD workflow for Pulumi stacks using Kubernetes primitives" and "enables Kubernetes users to create a Pulumi Stack as a first…; source: gh api repos/pulumi/pulumi-kubernetes-operator/contents/README.md)
  • L130 in content/docs/administration/onboarding-guide/ways-of-working.md "Existing CI/CD solutions compatible with Pulumi include GitHub Actions, GitLab CI, and Octopus Deploy, among many others." → ✅ verified (evidence: The /docs/iac/operations/continuous-delivery/ page explicitly lists "GitHub Actions", "GitLab CI/CD", and "Octopus Deploy" among 15 third-party CI/CD systems with dedicated guides, confirming all three named systems and the "among many o…; source: content/docs/iac/operations/continuous-delivery/_index.md)
  • L132 in content/docs/administration/onboarding-guide/ways-of-working.md "The Pulumi GitHub App provides instant GitOps workflow support, including deployment previews in pull requests." → 🤷 unverifiable (evidence: verification did not converge within 8 turns)
  • L54 in content/docs/ai/pull-requests/_index.md "If a CI/CD workflow fails on a Neo PR, you can ask Neo to address the specific issue and it will push fixes to the same PR." → ✅ verified (evidence: The file states verbatim: "If a workflow fails, you can ask Neo to address the specific issue, and it will push fixes to the same PR." This matches the claim exactly.; source: content/docs/ai/pull-requests/_index.md)
  • L54 in content/docs/ai/pull-requests/_index.md "Neo's pull requests can automatically trigger existing CI/CD workflows, including Pulumi previews, security scans, policy checks, and tests." → ✅ verified (framing: strengthened — claim merges two source sentences into one and omits "when configured"; the source's broader form proves the claim as a subset.; evidence: The file states: "Neo's pull requests can automatically trigger your existing CI/CD workflows. When configured, your Pulumi previews, security scans, policy checks, and tests will run automatically on Neo's PRs, just like any other pull re…; source: repo:content/docs/ai/pull-requests/_index.md)
  • L54 in content/docs/ai/pull-requests/_index.md "When configured, Pulumi previews will run automatically on Neo's PRs." → ✅ verified (framing: strengthened — claim narrows 'your Pulumi previews, security scans, policy checks, and tests will run automatically on Neo's PRs' to just 'Pulumi previews will…; evidence: The file at L54 states: "When configured, your Pulumi previews, security scans, policy checks, and tests will run automatically on Neo's PRs, just like any other pull request." The claim correctly captures the Pulumi previews portion, whic…; source: repo:content/docs/ai/pull-requests/_index.md)
  • L56 in content/docs/ai/pull-requests/_index.md "Documentation for setting up CI/CD with Pulumi via Azure DevOps Pipelines is located at /docs/iac/operations/continuous-delivery/azure-devops/" → 🤷 unverifiable (evidence: verification did not converge within 8 turns)
  • L61 in content/docs/deployments/get-started/_index.md "The CI/CD integrations documentation for GitHub Actions, GitLab, and other pipelines is located at the path /docs/iac/operations/continuous-delivery/." → ✅ verified (evidence: The file content/docs/iac/operations/continuous-delivery/_index.md exists and contains CI/CD integration guides for GitHub Actions (/docs/iac/operations/continuous-delivery/github-actions/), GitLab CI/CD (`/docs/iac/operations/continuo…; source: repo:content/docs/iac/operations/continuous-delivery/_index.md)
  • L99 in content/docs/iac/_index.md "The Pulumi documentation page at /docs/iac/operations/stack-management/ covers targeted updates, update plans, editing state files, and DIY backends." → ✅ verified (evidence: The file at content/docs/iac/operations/stack-management/_index.md explicitly lists all four topics: "Targeted updates", "Update plans", "Editing state files", and "Using a DIY backend", matching the claim exactly.; source: repo:content/docs/iac/operations/stack-management/_index.md)
  • L103 in content/docs/iac/_index.md "The Pulumi documentation page at /docs/iac/operations/continuous-delivery/ covers integrating Pulumi with CI/CD platforms." → ✅ verified (evidence: The file at content/docs/iac/operations/continuous-delivery/_index.md exists and explicitly covers CI/CD integration: "Pulumi integrates with any continuous integration and continuous delivery (CI/CD) system" and lists guides for numerou…; source: repo:content/docs/iac/operations/continuous-delivery/_index.md)
  • L107 in content/docs/iac/_index.md "The Pulumi documentation page at /docs/iac/operations/troubleshooting/ covers diagnosing and recovering from common Pulumi failures." → ✅ verified (framing: strengthened — claim says "diagnosing and recovering from common Pulumi failures"; source's description says "diagnosing and resolving issues with Pulumi progr…; evidence: The page at /docs/iac/operations/troubleshooting/ exists and its description reads "Resources for diagnosing and resolving issues with Pulumi programs and deployments," covering topics like update conflicts, destroy failures, interrupted…; source: repo:content/docs/iac/operations/troubleshooting/_index.md)
  • L110-111 in content/docs/iac/_index.md "The Pulumi documentation page at /docs/iac/operations/debugging/ covers attaching a debugger, capturing verbose logs, and tracing performance." → ✅ verified (evidence: The content/docs/iac/_index.md file contains a Debugging card at the Operations section with the description: "Attach a debugger, capture verbose logs, and trace performance." linking to /docs/iac/operations/debugging/. The debugging i…; source: repo:content/docs/iac/_index.md and repo:content/docs/iac/operations/debugging/_index.md)
  • L16 in content/docs/iac/concepts/pulumi-cloud.md "The self-managed (DIY) backend documentation is located at /docs/iac/operations/stack-management/using-a-diy-backend/." → ✅ verified (evidence: The file content/docs/iac/operations/stack-management/using-a-diy-backend.md exists in the repo, and content/docs/iac/concepts/pulumi-cloud.md line 16 contains the link `[self-managed (DIY) backend](/docs/iac/operations/stack-managemen…; source: repo:content/docs/iac/concepts/pulumi-cloud.md and repo:content/docs/iac/operations/stack-management/using-a-diy-backend.md)
  • L16 in content/docs/iac/concepts/pulumi-cloud.md "Using Pulumi Cloud is optional; Pulumi also works with a self-managed (DIY) backend." → ✅ verified (evidence: The file at content/docs/iac/concepts/pulumi-cloud.md contains the exact sentence: "Using Pulumi Cloud is optional; Pulumi also works with a self-managed (DIY) backend."; source: repo:content/docs/iac/concepts/pulumi-cloud.md)
  • L16 in content/docs/iac/concepts/pulumi-cloud.md "Pulumi Cloud adds the following capabilities for operating Pulumi at scale: access control, reusable configuration and secrets, policy enforcement, cloud resou…" → ✅ verified (evidence: The file content/docs/iac/concepts/pulumi-cloud.md at L16 states: "It is also a managed platform that adds the capabilities teams need to operate Pulumi at scale: access control, reusable configuration and secrets, policy enforcement, cl…; source: repo:content/docs/iac/concepts/pulumi-cloud.md)
  • L1167 in content/docs/iac/concepts/stacks.md "The troubleshooting guide for pulumi destroy issues is located at /docs/iac/operations/troubleshooting/." → ✅ verified (evidence: The file content/docs/iac/operations/troubleshooting/_index.md exists at exactly /docs/iac/operations/troubleshooting/ and contains a "Destroy Failures" section: "Handle scenarios when pulumi destroy fails."; source: repo:content/docs/iac/operations/troubleshooting/_index.md)
  • L340 in content/docs/iac/concepts/stash.md "The --target-replace argument to pulumi up is documented at the path /docs/iac/operations/stack-management/targeted-updates/#replacing-a-single-resource." → ✅ verified (evidence: The file content/docs/iac/operations/stack-management/targeted-updates.md exists and contains a section "## Replacing a single resource" that documents --target-replace for pulumi up: "--target-replace is shorthand for `--target <U…; source: repo:content/docs/iac/operations/stack-management/targeted-updates.md)
  • L44 in content/docs/iac/concepts/state-and-backends.md "Pulumi Cloud is the default backend and requires no additional configuration after installing the CLI." → ✅ verified (evidence: The file at L44 states verbatim: "It is the default backend and requires no additional configuration after installing the CLI." — an exact match to the claim.; source: repo:content/docs/iac/concepts/state-and-backends.md)
  • L44 in content/docs/iac/concepts/state-and-backends.md "The Pulumi CLI install page is located at /docs/install/." → ✅ verified (evidence: The state-and-backends.md file references [installing the CLI](/docs/install/) at line 44, and the install page exists at content/docs/install/_index.md with aliases including /docs/install, confirming the path /docs/install/ is co…; source: repo:content/docs/iac/concepts/state-and-backends.md and repo:content/docs/install/_index.md)
  • L45 in content/docs/iac/concepts/state-and-backends.md "The DIY backend supports storing state in AWS S3, Azure Blob Storage, Google Cloud Storage, an S3-compatible server such as Minio or Ceph, a PostgreSQL databas…" → ✅ verified (evidence: The file at content/docs/iac/concepts/state-and-backends.md contains: "DIY backend: a 'Do It Yourself' backend that stores state in an object store you manage—AWS S3, Azure Blob Storage, Google Cloud Storage, an S3-compatible server su…; source: repo:content/docs/iac/concepts/state-and-backends.md)
  • L47 in content/docs/iac/concepts/state-and-backends.md "The page at /docs/iac/guides/basics/pulumi-cloud-vs-oss/ exists and provides a full comparison of Pulumi Cloud and DIY (OSS) backends, including operational co…" → ✅ verified (evidence: The file content/docs/iac/guides/basics/pulumi-cloud-vs-oss.md exists and provides a full comparison of Pulumi Cloud and DIY (OSS) backends. It explicitly covers operational concerns: "DIY backends include built-in state locking, checkpo…; source: repo:content/docs/iac/guides/basics/pulumi-cloud-vs-oss.md)
  • L85 in content/docs/iac/concepts/state-and-backends.md "The page at /docs/iac/operations/stack-management/using-a-diy-backend/ exists and contains details on backend URL formats and options." → ✅ verified (evidence: The file content/docs/iac/operations/stack-management/using-a-diy-backend.md exists and contains detailed backend URL format documentation, including sections for local filesystem (file://), AWS S3 (s3://), Azure Blob Storage (`azblo…; source: repo:content/docs/iac/operations/stack-management/using-a-diy-backend.md)
  • L132 in content/docs/iac/concepts/state-and-backends.md "The page at /docs/iac/operations/stack-management/using-a-diy-backend/ exists and contains setup instructions and per-backend configuration details for DIY bac…" → ✅ verified (evidence: The file content/docs/iac/operations/stack-management/using-a-diy-backend.md exists and contains setup instructions (e.g., pulumi login s3://<bucket-name>, pulumi login azblob://<container-path>, pulumi login --local) as well as pe…; source: repo:content/docs/iac/operations/stack-management/using-a-diy-backend.md)
  • L264 in content/docs/iac/get-started/terraform/terraform-state-backend.md "The page about editing state files is located at /docs/iac/operations/stack-management/editing-state-files/." → ✅ verified (evidence: The file content/docs/iac/operations/stack-management/editing-state-files.md exists in the repo with title "Editing state files", confirming the page is located at /docs/iac/operations/stack-management/editing-state-files/.; source: repo:content/docs/iac/operations/stack-management/editing-state-files.md)
  • L17 in content/docs/iac/guides/basics/_index.md "Whether you're new to Pulumi or looking to refine your workflow, these guides cover essential practices for organizing infrastructure code, securing deployment…" → ➖ not-a-claim
  • L29 in content/docs/iac/guides/basics/_index.md "The DIY backend guide covers configuring a self-managed state backend with AWS S3, Azure Blob Storage, Google Cloud Storage, PostgreSQL, or the local filesyste…" → ✅ verified
  • L29 in content/docs/iac/guides/basics/_index.md "Day-to-day operations including targeted updates, update plans, state file editing, self-managed state backends, and least-privilege setup are covered under th…" → ✅ verified
  • L31 in content/docs/iac/guides/basics/_index.md "For day-to-day operations — targeted updates, update plans, state file editing, least-privilege setup — see Operations." → ✅ verified
  • L615 in content/docs/iac/guides/basics/how-pulumi-works.md "Pulumi Cloud comprises two Internet-accessible endpoints: a web application at app.pulumi.com and a REST API at api.pulumi.com, along with supporting cloud…" → 🤷 unverifiable
  • L617 in content/docs/iac/guides/basics/how-pulumi-works.md "The CI/CD environment documentation is located at /docs/iac/operations/continuous-delivery/." → ✅ verified
  • L617 in content/docs/iac/guides/basics/how-pulumi-works.md "The Pulumi CLI coordinates with both Pulumi Cloud's API and your cloud provider's API (client/server division)." → ➖ not-a-claim
  • L619 in content/docs/iac/guides/basics/how-pulumi-works.md "The self-hosted Pulumi Cloud architecture is very similar to the hosted version but does not depend on public Internet access." → 🤷 unverifiable
  • L619 in content/docs/iac/guides/basics/how-pulumi-works.md "Pulumi Cloud has been used in organizations with advanced compliance needs, including SOC 2, PCI, ISO 27001, and HIPAA." → 🤷 unverifiable
  • L619 in content/docs/iac/guides/basics/how-pulumi-works.md "It is possible to run your own instance of Pulumi Cloud in a private cloud environment (Self-Hosted Pulumi Cloud), and the architecture is very similar to the…" → 🤷 unverifiable
  • L56 in content/docs/iac/guides/basics/pulumi-cloud-vs-oss.md "DIY backends support AWS S3, Azure Blob Storage, Google Cloud Storage, an S3-compatible server, a PostgreSQL database, and the local filesystem as storage endp…" → ✅ verified
  • L57 in content/docs/iac/guides/basics/pulumi-cloud-vs-oss.md "Pulumi Cloud is available as both a hosted service and a self-hosted option." → ✅ verified
  • L59 in content/docs/iac/guides/basics/pulumi-cloud-vs-oss.md "DIY backends include built-in state locking, checkpoint history, project-scoped stacks, and support for several secrets encryption providers." → ✅ verified
  • L107 in content/docs/iac/guides/basics/pulumi-cloud-vs-oss.md "Setup instructions for using a DIY backend are available at /docs/iac/operations/stack-management/using-a-diy-backend/." → ✅ verified
  • L48 in content/docs/iac/guides/building-extending/components/testing-components.md "The Pulumi documentation page for GitHub Actions continuous delivery is located at the path /docs/iac/operations/continuous-delivery/github-actions/." → ✅ verified
  • L13 in content/docs/iac/guides/building-extending/providers/_index.md "A Pulumi provider is a Pulumi package that lets the Pulumi engine manage [resources](/docs/iac…" → ➖ not-a-claim
  • L30 in content/docs/iac/guides/building-extending/providers/_index.md "A Pulumi provider may be bridged from an upstream Terraform or OpenTofu provider, which lets Pulumi reuse the upstream provider's schema and CRUD code rather t…" → ✅ verified
  • L32 in content/docs/iac/guides/building-extending/providers/_index.md "By convention, Pulumi providers are distributed as an executable plugin with pre-generated SDKs for each Pulumi-supported language." → ✅ verified
  • L39 in content/docs/iac/guides/building-extending/providers/_index.md "The 'Any Terraform Provider' feature lets a Pulumi program consume any provider from the OpenTofu registry without writing a Pulumi provider at all." → ✅ verified
  • L40 in content/docs/iac/guides/building-extending/providers/_index.md "Do you actually need a provider? If your goal is to group resources into a reusable abstraction, reach for a component." → ✅ verified
  • L48 in content/docs/iac/guides/building-extending/providers/_index.md "Go providers built with the Pulumi Go Provider SDK compile to a standalone binary with no runtime dependencies for users." → ✅ verified
  • L48-49 in content/docs/iac/guides/building-extending/providers/_index.md "Writing a Pulumi provider in a language other than Go requires implementing the provider protocol directly and hand-maintaining the schema JSON." → ✅ verified
  • L59 in content/docs/iac/guides/building-extending/providers/_index.md "The 'Debugging Providers' guide covers attaching a debugger to a provider locally and debugging bridged providers and tfgen." → ✅ verified
  • L13-14 in content/docs/iac/guides/building-extending/providers/debugging-providers.md "The page at /docs/iac/guides/building-extending/providers/debugging-providers/ has aliases including /docs/iac/operations/debugging/debugging-providers/…" → ✅ verified
  • L30 in content/docs/iac/guides/building-extending/providers/debugging-providers.md "When starting a Pulumi provider in debug mode through a local IDE, the provider outputs a port number to the console (e.g., 12345) upon startup…" → ✅ verified
  • L30 in content/docs/iac/guides/building-extending/providers/debugging-providers.md "GoLand and VS Code are two IDEs that can be used to debug Pulumi providers locally." → ✅ verified
  • L38 in content/docs/iac/guides/building-extending/providers/debugging-providers.md "GoLand debug config screenshot at /docs/iac/guides/building-extending/providers/images/goland-debug-config.png." → 🤷 unverifiable (page-bundle; see triaged findings)
  • L44-45 in content/docs/iac/guides/building-extending/providers/debugging-providers.md "The VS Code Go launch package configuration's program field should be edited to point to cmd/pulumi-resource-<PROVIDER>…" → ✅ verified
  • L47 in content/docs/iac/guides/building-extending/providers/debugging-providers.md "VS Code launch config screenshot at vscode-launch-config.png." → ✅ verified
  • L52 in content/docs/iac/guides/building-extending/providers/debugging-providers.md "VS Code debug config screenshot at vscode-debug-config.png." → 🤷 unverifiable (page-bundle; see triaged findings)
  • L82 in content/docs/iac/guides/building-extending/providers/debugging-providers.md "Terminating the provider process can cause state out-of-sync; pulumi refresh will address this." → ✅ verified
  • L138 in content/docs/iac/guides/building-extending/providers/debugging-providers.md "In VS Code, the Go: Connect to server configuration is used for debugging tfgen in bridged providers." → ✅ verified
  • L140 in content/docs/iac/guides/building-extending/providers/debugging-providers.md "VS Code launch-connect-to-server screenshot at vscode-launch-config-connect-to-server.png." → ✅ verified
  • L145 in content/docs/iac/guides/building-extending/providers/debugging-providers.md "VS Code debug-connect-to-server screenshot at vscode-debug-config-connect-to-server.png." → ✅ verified
  • L61 in content/docs/iac/guides/migration/migrating-to-pulumi/from-arm.md "The Pulumi GitHub app documentation is located at /docs/iac/operations/continuous-delivery/github-app/." → ❌ contradicted (resolved in d77aa2b)
  • L38 in content/docs/iac/guides/migration/migrating-to-pulumi/from-cloudformation.md "The Pulumi GitHub app documentation is located at /docs/iac/operations/continuous-delivery/github-app/." → 🤷 unverifiable (resolved in d77aa2b)
  • L39 in content/docs/iac/guides/migration/migrating-to-pulumi/from-cloudformation.md "AWS credentials can be configured in Pulumi ESC (at /docs/esc/)." → ✅ verified
  • L40 in content/docs/iac/guides/migration/migrating-to-pulumi/from-cloudformation.md "Pulumi Neo access is a prerequisite for the Neo-based CloudFormation migration quick start." → ✅ verified
  • L51 in content/docs/iac/guides/migration/migrating-to-pulumi/from-serverless.md "Pulumi Neo can convert Serverless Framework (CloudFormation) stacks to Pulumi code automatically." → ✅ verified
  • L54 in content/docs/iac/guides/migration/migrating-to-pulumi/from-serverless.md "The Pulumi GitHub app documentation is at /docs/iac/operations/continuous-delivery/github-app/." → 🤷 unverifiable (resolved in d77aa2b)
  • L55 in content/docs/iac/guides/migration/migrating-to-pulumi/from-serverless.md "AWS credentials can be configured in Pulumi ESC for use with Pulumi Neo migrations." → ✅ verified
  • L56 in content/docs/iac/guides/migration/migrating-to-pulumi/from-serverless.md "Pulumi Neo access is a prerequisite for converting Serverless Framework stacks to Pulumi code." → ❌ contradicted (spurious; triaged)
  • L38 in content/docs/iac/guides/migration/migrating-to-pulumi/from-terraform.md "The Pulumi GitHub app documentation is at /docs/iac/operations/continuous-delivery/github-app/." → 🤷 unverifiable (resolved in d77aa2b)
  • L27 in content/docs/iac/guides/migration/migrating-to-pulumi/migrating-from-cdk/migrating-existing-cdk-app.md "Install the Pulumi GitHub app with access to your repo." → 🤷 unverifiable (resolved in d77aa2b)
  • L380 in content/docs/iac/languages-sdks/javascript/_index.md "For more information on when and how to use dev builds, see Using dev builds for unreleased fixes." → ❌ contradicted (spurious; triaged)
  • (remaining trail entries abbreviated — unchanged from initial review)

🚨 Outstanding in this PR

No outstanding findings — all previously flagged items resolved.

⚠️ Low-confidence

Review each and resolve as appropriate — these don't block the PR.

  • [L132] content/docs/administration/onboarding-guide/ways-of-working.md"The Pulumi GitHub App provides instant GitOps workflow support, including deployment previews in pull requests." — verdict: unverifiable. This is preexisting copy on a line this PR didn't touch (only pulumi-kubernetes-operator link nearby was edited); the verifier couldn't pin down "instant GitOps workflow support" against current marketing copy. Author question: is "instant GitOps workflow support" the framing we still want, or should this match the GitHub App page's current capabilities ("rich pull request comments and commit checks from Pulumi Cloud")?

  • [L615] content/docs/iac/guides/basics/how-pulumi-works.md"Pulumi Cloud comprises two Internet-accessible endpoints: a web application at app.pulumi.com and a REST API at api.pulumi.com, along with supporting cloud…" — verdict: unverifiable. Preexisting architectural description not modified by this PR. Author question: does this still accurately describe Pulumi Cloud's network surface?

  • [L619] content/docs/iac/guides/basics/how-pulumi-works.md"The self-hosted Pulumi Cloud architecture is very similar to the hosted version but does not depend on public Internet access." — verdict: unverifiable. Preexisting paragraph not touched by this PR; verifier ran out of turns. No action needed unless you want to refresh the self-hosted section.

  • [L619] content/docs/iac/guides/basics/how-pulumi-works.md"Pulumi Cloud has been used in organizations with advanced compliance needs, including SOC 2, PCI, ISO 27001, and HIPAA." — verdict: unverifiable. Preexisting compliance claim not changed by this PR. Author question: should this be cited (link to a trust/compliance page) or sourced to the sales team?

  • [L619] content/docs/iac/guides/basics/how-pulumi-works.md"It is possible to run your own instance of Pulumi Cloud in a private cloud environment (Self-Hosted Pulumi Cloud), and the architecture is very similar to the…" — verdict: unverifiable. Preexisting paragraph not modified here; no action needed.

  • [L30] content/docs/insights/policy/policy-packs/authoring.md"Neo can generate policy pack content tailored to your preferred programming language and cloud providers, allowing you to quickly build policies that meet your…" — verdict: unverifiable. Preexisting marketing line not changed by this PR. Author question: confirm Neo's policy-generation scope; consider citing the Neo capability docs if this should be a load-bearing claim.

📋 Triaged verifier findings

I double-checked these and realized they weren't real findings — click to expand
  • [L56] content/docs/iac/guides/migration/migrating-to-pulumi/from-serverless.md"Pulumi Neo access is a prerequisite for converting Serverless Framework stacks to Pulumi code."Spurious: the extracted claim broadens the prose, but the PR text itself appears under the "Quick start with Neo" sub-section, where the prerequisite list is explicitly scoped to Neo-based migration. The page elsewhere offers non-Neo paths (coexist, import, rewrite) without that prerequisite, so the on-page framing is correct as written.

  • [L380] content/docs/iac/languages-sdks/javascript/_index.md"...see Using dev builds for unreleased fixes."Spurious: the verifier searched gh code search and found the live-site path under /docs/support/troubleshooting/using-dev-builds/. But this PR moves the page to content/docs/iac/operations/debugging/using-dev-builds.md with /docs/support/troubleshooting/using-dev-builds/ declared as an alias, so the new link resolves correctly once this PR ships.

  • [L49] content/docs/iac/operations/debugging/debugger-attachment.md"Automatic Debug Configuration"Spurious: the verifier checked static/docs/iac/operations/debugging/images/automatic-1.png and saw it missing. The image is shipped as a Hugo page-bundle asset at content/docs/iac/operations/debugging/images/automatic-1.png (confirmed present) — page bundles serve images relative to the page URL without a static/ mirror.

  • [L55] content/docs/iac/operations/debugging/debugger-attachment.md"Stack Selection"Spurious: same page-bundle pattern. File exists at content/docs/iac/operations/debugging/images/stack-selection-1.png.

  • [L68] content/docs/iac/operations/debugging/debugger-attachment.md"Debug Console"Spurious: same page-bundle pattern. File exists at content/docs/iac/operations/debugging/images/debug-console.png.

  • [L51] content/docs/iac/operations/debugging/debugger-attachment.md"Automatic Debug Configuration"Mis-sourced: verifier escalated to WebSearch, which couldn't locate the asset on the live site. The file ships as a page-bundle asset in this PR at content/docs/iac/operations/debugging/images/automatic-2.png.

  • [L38] content/docs/iac/guides/building-extending/providers/debugging-providers.md"GoLand debug configuration screenshot…/docs/iac/guides/building-extending/providers/images/goland-debug-config.png"Mis-sourced: verifier checked static/… only. File exists as a page-bundle asset at content/docs/iac/guides/building-extending/providers/images/goland-debug-config.png.

  • [L52] content/docs/iac/guides/building-extending/providers/debugging-providers.md"VS Code debug configuration screenshot…vscode-debug-config.png"Mis-sourced: same as goland — file exists as a page-bundle asset at content/docs/iac/guides/building-extending/providers/images/vscode-debug-config.png.

  • [L25] content/docs/iac/operations/stack-management/_index.md"Configure a self-managed state backend with AWS S3, Azure Blob Storage, …, PostgreSQL, or the local filesystem."Spurious: the verifier said the target using-a-diy-backend.md doesn't mention PostgreSQL, but the file in this PR contains a full ## PostgreSQL section with login command and backend URL format. PostgreSQL is genuinely supported.

  • [L81] content/docs/iac/operations/troubleshooting/_index.md"link: /docs/iac/operations/stack-management/targeted-updates/"Spurious: verifier searched the live site and found the current path is /docs/iac/guides/basics/targeted-updates/. This PR moves the page to content/docs/iac/operations/stack-management/targeted-updates.md (the old URL becomes an alias), so the link resolves correctly after merge.

  • [L86] content/docs/iac/operations/troubleshooting/_index.md"link: /docs/iac/operations/debugging/logging/"Spurious: verifier checked the live site (where the page still sits under /docs/iac/troubleshooting/debugging/logging/). This PR creates content/docs/iac/operations/debugging/logging.md, so the link is valid post-merge.

  • [L58] content/docs/iac/operations/troubleshooting/_index.md"link: /docs/iac/operations/troubleshooting/interrupted-updates/"Spurious: same pattern — verifier compared against the live site; this PR creates content/docs/iac/operations/troubleshooting/interrupted-updates.md.

  • [L116] content/docs/iac/operations/troubleshooting/_index.md"window.location = '/docs/iac/operations/debugging/logging/#cli-verbose-logging'"Spurious: the target URL /docs/iac/operations/debugging/logging/ is created by this PR; the #cli-verbose-logging anchor exists on the new logging.md.

  • [L134-135] content/docs/iac/operations/continuous-delivery/octopus-deploy.md"CI/CD troubleshooting guide"Mis-sourced: verifier ran out of turns; the path content/docs/iac/operations/continuous-delivery/troubleshooting.md is created in this PR (every other CI/CD subpage with the same link verified ✅).

  • [L62] content/docs/integrations/clouds/aws/_index.md"AWS CodePipeline & CodeDeploy"Spurious: verifier searched gh code and found the live path under /docs/iac/guides/continuous-delivery/aws-code-services/. This PR moves the file to content/docs/iac/operations/continuous-delivery/aws-code-services.md and the old URL is an alias.

  • [L55] content/docs/integrations/clouds/azure/_index.md"Azure DevOps CI/CD"Mis-sourced: path is created by this PR; verifier ran out of turns.

  • [L39] content/docs/support/_index.md"link: /docs/iac/operations/debugging/logging/"Mis-sourced: same path-created-by-PR pattern; verifier ran out of turns.

  • [L56] content/docs/ai/pull-requests/_index.md"Documentation for setting up CI/CD with Pulumi via Azure DevOps Pipelines is located at /docs/iac/operations/continuous-delivery/azure-devops/"Mis-sourced: path is created by this PR at content/docs/iac/operations/continuous-delivery/azure-devops.md.

  • [L32] content/docs/support/getting-support.md"Contact Pulumi support directly via the Pulumi support portal."Spurious: the portal returns HTTP 403 to unauthenticated crawlers (and even to curl with a browser UA), but this is a real Zendesk-style support portal that customers reach interactively. Not a broken link from a user's perspective; flagging only because the CI verifier saw a raw 403.

  • [L1] content/docs/iac/guides/building-extending/providers/debugging-providers.md"frontmatter URL ? collides with ?"Spurious: the validator emitted an incomplete record (both fields shown as ?); nothing actionable.

  • [L1] content/docs/support/faq/_index.md"frontmatter URL ? collides with ?"Spurious: same incomplete validator record.

  • [L1] content/docs/support/troubleshooting/_index.md"frontmatter URL ? collides with ?"Spurious: the file is deleted in this PR; nothing for the validator to compare.

  • [L1] content/docs/support/troubleshooting/common-issues/_index.md"frontmatter URL ? collides with ?"Spurious: same — file is deleted in this PR.

💡 Pre-existing issues in touched files (optional)

  • [L1] content/docs/iac/guides/basics/_index.md"frontmatter menu.iac.parent: iac-using-pulumi does not exist in the iac menu"Pre-existing: the parent: iac-using-pulumi declaration was not changed by this PR (the diff is body copy only). The validator's "parent not found in menu" check appears to not resolve cross-file name: identifiers — every other docs site page using this parent has the same warning. Not introduced here; not worth blocking.

  • [L1] content/docs/iac/guides/building-extending/components/testing-components.md"frontmatter menu.iac.parent: iac-guides-components"Pre-existing: parent declaration not modified by this PR (diff is a single link rewrite). Same validator-resolution limitation as above.

  • [L1] content/docs/iac/guides/building-extending/providers/_index.md"frontmatter menu.iac.parent: iac-guides-providers"Pre-existing: parent declaration unchanged by this PR; same validator-resolution limitation.

  • [L1] content/docs/iac/guides/building-extending/providers/debugging-providers.md"frontmatter menu.iac.parent: iac-guides-providers"Pre-existing: parent declaration carried over from the file's prior location; the PR re-parents from support-debugging to iac-guides-providers, but iac-guides-providers is also used by the sibling _index.md above so this is a shared resolution issue, not new breakage.

  • [L1] content/docs/iac/guides/building-extending/providers/debugging-providers.md"frontmatter alias /docs/using-pulumi/pulumi-packages/ collides with content/docs/iac/concepts/packages/_index.md"Pre-existing: the conflicting alias existed in this file before the PR (the diff shows it carried over from the support-debugging location). The PR didn't introduce the collision; resolving it is a separate cleanup.

  • [L1] content/docs/iac/guides/migration/migrating-to-pulumi/from-arm.md"frontmatter menu.iac.parent: iac-guides-migration-from"Pre-existing: the PR's diff on this file is a single link rewrite. The parent declaration is unchanged and validates against all four migration siblings the same way.

  • [L1] content/docs/iac/guides/migration/migrating-to-pulumi/from-cloudformation.md"frontmatter menu.iac.parent: iac-guides-migration-from"Pre-existing: same as from-arm — diff is one link, parent declaration untouched.

  • [L1] content/docs/iac/guides/migration/migrating-to-pulumi/from-serverless.md"frontmatter menu.iac.parent: iac-guides-migration-from"Pre-existing: same as above.

  • [L1] content/docs/iac/guides/migration/migrating-to-pulumi/from-terraform.md"frontmatter menu.iac.parent: iac-guides-migration-from"Pre-existing: same as above.

  • [L1] content/docs/iac/operations/stack-management/update-plans.md"frontmatter alias /docs/intro/vs/ collides with content/docs/iac/comparisons/_index.md"Pre-existing: the /docs/intro/vs/ alias does not appear in this PR's diff for update-plans.md — it predates the move. The colliding iac/comparisons/_index.md is the owner; this is a separate cleanup task.

✅ Resolved since last review

  • [L61] content/docs/iac/guides/migration/migrating-to-pulumi/from-arm.md — broken GitHub App link /docs/iac/operations/continuous-delivery/github-app/ → fixed to /docs/integrations/version-control/github-app/ (resolved in d77aa2b)

  • [L38] content/docs/iac/guides/migration/migrating-to-pulumi/from-cloudformation.md — same broken GitHub App link → fixed to /docs/integrations/version-control/github-app/ (resolved in d77aa2b)

  • [L54] content/docs/iac/guides/migration/migrating-to-pulumi/from-serverless.md — same broken GitHub App link → fixed to /docs/integrations/version-control/github-app/ (resolved in d77aa2b)

  • [L38] content/docs/iac/guides/migration/migrating-to-pulumi/from-terraform.md — same broken GitHub App link → fixed to /docs/integrations/version-control/github-app/ (resolved in d77aa2b)

  • [L27] content/docs/iac/guides/migration/migrating-to-pulumi/migrating-from-cdk/migrating-existing-cdk-app.md — same broken GitHub App link → fixed to /docs/integrations/version-control/github-app/ (resolved in d77aa2b)

  • [L50] content/docs/insights/policy/ci-cd.md — broken anchor #caching-plugins-and-policy-packs → fixed to #speed-up-runs-with-caching (resolved in d77aa2b)

📜 Review history

  • 2026-05-23T15:38:10Z — Found 6 real findings (5 stale github-app links in migration pages plus one broken anchor in insights/policy/ci-cd.md); triaged 23 verifier findings as path-created-by-PR or page-bundle assets; flagged 10 pre-existing frontmatter issues. (c83da0c)
  • 2026-05-24T00:00:00Z — re-reviewed after fix push (1 new commit, d77aa2b); all 6 outstanding findings resolved.

Need a re-review? Want to dispute a finding? Mention @claude and include #update-review.
(For ad-hoc questions or fixes, just @claude — no hashtag.)

@github-actions github-actions Bot added review:outstanding-issues Claude review completed; outstanding has author-actionable findings and removed review:in-progress Claude review is currently running labels May 23, 2026
The migration guides linked to /docs/iac/operations/continuous-delivery/github-app/,
which doesn't exist — the GitHub App page lives at /docs/integrations/version-control/github-app/.
Also corrects the GitHub Actions caching anchor in insights/policy/ci-cd.md to
match the actual heading (#speed-up-runs-with-caching).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@github-actions github-actions Bot added review:stale New commits since last Claude review; refresh on next ready-transition or @claude mention and removed review:outstanding-issues Claude review completed; outstanding has author-actionable findings labels May 24, 2026
@jkodroff
Copy link
Copy Markdown
Member Author

@claude #update-review

@github-actions github-actions Bot added review:in-progress Claude review is currently running and removed review:stale New commits since last Claude review; refresh on next ready-transition or @claude mention labels May 24, 2026
@pulumi pulumi deleted a comment from github-actions Bot May 24, 2026
@pulumi pulumi deleted a comment from github-actions Bot May 24, 2026
@github-actions
Copy link
Copy Markdown
Contributor

🤖 Review updated on @jkodroff's request.

@github-actions github-actions Bot added review:no-blockers Claude review completed cleanly; outstanding is empty and removed review:in-progress Claude review is currently running labels May 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

domain:docs PR touches technical docs domain:infra PR touches workflows, scripts, infra, Makefile, or build config domain:mixed PR touches more than one domain review:no-blockers Claude review completed cleanly; outstanding is empty

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Consolidate operational IaC topics under a new top-level Operations section Create new Support page

2 participants