From 8f5fa6dd89297499e09afb63b9c61d52a26dd448 Mon Sep 17 00:00:00 2001 From: workprentice <257153108+workprentice@users.noreply.github.com> Date: Sat, 22 Aug 2026 12:54:06 +0000 Subject: [PATCH] Fix latent @id mismatches in unwired product-entities.html / related-content.html MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Both partials are confirmed unwired dead code (grep-verified: never called from graph-builder.html or any collector), so this changes zero rendered output today. Fixing the dangling @id references now so whoever eventually wires these into graph-builder.html does not inherit pre-existing reference-integrity bugs. product-entities.html: - The 4x isPartOf reference to the Pulumi Platform SoftwareApplication node used "https://www.pulumi.com/product/#pulumi-platform", but that node is only ever defined at the homepage root, "https://www.pulumi.com/#pulumi-platform" (graph-builder.html). This was the audit finding (PR #20908). - Sister bugs in the same file, same defect class: the CLI, Cloud, ESC, and Insights entries used made-up @ids (#pulumi-cli, #software) that no collector anywhere defines. Every product page's real main entity id is the relative "#main-content" emitted by product-entity.html, so these now point at "#main-content" instead. - The ESC and Insights entries also used the pre-redirect URLs /product/esc/ and /product/pulumi-insights/, which are now 301 aliases onto /product/secrets-management/ and /product/insights-governance/ respectively. Updated both the @id and url fields to the canonical pages. related-content.html: - Docs/tutorial cross-links used "#article", "#software", and "#course" @id fragments that no collector defines; the real main entity id on every page is "#main-content". - The tutorial-to-docs links pointed at /docs/clouds/{cloud}/get-started/, which now redirect (301) to /docs/iac/get-started/{cloud}/. - The doc-to-tutorial links declared @type "Course", but no collector in the pipeline ever emits Course; rendering the real tutorial pages through an isolated Hugo harness confirms they emit TechArticle. The Article stubs for cloud docs were also updated to TechArticle to match how article-entity.html actually types docs pages. Verified with an isolated Hugo harness that copies the real layouts/partials and content trees and renders schema/graph-builder.html for every affected page: rendered output (all 80 pages) is byte-identical before and after this change, confirming zero live-render impact, and every @id this change introduces matches a node the harness actually emits on the real page. --- 🧠 This PR was created by workprentice (https://github.com/workprentice). --- .../schema/utils/product-entities.html | 20 ++++----- .../schema/utils/related-content.html | 44 +++++++++---------- 2 files changed, 32 insertions(+), 32 deletions(-) diff --git a/layouts/partials/schema/utils/product-entities.html b/layouts/partials/schema/utils/product-entities.html index fb59ca3f40b6..9e61a1dfe414 100644 --- a/layouts/partials/schema/utils/product-entities.html +++ b/layouts/partials/schema/utils/product-entities.html @@ -7,7 +7,7 @@ {{/* Define all Pulumi products with their relationships */}} {{ $pulumiCLI := dict "@type" "SoftwareApplication" - "@id" "https://www.pulumi.com/#pulumi-cli" + "@id" "https://www.pulumi.com/product/infrastructure-as-code/#main-content" "name" "Pulumi CLI" "applicationCategory" "Infrastructure as Code" "operatingSystem" (slice "macOS" "Windows" "Linux") @@ -19,47 +19,47 @@ ) "isPartOf" (dict "@type" "SoftwareApplication" - "@id" "https://www.pulumi.com/product/#pulumi-platform" + "@id" "https://www.pulumi.com/#pulumi-platform" "name" "Pulumi Platform" ) }} {{ $pulumiCloud := dict "@type" "SoftwareApplication" - "@id" "https://www.pulumi.com/product/#software" + "@id" "https://www.pulumi.com/product/#main-content" "name" "Pulumi Cloud" "applicationCategory" "Cloud Management Platform" "url" "https://www.pulumi.com/product/" "isPartOf" (dict "@type" "SoftwareApplication" - "@id" "https://www.pulumi.com/product/#pulumi-platform" + "@id" "https://www.pulumi.com/#pulumi-platform" "name" "Pulumi Platform" ) }} {{ $pulumiESC := dict "@type" "SoftwareApplication" - "@id" "https://www.pulumi.com/product/esc/#software" + "@id" "https://www.pulumi.com/product/secrets-management/#main-content" "name" "Pulumi ESC" "alternateName" "Pulumi Environments, Secrets, and Configuration" "applicationCategory" "Secrets Management" - "url" "https://www.pulumi.com/product/esc/" + "url" "https://www.pulumi.com/product/secrets-management/" "isPartOf" (dict "@type" "SoftwareApplication" - "@id" "https://www.pulumi.com/product/#pulumi-platform" + "@id" "https://www.pulumi.com/#pulumi-platform" "name" "Pulumi Platform" ) }} {{ $pulumiInsights := dict "@type" "SoftwareApplication" - "@id" "https://www.pulumi.com/product/pulumi-insights/#software" + "@id" "https://www.pulumi.com/product/insights-governance/#main-content" "name" "Pulumi Insights" "applicationCategory" "Cloud Intelligence Platform" - "url" "https://www.pulumi.com/product/pulumi-insights/" + "url" "https://www.pulumi.com/product/insights-governance/" "isPartOf" (dict "@type" "SoftwareApplication" - "@id" "https://www.pulumi.com/product/#pulumi-platform" + "@id" "https://www.pulumi.com/#pulumi-platform" "name" "Pulumi Platform" ) }} diff --git a/layouts/partials/schema/utils/related-content.html b/layouts/partials/schema/utils/related-content.html index 90dc6ce89929..388f6e6e2e57 100644 --- a/layouts/partials/schema/utils/related-content.html +++ b/layouts/partials/schema/utils/related-content.html @@ -7,34 +7,34 @@ {{ $tutorialTitle := lower .Title }} {{ if in $tutorialTitle "aws" }} {{ $relatedContent = $relatedContent | append (dict - "@type" "Article" - "@id" "https://www.pulumi.com/docs/clouds/aws/get-started/#article" + "@type" "TechArticle" + "@id" "https://www.pulumi.com/docs/iac/get-started/aws/#main-content" "name" "AWS Documentation" ) }} {{ else if in $tutorialTitle "azure" }} {{ $relatedContent = $relatedContent | append (dict - "@type" "Article" - "@id" "https://www.pulumi.com/docs/clouds/azure/get-started/#article" + "@type" "TechArticle" + "@id" "https://www.pulumi.com/docs/iac/get-started/azure/#main-content" "name" "Azure Documentation" ) }} {{ else if in $tutorialTitle "gcp" }} {{ $relatedContent = $relatedContent | append (dict - "@type" "Article" - "@id" "https://www.pulumi.com/docs/clouds/gcp/get-started/#article" + "@type" "TechArticle" + "@id" "https://www.pulumi.com/docs/iac/get-started/gcp/#main-content" "name" "Google Cloud Documentation" ) }} {{ else if in $tutorialTitle "kubernetes" }} {{ $relatedContent = $relatedContent | append (dict - "@type" "Article" - "@id" "https://www.pulumi.com/docs/clouds/kubernetes/#article" + "@type" "TechArticle" + "@id" "https://www.pulumi.com/docs/iac/get-started/kubernetes/#main-content" "name" "Kubernetes Documentation" ) }} {{ end }} {{/* Link to main getting started */}} {{ $relatedContent = $relatedContent | append (dict - "@type" "Article" - "@id" "https://www.pulumi.com/docs/get-started/#article" + "@type" "TechArticle" + "@id" "https://www.pulumi.com/docs/get-started/#main-content" "name" "Getting Started with Pulumi" ) }} {{ end }} @@ -46,7 +46,7 @@ {{ if in $content "Pulumi Cloud" }} {{ $relatedContent = $relatedContent | append (dict "@type" "SoftwareApplication" - "@id" "https://www.pulumi.com/product/#software" + "@id" "https://www.pulumi.com/product/#main-content" "name" "Pulumi Cloud" ) }} {{ end }} @@ -54,7 +54,7 @@ {{ if in $content "Pulumi Deployments" }} {{ $relatedContent = $relatedContent | append (dict "@type" "SoftwareApplication" - "@id" "https://www.pulumi.com/product/pulumi-deployments/#software" + "@id" "https://www.pulumi.com/product/pulumi-deployments/#main-content" "name" "Pulumi Deployments" ) }} {{ end }} @@ -62,7 +62,7 @@ {{ if in $content "Pulumi ESC" }} {{ $relatedContent = $relatedContent | append (dict "@type" "SoftwareApplication" - "@id" "https://www.pulumi.com/product/secrets-management/#software" + "@id" "https://www.pulumi.com/product/secrets-management/#main-content" "name" "Pulumi ESC" ) }} {{ end }} @@ -70,7 +70,7 @@ {{ if in $content "Pulumi Neo" }} {{ $relatedContent = $relatedContent | append (dict "@type" "SoftwareApplication" - "@id" "https://www.pulumi.com/product/neo/#software" + "@id" "https://www.pulumi.com/product/neo/#main-content" "name" "Pulumi Neo" ) }} {{ end }} @@ -82,26 +82,26 @@ {{ if in $docPath "/aws/" }} {{ $relatedContent = $relatedContent | append (dict - "@type" "Course" - "@id" "https://www.pulumi.com/tutorials/creating-resources-aws/#course" + "@type" "TechArticle" + "@id" "https://www.pulumi.com/tutorials/creating-resources-aws/#main-content" "name" "Creating AWS Resources Tutorial" ) }} {{ else if in $docPath "/azure/" }} {{ $relatedContent = $relatedContent | append (dict - "@type" "Course" - "@id" "https://www.pulumi.com/tutorials/creating-resources-azure/#course" + "@type" "TechArticle" + "@id" "https://www.pulumi.com/tutorials/creating-resources-azure/#main-content" "name" "Creating Azure Resources Tutorial" ) }} {{ else if in $docPath "/gcp/" }} {{ $relatedContent = $relatedContent | append (dict - "@type" "Course" - "@id" "https://www.pulumi.com/tutorials/creating-resources-gcp/#course" + "@type" "TechArticle" + "@id" "https://www.pulumi.com/tutorials/creating-resources-gcp/#main-content" "name" "Creating GCP Resources Tutorial" ) }} {{ else if in $docPath "/kubernetes/" }} {{ $relatedContent = $relatedContent | append (dict - "@type" "Course" - "@id" "https://www.pulumi.com/tutorials/creating-resources-kubernetes/#course" + "@type" "TechArticle" + "@id" "https://www.pulumi.com/tutorials/creating-resources-kubernetes/#main-content" "name" "Creating Kubernetes Resources Tutorial" ) }} {{ end }}