Skip to content

docs: fix internal links pointing at redirecting URLs (post-migration follow-through) - #21117

Open
workprentice[bot] wants to merge 1 commit into
masterfrom
seo/url-migration-link-followthrough-20260825
Open

docs: fix internal links pointing at redirecting URLs (post-migration follow-through)#21117
workprentice[bot] wants to merge 1 commit into
masterfrom
seo/url-migration-link-followthrough-20260825

Conversation

@workprentice

@workprentice workprentice Bot commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

Following the recent URL restructuring (install docs, CI/CD guides, comparisons, debugging docs, CLI command reference, and the product page), several internal links across blog posts and the pricing page still pointed at the old, now-redirecting URLs instead of their final destinations.

This PR updates each internal link to point directly at the final URL:

  • /docs/get-started/download-install/ -> /docs/install/
  • /docs/iac/guides/continuous-delivery/pulumi-kubernetes-operator/ -> /docs/integrations/clouds/kubernetes/pulumi-kubernetes-operator/
  • /docs/support/debugging/logging/ -> /docs/iac/operations/debugging/logging/
  • /docs/iac/cli/commands/pulumi_stack_init/ -> /docs/iac/cli/commands/pulumi_stack_new/
  • /product/pulumi-cloud/ -> /product/ (the majority of the changes here, across ~13 blog posts and the pricing FAQ)

Why this matters: a link that resolves through a redirect still reaches the reader, but it dilutes crawl efficiency and link-equity flow versus linking straight at the canonical target, and it's simple hygiene to clean up once a migration's redirects are confirmed stable. I verified each of the underlying 301s is a clean single hop with a self-referential canonical on the destination page, and confirmed the sitemap already lists only the new URLs, so this PR is scoped purely to the remaining internal-link references. No sitemap, canonical, or template changes were needed.

Verified with the repo's markdown lint (node ./scripts/lint/lint-markdown.js, 0 errors) and prettier --check on every changed file; both pass cleanly, and the pre-commit hook ran the same lint automatically.


🧠 This PR was created by workprentice.

Several blog posts and the pricing page link internally through URLs
that now 301-redirect to a newer path (the get-started/download-install,
guides/continuous-delivery, comparisons/cloud-template-transpilers,
support/debugging, pulumi_stack_init, and product/pulumi-cloud
migrations). Point every internal link at its final destination
instead, so crawlers and readers reach the target in one hop.

No sitemap or canonical changes were needed; both were already clean.
Verified with the repo's markdown lint and prettier checks.
@github-actions github-actions Bot added review:triaging Claude Triage is currently classifying the PR domain:website PR touches marketing, pricing, legal, or competitive landing pages domain:docs PR touches technical docs domain:mixed PR touches more than one domain domain:blog PR touches blog posts or customer stories review:in-progress Claude review is currently running and removed review:triaging Claude Triage is currently classifying the PR labels Aug 25, 2026

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🧹 Optional style suggestions from the pre-merge review — apply or dismiss; none of them block.


Generated by Claude Code

Data replication is important for ensuring the resilience and performance of stateful distributed services. This article not only emphasized the significance of data replication in distributed systems, but it also demonstrated how Pulumi, in collaboration with Azure, enables developers to architect and manage resilient, performant, and globally distributed infrastructures for their stateful applications. As cloud-native architectures expand, the importance of infrastructure as code (IaC) in ensuring optimal data replication outcomes becomes increasingly important, and Pulumi can be used to provision the infrastructure required.

Did you learn something new? We’d like to know. If you’d like to try this out for yourself, you can get started with Pulumi Cloud [here](/product/pulumi-cloud/). You can also join our community to be a part of the continuous conversation, and we can’t wait to see what you build!
Did you learn something new? We’d like to know. If you’d like to try this out for yourself, you can get started with Pulumi Cloud [here](/product/). You can also join our community to be a part of the continuous conversation, and we can’t wait to see what you build!

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

[style] vague link text — Link text should name the destination

Suggested change
Did you learn something new? We’d like to know. If you’d like to try this out for yourself, you can get started with Pulumi Cloud [here](/product/). You can also join our community to be a part of the continuous conversation, and we can’t wait to see what you build!
Did you learn something new? We’d like to know. If you’d like to try this out for yourself, you can [get started with Pulumi Cloud](/product/). You can also join our community to be a part of the continuous conversation, and we can’t wait to see what you build!

@github-actions

Copy link
Copy Markdown
Contributor

Pre-merge Review — Last updated 2026-08-25T12:41:20Z

Tip

Summary: This is a link-hygiene sweep: 19 internal links across 16 blog posts, one IaC docs page, and the pricing FAQ are repointed from redirecting URLs to their current destinations. The bulk of it is /product/pulumi-cloud//product/, which is correct — /product/pulumi-cloud/ is an alias on content/product/_index.md. I confirmed every new target resolves to a real page: /docs/install/, /docs/iac/operations/debugging/logging/#cli-verbose-logging, /docs/integrations/clouds/kubernetes/pulumi-kubernetes-operator/, and /docs/iac/cli/commands/pulumi_stack_new/. The wrongness that would block a reader here is a link that lands somewhere the surrounding sentence doesn't describe, and one change does exactly that: swapping the pulumi_stack_init URL for pulumi_stack_new leaves prose promising pulumi stack init docs pointing at a page titled pulumi stack new. A second, separate broken link sits on a line this PR edits. Passes run: link-target resolution against the repo for all 19 new destinations, external claim verification (53 claims), a cross-sibling sweep of the touched docs page's directory peers, frontmatter and Vale sweeps.

Review confidence:

Dimension Level Notes
mechanics HIGH Every new link target resolved against the repo; small, uniform diff.
facts MEDIUM Two external pages (a HubSpot landing page and a docs page) couldn't be read by the verification step; both sit on prose this PR doesn't touch.
coherence HIGH
cross-sibling consistency HIGH No directory peer of the touched docs page carries the same redirecting link.
Investigation log
  • Cross-sibling reads: 9 of 9 siblings
  • External claim verification: 34 of 53 claims verified (3 unverifiable, 2 contradicted) · 4 specialists (numerical, cross-reference, capability, framing); 0 cross-specialist corroborations · routed: 0 inline, 35 Pass 1, 6 Pass 2 (verified 3, contradicted 1, unverifiable 2), 12 Pass 3 (verified 7, contradicted 0, unverifiable 5).
  • Cited-claim spot-checks: 6 of 6 cited claims fetched and compared
  • Frontmatter sweep: ran on body + meta_desc + social.{bluesky, linkedin, twitter}
  • 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: ran (single-subject, N/A)
🚨 Outstanding ⚠️ Low-confidence 💡 Pre-existing ✅ Resolved
2 0 2 0

✏️ 1 one-click style suggestion is posted inline — apply it from the Files changed tab.

🔍 Verification trail

53 claims extracted · 34 verified · 3 unverifiable · 2 contradicted
  • L199 in content/blog/aws-cdk-on-pulumi-1.0/index.md "Pulumi supports customizing resource options to protect a database against accidental deletion or deploy to multiple regions in the same program." → ✅ verified (evidence: The claim links to Pulumi's resource options docs page, which documents the protect option (prevents a resource from being deleted) and provider/providers options (allow targeting different cloud provider configurations, e.g.…; source: https://www.pulumi.com/docs/iac/concepts/options/ (linked in claim); Pulumi core resource options documentation)
  • L200 in content/blog/aws-cdk-on-pulumi-1.0/index.md "Pulumi deployments can detect and manage drift." → ✅ verified (evidence: Pulumi's own docs (content/docs/deployments/concepts/drift.md, titled "Drift detection and remediation") and product page confirm: "Drift detection and remediation operate continuously, on a schedule of your choosing, comparing the state…; source: pulumi/docs:content/docs/deployments/concepts/drift.md, content/product/pulumi-deployments.md)
  • L201 in content/blog/aws-cdk-on-pulumi-1.0/index.md "Pulumi Cloud's Audit Logs feature allows tracking and storing user actions and change history." → ✅ verified (evidence: Pulumi's own docs describe this exact feature: "Audit Logs provide a record of user actions and system events within Pulumi Cloud" and "Pulumi Cloud maintains an audit log of every activity and who performed it for complete visibility,"…; source: gh search code --owner pulumi "Audit Log" --repo pulumi/docs (assets/openapi/tag-intros/audit-logs.md; content/docs/administration/get-started/setting-up-for-success.md))
  • L202 in content/blog/aws-cdk-on-pulumi-1.0/index.md "Pulumi Cloud (linked at https://www.pulumi.com/product/) provides a host of benefits beyond those listed (resource options customization, drift…" → ✅ verified (framing: The claim lists specific benefits (drift detection, audit logs, resource options) as examples of "a host of benefits" — the product page broadly confirms…; evidence: The Pulumi product page confirms Pulumi Cloud provides a platform with capabilities like discovery & governance ("Asset management, compliance remediation, and AI insights over the cloud"), secrets/configuration management, and IaC…; source: https://www.pulumi.com/product/)
  • L26 in content/blog/better-cli-interactions-for-agents-and-humans/index.md "CLIs are easier for AI agents to call than HTTP APIs." → ➖ not-a-claim (evidence: This is an opinion/design rationale asserted by the blog post's own authors about their reasoning for building CLI-based agent interactions, not a falsifiable third-party fact.; source: content/blog/better-cli-interactions-for-agents-and-humans/index.md)
  • L26 in content/blog/better-cli-interactions-for-agents-and-humans/index.md "CLIs produce predictable output." → ➖ not-a-claim (evidence: This is a general, unattributed assertion about CLIs as a category made in the author's own blog post framing/argument, not a specific falsifiable claim about a Pulumi product feature or a third-party source. It reads as rhetorical…; source: content/blog/better-cli-interactions-for-agents-and-humans/index.md)
  • L26 in content/blog/better-cli-interactions-for-agents-and-humans/index.md "AI agents do a lot of their work through CLIs." → ➖ not-a-claim (evidence: This is a general positioning/opinion statement framing the blog post's own thesis, not a falsifiable factual assertion attributed to a third-party source. It's the author's premise for why they're improving CLI interactions, not a…; source: content/blog/better-cli-interactions-for-agents-and-humans/index.md)
  • L26 in content/blog/better-cli-interactions-for-agents-and-humans/index.md "Over the last few months, Pulumi's own CLI traffic has shifted from mostly people typing commands to people and agents running commands together, often in…" → 🤷 unverifiable (evidence: The claim is an internal, first-party observation about Pulumi's own CLI telemetry ("our own CLI traffic has shifted...") stated in the blog's own voice, with no external dataset, citation, or link provided. There is no public source…; source: content/blog/better-cli-interactions-for-agents-and-humans/index.md; intuition: Vague, unquantified trend claim about internal usage data with no numbers or timeframe specificity — plausible…)
  • L28 in content/blog/better-cli-interactions-for-agents-and-humans/index.md "The Pulumi CLI is reorganized around three ideas: the right command should be the one you can guess, anything you can do in Pulumi Cloud should also be…" → ➖ not-a-claim (evidence: This is Pulumi's own framing of its CLI redesign philosophy, immediately substantiated by the post's own subsequent sections (guessability, "All of Pulumi Cloud in the terminal", and agent/human-readable output). It's a design-intent…; source: repo:content/blog/better-cli-interactions-for-agents-and-humans/index.md)
  • L298 in content/blog/better-cli-interactions-for-agents-and-humans/index.md "This release (linked at /releases/agentic-infrastructure-era/) includes improvements across the whole CLI, designed with both humans and agents in mind." → ✅ verified (evidence: The release page at /releases/agentic-infrastructure-era/ (content/releases/agentic-infrastructure-era.md) explicitly links to this very blog post under two sections: "Pulumi Cloud in the CLI" ("Dozens of new commands for Pulumi…; source: gh api repos/pulumi/docs/contents/content/releases/agentic-infrastructure-era.md)
  • L298 in content/blog/better-cli-interactions-for-agents-and-humans/index.md "This release makes improvements across the whole CLI with humans and agents in mind." → ➖ not-a-claim (evidence: The sentence is the blog post's own closing summary of the release it is announcing ("A lot of what makes a developer tool worth using is in the details, and most of what's in this release is exactly that, across the whole CLI, with…; source: repo:content/blog/better-cli-interactions-for-agents-and-humans/index.md)
  • L300 in content/blog/better-cli-interactions-for-agents-and-humans/index.md "Pulumi maintains a GitHub issues page at https://github.com/pulumi/pulumi/issues for feedback." → ✅ verified (evidence: The cited URL https://github.com/pulumi/pulumi/issues returns HTTP 200 and is the GitHub Issues page for the pulumi/pulumi repository, confirming Pulumi maintains this issues page for feedback.; source: https://github.com/pulumi/pulumi/issues)
  • L22 in content/blog/hidden-costs-of-infrastructure-management/index.md "Pulumi Cloud is available as a SaaS or self-hosted solution." → ✅ verified (evidence: Pulumi's own pricing FAQ states: "Yes, we offer a self-hosted Pulumi Cloud for companies that have specific data control requirements and want to maintain complete control over hosting Pulumi Cloud. This option is available in Business…; source: repo:content/pricing/_index.md)
  • L22 in content/blog/hidden-costs-of-infrastructure-management/index.md "Pulumi Cloud provides a comprehensive infrastructure management platform designed to handle everything running in the cloud." → ➖ not-a-claim (evidence: This is generic marketing/positioning language describing Pulumi Cloud as "a comprehensive infrastructure management platform designed to handle everything running in the cloud" — a broad, non-falsifiable characterization rather than a…; source: content/blog/hidden-costs-of-infrastructure-management/index.md)
  • L22 in content/blog/hidden-costs-of-infrastructure-management/index.md "There are distinct advantages to choosing Pulumi Cloud over a DIY approach for managing IaC backends." → ➖ not-a-claim (evidence: This is a subjective marketing statement asserting Pulumi's own product has advantages over DIY approaches, made by Pulumi about Pulumi Cloud on Pulumi's own blog. It's not a falsifiable technical assertion with a verifiable anchor fact.; source: content/blog/hidden-costs-of-infrastructure-management/index.md)
  • L31 in content/blog/iac-best-practices-implementing-rbac-and-security/index.md "A prior Zephyr blog post (described as the third in a series) listed security as one of the reasons affecting how projects and stacks should be structured." → ✅ verified (evidence: The Pulumi blog post "IaC Best Practices: Structuring Pulumi Projects" is explicitly identified as "the third post in a series of blog posts focused on Zephyr Archaeotech Emporium" and states "Security: Closely related to the previous…; source: https://www.pulumi.com/blog/iac-best-practices-structuring-pulumi-projects/)
  • L33 in content/blog/iac-best-practices-implementing-rbac-and-security/index.md "The linked page at /product/ is the correct destination for information about Pulumi Cloud referenced in this quote about stack permissions and RBAC." → ✅ verified (evidence: The link target /product/ resolves to content/product/_index.md, the Pulumi Cloud/unified platform overview page, which explicitly covers RBAC and governance ("enterprise RBAC give you visibility and control", "Enforce policies…; source: repo:content/product/_index.md)
  • L35 in content/blog/iac-best-practices-implementing-rbac-and-security/index.md "The concept of 'appropriately controlling who can affect what' is another way of describing the principle of least privilege." → ✅ verified (evidence: Authoritative security sources define the principle of least privilege exactly as "controlling who can affect what": NIST defines it as restricting "the access privileges of users (or processes acting on behalf of users) to the minimum…; source: https://csrc.nist.gov/glossary/term/least_privilege; https://www.sailpoint.com/identity-library/least-privilege)
  • L28 in content/blog/introducing-pulumi-registry/index.md "There are more than 6,300 distinct cloud services across Azure, Amazon Web Services, and Google Cloud combined." → ✅ verified (evidence: The Pulumi blog post itself states: "In Azure, Amazon Web Services, and Google Cloud alone, there are more than 6,300 distinct services, each of which might be the service that gives your team...the competitive advantage you need."; source: https://www.pulumi.com/blog/introducing-pulumi-registry/)
  • L30 in content/blog/introducing-pulumi-registry/index.md "Pulumi Registry includes Components intended to help users get to production faster than before." → ✅ verified (evidence: Line 30 of the blog post states: "all the Components that get you to production faster than ever before," directly supporting the claim that Pulumi Registry includes Components intended to help users get to production faster than before.; source: repo:content/blog/introducing-pulumi-registry/index.md)
  • L30 in content/blog/introducing-pulumi-registry/index.md "Pulumi Registry lets users filter packages by category or by modern cloud use case, including Serverless, Containers, or Kubernetes." → ✅ verified (evidence: The Pulumi Registry blog post states: "You can easily filter packages by these categories or to find packages for your modern cloud use case, including Serverless, Containers, or Kubernetes."; source: https://www.pulumi.com/blog/introducing-pulumi-registry/)
  • L32 in content/blog/introducing-pulumi-registry/index.md "Pulumi Registry provides tutorials and scenario-specific how-to guides for packages." → ✅ verified (evidence: The blog itself states: "Pulumi Registry has tutorials and scenario-specific how-to guides to help you get started," and the pulumi/registry repo implements this feature (e.g. layouts/registry/package.html has "How-to Guides by Language"…; source: repo:pulumi/registry themes/default/layouts/registry/package.html ("How-to Guides by Language"); repo:pulumi/docs content/blog/introducing-pulumi-registry/index.md)
  • L32 in content/blog/introducing-pulumi-registry/index.md "Users can install a package directly from Pulumi Registry as a NuGet package, npm package, Python package, or Go module." → ✅ verified (evidence: The pulumi/registry repo's package installation-configuration pages (e.g. the "std" package) list per-language install commands directly on the page: npm install @pulumi/std (npm), pip install pulumi-std (Python), `go get…; source: gh api repos/pulumi/registry/contents/themes/default/content/registry/packages/std/installation-configuration.md)
  • L32 in content/blog/introducing-pulumi-registry/index.md "The API documentation now includes a type-ahead filter to help users find resources or methods." → ➖ not-a-claim (evidence: The claim is a direct restatement of the blog post's own description of a feature it is announcing: "We've also taken this opportunity to make some improvements to the API documentation...like adding a left navigation and type-ahead…; source: repo:content/blog/introducing-pulumi-registry/index.md)
  • L32 in content/blog/introducing-pulumi-registry/index.md "The API documentation was previously hosted on pulumi.com/docs." → ✅ verified (evidence: Older Pulumi provider READMEs (e.g. pulumi-kubernetes, pulumi-gcp) reference API docs at paths like https://www.pulumi.com/docs/reference/pkg/python/pulumi_kubernetes/, confirming API reference docs were indeed hosted under…; source: gh search code --owner pulumi "pulumi.com/docs/reference/pkg" (pulumi-kubernetes/pulumi-gcp README.md))
  • L57 in content/blog/maximize-speed-scale-savings-multi-cloud-platform/index.md "Pulumi offers a workshop series, enrollable via https://info.pulumi.com/pulumi-platform-engineering-immersion-days, that is customizable for a team's cloud…" → 🤷 unverifiable (framing: Page loaded (200) but truncated body only contains CSS variables, not substantive page content confirming or denying the claim's specifics about…; evidence: The pre-fetched page returned HTTP 200, but the body content retrieved is entirely CSS/style boilerplate (HubSpot design tokens) with no visible text about workshop content, enrollment process, or customization for a team's…; source: https://info.pulumi.com/pulumi-platform-engineering-immersion-days)
  • L38 in content/blog/mlops-huggingface-llm-aws-sagemaker-python/index.md "The 'Pulumi Cloud' product page is located at https://www.pulumi.com/product/" → ✅ verified (evidence: The URL https://www.pulumi.com/product/ returns HTTP 200 and renders as Pulumi's main product page ("Unified Platform for Infrastructure Teams – Pulumi | Pulumi ... Product For engineers For enterprises"), confirming it is indeed the…; source: https://www.pulumi.com/product/)
  • L63 in content/blog/neo-automations/index.md "The automations docs at /docs/ai/neo/automations/ cover the form, scheduling options, and per-automation overrides." → ✅ verified (evidence: The docs page content/docs/ai/neo/automations/_index.md exists at /docs/ai/neo/automations/ and describes exactly this content: "The form asks for a name, the prompt... and the frequency (hourly, daily, weekdays, or weekly)" and "The…; source: repo:content/docs/ai/neo/automations/_index.md)
  • L22 in content/blog/pulumi-cloud-dark-mode/index.md "Pulumi Cloud helps teams manage and operate their cloud infrastructure in one place, covering state, secrets, deployments, visibility, and policy enforcement." → ✅ verified (evidence: The blog's live source text reads: "Pulumi Cloud helps teams manage and operate their cloud infrastructure in one place, from state and secrets to deployments, visibility, and policy enforcement." This matches…; source: gh search code --owner pulumi repo:pulumi/docs content/blog/pulumi-cloud-dark-mode/index.md; content/product/_index.md)
  • L24 in content/blog/pulumi-cloud-dark-mode/index.md "Dark mode has been a consistently requested feature from the Pulumi community for a long time." → ➖ not-a-claim (evidence: This is a subjective characterization of community sentiment ("consistently requested... for a long time") with no specific number, date, or falsifiable metric attached—it's standard blog framing describing the author's own product…; source: content/blog/pulumi-cloud-dark-mode/index.md (self-description of feature motivation))
  • L24 in content/blog/pulumi-cloud-dark-mode/index.md "Dark mode has been a frequently requested feature from the Pulumi community for a long time." → ➖ not-a-claim (evidence: This is a subjective, unattributed-to-any-specific-source marketing statement about community demand for a feature, typical of the author's own product narrative in an announcement blog post — not a falsifiable claim checkable against an…; source: content/blog/pulumi-cloud-dark-mode/index.md)
  • L13 in content/blog/pulumi-kubernetes-operator-and-kargo/index.md "Using the Pulumi Kubernetes Operator together with Kargo lets you manage infrastructure as code with Pulumi while systematically testing and promoting…" → ➖ not-a-claim (evidence: The claim paraphrases the blog post's own summary: "Used together, they let you manage infrastructure as code with Pulumi while systematically testing and promoting changes through dev, staging, and production environments." This is the…; source: repo:content/blog/pulumi-kubernetes-operator-and-kargo/index.md)
  • L13 in content/blog/pulumi-kubernetes-operator-and-kargo/index.md "Kargo provides controlled promotion of changes across environments." → ✅ verified (evidence: The post itself and Kargo's own docs describe it as "a continuous promotion platform that manages how changes move through application lifecycle stages," providing "controlled, staged promotions with verification steps" across…; source: content/blog/pulumi-kubernetes-operator-and-kargo/index.md (citing docs.kargo.io/user-guide/core-concepts))
  • L16 in content/blog/pulumi-kubernetes-operator-and-kargo/index.md "Using the Pulumi Kubernetes Operator together with Kargo lets you keep your infrastructure defined in Pulumi while managing multi-environment rollouts in a…" → 🤷 unverifiable (evidence: The pre-fetched page body is truncated to generic Pulumi site navigation/header content and does not contain any passage describing the Pulumi Kubernetes Operator's functionality, Kargo integration, or multi-environment rollout…; source: https://www.pulumi.com/docs/integrations/clouds/kubernetes/pulumi-kubernetes-operator/)
  • L35 in content/blog/pulumi-up-2024/index.md "Tivity Health automated everything in their cloud operations using Pulumi." → ✅ verified (evidence: The blog post itself (same file) states: "Tivity Health saved 71% of their cloud spend, automating everything and saving $6.5M annually," which directly supports the claim as an accurate restatement of the source sentence.; source: repo:content/blog/pulumi-up-2024/index.md L35)
  • L35 in content/blog/pulumi-up-2024/index.md "Pulumi has worked with 3,000 customers to help with their cloud journey." → ✅ verified (evidence: The Pulumi Up 2024 blog post itself states this exact figure: "We've now worked with 3,000 customers to help with their cloud journey and have listened to and solved the problems we regularly hear about." This is corroborated by…; source: https://www.pulumi.com/blog/pulumi-up-2024/)
  • L35 in content/blog/pulumi-up-2024/index.md "Nvidia is at the forefront of the AI revolution." → ➖ not-a-claim (evidence: This is a subjective positioning/opinion statement about Nvidia's role in the AI industry, not a falsifiable factual assertion tied to a specific verifiable metric or Pulumi product claim.; source: content/blog/pulumi-up-2024/index.md)
  • L35 in content/blog/pulumi-up-2024/index.md "BMW is reimagining their entire engineering mindset in a cloud-first world." → ✅ verified (evidence: The official Pulumi blog post itself states verbatim: "BMW who is reimagining their entire engineering mindset in a cloud-first world, both leveraging Pulumi." This is a direct quote from the same published blog post, matching the claim…; source: https://www.pulumi.com/blog/pulumi-up-2024/)
  • L82 in content/blog/registry-component-api-docs/index.md "Users can start generating API docs by publishing their component, as described at /docs/idp/concepts/private-registry/#publishing-components." → ❌ contradicted (evidence: The target page content/docs/idp/concepts/private-registry.md has no heading that produces the anchor #publishing-components. The relevant section is titled ## Publish a component (line 42), which Hugo would render as anchor…; source: repo:content/docs/idp/concepts/private-registry.md)
  • L217 in content/blog/replicating-data-to-support-multi-region-applications/index.md "Pulumi Cloud can be gotten started with via a page located at the '/product/' path on the Pulumi website." → ✅ verified (evidence: The pulumi/docs repo contains content/product/_index.md, which renders as the /product/ page on pulumi.com — a live, valid path that serves as the Pulumi Cloud/product landing page, matching the blog's "get started with Pulumi Cloud…; source: gh api repos/pulumi/docs/contents/content/product (content/product/_index.md present))
  • L41 in content/blog/resource-search/index.md "Thousands of users have used the Resource Search feature to find resources across cloud environments, projects, stacks, teams, and users." → ✅ verified (evidence: The Pulumi blog post on Resource Search states: "In the past month, Resource Search has been the fastest adopted feature since launching Pulumi Cloud, with thousands of users leveraging the feature to find resources across cloud…; source: https://www.pulumi.com/blog/resource-search/)
  • L22-23 in content/blog/stack-init-teams-flag/index.md "Organization admins can leverage RBAC to grant access permissions at the organization or Pulumi Teams levels." → ✅ verified (framing: Docs describe a two-tier RBAC model (org-wide + entity-level access via teams); claim's "organization or Pulumi Teams levels" is a narrower restatement of…; evidence: Pulumi Cloud RBAC docs confirm that roles combine "entity access" (permission sets applied to specific entities like stacks) and "organization access level" (org-wide permission sets) — i.e., admins can grant access at org or team/stack…; source: pulumi/docs:content/docs/administration/concepts/rbac/roles.md)
  • L25-26 in content/blog/stack-init-teams-flag/index.md "Stacks are often created via the CLI with the pulumi stack init command, documented at https://www.pulumi.com/docs/iac/cli/commands/pulumi_stack_new/#options." → ❌ contradicted (framing: shifted — cited page documents 'pulumi stack new' but claim text asserts it documents 'pulumi stack init'; evidence: The claim cites https://www.pulumi.com/docs/iac/cli/commands/pulumi_stack_new/#options as documenting the pulumi stack init command, but that URL's page is titled "pulumi stack new | CLI commands | Pulumi Docs" — it documents the…; source: https://www.pulumi.com/docs/iac/cli/commands/pulumi_stack_new/#options; intuition: Command name in claim text ("pulumi stack init") doesn't match the cited URL slug/page title ("pulumi_stack_new") …)
  • L26-27 in content/blog/stack-init-teams-flag/index.md "If you're using the Pulumi Service as your backend, you can view your newly created stack in the Pulumi Service console." → ✅ verified (evidence: The Pulumi Service backend documentation confirms that stacks managed via the Pulumi Service backend are viewable in the Pulumi Service console (app.pulumi.com); this is core, well-documented functionality of the state-and-backends…; source: content/blog/stack-init-teams-flag/index.md (links to /docs/iac/concepts/state-and-backends/#pulumi-service-backend))
  • L22 in content/blog/why-choose-pulumi-cloud-over-diy-backends/index.md "Pulumi IaC is entirely open source under the Apache 2.0 license." → ✅ verified (evidence: The pulumi/pulumi GitHub repository's LICENSE file is the Apache License, Version 2.0 ("Apache License, Version 2.0, January 2004, http://www.apache.org/licenses/"), confirming Pulumi's core IaC engine/CLI/SDK is open source under Apache…; source: gh api repos/pulumi/pulumi/license)
  • L24 in content/blog/why-choose-pulumi-cloud-over-diy-backends/index.md "Pulumi built Pulumi Cloud to help customers avoid building and maintaining enterprise IaC backend capabilities from scratch while enabling them to automate…" → ➖ not-a-claim (evidence: The claim is a close paraphrase of the blog's own text: "That's why we built Pulumi Cloud—to help you avoid building and maintaining these capabilities from scratch while ensuring you can automate, secure, and manage your infrastructure…; source: content/blog/why-choose-pulumi-cloud-over-diy-backends/index.md L24; content/product/_index.md)
  • L24 in content/blog/why-choose-pulumi-cloud-over-diy-backends/index.md "Companies receive increasing value from Pulumi Cloud as their organization and infrastructure platforms grow in size and complexity." → ➖ not-a-claim (evidence: This is a subjective positioning/marketing statement about value proposition scaling with organizational complexity, not a falsifiable technical assertion with a checkable fact, number, or specific capability claim.; source: content/blog/why-choose-pulumi-cloud-over-diy-backends/index.md (own text, positioning statement))
  • L200 in content/docs/iac/operations/stack-management/using-a-diy-backend.md "Specifying the region in the backend URL, for example pulumi login 's3://<bucket-name>?region=us-east-1', resolves the AWS SDK's inability to determine the…" → ✅ verified (evidence: The same doc file documents the region= query parameter syntax for pulumi login s3://<bucket-name>?region=us-east-1&awssdk=v2&profile=<profile-name> earlier (line 63-67), and the troubleshooting section states: "Missing region…; source: repo:content/docs/iac/operations/stack-management/using-a-diy-backend.md)
  • L201 in content/docs/iac/operations/stack-management/using-a-diy-backend.md "DIY backends authenticate using the cloud provider's own SDK." → ✅ verified (evidence: Pulumi's DIY backend (pkg/backend/diy/backend.go) uses gocloud.dev/blob drivers per scheme (azureblob for azblob://, gcsblob for gs://, s3blob for s3://), each of which authenticates via the respective cloud provider's own SDK — matching…; source: gh search code --owner pulumi "gocloud.dev/blob" --repo pulumi/pulumi (pkg/backend/diy/backend.go); content/docs/iac/operations/stack-management/using-a-diy-backend.md)
  • L201 in content/docs/iac/operations/stack-management/using-a-diy-backend.md "There is a section of this document titled 'Google Cloud Storage' reachable via the anchor #google-cloud-storage." → ✅ verified (evidence: Line 147 of the same file contains the heading ## Google Cloud Storage, which generates the anchor #google-cloud-storage referenced at line 201's link [Google Cloud Storage](#google-cloud-storage).; source: repo:content/docs/iac/operations/stack-management/using-a-diy-backend.md (line 147, line 201))
  • L203 in content/docs/iac/operations/stack-management/using-a-diy-backend.md "There is a page at /docs/iac/operations/debugging/logging/ containing a section reachable via the anchor #cli-verbose-logging documenting CLI verbose logging." → ✅ verified (evidence: The page content/docs/iac/operations/debugging/logging.md exists and contains the heading "## CLI verbose logging" (line 39), which maps to the anchor #cli-verbose-logging, confirming the target page and section exist.; source: repo:content/docs/iac/operations/debugging/logging.md)
  • L117 in content/pricing/_index.md "Pulumi Cloud coordinates updates with the Pulumi CLI, which creates or updates resources to reach the infrastructure's desired state." → ✅ verified (evidence: The pricing FAQ (source of the claim) states: "It tracks your infrastructure's state and coordinates updates with the CLI, which creates or updates resources to reach your infrastructure's desired state." This matches the claim verbatim…; source: repo:content/pricing/_index.md (line 117); repo:content/product/_index.md)
  • L119 in content/pricing/_index.md "Use of Pulumi Cloud is not required; users can use any cloud or on-premises storage to build and run their own backend." → ✅ verified (evidence: The State & Backends doc confirms: "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 such as Minio or Ceph, a PostgreSQL…; source: repo:content/docs/iac/concepts/state-and-backends.md)

📊 Editorial balance

Single-subject post; balance check N/A.

🚨 Outstanding in this PR

These must be resolved or refuted before merging.

  • [L82] content/blog/registry-component-api-docs/index.md"Users can start generating API docs by publishing their component, as described at /docs/idp/concepts/private-registry/#publishing-components." — verdict: contradicted. The anchor doesn't exist. content/docs/idp/concepts/private-registry.md has no heading that produces #publishing-components; the section is ## Publish a component, which Hugo renders as #publish-a-component. A reader clicking "publish your component" lands at the top of the page instead of the instructions. This is on a line the PR already edits, so it's cheap to fix in the same pass:

    Automatic API docs are available today for all [Pulumi Cloud](/product/) customers with access to private registry. To start generating docs, [publish your component](/docs/idp/concepts/private-registry/#publish-a-component). Documentation generation happens automatically with no configuration required, and docs will automatically appear for existing components.
    

    (That rewrite also drops "simply," which Vale flags on the same line.)

  • [L25-26] content/blog/stack-init-teams-flag/index.md"Stacks are often created via the CLI with the pulumi stack init command, documented at https://www.pulumi.com/docs/iac/cli/commands/pulumi_stack_new/#options." — verdict: contradicted; framing: shifted — cited page documents 'pulumi stack new' but claim text asserts it documents 'pulumi stack init'. The new URL is the right one — pulumi_stack_init.md no longer exists and /docs/iac/cli/commands/pulumi_stack_init/ is an alias on pulumi_stack_new.md, so the old link was indeed redirecting. But repointing it exposes a rename the prose doesn't acknowledge: the sentence promises pulumi stack init docs and the destination page is titled "pulumi stack new". Name the current command and keep the historical one visible:

    Stacks are often created via the CLI with the [`pulumi stack new` command](https://www.pulumi.com/docs/iac/cli/commands/pulumi_stack_new/#options) (formerly, and still callable as, `pulumi stack init`).
    

    If you'd rather leave a 2023 post's prose alone, the alternative is to revert this one link to the pulumi_stack_init URL and let the alias serve it — a redirecting link is the lesser problem versus a label that contradicts its destination. Either way, per AGENTS.md a reader-visible wording change to a published post is worth stamping updated: 2026-08-25 in the frontmatter.

⚠️ Low-confidence

No low-confidence findings.

Style suggestions

Optional polish from pattern-based linting — never blocking, not counted above. Take the ones that read better and ignore the rest. ✏️ marks one you can apply from the Files changed tab — use Add suggestion to batch on each, then Commit suggestions to take several in a single commit.

content/blog/introducing-pulumi-registry/index.md — 3 (1 difficulty qualifier, 1 weasel word, 1 wordiness)
  • line 30: [style] wordiness — 'all of' is too wordy.
  • line 30: [style] weasel word — 'various' is a weasel word!
  • line 30: [style] difficulty qualifier — Avoid difficulty qualifier 'easily' -- it judges difficulty for the reader (STYLE-GUIDE.md §Inclusive Language).
content/blog/registry-component-api-docs/index.md — 1 (1 difficulty qualifier)
  • line 82: [style] difficulty qualifier — Avoid difficulty qualifier 'simply' -- it judges difficulty for the reader (STYLE-GUIDE.md §Inclusive Language).
content/blog/replicating-data-to-support-multi-region-applications/index.md — 1 (1 vague link text)
  • line 217: [style] vague link text — Vague link text ('here'). Use descriptive text that conveys the destination (STYLE-GUIDE.md §Links). ✏️

📋 Triaged verifier findings

I double-checked these and realized they weren't real findings — click to expand
  • [L57] content/blog/maximize-speed-scale-savings-multi-cloud-platform/index.md"Pulumi offers a workshop series, enrollable via https://info.pulumi.com/pulumi-platform-engineering-immersion-days, that is customizable for a team's cloud…"Mis-sourced: the HubSpot landing page returned HTTP 200 but the body that came back was style boilerplate with no readable copy, so the verification step had nothing to compare against. The page is live and the link isn't one this PR changes.

  • [L16] content/blog/pulumi-kubernetes-operator-and-kargo/index.md"Using the Pulumi Kubernetes Operator together with Kargo lets you keep your infrastructure defined in Pulumi while managing multi-environment rollouts in a…"Mis-sourced: the fetched page body came back as site navigation rather than article content. The destination this PR points at does exist — content/docs/integrations/clouds/kubernetes/pulumi-kubernetes-operator/ is present in the repo, while the old content/docs/iac/guides/continuous-delivery/ path is not — so the URL change itself is right.

💡 Pre-existing issues in touched files (optional)

  • [L200] content/blog/aws-cdk-on-pulumi-1.0/index.mdPre-existing: the sweep fixed L202 but left the two redirecting links directly above it. content/docs/pulumi-cloud/ no longer exists, so https://www.pulumi.com/docs/pulumi-cloud/deployments/drift/ (L200) and https://www.pulumi.com/docs/pulumi-cloud/audit-logs/ (L201) are both alias-served. Current paths are /docs/deployments/concepts/drift/ and /docs/administration/concepts/audit-logs/. Same class of fix as the rest of the PR, and the same list block — worth including if you want this file finished.

  • [L26] content/blog/better-cli-interactions-for-agents-and-humans/index.mdPre-existing: "Over the last few months our own CLI traffic has shifted from mostly people typing commands to people and agents running commands together" is a first-party observation about Pulumi's own telemetry with no figure or citation behind it, so nothing external can confirm it. It sits on a line this PR doesn't touch and Pulumi is the authority on its own traffic; noting it only so it isn't mistaken for a verified fact.

✅ Resolved since last review

No items resolved since the last review.

📜 Review history

  • 2026-08-25T12:41:20Z — All 19 repointed link targets resolve; two broken links flagged (a nonexistent #publishing-components anchor, and prose promising pulumi stack init docs now pointing at the pulumi stack new page). (4d92f84)

  • Refresh this review — comment @claude #update-review. Say what you fixed, or which finding you dispute and why; both work in the same mention.
  • Ask for anything else — comment @claude with no hashtag (questions, one-off fixes). Leaves this review untouched.

Important

Please don't hide, resolve, or delete this comment! It breaks things!

📖 How pre-merge review works — the full lifecycle, short-circuits, and escape hatches.

@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 Aug 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

domain:blog PR touches blog posts or customer stories domain:docs PR touches technical docs domain:mixed PR touches more than one domain domain:website PR touches marketing, pricing, legal, or competitive landing pages review:outstanding-issues Claude review completed; outstanding has author-actionable findings

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants