Repository navigation
feat: add optional generation control extension - #706
Conversation
2baf4cd to
bc85322
Compare
|
CI fix resolved Failure cause:
Fix:
Verification on final head
Local executable validation was not available because this environment cannot install the .NET SDK/toolchain; existing repository CI provided the executable validation. |
bc85322 to
c8f8b21
Compare
|
Rebased onto current
The PR is open, Ready, mergeable, based on the current |
|
Final CI follow-up on A PR Fast run triggered by the PR-description edit failed once in Unit Tests. Failure cause:
What changed:
Validation:
The PR remains one focused commit on the current 2.0.1 |
c8f8b21 to
5df13e2
Compare
|
Rebased again onto the latest
Final validation on the current head:
The PR is open, Ready, cleanly mergeable, based directly on the current |
SunSi12138
left a comment
There was a problem hiding this comment.
Independent review completed: no blocking findings.
Checked:
- #691 initial-scope acceptance: authoritative desired/actual inventory, separate stage/activate operations, revision-based watch invalidation, provider boundary, and explicit NativeAOT process-replacement outcomes.
- Packaging/reference boundaries: SharpLink.GenerationControl has a runtime dependency only on SharpLink.Abstractions; SharpLink.Generator is analyzer-only and Runtime/Sdk/Generator are excluded from the runtime package dependency graph.
- Regression surface: Protocol v2 and ordinary RPC data paths are unchanged; the Generator change only adds XML documentation to generated manifest members required by production CS1591 policy.
- Release/public-API integration: solution, package verification, release publishing, reviewed API snapshot, and package smoke include the ninth package.
- Final-head CI: PR Fast, PR Package Smoke, CodeQL, Codec Padding Security Evidence, and PR Extended all pass. Extended includes Integration, NativeAOT smoke, packaging, package consumption, demo/load smoke, and desktop codec compatibility.
No correctness, regression-risk, maintainability, or Issue-acceptance problem warrants blocking this PR.
SunSi12138
left a comment
There was a problem hiding this comment.
已按 Issue #691 的验收条件和工程化风险完成 Review。
未发现需要阻塞或明显值得修改的问题。重点核对结果:
SharpLink.GenerationControl保持在 Protocol v2 / 普通数据路径之外,运行时依赖仅为SharpLink.Abstractions;Generator 仅作为 analyzer 引用。- desired/actual + endpoint-local revision、stage/activate 分离、
WatchAsync仅作 invalidation、provider/materialization 边界,以及 NativeAOT 的 process-replacement 语义均覆盖 #691 的初始范围。 - 新包已接入 solution、项目引用边界、NuGet/package smoke、reviewed public API 与 release publish gate;未发现漏包或错误依赖。
- 当前 head
5df13e2c1c8dd720c0da2c232fb3dd719127663b直接基于当前devfa69e6c886ac882eb16425933ca0f6c09d1b46fc。 - 当前 head 的 PR Fast、PR Package Smoke、PR Extended、CodeQL、Codec Padding Security Evidence 均已实际完成且为 success;Extended 的 browser lanes 按工作流配置为 skipped。
结论:无阻塞项,可以按仓库规则合并。
|
Post-merge verification completed.
No additional code or CI repair is required for this PR. |
Revert the squash merge of PR #706. The merge happened without the maintainer's approval: the review prompt template still instructed the reviewer to merge once CI was green, so the review conversation merged the PR and closed issue #691 automatically. Merging is a human decision and must not be delegated to the review step. This restores dev to the state before the merge; the work itself remains available on the issue-691-generation-control branch and can be merged again once explicitly approved. Refs #691
Background
SharpLink can independently replace dynamic module generations on Client and Server, but caller-side generated artifacts and server-side implementation generations have no optional reconciliation contract between endpoints. Issue #691 proposes keeping that coordination outside Protocol v2 and the ordinary data path.
Changes
SharpLink.GenerationControlpackage with a statically generatedISharpLinkGenerationControlRPC contractISharpLinkGenerationProvideras the thin application materialization boundaryeng/public-api/2.0.0surface baseline for the 2.x line, while opting the new package out of a NuGet 2.0.0 package baseline becauseSharpLink.GenerationControlfirst ships after 2.0.0Validation
Local executable validation is unavailable in this environment because no .NET SDK/toolchain can be installed. Repository CI is the executable validation path.
Two self-review rounds are required on the final code:
The final head is validated through the repository's existing PR Fast, PR Package Smoke, CodeQL, Codec Padding Security Evidence, and PR Extended workflows. Current-head results and any CI-driven fixes are recorded in the PR conversation and GitHub Checks so this description does not retain stale SHA-specific status after base updates.
Issue acceptance mapping
SharpLinkGenerationInventoryDesiredandActualsets with monotonic revisionStageAsyncActivateAsyncWatchAsync(afterRevision, ...), documented as invalidation rather than source of truthISharpLinkGenerationProvideronly materializes application-owned artifactsProcessReplacementRequiredis explicit; no unknown managed assembly loading is impliedFixes #691