Skip to content

Delete /product/pulumi-cloud, redirect to /product#19123

Open
jkodroff wants to merge 1 commit into
masterfrom
jkodroff/delete-pulumi-cloud-product-page
Open

Delete /product/pulumi-cloud, redirect to /product#19123
jkodroff wants to merge 1 commit into
masterfrom
jkodroff/delete-pulumi-cloud-product-page

Conversation

@jkodroff
Copy link
Copy Markdown
Member

The Pulumi Cloud product page has been superseded by the unified platform page at /product/. This PR deletes the old page, redirects its URLs, removes dead code that only powered it, and updates inbound links in non-historical content.

Changes

Deletion + redirect

  • Delete content/product/pulumi-cloud.md.
  • Add /product/pulumi-cloud/, /product/pulumi-service/, /product/cloud/, /cloud/ as aliases on content/product/_index.md so old URLs continue to resolve.

Dead code removal

  • Delete layouts/product/pulumi-cloud.html (orphan layout — no other content used layout: pulumi-cloud).
  • Delete theme/src/ts/pulumi-cloud.ts (only powered the tab UI on the deleted page).
  • Remove the import "./pulumi-cloud" line from theme/src/ts/main.ts.

Inbound link updates

  • 4 IaC migration guides (from-arm, from-cloudformation, from-serverless, from-terraform): rewrite the Neo-access prerequisite from Have Neo access (available in [Pulumi Cloud](/product/pulumi-cloud/)) to Have [Pulumi Neo](/product/neo/) access — the link now points readers at the Neo overview, which is the product they actually need.
  • 2 what-is pages (what-is-hashicorp-vault, what-is-platform-engineering) + content/product/pulumi-deployments.md: retarget passing references from /product/pulumi-cloud/ to /product/.
  • JSON-LD schema entities in layouts/partials/schema/utils/product-entities.html and related-content.html: retarget the Pulumi Cloud entity's @id and url to /product/.

What's intentionally left alone

  • Blog (12 inbound links) — historical content, per AGENTS.md.
  • Gads (33 inbound links) — Google Ads landing pages, campaign-frozen and marked block_external_search_index: true.

Both rely on the new alias for transparent redirects.

Verification

  • make build clean (Hugo emits the alias-redirect HTML correctly at public/product/pulumi-cloud/index.html).
  • make lint clean (1750 files, 0 errors — file count dropped by 1 confirming the deletion).
  • Grep sweep confirms only the alias entry on /product/_index.md references /product/pulumi-cloud/ in non-historical content.

Related

Adjacent cleanup: #19116 (CrossGuard branding removal) — independent of this PR, but the JS file deleted here is one the other PR also touched. After this lands, #19116 will need a rebase to drop its theme/src/ts/pulumi-cloud.ts hunk.

The Pulumi Cloud product page has been superseded by the unified platform
page at /product/. Deletes content/product/pulumi-cloud.md and adds
/product/pulumi-cloud/ to the aliases on /product/_index.md so old URLs
redirect transparently (covers /product/pulumi-service/, /product/cloud/,
and /cloud/ aliases that were previously on the deleted page too).

Also removes dead code: the orphan layouts/product/pulumi-cloud.html
layout and theme/src/ts/pulumi-cloud.ts (plus its import in main.ts) —
the TS only powered the tab UI on the deleted page.

Inbound link updates:
- 4 IaC migration guides: redirect 'Have Neo access (available in
  [Pulumi Cloud](...))' → 'Have [Pulumi Neo](/product/neo/) access' so
  the link points readers at the Neo overview, which is the actual
  product they need.
- 2 what-is pages + 1 product page: retarget /product/pulumi-cloud/ →
  /product/ in passing references to the platform.
- JSON-LD schema entities (product-entities.html, related-content.html):
  retarget the Pulumi Cloud entity's @id and url to /product/.

Blog (12) and gads (33) inbound links are left to the alias redirect —
blog is historical and gads pages are campaign-frozen.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@jkodroff jkodroff requested a review from cnunciato May 18, 2026 18:02
@github-actions github-actions Bot added review:triaging Claude Triage is currently classifying the PR domain:website PR touches marketing, pricing, legal, or competitive landing pages domain:docs PR touches technical docs domain:mixed PR touches more than one domain domain:infra PR touches workflows, scripts, infra, Makefile, or build config review:in-progress Claude review is currently running and removed review:triaging Claude Triage is currently classifying the PR labels May 18, 2026
jkodroff added a commit that referenced this pull request May 18, 2026
The previous commit on this branch renamed crossguard-select →
policies-select in theme/src/ts/pulumi-cloud.ts as a fix for the broken
"Pulumi Policies" tab on /product/pulumi-cloud/. PR #19123 supersedes
that fix by deleting the entire /product/pulumi-cloud/ page along with
its dedicated JS file, making this rename moot.

Restoring pulumi-cloud.ts to its master state so this PR doesn't conflict
with #19123 on merge. When #19123 lands first (the intended order), this
PR's diff against master will contain zero touches to the now-deleted
file.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@pulumi-bot
Copy link
Copy Markdown
Collaborator

@github-actions
Copy link
Copy Markdown
Contributor

Pre-merge Review — Last updated 2026-05-18T18:04:50Z

Tip

Summary: This PR deletes content/product/pulumi-cloud.md and redirects /product/pulumi-cloud/ (plus its three legacy aliases /product/pulumi-service/, /product/cloud/, /cloud/) to the unified /product/ landing page via Hugo aliases on content/product/_index.md; inbound docs/what-is/schema-entity links are retargeted, blog and gads links are deliberately left to the alias redirect, and the orphan layouts/product/pulumi-cloud.html and theme/src/ts/pulumi-cloud.ts are removed. The class of wrongness that would break readers — a stranded /product/pulumi-cloud/ link inside /docs/ or /product/ content, a missing alias, or a stranded template/asset reference — is the focus of this review. Investigative passes: PR diff read, inbound-link sweep across content/, layouts/, theme/, and static/, sibling cross-check of the two untouched migration guides, frontmatter alias/URL sweep, claim verification on the 35 extracted claims.

Review confidence:

Dimension Level Notes
mechanics HIGH
facts HIGH PR introduces no new factual claims; edits are link retargets + one file deletion.
cross-sibling consistency HIGH Two untouched migration siblings (from-cdk.md, from-kubernetes.md) already use /product/neo/ or omit the Pulumi Cloud reference, so the 4 retargeted siblings are now in alignment.
Investigation log
  • Cross-sibling reads: 2 of 5 siblings (from-cdk.md, from-kubernetes.md)
  • External claim verification: 16 of 35 claims verified (2 unverifiable, 11 contradicted) · 4 specialists (numerical, cross-reference, capability, framing); 0 cross-specialist corroborations · routed: 0 inline, 32 Pass 1, 0 Pass 2, 3 Pass 3 (verified 2, contradicted 1, unverifiable 0).
  • Cited-claim spot-checks: not run (no cited claims)
  • Frontmatter sweep: ran on body + meta_desc
  • Temporal-trigger sweep: ran (recency words present in diff; spot-check in-review)
  • Code execution: not run (no static/programs/ change)
  • Code-examples checks: not run (no fenced code blocks in content files)
  • Editorial-balance pass: not run (not under content/blog/)
🚨 Outstanding ⚠️ Low-confidence 💡 Pre-existing ✅ Resolved
0 0 9 0

🔍 Verification trail

35 claims extracted · 16 verified · 2 unverifiable · 11 contradicted
  • L61 in content/docs/iac/guides/migration/migrating-to-pulumi/from-arm.md "The Pulumi GitHub app must be installed with access to the repository containing ARM template files as a prerequisite for the migration process." → ✅ verified (evidence: The from-arm.md file at the Prerequisites section explicitly states: "Install the Pulumi GitHub app with access to your repository that contains your ARM template files" as the first prer…; source: repo:content/docs/iac/guides/migration/migrating-to-pulumi/from-arm.md)
  • L62 in content/docs/iac/guides/migration/migrating-to-pulumi/from-arm.md "Azure credentials can be configured in Pulumi ESC." → ✅ verified (evidence: The file at content/docs/iac/guides/migration/migrating-to-pulumi/from-arm.md contains the exact statement in the prerequisites section: "Configure Azure credentials in Pulumi ESC", confirming that Azure credentials can be co…; source: repo:content/docs/iac/guides/migration/migrating-to-pulumi/from-arm.md)
  • L62-63 in content/docs/iac/guides/migration/migrating-to-pulumi/from-arm.md "Azure credentials must be configured in Pulumi ESC as a prerequisite for the ARM-to-Pulumi migration process." → ✅ verified (framing: strengthened — the source scopes this prerequisite specifically to the Neo migration path ("Quick start with Neo > Prerequisites"), while the claim generalizes…; evidence: The file at lines 62-63 lists under "Prerequisites" for the Neo quick start: "Configure Azure credentials in Pulumi ESC". This confirms Azure credentials in Pulumi ESC are listed as a prerequisite for the Neo-based ARM-to-Pul…; source: repo:content/docs/iac/guides/migration/migrating-to-pulumi/from-arm.md)
  • L1 in content/docs/iac/guides/migration/migrating-to-pulumi/from-cloudformation.md "Pulumi Neo is a product/feature accessible via the URL path /product/neo/ on the Pulumi website." → ✅ verified (evidence: (escalated from pass1) The URL https://www.pulumi.com/product/neo/ resolves to a live Pulumi page titled "Pulumi Neo - Your AI Infrastructure Agent," confirming that Pulumi Neo is a product/feature accessible at the /product/neo/ path on t…; source: https://www.pulumi.com/product/neo/)
  • L1 in content/docs/iac/guides/migration/migrating-to-pulumi/from-cloudformation.md "Pulumi Neo access is a prerequisite for migrating from CloudFormation to Pulumi using the described migration process." → ❌ contradicted (framing: narrowed — claim broadens the Neo prerequisite (which applies only to the Neo path) to cover "the described migration process" as a whole; the source supports…; evidence: The file lists "Have Pulumi Neo access" as a prerequisite only for the "Quick start with Neo" path. The document describes multiple migration paths (coexist, import, convert) that do not require Neo access at all. The clai…; source: repo:content/docs/iac/guides/migration/migrating-to-pulumi/from-cloudformation.md)
  • L40 in content/docs/iac/guides/migration/migrating-to-pulumi/from-cloudformation.md "* Have Pulumi Neo access" → ✅ verified (evidence: The file content/docs/iac/guides/migration/migrating-to-pulumi/from-cloudformation.md at line ~40 contains * Have [Pulumi Neo](/product/neo/) access, and the target page content/product/neo.md exists in the pulumi/docs repo on mast…; source: gh api repos/pulumi/docs/contents/content/product — lists neo.md as an existing file)
  • L1 in content/docs/iac/guides/migration/migrating-to-pulumi/from-serverless.md "Pulumi Neo access is available at the URL /product/neo/ (i.e., Pulumi Neo is a distinct product/feature page at that path)." → ✅ verified (evidence: The file content/product/neo.md exists in the pulumi/docs repo, confirming that /product/neo/ is a distinct product page. The from-serverless.md file also links to it directly: [Neo](/product/neo/) (Recommended).; source: gh api repos/pulumi/docs/contents/content/product — lists neo.md at path content/product/neo.md)
  • L56 in content/docs/iac/guides/migration/migrating-to-pulumi/from-serverless.md "* Have Pulumi Neo access" → ✅ verified (evidence: The file at line 56 contains exactly * Have [Pulumi Neo](/product/neo/) access, and content/product/neo.md exists in the pulumi/docs repo, confirming the /product/neo/ link target is valid.; source: repo:content/docs/iac/guides/migration/migrating-to-pulumi/from-serverless.md (line 56); gh api repos/pulumi/docs/contents/content/product confirms neo.md exists)
  • L1 in content/docs/iac/guides/migration/migrating-to-pulumi/from-terraform.md "Pulumi Neo access is a prerequisite for migrating from Terraform using the described migration process." → ❌ contradicted (framing: shifted — the document lists Neo access as a prerequisite only for the Neo quick-start sub-path, not for the overall described migration process, which include…; evidence: The document lists Neo as one of several migration options (recommended but not required), and the state-first migration section explicitly states it is useful "when you don't have access to Neo." Neo access is listed as a prerequisite onl…; source: repo:content/docs/iac/guides/migration/migrating-to-pulumi/from-terraform.md)
  • L40 in content/docs/iac/guides/migration/migrating-to-pulumi/from-terraform.md "* Have Pulumi Neo access" → ✅ verified (evidence: The file at line 40 contains * Have [Pulumi Neo](/product/neo/) access, and content/product/neo.md exists in the pulumi/docs repository, confirming the /product/neo/ URL target is a valid page.; source: gh api repos/pulumi/docs/contents/content/product — lists neo.md at path content/product/neo.md)
  • L9 in content/product/_index.md "- /product/pulumi-cloud/" → ✅ verified (evidence: The file content/product/_index.md contains /product/pulumi-cloud/ as an explicit alias in its front matter: aliases: - /product/pulumi-cloud/, confirming the URL path is valid and intentionally defined.; source: repo:content/product/_index.md)
  • L10 in content/product/_index.md "- /product/pulumi-service/" → ➖ not-a-claim (evidence: The text - /product/pulumi-service/ at L10 of content/product/_index.md is an entry in the page's aliases: front-matter list, declaring a redirect alias — it is a Hugo configuration directive, not a falsifiable factual assertion abou…; source: repo:content/product/_index.md)
  • L11 in content/product/_index.md "- /product/cloud/" → ➖ not-a-claim (evidence: The path /product/cloud/ appears as an alias in content/product/_index.md front matter (aliases: - /product/cloud/), confirming it is a valid redirect target, not a falsifiable factual assertion.; source: repo:content/product/_index.md)
  • L35 in content/product/pulumi-deployments.md "Pulumi Deployments supports stacks with time-based automatic deletions as a workflow option." → ✅ verified (evidence: The file at the benefits description (around L35) explicitly states: "You can choose from different workflows such as GitHub pull request triggered deployments, stacks with time based automatic deletions, scheduled automations, and more."…; source: repo:content/product/pulumi-deployments.md)
  • L37 in content/product/pulumi-deployments.md "Users can orchestrate custom workflows with Automation API and offload workflow execution to Pulumi Deployments instead of running the Automation API code loca…" → ✅ verified (framing: strengthened — claim omits "yourself" but is otherwise a faithful paraphrase of the source; the source's broader form proves the claim as a subset.; evidence: The file content/product/pulumi-deployments.md states: "You can also orchestrate custom workflows with Automation API and offload the workflow execution to Pulumi Deployments instead of running the A…; source: repo:content/product/pulumi-deployments.md)
  • L11 in content/what-is/what-is-hashicorp-vault.md "The changed line replaces a reference to 'Pulumi Cloud' (https://www.pulumi.com/product/pulumi-cloud/) with a reference to 'Pulumi' (https://www.pulumi.com/pro…" → ✅ verified (evidence: The file at L11 reads: "By leveraging Vault's capabilities within Pulumi ESC and Pulumi infrastructure as code solutions" — confirming the reference now uses 'Pulumi' linked to https://www.pulumi.com/prod…; source: repo:content/what-is/what-is-hashicorp-vault.md)
  • L11 in content/what-is/what-is-hashicorp-vault.md "Vault's integration with Pulumi ESC provides a secure, centralized platform for managing sensitive information across multiple cloud environments." → ➖ not-a-claim (evidence: The text at L11 is the PR author's own description of the Vault + Pulumi ESC integration ("Vault's integration with Pulumi ESC addresses this need by providing a secure, centralized platform for managing sensitive information across multip…; source: repo:content/what-is/what-is-hashicorp-vault.md)
  • L11 in content/what-is/what-is-hashicorp-vault.md "HashiCorp Vault is a tool for secure secrets management, essential for storing and safeguarding sensitive data like API keys and passwords." → ➖ not-a-claim (evidence: The text at L11 is the PR author's own introductory description of HashiCorp Vault in their documentation page. It is not attributed to a third-party source requiring verification; the source_hint URL (pulumi.com/product/esc/) is merely th…; source: repo:content/what-is/what-is-hashicorp-vault.md)
  • L163 in content/what-is/what-is-platform-engineering.md "Pulumi's core infrastructure as code tool supports TypeScript, Python, Go, C#, Java, and YAML." → ✅ verified (framing: strengthened — the source lists JavaScript and TypeScript together (Node.js runtime); the claim specifies TypeScript specifically, which is a valid narrower su…; evidence: The pulumi/pulumi README.md lists a languages table under "## Platform / ### Languages" that includes JavaScript/TypeScript, Python, Go, .NET (C#), Java, and YAML as supported languages — matching the claim exactly.; source: gh api repos/pulumi/pulumi/contents/README.md (base64-decoded content shows the languages table))
  • L163 in content/what-is/what-is-platform-engineering.md "Pulumi's developer control plane supports internal developer portals like AWS Proton." → ❌ contradicted (framing: shifted — the claim categorizes AWS Proton as an "internal developer portal," but AWS Proton is an infrastructure templating/provisioning service, not a develo…; evidence: AWS Proton is not an "internal developer portal" — it is a managed infrastructure templating service that integrates with portals like Backstage. More critically, the official AWS Proton page states: "On October 7, 2026, AWS will discontin…; source: https://aws.amazon.com/proton/)
  • L164 in content/what-is/what-is-platform-engineering.md "Pulumi offers its own CI/CD offering called Pulumi Deployments." → ❌ contradicted (framing: shifted — the claim calls Pulumi Deployments "its own CI/CD offering," but the source defines it as "an infrastructure lifecycle management service"; CI/CD is…; evidence: The official Pulumi Deployments product page (/product/pulumi-deployments/) describes it as "an infrastructure lifecycle management service" — not a CI/CD offering. The page does mention CI/CD as one use case (e.g., "set up a standardized…; source: repo:content/product/pulumi-deployments.md)
  • L164 in content/what-is/what-is-platform-engineering.md "Pulumi's Automation API makes it possible to embed IaC into application software." → ✅ verified (evidence: The official Pulumi Automation API docs page (pulumi.com/automation/) states: "Automation API lets you use the Pulumi engine as an SDK, enabling you to create software that can create, update, configure, and destroy infrastructure dynamica…; source: https://www.pulumi.com/automation/ and https://www.pulumi.com/docs/iac/automation-api/)
  • L165 in content/what-is/what-is-platform-engineering.md "The changed line replaces a reference to 'Pulumi Cloud' (/product/pulumi-cloud/) with a reference to 'Pulumi' (/product/) as the target of Pulumi Insights' cap…" → 🤷 unverifiable (evidence: verification did not converge within 8 turns)
  • L165 in content/what-is/what-is-platform-engineering.md "Pulumi Insights provides advanced search (including natural language search), analytics, and artificial intelligence (AI) into Pulumi to provide actionable kno…" → ❌ contradicted (framing: shifted — the claim describes an older framing of Pulumi Insights (search, analytics, AI for cloud usage/cost optimizations) that no longer matches the current…; evidence: The current /product/pulumi-insights/ page (now insights-governance.md) describes Pulumi Insights & Governance as focused on compliance, governance, and cloud visibility with natural language search — not "analytics" and "cost optimiza…; source: repo:content/product/insights-governance.md)
  • L165 in content/what-is/what-is-platform-engineering.md "3. Monitoring and logging provides the 'full visibility on everything' that is a requirement for platform engineering, through support for and integration wi…" → ✅ verified (evidence: The file themes/default/content/product/pulumi-insights.md exists in the pulumi/pulumi-hugo repository, confirming that the URL /product/pulumi-insights/ is a valid internal link target for the Pulumi Insights product page.; source: gh api repos/pulumi/pulumi-hugo/contents/themes/default/content/product — listing shows "pulumi-insights.md" at path "themes/default/content/product/pulumi-insights.md")
  • L166 in content/what-is/what-is-platform-engineering.md "Pulumi Policies provides policy-based controls, including remediation of policy violations, using the same general purpose programming languages that Pulumi's…" → ❌ contradicted (framing: shifted — claim says "same general purpose programming languages that Pulumi's core IaC offering supports" but the source shows policies support only TypeScrip…; evidence: The /docs/insights/policy/ page states policies can be written in "TypeScript/JavaScript (Node.js), Python, or OPA (Rego)" — Go and .NET are listed as "Future," so policies do NOT support the same full language set as Pulumi's core IaC. Ad…; source: content/docs/insights/policy/_index.md)
  • L166 in content/what-is/what-is-platform-engineering.md "Pulumi ESC enables centralized access to secrets and configuration information." → 🤷 unverifiable (evidence: verification did not converge within 8 turns)
  • L29 in layouts/partials/schema/utils/product-entities.html "'@id' 'https://www.pulumi.com/product/#software'" → ➖ not-a-claim (evidence: The file at layouts/partials/schema/utils/product-entities.html contains "@id" "https://www.pulumi.com/product/#software" as a Go template dict literal value for the $pulumiCloud entity — this is a code/template value (a structured-d…; source: repo:layouts/partials/schema/utils/product-entities.html)
  • L32 in layouts/partials/schema/utils/product-entities.html "'url' 'https://www.pulumi.com/product/'" → ➖ not-a-claim (evidence: Line 32 is the "url" "https://www.pulumi.com/product/" field inside the $pulumiCloud dict in a Go template partial that generates schema/knowledge-graph structured data. This is a URL string value in the PR author's own template design…; source: repo:layouts/partials/schema/utils/product-entities.html)
  • L49 in layouts/partials/schema/utils/related-content.html "'@id' 'https://www.pulumi.com/product/#software'" → ✅ verified (evidence: The file layouts/partials/schema/utils/related-content.html at ~L49 contains exactly "@id" "https://www.pulumi.com/product/#software" inside the {{ if in $content "Pulumi Cloud" }} block, mapping blog posts mentioning "Pulumi Cloud"…; source: repo:layouts/partials/schema/utils/related-content.html)
  • L1 in content/docs/iac/guides/migration/migrating-to-pulumi/from-arm.md "frontmatter menu.iac.parent: iac-guides-migration-from does not exist in the iac menu" → ⚔️ mismatch (evidence: menu=iac parent=iac-guides-migration-from parent_exists_in_menu=false; source: frontmatter-validate.py pre-step)
  • L1 in content/docs/iac/guides/migration/migrating-to-pulumi/from-cloudformation.md "frontmatter menu.iac.parent: iac-guides-migration-from does not exist in the iac menu" → ⚔️ mismatch (evidence: menu=iac parent=iac-guides-migration-from parent_exists_in_menu=false; source: frontmatter-validate.py pre-step)
  • L1 in content/docs/iac/guides/migration/migrating-to-pulumi/from-serverless.md "frontmatter menu.iac.parent: iac-guides-migration-from does not exist in the iac menu" → ⚔️ mismatch (evidence: menu=iac parent=iac-guides-migration-from parent_exists_in_menu=false; source: frontmatter-validate.py pre-step)
  • L1 in content/docs/iac/guides/migration/migrating-to-pulumi/from-terraform.md "frontmatter menu.iac.parent: iac-guides-migration-from does not exist in the iac menu" → ⚔️ mismatch (evidence: menu=iac parent=iac-guides-migration-from parent_exists_in_menu=false; source: frontmatter-validate.py pre-step)
  • L1 in content/product/pulumi-cloud.md "frontmatter URL ? collides with ?" → ⚔️ mismatch (evidence: url=? collides_with=?; source: frontmatter-validate.py pre-step)

🚨 Outstanding in this PR

These must be resolved or refuted before merging.

No outstanding blockers.

⚠️ Low-confidence

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

No low-confidence findings.

📋 Triaged verifier findings

I double-checked these and realized they weren't real findings — click to expand
  • [L1] content/docs/iac/guides/migration/migrating-to-pulumi/from-cloudformation.md"Pulumi Neo access is a prerequisite for migrating from CloudFormation to Pulumi using the described migration process."Spurious: The extracted paraphrase overstates scope. The actual on-page text "Have Pulumi Neo access" sits inside the #### Quick start with Neo subsection (which itself is under ### Pulumi Neo (Recommended)), so the prerequisite is already scoped to the Neo path on-page — no fix needed to the file.

  • [L1] content/docs/iac/guides/migration/migrating-to-pulumi/from-terraform.md"Pulumi Neo access is a prerequisite for migrating from Terraform using the described migration process."Spurious: Same paraphrase-scoping artifact as the from-cloudformation finding above. The text is inside #### Quick start with Neo, and the document explicitly notes the state-first path "when you don't have access to Neo." On-page scope is correct.

  • [L165] content/what-is/what-is-platform-engineering.md"The changed line replaces a reference to 'Pulumi Cloud' (/product/pulumi-cloud/) with a reference to 'Pulumi' (/product/) as the target of Pulumi Insights' cap…"Mis-sourced: This is a description of the PR diff itself, not a falsifiable factual claim about the world. The claim-extractor pulled the diff narrative as a claim; nothing on the rendered page asserts this.

  • [L1] content/product/pulumi-cloud.md"frontmatter URL ? collides with ?"Spurious: The validator flags /product/pulumi-cloud/ colliding with the new hugo-alias on content/product/_index.md. That collision IS the PR's intent: this file is being deleted, and the alias on _index.md becomes the sole owner of /product/pulumi-cloud/ post-merge. There is no real conflict.

💡 Pre-existing issues in touched files (optional)

  • [L1] content/docs/iac/guides/migration/migrating-to-pulumi/from-arm.md"frontmatter menu.iac.parent: iac-guides-migration-from does not exist in the iac menu"Pre-existing: This PR did not modify frontmatter. The iac-guides-migration-from parent identifier is referenced by 8 files across the migration directory but is not defined anywhere in content/. The repo-wide menu bug should be fixed separately.

  • [L1] content/docs/iac/guides/migration/migrating-to-pulumi/from-cloudformation.md"frontmatter menu.iac.parent: iac-guides-migration-from does not exist in the iac menu"Pre-existing: Same as above — repo-wide missing menu parent identifier; frontmatter untouched by this PR.

  • [L1] content/docs/iac/guides/migration/migrating-to-pulumi/from-serverless.md"frontmatter menu.iac.parent: iac-guides-migration-from does not exist in the iac menu"Pre-existing: Same as above — repo-wide missing menu parent identifier; frontmatter untouched by this PR.

  • [L1] content/docs/iac/guides/migration/migrating-to-pulumi/from-terraform.md"frontmatter menu.iac.parent: iac-guides-migration-from does not exist in the iac menu"Pre-existing: Same as above — repo-wide missing menu parent identifier; frontmatter untouched by this PR.

  • [L163] content/what-is/what-is-platform-engineering.md"Pulumi's developer control plane supports internal developer portals like AWS Proton."Pre-existing: This PR did not touch line 163; the only edit in this file is on line 165 (link retarget). AWS Proton's discontinuation announcement (Oct 7, 2026) and the "internal developer portal" miscategorization both warrant a separate update — not part of this delete-and-redirect refactor.

  • [L164] content/what-is/what-is-platform-engineering.md"Pulumi offers its own CI/CD offering called Pulumi Deployments."Pre-existing: This PR did not touch line 164; the framing of Pulumi Deployments as "CI/CD" (vs. the canonical "infrastructure lifecycle management") predates this PR and should be reconciled in a follow-up content update.

  • [L165] content/what-is/what-is-platform-engineering.md"Pulumi Insights provides advanced search (including natural language search), analytics, and artificial intelligence (AI) into Pulumi to provide actionable kno…"Pre-existing: This PR retargets only the link inside this sentence (/product/pulumi-cloud//product/). The description of Pulumi Insights itself is pre-existing wording that no longer matches the current insights-governance.md page (compliance/governance/visibility, not analytics/cost). Worth refreshing in a separate pass.

  • [L166] content/what-is/what-is-platform-engineering.md"Pulumi Policies provides policy-based controls, including remediation of policy violations, using the same general purpose programming languages that Pulumi's…"Pre-existing: This PR did not touch line 166. Policy language support (TypeScript/JavaScript, Python, OPA/Rego) does not match the full Pulumi IaC language set — pre-existing scope mismatch, not introduced here.

  • [L166] content/what-is/what-is-platform-engineering.md"Pulumi ESC enables centralized access to secrets and configuration information." → unverifiable — Pre-existing: Line 166 was not touched by this PR; the verifier ran out of turns rather than finding a contradiction, and the claim itself is uncontroversial summary language about Pulumi ESC.

✅ Resolved since last review

No items resolved since the last review.

📜 Review history

  • 2026-05-18T18:04:50Z — Clean /product/pulumi-cloud/ delete-and-redirect refactor; all flagged claims are pre-existing on untouched lines or paraphrase/diff-narrative extraction artifacts; alias coverage and inbound-link sweep clean. (ab3094d)

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

@github-actions github-actions Bot added review:no-blockers Claude review completed cleanly; outstanding is empty and removed review:in-progress Claude review is currently running labels May 18, 2026
@pulumi-bot
Copy link
Copy Markdown
Collaborator

Lighthouse Performance Report

Commit: ab3094d | Metric definitions

Page Device Score FCP LCP TBT CLS SI
Homepage Mobile 🔴 26 6.8s 13.4s 4741ms 0.000 11.4s
Homepage Desktop 🟡 85 0.7s 1.4s 156ms 0.023 2.7s
Install Pulumi Mobile 🔴 35 4.9s 7.5s 260ms 0.450 7.3s
Install Pulumi Desktop 🟡 78 1.1s 2.6s 22ms 0.011 2.7s
AWS Get Started Mobile 🟡 52 5.0s 8.6s 261ms 0.073 7.8s
AWS Get Started Desktop 🟡 87 1.1s 1.6s 22ms 0.024 2.6s

jkodroff added a commit that referenced this pull request May 18, 2026
Scrubs residual "CrossGuard" wording from active docs and template pages,
routing links to the canonical /docs/insights/policy/ path. Deletes the
orphan crossguard.html layout, the unreachable /docs/crossguard/ branch in
the breadcrumb schema partial, and an obsolete screenshot. Fixes a latent
bug on /product/pulumi-cloud/ where the "Pulumi Policies" tab did nothing
because the JS click handler still referenced the old crossguard-select id.

All crossguard URL aliases on moved pages and the product page are
preserved to keep SEO and external links intact.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* Drop pulumi-cloud.ts rename; superseded by #19123

The previous commit on this branch renamed crossguard-select →
policies-select in theme/src/ts/pulumi-cloud.ts as a fix for the broken
"Pulumi Policies" tab on /product/pulumi-cloud/. PR #19123 supersedes
that fix by deleting the entire /product/pulumi-cloud/ page along with
its dedicated JS file, making this rename moot.

Restoring pulumi-cloud.ts to its master state so this PR doesn't conflict
with #19123 on merge. When #19123 lands first (the intended order), this
PR's diff against master will contain zero touches to the now-deleted
file.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-authored-by: Cam Soper <csoper@pulumi.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants