Documentation Sync TODO

Date: 2025-12-30 Last Synced Commits:

New Commits to Review:


Documentation Changes Required

1. Mapper Methods Breaking Change (HIGH PRIORITY)

Source: docs/mapper-methods.md in Neatoo repo, commit 013a51e

Change:

Site pages to update:


2. Save() Reassignment Pattern (HIGH PRIORITY)

Source: docs/todos/save-reassignment-pattern.md in Neatoo repo (marked completed 2025-12-29)

Key Point: Save() returns a new deserialized instance - must be captured:

person = await person.Save();  // CORRECT
await person.Save();            // WRONG - stale object

Consequences of forgetting:

Site pages to check/update:


3. AsyncTasks Design / WaitForTasks Pattern (MEDIUM PRIORITY)

Source: docs/todos/async-tasks-design-rationale.md in Neatoo repo

Key Points:

Pattern:

person.FirstName = "John";   // Triggers async rules
person.Email = "a@b.com";    // More async rules
await person.WaitForTasks(); // Wait for all to complete
Assert.IsTrue(person.IsValid);

Site pages to check/update:


4. ListBase Parent Behavior (MEDIUM PRIORITY)

Source: docs/todos/listbase-parent-behavior.md in Neatoo repo

Key Point: When items are added to ListBase<T>, their Parent is set to the list’s parent (grandparent), not the list itself.

Person (aggregate root)
└── PersonPhoneList (child list)
    └── PersonPhone → Parent = Person (NOT PersonPhoneList)

Correct access pattern:

public IPerson? ParentPerson => this.Parent as IPerson;  // Correct

Common mistake:

public IPerson? ParentPerson => this.Parent?.Parent as IPerson;  // WRONG

Site pages to check/update:


Verification Results (2025-12-30)

1. Mapper Methods Breaking Change

Status: ⚠️ NEEDS UPDATE

File Current State Issue
data-mapping.md ✅ Uses explicit LoadProperty() and property assignments OK - no MapFrom/MapTo references
factory-operations.md ❌ Shows MapFrom/MapTo as partial (source-generated) OUTDATED - Lines 690-692 show all three as partial

Required Changes:


2. Save() Reassignment Pattern

Status: ✅ ALREADY FULLY COVERED

File Coverage
factory-operations.md Lines 442-478: “Critical: Always Reassign After Save()” ✅
troubleshooting.md Lines 172-222: “Stale Data After Save” with mailing analogy ✅
blazor-integration.md Lines 566-636: Blazor-specific guidance ✅

No action needed - Documentation is current and comprehensive.


3. AsyncTasks / WaitForTasks Pattern

Status: ✅ BASIC COVERAGE EXISTS - OPTIONAL ENHANCEMENT

File Coverage
troubleshooting.md Lines 124-142: “IsBusy is True and Blocking Save” ✅
blazor-integration.md Lines 447-463: “Preventing Premature Actions” ✅
blazor-integration.md Lines 551-564: “Why WaitForTasks() Before Save” ✅

What’s missing (optional):

Recommendation: Consider adding an advanced topic page for developers who want to understand the internals. Not critical for basic usage.


4. ListBase Parent Behavior

Status: ✅ ALREADY FULLY COVERED

File Coverage
entity-list-base.md Lines 118-152: “Parent Assignment” section explains items get list’s parent ✅
aggregates.md Lines 124-136: Same concept explained ✅

No action needed - Documentation correctly explains that list items’ Parent points to the aggregate root, not the list.


Action Items

Required (Breaking Change) - ✅ COMPLETED

Optional (Enhancement)


Completed Updates (2025-12-30)

CLAUDE.md commit tracking tables updated: | Repository | Last Synced Commit | Date | |————|——————-|——| | Neatoo | 4c83d45 | 2025-12-30 | | RemoteFactory | 9e62dda | 2025-12-30 |