docs+fix(chargen): CC1/CC2 review closeout — R2/R3 residuals closed, ledger final
Both narrow re-reviews returned CLOSED. This closeout takes the two cheap
re-review residuals before CC3 takes references to the shared model:
R2: every array handed into the typed chargen model is now wrapped in
Array.AsReadOnly at the projection seam — a T[] behind IReadOnlyList<T>
was still downcast-mutable, and ChargenOptions is a process-shared
singleton graph.
R3: the no-Chorizite-leak guard now also walks public fields; every
current type uses properties, but a public field would have slipped
through the property-only walk.
Ledger: CC1 fix-round sha corrected to cb4703e8 (the cell previously
cited the pre-amend 459a87f2), CC1/CC2 rows flipped to REVIEW-CLOSED
with the re-review outcomes, R1 (retail refunds +1 credit on a
both-tier cost miss; port charges 0 — unreachable via retail's own
listbox, noted for CC3) and the Olthoi-locked-to-template-0 decomp fact
recorded for CC3/CC4.
Core.Tests 4736/1 skip, Content.Tests 145/0, Release.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
55fc51ed8c
commit
f3ef7baae2
3 changed files with 37 additions and 24 deletions
|
|
@ -11,10 +11,13 @@ namespace AcDream.Core.Tests.CharGen;
|
|||
/// future edit from putting e.g. a <c>DatReaderWriter.Enums.SkillId</c>
|
||||
/// directly on a public property. This test walks every public type in the
|
||||
/// <c>AcDream.Core.CharGen</c> namespace and asserts that no public
|
||||
/// property, indexer, constructor parameter, or method return/parameter
|
||||
/// type — nor any of their generic type arguments, recursively — comes
|
||||
/// from the <c>DatReaderWriter</c> assembly or any assembly whose name
|
||||
/// starts with <c>Chorizite</c>.
|
||||
/// property, field, indexer, constructor parameter, or method
|
||||
/// return/parameter type — nor any of their generic type arguments,
|
||||
/// recursively — comes from the <c>DatReaderWriter</c> assembly or any
|
||||
/// assembly whose name starts with <c>Chorizite</c>. (The field walk
|
||||
/// closes the CC1 re-review's R3 residual: every current type uses
|
||||
/// properties, but <c>public SkillId Foo;</c> would otherwise slip
|
||||
/// through.)
|
||||
/// </summary>
|
||||
public sealed class ChargenNoChoriziteLeakTests
|
||||
{
|
||||
|
|
@ -51,6 +54,12 @@ public sealed class ChargenNoChoriziteLeakTests
|
|||
}
|
||||
}
|
||||
|
||||
foreach (FieldInfo field in type.GetFields(
|
||||
BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static))
|
||||
{
|
||||
CheckSite(field.FieldType, $"{type.FullName}.{field.Name} (field)", offenders);
|
||||
}
|
||||
|
||||
foreach (ConstructorInfo ctor in type.GetConstructors(
|
||||
BindingFlags.Public | BindingFlags.Instance))
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue