Skip to content

refactor(layouts): unify product and event pages on template-page layout - #20487

Merged
jeffmerrick merged 2 commits into
masterfrom
jeffmerrick/refactor-template-partials
Jul 27, 2026
Merged

refactor(layouts): unify product and event pages on template-page layout#20487
jeffmerrick merged 2 commits into
masterfrom
jeffmerrick/refactor-template-partials

Conversation

@jeffmerrick

@jeffmerrick jeffmerrick commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

Just some organization and refactoring of stuff that was bugging me. Event landing pages now use the same shared template system as product and parter pages. It's also renamed to template-page to make it's actual usage more clear (can be used for content other than product pages.)

To think about for future work: will be be creating more event landing pages in the future? If not, can the two we have be removed and redirected to standard event pages?


Proposed changes

Renames the product-page layout to template-page and migrates the KubeCon and Google Cloud Next event pages from the bespoke event-page layout onto the shared sections: array system, deleting the old layout and its orchestrator partial. Generic partials move out of template-partials/ (code-snippets, mini-cards, external-link-attrs, events/event-card) per the naming convention now documented in template-page-content.html, and the case-study TOC and whitepaper sidebar nav consolidate into a shared section-toc.html with a renamed data-section-toc scrollspy hook. Dead partials (card.html, template-card.html, card-group-toggled.html, card-button-download.html) are inlined into their only callers or deleted, with proserv.html rewritten to stand alone on shared .card/.btn styles, and the unused icon_style: black option removed. Padding-hack aspect ratios are replaced with Tailwind aspect-* utilities, and stale i selectors now target the .ph-icon sprite icons. AGENTS.md, the event page guides, the figma-to-template-page skill, and the case-studies archetype are updated for the new names; verified with a full local Hugo build, including production-parity checks on /proserv/.

Rename the product-page layout to template-page and migrate the KubeCon
and Google Cloud Next event pages from the bespoke event-page layout to
the shared sections-array system, deleting the event-page layout and its
orchestrator partial.

Also:
- Move generic partials out of template-partials/ (code-snippets,
  mini-cards, external-link-attrs, events/event-card) per the new naming
  convention documented in template-page-content.html
- Consolidate case-studies/toc.html and template-sidebar-nav.html into a
  shared section-toc.html partial (case studies + whitepapers), with the
  scrollspy hook renamed to data-section-toc
- Inline the card.html and template-card.html partials into their only
  callers (card-group.html, template-two-column.html, proserv.html) and
  delete them along with card-group-toggled.html, card-button-download.html,
  and the unused icon_style: black option
- Replace padding-hack aspect ratios with Tailwind aspect-* utilities and
  fix stale i selectors to target .ph-icon sprite icons
- Update AGENTS.md, event page guides, the figma-to-template-page skill,
  and the case-studies archetype for the new names

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@pulumi-bot

pulumi-bot commented Jul 23, 2026

Copy link
Copy Markdown
Collaborator

@pulumi-bot

pulumi-bot commented Jul 23, 2026

Copy link
Copy Markdown
Collaborator

Lighthouse Performance Report

Commit: cf5e3e5 | Metric definitions

Page Device Score FCP LCP TBT CLS SI
Homepage Mobile 🔴 29 6.2s 12.9s 3665ms 0.000 6.7s
Homepage Desktop 🟡 73 0.8s 1.6s 326ms 0.037 2.9s
Install Pulumi Mobile 🟡 56 6.2s 9.8s 124ms 0.053 8.6s
Install Pulumi Desktop 🟡 82 1.5s 2.1s 0ms 0.015 1.9s
AWS Get Started Mobile 🟡 58 6.1s 8.9s 29ms 0.086 6.1s
AWS Get Started Desktop 🟡 80 1.4s 2.4s 0ms 0.019 1.9s

@jeffmerrick
jeffmerrick marked this pull request as ready for review July 24, 2026 13:55
@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: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 Jul 24, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Pre-merge Review — Last updated 2026-07-24T13:58:38Z

Tip

Summary: This is a layout refactor that migrates Pulumi's product and event marketing pages — the two event landing pages (content/google-cloud-next/, content/kubecon/), the content/product/* and content/partner/* pages, and content/topics/kubernetes.md — off the separate event-page/product-page layouts onto the single shared template-page layout and its sections: array, retiring the now-redundant event-page-content.html and per-page partials. Because every page's copy (booth numbers, dates, stats, testimonials, links, map embeds) is carried over verbatim into the new frontmatter shape, the failure mode to guard against is a structural one — a renamed key or dropped field the new partials don't read, which would silently blank a section — not new factual errors. Frontmatter validation (all 11 files parse; no alias or URL collisions), claim verification over the carried-over event copy, and Vale all ran; the full Hugo render of the migrated partials is exercised by the separate build job. Every flagged claim (the /product/neo/#video anchor, the placeholder-looking map-embed timestamp, the reframed 41% CNCF stat) predates this PR and is reproduced unchanged, so all sit in 💡 Pre-existing rather than blocking the refactor.

Review confidence:

Dimension Level Notes
mechanics MEDIUM frontmatter parses across all 11 files with no alias/URL collisions and Vale is clean, but the rendered template-page output is verified by the build job, not this review
facts MEDIUM the refactor introduces no new factual content; the flagged items are all carried over verbatim and a few external marketing URLs couldn't be independently confirmed
Investigation log
  • Cross-sibling reads: not run (not in a templated section)
  • External claim verification: 38 of 58 claims verified (5 unverifiable, 3 contradicted) · 4 specialists (numerical, cross-reference, capability, framing); 0 cross-specialist corroborations · routed: 0 inline, 44 Pass 1, 0 Pass 2, 14 Pass 3 (verified 10, contradicted 2, unverifiable 2).
  • 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 2 3 0

🔍 Verification trail

58 claims extracted · 38 verified · 5 unverifiable · 3 contradicted
  • L141 in AGENTS.md "- customer_logo is not card-only: it also renders on light backgrounds in the case-study page's quote panel (layouts/case-studies/single.html) and…" → ✅ verified (evidence: layouts/case-studies/single.html passes .Params.customer_logo into the quote-panel partial; both layouts/partials/template-partials/template-case-study-cards.html and template-case-study-grid.html independently read `$page.Params.custome…; source: repo:layouts/case-studies/single.html, repo:layouts/partials/template-partials/template-case-study-cards.html, repo:layouts/partials/template-partials/template-case-study-grid.html)
  • L13 in EVENT-PAGE-TEMPLATE-GUIDE.md "The authoritative list of section types and their fields is the header comment in [layouts/partials/template-page-content.html](layouts/partials/template-p…" → ✅ verified (evidence: The header comment in layouts/partials/template-page-content.html lists valid type values including hero, logo_banner, features, two_column, promo_banner, and three_column exactly as cited, e.g. "hero — template-hero.html", "…; source: repo:layouts/partials/template-page-content.html)
  • L3 in content/google-cloud-next/_index.md "Pulumi will be present at Google Cloud Next 2026, offering demos, workshops, and conversations about managing Google Cloud infrastructure at scale." → ✅ verified (evidence: Page front matter states: "meta_desc: Visit us at Google Cloud Next 2026 for demos, workshops, and conversations about managing Google Cloud infrastructure at scale." and hero section confirms "Join us at Google Cloud Next 2026 | Booth 362…; source: repo:content/google-cloud-next/_index.md)
  • L14-18 in content/google-cloud-next/_index.md "Pulumi's Google Cloud Next 2026 booth location is at Mandalay Bay, Las Vegas, and the embedded map points to the Mandalay Bay Convention Center." (also L89, L133-134, L137) → ✅ verified (evidence: Multiple independent sources confirm Google Cloud Next 2026 is held at Mandalay Bay Convention Center in Las Vegas, e.g. "Google Cloud Next 2026 will take place from April 22 - 24, 2026, at the Mandalay Bay Convention Center in Las Vegas,"…; source: https://www.webmobi.com/discovery/events/google-cloud-next-las-vegas-2026-conference-20251127; https://www.linkedin.com/posts/pulumi_meet-pulumi-at-google-cloud-next-2026-booth-activity-7452116043642351616-LVea)
  • L29 in content/google-cloud-next/_index.md "Pulumi is trusted by over 4,000 innovative companies." → ✅ verified (evidence: Pulumi's own homepage currently states: "Trusted by over 4,000 innovative companies · From open source IaC to AI-driven workflows, Pulumi gives platform teams all they need to build and scale cloud infrastructure."; source: https://www.pulumi.com/)
  • L32-43 in content/google-cloud-next/_index.md "Snowflake, BMW, Mercedes Benz, NVIDIA, Webflow, and Deloitte are customers of Pulumi." → ✅ verified (evidence: The page's own logo_banner section lists these six companies as customers under "Trusted by over 4,000 innovative companies," and Snowflake is independently corroborated by a named customer testimonial (Raman Hariharan, former Head of Engi…; source: repo:content/google-cloud-next/_index.md)
  • L48 in content/google-cloud-next/_index.md "We'll have live demos, solution architects ready to dig into your Google Cloud questions, and a few new things to share that we think platform and infrastructu…" → ➖ not-a-claim (evidence: This is promotional/marketing copy describing the PR author's own event plans (live demos, solution architects, announcements) rather than a falsifiable third-party assertion that can be checked against an external source.; source: repo:content/google-cloud-next/_index.md)
  • L54-56 in content/google-cloud-next/_index.md "Pulumi supports provisioning Google Kubernetes Engine (GKE) clusters, Cloud Run services, and BigQuery datasets using languages like TypeScript, Python, C#, an…" → ✅ verified (evidence: The source file itself states: "See how teams use languages like TypeScript, Python, C#, and Go to provision GKE clusters, Cloud Run services, BigQuery datasets, and more, with changes previewed and tested before deployment." This is a fai…; source: repo:content/google-cloud-next/_index.md (L54-56))
  • L54-56 in content/google-cloud-next/_index.md "Pulumi supports provisioning Google Kubernetes Engine (GKE) clusters." → ✅ verified (evidence: The pulumi-gcp provider (registry.terraform mirror) exposes gcp.container.Cluster for provisioning GKE clusters, and the same page's workshop section explicitly describes creating a "Google Kubernetes Engine (GKE) cluster" with Pulumi, c…; source: repo:content/google-cloud-next/_index.md (L76: "Create a Google Kubernetes Engine (GKE) cluster"))
  • L57-60 in content/google-cloud-next/_index.md "Pulumi Neo can stand up new services, diagnose and fix failures, enforce policies, and migrate cloud resources managed from tools like Terraform, with human re…" → ✅ verified (evidence: content/google-cloud-next/_index.md itself states: "Watch Neo stand up new services, diagnose and fix failures, enforce policies, and migrate cloud resources managed from tools like Terraform — with human review at every step," matching th…; source: repo:content/google-cloud-next/_index.md, repo:content/product/neo.md, repo:content/partner/aws.md)
  • L61-64 in content/google-cloud-next/_index.md "Pulumi lets teams manage Google Cloud alongside AWS, Azure, on-prem Kubernetes, and hundreds more cloud service providers with a single, unified platform and p…" → ✅ verified (evidence: Pulumi's own product page states: "Access AWS, Azure, Google Cloud, Kubernetes, and hundreds of providers through a unified, consistent API," and the integrations page notes Pulumi integrates with "AWS, Azure, Google Cloud, Kubernetes, and…; source: https://www.pulumi.com/product/infrastructure-as-code/)
  • L74 in content/google-cloud-next/_index.md "Attendees can book a Google Cloud Next booth demo via the Calendly link https://calendly.com/pulumi-meetings/google-cloud-next-booth-demo-2026." → ➖ not-a-claim (evidence: The URL is a self-authored Calendly booking link used consistently twice in the same page (lines 74 and 149) as a CTA href, not a third-party factual assertion requiring external verification.; source: repo:content/google-cloud-next/_index.md)
  • L76-77 in content/google-cloud-next/_index.md "There is a workshop titled 'Getting started with Kubernetes on Google Cloud' scheduled for May 13, 2026, at 9 AM PT." → ➖ not-a-claim (evidence: The text is the PR author's own event-listing copy on their own landing page (title: 'Getting started with Kubernetes on Google Cloud', subheader: 'May 13, 2026, at 9 AM PT') — a self-authored schedule announcement, not a third-party-attri…; source: repo:content/google-cloud-next/_index.md L75-77)
  • L79-82 in content/google-cloud-next/_index.md "The Kubernetes on Google Cloud workshop teaches attendees to create a Google Kubernetes Engine (GKE) cluster, deploy and update containerized applications usin…" (also L84) → ✅ verified (evidence: The file itself (content/google-cloud-next/_index.md, lines 79-84) states: "You'll learn how to: - Create a Google Kubernetes Engine (GKE) cluster - Deploy and update containerized applications using safe, repeatable workflows - Understand…; source: repo:content/google-cloud-next/_index.md)
  • L86 in content/google-cloud-next/_index.md "Registration for the Kubernetes on Google Cloud workshop is available at /events/getting-started-with-kubernetes-google-cloud." → ✅ verified (evidence: The linked page exists in the docs repo at content/events/getting-started-with-kubernetes-google-cloud/index.md, confirming /events/getting-started-with-kubernetes-google-cloud is a valid registration page path referenced consistently in b…; source: gh api repos/pulumi/docs/contents/content/events/getting-started-with-kubernetes-google-cloud)
  • L89 in content/google-cloud-next/_index.md "Pulumi is hosting a game called 'Infra Chaos' at Booth 3624." → ✅ verified (evidence: The file itself states: "Play Infra Chaos at Booth 3624" and elsewhere "play Infra Chaos for prizes... Booth 3624, Mandalay Bay, Las Vegas", confirming Pulumi is hosting the 'Infra Chaos' game at Booth 3624.; source: repo:content/google-cloud-next/_index.md)
  • L91 in content/google-cloud-next/_index.md "Infra Chaos is a fast-moving, arcade-style challenge where players dodge bugs, outages, and system failures, collect boosts, and survive as the pace increases,…" → ➖ not-a-claim (evidence: The claim text is a near-verbatim restatement of the page's own promo_banner description in content/google-cloud-next/_index.md line 91: "A fast-moving, arcade-style challenge where you dodge bugs, outages, and system failures. Collect bo…; source: repo:content/google-cloud-next/_index.md)
  • L102-104 in content/google-cloud-next/_index.md "Pulumi allows managing Kubernetes clusters, container services, access policies, and more in TypeScript, Python, Go, and Java, with full IDE support, abstracti…" → ✅ verified (evidence: The claim is a faithful paraphrase of the page's own content: "Manage Kubernetes clusters, container services, access policies and more in TypeScript, Python, Go, Java — with full IDE support, abstractions, tests, and components shareable…; source: repo:content/google-cloud-next/_index.md L102-104)
  • L102-104 in content/google-cloud-next/_index.md "Pulumi supports writing infrastructure code in TypeScript." → ✅ verified (evidence: Pulumi's core product supports writing infrastructure as code in TypeScript, along with JavaScript, Python, Go, C#, Java, and YAML — this is a foundational, well-documented Pulumi capability (SDKs published as @pulumi/pulumi npm package fo…; source: repo:content/google-cloud-next/_index.md (general Pulumi product knowledge; TypeScript is a core supported Pulumi language))
  • L106 in content/google-cloud-next/_index.md "Pulumi's infrastructure-as-code documentation is located at /docs/iac/." → ✅ verified (evidence: The link cta_link: /docs/iac/ in content/google-cloud-next/_index.md points to an existing page: repo listing confirms content/docs/iac/_index.md exists in pulumi/docs, which builds to the /docs/iac/ documentation section.; source: gh api repos/pulumi/docs/contents/content/docs/iac)
  • L108-110 in content/google-cloud-next/_index.md "Pulumi Cloud handles state management, encrypted secrets, access control, and deployment history." → ✅ verified (evidence: The source file itself states: "Handle state management, encrypted secrets, access control, deployment history, and more with Pulumi Cloud, so your team can focus on building and shipping your product." The claim is a direct paraphrase of…; source: repo:content/google-cloud-next/_index.md (L108-110))
  • L112 in content/google-cloud-next/_index.md "Pulumi's deployments documentation is located at /docs/deployments/." → ✅ verified (evidence: The pulumi/docs repo contains content/docs/deployments/_index.md (title: "Deployments & Workflows"), which is the source file rendering the /docs/deployments/ page — confirming the URL exists and hosts deployments documentation.; source: gh api repos/pulumi/docs/contents/content/docs/deployments/_index.md)
  • L116 in content/google-cloud-next/_index.md "Pulumi Neo can be used to query environments, diagnose failures, and handle routine tasks." → ✅ verified (evidence: The source file itself states verbatim: "Use Neo to query your environments, diagnose failures, and handle routine tasks." This matches Pulumi's broader positioning of Neo as an infrastructure agent that investigates environments and autom…; source: repo:content/google-cloud-next/_index.md#L116)
  • L118 in content/google-cloud-next/_index.md "A video demonstrating Pulumi Neo is available at /product/neo/#video." → ❌ contradicted (evidence: The Pulumi Neo product page (content/product/neo.md) contains a video_embed section but its anchor is demo, not video (- type: video_embed ... anchor: demo). There is no #video anchor anywhere on the page, so the link /product/neo/…; source: repo:content/product/neo.md)
  • L121-126 in content/google-cloud-next/_index.md "Raman Hariharan, former Head of Engineering, Cloud Platform at Snowflake, is quoted as saying: 'When we demonstrated to people that what used to take a week an…" → ✅ verified (evidence: The file content/google-cloud-next/_index.md contains the exact testimonial block: quote: "When we demonstrated to people that what used to take a week and a half now, with Pulumi, took under a day, they were shocked." author: Raman Hari…; source: repo:content/google-cloud-next/_index.md)
  • L123-125 in content/google-cloud-next/_index.md "Raman Hariharan is the former Head of Engineering, Cloud Platform at Snowflake." → ✅ verified (evidence: Multiple sources confirm the title and that he has since left Snowflake: RocketReach lists "2019 - 2023 Head of Engineering, Cloud Platform @ Snowflake" and DTEX's bio states "Raman joined DTEX Systems from Snowflake where he was the Head…; source: https://rocketreach.co/raman-hariharan-email_9899549 and https://www.dtexsystems.com/leadership/raman-hariharan/)
  • L132-134 in content/google-cloud-next/_index.md "Pulumi's booth (Booth 3624) at Google Cloud Next 2026 is located at Mandalay Bay, Las Vegas, on April 22-24, 2026." → ✅ verified (evidence: Multiple sources confirm Google Cloud Next 2026 dates and venue: "Google Cloud Next 2026 is scheduled for April 22-24 at the Mandalay Bay Resort and Hotel in Las Vegas, Nevada." A LinkedIn post titled "Meet Pulumi at Google Cloud Next 2026…; source: https://sustainabletechpartner.com/event/google-cloud-next-2026-conference-dates-city-location/ and https://www.linkedin.com/posts/pulumi_meet-pulumi-at-google-cloud-next-2026-booth-activity-7452116043642351616-LVea)
  • L136 in content/google-cloud-next/_index.md "At Google Cloud Next 2026, attendees can see Pulumi Neo in action, play Infra Chaos for prizes, book a demo with Pulumi solutions architects, and talk infrastr…" → ✅ verified (evidence: Line 136 of the same file states verbatim: "Stop by to see Neo in action, play Infra Chaos for prizes, book a demo with our solutions architects, and talk infrastructure automation with the Pulumi team." The claim is a faithful paraphrase…; source: repo:content/google-cloud-next/_index.md)
  • L137 in content/google-cloud-next/_index.md "map_embed: 'https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3224.5476981498584!2d-115.17697768473695!3d36.09019998009456!2m3!1f0!2f0!3f0!3m2!1i1024!2i768…" → ❌ contradicted (evidence: Genuine Google Maps embed URLs always carry a real epoch-millisecond 4v timestamp captured at generation time (e.g. examples found: "4v1690259560583", "4v1517434233901", "4v1428381157098"). The claim's URL uses 4v1700000000000, a suspi…; source: WebSearch ran query "google maps embed pb parameter 4v1700000000000 placeholder generated"; intuition: The 4v1700000000000 timestamp is an implausibly round epoch-ms value (exactly 1.7×10^12); real Google-generated embed…)
  • L3 in content/kubecon/_index.md "Pulumi's KubeCon Europe 2026 presence covers managing Kubernetes with code, reducing YAML complexity, and deploying across AWS, Azure, and GCP." → ✅ verified (evidence: The page's own meta_desc reads: "Meet the Pulumi team at KubeCon Europe 2026 to see how teams manage Kubernetes with code, reduce YAML complexity, and deploy across AWS, Azure, and GCP" — matching the claim's framing exactly, and the featu…; source: repo:content/kubecon/_index.md)
  • L12-16 in content/kubecon/_index.md "KubeCon Europe 2026 takes place March 23-26 at the Amsterdam RAI." (also L129-133) → ✅ verified (evidence: Page content itself states date_and_location: "March 23-26, Amsterdam RAI" (L15) and location: "Booth 784, Amsterdam RAI
    March 23-26, 2026" (L132-133), consistent with publicly known KubeCon EU 2026 dates/venue.; source: repo:content/kubecon/_index.md)
  • L18 in content/kubecon/_index.md "Visitors can book a technical demo with Pulumi at https://info.pulumi.com/book-demo-kubecon-2026." → 🤷 unverifiable (evidence: (escalated from pass1) Search results confirm Pulumi's official KubeCon Europe 2026 page (pulumi.com/kubecon/) has a "Book a technical demo" CTA, and info.pulumi.com is a known Pulumi marketing landing-page domain used historically for Kub…; source: WebSearch ran query "info.pulumi.com/book-demo-kubecon-2026" and ""info.pulumi.com/book-demo-kubecon""; top results didn't directly confirm this exact URL)
  • L19 in content/kubecon/_index.md "KubeCon attendees who sign up for Pulumi Cloud receive $500 in AWS credits to use on their own infrastructure." (also L86-89) → ➖ not-a-claim (evidence: This is promotional copy describing the page authors' own KubeCon marketing campaign/offer ("Get $500 in AWS credits... All KubeCon attendees who sign up for Pulumi Cloud receive $500 in AWS credits"), consistent across the page (lines 19,…; source: repo:content/kubecon/_index.md)
  • L27 in content/kubecon/_index.md "Pulumi is trusted by over 4,000 innovative companies." → ✅ verified (evidence: Pulumi's official homepage currently states: "Trusted by over 4,000 innovative companies," matching the claim exactly.; source: https://www.pulumi.com/)
  • L30-41 in content/kubecon/_index.md "Deloitte, NVIDIA, BMW, Webflow, Snowflake, and Mercedes-Benz are customers of Pulumi." → 🤷 unverifiable (evidence: Multiple Pulumi press releases and the official pulumi.com/enterprise and case-studies pages confirm NVIDIA, BMW, Snowflake, and Mercedes-Benz as customers, e.g. "Snowflake, Mercedes-Benz, NVIDIA, and Lemonade are among a rapidly growing n…; source: https://www.pulumi.com/enterprise/; https://www.boringbusinessnerd.com/startups/pulumi; intuition: Deloitte is not corroborated by any source found, unlike the other five companies which are consistently and repeatedly… (WebSearch dispatched but verification did not converge within the turn budget))
  • L52-54 in content/kubecon/_index.md "Pulumi lets users define apps and infrastructure in TypeScript, Python, Go, C#, or Java, then deploy to any cloud with built-in policy enforcement and secrets…" → ✅ verified (evidence: The claim is a direct paraphrase of the file's own content at lines 52-54: "Define your apps and infrastructure in your language of choice: TypeScript, Python, Go, C#, or Java. Then deploy to any cloud, with built-in policy enforcement and…; source: repo:content/kubecon/_index.md)
  • L56-58 in content/kubecon/_index.md "Pulumi's AI agent Neo can stand up new Kubernetes clusters, keep them updated, migrate workloads across clouds, and enforce security policies across an entire…" → 🤝 matches (evidence: The claim is a faithful restatement of the page's own copy: "Our AI agent Neo is built to handle the work that platform teams actually do. Stand up new clusters, keep them updated, migrate workloads across clouds, and enforce security poli…; source: repo:content/kubecon/_index.md)
  • L60-62 in content/kubecon/_index.md "Pulumi provisions and manages Kubernetes clusters, resources, and deployments across AWS, Azure, Google Cloud, and on-prem with a single, unified platform." → ✅ verified (evidence: The claim is a direct paraphrase of the page's own content: "Provision and manage Kubernetes clusters, resources, deployments, and more across AWS, Azure, Google Cloud, and on-prem — all with a single, unified platform." This matches Pulum…; source: repo:content/kubecon/_index.md)
  • L72 in content/kubecon/_index.md "cta_link: https://info.pulumi.com/book-demo-kubecon-2026" → 🤷 unverifiable (evidence: The URL https://info.pulumi.com/book-demo-kubecon-2026 is an external HubSpot marketing landing page for a future (March 2026) KubeCon event CTA, used consistently twice in the same file (lines 72 and 138). This is a marketing infrastructu…; source: repo:content/kubecon/_index.md)
  • L74-80 in content/kubecon/_index.md "Pulumi is hosting a hands-on virtual workshop titled 'From Zero to Production in Kubernetes' on March 31, 2026 at 9 AM EST." → ➖ not-a-claim (evidence: This is the PR author's own event listing content (title, subheader date/time, description) for a Pulumi-hosted workshop, taken verbatim from content/kubecon/_index.md lines 73-82: 'title: From Zero to Production in Kubernetes' / 'subheade…; source: repo:content/kubecon/_index.md)
  • L77-80 in content/kubecon/_index.md "The 'From Zero to Production in Kubernetes' workshop teaches attendees to deploy production-ready applications repeatably across environments, implement securi…" → ➖ not-a-claim (evidence: The claim is a direct paraphrase of the page's own workshop description bullet list ("you'll learn how to: Deploy production-ready applications repeatably across environments; Implement security best practices with policy-as-code; Manage K…; source: repo:content/kubecon/_index.md L73-80)
  • L83 in content/kubecon/_index.md "Registration for the 'From Zero to Production in Kubernetes' workshop is available at /events/from-zero-to-production-in-kubernetes/." → ➖ not-a-claim (evidence: This is simply the CTA link (cta_link: /events/from-zero-to-production-in-kubernetes/) the PR author set up for their own "Register now" button on the kubecon page — it's a first-party navigational link within the author's own content, n…; source: repo:content/kubecon/_index.md (L83))
  • L86 in content/kubecon/_index.md "title: Get $500 in AWS credits" → ✅ verified (evidence: The official Pulumi KubeCon page states: "Stop by to see Neo in action, grab an exclusive Neo plushie, register for $500 in AWS credits, and talk infrastructure automation with the Pulumi engineering team."; source: https://www.pulumi.com/kubecon/)
  • L88 in content/kubecon/_index.md "All KubeCon attendees who sign up for Pulumi Cloud receive $500 in AWS credits to use on their" → ➖ not-a-claim (evidence: This is first-party promotional copy for Pulumi's own KubeCon booth campaign, consistent across the page (hero CTA "Get $500 in AWS credits", promo_banner title/description, and location section all state the same $500 offer). It's a marke…; source: repo:content/kubecon/_index.md)
  • L102-103 in content/kubecon/_index.md "Pulumi Cloud can manage existing Terraform or OpenTofu state without requiring migration." → ✅ verified (evidence: Sibling docs corroborate this: content/gads/terraform-migration/index.md states "Pulumi Cloud manages your existing Terraform state directly. Migrate at your pace, stack by stack," and content/docs/iac/comparisons/opentofu.md confirms "the…; source: repo:content/gads/terraform-migration/index.md; repo:content/docs/iac/comparisons/opentofu.md; repo:content/kubecon/_index.md)
  • L104-105 in content/kubecon/_index.md "Pulumi provides a guide on migration at /docs/iac/guides/migration/." → ✅ verified (evidence: content/docs/iac/guides/migration/_index.md exists with title "Migrating to Pulumi" and provides guidance on migrating from Terraform, CloudFormation, ARM, Kubernetes YAML, and Serverless Framework to Pulumi — matching the cta_link target…; source: repo:content/docs/iac/guides/migration/_index.md)
  • L105 in content/kubecon/_index.md "Pulumi provides IaC information at /product/infrastructure-as-code/." → ➖ not-a-claim (evidence: This is an internal CTA link (cta_link: /product/infrastructure-as-code/) within the site's own YAML content, not a falsifiable factual assertion. The same path is used consistently elsewhere in the repo (e.g. content/product/_index.md `…; source: repo:content/product/_index.md)
  • L109 in content/kubecon/_index.md "Already using Terraform? No problem. Pulumi Cloud can manage your existing Terraform or OpenTofu state — without having to migrate. Start new projects with Pul…" → 🤷 unverifiable (evidence: verification did not converge within 8 turns)
  • L111 in content/kubecon/_index.md "cta_link: /docs/iac/guides/migration/" → ✅ verified (evidence: The docs repo contains content/docs/iac/guides/migration/_index.md, confirming the linked path /docs/iac/guides/migration/ resolves to a real page (also contains aws-import-ids.md, converters.md, import, migrating-to-pulumi subpages).; source: gh api repos/pulumi/docs/contents/content/docs/iac/guides/migration)
  • L115 in content/kubecon/_index.md "41% of AI developers are moving to cloud-native infrastructure." → ❌ contradicted (framing: shifted — source says "41% of AI developers currently identify as cloud native" (a static adoption snapshot) vs. claim's "41% ... are moving to cloud-native in…; evidence: The CNCF/SlashData State of Cloud Native Development report states "only 41% of professional AI developers currently identify as cloud native" — a current adoption/identification rate, not a claim that 41% "are moving to" cloud-native infr…; source: https://www.cncf.io/blog/2026/03/26/the-platform-under-the-model-how-cloud-native-powers-ai-engineering-in-production/)
  • L117 in content/kubecon/_index.md "Pulumi provides AI infrastructure information at /product/superintelligence-infrastructure/." → 🤷 unverifiable (evidence: verification did not converge within 8 turns)
  • L120-123 in content/kubecon/_index.md "BMW's Platform Engineering Team stated that they manage over 20,000 resources across multiple clouds with Pulumi, and that Pulumi solved their Terraform coordi…" → ✅ verified (evidence: The file itself contains this exact testimonial: quote: "We manage over 20,000 resources across multiple clouds with Pulumi. It solved our Terraform coordination overhead and gave us the velocity we needed." attributed to "Platform Engi…; source: repo:content/kubecon/_index.md (L119-126))
  • L133 in content/kubecon/_index.md "March 23-26, 2026" → ✅ verified (evidence: CNCF's official announcement confirms: "KubeCon + CloudNativeCon Europe returns 23-26 March in Amsterdam" for 2026, corroborated by the Linux Foundation events page and multiple other sources.; source: https://www.cncf.io/blog/2025/08/05/kubecon-cloudnativecon-europe-2026-returning-to-amsterdam-23-26-march/)
  • L135 in content/kubecon/_index.md "Pulumi's KubeCon Europe 2026 booth will feature a Neo product demonstration and an exclusive Neo plushie giveaway." → ➖ not-a-claim (evidence: The line itself is the page's own promotional copy: "Stop by to see Neo in action, grab an exclusive Neo plushie, register for $500 in AWS credits..." — this is a faithful restatement of the PR author's own page content, not an externally-…; source: repo:content/kubecon/_index.md)
  • L135 in content/kubecon/_index.md "Stop by to see Neo in action, grab an exclusive Neo plushie, register for $500 in AWS credits, and talk infrastructure automation with the Pulumi engineering t…" → ✅ verified (evidence: The live Pulumi KubeCon page contains this exact sentence: "Stop by to see Neo in action, grab an exclusive Neo plushie, register for $500 in AWS credits, and talk infrastructure automation with the Pulumi engineering team."; source: https://www.pulumi.com/kubecon/)
  • L136 in content/kubecon/_index.md "map_embed: 'https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d2437.6116720155323!2d4.886040676670286!3d52.341190572014874!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!…" → ✅ verified (evidence: The embed URL encodes a Google Maps place labeled "Amsterdam RAI" (visible as "2sAmsterdam%20RAI" in the pb parameter), and independent sources confirm KubeCon + CloudNativeCon Europe 2026 is held at RAI Amsterdam: "2026 edition of KubeCon…; source: https://10times.com/kubecon-and-cloudnativecon-europe-amsterdam)
  • L138 in content/kubecon/_index.md "cta_link: https://info.pulumi.com/book-demo-kubecon-2026" → ➖ not-a-claim (evidence: This is a CTA link value in a landing-page data file, used consistently 3 times across content/kubecon/_index.md (lines 18, 72, 138) pointing to the same info.pulumi.com marketing landing page. It's a configuration/data value, not a falsif…; source: repo:content/kubecon/_index.md)
  • L3 in content/product/secrets-management.md "Pulumi ESC can centralize secrets and configurations." → ✅ verified (evidence: The page's own meta_desc states "Centralize secrets and configurations with Pulumi ESC" and the body states "Pulumi ESC (Environments, Secrets, Configuration) centralizes secrets from every vault and cloud provider," directly matching the…; source: repo:content/product/secrets-management.md)

🚨 Outstanding in this PR

No outstanding issues in this PR. Every flagged claim is pre-existing content reproduced verbatim by this refactor — see 💡 Pre-existing.

⚠️ Low-confidence

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

  • [L18] content/kubecon/_index.md"Visitors can book a technical demo with Pulumi at https://info.pulumi.com/book-demo-kubecon-2026." — This info.pulumi.com marketing landing page (the hero cta_primary_link, carried over verbatim by the refactor) couldn't be independently confirmed as live — it's an external HubSpot page for a March 2026 event that may not be published yet. Not a blocker, but worth a quick check before the page goes live: @jeffmerrick — does https://info.pulumi.com/book-demo-kubecon-2026 resolve? The same URL is reused in the location section and as the two-column CTA.

  • [L30-41] content/kubecon/_index.md"Deloitte, NVIDIA, BMW, Webflow, Snowflake, and Mercedes-Benz are customers of Pulumi." — This is the customer logo banner, carried over verbatim by the refactor. Five of the six names (NVIDIA, BMW, Webflow, Snowflake, Mercedes-Benz) are corroborated by Pulumi's public enterprise/case-study pages; only Deloitte couldn't be corroborated. The identical six-logo banner also appears on the sibling content/google-cloud-next/_index.md page (its own logo_banner section), so the two event pages are at least internally consistent. Not a blocker, but since a logo implies a customer relationship: @jeffmerrick — is the Deloitte logo cleared for use here? If not, drop it from both event pages.

📋 Triaged verifier findings

I double-checked these and realized they weren't real findings — click to expand
  • [L72] content/kubecon/_index.md"cta_link: https://info.pulumi.com/book-demo-kubecon-2026"Mis-sourced: this is the same https://info.pulumi.com/book-demo-kubecon-2026 URL already surfaced at L18 above (it appears three times in the file). Rather than duplicate the check, the one live-URL question is filed once under ⚠️ Low-confidence (L18).

  • [L109] content/kubecon/_index.md"Already using Terraform? No problem. Pulumi Cloud can manage your existing Terraform or OpenTofu state — without having to migrate. Start new projects with Pul…"Mis-sourced: the verification ran out of turns, but the identical capability is confirmed by the ✅ verified entry at L102-103 (Pulumi Cloud manages existing Terraform/OpenTofu state without migration, corroborated by content/gads/terraform-migration/ and content/docs/iac/comparisons/opentofu.md). This is a duplicate of an already-verified claim.

  • [L117] content/kubecon/_index.md"Pulumi provides AI infrastructure information at /product/superintelligence-infrastructure/."Mis-sourced: this is an internal link, checkable in-repo — content/product/superintelligence-infrastructure.md exists on the branch, so /product/superintelligence-infrastructure/ resolves. The verification treated it as an external claim and ran out of turns.

💡 Pre-existing issues in touched files (optional)

Carried over verbatim by this refactor — the diff only reindents these values into the new sections: array, it doesn't introduce them. Worth fixing, but not blockers for a structural migration.

  • [L118] content/google-cloud-next/_index.md"See Neo in action" → cta_link: /product/neo/#videoPre-existing: the Neo page's video section uses anchor: demo, not video (there is no #video anchor on content/product/neo.md), so this link lands at the top of the page instead of the demo video. Since this PR also touches content/product/neo.md, this is a cheap fix to fold in:

        cta_link: /product/neo/#demo
  • [L137] content/google-cloud-next/_index.md"map_embed: 'https://www.google.com/maps/embed?pb=…!2sMandalay%20Bay%20Convention%20Center!…!4v1700000000000!…'"Pre-existing: the embed's place data is correct (it resolves to the Mandalay Bay Convention Center at the right coordinates), but the trailing 4v1700000000000 cache-buster is an implausibly round value that looks hand-set rather than produced by Google's "Embed a map" export — unlike the KubeCon embed on the sibling page, whose 4v1769463657049 is a genuine generated timestamp. Regenerating this embed from Google Maps' share dialog would replace it with a real value. Very low priority — the map should still render.

  • [L115] content/kubecon/_index.md"41% of AI developers are moving to cloud-native infrastructure."Pre-existing: the CNCF/SlashData State of Cloud Native Development source says "only 41% of professional AI developers currently identify as cloud native" — a static adoption snapshot, not a claim that 41% "are moving to" cloud-native infrastructure (which implies an in-progress trend). Tightening the wording to match the source keeps the stat defensible, e.g.:

    41% of AI developers already identify as cloud native.

    (CNCF, Mar 2026)

✅ Resolved since last review

No items resolved since the last review.

📜 Review history

  • 2026-07-24T13:58:38Z — Structural refactor onto the shared template-page layout; frontmatter parses cleanly with no collisions and no new factual content — the broken /product/neo/#video anchor, placeholder map-embed timestamp, and reframed 41% CNCF stat are all carried over verbatim and flagged as pre-existing, so no merge blockers. (93f3b69)

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 Jul 24, 2026
Resolve conflict in template-hero.html: keep the renamed external-link-attrs.html partial path from this branch and the data-role="cta-secondary" A/B test attribute from master (#20347).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@github-actions github-actions Bot added review:stale New commits since last Claude review; refresh on next ready-transition or @claude mention and removed review:no-blockers Claude review completed cleanly; outstanding is empty labels Jul 24, 2026

@cnunciato cnunciato 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.

will be be creating more event landing pages in the future? If not, can the two we have be removed and redirected to standard event pages?

I doubt it, but let's hold onto these two just because they're our two largest, and having this extra marketing surface for them isn't necessarily hurting us.

@jeffmerrick
jeffmerrick merged commit 7c8c459 into master Jul 27, 2026
16 checks passed
@jeffmerrick
jeffmerrick deleted the jeffmerrick/refactor-template-partials branch July 27, 2026 15:11
jeffmerrick added a commit that referenced this pull request Jul 27, 2026
…page-redesign

Two conflicts, both from master's #20487 layout refactor overlapping this
branch's events redesign:

- layouts/partials/events/list-section.html: master renamed
  template-partials/template-event-card.html to events/event-card.html and
  passes an "upcoming" flag. Took master's new partial path with this branch's
  parameter set: the redesigned card derives its CTA from the event's
  youtube_url, and the list only renders events that are upcoming or have a
  recording, so "not on-demand" is equivalent to "upcoming" and the flag is
  redundant.

- theme/src/scss/_templates.scss: kept this branch's font-overline month header
  and dropped master's .template-event-card / .event-card-grid blocks. The
  redesigned card composes .card / .card-hover / .badge / .btn instead, so none
  of those class names are referenced anywhere in the merged tree.

Git resolved the card itself as a rename, carrying this branch's changes onto
master's new path; master's edit there was a pure move with no content change.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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:stale New commits since last Claude review; refresh on next ready-transition or @claude mention

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants