ci(nullable-gate): use /t:Rebuild so the nullable gate is actually enforced#361
Open
drmoisan wants to merge 1 commit into
Open
ci(nullable-gate): use /t:Rebuild so the nullable gate is actually enforced#361drmoisan wants to merge 1 commit into
drmoisan wants to merge 1 commit into
Conversation
…ntly no-op'ing The "Build with nullable warnings treated as errors" step ran /t:Build immediately after "Build with analyzers" had already compiled everything under the projects' own Nullable settings. MSBuild's incremental up-to-date check does not invalidate on a changed -p:Nullable command-line property alone, so this step was silently skipping recompilation and never actually enforcing the gate -- it reliably passed in a few seconds regardless of the code's real nullable-safety state. Switching to /t:Rebuild forces a genuine full recompile under /p:Nullable=enable every run. This is expected to surface a large body of pre-existing nullable debt across UtilitiesCS (confirmed locally: ~2131 errors on main itself, unrelated to any pending PR's changes) that this gate was never actually catching. Remediating that debt is tracked separately; this change only makes the gate report the true state.
drmoisan
added a commit
that referenced
this pull request
Jul 19, 2026
…route Scaffold the utilitiescs-nullable-remediation epic on the integration branch: - docs/features/epics/utilitiescs-nullable-remediation/epic.md: 12-feature manifest (6 wave-0, 5 wave-1, 1 wave-2 capstone), per-file #nullable opt-in architecture, SVGControl included, cycle-free DAG. Based on PR #361 head (20d163a), not origin/main, so children validate against the repaired /t:Rebuild nullable gate. - config/orchestration-routing.json: add the "preparation" route (task-researcher, prd-feature, atomic-planner, atomic-executor; requires_pr_gate/requires_ci_gate false) so preparation-mode child orchestrator runs satisfy their completion gate. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This was referenced Jul 19, 2026
drmoisan
added a commit
that referenced
this pull request
Jul 19, 2026
Records the /epic-run invocation prompt, the 13-child feature summary (waves 0/1/2 with plan-paths and complexity bands), the integration base-branch note (based on PR #361 head, not plain main), and the accumulated execution-time gates and flags epic-orchestrator must carry into atomic execution: reusabletypes #366 P6-T2 maintainer STOP, dialogs-misc #374 Phase-0 gate on extensions Batch D, folder-store #365 checkpoint-enum deviation, residuals #375 37-file effective set + maintainer decisions, capstone #376 optional-<Nullable> and csharp.md-conflict maintainer items, and the epic-wide exclusions. All 13 children are prepared and fanned in. Planning is complete; execution has not started. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UXCu1xPtNbJs2HwKxgS9Bv
This was referenced Jul 19, 2026
Merged
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes a masking bug in the CI "Build with nullable warnings treated as errors" step: it ran
/t:Buildright after the preceding "Build with analyzers" step had already compiled everything, so MSBuild's incremental up-to-date check silently skipped recompilation and the nullable gate never actually ran a real check. Switches that step to/t:Rebuildso it performs a genuine full recompile under/p:Nullable=enableevery run.Why
Discovered while rebuilding PR #347 (log4net 3.3.1->3.3.2): that bump changes a referenced assembly path for every first-party project, which forced a genuine recompile and exposed ~2131 pre-existing nullable errors in
UtilitiesCSthat this gate should have been catching all along but wasn't. Confirmed via a local/t:Rebuildonmainitself (pre-log4net-bump) that the same ~2131 errors already exist there, unrelated to any pending PR change.Consequence (important)
Once merged, this makes the nullable-build CI step genuinely enforce for the first time. Every current/future PR based on
mainwill fail this check until the exposed pre-existing debt is remediated separately. This PR does not attempt that remediation -- it only makes the gate report the true state instead of silently passing.Verification
/t:Rebuildwith/p:Nullable=enable /p:TreatWarningsAsErrors=trueonmainproduces the same 2131 errors as on the log4net branch, all inUtilitiesCS(andSVGControl, depending on the exact rebuild path), none introduced by this change.