Latest completed work: GitHub issue #7 strict source-member completeness was merged into develop via PR #10 at a8ac8bd, and closed. AgentStack issue #7 is done and its claim is released. Issue #6 existing-target update atomicity was previously merged into develop via PR #9 and closed. Issue #5 declaration, registration, constructor, and accessibility coverage was also previously merged into develop and closed.
- Current scope: issue #7 strict source-member completeness adoption evidence and synchronized documentation is complete; remote CI remains unexecuted.
- Current state: issue #7 was approved, merged as PR #10 at
a8ac8bd, closed in GitHub, markeddonein AgentStack, and its claim was released. The existingUnmappedSourceMembersAPI andLITEMAPPER1003behavior provide mapper, method, assembly, severity, and editorconfig support. - Completed milestones: Milestone 1; Milestone 2; Milestone 3; Milestone 4; Milestone 5; Milestone 6; Milestone 7; Milestone 8; Milestone 9; Milestone 10; Milestone 11; Milestone 12; Milestone 13; Milestone 14; Milestone 15; Milestone 16.
- Current work: issue #7 implementation, validation, review, merge, and closure are complete.
- Evidence:
UnmappedDiagnosticSeverityTestsnow covers strict source completeness at mapper, method, and assembly scopes, while existing source-policy and editorconfig rows cover Error, Warning, Info, Ignore, and severity overrides without consumer DTO tests. - Focused validation: the strict-source generator subset passes 27/27;
Milestone16UsageDocumentationTestspasses 1/1; consumer skill validation passes;git diff --checkpasses. - Completed prior issue evidence: issue #5 focused tests passed 86/86; generator tests passed 558/558 on Roslyn 4.8.0, 4.14.0, and 5.9.0; solution build passed with 0 warnings/errors; solution tests passed 624/625 with one Native AOT linker-prerequisite skip.
- Skipped validation: one Windows Native AOT packaging case skipped because linker prerequisites are unavailable. Remote CI was not executed.
- Blockers: none for the approved issue #7 scope; remote CI remains unexecuted.
- Known issues: exact generated helper names remain intentionally non-public and must not be used as consumer dependencies.
- Next permitted action: select the next eligible GitHub issue through AgentStack. Issue #7 is complete.
- AgentStack claim and implementation plan are recorded for issue #7 on
codex/issue-7-strict-source-completeness. - Red-first evidence: mapper, method, and assembly strict-source configuration cases were added to the generator suite; the usage-guide contract initially failed because no first-class strict-source section existed.
- Implementation: synchronized the usage guide, consumer skill, and mapping-rules reference to explain opt-in
UnmappedSourceMembers,LITEMAPPER1003, staged severities,IgnoreSource, theIgnoredefault rationale, and the independent target-completeness boundary. No public API or production generator behavior changed. - Validation: strict-source generator coverage passes 27/27; full generator suite passes 564/564; solution build passes with 0 warnings/errors; solution tests pass 629 with 1 expected Windows Native AOT linker-prerequisite skip; usage documentation passes 1/1; skill validation and CRLF-aware diff check pass. PR #10 is merged and issue #7 is closed.
- AgentStack claim and execution plan are recorded for issue #6 on
codex/issue-6-existing-target-atomicity. - Current behavior: existing-target assignments are generated in deterministic target-member name order. Each getter/converter expression is evaluated immediately before its assignment, so a later failure can leave earlier destination members changed.
- Normative gap: sections 9.4, 16.1, 16.3, 16.4, and 19.7 require stable evaluation/single-evaluation and update semantics but do not choose transaction-like staging versus sequential commits.
- Recommendation: Option A, document non-transactional updates with deterministic target-member evaluation and assignment order, preserving the current direct generated behavior. This does not make setter side effects transactional.
- Status: Option A approved by the user and incorporated into
SPECIFICATION.md; implementation, local validation, review, merge, and issue closure are complete through PR #9.
- AgentStack claim and execution plan are recorded for issue #5 on
codex/issue-5-declaration-coverage. - Red-first evidence: closed constructed generic registration cases first failed with
LITEMAPPER0010under the previous generic-type guard; after the guard was limited to unbound generic types, four closed cases and two unbound rejection cases pass at class and assembly scope. - Fixture evidence: valid
protected,in,out, and extra-parameter declarations now assert clean input compilation apart from deliberate partial declarations, preserve a healthy generated mapping, and verify diagnostic ID, severity, message, and source location. Constructor and missing-registration diagnostics have the same contract checks. - Decision: closed constructed static external containers such as
typeof(External<int>)are valid when they expose usable non-generic methods after substitution. Unbound generic containers and generic methods remain rejected. - Validation: focused issue #5 coverage passes 86/86; the full generator suite passes 558/558 on each Roslyn 4.8.0, 4.14.0, and 5.9.0 host; the solution build has zero warnings/errors.
- Integration: the complete solution test run passes 624/625 with one expected Windows Native AOT linker-prerequisite skip; no test failures or other skips occurred.
- Decision record:
DECISIONS.mdPENDING-0008. The specification, usage guide, changelog, skill, and mapping rules reflect the approved behavior. Implementation is ready for review.
- Decision: ordinary unmapped target members remain
Errorby default;LITEMAPPER1001remains configurable for explicit mapper/method policy and standard compiler severity configuration. - Safety boundary: ordinary suppression or downgrade does not suppress generation and is not proof of complete mapping. Required, non-nullable, inaccessible, invalid, and otherwise mandatory target obligations remain hard non-configurable errors.
IgnoreTargetandUseTargetDefaultretain their existing validation. - CI guidance: projects requiring mandatory unmapped-target coverage should treat
LITEMAPPER1001as an error in CI and audit or avoid project-wide suppression. LiteMapper cannot prevent an intentional consumer editorconfig override while the diagnostic remains configurable. - Scope: documentation and skill synchronization plus one generator regression; no production-source, public API, diagnostic, or semantic behavior changes.
- Validation: contradiction search found no old warning-default or non-configurable-
LITEMAPPER1001claims; scopedgit diff --checkpassed;python C:/Users/aless/.codex/skills/.system/skill-creator/scripts/quick_validate.py skills/mammoth-litemapperpassed;dotnet test tests\Mammoth.LiteMapper.Packaging.Tests\Mammoth.LiteMapper.Packaging.Tests.csproj --no-restore --filter Milestone16UsageDocumentationTestspassed 1/1. No production-source, public API, diagnostic, or semantic behavior changes are part of this scope. Committed as5ea413f, merged intodevelop, pushed, and issue #4 closed.
- Red-first evidence: the generator regression fixture proves an ordinary unmapped target member produces
LITEMAPPER1001at Error severity by default and namesTarget member 'Extra'in the message. - Control evidence: an explicit mapper-level
UnmappedMemberPolicy.Ignoresuppresses the diagnostic and still produces a valid implementation. - Compatibility: explicit Warning, Info, Error, and Ignore policies remain supported and all reported target/source diagnostics name the exact member;
IgnoreTargetandUseTargetDefaultremain explicit target-member opt-outs; unmapped source members remain ignored by default. - Documentation:
SPECIFICATION.md,docs/USAGE.md,CHANGELOG.md,skills/mammoth-litemapper/SKILL.md, andskills/mammoth-litemapper/references/mapping-rules.mdare synchronized.DEC-0038records the default rationale andDEC-0039records the member-specific message contract. - Test boundary: library generator regressions are required; consumers do not need to write a mapping test for every DTO solely because the default diagnostic severity changed.
- Current state: delegated implementation and documentation checks passed; integrated validation passed; user review remains.
- Red-first evidence:
inlining-red-valid.trxfailed 1/1 because the generated direct mapping lackedMethodImplOptions.AggressiveInlining. The first green attempt exposed only a stale snapshot and an over-qualified test assertion; neither was treated as an implementation failure. - Fixture recovery: a nullable-path exclusion was first written with an invalid verbatim-string quote, then with
MapPropertyon the mapper type instead of the method, and finally asserted a separateifalthough create mappings emitsource.Child?.Value ?? throw. These test-fixture failures were corrected without production changes. The first retry also hit blocked NuGet signature access; the approved restore succeeded. - Focused evidence:
inlining-final-focused.trxpasses 15/15 across the five-test optimization fixture and relevant Milestone 4/13 cases.inlining-capability-red.trxfirst failed withCS0122;inlining-capability-green.trxpasses 5/5 after exact public-symbol validation. The strengthened nullable-path control passes 5/5 ininlining-precondition-green-4.trx. The generated compilation has zero errors, and all stated exclusions omit the hint. - Host matrix:
inline-final3-4.8.0.trx,inline-final3-4.14.0.trx, andinline-final3-5.9.0.trxeach pass 540/540 with no skips. Roslyn 4.8.0 was restored before integration. - Windows integration: the current-revision sandboxed run
inline-final3-solution.trxfailed 11 packaging tests because child-process NuGet restores were blocked; generator 540/540, runtime 5/5, and integration 1/1 passed in that attempt. It is not acceptance evidence. The unrestricted reruninline-final3-solution-escalated.trxpasses 607 tests: 540 generator, 61 packaging, 5 runtime, and 1 integration, with one expected Windows Native AOT linker-prerequisite skip. The packaging project includes all 12 consumer combinations. - Linux AOT: the disposable SDK 10 container installed Clang/zlib and ran the required test with
LITEMAPPER_REQUIRE_NATIVE_AOT=1; 1 passed, 0 failed/skipped in 31 seconds. - Performance:
artifacts/disassembly/generated-inline-final2records Manual 4.307 ns/73 bytes and LiteMapper 4.465 ns/70 bytes; both allocate 40 bytes. The generated source underartifacts/generated-inline-final2contains the capability-qualified attribute. The earlier unoptimized paired evidence was Manual 4.1690 ns versus LiteMapper 4.8219 ns with a wrapper jump plus separate mapping method. - Skill alignment:
skill-creator/scripts/quick_validate.py skills/mammoth-litemapperpasses. The skill audit found no consumer-contract mismatch, sodocs/USAGE.md,skills/mammoth-litemapper/SKILL.md, and its mapping rules remain unchanged and contain no implementation-status links. A final independent implementation review accepted the bounded predicate, capability fallback, and regression coverage. - Diff hygiene: the task-owned scoped
git diff --checkpasses. The repository-wide check reports only pre-existing trailing whitespace in the preserved user-ownedAGENTS.mdlines 140 and 152-155; that file was not changed by this work.
- Red-first final regressions covered patch-guarded declared mappings, required nullable converter inputs, configured nested Throw ordering, direct nullable-value converters, exact/fallback default pairs, required nested construction, and generated identifier collisions. The final focused set passes 10 tests.
- Roslyn 4.8.0, 4.14.0, and 5.9.0 each pass 535 generator tests with zero failures/skips. Default 4.8.0 was restored afterward.
- Final Windows solution: 602 passed, zero failed, one skipped (535 generator, 5 runtime, 1 integration, 61 packaging). The skip is the Windows Native AOT linker-prerequisite case. Packaging includes all 12 consumer combinations.
- Required isolated Linux Native AOT: 1 passed, zero failed/skipped. Evidence:
artifacts/validation/final-20260909/final-accepted-native-aot.trx. - Final back-to-back affinity-pinned Medium baseline/candidate comparison passes five scenarios. Manual changed from 4.2054 ns to 4.1690 ns (-0.87%); LiteMapper changed from 4.8502 ns to 4.8219 ns (-0.58%); allocation remained 40 bytes. Normalized evidence is
artifacts/performance/controlled-20260909/affinity1-final-pair-baseline.normalized.jsonandaffinity1-final-pair-candidate.normalized.json. The earlier non-affinity comparison remains invalid historical evidence. A first final-source candidate executed zero benchmarks after a sandbox proxy 403, and the preceding isolated candidate required review because Mapster drifted +14.95%; neither is acceptance evidence. - Skill validation, the final scoped diff/whitespace checks, and the read-only documentation contradiction audit pass after synchronization. Remote CI was not run. No commit, push, or publication occurred.
- Windows final Roslyn4.14/5.9:429 passes each, zero failures/skips (TRX13:16:10/13:17:15). First4.14 command was sandbox-blocked at NuGet, escalated retry succeeded. Default4.8 restored. Full Windows482 passes, zero failures, one missing-platform-linker AOT skip:429 generator,5 runtime,1 integration,47 packaging. Packaging TRX13:18:31; generator13:18:11. No Source Link advisory warning reported.
- Linux isolated SDK10.0.400 with runtimes8.0.31/9.0.20/10.0.11: each Roslyn host429 passes (32s/31s/29s), no skips. Full solution first run482 passes/one failure/zero skips. All12 consumer combinations and required AOT passed. Failure was CleanPackageSampleTests rejecting a successful English
0 Warning(s)summary. - Added eight warning-check regressions: initial two failures/six controls (TRX13:28:43), then eight passes (13:29:12) after excluding only exact zero-count summary lines from warning-text detection. Real LiteMapper warnings, IL2 warnings and nonzero summaries remain rejected on stdout/stderr. Full Linux packaging retry56 passes, zero failures/skips,3m7s, including consumers/AOT/samples and security tests. Generator/runtime code unchanged by helper fix; their prior runs remain valid. Windows full482 predates these eight helper tests; Windows focused8 is current, not a claimed490-test full rerun.
- Evidence under artifacts/validation/linux-20260909-cr016: three host TRX, tests/*/TestResults full-run TRX, retry/packaging.trx, SDK/runtime inventory, Dockerfile and execution scripts. Local image sha256:350bd9dd4bd7f0b8aa55c5bc1cb1fe91bc350085a023d07993ef1dab4136a91a. Source copied into container; host worktree preserved. All sessions terminal. Remote CI remains unexecuted; no publish/push/commit.
- USAGE now includes consumer AOT prerequisites/publish example and supported OS context; skill reflects verified local Linux matrix. Skill validation and scoped diff checks pass. CR-017 read-only implementation/regression plan is recorded in CONFORMANCE_REVIEW; no new normative blocker. Task-budget checkpoint, goal incomplete.
- Registration29 cases began16 failures/13 controls (TRX13:08:02). Removed missing-name special case; require usable ordinary static supported methods and non-generic containers; validate accessibility from the mapper, including assembly registrations. Global malformed assembly configuration remains fatal. Focused97 passed (13:08:51); full427 passed on4.8/4.14/5.9 (13:10:01/13:11:02/13:11:57).
- Review caught over-rejection introduced by the new ref-return check. Two positive tests failed with0010 (13:13:16); removed restriction. Final full default generator429 passes, zero failures/skips,34s (13:13:34). A returned ref/ref-readonly int3 copies to target3, remaining3 after source becomes7. Newer hosts/full solution/Linux have not run after this correction.
- SourceLinkDependencySecurityTests began three failures (13:09:10), proving every shipping project resolved affected Build.Tasks.Git10.0.300. Updated global SourceLink.GitHub pin to10.0.303; restored graph confirms Build.Tasks.Git10.0.303. Sandbox restore was blocked by NuGet allowlist; escalated restore succeeded without advisory warning. Three regression cases now pass (13:09:53). Existing-source tests validate advisory ranges, not an exact pin.
- USAGE and skill reference include usable/unusable registration examples and ref-return value copying. No normative decision changed. TokenSave remains unavailable; direct inspection used. One patch context mismatch made no changes and was corrected. All agents handed back; no live sessions. Task-budget checkpoint; full goal remains active, no commit/push/publication.
- Windows Roslyn4.14/5.9 each398 passes, zero failures/skips; default4.8 restored. Full Windows retry448 passes (398 generator,5 runtime,1 integration,44 packaging), zero failures, one Native AOT missing-platform-linker skip. Includes all12 consumer combinations. Packaging TRX12:55:54; generator12:55:25. First sandbox attempt435 passes/14 NuGet failures/zero skips is retained below.
- Isolated Linux SDK10 container:398 passes on each Roslyn4.8/4.14/5.9 (29s/28s/28s), restored4.8, required Native AOT one pass/zero failures/skips (14s). Evidence: artifacts/validation/linux-20260909-cr015/{roslyn-4.8.0.trx,roslyn-4.14.0.trx,roslyn-5.9.0.trx,native-aot.trx,dotnet-info.txt}. This closes local compiler-host evidence, not Linux consumer combinations or remote CI. Source stayed unchanged during validation; no live sessions remain.
- NU1902 was reported on Windows/Linux: repository-wide Microsoft.SourceLink.GitHub10.0.300 brings Microsoft.Build.Tasks.Git10.0.300. Microsoft advisory identifies10.0.303 as patched. NuGet lists SourceLink.GitHub10.0.303; dependency pin has not yet changed. Verify its resolved dependency and update coherently, preserving audit behavior. A direct NuGet browser open failed; search confirmed the package listing.
- Read-only22.11–22.16 audit added unexecuted nested-update and coverage findings to CONFORMANCE_REVIEW. No new normative ambiguity or implementation repair occurred in this validation checkpoint. Usage/skill behavior remains unchanged. Preserve all user edits; no commit/push/publication/completion.
-
First current-revision Windows solution attempt failed under sandbox network restrictions:435 passed,14 failed, zero skipped. All12 consumer combinations, trimming, and Native AOT failed while accessing NuGet (NU1301/NU1900/transport errors); packaging31 passed/14 failed, generator398, runtime5, integration1 passed. Packaging TRX12:49:49 records every failure. A serialized retry outside the sandbox is running. It also reports NU1902 for Microsoft.Build.Tasks.Git10.0.300 (GHSA-23fw-v26w-5fgq); this warning requires follow-up and is not suppressed.
-
Follow-up host validation: Roslyn4.14 and5.9 each passed398 tests, zero failures/skips. TRX timestamps12:44:50 and12:48:29 respectively. The old4.14 process handle was unavailable after continuation; its completed TRX confirms398 executed/passed and zero other outcomes. Restored default4.8 successfully. Current full Windows solution validation is running; Linux host suites and required AOT remain pending.
-
Previous turn was verified progress. TokenSave transport remains closed; direct source inspection was used. No new normative ambiguity; PENDING-0002/0003/0004/0005 remain approved.
-
CR-015: first20 declaration cases produced11 failures/nine controls. Defined enum constants are now validated semantically, enclosing partial record/record-struct/interface kinds are reproduced, and fatal assembly configuration prevents implementation emission. Two added IgnoreCase=3 cast controls prove lowercase value3 maps to target Value3 over Exact defaults. Intermediate broader run55 passed/one failed because M3 test references omitted System.Runtime; complete runtime references corrected that fixture without weakening expected diagnostics. Final declaration/isolation/incremental run58 passed, zero failures/skips, TRX12:37:57.
-
Replaced duplicate-signature constructor ambiguity and illegal required get-only fixtures with legal C#. Input compilation now rejects malformed fixtures. Added runtime checks for record/record-struct/init/required/optional values and nested-private construction, plus greatest-arity/marked constructor selection, read-only fields, and accessible record-copy exclusion.
-
First constructor suite:four failures/nine passes, TRX12:38:44. Unbound ordinary read-only value fields were assigned illegally at root and nested boundaries. They now follow target-member policy without assignment; mandatory target obligations remain fatal. Follow-up33 passes/two failures exposed incorrect new test assumptions about configurable errors suppressing output. Corrected those assertions to match existing configurable-diagnostic semantics, preserving severity and compilation/runtime checks. Example: unbound readonly Value stays0 even when source Value=3; constructor-bound Value maps3.
-
Complete default Roslyn4.8 generator suite passed398 tests, zero failures/skips (45s), TRX
tests/Mammoth.LiteMapper.Generator.Tests/TestResults/aless_SPECTRE_GRD_2026-09-09_12_40_32_net10.0.trx. Full/platform reruns remain required. No processes are active; delegated work is handed back. Usage/skill explain verified declarations/constants/read-only behavior. Task budget boundary was surfaced; no commit, push, publication, or whole-project completion claim.
- User accepted PENDING-0005. Sections13.1/13.4 and diagnostic7002 were updated before tests/implementation. Seven new cases produced four failures/three controls (full edge suite:four failures/19 passes), TRX12:19:51.
- Named composite target values are compared with the OR of mapped atomic target flags. Inconsistent values emit7002 and omit the invalid implementation, while independent mappings remain generated. Source bit width and signed target values are covered. Example: Read4 OR Write8 accepts Both12 and rejects Both16; signed sbyte/long consistent composites remain valid.
- Final focused EnumContractEdgeTests23 plus CrossTypeNullableEnumTests16:39 passes, zero failures/skips (11s), TRX12:20:50. Delegated implementation is handed back. Usage/skill/decisions/plan/review reflect the approved rule. Skill validator and scoped diff checks pass. Complete current-revision host/platform validation is running; no commit/push/publication or whole-project completion claim.
- Complete Windows generator suites pass368 tests each on Roslyn4.14/5.9 (Release,45s each; TRX12:21:39/12:22:46) and restored default4.8 (full solution,37s; TRX12:24:01), zero failures/skips.
- Full Windows solution passed418 tests (368 generator, five runtime, one integration,44 packaging), zero failures, one Windows Native AOT prerequisite skip. Includes all12 consumers, package/API/reproducibility, trimming, samples/usage, and benchmark smoke. Packaging TRX
tests/Mammoth.LiteMapper.Packaging.Tests/TestResults/aless_SPECTRE_GRD_2026-09-09_12_24_22_net10.0.trx, duration4m38s. - Required isolated Linux Native AOT passed one test, zero failures/skips (26s), serially after Windows, with SDK10, clang/zlib, source/Git copy and LITEMAPPER_REQUIRE_NATIVE_AOT=1. All validation sessions are terminal; default Roslyn4.8 is restored. Skill validator/scoped diff checks passed, and USAGE contains no conformance/handoff links. Actual Linux framework/compiler matrix and remote CI evidence remain open.
- Continuing read-only22.9/22.10 audit identified CR-015 valid attribute enum casts and enclosing record/interface declaration emission as regression targets, plus invalid constructor fixtures/missing evidence. No CR-015 test or fix has been executed. Detailed requirement-to-test mapping is in CONFORMANCE_REVIEW; no new normative ambiguity is known.
-
The same unresolved PENDING-0005 condition was verified across three consecutive goal turns. The all-defects goal is marked blocked pending the user's decision; it is not complete. No further implementation or validation was performed during these blocker checks.
-
CR-014: first14 edge regressions produced12 failures/two controls. Repaired missing composite-name handling, unchecked declared overflow and alias fallback, signed flag widths, ordinary alias consistency, generated variable collisions, and repeated unknown-value source-path evaluation. Two generator-local naming collisions initially blocked compilation and were corrected. Added two policy-intersection controls for unchecked aliases300->byte44 and255->sbyte-1. Final focused enum/nullable run:32 passed, zero failures/skips, TRX11:53:21.
-
The old positive AlsoRead fixture omitted its target name, contradicting13.1/13.5. It now defines a matching target alias and verifies its runtime result; separate new tests reject missing/conflicting ordinary aliases. No assertion was weakened to hide a failure.
-
Complete default Roslyn4.8 generator suite passed361 tests, zero failures/skips (39s), TRX
tests/Mammoth.LiteMapper.Generator.Tests/TestResults/aless_SPECTRE_GRD_2026-09-09_11_54_21_net10.0.trx. This already-running validation was allowed to finish after identifying PENDING-0005. All task-owned sessions are terminal and delegated work is handed back. No further implementation or new full/platform run started after the normative stop. -
Usage/skill explain verified unchecked/flags/alias cases; control documents record PENDING-0005. The latest full solution, newer hosts, and Linux AOT validated the preceding CR-010 source; they are historical for CR-014. Required remaining commands are not waived. No commit, push, publication, or goal completion.
-
Subsequent validation completed before CR-014 source repairs: Release Roslyn4.14.0 and5.9.0 each passed345 tests, zero failures/skips (33s/32s), with generator TRX times11:37:41 and11:38:31. Default4.8 restore completed. Required isolated Linux AOT passed one test, zero failures/skips (23s). Docker image inventory was sandbox-denied; approved retry succeeded. This completes the CR-010 revision's outstanding runs.
-
Continuing section13 audit produced14 EnumContractEdgeTests cases:12 failed/two controls passed on the first run, TRX
tests/Mammoth.LiteMapper.Generator.Tests/TestResults/aless_SPECTRE_GRD_2026-09-09_11_48_58_net10.0.trx. CR-014 repair is in progress; the345/395/AOT results above do not establish validation of its subsequent edits. No new normative ambiguity was found. -
Previous goal turn completed verified repairs and validation. Current review used direct source after TokenSave transport closed; no index update was attempted.
-
Eight boxing cases initially produced seven failures/one pass; one fixture unintentionally selected another partial mapping as its converter. Isolating that mapper corrected the fixture: six implementation failures/two controls. Nullable value unwrapping now applies before boxing into explicitly non-null references. The first repair produced two duplicate-null-check compilation failures/23 passes; conversion metadata now recognizes the already checked value.
-
Fifteen nullable enum cases produced12 failures/three Error-policy controls. Enum resolution unwraps nullable types, applies the underlying strategy, and preserves nullable targets. The generated switch evaluates nullable source values once and preserves source paths. Example: From.Ready=1 maps by name to To.Ready=9; null remains null for To?, while Throw rejects it for To. Unknown99 still throws. A local variable naming collision initially blocked generator compilation and was corrected before the40-case focused run passed.
-
Independent follow-up identified oblivious boxing annotations and a generated temporary collision with the legal source parameter __nullableEnumValue. Both added regressions failed first, then passed after restricting reference mismatch checks to NotAnnotated and reserving mapping parameter names. No new normative ambiguity or specification change.
-
Complete default Roslyn4.8 generator suite:345 passed, zero failures/skips (43s), TRX
tests/Mammoth.LiteMapper.Generator.Tests/TestResults/aless_SPECTRE_GRD_2026-09-09_11_30_11_net10.0.trx. The earlier343-pass run predates these two follow-up corrections. -
Final Windows solution passed395 tests (345 generator, five runtime, one integration,44 packaging), zero failures, one Windows Native AOT prerequisite skip. Includes all12 consumer combinations, package/API/reproducibility, trimming, samples/usage, and benchmark smoke checks. Generator TRX run time11:31:36; packaging TRX
tests/Mammoth.LiteMapper.Packaging.Tests/TestResults/aless_SPECTRE_GRD_2026-09-09_11_32_01_net10.0.trx, duration4m01s. All task-owned validation sessions are terminal; default Roslyn4.8 remains selected. Current-revision Roslyn4.14/5.9 and required Linux AOT reruns remain pending, not waived. Skill validator and scoped diff checks passed. Task budget boundary was surfaced; continue from this checkpoint. -
Usage and skill now clarify nullable boxing and enum behavior with examples. No commit, push, publication, or whole-project completion claim.
- Previous goal turn was verified progress. Current work preserves the branch and dirty changes; no specification semantics changed.
- CR-013: 11 initial inheritance cases yielded eight failures/three controls; three additional ambiguity/hiding cases failed. Accessible inherited interface members, inherited source paths and ignore/default names now use one hierarchy traversal, preserving diamond deduplication and unrelated-member ambiguity. Explicit inherited converter selection uses compiler lookup and accessibility/static checks.
- A follow-up nullable base-overload control failed because merely ranking symbols differed from the actual C# call. Speculative C# invocation binding now determines the inherited callable overload. All 16 inherited cases pass, including implicit profile-inheritance exclusion and independent base/derived return-nullability behavior. Example: inherited Value=3 maps to target Value=3; protected base Parse("12") can explicitly return13.
- CR-004: 14 converter-result regressions yielded 12 failures/two disabled-policy controls. Effective numeric/operator options now govern result eligibility and emission; null checks precede conversion and invoke the converter once. All 33 result/contract cases pass; combined inheritance/converter run:49 passes, zero failures/skips. Example:2147483648L overflows under Checked and becomes int.MinValue under Unchecked.
- Full post-fix Release suites passed 320 tests each on Roslyn 5.9.0 and 4.14.0, zero failures/skips; generator TRX run times: 11:10:07 and 11:11:39. Default 4.8.0 was explicitly restored; the full solution's generator suite passed all 320 tests, including the loaded-host assertion, with TRX
tests/Mammoth.LiteMapper.Generator.Tests/TestResults/aless_SPECTRE_GRD_2026-09-09_11_13_34_net10.0.trx. - Full Windows solution passed 370 tests (320 generator, five runtime, one integration, 44 packaging), zero failures, one Windows Native AOT prerequisite skip. Includes all 12 consumer combinations, package/API/reproducibility, trimming, samples/usage, and benchmark smoke validation. Packaging TRX:
tests/Mammoth.LiteMapper.Packaging.Tests/TestResults/aless_SPECTRE_GRD_2026-09-09_11_13_57_net10.0.trx; packaging duration 4m04s. - Required Linux Native AOT passed one test, zero failures/skips (27s), after Windows validation, in the isolated SDK10 container with clang/zlib, source/Git copy, and LITEMAPPER_REQUIRE_NATIVE_AOT=1. Linux framework/compiler matrix and remote CI evidence remain open. All task-owned validation sessions are terminal; default Roslyn4.8 remains restored. Skill validation and scoped diff checks passed.
- An optional process inspection using Get-CimInstance was denied by the sandbox. Test-session polling and persisted TRX results supplied completion evidence; no process was terminated.
- Usage and skill contain concrete inherited-source/base-converter and converter-result examples. This continuation exceeded the repository task token allowance; the breach was surfaced and verified progress is checkpointed for the next continuation. The goal remains active and incomplete; no commit, push, or publication occurred.
- Read the specification and control documents on resume. The branch is now
feature/improvement_and_skill; existing changes are preserved. TokenSave recognizes this branch. Context7 still returns unrelated libraries. - Initial full Release host runs: Roslyn 4.8.0 and 4.14.0 each passed 287 tests, zero failures/skips. Roslyn 5.9.0 passed 286 and failed one declaration-diagnostic test: the symbol no longer reports IsAsync for a bodyless async partial declaration. TRX run names end in
2026-09-09_10_35_24_net10.0.trx,2026-09-09_10_41_57_net10.0.trx, and2026-09-09_10_42_48_net10.0.trxunder generator TestResults. - Three focused async declaration regressions produced two failures/one control pass, then all three passed after checking the async syntax modifier alongside IsAsync. Invalid declarations remain unimplemented and an independent healthy mapping still generates. Full post-fix Release suites passed 290 tests each, zero failures/skips, on Roslyn 5.9/4.14/4.8. TRX run times: 10:47:02, 10:48:32, 10:49:08 respectively. Explicit default 4.8 restore completed afterward.
- Consumer restore could use a published package instead of the package just built. Two actual restore regressions failed first, then passed after mapping Mammoth.LiteMapper* exclusively to LocalPackages. A valid alternate package can no longer satisfy a missing local package. Packaging TRX run times: 10:50:54 (two failures), 10:51:29 (two passes), zero skips.
- Final Windows
dotnet test Mammoth.LiteMapper.sln --no-restore --logger trx: 340 passed (290 generator, 5 runtime, 1 integration, 44 packaging), zero failures, one local Windows Native AOT linker-prerequisite skip. Includes all 12 consumer framework/language combinations after source mapping, package/API/reproducibility, trimming, samples/usage, and benchmark smoke checks. Generator TRX:tests/Mammoth.LiteMapper.Generator.Tests/TestResults/aless_SPECTRE_GRD_2026-09-09_10_52_02_net10.0.trx; packaging TRX:tests/Mammoth.LiteMapper.Packaging.Tests/TestResults/aless_SPECTRE_GRD_2026-09-09_10_52_19_net10.0.trx(3m45s). - Final Linux Native AOT: isolated SDK10 container with clang/zlib and source/Git copy,
LITEMAPPER_REQUIRE_NATIVE_AOT=1, filterNativeAotConsumerPublishesAndRunsWithoutLiteMapperWarnings: one passed, zero failures/skips (20s). This separately covers the Windows prerequisite skip; it does not prove the Linux framework/compiler matrix or remote CI. - Skill validation and scoped diff checks passed. USAGE remains consumer-only and includes the synchronous declaration/0006 example. All test/tool sessions are terminal, delegated package work is handed back, and baseline 4.8 is restored. No commit, push, publication, or completion claim. The budget conflict was surfaced; continue from this verified checkpoint without repeating the completed document reread or unchanged validation.
- Initial and focused sandbox launches were blocked by api.nuget.org policy; approved escalated runs supplied the evidence above. The required full-document reread exceeded the repository's 10,000-token task allowance; this conflict was surfaced. No product semantics or public API changed.
- Latest combined focused suite: 60 passed, zero failures/skips (17 precedence, 19 converter contracts, 24 unsupported-type diagnostics). New regressions failed before implementation: three visible-scope duplicate defaults; nine nullable converter cases plus one passing control; seven unsupported-member/ref-like update cases plus one passing handwritten Span control.
- Twelve clean-package consumer combinations passed on Windows: netstandard2.0/net8/net9/net10 with C#9/14/latest. TRX:
tests/Mammoth.LiteMapper.Packaging.Tests/TestResults/aless_SPECTRE_GRD_2026-09-08_18_05_15_net10.0.trx. These packages preceded the latest unsupported-member/ref-like update source fixes. - Test-only Roslyn version overrides, loaded-host/shipping-baseline assertions, and Windows/Linux CI matrix jobs are implemented. The focused default 4.8 host assertion passed. No complete 4.8/4.14/5.9 host run finished: sandbox network policy blocked NuGet; a delegated escalated attempt was aborted without a process handle. The final direct 4.8 attempt was also blocked by network policy, after which the user requested this pause.
- Last complete Windows suite remains historical: 301 passed, zero failures, one local Native AOT prerequisite skip. Last Linux Native AOT: one passed, zero skipped. Both precede the newest changes and require rerunning. No remote CI execution is claimed.
- Usage and skill include concrete duplicate-default and nullable-result examples; USAGE has no conformance tracking references. Previous skill validation and scoped diff checks passed. Pause-only documentation edits are checked separately; no tests are launched for the handoff.
- Full handoff, commands, ownership, open findings, and restart instructions:
docs/HANDOFF.md; copyable prompt:docs/RESUME_PROMPT.md. No commit, push, publication, scheduled continuation, or new product decision is made by this pause.
- User approved PENDING-0004 after the concrete 13-versus-23 example. Updated specification sections 11.1/11.2/28.4 before implementation. Local defaults select within the local mapping stage; explicit external selection still wins when requested.
- CR-011 nullable update repair: selected constructor arguments are retained and rendered, optional defaults are preserved, constructor-bound setters are not repeated on creation, and existing-target identity is retained. Required-member construction obligations have diagnostics/initializer coverage. Six added cases: initial two failures/one passing control, then three failing required-obligation cases; all pass after repair.
- CR-012 partial repair: local/external stages, external candidate ambiguity/default selection/registration priority, root collection converter precedence, enum elements, and jagged copying/allocation. Initial precedence tests: seven failures/six passes. A further failing root-delegation test prevented generated peer declarations from calling each other and leaking options/boxing conversions. Final precedence suite: fourteen passing cases.
- CR-004 partial repair: 2010 reference converter-result Error/Throw handling and 3003 unusable-default diagnostics. Six failing cases plus three controls now pass. Nullable value converter-result eligibility and other unsupported-type/emission coverage remain open.
- First full solution run failed: generator 256 passed/8 failed; packaging 29 passed/1 failed/1 skipped. The benchmark Dry process exceeded its existing 60-second bound. Generator failures were repaired; no assertion or timeout was weakened. Packaging TRX:
tests/Mammoth.LiteMapper.Packaging.Tests/TestResults/aless_SPECTRE_GRD_2026-09-08_17_43_09_net10.0.trx. - Final
dotnet test Mammoth.LiteMapper.sln --no-restore --logger trxsucceeded: 301 passed (265 generator, 5 runtime, 1 integration, 30 packaging), zero failures, one Windows Native AOT linker-prerequisite skip. This includes package API compatibility, deterministic package content, clean package-backed samples, trimming, usage validation, and the unchanged benchmark smoke test. Packaging TRX:tests/Mammoth.LiteMapper.Packaging.Tests/TestResults/aless_SPECTRE_GRD_2026-09-08_17_52_49_net10.0.trx(3m38s); generator TRX:tests/Mammoth.LiteMapper.Generator.Tests/TestResults/aless_SPECTRE_GRD_2026-09-08_17_52_10_net10.0.trx. - Final Linux Native AOT passed after all converter/root fixes: isolated SDK 10 container with clang/zlib prerequisites and a source/Git copy,
LITEMAPPER_REQUIRE_NATIVE_AOT=1,NativeAotConsumerPublishesAndRunsWithoutLiteMapperWarnings: 1 passed, 0 failed/skipped (31s). This separately covers the Windows prerequisite skip. All validation sessions are terminal. - Usage and skill contain the verified precedence and nullable update examples. USAGE contains no conformance-review references or implementation tracking. Skill format and scoped diff checks passed. The repository's task token budget was exceeded and surfaced; final validation is recorded and the work is checkpointed for a fresh review pass.
- Handoff: scope-wide local/external duplicate defaults, nullable value converter results, unsupported member/ref-like updates, cross-type nullability, consumer/Roslyn/language matrices, and remaining feature/performance audits. Matrix design is ready but unimplemented. Full-project completion remains unproven; no commit, push, publication, or remote CI result is claimed.
- Removed conformance-review references, regression provenance, private cycle-tracker pseudocode, and implementation/release validation tracking from
docs/USAGE.md. Retained consumer examples, supported behavior, diagnostics, and platform/package guidance. dotnet test tests/Mammoth.LiteMapper.Packaging.Tests/Mammoth.LiteMapper.Packaging.Tests.csproj --no-restore --filter Milestone16UsageDocumentationTestspassed: 1 test, 0 failures, 0 skipped, including the three source samples. Scopedgit diff --checkpassed; a targeted scan found no conformance/review/regression/audit tracking in the guide.- Broader implementation paused for newly recorded PENDING-0004. No generator implementation or specification semantics changed in this continuation. Nine drafted
ConverterContractTests.cscases remain unexecuted and must not be counted as passing or test-first evidence. Full solution/AOT/benchmark validation was not rerun for this documentation cleanup; prior evidence remains historical. - Handoff: decide PENDING-0004, then resume the open implementation and validation findings. The all-defects objective remains incomplete.
- Added
skills/mammoth-litemapper/SKILL.mdandreferences/mapping-rules.md, with README and usage installation links. - Skill format validation passed. Skills CLI local
--listdiscovered exactly one skill,mammoth-litemapper; the initial sandboxed npm request returned HTTP 403 and the approved retry succeeded. Milestone16UsageDocumentationTestspassed: 1 test, 0 failures, 0 skipped, including Basic, Collections, and ASP.NET Core smoke samples.- No library implementation or public API changed. Full solution, package/AOT, and benchmark validation were not rerun for this documentation task.
- Remote publication, remote installation, and skills.sh listing have not been performed or verified. The skill records the collection-result discrepancy and tuple verification gap rather than promising unverified behavior.
- Fixed specification section 15.3 destination construction:
IEnumerable<T>,IReadOnlyCollection<T>, andIReadOnlyList<T>produce arrays; mutable list interfaces retainList<T>. Updated usage and skill guidance for this corrected source revision. - Test-first: 13 added cases initially produced 9 expected concrete-type failures and 4 passes.
dotnet test tests/Mammoth.LiteMapper.Generator.Tests/Mammoth.LiteMapper.Generator.Tests.csproj --no-restore --filter Milestone9CollectionMappingTeststhen passed with 19 tests, 0 skipped. dotnet build Mammoth.LiteMapper.sln --no-restorepassed with 0 warnings and 0 errors. The approved unsandboxeddotnet test Mammoth.LiteMapper.sln --no-buildretry passed with 101 tests, 0 failures, and 1 Windows Native AOT prerequisite skip (80 generator, 5 runtime, 1 integration, 15 packaging passes). This includes usage/sample and benchmark dry-run validation.- Linux Native AOT:
LITEMAPPER_REQUIRE_NATIVE_AOT=1 dotnet test tests/Mammoth.LiteMapper.Packaging.Tests/Mammoth.LiteMapper.Packaging.Tests.csproj --no-restore --filter NativeAotConsumerPublishesAndRunsWithoutLiteMapperWarningspassed with 1 test, 0 skipped in a disposablemcr.microsoft.com/dotnet/sdk:10.0container with clang/zlib prerequisites and an isolated source copy including Git metadata. This separately covers the Windows prerequisite skip. - Validation recovery: initial sandboxed full-suite publish tests failed on NuGet transport/signature-metadata access. The first Linux copy omitted Git metadata and failed the Source Link warning check; the corrected copy retained it. A locked IDE index was not copied, but source/build inputs were available. Idle build servers were shut down inside the disposable container to release retained output handles; the AOT test then completed successfully. No warning suppression or weakened assertion was used.
- Scoped
git diff --checkand skill-creatorquick_validate.pypassed. Independent review found no accidental change to source classification or array-update detection. User edits toAGENTS.mdand.tokensave/config.jsonwere preserved. - Resumed analysis stopped at specification section 11.3: scalar dictionary key conversion selects an arbitrary unmarked local helper by signature. Existing
SetComparerIsPreservedAndDictionaryKeyCollisionThrowspassed (1 test, 0 skipped) while demonstrating the violation. Details are inDECISIONS.md. - Collection-interface repair is verified; the remaining whole-project review is incomplete. Converter discovery was not changed. No new public API, new milestone, commit, package publication, or remote skill publication was introduced.
- User authorized fixing all discovered defects across milestones and continuing after each implementation defect. Genuine normative ambiguities still require explicit decisions.
- Independent contract review reclassified the earlier converter finding: signature-based discovery is observable, but the specification does not define which unmarked handwritten methods qualify as explicit mappings. PENDING-0002 provides a concrete proposed rule.
- Independent allocation review found that DEC-0022's temporary buffering for unknown-count arrays is not authorized by section 23.3's allocation budget. PENDING-0003 proposes a narrow exception.
- No library code, tests, specification, usage guide, or skill changed during this audit. Existing validation evidence remains historical; no new test run was needed to establish these textual contract gaps.
- Implementation and further review stopped pending those decisions. After three consecutive checks confirmed the same unresolved blockers, the all-defects goal was marked blocked. It remains incomplete and can resume once the user decides.
- User approved PENDING-0002/PENDING-0003. Incorporated explicit handwritten mapping eligibility into section 11.3 and unknown-count array buffering into section 23.3. Implemented converter eligibility, marked element/key/value converter precedence, local default selection, and duplicate-default diagnostic
LITEMAPPER3002. Usage and skill guidance are synchronized. - Added counted/unknown-count array allocation benchmarks with manual baselines. All 12 benchmark cases completed using
--filter *CollectionAllocationBenchmarks* --job Short --warmupCount 1 --iterationCount 3 --iterationTime 100. For 0/16/1024 elements, known-count allocation was 24/88/4120 bytes and unknown-count allocation was 32/304/12544 bytes, identical to each manual baseline. This short run with concurrent validation does not establish release throughput acceptance. Reports are underBenchmarkDotNet.Artifacts/results. - CR-001 repaired: method-specific validation/planning/recursive diagnostics no longer suppress independent valid methods. Mapper-wide errors still suppress that mapper. Test-first evidence: 3 failures/1 pass before repair; all 4 regression cases pass after repair, including assertions excluding unexpected compiler errors.
- Final Windows validation: approved unrestricted
dotnet test Mammoth.LiteMapper.sln --no-restore --logger trxpassed 113 tests (92 generator, 5 runtime, 1 integration, 15 packaging), 0 failures, with 1 Native AOT skip for missing local linker prerequisites. This includes package, trimming, samples, usage, and flat benchmark smoke checks. TRX evidence is in each test project'sTestResultsdirectory, run started around 15:36 local time. - Final Linux Native AOT: isolated SDK 10 container with clang/zlib, source copy including Git metadata, and build-server reuse disabled passed
NativeAotConsumerPublishesAndRunsWithoutLiteMapperWarningswithLITEMAPPER_REQUIRE_NATIVE_AOT=1: 1 passed, 0 skipped, after the CR-001 repair. - Validation recovery: the first sandboxed solution run failed 2 publish checks on NuGet signature-metadata transport. The unrestricted retry passed. Idle MSBuild servers retaining redirected output handles were shut down so validation could finish; this revealed CR-008, a missing effective process timeout/concurrent stream-drain defect in the test harness. No assertions or warning checks were weakened.
- Skill format validation and scoped
git diff --checkpassed. User edits toAGENTS.mdand.tokensave/config.jsonremain preserved. No commit, push, package publication, or remote skill installation was performed. - Remaining: CR-002 through CR-008, validation gaps CV-001 through CV-009 (some partially addressed), and full review of the other specification feature sections. The all-defects objective and release conformance are not complete. The previous blocked goal status is historical; the user approval authorized resumed work, and the available goal tool has no resume operation.
- CR-002 fixed: validation/planning/rendering failures are caught per mapper with one sanitized
LITEMAPPER9001; the documented development option exposes the original exception. Internal stateless fault injection verifies the actual exception path. Test-first: 1 failing default-isolation case/1 passing development case, then 2 passes. - CR-007 fixed: overload ordering uses full method identity. Reversed syntax-tree order caused different generated source before repair; the regression passes afterward.
- CR-008 fixed: packaging/sample/usage tests share concurrent stream draining and a deadline that bounds process exit plus pipe closure. Child build-server reuse is disabled. Four fixture regressions failed before repair, then passed on both Windows and Linux. A reparented descendant cannot be killed through an already-exited direct parent, but inherited pipes no longer prevent the caller's timeout.
- Final Windows suite:
dotnet test Mammoth.LiteMapper.sln --no-restore --logger trxpassed 120 tests (95 generator, 5 runtime, 1 integration, 19 packaging), 0 failures, 1 Windows Native AOT linker-prerequisite skip. Packaging completed in 2m25s without manual build-server shutdown. TRX evidence for packaging:tests/Mammoth.LiteMapper.Packaging.Tests/TestResults/aless_SPECTRE_GRD_2026-09-08_15_52_11_net10.0.trx. - Final Linux checks: disposable SDK 10 container with clang/zlib and an isolated source copy passed the combined
NativeAotConsumerPublishesAndRunsWithoutLiteMapperWarnings|TestProcessTestsfilter withLITEMAPPER_REQUIRE_NATIVE_AOT=1: 5 passed, 0 skipped (36s). This includes actual Native AOT publish/execution after the generator changes. - Skill validation and scoped diff checks passed. Usage, skill, decision log, implementation plan, and conformance ledger are synchronized. No consumer API was added, no user edits were discarded, and nothing was committed or published.
- Diagnostic audit found no normative blocker and recorded concrete canonical IDs/emission scenarios in
docs/CONFORMANCE_REVIEW.md. Remaining open implementation findings: CR-003/CR-004/CR-005/CR-006. Validation gaps and unaudited feature sections remain open; the whole-project objective is incomplete.
- CR-003/CR-004 partially repaired with 16 test-first cases (16 failures before repair, 16 passes after). Corrected configuration/converter/update IDs, named registered external selection, duplicate selected-converter errors, and array-update rejection independent of source shape. Remaining canonical language/numeric/nullable/unsupported-type/default cases are explicit in the ledger.
- CR-005 repaired with 21 cases: initial severity tests yielded 6 failures/11 passes; added non-nullable/default cases yielded 2 failures/2 passes. All pass. Ordinary configurable errors retain valid implementations through compiler severity overrides, while unassigned non-nullable targets emit hard 1002 unless their real default is approved.
- Final Windows:
dotnet test Mammoth.LiteMapper.sln --no-restore --logger trxpassed 157 tests (132 generator, 5 runtime, 1 integration, 19 packaging), 0 failures, 1 Native AOT linker-prerequisite skip. Packaging TRX:tests/Mammoth.LiteMapper.Packaging.Tests/TestResults/aless_SPECTRE_GRD_2026-09-08_16_05_48_net10.0.trx; duration 2m22s. - Final Linux Native AOT: isolated SDK 10 container with clang/zlib and Git/source inputs passed the required NativeAotConsumer filter with
LITEMAPPER_REQUIRE_NATIVE_AOT=1: 1 passed, 0 skipped (33s). The Windows prerequisite skip is separately covered. - One focused sandboxed test launch encountered a blocked tooling network request; the authorized unrestricted retry passed. No diagnostic suppression or weakened validation was used to pass the suite. Skill validation and scoped diff checks passed; docs/skill/control files are synchronized, unrelated user edits preserved, nothing committed or published.
- Review continues: source inspection found explicit IgnoreTarget skips mandatory validation (CR-009), distinct from the fixed ordinary Ignore policy. No normative blocker; add failing coverage next. Whole-project conformance remains incomplete.
- CR-009 repaired: required/non-nullable target obligations survive explicit ignores, optional constructor defaults take precedence over matching source values when approved, and MapProperty conflicts with ignore/default settings report 1008 independent of attribute order. Mandatory tests: 13 failures/8 passes before repair, 21 passes afterward.
- CR-003 repaired: numeric and explicit-operator options resolve at mapper/method levels and apply to root/member/element/dictionary conversion. Canonical 2005/2006/2007 have behavior tests. Nullable numeric Error/Throw handling was added after 4 nullable regressions failed; null checks precede casts and tested getters evaluate once. Final numeric/operator suite: 13 passes, no skips. General nullable/constructor/precedence conformance remains open separately.
- CV-002 resolved: 2 actual official Roslyn harness cases verify diagnostic location/arguments and exact generated source/hint/compilation using built-in MSTest assertions.
- Final Windows:
dotnet test Mammoth.LiteMapper.sln --no-restore --logger trxpassed 193 tests (168 generator, 5 runtime, 1 integration, 19 packaging), 0 failures, with 1 local Native AOT linker-prerequisite skip. Packaging TRX:tests/Mammoth.LiteMapper.Packaging.Tests/TestResults/aless_SPECTRE_GRD_2026-09-08_16_25_12_net10.0.trx; duration 2m36s. Includes samples, usage, packaging, trimming, and benchmark smoke checks. - Final Linux: disposable SDK 10 container with clang/zlib and isolated source/Git copy passed required Native AOT with
LITEMAPPER_REQUIRE_NATIVE_AOT=1(1 pass, 0 skips, 35s), thenOfficialGeneratorTests(2 passes, 0 skips). Windows prerequisite skip is separately covered. - Usage guide and skill now include source-backed checked/unchecked examples and mandatory/default rules, with explicit boundaries for unresolved constructor/nonnumeric-nullable behavior. Skill format validation and scoped diff checks passed. User edits remain preserved; nothing committed or published.
- Continued read-only audit found CR-010 nullable-value Error/Throw/patch gaps, CR-011 constructor configuration/conversion/nullability/matching/accessibility gaps, and CR-012 inconsistent conversion stage ordering. Concrete regression intent is recorded in the ledger. No new normative ambiguity; the goal remains active and whole-project conformance is incomplete.
- Previous goal turn classified as progress: implementation, tests, docs, and verified validation changed the next action. This turn continues the same all-defects objective; no normative blocker.
- NullableValueMappingTests: initial 12 failures/1 pass, followed by 4 failing collection cases. Final 17 cases pass as part of the 212-test generator suite. Repairs cover underlying-type nullable unwrapping, patch-null skipping, qualified generated types (Guid/DateTime/Span), nullable collection elements/values, and explicit root null-to-empty handling. General cross-type nullable conversion still needs review.
- UnsupportedTypeDiagnosticTests: initial 15 failures/1 pass; final 16 passes. Canonical 1016/2008/0006 branches are covered while valid handwritten ref-like converters and synchronous overloads remain supported. Unsupported member types/ref-like updates and 2010/3003 remain open.
- IncrementalIsolationTests: initial 11 failures; final 11 passes, including final exception-boundary patch in the combined generator run. Per-mapper emitted values have structural equality and detached locations; diagnostics stay current. Population removal/filtering and exact framework API capability invalidation remain open, so CR-006/CV-001 are partial repairs.
- Combined generator suite: 212 passes, 0 failures/skips. Usage/skill/control documents synchronized and skill validation/scoped diff checks passed. A focused build had transient MSB3026 retries from concurrent test hosts; subsequent tests were coordinated and the combined run passed. No assertions were weakened.
- Task budget: this continuation exceeded the repository's 10,000-token task budget. Finish current validation and continue from this checkpoint in a fresh goal turn. Goal remains active; no commit, push, or publication.
- Final Windows:
dotnet test Mammoth.LiteMapper.sln --no-restore --logger trxpassed 237 tests (212 generator, 5 runtime, 1 integration, 19 packaging), 0 failures, with 1 Native AOT local linker-prerequisite skip. Packaging TRX:tests/Mammoth.LiteMapper.Packaging.Tests/TestResults/aless_SPECTRE_GRD_2026-09-08_16_41_45_net10.0.trx; duration 2m47s. Package, trimming, samples/usage, and benchmark smoke checks passed. - Final Linux: required
NativeAotConsumerPublishesAndRunsWithoutLiteMapperWarningsin the isolated SDK 10/clang/zlib container with source/Git copy andLITEMAPPER_REQUIRE_NATIVE_AOT=1passed 1 test, 0 skipped (42s), separately covering the Windows prerequisite skip. All process sessions finished; next action is the constructor regression/repair work above.
- Prior turn was progress. This continuation added 14 constructor cases (initial 6 failures/3 passes, plus subsequent recursive and nullable numeric failures before fixes). All pass. New-object constructor configuration, candidate isolation, parameter nullability, accessibility, IgnoreCase matching, and cycle tracking are repaired. Nullable update replacement still ignores selected parameterized constructor arguments; CR-011 remains open for that case.
- Incremental pipeline now emits per candidate, ignores successful declaration-location changes in equality, and passes exact API capability/population/fresh-driver tests. Same-file mapper insertion/removal recreates identity even in an isolated stateless Roslyn attribute-provider probe. Section 19.2's "where possible" qualification covers this demonstrated host limitation; DECISIONS records official evidence. Tests retain strict caching elsewhere and require unchanged hint/content at this boundary. No specification or runtime semantics changed.
- Initial
dotnet test Mammoth.LiteMapper.sln --no-restore --logger trxfailed five generator assertions: four unconditional host-cache expectations and one global GeneratedTrees enumeration-order expectation. The latter is stronger than per-file deterministic ordering in section 19.8. Generator TRX:tests/Mammoth.LiteMapper.Generator.Tests/TestResults/aless_SPECTRE_GRD_2026-09-08_16_57_25_net10.0.trx. A follow-up run exposed two overly narrow New-only host-state assertions; recreated candidates can be Modified or New. Final complete generator rerun after correcting these documented test assumptions: 236 passed, 0 failed/skipped (25s). Do not describe the initial full-solution command as successful. - In that full solution run, runtime 5 and integration 1 passed. Packaging passed 30 with 0 failures and 1 local Windows AOT linker-prerequisite skip (3m16s), including all-six-package content hashes, package API compatibility, clean primary-package Basic/Collections/ASP.NET Core samples, trimming, and existing benchmark smoke tests. Packaging TRX:
tests/Mammoth.LiteMapper.Packaging.Tests/TestResults/aless_SPECTRE_GRD_2026-09-08_16_58_00_net10.0.trx. - Linux Native AOT passed separately: isolated SDK 10/clang/zlib/source+Git copy, required NativeAotConsumer filter with
LITEMAPPER_REQUIRE_NATIVE_AOT=1, 1 passed/0 skipped (33s). This covers the Windows prerequisite skip; no remote CI execution is claimed. - Package fingerprint regressions: eight equal-length mutation cases failed before repair; all nine mutation/metadata cases now pass. Every payload/metadata byte is hashed; only NuGet-generated relationship IDs and core-property filenames are normalized. Actual package and symbol comparisons passed. CV-005/CV-006/CV-008 are implemented and locally validated.
- Usage guide, skill, decision log, plan, and conformance ledger synchronized. Skill validation and scoped diff checks passed. No live tool/test sessions remain; no commit/push/publication. The continuation exceeded the repository's task token budget and is checkpointed for a fresh goal turn. No normative blocker; the overall goal remains active and incomplete.
W02: the two valid handwritten registration regressions failed before repair. Registration now permits legal pointer/function-pointer and ref-like handwritten signatures without relaxing generated declaration restrictions. HandwrittenRegistrationEdgeTests, ExternalRegistrationTests and UnsupportedTypeDiagnosticTests: 58 passed, 0 failed/skipped (13:47:28 TRX).
W03: Preserve nullable-source to non-nullable-target collection mapping previously omitted required diagnostic 2002. The root collection path now checks this contract. CollectionContractEdgeTests, Milestone9CollectionMappingTests, CrossTypeNullableEnumTests and NullableValueMappingTests: 69 passed, 0 failed/skipped (13:48:12 TRX). Example: a nullable source list with Preserve cannot map to a non-nullable target list and must report 2002.
Both delegated test files have returned and their focused checks passed after root fixes. Remaining W03 source-path/update coverage and W01 selection, null/patch and recursion behavior remain open. No final-revision full platform matrix has run after these changes. All-defects goal remains active; ten packages remain the planning structure, not ten completed tasks.
Sections11.2/11.5: two new valid-input MSTest regressions failed before repair (13:53:10 TRX): equal external registrations omitted3001; assembly registration produced13 instead of class-registration23. ResolveNestedUpdater now groups local/class/assembly candidates before default/ambiguity resolution. NestedUpdateMappingTests, Milestone10ExistingTargetMappingTests and ExternalRegistrationTests:43 passed,0 failed/skipped (13:53:39 TRX). USAGE and skill now include this verified example. W01 remains partial: null/patch, writable explicit selection, overload and recursive tracker cases remain. No normative change, no final full matrix after this repair. TokenSave status failed with Transport closed; direct source inspection used.
Section11.4: ExplicitNestedUpdaterPrefersIdentitySourceOverload failed with3001 before repair (13:55:05 TRX). Explicit Use now prefers identity source compatibility before resolving remaining candidates. Example: Chosen(ChildSource, ChildTarget) adds10 to source3 and wins over Chosen(object, ChildTarget), producing13. Focused nested/update/registration suite:44 passed,0 failed/skipped (13:55:26 TRX). W01 remains partial; no final full-platform validation after this change. TokenSave remains unavailable (Transport closed), so source inspection was used.
Section14.4: explicit Use of ApplyChild on a writable child failed with2009 before repair (13:56:30 TRX). Writable reference properties now attempt explicitly selected updaters, retaining replacement by default and normal converter fallback when no updater resolves. Source Child.Value3 updates the original child to3 without changing identity. NestedUpdateMappingTests, Milestone10ExistingTargetMappingTests and Milestone6ConfigurationAndConverterTests:19 passed,0 failed/skipped (13:56:52 TRX). W01 null/patch and recursion remain open; final integrated platform checks are pending.
Section11.4: omitted Source with explicit Use incorrectly reported1001 when the root had no same-name child (red13:57:57). Matching now allows the root parameter in the update path. Intermediate edits targeted the wrong block: one compile failure CS0103 and two20-test runs with1failure/19passes (13:59:05,13:59:30); these are not acceptance evidence. Corrected focused suite:20 passed,0 failed/skipped (13:59:56 TRX). Example: root Value3 supplies ApplyChild(Source, ChildTarget), setting target.Child.Value3. W01 remains partial; full integrated validation pending.
Fixed patch skipping, LITEMAPPER2001 mismatch reporting, path-preserving Throw behavior, assignment of returning updater results, and rejection of nullable get-only replacement. Focused acceptance: 51 passed, 0 failed/skipped (14:08:04 TRX). W01 recursion/tracker and broader review remain open. No final platform matrix has run after this repair.
Fixed mixed value/reference recursion, unsupported tuple structural-boundary diagnostics, and shared tracking across mutually recursive declared mappings. Runtime cycle evidence reports MapA at B.A; positional tuple and enum/operator controls pass. Focused results: 74 passed, then 24 recursion tests passed after path correction. Full default Roslyn 4.8 generator result: 469 passed, 0 failed/skipped (w04-w05-full-roslyn-4.8.0.trx). The sandboxed W01 full-run attempt was network-blocked before its approved 452-pass rerun. One later build command used a mistyped project filename and failed before compilation; the corrected generator build passed with zero warnings/errors. Final Roslyn 4.14/5.9 and platform matrices remain pending.
W07 adds 15 scenarios, bringing the harness total to 32: three nested cases and manual/generated recursive mapping with tracking off/on at depths 1, 16, and 128. The first benchmark build exposed a fixture naming collision; qualified mapper calls repaired it. The benchmark project then built with zero warnings/errors, six scenario/policy tests passed, and a Dry run discovered and executed all 15 new scenarios. The comparison policy has failing-before-fix evidence and tests environment/scenario compatibility, allocation blocking, combined-standard-error significance, greater-than-10% review, and greater-than-20% blocking. The first sandboxed benchmark execution was blocked by NuGet policy; its authorized unrestricted retry passed.
The complete read-only specification audit found seven concrete implementation candidates and missing direct tests for five catalogue diagnostics. This paragraph records the former PENDING-0006 stop: Option A was subsequently approved, 4003/6002/6003 were removed, the null-policy tests ran, and direct 3004/5001 coverage passed. No final host/platform matrix has run after the latest generator changes.
The tag-1.0.0 and current-source Medium flat runs both completed five scenarios with 15 iterations, two launches, and ten warmups. The first current-source attempt exited zero but executed no cases because the extracted baseline introduced a duplicate project name; its output is invalid. After disabling that copied project file, the candidate run completed. The raw cross-run gate failed for four methods: Manual 47.46%, LiteMapper 30.45%, Mapperly 56.70%, and AutoMapper 41.39%; allocations remained 40 bytes for all cases. This is not accepted regression evidence because the unchanged Manual control shifted from 5.175 ns to 9.851 ns, while LiteMapper's within-run ratio improved from 1.14 times Manual to 0.86 times Manual. W08 remains incomplete and requires a controlled rerun after current repairs. Raw and normalized evidence is under artifacts/performance.
- Option A for PENDING-0006 is incorporated:
4003,6002, and6003are absent from the active specification and descriptor set. - Null-policy regressions began with 6 failures/4 passes and now pass 10/10. Generation-safety regressions began with 5 failures, the collection-parameter and qualified-converter cases each failed separately, and the current focused set passes. The final complete default-host generator run before the qualified-converter repair passed 489 tests; the qualified-converter regression then passed focused. No final multi-host or platform matrix has run for this revision.
- Confirmed repairs include nullable reference root/element policy, contextual versus explicit null-collection behavior, once-only nullable scalar paths, keyword identifiers, collection parameter binding, exact closed helper identity, and fully qualified explicit converter containers.
- Five source-path defects remain queued: nullable nested target preservation, once-only nested paths, intermediate-null collection diagnostics, explicit collection Error with nullable targets, and once-only patch paths.
- PENDING-0007 Option A is approved and incorporated into specification section 11.4. A nullable-input converter receives null from nullable path traversal. A non-null converter parameter follows
NullableMismatch, including for nullable destinations. Test-first implementation resumes. - W08 still requires a controlled stable rerun after current repairs. Documentation/skill reconciliation, serialized Roslyn 4.8/4.14/5.9 hosts, the 12-consumer matrix, full solution, packaging/trimming, and required Linux Native AOT remain pending.