Pulp Engine Document Rendering
Get started
Release v0.75.4

Release v0.75.4 — unblock .NET + Go SDK publishes

Date: 2026-04-23 Tag: v0.75.4

Summary

Two real fixes that unblock the .NET and Go SDK publishing pipelines, plus two post-v0.75.3 release-tooling fixes promoted to a tagged release. No runtime changes to the API itself.

This release converts the “deferred SDK gaps” of v0.75.1–0.75.3 from three open blockers down to one (PyPI trusted-publisher config — operator-only).

What shipped

1. .NET SDK: restore RenderStreamingClient.cs

The hand-written streaming helper + its StreamingResponse wrapper class were added in aca2dc8 (2026-04-19) alongside the streaming API regen, but got deleted in a later audit-remediation commit (b1f5b80) that pruned stale SDK files — the deletion was incidental to a broader cleanup, and .openapi-generator-ignore still listed the file as protected from regeneration. Without it, packages/sdk-dotnet/tests/RenderStreamingTest.cs referenced both types and the test project failed to compile, blocking every NuGet publish since.

Restored the 493-line file verbatim from aca2dc8 via git show aca2dc8:path > path. The .openapi-generator-ignore was already correctly configured — the sweep logic in scripts/generate-sdks.ts does not aggressively delete files outside the generator’s FILES manifest, so restoration sticks without further hardening.

2. Go SDK: fix invalid package name

packages/sdk-go/openapi-generator-config.yaml declared packageName: pulp-engine, which produced package pulp-engine at the top of every generated .go file. Go identifiers cannot contain hyphens — every Go SDK build since Stage 2 shipped failed at column 13 of the first file with expected ';', found '-'.

The Go module path (github.com/TroyCoderBoy/pulp-engine-go) IS intentionally hyphenated — that’s the standalone public mirror repo’s canonical import path. The package identifier inside the code is separate and must be a valid Go identifier. Users go get github.com/TroyCoderBoy/pulp-engine-go and then reference pulpengine.XYZ in code.

Fix: packageName: pulpengine in the generator config, plus the same rename in scripts/generate-sdks.ts#goPackageName() (a hard-coded template that writes version.go). Regeneration produced Go files with package pulpengine as expected.

3. release.yml: drop broken gh release edit --help | grep '--latest' guard

Landed on main between v0.75.3 and v0.75.4 as de5bd20; promoted to a tagged release here. The guard false-negatived on gh 2.89.0 because the help-text format drifted between 2.51 and 2.89 — even though the --latest=<bool> flag works correctly, the grep didn’t match.

4. publish-sdk-dotnet.yml: smoke-test env

Landed on main as 51db4ba; promoted to a tagged release here. SKIP_RENDERER_WARMUP=true + PREVIEW_ROUTES_ENABLED=false; poll /health (liveness) not /health/ready (readiness).

GH Actions runners don’t have Chromium at Puppeteer’s default cache path, so the preview capability probe reports browser_unavailable and /health/ready returns 503 for the life of the process. The .NET smoke test exercises CRUD routes, not rendering, so renderer status is irrelevant.

Operational status

After v0.75.4 dispatches complete:

  • NuGet (PulpEngine.Sdk@0.75.4) — should publish for the first time since Stage 1.
  • Go mirror (pulp-engine-go@v0.75.4) — should build and sync for the first time since Stage 2.
  • PyPI (pulp-engine@0.75.4) — still blocked on trusted-publisher config at pypi.org. Operator-only; no code fix can land this.

Verification

Local:

  • node scripts/check-version.mjs — passes in tagged + off-tag states
  • pnpm sdk:generate — regenerates with correct Go package name; grep -c '^package pulpengine' packages/sdk-go/*.go confirms all files use the new identifier
  • pnpm lint + pnpm typecheck — no material changes

CI:

  • Same coverage as v0.75.3; no new test behaviour or config
  • The v0.75.3 auto-dispatch fixes (MAX_WAIT + timeout-minutes + dropped gh guard) should land Release end-to-end green on the tag push — first fully-automatic tag-push release cycle since the billing-block recovery