docs: close R2 reproducibility checkpoint
This commit is contained in:
parent
c38f6b8852
commit
8e884679e0
2 changed files with 111 additions and 8 deletions
|
|
@ -420,8 +420,8 @@ checkpoint. Do not infer status from chat history.
|
|||
|---|---|---|---|---|
|
||||
| R0 | PLAN ACCEPTED; tracking/owner assignment pending | — | Audit complete at `15539a22`; user started R1 | Track plan+audit artifacts; assign R4 owner |
|
||||
| R1 | COMPLETE ON CAMPAIGN BRANCH; not yet merged | `0a934cf5` | 2026-08-18 checkpoint below; F-009/T-001 resolved and committed | Preserve while R2 runs; merge through the normal review path |
|
||||
| R2 | COMPLETE GATE CHECKPOINT ON CAMPAIGN BRANCH; broader reproducibility work remains | `2ac05486` | Checkpoint below; F-014 resolved, F-010/F-019 partially resolved | Choose locked restore/warning work or R3; merge through normal review |
|
||||
| R3 | NOT STARTED | — | T-002–T-018; F-015/F-021/F-022/F-030 | Wait for remaining R2 sequencing decision |
|
||||
| R2 | COMPLETE ON CAMPAIGN BRANCH; not yet merged | `2ac05486`, `c38f6b88` | Checkpoints below; F-014/F-019 resolved, F-010 machine-readable, supported .NET tool portion of F-004 resolved | Begin R3; merge through normal review |
|
||||
| R3 | NOT STARTED | — | T-002–T-018; F-015/F-021/F-022/F-030 | Begin complete test inventory, naming, skip, and value classification |
|
||||
| R4 | NOT STARTED; may run parallel | — | F-001/F-026/F-031/F-034 | Assign owner/legal provenance decision path |
|
||||
| R5 | NOT STARTED | — | F-002/F-003/F-006/F-007/F-011/F-020/F-027/F-029/F-032 | Wait for R2–R3 |
|
||||
| R6 | NOT STARTED | — | F-004/F-005/F-012/F-016/F-023/F-028 | Wait for R3/R5 |
|
||||
|
|
@ -571,6 +571,86 @@ the broader R2 reproducibility slice or R3 test-quality cleanup is complete.
|
|||
|
||||
Rollback is `git revert 2ac05486`; do not rewrite branch history.
|
||||
|
||||
### R2 reproducibility closeout — 2026-08-18
|
||||
|
||||
**Working-tree base:** `b459e0cf0cab9241b0771d2ce6838083f2c84162`
|
||||
|
||||
**Implementation commit:** `c38f6b88522750abc2e4acf1898ed566c5576e4a`
|
||||
on `codex/release-stabilization`; the closeout is durable on that campaign
|
||||
branch but is not yet merged to `main`.
|
||||
|
||||
Repository policy and dependency graph:
|
||||
|
||||
- `Directory.Build.props` is the common .NET 10, language, nullable, latest
|
||||
analysis, warnings-as-errors, deterministic-build, and lock-file authority.
|
||||
- `Directory.Packages.props` centrally pins all 30 direct package versions.
|
||||
All 89 `PackageReference` sites are versionless; no project-local version can
|
||||
silently drift.
|
||||
- `NuGet.Config` clears machine fallback folders and package sources, then
|
||||
declares only `nuget.org`.
|
||||
- Every supported project owns `packages.neutral.lock.json` (44 files). Every
|
||||
shippable source project additionally owns `packages.win-x64.lock.json` and
|
||||
`packages.linux-x64.lock.json` (14 of each; 72 graphs total). Conventional
|
||||
`packages.lock.json` files are intentionally absent because NuGet gives that
|
||||
filename precedence over `NuGetLockFilePath`, preventing adjacent neutral
|
||||
and RID graphs.
|
||||
- `tools/update-package-locks.ps1` is the one intentional update path. The
|
||||
release gate and the launcher's nested Bake publish use forced locked restore,
|
||||
so stale `obj/` assets cannot hide a disagreement and a normal gate cannot
|
||||
rewrite dependency resolution.
|
||||
|
||||
Complete maintained build surface:
|
||||
|
||||
- All 13 tracked .NET tools were repaired against package/owned interfaces,
|
||||
documented in `tools/README.md`, and added to `AcDream.slnx`.
|
||||
- The gate now verifies that every `.csproj` under `src/`, `tests/`, and
|
||||
`tools/` is a solution member, requires the expected lock graphs, and records
|
||||
their hashes in the evidence bundle. The supported graph is 44 projects.
|
||||
- The older script/probe archive under F-004 is unchanged. Classifying that
|
||||
historical material remains R6 work; the R2 change only makes the maintained
|
||||
.NET tools truthful and reproducible.
|
||||
|
||||
Warning cleanup and test-gate stability:
|
||||
|
||||
- A clean complete recompilation originally exposed 26 warnings, all in test
|
||||
and diagnostic code. Assertion-specific analyzers, nullable test doubles,
|
||||
and nullable DAT probe boundaries were corrected without changing product
|
||||
behavior.
|
||||
- The one known redundant historical Core theory input remains for R3 behind a
|
||||
site-scoped `xUnit1025` suppression. The central policy still makes any new
|
||||
duplicate row a build failure.
|
||||
- The launcher's seven editor-focus variants now execute in one Avalonia test
|
||||
application session. This prevents the headless framework from attempting
|
||||
compositor reinitialization on a non-owning thread. The suite passed 11
|
||||
consecutive focused runs before the full gate. Aggregating seven theory rows
|
||||
into one fact reduces the headline passed count by six; all seven variants
|
||||
are still executed and asserted.
|
||||
- The launcher package-boundary test now verifies versionless project
|
||||
references against the central version table rather than incorrectly
|
||||
requiring inline versions.
|
||||
|
||||
Reproducibility evidence:
|
||||
|
||||
- Forced locked re-evaluation of all 44 neutral and all 28 RID graphs changed
|
||||
zero lock hashes.
|
||||
- A locked restore into an empty global package cache, with `--no-cache`,
|
||||
succeeded from the sole configured source. NuGet assets recorded no fallback
|
||||
package folder.
|
||||
- A forced nested launcher-to-Bake publish selected the appropriate RID graph,
|
||||
emitted the Bake executable, and changed zero lock hashes.
|
||||
- `pwsh ./tools/run-release-gate.ps1` ran on the clean exact commit
|
||||
`c38f6b88522750abc2e4acf1898ed566c5576e4a`, SDK `10.0.300`, RID `win-x64`,
|
||||
in 121.398 seconds. Restore was forced and locked; all 44 projects built with
|
||||
0 warnings / 0 errors; all 12 test assemblies completed with 14,742 passed /
|
||||
77 skipped / 0 failed. The gate recorded `WorktreeDirty: false`.
|
||||
|
||||
No product source behavior changed in this closeout. The known duplicate theory
|
||||
row, classification of the 77 environment-dependent skips, test naming/value
|
||||
review, and stale public headline counts remain explicitly assigned to R3 and
|
||||
the later documentation-authority slice. R2 is complete on the campaign branch.
|
||||
|
||||
Rollback is `git revert c38f6b88`; do not rewrite branch history.
|
||||
|
||||
## 18. Session start protocol
|
||||
|
||||
Every implementation session begins by:
|
||||
|
|
|
|||
|
|
@ -101,6 +101,16 @@ did not find an actionable exception beyond the documented classes.
|
|||
dedicated tool build gate. Move truly historical one-off probes out of the
|
||||
maintained build surface with an explicit archival label.
|
||||
|
||||
**Post-baseline maintained-.NET-tool checkpoint (2026-08-18, `c38f6b88`):**
|
||||
all 13 tracked `.NET` tools now use repository-owned project references or
|
||||
central package references, build warning-free, and are members of
|
||||
`AcDream.slnx`. The release gate fails if any future project under `src/`,
|
||||
`tests/`, or `tools/` is omitted from that graph. `tools/README.md` records each
|
||||
tool's purpose and runtime prerequisites. This resolves the supported `.NET`
|
||||
tool portion of F-004. The older PowerShell/Python/CDB scripts and historical
|
||||
root launchers described above remain open for the later R6 archival decision;
|
||||
F-004 is therefore not closed wholesale.
|
||||
|
||||
## F-005 — Mandatory reference workflow depends on repositories absent from the repository
|
||||
|
||||
- **Severity:** P1 high
|
||||
|
|
@ -489,12 +499,25 @@ actual GitHub execution after publication.
|
|||
that proves a clean checkout. Keep tool-only exceptions explicit rather than
|
||||
allowing per-project drift.
|
||||
|
||||
**Post-baseline partial checkpoint (2026-08-18, `2ac05486`):** `global.json`
|
||||
pins SDK feature band `10.0.300` with `latestPatch` roll-forward, and all five
|
||||
CI setup sites now consume that file. `docs/release-gate.md` documents the one
|
||||
complete command and its evidence. F-019 remains open: common compiler/package
|
||||
settings are still duplicated, there are no package lock files or locked
|
||||
restore, and the unsupported tool-project decisions have not been made.
|
||||
**Post-baseline resolution (2026-08-18, `2ac05486` and `c38f6b88`):**
|
||||
`global.json` pins SDK feature band `10.0.300` with `latestPatch` roll-forward.
|
||||
`Directory.Build.props` now owns the repository-wide compiler, analyzer,
|
||||
warnings-as-errors, deterministic-build, and lock-file policy;
|
||||
`Directory.Packages.props` owns all 30 direct package versions; and
|
||||
`NuGet.Config` clears machine fallback folders and sources in favor of the one
|
||||
declared `nuget.org` source. Every one of the 44 supported projects commits a
|
||||
neutral dependency graph, and all 14 source projects also commit `win-x64` and
|
||||
`linux-x64` graphs. The custom `packages.<graph>.lock.json` names avoid NuGet's
|
||||
special precedence for conventional `packages.lock.json` while allowing the
|
||||
neutral and two RID graphs to coexist. The release gate uses forced locked
|
||||
restore, hashes all 72 graphs, and builds every supported project. A clean,
|
||||
exact-commit `c38f6b88` gate on SDK `10.0.300` passed with 0 build warnings,
|
||||
14,742 passed / 77 skipped / 0 failed across 12 test assemblies. A separate
|
||||
empty-package-cache locked restore succeeded using only the declared source,
|
||||
and locked neutral/RID re-evaluation changed zero lock hashes. F-019 is
|
||||
resolved on the campaign branch. Hosted GitHub Actions remain deliberately
|
||||
parked; the documented local command is the release authority until runner
|
||||
policy is restored.
|
||||
|
||||
## F-020 — The issue ledger is an unbounded mixed tracker, research log, and archive
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue