[release] Publish reviewed teasers from release notes - #4722
Conversation
Publish marked GitHub-generated notes before dispatching the reviewed release-notes flow, and remove local teaser authoring from release-publish. Define exact shipment teaser ownership and immutable generated payload preservation in the release behavior specs. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Apply semantically changed exact-tag teaser entries to marked GitHub Releases with batch preflight, optimistic concurrency, and byte-preserving generated-notes handling. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Add per-tag shipment facts, immutable reviewed teaser entries, split Polish tasks, deterministic rendering, validation, and lifecycle coverage while preserving cumulative website prose. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Retry the idempotent docs dispatch for an already-published release, report it honestly during audits, and preserve the immediate milestone handoff after success. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Teach the notes workflow to honor split JSON tasks, converge deterministic data-only stable shipments, skip unrelated release tags, and keep generated workflow outputs in sync. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
📦 Try the packages from this PRWarning Do not run these scripts without first reviewing the code in this PR. Step 1 — Download the packages bash / macOS / Linux: curl -fsSL https://raw.githubusercontent.com/mono/SkiaSharp/main/scripts/get-skiasharp-pr.sh | bash -s -- 4722PowerShell / Windows: iex "& { $(irm https://raw.githubusercontent.com/mono/SkiaSharp/main/scripts/get-skiasharp-pr.ps1) } 4722"Step 2 — Add the local NuGet source dotnet nuget add source ~/.skiasharp/hives/pr-4722/packages --name skiasharp-pr-4722More options
Or download manually from Azure Pipelines — look for the Remove the source when you're done: dotnet nuget remove source skiasharp-pr-4722 |
📊 SkiaSharp benchmarks — PR #4722⭐ this PR (full source build) vs 🌙 nightly · Linux · Windows · macOS
Highlights⏱️ Time — 🔴 39 slower · 🟢 30 faster
Full per-OS benchmark deltasLinux⏱️ Time (vs 🌙 nightly
Windows⏱️ Time (vs 🌙 nightly
macOS⏱️ Time (vs 🌙 nightly
|
📦 Artifact size reportPackages from this PR (build Total Packages
+38 package(s) unchanged (< 50.0 KB). Per-file changes
|
| File | Size |
|---|---|
runtimes/win-arm64/native/libGLESv2.pdb |
64.5 MB → 64.4 MB (🟢 −96.0 KB) |
runtimes/win-x64/native/libGLESv2.pdb |
66.6 MB → 66.5 MB (🟢 −80.0 KB) |
runtimes/win-x86/native/libGLESv2.pdb |
67.2 MB → 67.2 MB (🟢 −48.0 KB) |
Informational only — this never blocks the PR. Native binaries are labelled by os/arch.
|
📖 Documentation Preview The documentation for this PR has been deployed and is available at: 🔗 View Staging Site This preview will be updated automatically when you push new commits to this PR. This comment is automatically updated by the documentation staging workflow. |
Separate generation source, PR base, and generated head routing for guarded pre-merge workflow runs. Preserve reviewed historical teaser selections and enforce their exact shipment fidelity. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1d768d35-d11a-453b-9762-16cf2e2d1379
Configure gh-aw patch and bundle generation with the same validated output base used by the pull request handler. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1d768d35-d11a-453b-9762-16cf2e2d1379
Preserve audited per-PR teaser facts and classify infrastructure titles as internal before path-based release-note tagging. Reject internal PRs from cumulative consumer categories. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1d768d35-d11a-453b-9762-16cf2e2d1379
Add deterministic page-level review facts for cumulative release notes, enforce consumer-safe exclusions and contributor credit, and derive validation PR routing from the source PR and workflow run. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1d768d35-d11a-453b-9762-16cf2e2d1379
Use GPT-5.6 Sol for release-note prose generation so complex milestone PR collections use the preferred high-capacity model. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1d768d35-d11a-453b-9762-16cf2e2d1379
Use the already-validated source branch directly in the safe-output base allowlist because the safe-output job cannot consume Prepare job outputs. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1d768d35-d11a-453b-9762-16cf2e2d1379
Match the published RC1 consumer-facing PR selection and require the .NET 11 WebAssembly and exception-handling details, excluding test-only and generic sync work. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1d768d35-d11a-453b-9762-16cf2e2d1379
Filter internal-only HarfBuzz build and test PRs from release summary facts so they render as no binding changes instead of consumer-facing infrastructure prose. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1d768d35-d11a-453b-9762-16cf2e2d1379
Use each exact GitHub Release's curated consumer-facing teaser as an authoritative input to prose generation instead of maintaining version-specific review policy files. Generalize sync-round and contributor-mechanics validation so future releases receive the same protections. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1d768d35-d11a-453b-9762-16cf2e2d1379
Do not import legacy stable GitHub Release bodies when the exact stable shipment delta is empty. Those bodies summarize the full line and would otherwise fail exact-delta validation or rewrite an immutable stable teaser. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1d768d35-d11a-453b-9762-16cf2e2d1379
Require prose rewrites to retain named APIs, backends, data formats, and failure modes from published GitHub Release bullets so specific reviewed behavior is not generalized away. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1d768d35-d11a-453b-9762-16cf2e2d1379
Clear forced scoped API-diff output once per release line so packages no longer erase each other. Require authored HarfBuzz prose when the co-shipped dependency version changes, and keep empty stable shipments explicit without duplicating their cumulative page prose. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1d768d35-d11a-453b-9762-16cf2e2d1379
Use data.json as the only change key: changed or forced pages discard their complete prose file and are listed one per line for full AI regeneration. Remove published release ingestion and selective cumulative/teaser task handling while preserving exact technical terminology guidance. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1d768d35-d11a-453b-9762-16cf2e2d1379
Expose only verified, structured upstream commit subjects to the release-notes agent so generic sync PRs produce concrete fixes without forwarding arbitrary report prose. Use NUL-delimited git records and allow jq for clean offline inspection. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1d768d35-d11a-453b-9762-16cf2e2d1379
Split release-note collection into focused modules, generate normalized data and committed agent context atomically, and replace teaser prose with evergreen exact-release summaries. Keep rollups and shipment boundaries deterministic while leaving editorial meaning to the release-notes agent. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1d768d35-d11a-453b-9762-16cf2e2d1379
Trim duplicate trailing newlines from generated API-diff documents and landing pages so deterministic Prepare output passes git diff --check without requiring agent edits. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1d768d35-d11a-453b-9762-16cf2e2d1379
Record committed API markdown paths before forced line clearing so newline normalization applies only to genuinely new files, keeping scoped forced regeneration below the safe-output file cap while preserving clean new HarfBuzz pages. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1d768d35-d11a-453b-9762-16cf2e2d1379
Derive validation routing from source_branch alone, allow the expected full-v4 generated-doc patch, and delegate each release page to an isolated page writer. Keep solution and MSBuild infrastructure out of HarfBuzz consumer facts. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1d768d35-d11a-453b-9762-16cf2e2d1379
Pin the inline release-page-writer to GPT-5.6 Sol so the runner proxy can price and execute each focused page task instead of rejecting the inherited model alias. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1d768d35-d11a-453b-9762-16cf2e2d1379
Keep gh-aw's materialized release-page-writer definition in the local git exclude file so the generated documentation commit remains inside the safe-output allowed-files boundary. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1d768d35-d11a-453b-9762-16cf2e2d1379
Tell the release workflow's threat analyzer to inspect directly without delegated agents and emit one canonical result, avoiding parser conflicts between equivalent all-clear verdicts. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1d768d35-d11a-453b-9762-16cf2e2d1379
Remove inline page writers and the custom threat-detector prompt, return to direct sequential prose authoring and the 100-file guard, and derive an exact collision-resistant automation branch from source_branch for non-main test runs. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1d768d35-d11a-453b-9762-16cf2e2d1379
Record explicit CVE, advisory, vulnerability, and security-release evidence in release facts and reject ordinary dependency updates under Security for format-5 pages. Keep legacy pages compatible and update the worked 4.148 sample. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1d768d35-d11a-453b-9762-16cf2e2d1379
Use the immediate superseded co-release as the HarfBuzz predecessor, include explicit HarfBuzz update PRs in provenance, and render deterministic PR credit. Treat the version manifest as mixed release evidence so major version transitions remain visible to the prose agent. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1d768d35-d11a-453b-9762-16cf2e2d1379
Require every cumulative category theme present in an exact Preview or RC delta to contribute provenance to that release summary. Keep HarfBuzz rendering scoped to selected pages and avoid broad body matches when adding dependency-update provenance. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1d768d35-d11a-453b-9762-16cf2e2d1379
Reject HarfBuzz summaries when the deterministic page facts have no HarfBuzz release, and recognize full version strings followed by sentence punctuation so invalid prose cannot bypass validation. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1d768d35-d11a-453b-9762-16cf2e2d1379
Apply orphan-summary and exact-version validation only to format-5 pages so the current schema rejects dead prose without invalidating preserved legacy release-note data. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1d768d35-d11a-453b-9762-16cf2e2d1379
Use bot/release-notes as the single generated head for production and feature-branch validation, serialize all runs globally, and keep the validated source branch as the PR base. Remove obsolete branch-name derivation and trim verbose workflow comments while retaining the safety constraints. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1d768d35-d11a-453b-9762-16cf2e2d1379
Make format 5 the only supported release-note contract, remove fuzzy security and HarfBuzz title inference, scope rendering to requested versions, and keep Security editorially sourced from structured maintainer notes. Remove cached v4 pages, prose, data, and worked samples so the focused workflow rebuilds them cold. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1d768d35-d11a-453b-9762-16cf2e2d1379
Do not open out-of-range caches during scoped rendering, but reject unsupported data when its version or exact release is explicitly requested. Keep global summary scans from interpreting old prose during format migration. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1d768d35-d11a-453b-9762-16cf2e2d1379
Treat v1-v3 pages as immutable historical documentation. Unscoped workflows process only v4+, while explicit requests below the floor fail and instruct maintainers to lower the floor before regenerating history. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1d768d35-d11a-453b-9762-16cf2e2d1379
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Use more of the existing prose caps for feature highlights and exact Preview/RC summaries, while keeping servicing notes concise. Add curated 4.150.2 provenance so the RasterPipeline runtime fix is credited to PR #4648 rather than the ancestry-only follow-up. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1d768d35-d11a-453b-9762-16cf2e2d1379
Separate the short cumulative Highlights block from exact-tag release introductions. Require fuller release_summaries for Preview, RC, and stable tags, render stable summaries on the website, and use the same reviewed text for official GitHub Releases. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1d768d35-d11a-453b-9762-16cf2e2d1379
Keep Highlights as the cumulative release-line overview while grounding every Preview, RC, and stable release summary in only that tag's delta. Stable no-change releases now retain a distinct exact summary without duplicating the full line. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1d768d35-d11a-453b-9762-16cf2e2d1379
Use the stable shipment delta for GitHub Release scope counts and contributor credit, matching the exact stable release summary instead of reporting the cumulative line totals. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1d768d35-d11a-453b-9762-16cf2e2d1379
Regenerate API diffs and release-note inputs for SkiaSharp 4.150.0 through 4.150.3, add reviewed exact-tag summaries, and rebuild the rendered pages and release navigation.\n\nGenerated by Sync - Release Notes & API Diffs run 31638643983.
Keep the canonical generated branch from clobbering an open PR for another base, fail explicit scopes below the v4 history floor, and establish HarfBuzz co-release mappings before scoped API generation. Make reviewed GitHub summaries converge from current state, verify stored release bodies, align publication marker parsing across line endings, and skip incompatible docs dispatches for historical releases. Bring support metadata and repository documentation up to date, and complete the reviewed 4.148 stable exact-tag summary required by the format-5 contract. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1d768d35-d11a-453b-9762-16cf2e2d1379
Read every feed-backed v4 SkiaSharp.HarfBuzz dependency before scoped HarfBuzz generation so selected pages can resolve an out-of-range predecessor in one pass. Restrict API-diff landing-page rewrites to selected lines and explicit co-release repairs, preventing formatting-only changes outside the requested range. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1d768d35-d11a-453b-9762-16cf2e2d1379
Description
This separates irreversible release publication from reviewed customer-facing teaser prose.
release-publishnow creates and publishes a marked GitHub-generated-notes body unchanged, then recoverably dispatches release notes. It no longer authors, classifies, approves, or edits a synchronous teaser.Release notes record every exact published tag/build in
data.jsonshipments[]. The line's single self-containedprose.jsonholds cumulative website prose and immutable exact-tagrelease_teasers; the task manifest separates those work axes and preserves unlisted historical teasers. Empty stable deltas render deterministic no-change prose without AI.After the reviewed notes PR merges, a zero-AI workflow semantically diffs exact teaser entries and updates only eligible marked releases. Non-canceling concurrency, full-batch preflight, body SHA/ETag checks, and idempotent reruns prevent partial or stale updates. GitHub-generated notes remain byte-for-byte frozen, manual content outside markers is preserved, and unmarked legacy releases are skipped.
Related issues
None.
Required skia PR
None.
Areas affected
binding/)externals/skia/src/c,include/c)Changes
None — release automation and documentation only; no public API or runtime behavior changes.
Testing
gh aw compile --strict, workflow source validation, and actionlintgit diff --checkand clean-tree verificationNo runtime, native, or rendering output changed, so platform and golden-image testing is not applicable.
Checklist
Changesabove lists all public API and behavioral changes (or "None.")