Skip to content

Sweep mid-sentence "Infrastructure as Code" overcapitalization in content/blog - #21125

Open
workprentice[bot] wants to merge 6 commits into
masterfrom
fix_issue_20958_blog_iac_overcapitalization
Open

Sweep mid-sentence "Infrastructure as Code" overcapitalization in content/blog#21125
workprentice[bot] wants to merge 6 commits into
masterfrom
fix_issue_20958_blog_iac_overcapitalization

Conversation

@workprentice

@workprentice workprentice Bot commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

Summary

Part of #20958. That issue tracks the historical sweep for the Pulumi.Overcapitalization Vale rule's "Infrastructure as Code" token (shipped in PR #20983, which cleared content/docs/** only and deliberately deferred the ~300+ hit sweep across content/blog and other marketing surfaces). This PR takes the first slice: content/blog.

Lowercases 130 mid-sentence, generic-concept occurrences of "Infrastructure as Code" / "Infrastructure-as-Code" across 65 blog posts flagged by the rule. Every change is a capitalization-only edit; nothing else on any touched line was reworded, reflowed, or repunctuated (verified by diffing each hunk pair case-insensitively).

Deliberate exemptions (left capitalized)

Two occurrences remain capitalized because they are genuine proper-noun uses, not the generic concept:

  • announcing-speaker-lineup-pulumiup-2023/index.md: a conference talk title ("Talk: Using Monorepos to Level-up your Infrastructure as Code and Software Delivery").
  • platform-engineering-pillars-1/index.md: a quoted article title ("Platform Engineering: Recommended Practices for Infrastructure as Code").

Excluded from this sweep (in-flight PR collisions)

Three files that Vale still flags were left untouched because an open PR is concurrently editing them; touching them here would create merge conflicts with unrelated in-progress work:

Remaining surface after this PR

Outside content/blog (and the docs tree already cleared by #20983), the historical sweep still has surface in content/events (~57 hits), content/gads (~33), content/what-is (~24), content/case-studies (~14), and a long tail (~17) across tutorials, partner, solutions, and other marketing directories. I'll post an updated per-directory count on #20958 for whoever picks up the next slice.

Validation

  • vale content/blog (Pulumi.Overcapitalization, IaC token): zero remaining findings except the 3 in-flight-PR files above and the 2 deliberate exemptions, confirmed by rerunning after every edit.
  • node ./scripts/lint/lint-markdown.js on all changed files: 0 errors.
  • ./scripts/prettier.sh --check on all changed files: all pass.
  • Pre-commit hooks (lint-staged) ran clean on commit.
  • Full diff reviewed programmatically: every -/+ line pair differs only by case, confirming no accidental rewording.

🧠 This PR was created by workprentice.

@pulumi-bot

pulumi-bot commented Aug 25, 2026

Copy link
Copy Markdown
Collaborator

Your site preview for commit 529738b is ready! 🎉

http://www-testing-pulumi-docs-origin-pr-21125-529738bc.s3-website.us-west-2.amazonaws.com

Changed pages:

@github-actions github-actions Bot added 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 commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

Pre-merge Review — Last updated 2026-08-26T20:35:00Z

Tip

Summary: The VSpherevSphere finding is fixed and 🚨 Outstanding is empty. The one-file, three-line push corrects L11, L27, and L31 in pulumi-bloggers-oct-2019/index.md and changes nothing else — case-normalizing the hunk against 17e6256b leaves zero non-casing differences. A repo-wide sweep confirms one VSphere survives in content/, in architecture-as-code-vm/index.md L285, a file this PR doesn't touch and therefore out of scope here; the styles/Pulumi/ThirdPartyNames.yml entry suggested last round would catch it. vale still reports 0 blocker-tier findings. Nothing new was raised. What's left is the same 10 ⚠️ and 10 💡 items, all of which pre-date this PR — the 5 meta_desc strings under ⚠️ are the only ones that are arguably in this sweep's scope, and that's a scope call for you rather than a defect.

Review confidence:

Dimension Level Notes
mechanics HIGH The 1-file fix push was diffed line by line; all three VSphere occurrences are corrected and the hunk carries no other change. Re-swept content/ for every remaining VSphere/Vsphere spelling.
facts MEDIUM No claim in this PR is new — all verdicts land on pre-existing prose, carried forward from the initial pass. Several sources (X/Twitter, a rate-limited corporate site) could not be fetched.
coherence HIGH Both-casings-on-one-line sweep across all of content/blog is unchanged at 3 known-good hits; the meta_desc/social.* sweep across all 64 changed files still returns the same 5 actionable strings.
editorial balance HIGH Single-subject posts, no competitor framing, no FAQ steering. Untouched by this push.
Investigation log
  • Cross-sibling reads: not run (not in a templated section)
  • External claim verification: 97 of 153 claims verified (11 unverifiable, 2 contradicted, 3 framing-drift) · 4 specialists (numerical, cross-reference, capability, framing); 0 cross-specialist corroborations · routed: 0 inline, 91 Pass 1, 18 Pass 2 (verified 11, contradicted 1, unverifiable 6), 44 Pass 3 (verified 26, contradicted 2, unverifiable 16). Reused from the initial pass — the rebase replays the same content edits and introduces no new claims.
  • Cited-claim spot-checks: 18 of 18 cited claims fetched and compared
  • Frontmatter sweep: ran on body + meta_desc + social.{linkedin, twitter} — extended this round to a mid-sentence Infrastructure as Code sweep of meta_desc across all 64 changed files (6 hits, 5 actionable)
  • 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 (4 H2 sections, 1 flags fired)
  • Duplicate-phrase sweep: re-ran across content/blog/**/index.md for lines carrying both Infrastructure as Code and lowercase infrastructure as code
  • Rebase-integrity sweep: ran previously — this round compare 17e6256b...529738bc returned ahead 1, behind 0 (1 file), so the delta was usable and no full re-diff was needed.
  • Third-party-name sweep: re-ran repo-wide — grep -rn "VSphere\|Vsphere" content/ --include=*.md returns a single hit, in a file this PR doesn't touch; vSphere now leads VSphere 18 to 1 across content/
🚨 Outstanding ⚠️ Low-confidence 💡 Pre-existing ✅ Resolved
0 10 10 1

✏️ 5 one-click style suggestions are posted inline — apply them from the Files changed tab, individually or with Add suggestion to batch.

🔍 Verification trail

153 claims extracted · 96 verified · 11 unverifiable · 3 contradicted · 3 framing-drift · 17 detector findings - L72 in `content/blog/ai-ml-on-kubernetes-google-cloud-llm-rag/index.md` "Pulumi enables infrastructure as code (IaC) to automate and simplify AI/ML infrastructure on Kubernetes." → ➖ not-a-claim (evidence: This is a general marketing/framing statement describing Pulumi's core IaC purpose as applied to AI/ML on Kubernetes, not a specific, falsifiable technical assertion (no version, number, or capability claim to check).; source: content/blog/ai-ml-on-kubernetes-google-cloud-llm-rag/index.md) - L72 in `content/blog/ai-ml-on-kubernetes-google-cloud-llm-rag/index.md` "Google Cloud Kubernetes (GKE) provides a robust foundation for AI/ML workloads." → ➖ not-a-claim (evidence: This is a general positioning/opinion statement ("provides a robust foundation") rather than a falsifiable factual assertion with specific figures, dates, or capabilities that could be verified or contradicted.; source: N/A - subjective positioning statement) - L72 in `content/blog/ai-ml-on-kubernetes-google-cloud-llm-rag/index.md` "Managing infrastructure manually on GKE can be cumbersome for AI/ML workloads." → ➖ not-a-claim (evidence: This is a general positioning/opinion statement about manual infrastructure management being cumbersome, not a falsifiable factual assertion with a specific checkable anchor value.; source: content/blog/ai-ml-on-kubernetes-google-cloud-llm-rag/index.md) - L78 in `content/blog/ai-ml-on-kubernetes-google-cloud-llm-rag/index.md` "Pulumi is an infrastructure as code (IaC) tool that allows teams to define and manage cloud infrastructure using general-purpose programming languages…" → ✅ verified (evidence: Pulumi's own homepage confirms this: "Write infrastructure code in TypeScript, Python, Go, C#, or Java — the same languages your team already uses to build software" and describes Pulumi as "an open-source infrastructure as code platform…; source: repo:content/_index.md) - L78 in `content/blog/ai-ml-on-kubernetes-google-cloud-llm-rag/index.md` "Python is already the dominant language in data science and machine learning." → ✅ verified (evidence: Python's dominance in data science and ML is a well-established, widely documented industry fact (e.g., Stack Overflow Developer Surveys, Kaggle State of ML surveys consistently show Python as the leading language for data science/ML…; source: General industry knowledge (Stack Overflow/Kaggle developer surveys on ML/data science language usage)) - L15 in `content/blog/announcing-speaker-lineup-pulumiup-2023/index.md` "PulumiUP attendees hear from industry leaders and experts about IaC, software engineering, DevOps, Platform engineering, and AI." → ➖ not-a-claim (evidence: This is a promotional description of PulumiUP 2023's conference topics/themes, authored by Pulumi about their own event agenda — not a falsifiable technical or third-party-attributed assertion.; source: content/blog/announcing-speaker-lineup-pulumiup-2023/index.md) - L15 in `content/blog/announcing-speaker-lineup-pulumiup-2023/index.md` "PulumiUP features technical talks, demos, and best practices intended to leave attendees with new learnings and inspiration to help them become a better…" → 🤷 unverifiable (evidence: The pre-fetched pulumi-up page now redirects/reflects the 2025 PulumiUP event content and does not contain the specific text about "technical talks, demos, and best practices" for PulumiUP 2023; the page has been substantially updated…; source: https://www.pulumi.com/pulumi-up/) - L36-37 in `content/blog/announcing-speaker-lineup-pulumiup-2023/index.md` "Sam Cogan is particularly focused on automation and DevOps, including infrastructure as code, cloud automation tooling, PowerShell, and CI/CD tooling." → 🤷 unverifiable (evidence: The cited URL returned HTTP 429 (Too Many Requests) with an empty body, so no content could be retrieved to verify the claim about Sam Cogan's professional focus areas. This is a rate-limit response, not a dead link/404, so treating as…; source: https://www.wtwco.com/?utm_source=Pulumi.com&utm_medium=Website&utm_campaign=PulumiUP) - L11 in `content/blog/automatically-enforcing-aws-resource-tagging-policies/index.md` "AWS publishes best practices for how to tag your resources for cost tracking, automation, and organization. But how do you enforce that you're doing it…" → ➖ not-a-claim (evidence: The line contains an internal hyperlink to Pulumi's own glossary page (/what-is/what-is-infrastructure-as-code/) anchored on the phrase "infrastructure as code" — this is standard internal cross-linking to a definitional page, not a…; source: repo:content/blog/automatically-enforcing-aws-resource-tagging-policies/index.md) - L17 in `content/blog/automatically-enforcing-aws-resource-tagging-policies/index.md` "AWS publishes tagging strategy recommendations at https://aws.amazon.com/answers/account-management/aws-tagging-strategies/, including technical tags like…" → ✅ verified (framing: Claim's examples (name/environment as technical, dates/security requirements as automation, owner/cost center as business, security tags for compliance)…; evidence: Multiple sources confirm AWS's historic "AWS Tagging Strategies" guidance organized tags into technical, business, security, and automation categories: "AWS cites four categories for cost allocation tags: technical, business, security…; source: https://www.cloudforecast.io/blog/aws-tagging-best-practices/) - L19 in `content/blog/automatically-enforcing-aws-resource-tagging-policies/index.md` "To tag an AWS resource in infrastructure as code, you specify a map of key/values using the `tags` property." → ✅ verified (evidence: AWS resources across IaC tools (Pulumi, Terraform, CloudFormation) universally expose a `tags` property accepting a map of key/value string pairs for resource tagging; this is standard, well-documented behavior of the AWS resource…; source: General knowledge of Pulumi AWS provider resource schema (tags property pattern consistent across aws.* resources)) - L19 in `content/blog/automatically-enforcing-aws-resource-tagging-policies/index.md` "The example S3 Bucket code declares three tags that enable cost allocation reporting: 'user:Project', 'user:Stack', and 'user:Cost Center'." → ➖ not-a-claim (evidence: Line 19 of the blog post states the code declares three tags "user:Project", "user:Stack", and "user:Cost Center", and the code samples immediately following (JS/TS/Python) literally show exactly those three tag keys. This is a…; source: repo:content/blog/automatically-enforcing-aws-resource-tagging-policies/index.md (lines 19-37)) - L19 in `content/blog/automatically-enforcing-aws-resource-tagging-policies/index.md` "Not all AWS resources are taggable, although the most important ones are." → 🤷 unverifiable (evidence: This is a general characterization about AWS's tagging support across resource types, not a specific checkable Pulumi product claim. AWS does not publish an authoritative "most important resources are taggable" statement; taggability…; source: N/A - no single authoritative source enumerates "most important" taggable AWS resources) - L13 in `content/blog/automation-api/index.md` "Modern Infrastructure as Code tools bring key software engineering benefits to cloud engineering but remain focused on human-driven workflows." → ➖ not-a-claim (evidence: This is a subjective positioning statement characterizing the general state of IaC tooling (bringing software engineering benefits, being human-driven), used to motivate the Automation API blog post. It is not a falsifiable factual…; source: content/blog/automation-api/index.md (author's own framing/positioning statement)) - L13 in `content/blog/automation-api/index.md` "Today’s [Infrastructure as Code](/what-is/what-is-infrastructure-as-code/) platforms let organizations build rich, reliable, and complex cloud-based…" → ✅ verified (evidence: The linked page /what-is/what-is-infrastructure-as-code/ exists (content/what-is/what-is-infrastructure-as-code.md) and defines IaC exactly as referenced: "Infrastructure as code (IaC)...is the practice of provisioning and managing…; source: repo:content/what-is/what-is-infrastructure-as-code.md) - L18 in `content/blog/aws-proton-pulumi/index.md` "Today, AWS [announced support](https://aws.amazon.com/blogs/containers/announcing-aws-cdk-support-and-codebuild-provisioning-for-aws-proton/) for [AWS…" → ✅ verified (framing: Page title "Announcing AWS CDK Support and CodeBuild Provisioning for AWS Proton" matches claim's description of the announcement.; evidence: The cited URL returns HTTP 200 and its title is "Announcing AWS CDK Support and CodeBuild Provisioning for AWS Proton | Containers", which matches the claim's assertion that AWS announced CodeBuild provisioner support for AWS Proton. The…; source: https://aws.amazon.com/blogs/containers/announcing-aws-cdk-support-and-codebuild-provisioning-for-aws-proton/) - L22 in `content/blog/celebrating-20k-stars/index.md` "Over the past 7 years, the Pulumi project has had 4,400+ contributors that made 75,000+ pull requests. Pulumi is depended upon by 6,600+ GitHub projects and…" → ✅ verified (evidence: The live Pulumi blog post at the exact URL states verbatim: "Over the past 7 years, the Pulumi project has had 4,400+ contributors that made 75,000+ pull requests. Pulumi is depended upon by 6,600+ GitHub projects and supports over 160+…; source: https://www.pulumi.com/blog/celebrating-20k-stars/) - L53 in `content/blog/cloud-engineering-fuels-startup-innovation/index.md` "Panther Labs helps modern security teams build world-class detection and response pipelines using code and automation, developer-friendly workflows, and big…" → ✅ verified (evidence: The Pulumi case study page states verbatim: "Panther Labs helps modern security teams build world-class detection and response pipelines using code and automation, developer-friendly workflows, and big data primitives. Its Platform Team…; source: https://www.pulumi.com/case-studies/panther-labs/) - L30 in `content/blog/cloud-engineering-the-future-is-now/index.md` "When planning for the future of modern cloud applications, the panel agreed that the industry would continue to iterate and evolve away from domain specific…" → ✅ verified (evidence: The live Pulumi blog post at this exact URL states verbatim: "When planning for the future of modern cloud applications, the panel agreed that the industry would continue to iterate and evolve away from domain…; source: https://www.pulumi.com/blog/cloud-engineering-the-future-is-now/) - L43 in `content/blog/cloud-systems-part-one/index.md` "There are a lot of ways to provision an S3 bucket and set its permissions, but for this I’m going to use Pulumi, an infrastructure as code tool that allows…" → ➖ not-a-claim (evidence: The cited URL is a link to the author's own GitHub repository referenced in the blog post, not a factual assertion about a third-party source. The claim text itself is a description of the author's own choice to use Pulumi for the…; source: https://github.com/katcosgrove/cloud-systems-101) - L20 in `content/blog/converting-full-terraform-programs-to-pulumi/index.md` "The new support in `pulumi convert` builds upon Pulumi's CrossCode foundations for providing universal infrastructure as code support across a wide variety…" → ✅ verified (evidence: Pulumi's engine architecture docs confirm "Converter plugins," or simply converters, are the means by which Pulumi imports, converts and migrates existing IaC programs and state from other ecosystems (e.g. Terraform), implementing the…; source: gh api repos/pulumi/pulumi/contents/docs/architecture/converters.md; gh search code --owner pulumi "converter plugin" --repo pulumi/pulumi) - L58 in `content/blog/copilot-in-vscode/index.md` "Programming languages offer dozens of advantages for writing infrastructure as code (IaC). One of them is that Large Language Models are effective at using…" → ➖ not-a-claim (evidence: This is an editorial/opinion statement framing the rationale behind Pulumi's own product design choice (using general-purpose languages for IaC), not a falsifiable third-party factual claim.; source: content/blog/copilot-in-vscode/index.md) - L29 in `content/blog/esc-automation-api-pulumi-service-provider-launch/index.md` "You can now manage your Pulumi ESC [Environments](/docs/esc/concepts/environments/) directly within the Pulumi Service using the powerful Pulumi Service…" → ❌ contradicted (framing: Anchor target moved during a later docs reorg (versioning split out of environments.md); the claim's link no longer resolves to the section it names.; evidence: The blog links to /docs/esc/concepts/environments/#tagging-versions, but the current environments.md page has no "tagging-versions" heading; that content now lives on a separate page at /docs/esc/concepts/versioning/#tagging-versions…; source: gh search code --repo pulumi/docs "tagging-versions"; repos/pulumi/docs/contents/content/docs/esc/concepts/environments.md) - L81 in `content/blog/future-cloud-infrastructure-10-trends-shaping-2024-and-beyond/index.md` "Asia leads in projected cloud value, followed by the US and Europe." → ✅ verified (evidence: McKinsey's report states: "Asian companies have the most to gain from cloud, with $1.2 trillion in EBITDA by 2030 at stake... American institutions stand to capture about $1.1 trillion in cloud value, while European institutions may have…; source: https://www.mckinsey.com/capabilities/mckinsey-digital/our-insights/in-search-of-cloud-value-can-generative-ai-transform-cloud-roi) - L82 in `content/blog/future-cloud-infrastructure-10-trends-shaping-2024-and-beyond/index.md` "High-ROI organizations excel by aligning cloud strategy with business priorities, building strong cloud foundations, and using modern operating models." → ➖ not-a-claim (evidence: The text is a verbatim sentence from the blog post itself (found identically on the live Pulumi blog page), not an attributed third-party statistic or external claim requiring independent verification — it's the author's own…; source: https://www.pulumi.com/blog/future-cloud-infrastructure-10-trends-shaping-2024-and-beyond/) - L84 in `content/blog/future-cloud-infrastructure-10-trends-shaping-2024-and-beyond/index.md` "Teams succeeding in the cloud value transition increasingly use infrastructure as code, automation, and unified governance frameworks like Pulumi Insights +…" → ✅ verified (framing: The claim's general assertion that "teams...use...Pulumi Insights + Policies" as a governance framework is a narrower, specific instance of the broader…; evidence: The cited page (pulumi.com/product/insights-governance/) is Pulumi's official page for its "Discovery & governance" product line, describing "Asset management, compliance remediation, and AI insights over the cloud" — confirming Pulumi…; source: https://www.pulumi.com/product/insights-governance/) - L130 in `content/blog/future-cloud-infrastructure-10-trends-shaping-2024-and-beyond/index.md` "Automation through Infrastructure as Code ensures reproducibility and reduces drift." → ➖ not-a-claim (evidence: This is a general, widely-accepted industry statement about Infrastructure as Code benefits (reproducibility, drift reduction), not a specific falsifiable product claim about Pulumi's behavior requiring independent verification.; source: content/blog/future-cloud-infrastructure-10-trends-shaping-2024-and-beyond/index.md) - L131 in `content/blog/future-cloud-infrastructure-10-trends-shaping-2024-and-beyond/index.md` "Policy-driven governance secures cost, compliance, and architectural consistency." → ➖ not-a-claim (evidence: This is a general editorial/opinion statement about the value of policy-driven governance (e.g., Pulumi CrossGuard/Policy as Code), not a specific, falsifiable technical assertion citing a version, metric, or external source.; source: content/blog/future-cloud-infrastructure-10-trends-shaping-2024-and-beyond/index.md) - L133 in `content/blog/future-cloud-infrastructure-10-trends-shaping-2024-and-beyond/index.md` "As AI becomes deeply embedded across engineering organizations, teams are increasingly using software engineering approaches such as infrastructure as code…" → ➖ not-a-claim (evidence: This is a general trend/positioning statement expressing the blog author's own perspective on industry direction (AI infrastructure standardization via IaC, platform engineering, etc.), not a falsifiable factual assertion tied to a…; source: content/blog/future-cloud-infrastructure-10-trends-shaping-2024-and-beyond/index.md) - L135 in `content/blog/future-cloud-infrastructure-10-trends-shaping-2024-and-beyond/index.md` "Pulumi's Superintelligence Infrastructure perspective explains why AI workloads, from pre-training to inference at massive scale, require dynamic…" → ✅ verified (evidence: The blog post itself states: "Pulumi's perspective on Superintelligence Infrastructure explains why AI workloads, from pre-training to inference at massive scale, require dynamic infrastructure orchestration rather than static…; source: https://www.pulumi.com/blog/future-cloud-infrastructure-10-trends-shaping-2024-and-beyond/) - L12 in `content/blog/gartner-cool-vendor-award/index.md` "Pulumi was named one of only three vendors in the 2020 Gartner Cool Vendor for Agile and DevOps report, published on May 28th, 2020." → 🌀 framing-drift (framing: Source confirms recognition and date but does not mention total number of vendors named in the report; claim adds "only three vendors" which is unsupported…; evidence: The press release confirms Pulumi was named a Gartner Cool Vendor in Agile and DevOps, published May 28, 2020, but does not state the report named "only three vendors" total. That specific count is not supported by the fetched page's text.; source: https://info.pulumi.com/press-release/gartner-cool-vendor-5_28_2020; intuition: The "only three vendors" figure is a specific number not present in the cited press release text — needs independent…) - L18 in `content/blog/gartner-cool-vendor-award/index.md` "To be named a Gartner Cool Vendor, a product must be considered innovative, impactful, and intriguing." → 🌀 framing-drift (framing: Source: vendor must be "innovative, impactful, or intriguing" (disjunctive, any one suffices); claim: "must be considered innovative, impactful, and…; evidence: Gartner's published criteria describe the three traits with "or," not "and": "A vendor must be considered innovative, impactful, or intriguing in either the products or the IT services sectors." Similarly…; source: https://www.selector.ai/newsroom/selector-named-a-2023-gartner-cool-vendor-in-monitoring-and-observability/) - L18 in `content/blog/gartner-cool-vendor-award/index.md` "Gartner scores Cool Vendor candidates on a scale of 1-10 across the areas of technology, use of technology, business model, transformative nature, and newness." → ✅ verified (evidence: A Gartner analyst's post on the Cool Vendor process states: "Vendors are scored from on a scale of 1-10 across five areas: technology, use of technology, business model, transformative nature, and newness."; source: https://www.linkedin.com/pulse/insider-secrets-becoming-gartner-cool-vendor-jim-hare-wfcqc (reposting Gartner analyst Jim Hare's blog, originally at blogs.gartner.com/jim-hare)) - L18 in `content/blog/gartner-cool-vendor-award/index.md` "Gartner analysts rigorously verify vendor claims by speaking to customers to confirm that the technology works." → ✅ verified (framing: Claim's "verify vendor claims by speaking to customers to confirm that the technology works" closely mirrors the Gartner analyst's own description of the…; evidence: A Gartner analyst's article on Cool Vendor selection states: "Analysts must have spoken with multiple customers actually using the technology to make sure the product works as advertised and verify they are getting value from the solution."; source: https://blogs.gartner.com/jim-hare/2019/09/15/insider-secrets-becoming-gartner-cool-vendor/) - L20 in `content/blog/gartner-cool-vendor-award/index.md` "Pulumi supports deploying infrastructure to any cloud using common programming languages including JavaScript, TypeScript, Python, C#, and Go." → ✅ verified (framing: Source lists a broader set of supported languages (TypeScript, JavaScript, Python, Go, .NET, Java, YAML, HCL); claim cites a narrower subset, which is entailed.; evidence: Pulumi's Languages & SDKs docs page states: "Pulumi supports TypeScript, JavaScript, Python, Go, .NET, Java, YAML, and HCL. Each language is equally capable and supports the full surface area of all Pulumi Registry providers." The…; source: repo:content/docs/iac/languages-sdks/_index.md) - L20 in `content/blog/gartner-cool-vendor-award/index.md` "Using Pulumi, companies can write code to deploy infrastructure using industry best practices for development such as unit and integration testing…" → ➖ not-a-claim (evidence: This is a general marketing/product-positioning statement describing Pulumi's own design philosophy (using general-purpose languages with IDE tooling, testing, versioning vs. YAML/DSL) rather than a specific, falsifiable factual…; source: content/blog/gartner-cool-vendor-award/index.md) - L20 in `content/blog/gartner-cool-vendor-award/index.md` "With Pulumi, infrastructure can be abstracted into reusable components to standardize on best practices while shipping faster with confidence." → ➖ not-a-claim (evidence: This is a general marketing statement describing Pulumi's own component abstraction capability (a well-documented, real feature of Pulumi's component resources), not a specific falsifiable technical assertion with a checkable metric.; source: content/blog/gartner-cool-vendor-award/index.md) - L20 in `content/blog/gartner-cool-vendor-award/index.md` "Pulumi enables developers and operators to work better together." → ➖ not-a-claim (evidence: This is a subjective marketing/positioning statement about Pulumi's own product value proposition, not a falsifiable factual assertion that can be verified against an external source.; source: content/blog/gartner-cool-vendor-award/index.md) - L35 in `content/blog/gartner-cool-vendor-award/index.md` "Hundreds of organizations worldwide have decided to run their production infrastructure using Pulumi." → 🤷 unverifiable (evidence: Pulumi's own marketing pages describe numerous large enterprise customers (BMW, Snowflake, Wiz, Supabase, Washington Trust Bank, etc.) running production infrastructure with Pulumi, consistent with a customer base in the hundreds, but no…; source: WebSearch ran query "Pulumi hundreds of organizations production infrastructure"; top results didn't give a precise customer count; intuition: Round, unverifiable customer-count claim typical of marketing copy; likely understated given Pulumi's actual scale…) - L37 in `content/blog/gartner-cool-vendor-award/index.md` "Pulumi represents the future of infrastructure as code and the way all developers and operations teams will collaborate in the future." → ➖ not-a-claim (evidence: The source text reads "it's not just cool, but the future of infrastructure as code and, we think, the way all developers and operations teams will collaborate in the future" — an explicitly opinion-marked ("we think") statement by…; source: repo:content/blog/gartner-cool-vendor-award/index.md) - L16 in `content/blog/going-beyond-with-advanced-infrastructure-as-code-use-cases/index.md` "This blog post is the third of a three-part series originally published on The New Stack." → ✅ verified (evidence: The post's own body text states: "This is the third of a three-part series originally published on The New Stack. Read Part 1 and Part 2," with working links to the other two parts, exactly matching the claim.; source: repo:content/blog/going-beyond-with-advanced-infrastructure-as-code-use-cases/index.md) - L16 in `content/blog/going-beyond-with-advanced-infrastructure-as-code-use-cases/index.md` "Part 1 of the series is available at /blog/infrastructure-as-code-in-any-programming-language/." → ✅ verified (evidence: Line 16 of the reviewed file reads "Read [Part 1](/blog/infrastructure-as-code-in-any-programming-language/) and [Part 2]..." and the target file content/blog/infrastructure-as-code-in-any-programming-language/index.md exists and states…; source: repo:content/blog/infrastructure-as-code-in-any-programming-language/index.md) - L18 in `content/blog/going-beyond-with-advanced-infrastructure-as-code-use-cases/index.md` "Engineers who modernize their [infrastructure as code](/what-is/what-is-infrastructure-as-code/) with Pulumi get two classes of benefits:" → ✅ verified (evidence: The linked page content/what-is/what-is-infrastructure-as-code.md exists at the /what-is/what-is-infrastructure-as-code/ path and is titled "What is Infrastructure as Code (IaC)?" — a definitional explainer that matches the anchor text…; source: repo:content/what-is/what-is-infrastructure-as-code.md) - L20-21 in `content/blog/going-beyond-with-advanced-infrastructure-as-code-use-cases/index.md` "Engineers who modernize their infrastructure as code with Pulumi get two classes of benefits: Infrastructure as Code to develop cloud infrastructure with…" → ➖ not-a-claim (evidence: This is a positioning statement describing Pulumi's own product structure (IaC engine + Pulumi Cloud) as framed by the blog author; it's a marketing/positioning framing rather than a falsifiable third-party claim.; source: content/blog/going-beyond-with-advanced-infrastructure-as-code-use-cases/index.md) - L25 in `content/blog/going-beyond-with-advanced-infrastructure-as-code-use-cases/index.md` "Many Infrastructure as Code solutions require explicitly managing an artifact called 'state' that tracks what the infrastructure is defined to look like so…" → ✅ verified (evidence: Multiple authoritative sources confirm this general IaC concept. Pulumi's own docs state: "The tool compares that desired state against a record of what already exists, usually kept in a state file that tracks the resources it manages."…; source: https://www.pulumi.com/what-is/what-is-infrastructure-as-code/) - L25 in `content/blog/going-beyond-with-advanced-infrastructure-as-code-use-cases/index.md` "Every Infrastructure as Code tool stores infrastructure state, which is metadata about all the cloud resources, properties and dependencies." → ✅ verified (evidence: This is a general, well-established characterization of how IaC tools work (Pulumi, Terraform, CloudFormation all maintain a state file/mechanism tracking resource metadata, properties, and dependencies). It's a foundational/definitional…; source: General IaC domain knowledge; consistent with Pulumi state documentation (state files track resource properties and dependency graph).) - L27 in `content/blog/going-beyond-with-advanced-infrastructure-as-code-use-cases/index.md` "Terraform requires users to explicitly manage infrastructure state by hand, often storing it in an S3 bucket or equivalent on their chosen cloud." → ✅ verified (framing: Claim states Terraform requires manual/explicit state management, often via S3 or equivalent — matches widely documented Terraform behavior and setup guides.; evidence: (escalated from pass1) Multiple independent sources confirm Terraform's default state is local and that teams must explicitly configure and manage a remote backend such as S3 themselves: "By default, Terraform stores its state in a local…; source: https://oneuptime.com/blog/post/2026-03-04-terraform-state-remotely-s3-backend-rhel-9/view) - L27 in `content/blog/going-beyond-with-advanced-infrastructure-as-code-use-cases/index.md` "AWS CloudFormation and Azure Resource Manager (ARM) are managed services that abstract infrastructure state away behind the service." → ✅ verified (evidence: CloudFormation and ARM are indeed fully-managed provisioning services where the cloud provider stores and manages the deployment/resource state internally (e.g., CloudFormation stacks and drift detection are managed server-side by AWS…; source: General industry knowledge of AWS CloudFormation and Azure Resource Manager architecture (managed state, no user-exposed state file)) - L27 in `content/blog/going-beyond-with-advanced-infrastructure-as-code-use-cases/index.md` "Pulumi Cloud offers both a managed-service state option and a self-managed state option, with the managed-service approach as the default." → ✅ verified (evidence: Pulumi docs state: "Pulumi supports two classes of state backend: Pulumi Cloud: a managed backend... It is the default backend... DIY backend: a 'Do It Yourself' backend that stores state in an object store you manage." This confirms…; source: repo:content/docs/iac/concepts/state-and-backends.md) - L29 in `content/blog/going-beyond-with-advanced-infrastructure-as-code-use-cases/index.md` "Pulumi's SDK is fully open source and can be used without the Pulumi Cloud service." → ✅ verified (evidence: The pulumi/pulumi repository (containing the CLI/SDK/engine) is licensed under Apache-2.0 (open source), and Pulumi supports self-managed backends (local filesystem, S3, Azure Blob, GCS) that don't require Pulumi Cloud, consistent with…; source: gh api repos/pulumi/pulumi -q .license.spdx_id -> Apache-2.0) - L31 in `content/blog/going-beyond-with-advanced-infrastructure-as-code-use-cases/index.md` "Pulumi Cloud's architecture allows a user's cloud credentials to remain on the client rather than being sent to or stored by Pulumi Cloud." → ✅ verified (evidence: The blog itself states "Pulumi Cloud's architecture allows your cloud credentials to remain on your client" (line 31), and this is consistent with Pulumi's broader documented architecture — e.g. docs/insights/self-hosted.md: "cloud…; source: gh search code --owner pulumi (pulumi/docs: content/docs/insights/self-hosted.md, content/blog/customer-managed-deployment-agents-launch/index.md)) - L33 in `content/blog/going-beyond-with-advanced-infrastructure-as-code-use-cases/index.md` "Pulumi Cloud enables integration with identity providers such as GitHub, GitLab, Atlassian, Okta, Azure Active Directory, or any SAML/SSO provider." → ✅ verified (evidence: Pulumi's own docs FAQ states: "Organizations may be backed by your existing source control system (GitHub, GitLab, Atlassian), identity provider (any SAML/SSO provider, including Okta and Active Directory), or managed manually." This…; source: repo:content/docs/support/faq/pulumi-cloud.md (lines 74-76)) - L33 in `content/blog/going-beyond-with-advanced-infrastructure-as-code-use-cases/index.md` "Pulumi Cloud provides a complete visual history of who changed what infrastructure and when." → ✅ verified (framing: Source describes update/activity history tracking changes over time (versioned updates, who/when); claim's "visual history of who changed what and when" is a…; evidence: Pulumi docs consistently describe Pulumi Cloud's stack update history and activity log as tracking every infrastructure change: "Pulumi Cloud's activity log, the stack update history, and ESC audit logs already capture all of that. Every…; source: pulumi/docs:content/blog/agent-sprawl-iac-platform-is-the-answer/index.md; pulumi/docs:content/docs/iac/cli/commands/pulumi_stack.md ("Each stack has a configuration and update history associated with it")) - L33 in `content/blog/going-beyond-with-advanced-infrastructure-as-code-use-cases/index.md` "Pulumi Cloud supports organizations, role-based access controls, and policy enforcement." → ✅ verified (evidence: Pulumi pricing/docs confirm organizations, RBAC ("Enterprise Edition offers more sophisticated organization management facilities, including RBAC for advanced policy controls"), and Policy as Code enforcement are core Pulumi Cloud…; source: repo:content/pricing/_index.md) - L33 in `content/blog/going-beyond-with-advanced-infrastructure-as-code-use-cases/index.md` "Pulumi Cloud allows users to deploy either with the click of a button or straight out of a git repository." → ✅ verified (evidence: Pulumi docs confirm both features: "the platform supports a variety of deployment triggers such as REST API, Git Push to Deploy, and Click to Deploy" (content/blog/deploy-minutes-included/index.md), and…; source: gh search code --owner pulumi repo:pulumi/docs "push to deploy" (content/docs/deployments/concepts/triggers.md, content/blog/deploy-minutes-included/index.md)) - L55 in `content/blog/going-beyond-with-advanced-infrastructure-as-code-use-cases/index.md` "There is a Pulumi documentation guide about integration testing and ephemeral stack techniques at /docs/iac/guides/testing/integration/." → ✅ verified (evidence: The page content/docs/iac/guides/testing/integration/_index.md exists at that exact URL path and states: "An integration test runs the program in combination with the Pulumi CLI or Automation API to deploy infrastructure to an ephemeral…; source: gh api repos/pulumi/docs/contents/content/docs/iac/guides/testing/integration/_index.md) - L55 in `content/blog/going-beyond-with-advanced-infrastructure-as-code-use-cases/index.md` "Pulumi Cloud makes it easy to create independent, isolated copies of infrastructure via its projects and stack model." → ✅ verified (evidence: Pulumi's own docs state: "A stack is an isolated, independently configurable instance of a Pulumi program. Stacks are commonly used to denote different phases of development... A project can have as many stacks as you need." This…; source: repo:content/docs/iac/concepts/stacks.md) - L59 in `content/blog/going-beyond-with-advanced-infrastructure-as-code-use-cases/index.md` "There is a Pulumi user guide titled 'Automated Testing of Pulumi Programs' at /docs/iac/concepts/testing/." → ✅ verified (evidence: The URL /docs/iac/concepts/testing/ is a registered alias (in the frontmatter `aliases` list) for content/docs/iac/guides/testing/_index.md, whose meta_desc reads "Guide to automated testing of Pulumi programs: unit testing, property…; source: gh api repos/pulumi/docs/contents/content/docs/iac/guides/testing/_index.md (aliases: /docs/iac/concepts/testing/)) - L65 in `content/blog/going-beyond-with-advanced-infrastructure-as-code-use-cases/index.md` "These policies can cover literally anything that can be analyzed and checked. This commonly includes security (such as ensuring databases aren’t open to the…" → ➖ not-a-claim (evidence: This is the PR author's own description of Pulumi's Policy as Code (CrossGuard) capabilities and example use cases (security, compliance, cost), not a third-party factual assertion requiring external verification.; source: content/blog/going-beyond-with-advanced-infrastructure-as-code-use-cases/index.md) - L67 in `content/blog/going-beyond-with-advanced-infrastructure-as-code-use-cases/index.md` "Pulumi Cloud supports integrating policy as code with cost management or ticketing systems like ServiceNow to enforce IT policies." → 🌀 framing-drift (framing: overclaim — source supports "policies can be written in general-purpose languages" (which theoretically permits any API call); claim states Pulumi Cloud…; evidence: Pulumi's policy docs confirm policies can be authored in general-purpose languages (TypeScript/JavaScript, Python) or OPA/Rego, which theoretically allows calling out to any external API — but there is no documented, named "integration"…; source: repo:content/docs/insights/policy/_index.md; intuition: No Pulumi product surface (docs, registry, SDKs) names a ServiceNow or cost-management-system integration for policy…) - L67 in `content/blog/going-beyond-with-advanced-infrastructure-as-code-use-cases/index.md` "Pulumi Cloud lets users write policy as code using general-purpose languages." → ✅ verified (evidence: Pulumi's CrossGuard policy-as-code feature, referenced across Pulumi blog content ("CrossGuard Policy as Code allows an Organization to define global rules..."), is implemented using the same general-purpose languages (TypeScript…; source: gh search code --owner pulumi CrossGuard policy as code (pulumi/docs:content/blog/finops-with-pulumi/index.md)) - L85 in `content/blog/going-beyond-with-advanced-infrastructure-as-code-use-cases/index.md` "There is a Continuous Delivery user guide at /docs/iac/operations/continuous-delivery/." → ✅ verified (evidence: The docs repo contains content/docs/iac/operations/continuous-delivery/_index.md plus numerous CI/CD provider guides (argocd.md, github-actions.md, gitlab-ci.md, etc.), confirming a Continuous Delivery user guide exists at…; source: gh api repos/pulumi/docs/contents/content/docs/iac/operations/continuous-delivery) - L85 in `content/blog/going-beyond-with-advanced-infrastructure-as-code-use-cases/index.md` "Pulumi Cloud offers a built-in system called 'Pulumi Deployments' for triggering deployments based on git workflows." → ✅ verified (evidence: The linked docs page /docs/deployments/concepts/ states: "Pulumi Deployments is a managed service that runs Pulumi operations — pulumi up, preview, refresh, and destroy — on Pulumi-hosted or self-hosted compute... Pulumi Cloud runs those…; source: repo:content/docs/deployments/concepts/_index.md) - L91 in `content/blog/going-beyond-with-advanced-infrastructure-as-code-use-cases/index.md` "What if infrastructure as code were a normal library, in your language of choice, rather than a CLI? That was the question we asked before creating the…" → ➖ not-a-claim (evidence: This is a first-person narrative from Pulumi's founder (Joe Duffy) describing the design motivation behind Pulumi's own Automation API feature ("That was the question we asked before creating the automation API"). It's the author's own…; source: repo:content/blog/going-beyond-with-advanced-infrastructure-as-code-use-cases/index.md) - L97 in `content/blog/going-beyond-with-advanced-infrastructure-as-code-use-cases/index.md` "Pulumi has found that, on average, engineers who use the Automation API manage more than 10 times the infrastructure per engineer compared to those using…" → ✅ verified (evidence: The published blog post itself states: "Interestingly, we have found that, on average, those who leverage the automation API versus traditional Infrastructure as Code use cases are able to manage more than 10 times the infrastructure per…; source: https://www.pulumi.com/blog/going-beyond-with-advanced-infrastructure-as-code-use-cases/ and https://www.pulumi.com/blog/pulumi-deployments/) - L99 in `content/blog/going-beyond-with-advanced-infrastructure-as-code-use-cases/index.md` "Pulumi's Automation API is described as a natural and unique extension of infrastructure as code, enabled by Pulumi's approach of using general-purpose…" → ✅ verified (framing: Source describes the "unique form factor" naturally enabling automation, and separately credits "Pulumi's approach of using general purpose languages" for…; evidence: Pulumi's own announcement blog states: "Its unique form factor lends all of the predictability and reliability of immutable infrastructure and the desired state configuration you expect from Pulumi while naturally enabling automation and…; source: https://www.pulumi.com/blog/automation-api/) - L116 in `content/blog/going-beyond-with-advanced-infrastructure-as-code-use-cases/index.md` "The Pulumi [Getting Started guide](/docs/get-started/) is the easiest way to get up and running with infrastructure as code. In addition to that, plus…" → ✅ verified (evidence: content/docs/get-started/_index.md exists, titled "Get Started with Pulumi Infrastructure as Code," with aliases including `/get-started/`, confirming /docs/get-started/ is a valid getting-started guide link.; source: repo:content/docs/get-started/_index.md) - L117-118 in `content/blog/going-beyond-with-advanced-infrastructure-as-code-use-cases/index.md` "There is a tutorial series called 'Infrastructure as Code Recommended Practices' at /blog/iac-recommended-practices-code-organization-and-stacks/." → ✅ verified (evidence: The URL https://www.pulumi.com/blog/iac-recommended-practices-code-organization-and-stacks/ resolves live and is titled "IaC Best Practices: Understanding Code Organization & Stacks," the first post in the series; the page itself states…; source: https://www.pulumi.com/blog/iac-recommended-practices-code-organization-and-stacks/) - L49 in `content/blog/how-a-bank-modernized-its-software-engineering-with-infrastructure-as-code-automation/index.md` "Washington Trust Bank has served personal, private, commercial and wealth management clients throughout the Northwest region since 1902." → ✅ verified (evidence: (escalated from pass1) Washington Trust Bank's own site states its story "begins in 1902" and it serves "generations of families, businesses, and communities throughout the Northwest," consistent with founding in 1902 and service across…; source: https://www.watrust.com/about/our-story) - L51 in `content/blog/how-a-bank-modernized-its-software-engineering-with-infrastructure-as-code-automation/index.md` "Dennis Sauvé recognized infrastructure as code (IaC) as the solution to Washington Trust Bank's challenges of maintaining secure, reliable, and compliant…" → 🤷 unverifiable (evidence: The cited URL is merely Dennis Sauve's GitHub profile page, which confirms his identity but contains no information about Washington Trust Bank, IaC adoption, or his role in recognizing IaC as a solution. It cannot support or refute the…; source: https://github.com/dengsauve; intuition: Source is a bare GitHub profile page, which is an odd citation for an attribution/narrative claim about a person's…) - L53 in `content/blog/how-a-bank-modernized-its-software-engineering-with-infrastructure-as-code-automation/index.md` "Embracing an infrastructure as code approach allowed Washington Trust Bank to automate building and deploying their cloud infrastructure, eliminate…" → ➖ not-a-claim (evidence: This is a narrative summary of Washington Trust Bank's own stated rationale for adopting IaC, drawn from a presentation by the bank's DevOps engineer Dennis Sauvé at PulumiUP 2023, as disclosed in the post's own notice. It's a paraphrase…; source: repo:content/blog/how-a-bank-modernized-its-software-engineering-with-infrastructure-as-code-automation/index.md) - L18 in `content/blog/iac-best-practices-summarizing-key-learnings/index.md` "Welcome to the final post in our series of articles focused on infrastructure as code best practices. In this post, we'll wrap up our recommendations for…" → ✅ verified (evidence: The link target /product/infrastructure-as-code/ resolves to an existing page titled "Infrastructure as code in Any Language – Pulumi IaC" describing Pulumi's IaC product, consistent with the blog post's reference to "IaC with Pulumi".; source: repo:content/product/infrastructure-as-code.md) - L23 in `content/blog/iac-best-practices-understanding-code-organization-stacks/index.md` "This is the first in a series of blog posts that explores how a fictional company---Zephyr Archaeotech Emporium---uses Pulumi to manage their online retail…" → ➖ not-a-claim (evidence: This text is the blog post's own introductory framing of its fictional scenario and series structure (Zephyr Archaeotech Emporium), with an inline link to Pulumi's own "/what-is/what-is-infrastructure-as-code/" glossary page for context.…; source: repo:content/blog/iac-best-practices-understanding-code-organization-stacks/index.md) - L19 in `content/blog/iac-best-practices-using-automation-api/index.md` "Welcome to the sixth post in our series of blog posts focused on infrastructure as code (IaC) best practices. So far in this series, you've seen how Zephyr…" → ✅ verified (evidence: The blog post links "Pulumi Automation API" to /docs/iac/concepts/automation-api/, which exists in the docs and is titled "Automation API," describing it as "a programmatic interface for running Pulumi programs without the Pulumi CLI."…; source: repo:content/docs/iac/concepts/automation-api.md) - L22 in `content/blog/infrastructure-as-code-in-any-programming-language/index.md` "This blog post is the first of a three-part series originally published on The New Stack." → ✅ verified (evidence: The Pulumi blog page states verbatim: "This is the first of a three-part series originally published on The New Stack," and the second part in the series references "Following the first piece in this series, Infrastructure as Code in Any…; source: https://www.pulumi.com/blog/infrastructure-as-code-in-any-programming-language/) - L24 in `content/blog/infrastructure-as-code-in-any-programming-language/index.md` "[Infrastructure as Code](/what-is/what-is-infrastructure-as-code/) is a technology for automating the infrastructure for your cloud applications. If you’re…" → ✅ verified (evidence: The linked page content/what-is/what-is-infrastructure-as-code/index.md exists and defines IaC as "the practice of provisioning and managing computing infrastructure with machine-readable configuration files instead of clicking through a…; source: repo:content/what-is/what-is-infrastructure-as-code.md) - L57 in `content/blog/infrastructure-as-code-in-any-programming-language/index.md` "Pulumi's approach to infrastructure as code lets users express infrastructure using industry-standard general-purpose languages, including C#, Go, Java…" → ✅ verified (evidence: Pulumi's official docs and README confirm stable SDK support for C# (.NET), Go, Java, JavaScript, Python, and TypeScript as general-purpose languages: "Pulumi supports TypeScript, JavaScript, Python, Go, .NET, Java, YAML, and HCL. Each…; source: repo:content/docs/iac/languages-sdks/_index.md and pulumi/pulumi README.md) - L57 in `content/blog/infrastructure-as-code-in-any-programming-language/index.md` "In terms of the “code” aspect, the expression of your code varies across the infrastructure as code landscape. Some tools support markup languages like JSON…" → ➖ not-a-claim (evidence: This is general framing/positioning text describing the IaC landscape and introducing the article's own approach (using Pulumi); it is not a falsifiable factual assertion requiring verification.; source: content/blog/infrastructure-as-code-in-any-programming-language/index.md) - L61 in `content/blog/infrastructure-as-code-in-any-programming-language/index.md` "The combined communities of the general-purpose languages supported by Pulumi (C#, Go, Java, JavaScript, Python, TypeScript) add up to more than 20 million…" → ✅ verified (evidence: Multiple developer population surveys show individual language communities are each in the millions (e.g., "20 million active developers worldwide" for JavaScript, "17.1 million active developers" for Python, comparable figures for Java…; source: https://www.griddynamics.com/blog/number-software-developers-world; intuition: The "more than 20 million" figure appears to understate the likely true combined total (which could be 40-60M+ based…) - L63 in `content/blog/infrastructure-as-code-in-any-programming-language/index.md` "Pulumi supports YAML as a language for expressing infrastructure as code." → ✅ verified (evidence: The linked source /blog/pulumi-yaml/ states: "Today, we are excited to launch Pulumi YAML, a simple YAML-based interface to the entirety of the Pulumi infrastructure as code platform," and describes YAML programs (Pulumi.yaml with…; source: repo:content/blog/pulumi-yaml/index.md) - L81 in `content/blog/infrastructure-as-code-in-any-programming-language/index.md` "Pulumi can track dependencies between cloud services across different providers, for example provisioning an Elastic Kubernetes Service cluster in AWS…" → ✅ verified (framing: The general capability (cross-provider dependency tracking across AWS/Kubernetes/Datadog/Cloudflare in one program) is broadly supported by registry/product…; evidence: Pulumi Registry confirms full provider coverage spanning AWS (including EKS), Kubernetes, Datadog, and Cloudflare, all usable together in one program: "Full API coverage for AWS, Azure, Google Cloud, Kubernetes, plus Cloudflare, Datadog…; source: https://www.pulumi.com/product/infrastructure-as-code/) - L83 in `content/blog/infrastructure-as-code-in-any-programming-language/index.md` "Pulumi's Automation API embeds infrastructure as code workflows directly into larger pieces of software so they can be programmed for highly dynamic scenarios." → ✅ verified (evidence: The source blog post states: "This approach embeds Infrastructure as Code workflows right into larger pieces of software so that it can be programmed for highly dynamic scenarios," referring to Pulumi's Automation API — matching the…; source: https://www.pulumi.com/blog/infrastructure-as-code-in-any-programming-language/) - L85 in `content/blog/infrastructure-as-code-in-any-programming-language/index.md` "This unlocks scenarios like building custom tools and libraries that build on top of and extend infrastructure as code, [internal infrastructure provisioning…" → ✅ verified (evidence: The linked page content/product/internal-developer-platforms.md exists in pulumi/docs and is consistently referenced across many other blog/docs pages as "Pulumi IDP" / internal developer platforms, confirming the link target is valid…; source: gh search code --repo pulumi/docs internal-developer-platforms (confirms content/product/internal-developer-platforms.md exists)) - L86-87 in `content/blog/infrastructure-as-code-in-any-programming-language/index.md` "Part 2 of this series will cover the steps needed to set up infrastructure as code using Pulumi's SDK." → ➖ not-a-claim (evidence: This is a self-referential statement about the author's own blog series structure (announcing what Part 2 will cover), not a falsifiable third-party assertion checkable against an external source.; source: content/blog/infrastructure-as-code-in-any-programming-language/index.md) - L89 in `content/blog/jamstack-with-pulumi/index.md` "Using Pulumi to deploy infrastructure as code, we can create and build our infrastructure using either TypeScript or Python. If you haven't installed Pulumi…" → ✅ verified (evidence: The linked page content/docs/iac/get-started/aws/_index.md is a "Get started with Pulumi and AWS" tutorial that walks through prerequisites (AWS account, language runtime) and deploying infrastructure, supporting TypeScript and Python…; source: repo:content/docs/iac/get-started/aws/_index.md) - L24 in `content/blog/java-1-0/index.md` "Java is now generally available in Pulumi." → ✅ verified (evidence: pulumi/pulumi-java shipped v1.0.0 on 2025-01-07, ahead of this blog post's 2025-02-10 publish date, confirming Java reached its 1.0/GA milestone; the blog post itself (title: "Pulumi Java is Now Generally Available") announces this GA…; source: gh release list -R pulumi/pulumi-java --limit 100 (shows v1.0.0 tagged 2025-01-07)) - L24 in `content/blog/java-1-0/index.md` "Pulumi has existing first-class support for TypeScript, Python, Go, YAML, and C#." → ✅ verified (evidence: Pulumi's official SDK languages by 2023 (when Java 1.0 GA was announced) included TypeScript, Python, Go, C#, and YAML — confirmed by existence of pulumi/pulumi-yaml (created 2021) as the official YAML language provider, alongside the…; source: gh api repos/pulumi/pulumi-yaml (description: "YAML language provider for Pulumi", created_at 2021-01-04)) - L24 in `content/blog/java-1-0/index.md` "Pulumi's Java language support enables Java developers to manage cloud infrastructure using Java." → ✅ verified (framing: Source states IaC support spans multiple languages including Java; claim narrows this to Java specifically, which is a valid special case.; evidence: The cited page lists "Infrastructure as code — IaC for any cloud, in any language — Node.js, Python, Go, .NET, Java, and YAML," confirming Java is a supported Pulumi language for managing cloud infrastructure, consistent with the claim.; source: https://www.pulumi.com/docs/iac/concepts/) - L88 in `content/blog/java-1-0/index.md` "The Pulumi Automation API is a fully typed SDK that allows users to interact with Pulumi programs outside the Pulumi CLI." → ✅ verified (framing: Claim restates the standard Pulumi description of Automation API as a typed SDK for interacting with Pulumi programs outside the CLI, consistent with the…; evidence: The pre-fetched page (docs.pulumi.com Automation API) is the canonical description of the Automation API as a programmatic, fully-typed interface for driving Pulumi programs outside the CLI; the fetched body is a truncated nav snippet…; source: https://www.pulumi.com/docs/iac/using-pulumi/automation-api/) - L90 in `content/blog/java-1-0/index.md` "The Pulumi Automation API examples repo (https://github.com/pulumi/automation-api-examples) contains an example demonstrating how to construct a Pulumi…" → ✅ verified (evidence: The repo pulumi/automation-api-examples contains a java/databaseMigration directory with README: "This example provisions an AWS Aurora SQL database and executes a database \"migration\" using the resulting connection info... This is all…; source: gh search code --repo pulumi/automation-api-examples "migration" (java/databaseMigration/README.md)) - L79 in `content/blog/join-pulumi-user-group-community/index.md` "During the meetup, attendees heard from several speakers, including Joe Duffy, Co-Founder & CEO at Pulumi, who was there to speak about infrastructure as…" → 🤷 unverifiable (evidence: The linked Pulumi Insights post (dated 2023-04-13) announces the Insights product but makes no mention of a London PUG meetup or Joe Duffy speaking there, so it cannot confirm the specific claim that the meetup "happened that same day."…; source: content/blog/pulumi-insights/index.md; content/blog/join-pulumi-user-group-community/index.md) - L215-216 in `content/blog/level-up-your-azure-platform-as-a-service-applications-with-pulumi/index.md` "The 'Run from Package' Azure App Service deployment method is the most friendly way to practice infrastructure as code automation." → ➖ not-a-claim (evidence: This is a subjective positioning/opinion statement ("most friendly way to practice IaC automation") rather than a falsifiable factual claim; it reflects the author's own editorial assessment of a deployment method, not a verifiable…; source: content/blog/level-up-your-azure-platform-as-a-service-applications-with-pulumi/index.md) - L17 in `content/blog/maximize-speed-scale-savings-multi-cloud-platform/index.md` "Hundreds of thousands of developers across the globe already rely on Pulumi to drive more scalable, repeatable deployments in large self-managed production…" → 🤷 unverifiable (evidence: This is a self-referential marketing claim in Pulumi's own blog post about the size of its user base ("Hundreds of thousands of developers across the globe already rely on Pulumi"). No source is cited, and there is no public dataset…; source: content/blog/maximize-speed-scale-savings-multi-cloud-platform/index.md; intuition: Round, unsourced user-count claim typical of marketing copy — plausible but not independently verifiable via product…)

  • 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 commented Aug 25, 2026

Copy link
Copy Markdown
Contributor
continued from previous comment
  • L22 in content/blog/next-level-iac-pulumi-automation-api/index.md "When I am talking with community members, who are not using Pulumi yet, I often get asked what would be a good way to include their infrastructure as code…" → ✅ verified (evidence: The linked path resolves to an existing docs file content/docs/iac/concepts/automation-api.md in pulumi/docs, which documents the Pulumi Automation API, matching the claim's link target and description.; source: gh api repos/pulumi/docs/contents/content/docs/iac/concepts/automation-api.md)

  • L24 in content/blog/next-level-iac-pulumi-automation-api/index.md "Pulumi's Automation API gives greater flexibility and control than other IaC tools like CloudFormation or Terraform." → ➖ not-a-claim (evidence: This is a subjective, qualitative comparison ("greater flexibility and control") without a specific measurable metric, characteristic of marketing/opinion language in a blog post rather than a falsifiable technical claim.; source: content/blog/next-level-iac-pulumi-automation-api/index.md)

  • L24 in content/blog/next-level-iac-pulumi-automation-api/index.md "The Pulumi Automation API allows including Pulumi IaC into existing software for any of the Pulumi-supported programming languages, including TypeScript…" → ✅ verified (evidence: Pulumi changelogs confirm Automation API SDKs exist for Go ("Alpha version of the Automation API for Go"), NodeJS ("NodeJS Automation API"), Python ("Python Automation API."), and C# ("[sdk/dotnet] C# Automation API."), matching the…; source: gh search code --owner pulumi (pulumi/pulumi changelog files: v2.9.2.md, v2.12.0.md, v2.17.1.md, v2.21.2.md))

  • L602 in content/blog/next-level-iac-pulumi-automation-api/index.md "Pulumi's Automation API sets Pulumi apart from other tools like Terraform, which relies on static configuration files and a command-line interface." → ✅ verified (framing: Source broadly contrasts Pulumi's Automation API against Terraform's HCL+CLI model; claim's narrower phrasing ("relies on static configuration files and a…; evidence: Pulumi's official Terraform comparison page states Terraform relies on HCL configuration and a CLI, while "Pulumi additionally exposes the Automation API, a programmatic SDK that lets you drive up, preview, and destroy from inside…; source: https://www.pulumi.com/docs/iac/comparisons/terraform/)

  • L602 in content/blog/next-level-iac-pulumi-automation-api/index.md "Embedding Pulumi's Automation API as a library in an application allows driving infrastructure as code (IaC) deployments directly through code." → ✅ verified (evidence: The blog itself and Pulumi's docs describe Automation API as "a set of SDKs that allow you to interact with your Pulumi stacks programmatically," embedded as a library to create/update/delete stacks directly from code — matching the…; source: content/blog/next-level-iac-pulumi-automation-api/index.md (L44: "Pulumi Automation API is a set of SDKs that allow you to interact with your Pulumi stacks programmatically"))

  • L91 in content/blog/nov-2022-launches/index.md "If any project written in Pulumi YAML grows beyond what YAML can comfortably express, it can be seamlessly converted to adopt another richer Pulumi language…" → ✅ verified (evidence: The blog post itself states: "Pulumi YAML is the only declarative infrastructure as code language that supports convert - the ability to convert a YAML program into a program in any other Pulumi language (TypeScript, Python, Go, .NET…; source: repo:content/blog/nov-2022-launches/index.md L91; gh release view v3.50.0 -R pulumi/pulumi)

  • L91 in content/blog/nov-2022-launches/index.md "Pulumi YAML is the the only decldeclarative infrastructure as code language that supports convert, the ability to convert a YAML L programumi program into…" → ✅ verified (evidence: Pulumi's own GA blog post makes the identical claim: "Pulumi YAML is the only infrastructure markup language that supports convert - the ability to automatically translate into any Pulumi Programming language," listing Java, Go, Python…; source: https://www.pulumi.com/blog/pulumi-yaml-ga/)

  • L103 in content/blog/nov-2022-launches/index.md "Pulumi Architecture Templates offer the easiest way to get started with a complete working piece of infrastructure for one of the most common infrastructure…" → ✅ verified (framing: Source describes templates covering "the most common infrastructure as code use cases" (plural); claim narrows to "one of the most common" use cases, which…; evidence: Pulumi's official announcement describes Architecture Templates as providing "architecture-specific starting points for the most common infrastructure as code use cases," matching the blog's framing of them as an easy way to get started…; source: https://www.pulumi.com/blog/nov-2022-launches/)

  • L105 in content/blog/nov-2022-launches/index.md "The initial set of Pulumi Architecture Templates supports common infrastructure as code use cases across AWS, Azure, Google Cloud, and Kubernetes." → ✅ verified (evidence: The blog post itself states: "The initial set of architecture templates support common infrastructure as code use cases across AWS, Azure, Google Cloud and Kubernetes, and in all supported Pulumi languages." This is corroborated by the…; source: repo:content/blog/nov-2022-launches/index.md (line 105); corroborated by repo:content/templates/* directory structure (container-service, kubernetes, virtual-machine, serverless-application, static-website each under aws/azure/gcp))

  • L18 in content/blog/pinecone-serverless/index.md "The Pinecone integration with Pulumi offers a native way to manage Pinecone indexes, including the…" → ✅ verified (evidence: The claim merely links to Pinecone's homepage as a reference to the Pinecone product/service; the pre-fetched page (HTTP 200) confirms Pinecone.io is live and describes itself as "The vector database to build knowledgeable AI,"…; source: https://pinecone.io/)

  • L42 in content/blog/platform-engineering-pillars-1/index.md "Developers face many pain points with manual provisioning, which is why [infrastructure as code](https://www.pulumi.com/what-is/what-is-infrastructure-as-code/…" → ✅ verified (evidence: The cited URL is a live, relevant Pulumi page (HTTP 200) titled/described as covering "Infrastructure as code (IaC) provisions cloud infrastructure through versioned, reviewable code." This matches the anchor text's use as a link to an…; source: https://www.pulumi.com/what-is/what-is-infrastructure-as-code/)

  • L29 in content/blog/platform-engineering-pillars-3/index.md "Previous articles in this series explored [platform engineering](https://www.pulumi.com/what-is/what-is-platform…" → ✅ verified (evidence: The cited page (200 OK) defines platform engineering: "Platform engineering is the discipline of designing, building, and operating an internal platform... that lets application developers provision and manage cloud infrastructure…; source: https://www.pulumi.com/what-is/what-is-platform-engineering/)

  • L47 in content/blog/pricing-calculator-blog/index.md "Just input the number of resources in all your cloud accounts and the percentage of time they will be up (12 hours a day would be 50% of the time) and you…" → ➖ not-a-claim (evidence: This text is instructional/descriptive copy for the author's own newly-announced pricing calculator tool (explaining how to use the inputs: resource count, utilization percentage, deployment minutes), not a third-party-attributed factual…; source: repo:content/blog/pricing-calculator-blog/index.md)

  • L17 in content/blog/project-scoped-stacks-in-self-managed-backend/index.md "This is why we built Pulumi Cloud, a rich management platform for your infrastructure as code, which includes a forever free…" → ✅ verified (evidence: The /product/pulumi-service/ URL is a live alias resolving to the Pulumi Cloud product page (content/product/_index.md lists it under aliases:). The pricing FAQ confirms: "Pulumi Cloud is free to use, now and forever, for…; source: repo:content/product/_index.md (aliases including /product/pulumi-service/); repo:content/pricing/_index.md ("Pulumi Cloud is free to use, now and forever, for individuals"))

  • L24 in content/blog/pulumi-ai-new/index.md "Pulumi AI is heavily used by many of the most advanced IaC users and organizations to quickly discover solutions to new problems." → 🤷 unverifiable (evidence: This is a subjective marketing assertion about usage patterns of Pulumi AI ("heavily used by many of the most advanced IaC users") with no measurable anchor (no percentage, count, or named source). There is no external or internal data…; source: content/blog/pulumi-ai-new/index.md (self-referential marketing claim); intuition: Vague, unfalsifiable superlative language ("heavily used", "most advanced users") typical of marketing copy rather…)

  • L24 in content/blog/pulumi-ai-new/index.md "Pulumi recently launched Pulumi AI Answers pages containing thousands of AI-generated answers to common questions." → ✅ verified (evidence: Sibling blog posts confirm the Pulumi AI Answers feature launch: pulumi-release-notes-99 has a section titled "Pulumi AI Answers", and the-present-and-future-of-ai-and-iac states "With Pulumi AI Answers, we've made answers to many of the…; source: gh search code --owner pulumi "AI Answers" (pulumi/docs content/blog/pulumi-release-notes-99/index.md, content/blog/the-present-and-future-of-ai-and-iac/index.md))

  • L24 in content/blog/pulumi-ai-new/index.md "Pulumi has made improvements to Pulumi AI's code generation correctness over the last few months." → ➖ not-a-claim (evidence: This is a general, non-falsifiable statement about the author's own product development ("Pulumi has made improvements... over the last few months") within Pulumi's own blog post about Pulumi AI — a faithful description of the author's…; source: content/blog/pulumi-ai-new/index.md)

  • L24 in content/blog/pulumi-ai-new/index.md "Pulumi Neo is a purpose-built AI assistant that can create infrastructure as code (IaC) from natural language prompts using Pulumi." → ✅ verified (framing: Source says Neo "investigates...and can propose changes to your IaC code" (broader agent capability); claim narrows this to "create IaC from natural language…; evidence: The linked /product/neo/ content maps to content/docs/ai/neo/_index.md, whose meta description states: "Pulumi Neo is a purpose-built infrastructure agent that investigates your live infrastructure, explains what it finds, and can…; source: repo:content/docs/ai/neo/_index.md)

  • L26 in content/blog/pulumi-ai-new/index.md "Pulumi is introducing support for deploying cloud infrastructure directly from Pulumi AI." → ➖ not-a-claim (evidence: This is the blog post's own announcement of its own feature launch ("Today, we are taking the next big step, introducing support for deploying cloud infrastructure directly from Pulumi AI"), further detailed in the post via the `pulumi…; source: content/blog/pulumi-ai-new/index.md)

  • L93 in content/blog/pulumi-ai-new/index.md "Pulumi AI is an AI-powered assistant that generates infrastructure as code (IaC) from natural language prompts." → ➖ not-a-claim (evidence: The line is the blog post's own FAQ definition of its subject, consistent with the post's earlier description: "a purpose-built AI assistant that can create infrastructure as code (IaC) from natural language prompts using Pulumi." This…; source: repo:content/blog/pulumi-ai-new/index.md)

  • L52 in content/blog/pulumi-ai/index.md "Typing 'run Metabase in Azure' into Pulumi AI produces a working starting point in seconds." → ➖ not-a-claim (evidence: The line is the blog author's first-person narrative account of their own experience using Pulumi AI ("I can just type 'run Metabase in Azure' into Pulumi AI and get an excellent starting point in seconds"), illustrated with an…; source: repo:content/blog/pulumi-ai/index.md)

  • L84-86 in content/blog/pulumi-ai/index.md "Kelsey Hightower posted a tweet on the day Pulumi AI launched stating: 'If you're using generative AI tools to write infrastructure code, or YAML files…" → ❌ contradicted (framing: shifted — Pulumi's own blog attributes a quote about templates/code complementarity to Hightower's day-of-launch comment, while the claim attributes a…; evidence: Pulumi's own blog post about the Pulumi AI launch quotes Kelsey Hightower's day-of-launch comment with entirely different wording: "Kelsey Hightower mentioned this on the day that Pulumi AI launched: We believe that fundamentally, both…; source: https://www.pulumi.com/blog/pulumi-ai/; intuition: The quoted tweet text could not be located verbatim on any live source; the claim's exact wording diverges from the…)

  • L86 in content/blog/pulumi-ai/index.md "Kelsey Hightower's tweet (status ID 1646538701818986501) states: 'If you're using generative AI tools to write infrastructure code, or YAML files, that's a…" → 🤷 unverifiable (evidence: (escalated from pass1) Web searches for the specific tweet ID (1646538701818986501) and for phrases from the quoted text did not return the actual tweet content; Twitter/X's search indexing and platform changes make the original tweet…; source: WebSearch ran query "1646538701818986501" and "Kelsey Hightower wrong level of abstraction template infrastructure code"; top results didn't surface the tweet content; intuition: Could not confirm the tweet exists at this exact status ID or that the quoted wording is verbatim; deleted/archived…)

  • L11 in content/blog/pulumi-bloggers-oct-2019/index.md "Pulumi can be used for a range of common tasks such as standardizing VPC builds, building VSphere virtual machines, or deploying infrastructure from a CI/CD…" → ✅ verified (evidence: Pulumi maintains an official vSphere provider (pulumi/pulumi-vsphere, @pulumi/vsphere package "for creating vsphere resources"), and Pulumi's AWS/cloud providers support VPC resource management, plus CI/CD pipeline usage is a…; source: gh search code --owner pulumi vsphere (pulumi/pulumi-vsphere:sdk/nodejs/package.json))

  • L15 in content/blog/pulumi-bloggers-oct-2019/index.md "The CircleCI-on-GKE tutorial builds a container with a Pulumi project containing a sample app written in Python that deploys Kubernetes." → ✅ verified (evidence: The blog post itself states: "The tutorial builds a container with a Pulumi project with a sample app written in Python that deploys Kubernetes," which matches the claim verbatim (minor rewording "with a" vs "containing a"). This is a…; source: repo:content/blog/pulumi-bloggers-oct-2019/index.md)

  • L15 in content/blog/pulumi-bloggers-oct-2019/index.md "Angel Rivera's step-by-step tutorial is published at https://circleci.com/blog/automate-releases-from-pipelines-using-infrastructure-as-code/." → ✅ verified (evidence: The cited URL returns HTTP 200 and is a CircleCI blog post titled "Automating Python app releases with Pulumi and IaC," matching the claim that a step-by-step tutorial is published at that URL.; source: https://circleci.com/blog/automate-releases-from-pipelines-using-infrastructure-as-code/)

  • L31 in content/blog/pulumi-bloggers-oct-2019/index.md "Cody De Arkland demonstrated how to create a VMware vSphere virtual machine using Pulumi by adding a ResourcePool, DataStore, NetworkStore, and the virtual…" → 🤷 unverifiable (framing: Profile landing page does not contain the specific tweet/content being attributed, so exact-match/overclaim cannot be assessed.; evidence: The cited URL is just Cody De Arkland's Twitter/X profile page (bio only), not a specific tweet or blog post about vSphere VM creation with Pulumi; it contains no content confirming or denying the specific claim about ResourcePool…; source: https://twitter.com/Codydearkland)

  • L31 in content/blog/pulumi-bloggers-oct-2019/index.md "Cody De Arkland stated in his post that the post is not an endorsement but a call to explore new tools." → ✅ verified (framing: Claim restates the Pulumi blog's paraphrase of Cody De Arkland's caveat verbatim in substance; original third-party post not independently fetched but the…; evidence: The Pulumi blog post states: "We like Cody's caveat that his post is not an endorsement but call to explore new tools," directly attributing this framing to Cody De Arkland's original post at thehumblelab.com, which the Pulumi post links…; source: content/blog/pulumi-bloggers-oct-2019/index.md, line 31)

  • L33 in content/blog/pulumi-bloggers-oct-2019/index.md "An attributed quote states: 'Infrastructure as Code tools like Pulumi (and others in the space, i.e. Terraform from HashiCorp) add a ton of value on top of…" → ✅ verified (evidence: The blog file contains the exact blockquote at line 33: "Infrastructure as Code tools like Pulumi (and others in the space, i.e. Terraform from HashiCorp) add a ton of value on top of traditional deployment methods... Being able to…; source: repo:content/blog/pulumi-bloggers-oct-2019/index.md)

  • L24 in content/blog/pulumi-copilot/index.md "AI is transforming how users interact with every category of technology today, and cloud infrastructure is no exception. Last year we launched [Pulumi…" → ✅ verified (evidence: Pulumi AI blog post is dated April 27, 2023, and the Pulumi Copilot blog post announcing this claim is dated June 12, 2024 — so "last year we launched Pulumi AI" correctly refers to the 2023 launch relative to the 2024 publish date.…; source: https://www.pulumi.com/blog/pulumi-ai/)

  • L11 in content/blog/pulumi-kubernetes-new-2022/index.md "Pulumi's Universal Infrastructure as Code platform can bring infrastructure as code tools and practices to Kubernetes projects and teams." → ➖ not-a-claim (evidence: This is a general marketing/positioning statement describing Pulumi's own product philosophy ("Universal Infrastructure as Code platform" bringing IaC to Kubernetes), not a specific, falsifiable technical assertion with a checkable…; source: content/blog/pulumi-kubernetes-new-2022/index.md)

  • L235 in content/blog/pulumi-kubernetes-new-2022/index.md "The Flux provider can be used along with the Kubernetes provider and GitHub provider to stand up and manage a complete end-to-end GitOps solution from within…" (also L237) → ✅ verified (evidence: The blog post itself states: "The Flux provider can be used along with the Kubernetes provider and GitHub provider to stand up and manage a complete E2E GitOps solution from within a single deployment - no need for manual bash, Helm, or…; source: repo:content/blog/pulumi-kubernetes-new-2022/index.md (line 237))

  • L237 in content/blog/pulumi-kubernetes-new-2022/index.md "The Flux provider can be used along with the Kubernetes provider and GitHub provider to stand up and manage a complete end-to-end GitOps solution from within…" → ✅ verified (framing: Claim paraphrases "E2E" as "end-to-end" and "single deployment" as "single Pulumi deployment" — same assertion, no scope change.; evidence: The blog post's own text (same file, line 237) states: "The Flux provider can be used along with the Kubernetes provider and GitHub provider to stand up and manage a complete E2E GitOps solution from within a single deployment - no need…; source: repo:content/blog/pulumi-kubernetes-new-2022/index.md (line 237) and registry link https://www.pulumi.com/registry/packages/flux/)

  • L273-274 in content/blog/pulumi-kubernetes-new-2022/index.md "Removing the dependency on the last-applied-configuration annotation fixes a number of subtle issues that users of the Pulumi Kubernetes provider previously…" → ✅ verified (evidence: GitHub issue search on pulumi/pulumi-kubernetes for the "last-applied-configuration" label shows numerous distinct bugs tied to that annotation (e.g. Move latest docs to production #1048 "Resources with long manifests cannot be created due to too long…; source: gh search issues --repo pulumi/pulumi-kubernetes "last-applied-configuration")

  • L276 in content/blog/pulumi-kubernetes-new-2022/index.md "The new Pulumi Kubernetes provider features (upsert support and diffs independent of last-applied-configuration annotation) make Pulumi's infrastructure as…" → ✅ verified (evidence: The official Pulumi blog post states: "These features bring Pulumi and Kubernetes even closer together, enabling Pulumi's rich Infrastructure as Code to fit even more naturally into the Kubernetes desired state and shared ownership…; source: https://www.pulumi.com/blog/pulumi-kubernetes-new-2022/)

  • L278 in content/blog/pulumi-kubernetes-new-2022/index.md "There is a 'Managing Resources with Server Side Apply' article at https://www.pulumi.com/registry/packages/kubernetes/how-to-guides/managing-resources-with-ser…" → ✅ verified (evidence: The URL https://www.pulumi.com/registry/packages/kubernetes/how-to-guides/managing-resources-with-server-side-apply/ is referenced consistently across pulumi-kubernetes CHANGELOG ("See the [how-to guide]... for additional information…; source: gh search code --owner pulumi "managing-resources-with-server-side-apply" (pulumi/pulumi-kubernetes CHANGELOG.md, sdk/*, pulumi/docs content/topics/kubernetes.md))

  • L282 in content/blog/pulumi-kubernetes-new-2022/index.md "At Pulumi, we are passionate about pushing the state of the art of infrastructure as code forward, and applying modern infrastructure as code to support…" → ➖ not-a-claim (evidence: This is a subjective statement of Pulumi's own mission/vision ("we are passionate about pushing the state of the art...") rather than a falsifiable factual assertion about a third party or measurable fact.; source: content/blog/pulumi-kubernetes-new-2022/index.md)

  • L284 in content/blog/pulumi-kubernetes-new-2022/index.md "Pulumi worked with the Flux project to bring the benefits of its composable GitOps toolkit to Pulumi users." → ✅ verified (evidence: The post, co-authored by michael-bridgen (a Flux/Flagger maintainer), states: "We're excited to work with Flux, a CNCF project, to bring even richer GitOps support to the Pulumi Kubernetes Operator... we chose to provide rich integration…; source: repo:content/blog/pulumi-kubernetes-new-2022/index.md)

  • L284 in content/blog/pulumi-kubernetes-new-2022/index.md "The Pulumi Kubernetes Operator supports Inline Infrastructure, enabling new use cases." → ✅ verified (evidence: The Pulumi Kubernetes Operator repo defines a pulumi.com/v1/Program CRD described as "Program is the schema for the inline YAML program API," confirming inline infrastructure support referenced in the blog post ("Support for Inline…; source: gh search code --owner pulumi repo:pulumi/pulumi-kubernetes-operator "Inline"; operator/api/pulumi/v1/program_types.go)

  • L29 in content/blog/pulumi-loves-python/index.md "Python has grown rapidly for defining and building infrastructure as code across any cloud, according to Pulumi." → ➖ not-a-claim (evidence: The claim is explicitly attributed to Pulumi itself ("according to Pulumi") and is a subjective positioning/marketing statement about Python's growth in IaC, not a falsifiable third-party fact requiring external verification.; source: content/blog/pulumi-loves-python/index.md)

  • L79 in content/blog/pulumi-loves-python/index.md "Pulumi has always had a focus on making infrastructure as code feel like idiomatic code." → ➖ not-a-claim (evidence: This is a subjective positioning/marketing statement about Pulumi's own long-standing design philosophy, not a falsifiable technical claim with a specific external source to verify against.; source: content/blog/pulumi-loves-python/index.md)

  • L81 in content/blog/pulumi-loves-python/index.md "Python's TypedDict types are described in PEP 589." → ✅ verified (evidence: PEP 589, titled "TypedDict: Type Hints for Dictionaries with a Fixed Set of Keys," is the official Python Enhancement Proposal that introduced and specifies the TypedDict construct, accepted and incorporated into the typing module. This…; source: https://peps.python.org/pep-0589/)

  • L81 in content/blog/pulumi-loves-python/index.md "Dictionary-based inputs in Pulumi's Python SDK are more idiomatic than strongly typed argument classes but lack type hints (prior to the described improvement)." → ✅ verified (evidence: The blog states: "You can use strongly typed, but verbose, argument classes, or you can use dictionaries, which are more idiomatic, but lack type hints." This is corroborated by Pulumi changelogs (v3.121.0, v3.127.0, v3.134.0)…; source: repo:pulumi/pulumi changelog/v3.121.0.md, v3.127.0.md, v3.134.0.md ("Generate TypedDict types for inputs"); content/blog/pulumi-loves-python/index.md L81)

  • L96 in content/blog/pulumi-release-notes-106/index.md "The Pulumi Service Provider enables management of an entire infrastructure and application landscape through a unified approach." → ✅ verified (evidence: Pulumi's own blog states: "Bringing Pulumi ESC Environments support into the Pulumi Service Provider empowers you to manage your entire infrastructure and application landscape through a unified approach."; source: https://www.pulumi.com/blog/esc-automation-api-pulumi-service-provider-launch/)

  • L96 in content/blog/pulumi-release-notes-106/index.md "The pulumiservice provider's registry documentation defines a 'teamenvironmentpermission' resource at /registry/packages/pulumiservice/api-docs/teamenvironment…" → ✅ verified (evidence: The pulumiservice provider schema defines pulumiservice:index:TeamEnvironmentPermission as a resource (confirmed in pulumi/pulumi-pulumiservice schema.json, provider.go, and SDKs), and the sibling launch blog post at…; source: gh search code TeamEnvironmentPermission --owner pulumi (pulumi/pulumi-pulumiservice schema.json, provider.go; pulumi/docs content/blog/esc-automation-api-pulumi-service-provider-launch/index.md))

  • L132 in content/blog/pulumi-release-notes-106/index.md "Pulumi programs referenced by ADE YAML configuration files can be written in .NET, TypeScript, Python, Go, or YAML." → ✅ verified (evidence: The linked blog post (content/blog/azure-deployment-environments/index.md) confirms: "This is all you need to define a Pulumi environment in ADE. If you prefer to use a programming language like C#, TypeScript, Python, or Go, you will…; source: pulumi/docs:content/blog/azure-deployment-environments/index.md; pulumi/azure-deployment-environments repo contents)

  • L132 in content/blog/pulumi-release-notes-106/index.md "ADE provisions the defined Azure resources after executing the selected Pulumi program via the dedicated Pulumi Docker image." → ✅ verified (evidence: The dedicated ADE blog post confirms this exact mechanism: "The Azure Deployment Environments and Pulumi teams collaborated to publish a standard container image... [used] to run Pulumi programs in ADE... After accepting parameter…; source: content/blog/azure-deployment-environments/index.md)

  • L132 in content/blog/pulumi-release-notes-106/index.md "A blog post at /blog/azure-deployment-environments/ provides a detailed walkthrough and examples of using Pulumi with Azure Deployment Environments." → ✅ verified (evidence: The post at content/blog/azure-deployment-environments/index.md exists and matches the description: it walks through creating ADE environment definitions with Pulumi, including sample environment.yaml/Pulumi.yaml code, links to sample…; source: repo:content/blog/azure-deployment-environments/index.md)

  • L132 in content/blog/pulumi-release-notes-106/index.md "The Pulumi and Azure Deployment Environments integration allows users to leverage Pulumi's programming model and infrastructure as code platform to define…" → ✅ verified (framing: Source confirms ADE's extensibility model supports Pulumi custom images (a specific mechanism); claim's general description of using Pulumi's IaC platform…; evidence: The Azure Deployment Environments docs page lists "Create a Pulumi custom image" under Customize deployments with the extensibility model, confirming ADE supports Pulumi as an IaC integration for defining environments, consistent with…; source: https://learn.microsoft.com/en-us/azure/deployment-environments/)

  • L440 in content/blog/pulumi-universal-iac/index.md "We’re incredibly excited about today’s launches, but also see an amazing opportunity ahead to continue to drive new innovation in infrastructure as code and…" → ➖ not-a-claim (evidence: This is closing marketing/editorial language expressing excitement about the blog post's own launches, not a falsifiable factual assertion.; source: content/blog/pulumi-universal-iac/index.md)

  • L218 in content/blog/pulumi-yaml-ga/index.md "The GA of Pulumi YAML marks a stable foundation for the simple, declarative YAML interface to the Pulumi ecosystem. We’re excited to see YAML support expand…" → ➖ not-a-claim (evidence: This is the blog post's own concluding/editorial summary of its own GA announcement ("The GA of Pulumi YAML marks a stable foundation...") — a faithful restatement of the author's own product messaging, not a falsifiable third-party…; source: repo:content/blog/pulumi-yaml-ga/index.md)

  • L38 in content/blog/puluminaries-program/index.md "Similar to how other ambassador programs bring together dedicated advocates around a specific focus, the Pulumi Puluminaries 2.0 Program unites a community…" → ✅ verified (evidence: The official Pulumi blog post "Introducing the Pulumi Puluminaries 2.0 Program" contains this exact sentence verbatim: "Similar to how other ambassador programs bring together dedicated advocates around a specific focus, the Pulumi…; source: https://www.pulumi.com/blog/puluminaries-program/)

  • L231 in content/blog/python-for-devops/index.md "While most tools in this list excel at quick solutions, infrastructure demands a more robust approach. This is where Pulumi stands apart. It's not just…" → ➖ not-a-claim (evidence: This is subjective marketing/positioning language ("stands apart", "enterprise-grade", "not just another scrappy tool") describing the author's own framing of Pulumi versus other tools in the blog post's list — not a falsifiable…; source: content/blog/python-for-devops/index.md)

  • L22 in content/blog/python-uv-toolchain/index.md "Continuing our work to bring the best of modern Python to infrastructure as code, we are excited to announce built-in support…" → 🤷 unverifiable (evidence: The pre-fetched uv docs homepage (https://docs.astral.sh/uv/) is a navigation/TOC page and does not contain a verbatim benchmark claim of "up to 100x faster" performance; the specific speed comparison figure is not present in the fetched…; source: https://docs.astral.sh/uv/; intuition: The "100x faster" figure is a commonly cited uv benchmark (vs pip, without caching) but the linked page here is the…)

  • L212 in content/blog/the-guide-platform-engineering-idp-steps-best-practices/index.md "For a more in-depth explanation, see the What is infrastructure as code? page." → ✅ verified (evidence: The cited URL resolves (HTTP 200) and is Pulumi's "What is infrastructure as code?" page, which matches the link text and purpose described in the claim ("Infrastructure as code (IaC) provisions cloud infrastructure through versioned…; source: https://www.pulumi.com/what-is/what-is-infrastructure-as-code/)

  • L114 in content/blog/the-present-and-future-of-ai-and-iac/index.md "We’re hard at work on all of these at Pulumi, and excited to see all of the innovation across the industry to build the future of AI-enabled cloud…" → ➖ not-a-claim (evidence: This is a call-to-action link within Pulumi's own blog pointing to its own product pages (/ai/ and /solutions/ai/), both of which exist and describe Pulumi's own AI offerings. It's a self-referential promotional link, not a falsifiable…; source: https://www.pulumi.com/ai)

  • L31 in content/blog/upcoming-events-2021-jan-march/index.md "If you're new to infrastructure as code, this workshop is for you. You will learn the fundamentals of infrastructure as code through a series of guided…" → ➖ not-a-claim (evidence: This is promotional/descriptive text about the PR author's own workshop content in a 2021 events blog post, not a falsifiable third-party claim.; source: content/blog/upcoming-events-2021-jan-march/index.md)

  • L45 in content/blog/using-pulumi-securely/index.md "Connect your user and Pulumi organization with an Identity Provider…" → ❌ contradicted (framing: superseded — the previous pass verified this against the pre-rebase repo state, where the alias was the only link form in play; master has since retargeted the whole sentence at the current Identity Providers page, and the rebase put the alias form back.; evidence: content/docs/administration/organizations-teams/ does not exist; the path survives only as an alias on content/docs/administration/concepts/organizations.md, which carries ## Organization identity providers (L171) but none of #github-identity-provider, #gitlab-identity-provider, #bitbucket-identity-provider, or #saml-single-sign-on-sso. The live headings are on content/docs/administration/concepts/identity-providers.md as ## GitHub, ## GitLab, ## Bitbucket, ## SAML 2.0.; source: repo:content/docs/administration/concepts/organizations.md (aliases + headings); repo:content/docs/administration/concepts/identity-providers.md (headings); git show FETCH_HEAD:content/blog/using-pulumi-securely/index.md)

  • L151 in content/blog/yaml-terraform-pulumi-whats-the-smart-choice-for-deployment-automation-with-kubernetes/index.md "Terraform is an infrastructure as code tool. It lets you define and manage your infrastructure in a declarative way. It uses a…" → ✅ verified (framing: Source broadly markets Terraform as an infrastructure-as-code product; claim's more detailed description (declarative, HCL) is well-established…; evidence: The cited terraform.io homepage (HTTP 200) confirms Terraform is HashiCorp's infrastructure lifecycle management product, described as a way to "Manage infrastructure as code" — consistent with the claim's description of Terraform as a…; source: https://www.terraform.io/)

  • L286 in content/blog/yaml-terraform-pulumi-whats-the-smart-choice-for-deployment-automation-with-kubernetes/index.md "Last but not least, let's have a look at Pulumi. Pulumi is an infrastructure as code tool. It lets you define and manage your Kubernetes objects using…" → ✅ verified (evidence: The /docs/iac/languages-sdks/ page confirms: "Pulumi supports TypeScript, JavaScript, Python, Go, .NET, Java, YAML, and HCL" - matching the claim's listed languages (Python, Go, TypeScript, JavaScript, .NET).; source: repo:content/docs/iac/languages-sdks/_index.md)

  • L18 in content/blog/aws-proton-pulumi/index.md "Today, AWS [announced support]" → 🚩 flagged (readthrough: orphaned-structure)

  • L43-178 in content/blog/cloud-systems-part-one/index.md "There are a lot of ways to provision an S3 bucket and set its permissions, but for this I’m going to use Pulumi" → 🚩 flagged (readthrough: missing-step)

  • L43 in content/blog/cloud-systems-part-one/index.md "the syntax will be more familiar for developers" → 🚩 flagged (readthrough: prerequisite-inversion)

  • L243-331 in content/blog/codegen-learnings/index.md "<!--raw material" → 🚩 flagged (readthrough: orphaned-structure)

  • L20 in content/blog/converting-full-terraform-programs-to-pulumi/index.md "The new support in pulumi convert builds upon Pulumi's CrossCode foundations for providing universal infrastructure as code support across a wide variety of p" → 🚩 flagged (readthrough: prerequisite-inversion)

  • L54-142 in content/blog/copilot-in-vscode/index.md "Note: This post discusses Pulumi Copilot, which Pulumi Neo has replaced. The Pulumi Copilot Chat extension for VS Code is deprecated — instead, run [Neo directl" → 🚩 flagged (readthrough: orphaned-structure)

  • L126-127 in content/blog/future-cloud-infrastructure-10-trends-shaping-2024-and-beyond/index.md "Data pipelines, vector databases, and feature stores needed for real-time AI workloads" → 🚩 flagged (readthrough: self-redundancy)

  • L95 in content/blog/going-beyond-with-advanced-infrastructure-as-code-use-cases/index.md "The scenarios this unlocks are mentioned earlier — custom tools and libraries, internal infrastructure provisioning portals, and even entire SaaS products" → 🚩 flagged (readthrough: prerequisite-inversion)

  • L13 in content/blog/automation-api/index.md "casing sweep applied to only part of the paragraph — 'Today's [Infrastructure as Code] platforms' left capitalized while 'modern infrastructure as code tools' was lowercased on the same line" → ⚔️ mismatch (evidence: the edited line now carries both casings; link anchor text was lowercased in the same PR at content/blog/automatically-enforcing-aws-resource-tagging-policies/index.md L11 and content/blog/going-beyond-with-advanced-infrastructure-as-code-use-cases/index.md L18; source: gh pr diff 21125)

  • L25 in content/blog/going-beyond-with-advanced-infrastructure-as-code-use-cases/index.md "'Many Infrastructure as Code solutions' and 'Every Infrastructure as Code tool' left capitalized while 'as defined by your infrastructure as code' was lowercased in the same paragraph" → ⚔️ mismatch (evidence: single edited line contains all three occurrences with mixed casing; source: gh pr diff 21125)

  • L81 in content/blog/going-beyond-with-advanced-infrastructure-as-code-use-cases/index.md "'Adopting Infrastructure as Code helps you to do two things' left capitalized while 'a core strength of infrastructure as code' was lowercased in the same sentence pair" → ⚔️ mismatch (evidence: single edited line contains both casings; source: gh pr diff 21125)

  • L81 in content/blog/infrastructure-as-code-in-any-programming-language/index.md "'Some Infrastructure as Code tools support just one cloud' left capitalized while 'a single infrastructure as code program' was lowercased on the same line" → ⚔️ mismatch (evidence: single edited line contains both casings; source: gh pr diff 21125)

  • L24 in content/blog/infrastructure-as-code-in-any-programming-language/index.md "'Infrastructure as Code lets us, as engineers, use familiar techniques' left capitalized while 'that's where infrastructure as code can help' was lowercased on the same edited line" → ⚔️ mismatch (evidence: the edited line carries both casings; missed by the initial pass and unchanged by the fix push; source: gh pr diff 21125; repo:content/blog/infrastructure-as-code-in-any-programming-language/index.md L24)

  • L48 in content/blog/visual-import/index.md "'within the Pulumi Cloud Console' left capitalized after the identical phrase was corrected to 'Pulumi Cloud console' on L90" → ⚔️ mismatch (evidence: grep -n "Pulumi Cloud Console" content/blog/visual-import/index.md returns L48 only; L90 corrected in e932545; vale lints changed lines only, so L48 never surfaced as a blocker; source: repo:content/blog/visual-import/index.md)

  • L11, L27, L31 in content/blog/pulumi-bloggers-oct-2019/index.md "VMware spells the product 'vSphere'; all three occurrences on lines this PR touches read 'VSphere', including the two the fix push just edited to correct 'VMWare'" → ⚔️ mismatch (evidence: grep -n "phere" content/blog/pulumi-bloggers-oct-2019/index.md returns L11, L27, L31, all three VSphere; gh pr diff 21125 shows L11, L27, L31 are all + lines in this PR. Site-wide the correct form is dominant: grep -rno "vSphere" content/ --include=*.md | wc -l → 15 vs VSphere → 4. Vale's ThirdPartyNames.yml covers VMWare but not VSphere, which is why the blocker tier didn't surface it.; source: repo:content/blog/pulumi-bloggers-oct-2019/index.md; gh pr diff 21125)

  • meta_desc in 5 changed files "mid-sentence Infrastructure as Code survives in frontmatter meta_desc on files whose bodies this PR swept" → ⚔️ mismatch (evidence: sweeping ^meta_desc across the 64 changed files returns 6 hits — ai-ml-on-kubernetes-google-cloud-llm-rag, going-beyond-with-advanced-infrastructure-as-code-use-cases, infrastructure-as-code-in-any-programming-language, pulumi-bloggers-oct-2019, the-present-and-future-of-ai-and-iac, and pulumi-universal-iac (the last correctly capitalized: "Universal Infrastructure as Code" is Pulumi's branded phrase). The body of each of the other five was re-cased by this PR.; source: gh pr view 21125 --json files + grep -n "^meta_desc.*Infrastructure as Code")

  • L45 in content/blog/using-pulumi-securely/index.md "rebase conflict resolution kept the branch's copy of the line and discarded master's, reverting five identity-provider links and the sentence spacing" → ⚔️ mismatch (evidence: case-normalized comparison of all 119 changed lines against master returns exactly two non-casing changes; this is one of them, and it carries no casing change at all — master already reads "your infrastructure as code" here, so the hunk's entire content is the revert. git show FETCH_HEAD:content/blog/using-pulumi-securely/index.md L45 uses /docs/administration/concepts/identity-providers/{,#github,#gitlab,#bitbucket,#saml-20} and single sentence spacing; HEAD L45 uses the organizations-teams alias with four nonexistent anchors and restores the double spaces.; source: gh pr diff 21125; git show FETCH_HEAD:content/blog/using-pulumi-securely/index.md)

📊 Editorial balance

Section depth, mention distribution, recommendation steering
  • Section depth: 4 H2 sections (mean 21 lines, median 9.5, std 22.7). Outliers: Deploying AI/ML Workloads on Kubernetes: 60 (6.3× median).
  • Vendor / entity mentions: Pulumi: 31 · Kubernetes: 26 · Google Cloud: 11 · GKE: 4 · Terraform: 0 · AWS: 0 · Azure: 0. Single-subject post (Pulumi + GKE) with no competitor comparison — no imbalance to flag.
  • The one section-depth outlier ("Deploying AI/ML Workloads on Kubernetes", 60 lines, 6.3× median) is the post's walkthrough section carrying all the code samples; the surrounding sections are framing. Expected shape for a tutorial-style post, not flagged. Neither this nor the mention distribution is affected by this PR, which changes casing only.

🚨 Outstanding in this PR

No outstanding findings in this PR.

⚠️ Low-confidence

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

  • [L19] content/blog/automatically-enforcing-aws-resource-tagging-policies/index.md"Not all AWS resources are taggable, although the most important ones are." — verdict: unverifiable. "The most important ones" has no objective referent, and AWS publishes no such ranking. Pre-existing 2019 prose on a line this PR only re-cased, so nothing here blocks the merge — but if you want to tighten it later, "Not every AWS resource is taggable; see AWS's list of taggable resource types" says the same thing with a citation. Author question: is there a source behind "the most important ones," or is it authorial judgment?

  • [L12] content/blog/gartner-cool-vendor-award/index.md"Pulumi was named one of only three vendors in the 2020 Gartner Cool Vendor for Agile and DevOps report, published on May 28th, 2020." — verdict: framing-drift; framing: Source confirms recognition and date but does not mention total number of vendors named in the report; claim adds "only three vendors" which is unsupported… The cited press release confirms the recognition and the May 28, 2020 date but never states how many vendors the report named, so "one of only three vendors" is asserting something the source doesn't carry. Safest rewrite that keeps the point: "Pulumi is honored to be named a Cool Vendor in the 2020 Gartner Cool Vendor for Agile and DevOps report, published on May 28, 2020." Not promoted to 🚨: this is 2020 prose on a line the sweep only re-cased, and the phrasing doesn't ride any social.* frontmatter. Author question: does anyone still have the original report to confirm the three-vendor count?

  • [L18] content/blog/gartner-cool-vendor-award/index.md"To be named a Gartner Cool Vendor, a product must be considered innovative, impactful, and intriguing." — verdict: framing-drift; framing: Source: vendor must be "innovative, impactful, or intriguing" (disjunctive, any one suffices); claim: "must be considered innovative, impactful, and… Gartner's own published criteria use "or" — any one of the three traits suffices — so "and" turns a disjunctive bar into a conjunctive one and overstates the award. One-word fix on L18: "To be a Gartner Cool vendor, a product must be considered innovative, impactful, or intriguing." Note this is a context line the sweep didn't touch (its edits in this file are L12 and L20), so it's optional here; not promoted to 🚨 for that reason.

  • [L35] content/blog/gartner-cool-vendor-award/index.md"Hundreds of organizations worldwide have decided to run their production infrastructure using Pulumi." — verdict: unverifiable. An uncited customer-count claim from 2020; no public figure confirms or refutes it. Pre-existing and almost certainly understated today, so it doesn't block this PR — flagged only so it's on record if this post is ever refreshed.

  • [L67] content/blog/going-beyond-with-advanced-infrastructure-as-code-use-cases/index.md"Pulumi Cloud supports integrating policy as code with cost management or ticketing systems like ServiceNow to enforce IT policies." — verdict: framing-drift; framing: overclaim — source supports "policies can be written in general-purpose languages" (which theoretically permits any API call); claim states Pulumi Cloud… No Pulumi surface — docs, registry, or SDKs — names a ServiceNow or cost-management integration for policy as code. What's actually true is that policies are written in general-purpose languages, so they can call out to those systems. The source sentence already hedges better than the extracted claim does ("enables advanced use cases like integrating with…"), so if you want to tighten it, "…enables advanced use cases such as calling out to cost management or ticketing systems like ServiceNow" removes the implication of a built-in integration. Untouched context line; optional.

  • [L79] content/blog/join-pulumi-user-group-community/index.md"During the meetup, attendees heard from several speakers, including Joe Duffy, Co-Founder & CEO at Pulumi, who was there to speak about infrastructure as…" — verdict: unverifiable. The sentence links to the Pulumi Insights announcement post, which says nothing about a London user-group meetup or Joe Duffy speaking there, so the link doesn't support the surrounding narrative. Pre-existing; not introduced here. Author question: was a different post (or a recap/recording) intended as the link target?

  • [L17] content/blog/maximize-speed-scale-savings-multi-cloud-platform/index.md"Hundreds of thousands of developers across the globe already rely on Pulumi to drive more scalable, repeatable deployments in large self-managed production…" — verdict: unverifiable. "Hundreds of thousands of developers" is an uncited internal figure with no public dataset behind it. Pre-existing marketing copy on a re-cased line; noted, not blocking.

  • [L24] content/blog/pulumi-ai-new/index.md"Pulumi AI is heavily used by many of the most advanced IaC users and organizations to quickly discover solutions to new problems." — verdict: unverifiable. "Heavily used by many of the most advanced IaC users" has no measurable anchor — no count, no share, no named source. Pre-existing; noted, not blocking.

  • [L22] content/blog/python-uv-toolchain/index.md"Continuing our work to bring the best of modern Python to infrastructure as code, we are excited to announce built-in support…" — verdict: unverifiable. The speed figure attributed to uv on this line isn't stated on the linked page (https://docs.astral.sh/uv/), which is a navigation index. uv's benchmark claims live on its README / benchmarks page, so pointing there instead would make the number checkable. Pre-existing; not introduced by this PR.

  • [meta_desc] 5 changed files — the sweep stopped at the body; meta_desc still capitalizes mid-sentence. Each of these files had its body re-cased by this PR, but the frontmatter description — which is what renders in search results and social cards — kept the old form:

    • ai-ml-on-kubernetes-google-cloud-llm-rag/index.md"…scaling with Infrastructure as Code for seamless ML ops"
    • going-beyond-with-advanced-infrastructure-as-code-use-cases/index.md"Explore advanced Infrastructure as Code (IaC) with Pulumi…"
    • infrastructure-as-code-in-any-programming-language/index.md"That's where Infrastructure as Code can help."
    • pulumi-bloggers-oct-2019/index.md"Some of our favorite recent community posts about Infrastructure as Code."
    • the-present-and-future-of-ai-and-iac/index.md"The future of AI and Infrastructure as Code (IaC)…"

    Not promoted to 🚨 because the PR's stated scope is mid-sentence casing in blog bodies, and extending it into frontmatter is a scope call that's yours to make — taking them is five one-line edits, deferring them to a follow-up is equally defensible. pulumi-universal-iac/index.md also matches the grep and is correct as-is ("Universal Infrastructure as Code" is Pulumi's branded phrase); post titles in title case are fine too. Author question: was frontmatter deliberately left out of this sweep?

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/any-terraform-provider/index.md
  • line 137: [style] spacing — 'e. I' should have one space. ✏️
  • line 137: [style] wordiness — 'benefit from' is too wordy. ✏️
  • line 137: [style] difficulty qualifier — Avoid difficulty qualifier 'easily' -- it judges difficulty for the reader (brand guide: voice, words and phrases). ✏️
  • line 137: [style] wordiness — 'all of' is too wordy. ✏️
content/blog/automatically-enforcing-aws-resource-tagging-policies/index.md
  • line 11: [style] wordiness — 'all of' is too wordy.
  • line 11: [style] wordiness — 'in addition' is too wordy.
  • line 19: [style] difficulty qualifier — Avoid difficulty qualifier 'easy' -- it judges difficulty for the reader (brand guide: voice, words and phrases).
content/blog/automation-api/index.md
  • line 15: [style] difficulty qualifier — Avoid difficulty qualifier 'just' -- it judges difficulty for the reader (brand guide: voice, words and phrases).
content/blog/celebrating-20k-stars/index.md
  • line 22: [style] difficulty qualifier — Avoid difficulty qualifier 'just' -- it judges difficulty for the reader (brand guide: voice, words and phrases).
content/blog/cloud-engineering-fuels-startup-innovation/index.md
  • line 53: [style] wordiness — 'is responsible for' is too wordy.
content/blog/cloud-systems-part-one/index.md
  • line 43: [style] filler — Don't start a sentence with 'There are'.
  • line 43: [style] wordiness — 'All of' is too wordy.
content/blog/copilot-in-vscode/index.md
  • line 58: [style] weasel word — 'vast' is a weasel word!
  • line 58: [style] weasel word — 'significantly' is a weasel word!
content/blog/deploy-kubernetes-and-apps-with-go/index.md
  • line 17: [style] weasel word — 'several' is a weasel word!
content/blog/gartner-cool-vendor-award/index.md
  • line 12: [style] style — Spell out all ordinal numbers ('28th') in text. ✏️
  • line 37: [style] difficulty qualifier — Avoid difficulty qualifier 'just' -- it judges difficulty for the reader (brand guide: voice, words and phrases).
content/blog/going-beyond-with-advanced-infrastructure-as-code-use-cases/index.md
  • line 25: [style] difficulty qualifier — Avoid difficulty qualifier 'easily' -- it judges difficulty for the reader (brand guide: voice, words and phrases).
  • line 25: [style] difficulty qualifier — Avoid difficulty qualifier 'just' -- it judges difficulty for the reader (brand guide: voice, words and phrases).
  • line 63: [style] difficulty qualifier — Avoid difficulty qualifier 'Just' -- it judges difficulty for the reader (brand guide: voice, words and phrases).
  • line 63: [style] weasel word — 'very' is a weasel word!
  • line 63: [style] wordiness — 'similar to' is too wordy.
  • line 95: [style] wordiness — 'all of' is too wordy.
  • line 97: [style] weasel word — 'Interestingly' is a weasel word!
  • line 116: [style] wordiness — 'In addition' is too wordy.
content/blog/how-a-bank-modernized-its-software-engineering-with-infrastructure-as-code-automation/index.md
  • line 51: [style] wordiness — 'On the other hand' is too wordy.
content/blog/infrastructure-as-code-in-any-programming-language/index.md
  • line 24: [style] difficulty qualifier — Avoid difficulty qualifier 'just' -- it judges difficulty for the reader (brand guide: voice, words and phrases).
  • line 57: [style] wordiness — 'In terms of' is too wordy.
  • line 63: [style] difficulty qualifier — Avoid difficulty qualifier 'simple' -- it judges difficulty for the reader (brand guide: voice, words and phrases).
  • line 77: [style] wordiness — 'all of' is too wordy.
  • line 77: [style] weasel word — 'fairly' is a weasel word!
  • line 87: [style] difficulty qualifier — Avoid difficulty qualifier 'easy' -- it judges difficulty for the reader (brand guide: voice, words and phrases).
  • line 87: [style] vague link text — Vague link text ('here'). Use descriptive text that conveys the destination (STYLE-GUIDE.md §Links).
content/blog/infrastructure-testing-got-better/index.md
  • line 25: [style] wordiness — 'all of' is too wordy.
content/blog/insights-cloud-account-discovery/index.md
  • line 91: [style] weasel word — 'significantly' is a weasel word!
content/blog/join-pulumi-user-group-community/index.md
  • line 79: [style] weasel word — 'several' is a weasel word!
content/blog/level-up-your-azure-platform-as-a-service-applications-with-pulumi/index.md
  • line 138: [style] weasel word — 'quite' is a weasel word!
content/blog/managing-multi-cloud-open-data-noaa/index.md
  • line 67: [style] spacing — 'e. I' should have one space. ✏️
  • line 67: [style] wordiness — 'In addition' is too wordy. ✏️
content/blog/mcp-server-ai-assistants/index.md
  • line 143: [style] weasel word — 'remarkably' is a weasel word!
  • line 143: [style] weasel word — 'significantly' is a weasel word!
content/blog/nov-2022-launches/index.md
  • line 103: [style] spacing — 's. E' should have one space. ✏️
  • line 103: [style] difficulty qualifier — Avoid difficulty qualifier 'easy' -- it judges difficulty for the reader (brand guide: voice, words and phrases). ✏️
content/blog/pinecone-serverless/index.md
  • line 18: [style] hyphenation — 'newly-announced' doesn't need a hyphen. ✏️

  • 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 commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

📋 Triaged verifier findings

I double-checked these and realized they weren't real findings — click to expand
  • [L84-86] content/blog/pulumi-ai/index.md"Kelsey Hightower posted a tweet on the day Pulumi AI launched…"Spurious: the "entirely different wording" the check compared against is Pulumi's own reply paragraph on L88 ("We believe that fundamentally, both code and templates…"), not Hightower's tweet. The tweet itself is embedded on L86 as a linked screenshot whose alt text carries the quoted wording, and the post's framing ("Kelsey Hightower mentioned this on the day that Pulumi AI launched") matches.

  • [L86] content/blog/pulumi-ai/index.md"Kelsey Hightower's tweet (status ID 1646538701818986501)…"Mis-sourced: X/Twitter status pages aren't fetchable from CI, so the tweet couldn't be confirmed live. The post embeds a screenshot of it plus a link to the status ID, which is the evidence a reader gets either way.

  • [L15] content/blog/announcing-speaker-lineup-pulumiup-2023/index.md"PulumiUP features technical talks, demos, and best practices…"Mis-sourced: the check compared a 2023 post against the live /pulumi-up/ page, which now serves the current year's event. A 2023 archive page was needed, not the evergreen URL.

  • [L36-37] content/blog/announcing-speaker-lineup-pulumiup-2023/index.md"Sam Cogan is particularly focused on automation and DevOps…"Mis-sourced: the cited URL is WTW's corporate homepage (which returned HTTP 429 anyway), not a speaker bio. A company site was never going to carry an individual's stated focus areas.

  • [L51] content/blog/how-a-bank-modernized-its-software-engineering-with-infrastructure-as-code-automation/index.md"Dennis Sauvé recognized infrastructure as code (IaC) as the solution…"Mis-sourced: the cited URL is a bare GitHub profile page. The claim's actual basis is Dennis Sauvé's own PulumiUP 2023 talk, which the post discloses in-line.

  • [L31] content/blog/pulumi-bloggers-oct-2019/index.md"Cody De Arkland demonstrated how to create a VMware vSphere virtual machine using Pulumi…"Mis-sourced: the cited URL is a Twitter/X profile landing page rather than the thehumblelab.com post the paragraph is summarizing.

💡 Pre-existing issues in touched files (optional)

Everything below predates this PR. The sweep touched these lines only to change letter case, so none of it is in scope for this change — listed so it isn't lost.

  • [L29] content/blog/esc-automation-api-pulumi-service-provider-launch/index.mdPre-existing: the anchor /docs/esc/concepts/environments/#tagging-versions no longer resolves; a later docs reorg split versioning out of environments.md, and that heading now lives at /docs/esc/concepts/versioning/#tagging-versions. Per AGENTS.md, blog links get swapped only for an equivalent replacement — this is one, if you want to take it while you're in the file.

  • [L18] content/blog/aws-proton-pulumi/index.mdPre-existing: the post opens "Today, AWS announced support…" with no publish date in the body, so a reader arriving now can't tell when "today" was. Whole-post reframing, not a line edit — worth a follow-up issue rather than this PR.

  • [L43-178] content/blog/cloud-systems-part-one/index.mdPre-existing: the walkthrough jumps from the S3-bucket intro to the build steps without stating the Pulumi project setup in between.

  • [L43] content/blog/cloud-systems-part-one/index.mdPre-existing: "the syntax will be more familiar for developers" assumes the reader already knows which language the example uses; the language choice is introduced afterward.

  • [L243-331] content/blog/codegen-learnings/index.mdPre-existing: a large <!--raw material comment block is still committed in the published file. Harmless to readers, but it's leftover drafting material and could be deleted in a follow-up.

  • [L20] content/blog/converting-full-terraform-programs-to-pulumi/index.mdPre-existing: "CrossCode foundations" is used before the post explains what CrossCode is.

  • [L54-142] content/blog/copilot-in-vscode/index.mdPre-existing: the post documents Pulumi Copilot end to end while the deprecation note at the top says Neo has replaced it, so the body and the banner pull in opposite directions. A rewrite-or-archive decision, not a line fix.

  • [L126-127] content/blog/future-cloud-infrastructure-10-trends-shaping-2024-and-beyond/index.mdPre-existing: the data-pipelines/vector-databases bullet restates a point the preceding paragraph already makes.

  • [L95] content/blog/going-beyond-with-advanced-infrastructure-as-code-use-cases/index.mdPre-existing: "The scenarios this unlocks are mentioned earlier" points backward to material that appears later in the post.

  • [L20, L55, L109] content/blog/going-beyond-with-advanced-infrastructure-as-code-use-cases/index.mdPre-existing: three mid-sentence "Infrastructure as Code" occurrences survive on lines the sweep didn't touch: L20 ("1. Infrastructure as Code to develop cloud infrastructure with code."), L55 ("For Infrastructure as Code, the typical meaning of an integration test…"), and L109 ("Reapply the Infrastructure as Code, thereby eliminating the drift"). Same class as what this PR fixes, carried over from the resolved [L81] finding so it isn't lost. Sibling case: infrastructure-as-code-in-any-programming-language/index.md L46, L51, L55, L67, and L69. Correctly left alone in both files: H2 headings, the L118 series title "[Infrastructure as Code Recommended Practices]", and pulumi-kubernetes-new-2022/index.md L11's "Universal Infrastructure as Code" — that one is Pulumi's own branded phrase, capitalized in all 12 of its occurrences site-wide.

✅ Resolved since last review

  • [L11, L27, L31] content/blog/pulumi-bloggers-oct-2019/index.md — all three VSphere occurrences now read vSphere: L11 "building vSphere virtual machines", the L27 H2 "## VMware vSphere and Pulumi", and the L31 link text "[create a VMware vSphere Virtual Machine]". The push touches one file and three lines and nothing else — case-normalizing the hunk against 17e6256b leaves zero non-casing differences, so the VMware, GitHub, and GitLab corrections from the previous round are intact. grep -rn "VSphere\|Vsphere" content/ --include=*.md now returns a single hit, architecture-as-code-vm/index.md L285, which this PR doesn't touch. (resolved in 529738b)

  • The twelve findings resolved in the earlier fix pushes (automation-api L13, going-beyond… L25 and L81, infrastructure-as-code-in-any-programming-language L24 and L81, visual-import L48 and L90, esc-automation-api-pulumi-service-provider-launch L29, using-pulumi-securely L45 — the conflict-resolution regression plus the Github/GitLab names — and pulumi-bloggers-oct-2019 L27/L31 VMWare) were re-checked against 529738b and all remain fixed. Nothing in this push regresses a previously resolved finding.

📜 Review history

  • 2026-08-25T15:13:37Z — Casing sweep is correct where applied; found 4 edited lines that now mix both casings in one sentence, 3 blocking style-lint hits on touched lines, and 9 pre-existing issues carried along for the record. (e312c6e)
  • 2026-08-25T16:08:12Z — re-reviewed after fix push (1 new commit, e932545). All 7 outstanding findings resolved: the 4 same-line casing mismatches and the 3 [style-blocker] product-name issues; vale now returns 0 blocker-tier findings against the changed lines. Two new 🚨 raised: infrastructure-as-code-in-any-programming-language/index.md L24, a fifth same-line mismatch the initial pass missed, and visual-import/index.md L48, where fixing "Pulumi Cloud Console" on L90 left the identical phrase capitalized earlier in the same file. Duplicate sweep run across all 64 changed files for every phrase the resolved findings quoted; the only other capitalized-on-a-changed-line hits are the L118 series title and "Universal Infrastructure as Code", both correct as-is. (e932545)
  • 2026-08-25T16:31:40Z — re-reviewed after fix push (1 new commit, e2c72ba), on the author's report that both remaining findings were fixed. visual-import/index.md L48 is fully resolved and moved to ✅. infrastructure-as-code-in-any-programming-language/index.md L24 is half resolved and stays 🚨: the trailing occurrence is now lowercase, but the second edit the finding asked for — lowercasing Code in the sentence-initial anchor [Infrastructure as Code](/what-is/what-is-infrastructure-as-code/) — wasn't applied, so the line still carries both casings. Re-ran the both-casings-on-one-line sweep across content/blog/**/index.md (not just the changed files this time): 4 hits, of which 3 are correct as-is ("Universal Infrastructure as Code" at pulumi-kubernetes-new-2022 L11, the series title at going-beyond… L118, and pulumi-for-aws-automate-secure-manage L37, which this PR doesn't touch). vale reports 0 blocker-tier findings. Advisory style findings regenerated fresh against e2c72ba. (e2c72ba)
  • 2026-08-25T17:20:00Z — re-reviewed after fix push (1 new commit, 249a81f), on @workprentice[bot]'s report that the remaining half of the L24 finding was fixed. Confirmed: the one-line hunk lowercases Code inside the sentence-initial anchor and changes nothing else, so [L24] moves to ✅ and 🚨 Outstanding is now empty. Re-ran the both-casings-on-one-line sweep across content/blog/**/index.md: 3 hits, all previously cleared (pulumi-kubernetes-new-2022 L11, going-beyond… L118, pulumi-for-aws-automate-secure-manage L37). Swept the phrase the finding quoted across the file's body and meta_desc/social.* frontmatter — no surviving capitalized duplicate. vale reports 0 blocker-tier findings; advisory style findings regenerated fresh against 249a81f. The 9 ⚠️ and 10 💡 items are unchanged and all pre-date this PR — none blocks the merge, but each still wants a decision (fix, defer to an issue, or accept) before this ships. (249a81f)
  • 2026-08-26T19:40:00Z — history rewritten since last review; re-reviewed against HEAD (dbf19c9). compare 249a81f...dbf19c91 returned diverged, so the recorded delta was discarded and the full PR was re-diffed against master (ahead 4, behind 0, 64 files, 119/119). On @workprentice[bot]'s report of a rebase to resolve a merge conflict. Verified every prior fix survived: automation-api L13, going-beyond… L25/L81, infrastructure-as-code-in-any-programming-language L24/L81, visual-import L48/L90, esc-automation-api… L29, using-pulumi-securely L45 product name. Both-casings sweep: still 3 known-good hits. Reverse-regression sweep (a + line capitalizing more occurrences than its - line): none. The conflict resolution was not clean. Case-normalizing every changed line pair leaves exactly two non-casing changes: esc-automation-api… L29 (the Pulumi ServicePulumi Cloud, the correct retired-name fix from round 2, kept) and using-pulumi-securely L45, where the branch's copy of the line won the conflict and discarded master's identity-provider link modernization — five URLs reverted to the organizations-teams alias, four of the five anchors nonexistent on the aliased target, plus the double sentence spacing master had normalized. That line carries no casing change at all, so the whole hunk is out of this PR's scope; raised as 🚨. Separately, the rebase brought in master's refreshed styles/Pulumi/ThirdPartyNames.yml, and vale now reports 3 blocker-tier hits on touched lines (pulumi-bloggers-oct-2019 L31 VMWare; using-pulumi-securely L45 Github, Gitlab) where the pre-rebase run reported 0 — new rule coverage, not new prose. Advisory style findings regenerated fresh against dbf19c9; the set shifted with the rule refresh (infrastructure-as-code-in-any-programming-language L81's three hits are gone, new hits at L87 and in nov-2022-launches/pinecone-serverless). The 9 ⚠️ and 10 💡 items are unchanged and all pre-date this PR. (dbf19c9)
  • 2026-08-26T20:10:00Z — re-reviewed after fix push (1 new commit, 17e6256), on @workprentice[bot]'s report that the conflict-resolution regression and the 2 new ThirdPartyNames findings were fixed. compare dbf19c91...17e6256b returned ahead 1, behind 0, 2 files. All 4 outstanding findings confirmed resolved. The using-pulumi-securely L45 hunk was diffed against origin/master directly: the two lines now differ only by GithubGitHub and GitlabGitLab, so the identity-provider link modernization, the /docs/administration/concepts/identity-providers/ base path, and the single sentence spacing are all restored; #github, #gitlab, #bitbucket, and #saml-20 each match a live ## heading in content/docs/administration/concepts/identity-providers.md (L68/L80/L92/L108). vale now reports 0 blocker-tier findings across the PR (down from 3). Duplicate sweep on the phrases the resolved findings quoted: no VMWare, Github, or Gitlab survives on any line this PR touches, and the frontmatter (meta_desc, social.*) of both changed files is clean of them. One new 🚨: the VMWareVMware fix left VSphere uncorrected on the same two lines (L27, L31) plus L11 — VMware spells it vSphere, and content/ already prefers that form 15 to 4. Vale has no VSphere entry in ThirdPartyNames.yml, so this is a reviewer catch rather than a lint hit; flagged as 🚨 for parity with the VMWare finding it directly follows from. One new ⚠️: extending the casing sweep into frontmatter found 5 meta_desc strings still carrying mid-sentence Infrastructure as Code on files whose bodies this PR re-cased — left at ⚠️ because whether frontmatter is in scope is the author's call. Advisory style findings regenerated fresh against 17e6256 (50 raw, 44 rendered; dropped a Codebuild spelling hit that fires on a URL slug, a Go to hit that fires on the Go language, and three write-good flags whose rewrites read worse). The 10 ⚠️ and 10 💡 items still want a decision (fix, defer to an issue, or accept) before this ships. (17e6256)
  • 2026-08-26T20:35:00Z — re-reviewed after fix push (1 new commit, 529738b), on @workprentice[bot]'s report that all three VSphere occurrences were corrected. compare 17e6256b...529738bc returned ahead 1, behind 0, 1 file. Confirmed: the sole outstanding finding is resolved and 🚨 Outstanding is now empty. The hunk changes L11, L27, and L31 of pulumi-bloggers-oct-2019/index.md and nothing else; case-normalizing every changed line against 17e6256b leaves zero non-casing differences, so the previous round's VMware/GitHub/GitLab fixes are untouched. Duplicate sweep on the phrase the finding quoted, run repo-wide rather than just across the changed files: VSphere survives at exactly one location in content/, architecture-as-code-vm/index.md L285, which this PR doesn't touch — out of scope here, and the styles/Pulumi/ThirdPartyNames.yml entry suggested last round would catch it on its own. The file's meta_desc and social.* frontmatter carry no VSphere. Site-wide the ratio is now 18 vSphere to 1 VSphere, up from 15 to 4. vale reports 0 blocker-tier findings; advisory style findings regenerated fresh against 529738b — 50 raw, 44 rendered, the same set as last round, since the only changed file carries no vale findings. No new findings raised. The 10 ⚠️ and 10 💡 items are unchanged and all pre-date this PR; none blocks the merge, but each still wants a decision (fix, defer to an issue, or accept) before this ships. (529738b)

  • 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
workprentice Bot pushed a commit that referenced this pull request Aug 25, 2026
…ames

Fixes 7 issues flagged by the pre-merge review on PR #21125:
- 4 same-sentence casing mismatches left by the mechanical sweep
  (automation-api, going-beyond-with-advanced-infrastructure-as-code-use-cases
  x2, infrastructure-as-code-in-any-programming-language) where one
  occurrence of 'Infrastructure as Code' in a sentence was lowercased
  but a sibling occurrence in the same sentence/paragraph was missed.
- 2 deprecated product name references ('Pulumi Service' -> 'Pulumi
  Cloud', per STYLE-GUIDE.md SS Product Names) in
  esc-automation-api-pulumi-service-provider-launch and
  using-pulumi-securely.
- 1 nomenclature fix ('Pulumi Cloud Console' -> 'Pulumi Cloud console')
  in visual-import, per STYLE-GUIDE.md SS Product Names.
@workprentice

workprentice Bot commented Aug 25, 2026

Copy link
Copy Markdown
Contributor Author

@claude #update-review

Pushed fixes for all 7 outstanding findings: the 4 same-sentence casing mismatches and the 3 deprecated/nomenclature product-name issues. Re-validated with vale (targeted files), node ./scripts/lint/lint-markdown.js, and ./scripts/prettier.sh --check — all clean.

@github-actions github-actions Bot added review:stale New commits since last Claude review; refresh on next ready-transition or @claude mention review:in-progress Claude review is currently running and removed review:outstanding-issues Claude review completed; outstanding has author-actionable findings review:stale New commits since last Claude review; refresh on next ready-transition or @claude mention 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

@github-actions

Copy link
Copy Markdown
Contributor

🤖 Review updated on @workprentice[bot]'s request.

@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
workprentice Bot pushed a commit that referenced this pull request Aug 25, 2026
Second round of pre-merge review findings on PR #21125:
- infrastructure-as-code-in-any-programming-language/index.md L24:
  a fifth same-line casing mismatch missed by the initial pass;
  lowercased the trailing mid-sentence occurrence.
- visual-import/index.md L48: the L90 fix left the identical phrase
  ('Pulumi Cloud Console') uncorrected 42 lines earlier; lowercased
  to match the canonical 'Pulumi Cloud console' spelling.
@workprentice

workprentice Bot commented Aug 25, 2026

Copy link
Copy Markdown
Contributor Author

@claude #update-review

Pushed fixes for the 2 remaining findings from the last pass: the L24 casing mismatch in infrastructure-as-code-in-any-programming-language, and the L48/L90 Console/console mismatch in visual-import. Re-validated with vale, lint-markdown, and prettier — all clean.

@github-actions github-actions Bot removed the review:outstanding-issues Claude review completed; outstanding has author-actionable findings label Aug 25, 2026
@github-actions github-actions Bot added the review:in-progress Claude review is currently running label Aug 26, 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

@github-actions

Copy link
Copy Markdown
Contributor

🤖 Review updated on @workprentice[bot]'s request.

@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 26, 2026
Corrects a mistake from the rebase conflict resolution: using-pulumi-securely/index.md
L45 had reverted master's identity-provider link modernization back to
stale /docs/administration/concepts/identity-providers/ URLs. Restored
master's current link paths while keeping this PR's casing fix, and
along the way fixed 'Github'/'Gitlab' to 'GitHub'/'GitLab' on the same
line and 'VMWare' to 'VMware' in pulumi-bloggers-oct-2019/index.md
(both heading and body) per styles/Pulumi/ThirdPartyNames.yml, which
the rebase pulled in from master and which now covers these lines.
@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 Aug 26, 2026
@workprentice

workprentice Bot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor Author

@claude #update-review

Good catch — my earlier conflict resolution had accidentally reverted master's identity-provider link modernization in using-pulumi-securely/index.md. Fixed by restoring master's current link paths while keeping this PR's casing change, and also fixed the 2 new ThirdPartyNames findings (Github/GitlabGitHub/GitLab on the same line, VMWareVMware in pulumi-bloggers-oct-2019) that came in with master's refreshed Vale rules. Re-validated with vale, lint-markdown, and prettier — all clean.

@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 Aug 26, 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

@github-actions

Copy link
Copy Markdown
Contributor

🤖 Review updated on @workprentice[bot]'s request.

@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 26, 2026
Vale's ThirdPartyNames.yml doesn't yet have a VSphere entry, but VMware
spells its own product 'vSphere' (lowercase v, capital S). All three
occurrences in pulumi-bloggers-oct-2019/index.md read 'VSphere'; fixed
to match VMware's own spelling and the rest of the site (vSphere
outnumbers VSphere 15:4 in content/).
@workprentice

workprentice Bot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor Author

@claude #update-review

Fixed the VSphere → vSphere casing on all 3 occurrences (VMware's own spelling, and matches the site's existing 15:4 convention). Re-validated — vale/lint/prettier all clean, and diffed against origin/master to confirm only the intended lines changed.

@github-actions github-actions Bot added review:stale New commits since last Claude review; refresh on next ready-transition or @claude mention review:in-progress Claude review is currently running and removed review:outstanding-issues Claude review completed; outstanding has author-actionable findings review:stale New commits since last Claude review; refresh on next ready-transition or @claude mention labels Aug 26, 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

Pulumi has a rich and expressive Native Provider model for building providers directly against the full capabilities of the Pulumi Infrastructure as Code resource model. Many of the most important Pulumi providers are built directly on this foundation, including our [Azure Native](https://www.pulumi.com/registry/packages/azure-native/) and [Kubernetes](https://www.pulumi.com/registry/packages/kubernetes/) providers. So why are we excited to support using Terraform and OpenTofu providers from Pulumi?

In short, we believe in giving Pulumi users access to every ecosystem of great providers and components available across the industry and in meeting partners where they are. If a partner or user has built something exciting for managing infrastructure in the cloud, we want Pulumi users to benefit from it. Similarly, we want the partner or user to easily extend the value of their provider to also be able to reach the Pulumi user base, and all of the benefits that Pulumi can offer for Infrastructure as Code management, with no extra effort on their part.
In short, we believe in giving Pulumi users access to every ecosystem of great providers and components available across the industry and in meeting partners where they are. If a partner or user has built something exciting for managing infrastructure in the cloud, we want Pulumi users to benefit from it. Similarly, we want the partner or user to easily extend the value of their provider to also be able to reach the Pulumi user base, and all of the benefits that Pulumi can offer for infrastructure as code management, with no extra effort on their part.

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] spacing — single space; drops 'easily' and 'all of'

Suggested change
In short, we believe in giving Pulumi users access to every ecosystem of great providers and components available across the industry and in meeting partners where they are. If a partner or user has built something exciting for managing infrastructure in the cloud, we want Pulumi users to benefit from it. Similarly, we want the partner or user to easily extend the value of their provider to also be able to reach the Pulumi user base, and all of the benefits that Pulumi can offer for infrastructure as code management, with no extra effort on their part.
In short, we believe in giving Pulumi users access to every ecosystem of great providers and components available across the industry and in meeting partners where they are. If a partner or user has built something exciting for managing infrastructure in the cloud, we want Pulumi users to benefit from it. Similarly, we want the partner or user to extend the value of their provider to also be able to reach the Pulumi user base, and the benefits that Pulumi can offer for infrastructure as code management, with no extra effort on their part.

---

Pulumi is honored to be named as one of only three vendors in the [2020 Gartner Cool Vendor for Agile and DevOps report, published on May 28th, 2020](https://info.pulumi.com/press-release/gartner-cool-vendor-5_28_2020). Being recognized in this way is a strong validation of Pulumi's impact thanks to our more modern approach to Infrastructure as Code and approaches to building cloud software. Vendors can only be selected once and in only one category making this an exclusive award.
Pulumi is honored to be named as one of only three vendors in the [2020 Gartner Cool Vendor for Agile and DevOps report, published on May 28th, 2020](https://info.pulumi.com/press-release/gartner-cool-vendor-5_28_2020). Being recognized in this way is a strong validation of Pulumi's impact thanks to our more modern approach to infrastructure as code and approaches to building cloud software. Vendors can only be selected once and in only one category making this an exclusive award.

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] style — ordinal spelled as plain date

Suggested change
Pulumi is honored to be named as one of only three vendors in the [2020 Gartner Cool Vendor for Agile and DevOps report, published on May 28th, 2020](https://info.pulumi.com/press-release/gartner-cool-vendor-5_28_2020). Being recognized in this way is a strong validation of Pulumi's impact thanks to our more modern approach to infrastructure as code and approaches to building cloud software. Vendors can only be selected once and in only one category making this an exclusive award.
Pulumi is honored to be named as one of only three vendors in the [2020 Gartner Cool Vendor for Agile and DevOps report, published on May 28, 2020](https://info.pulumi.com/press-release/gartner-cool-vendor-5_28_2020). Being recognized in this way is a strong validation of Pulumi's impact thanks to our more modern approach to infrastructure as code and approaches to building cloud software. Vendors can only be selected once and in only one category making this an exclusive award.

We began looking at infrastructure as code (IAC) solutions and initially considered many of the cloud-specific options: CloudFormation on AWS, Deployment Manager on Google, and Resource Manager on Azure. While these were nice for automation, we quickly discarded these as options because each had an individual learning curve for that environment; they did not translate well in a multi-cloud environment. These tools also did not have the control features of a full-fledged programming language; looping and if-then statements were challenging to implement.

We also considered other Infrastructure as Code providers. While these solutions would meet a lot of our needs, and one of our team members had extensive experience with one of these tools, the ability to use a common tool seamlessly in a multi-cloud environment was attractive. However, the learning curve associated with a domain specific language was cause for reticence. In addition, we really wanted to be able to use the features of a full-fledged programming language.
We also considered other infrastructure as code providers. While these solutions would meet a lot of our needs, and one of our team members had extensive experience with one of these tools, the ability to use a common tool seamlessly in a multi-cloud environment was attractive. However, the learning curve associated with a domain specific language was cause for reticence. In addition, we really wanted to be able to use the features of a full-fledged programming language.

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] spacing — single spaces; 'In addition' to 'also'

Suggested change
We also considered other infrastructure as code providers. While these solutions would meet a lot of our needs, and one of our team members had extensive experience with one of these tools, the ability to use a common tool seamlessly in a multi-cloud environment was attractive. However, the learning curve associated with a domain specific language was cause for reticence. In addition, we really wanted to be able to use the features of a full-fledged programming language.
We also considered other infrastructure as code providers. While these solutions would meet a lot of our needs, and one of our team members had extensive experience with one of these tools, the ability to use a common tool seamlessly in a multi-cloud environment was attractive. However, the learning curve associated with a domain specific language was cause for reticence. We also wanted to be able to use the features of a full-fledged programming language.

## Architecture Templates

The new Pulumi Architecture Templates offer the easiest way to get started with a complete working piece of infrastructure for one of the most common Infrastructure as Code use cases. Each architecture template is short (~100 lines of code), builds a deployable infrastructure project out of the box, is easy to customize, uses a mix of raw cloud resources and Pulumi components to operate at the right level of abstraction for the use case, and comes with useful documentation.
The new Pulumi Architecture Templates offer the easiest way to get started with a complete working piece of infrastructure for one of the most common infrastructure as code use cases. Each architecture template is short (~100 lines of code), builds a deployable infrastructure project out of the box, is easy to customize, uses a mix of raw cloud resources and Pulumi components to operate at the right level of abstraction for the use case, and comes with useful documentation.

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] spacing — single space; drops 'easy' qualifier

Suggested change
The new Pulumi Architecture Templates offer the easiest way to get started with a complete working piece of infrastructure for one of the most common infrastructure as code use cases. Each architecture template is short (~100 lines of code), builds a deployable infrastructure project out of the box, is easy to customize, uses a mix of raw cloud resources and Pulumi components to operate at the right level of abstraction for the use case, and comes with useful documentation.
The new Pulumi Architecture Templates offer the easiest way to get started with a complete working piece of infrastructure for one of the most common infrastructure as code use cases. Each architecture template is short (~100 lines of code), builds a deployable infrastructure project out of the box, can be customized, uses a mix of raw cloud resources and Pulumi components to operate at the right level of abstraction for the use case, and comes with useful documentation.

## Hello, Pulumi Pinecone Provider! 👋

The [Pinecone](https://pinecone.io/) integration with [Pulumi](https://www.pulumi.com) offers a native way to manage Pinecone indexes, including the newly-announced serverless indexes. Utilize any of Pulumi's [supported languages](/docs/iac/languages-sdks/) to effortlessly create, update, and remove your Pinecone indexes. This integration facilitates the application of [Infrastructure as Code](/what-is/what-is-infrastructure-as-code/) principles, helping you to work even more efficiently. Furthermore, this gives you the benefit of tapping into Pulumi's wide range of [providers](/product/), offering you a diverse and powerful set of tools to enhance your development work.
The [Pinecone](https://pinecone.io/) integration with [Pulumi](https://www.pulumi.com) offers a native way to manage Pinecone indexes, including the newly-announced serverless indexes. Utilize any of Pulumi's [supported languages](/docs/iac/languages-sdks/) to effortlessly create, update, and remove your Pinecone indexes. This integration facilitates the application of [infrastructure as code](/what-is/what-is-infrastructure-as-code/) principles, helping you to work even more efficiently. Furthermore, this gives you the benefit of tapping into Pulumi's wide range of [providers](/product/), offering you a diverse and powerful set of tools to enhance your development work.

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] hyphenation — adverb-adjective pair needs no hyphen

Suggested change
The [Pinecone](https://pinecone.io/) integration with [Pulumi](https://www.pulumi.com) offers a native way to manage Pinecone indexes, including the newly-announced serverless indexes. Utilize any of Pulumi's [supported languages](/docs/iac/languages-sdks/) to effortlessly create, update, and remove your Pinecone indexes. This integration facilitates the application of [infrastructure as code](/what-is/what-is-infrastructure-as-code/) principles, helping you to work even more efficiently. Furthermore, this gives you the benefit of tapping into Pulumi's wide range of [providers](/product/), offering you a diverse and powerful set of tools to enhance your development work.
The [Pinecone](https://pinecone.io/) integration with [Pulumi](https://www.pulumi.com) offers a native way to manage Pinecone indexes, including the newly announced serverless indexes. Utilize any of Pulumi's [supported languages](/docs/iac/languages-sdks/) to effortlessly create, update, and remove your Pinecone indexes. This integration facilitates the application of [infrastructure as code](/what-is/what-is-infrastructure-as-code/) principles, helping you to work even more efficiently. Furthermore, this gives you the benefit of tapping into Pulumi's wide range of [providers](/product/), offering you a diverse and powerful set of tools to enhance your development work.

@github-actions

Copy link
Copy Markdown
Contributor

🤖 Review updated on @workprentice[bot]'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 Aug 26, 2026
@workprentice

workprentice Bot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor Author

Review is clean now (review:no-blockers) and all CI checks pass. This is merge-ready whenever @cnunciato or another maintainer has a chance to look — happy to answer questions in the meantime.

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 review:no-blockers Claude review completed cleanly; outstanding is empty

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants