Skip to content

content(what-is): expand the Infrastructure as Software explainer#19153

Merged
CamSoper merged 4 commits into
masterfrom
aleventer/what-is-iaSoftware-rewrite
May 19, 2026
Merged

content(what-is): expand the Infrastructure as Software explainer#19153
CamSoper merged 4 commits into
masterfrom
aleventer/what-is-iaSoftware-rewrite

Conversation

@alexleventer
Copy link
Copy Markdown
Contributor

Summary

Rewrites content/what-is/what-is-infrastructure-as-software.md from a marketing-leaning overview into a substantive reference that honestly distinguishes IaS from DSL-based IaC.

What changed

  • Opening definition — quotable one-paragraph definition followed by a lead-in that names the programmable lifecycle as the structural difference between IaS and DSL-based IaC.
  • What problems IaS is solving — three pressures (sophisticated cloud-native architectures, ephemeral infrastructure, self-service platform engineering).
  • DSL-based IaC vs. IaS comparison table — nine rows covering language, types, abstractions, sharing, testing, IDE support, programmable lifecycle, conditionals/loops, onboarding cost.
  • Seven engineering capabilities IaS adds — types, abstractions, package management, real testing, IDE-grade tooling, policy as code in the same language, composability with non-infra code.
  • Six concrete use cases where IaS pays off (cloud-native graphs, multi-cloud, platform engineering, self-service portals, MLOps/data, security-critical controls that need unit tests).
  • Automation API section — what's structurally only possible because IaS programs are ordinary code: internal developer platforms, multi-tenant SaaS provisioning, custom CI/CD, ChatOps, ephemeral environments.
  • Honest trade-offs section — readability discipline, language adoption cost, side-effect anti-patterns, ecosystem maturity gaps.
  • Pulumi-IaS section — first-class languages, typed SDKs, components as ordinary packages, CrossGuard, ESC, automation API, CI/CD-native.
  • FAQ — ten doubt-removers including Terraform comparison, CDK / CDKTF comparison, ops engineer onboarding, YAML, testing, platform engineering, migration, multi-cloud, performance.
  • Learn-more cross-links — IaC, DevOps, platform engineering, IaC for DevOps, IaC for Kubernetes, infrastructure testing.

Test plan

  • `make serve`; visit `/what-is/what-is-infrastructure-as-software/` and confirm the comparison table, headings, and code spans render correctly
  • Spot-check cross-links to `/docs/iac/packages-and-automation/automation-api/`, `/docs/insights/policy/`, the other what-is pages
  • CI lint + pinned review

🤖 Generated with Claude Code

Rewrites content/what-is/what-is-infrastructure-as-software.md from
a marketing-leaning overview into a substantive reference that
honestly distinguishes IaS from DSL-based IaC.

New structure:
- Bold quotable definition + question-driven TOC.
- Three problems that drive IaS adoption: sophisticated cloud-
  native architectures, ephemeral/dynamic infrastructure, self-
  service platform engineering.
- DSL-based IaC vs IaS comparison table across 9 dimensions
  including types, abstractions, sharing, testing, programmable
  lifecycle, onboarding.
- Seven engineering capabilities IaS adds: types, abstractions,
  package management, testing, IDE tooling, policy as code in the
  same language, composability with non-infra code.
- Six concrete use cases where IaS shines.
- Dedicated section on the automation API and its use cases (IDPs,
  multi-tenant SaaS, custom CI/CD, chatbots, ephemeral
  environments).
- Honest trade-offs section covering when IaS is more rope than
  signal, language onboarding cost, side-effect anti-patterns,
  ecosystem maturity gaps.
- Pulumi-IaS section: first-class languages, typed SDKs,
  components, CrossGuard, ESC, automation API, CI/CD-native.
- Ten FAQ entries covering Terraform vs Pulumi, CloudFormation
  CDK comparison, ops engineer adoption, YAML, testing, platform
  engineering, migration, multi-cloud, performance.
- Cross-links to IaC, DevOps, platform engineering, IaC for DevOps,
  IaC for Kubernetes, infrastructure testing.

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

pulumi-bot commented May 18, 2026

@alexleventer alexleventer marked this pull request as ready for review May 19, 2026 03:31
@github-actions github-actions Bot added review:triaging Claude Triage is currently classifying the PR domain:docs PR touches technical docs review:in-progress Claude review is currently running and removed review:triaging Claude Triage is currently classifying the PR labels May 19, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 19, 2026

Pre-merge Review — Last updated 2026-05-19T18:00:00Z

Tip

Summary: This PR rewrites and expands the /what-is/what-is-infrastructure-as-software/ explainer. All originally-flagged factual issues and six of eight low-confidence observations are resolved. CrossGuard (deprecated term) was already fully removed in a prior commit (441cc03). One non-blocking editorial observation on the language-list coverage of "full test mocks" remains.

Review confidence:

Dimension Level Notes
mechanics HIGH
facts HIGH All contradicted claims fixed; one remaining low-confidence item is a non-blocking editorial observation.
Investigation log
  • Cross-sibling reads: not run (not in a templated section)
  • External claim verification: 28 of 48 claims verified (7 unverifiable, 2 contradicted) · 4 specialists (numerical, cross-reference, capability, framing); 0 cross-specialist corroborations · routed: 0 inline, 36 Pass 1, 0 Pass 2, 12 Pass 3 (verified 8, contradicted 0, unverifiable 4).
  • 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/)
  • Re-entrant run (37218df): re-verified L117 low-confidence item against new diff; resolved. Author field change (zack-chasecam-soper) verified against team data.
  • Re-entrant run (37218df, #update-review by @CamSoper): CrossGuard term confirmed absent from current file (grep returned empty); already reflected in ✅ Resolved from 441cc03. No new commits since last review. L125 low-confidence observation re-verified; still present.
🚨 Outstanding ⚠️ Low-confidence 💡 Pre-existing ✅ Resolved
0 1 0 8

🔍 Verification trail

48 claims extracted · 28 verified · 7 unverifiable · 2 contradicted
  • L3 in content/what-is/what-is-infrastructure-as-software.md "Infrastructure as Software is IaC written in general-purpose programming languages." → ✅ verified (evidence: The file's meta_desc at L3 reads verbatim: "Infrastructure as Software is IaC written in general-purpose programming languages. Learn how it differs from DSL-based IaC and where it fits in practice."; source: repo:content/what-is/what-is-infrastructure-as-software.md)
  • L32 in content/what-is/what-is-infrastructure-as-software.md "Infrastructure as Code (IaC) uses domain-specific languages (DSLs) or markup formats like HCL, JSON, and YAML." → ✅ verified (evidence: The file at line 32 states: "It's the natural next step after infrastructure as code (IaC), which uses domain-specific languages (DSLs) or markup formats like HCL, JSON, and YAML" — exactly matching the claim.; source: repo:content/what-is/what-is-infrastructure-as-software.md)
  • L32 in content/what-is/what-is-infrastructure-as-software.md "Infrastructure as Software (IaS) is the practice of defining cloud infrastructure in general-purpose programming languages and applying the full toolchain of m…" → ➖ not-a-claim
  • L34 in content/what-is/what-is-infrastructure-as-software.md "IaS treats every cloud resource as a software object whose lifecycle can be programmed, abstracted, tested, packaged, and called from other programs." → ➖ not-a-claim
  • L34 in content/what-is/what-is-infrastructure-as-software.md "IaS enables automation patterns DSL-based IaC can't reach, including building self-service portals, embedding pulumi up inside a SaaS product, and using the same APIs internally that Pulumi itself uses." → ✅ verified
  • L49 in content/what-is/what-is-infrastructure-as-software.md "DSL-based IaC was a big jump forward in the 2010s, introducing versioning, code review, and reproducible environments to cloud operations." → ➖ not-a-claim
  • L57 in content/what-is/what-is-infrastructure-as-software.md "Both describe the desired state of cloud resources. The difference is what's around the description." → ➖ not-a-claim
  • L59 in content/what-is/what-is-infrastructure-as-software.md "DSL-based IaC restricts conditional and looped logic to constructs like for_each and count, while IaS uses native language constructs." → ✅ verified
  • L59 in content/what-is/what-is-infrastructure-as-software.md "DSL-based IaC (HCL, YAML, ARM) supports only limited or no types, while Infrastructure as Software supports full static types over cloud APIs." → ✅ verified
  • L59 in content/what-is/what-is-infrastructure-as-software.md "The IaS languages listed include TypeScript, Python, Go, C#, and Java." → ✅ verified
  • L69 in content/what-is/what-is-infrastructure-as-software.md "Onboarding for software engineers: New language to learn (DSL) vs. Same language they already use (IaS)." → ➖ not-a-claim
  • L71 in content/what-is/what-is-infrastructure-as-software.md "Pulumi's automation API exposes the Pulumi engine as a library that other programs can call, enabling infrastructure operations to be embedded in any code path." → ✅ verified
  • L78 in content/what-is/what-is-infrastructure-as-software.md "A reusable VPC pattern becomes a class whose constructor takes typed inputs." → ➖ not-a-claim
  • L79 in content/what-is/what-is-infrastructure-as-software.md "Internal IaS components ship through npm, PyPI, Go modules, NuGet, or Maven, with versions following semver and locked dependencies." → ✅ verified
  • L80 in content/what-is/what-is-infrastructure-as-software.md "Pulumi supports using Jest, pytest, go test, xUnit, and JUnit as test runners for infrastructure code." → ✅ verified
  • L82 in content/what-is/what-is-infrastructure-as-software.md "Pulumi policies can be written in TypeScript, JavaScript, Python, or OPA's Rego against the actual resource model." → ✅ verified (language list matches /docs/insights/policy/: "TypeScript/JavaScript (Node.js), Python, or OPA (Rego)"; source: repo:content/docs/insights/policy/_index.md)
  • L89 in content/what-is/what-is-infrastructure-as-software.md "Cloud-native architectures benefit from expressing infrastructure as typed code with shared abstractions." → ➖ not-a-claim
  • L92 in content/what-is/what-is-infrastructure-as-software.md "A platform team wraps Pulumi programs in a service or CLI using the automation API." → ➖ not-a-claim
  • L98 in content/what-is/what-is-infrastructure-as-software.md "The automation API exposes the Pulumi engine as a library that other programs can call." → ✅ verified (carries from L71 verdict; source: pulumi/pulumi sdk/go/auto/README.md)
  • L106 in content/what-is/what-is-infrastructure-as-software.md "Using DSL-based IaC tools programmatically typically means shelling out to a CLI, parsing text output." → ➖ not-a-claim
  • L106 in content/what-is/what-is-infrastructure-as-software.md "The Pulumi automation API replaces shelling out to a CLI with a typed function call." → ✅ verified
  • L108 in content/what-is/what-is-infrastructure-as-software.md "The automation API documentation covers the supported languages and patterns." → ✅ verified
  • L117 in content/what-is/what-is-infrastructure-as-software.md "Terraform's public module registry has a longer history and more entries in some categories." → ✅ verified (softened from previous unverifiable form; defensible as a qualitative statement about ecosystem maturity; resolved in 37218df)
  • L123 in content/what-is/what-is-infrastructure-as-software.md "Pulumi was built around the IaS model from day one." → ➖ not-a-claim
  • L125 in content/what-is/what-is-infrastructure-as-software.md "Pulumi supports TypeScript, JavaScript, Python, Go, C# (.NET), Java, plus YAML as first-class languages." → ✅ verified
  • L125 in content/what-is/what-is-infrastructure-as-software.md "Every language has full SDKs, full test mocks, and full ecosystem support." → 🤷 unverifiable
  • L126 in content/what-is/what-is-infrastructure-as-software.md "Types are generated from each provider's schema so they reflect the real cloud surface." → ✅ verified (fixed in 441cc03; "schema" is precise — bridged providers use Terraform provider schema; native providers use cloud API schema)
  • L126 in content/what-is/what-is-infrastructure-as-software.md "Pulumi provides typed SDKs for AWS, Azure, Google Cloud, Kubernetes, plus hundreds of other providers." → ✅ verified (fixed in 441cc03; "hundreds" is qualitatively correct and avoids baking in a stale number)
  • L127 in content/what-is/what-is-infrastructure-as-software.md "Reusable Pulumi components ship as ordinary packages in the language's package manager." → ✅ verified
  • L129 in content/what-is/what-is-infrastructure-as-software.md "Pulumi ESC keeps secrets out of code and state, pulled at runtime by IaS programs, CI jobs, and applications." → ✅ verified (docs link added in 441cc03; /docs/esc/ exists)
  • L130 in content/what-is/what-is-infrastructure-as-software.md "The Pulumi automation API allows embedding pulumi up, pulumi preview, and pulumi destroy inside any program." → ✅ verified
  • L131 in content/what-is/what-is-infrastructure-as-software.md "The continuous delivery guide covers common CI/CD patterns for Pulumi." → ✅ verified
  • L133 in content/what-is/what-is-infrastructure-as-software.md "Get started with Pulumi to provision and manage cloud infrastructure in the language your team already uses." → ✅ verified
  • L139 in content/what-is/what-is-infrastructure-as-software.md "All IaS is IaC; not all IaC is IaS." → ✅ verified
  • L143 in content/what-is/what-is-infrastructure-as-software.md "Pulumi differs from CDKTF in that there is no HCL layer in the middle." → ✅ verified
  • L143 in content/what-is/what-is-infrastructure-as-software.md "Terraform's HCL is a DSL designed specifically for IaC." → ✅ verified
  • L143 in content/what-is/what-is-infrastructure-as-software.md "The CDK for Terraform (CDKTF) lets you write TypeScript, Python, Go, Java, or C# that synthesizes HCL." → ✅ verified (fixed in 204512e)
  • L147 in content/what-is/what-is-infrastructure-as-software.md "Pulumi has no template synthesis layer, unlike CDKTF and AWS CDK." → ✅ verified
  • L147 in content/what-is/what-is-infrastructure-as-software.md "Plain CloudFormation YAML is a DSL." → ✅ verified
  • L147 in content/what-is/what-is-infrastructure-as-software.md "The AWS Cloud Development Kit (CDK) is an IaS-style layer on top of CloudFormation." → ✅ verified
  • L159 in content/what-is/what-is-infrastructure-as-software.md "Pulumi's test mocks replace cloud calls in unit tests, and the automation API can spin up ephemeral stacks for integration tests." → ✅ verified
  • L163 in content/what-is/what-is-infrastructure-as-software.md "The page 'What is Platform Engineering?' exists at /what-is/what-is-platform-engineering/." → ✅ verified
  • L167 in content/what-is/what-is-infrastructure-as-software.md "pulumi convert can translate HCL source into a Pulumi program in the language of your choice." → ✅ verified (link added in 441cc03 to /docs/iac/guides/migration/converters/)
  • L171 in content/what-is/what-is-infrastructure-as-software.md "One IaS program can mix resources from AWS, Azure, Google Cloud, Kubernetes, and any of hundreds of other Pulumi providers." → ✅ verified (fixed in 441cc03)
  • L173 in content/what-is/what-is-infrastructure-as-software.md "Is IaS slower than IaC at scale?" → ➖ not-a-claim
  • L175 in content/what-is/what-is-infrastructure-as-software.md "The Pulumi engine plans and applies the same way regardless of which language the program was written in." → ✅ verified
  • L179 in content/what-is/what-is-infrastructure-as-software.md "Pulumi is described as the leading platform built around infrastructure as software." → ✅ verified
  • L183-188 in content/what-is/what-is-infrastructure-as-software.md "All related-reading links exist." → ✅ verified

🚨 Outstanding in this PR

No outstanding items — all previously flagged findings have been resolved.

⚠️ Low-confidence

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

  • [L125] content/what-is/what-is-infrastructure-as-software.md"Every language has full SDKs, full test mocks, and full ecosystem support." — 🤷 unverifiable as a blanket claim. The preceding sentence lists YAML alongside TypeScript / Python / Go / .NET / Java; "full test mocks" doesn't really apply to YAML programs in the same way (testing is a language-runtime feature). The Pulumi docs landing page says each language "is equally capable and supports the full surface area of all Pulumi Registry providers," which is the bit you can cite. Author question: consider trimming "full test mocks" out of the sweeping form, or scoping the sentence to the GP-language SDKs.

📋 Triaged verifier findings

I double-checked these and realized they weren't real findings — click to expand
  • [L98] content/what-is/what-is-infrastructure-as-software.md"The automation API exposes the Pulumi engine as a library that other programs can call, meaning infrastructure operations can be embedded in any code path."Mis-sourced: the verification step ran out of turns on what is essentially the same claim already verified ✅ at L71 ("Pulumi's automation API exposes the Pulumi engine as a library that other programs can call, enabling infrastructure operations to be embedded in any code path"). The L71 verdict (sourced to pulumi/pulumi sdk/go/auto/README.md) carries this one too.

💡 Pre-existing issues in touched files (optional)

No pre-existing issues in touched files.

✅ Resolved since last review

  • [L117] Comparative claim softened to suggested phrasing: "Terraform's public module registry has a longer history and more entries in some categories" — removes the unverifiable direct-size comparison between incomparable registry counts. (resolved in 37218df)
  • [L82] CrossGuard language list corrected: removed unsupported "Java", added "JavaScript" — now reads "TypeScript, JavaScript, Python, or OPA's Rego". (resolved in 204512e)
  • [L143] CDKTF language list corrected: added missing "C#" — now reads "TypeScript, Python, Go, Java, or C#". (resolved in 204512e)
  • [L82, L128] "CrossGuard" (deprecated term) fully removed: L82 now reads "Pulumi policies"; L128 bullet retitled "Policy as code." (resolved in 441cc03)
  • [L126] "Types are generated from each provider's schema" (was "API") — more precise; correct for both native and bridged providers. (resolved in 441cc03)
  • [L126, L171] "hundreds of other providers" (was "100+") — avoids baking in a stale count. (resolved in 441cc03)
  • [L129] ESC docs link added: [ESC docs](/docs/esc/) alongside the existing /product/esc/ marketing link. (resolved in 441cc03)
  • [L167] pulumi convert linked to /docs/iac/guides/migration/converters/. (resolved in 441cc03)

📜 Review history

  • 2026-05-19T03:34:32Z — Two language-list claims contradicted by primary sources (CrossGuard at L82, CDKTF at L143); six unverified capability claims surfaced for author review. (c9077c2)
  • 2026-05-19T04:25:00Z — re-reviewed after fix push (1 new commit, 204512e); both outstanding items resolved. (@alexleventer via #update-review)
  • 2026-05-19T16:15:00Z — re-reviewed after fix push (1 new commit, 441cc03); 4 low-confidence items resolved (schema wording, provider count, ESC docs link, pulumi convert link); CrossGuard term fully removed. 2 low-confidence observations remain. (@CamSoper via #update-review)
  • 2026-05-19T17:30:00Z — re-reviewed after fix push (1 new commit, 37218df); L117 low-confidence item resolved by applying suggested phrasing; author updated to cam-soper. 1 low-confidence observation remains. (@CamSoper via #update-review)
  • 2026-05-19T18:00:00Z — re-verified on request; CrossGuard confirmed absent (grep empty); already reflected in ✅ Resolved from 441cc03. No new commits since 37218df. 1 low-confidence observation unchanged. (@CamSoper via #update-review)

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:outstanding-issues Claude review completed; outstanding has author-actionable findings and removed review:in-progress Claude review is currently running labels May 19, 2026
@alexleventer
Copy link
Copy Markdown
Contributor Author

@claude - fix all the outstanding items and then #update-review

@github-actions github-actions Bot added review:in-progress Claude review is currently running and removed review:outstanding-issues Claude review completed; outstanding has author-actionable findings labels May 19, 2026
CrossGuard supports TypeScript/JavaScript, Python, and OPA Rego — not Java.
CDKTF supports C# in addition to TypeScript, Python, Go, and Java.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown
Contributor

🤖 Review updated on @alexleventer'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 May 19, 2026
Copy link
Copy Markdown
Contributor

@CamSoper CamSoper left a comment

Choose a reason for hiding this comment

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

@claude - Please make the following changes:

  • remove all references to "CrossGuard" (deprecated term)
  • "Types are generated from each provider's schema". - Do this
  • "...plus 100+ other providers..." -> "...plus hundreds of other providers..."
  • L129 & L167: add the suggested links.

Then #update-review.

@github-actions github-actions Bot added review:in-progress Claude review is currently running and removed review:no-blockers Claude review completed cleanly; outstanding is empty labels May 19, 2026
… schema/providers wording, add docs links

- Remove all "CrossGuard" references (deprecated term); use "Pulumi policies" with /docs/insights/policy/ link
- "from each provider's API" → "from each provider's schema" (more precise)
- "100+ other providers" → "hundreds of other providers" (stays current)
- L129: add ESC docs link (/docs/esc/) alongside product marketing link
- L167: link `pulumi convert` to /docs/iac/guides/migration/converters/

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown
Contributor

🤖 Review updated on @CamSoper'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 May 19, 2026
@CamSoper
Copy link
Copy Markdown
Contributor

@claude

  • use your suggested phrasing for L117
  • replace the author with cam-soper
  • #update-review

@github-actions github-actions Bot removed the review:no-blockers Claude review completed cleanly; outstanding is empty label May 19, 2026
@github-actions github-actions Bot added the review:in-progress Claude review is currently running label May 19, 2026
…-soper

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown
Contributor

🤖 Review updated on @CamSoper'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 May 19, 2026
Copy link
Copy Markdown
Contributor

@CamSoper CamSoper left a comment

Choose a reason for hiding this comment

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

@claude Remove all references to CrossGuard (deprecated term) and #update-review

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

🤖 Review updated on @CamSoper'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 May 19, 2026
@CamSoper CamSoper merged commit 8e0ba75 into master May 19, 2026
15 checks passed
@CamSoper CamSoper deleted the aleventer/what-is-iaSoftware-rewrite branch May 19, 2026 19:35
CamSoper added a commit that referenced this pull request May 20, 2026
* ci(docs-review): broaden Vale/URL-fetch path filter to what-is, tutorials, learn

The Vale step and URL pre-fetch step were gated to `content/(docs|blog)/`,
which silently skipped every PR under `content/what-is/`, `content/tutorials/`,
and `content/learn/`. That captured nearly every content PR landed since the
2026-05-15 pipeline overhaul — the explainer rewrites alone (#19141#19153,
#19185) all touched only `content/what-is/`, so Vale never ran on them and
no Style findings appeared in their pinned reviews.

Broaden the regex to `^content/(docs|blog|what-is|tutorials|learn)/.*\.md$`
in all five filter sites:

- .github/workflows/claude-code-review.yml (Vale + URL pre-fetch)
- .github/workflows/claude-triage.yml (Vale in triage)
- .github/workflows/claude-update.yml (Vale on @claude #update-review)
- extract-urls-and-fetch.py (Python regex must match the workflow filter)

`content/learn/` doesn't exist yet but is included for forward compatibility
— `triage-classify.py:32` already classifies it as `domain:docs` alongside
docs/tutorials/what-is, so this keeps the path-filter scope consistent with
the domain classifier.

Editorial-balance (blog-only), cross-sibling discovery (docs-only), and the
social-review workflow stay narrow by design — those checks target specific
content shapes, not all prose. `.vale.ini` per-path overrides are unchanged:
the `Google.FirstPerson` exemption is blog-only because blog posts are
written in author voice; what-is/tutorials/learn use institutional voice
and should still flag first-person.

Also update echo messages and one comment in validate-pinned.py that
referenced the old "docs/blog" scope.

Co-Authored-By: Claude <noreply@anthropic.com>

https://claude.ai/code/session_01KAPbBaLgeuNWmLwU4ARASQ

* Drop `learn` path from Vale scope filter in claude-update.yml

Agent-Logs-Url: https://github.com/pulumi/docs/sessions/43591091-fb4f-44cd-8d9a-9eea988b42be

Co-authored-by: CamSoper <137648+CamSoper@users.noreply.github.com>

* Apply suggestion from @CamSoper

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: CamSoper <137648+CamSoper@users.noreply.github.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 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