Skip to content

Commit d78a42c

Browse files
committed
Milestone 1 - Add initial project structure and configuration for Mammoth.LiteMapper
- Created solution file Mammoth.LiteMapper.slnx to organize project folders. - Added benchmarks project with basic structure and dependencies. - Introduced sample projects for ASP.NET Core and basic console applications. - Established abstractions and generator projects with assembly markers. - Implemented initial test projects for generator, integration, and packaging tests. - Added tests to validate project structure, references, and runtime behavior.
1 parent fb80c74 commit d78a42c

34 files changed

Lines changed: 1069 additions & 0 deletions

.editorconfig

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
root = true
2+
3+
[*]
4+
charset = utf-8
5+
end_of_line = crlf
6+
insert_final_newline = true
7+
indent_style = space
8+
indent_size = 4
9+
10+
[*.{cs,csproj,props,targets}]
11+
indent_size = 4
12+
13+
[*.yml]
14+
indent_size = 2

.github/workflows/ci-linux.yml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
name: ci-linux
2+
3+
on:
4+
push:
5+
pull_request:
6+
7+
jobs:
8+
build-test:
9+
runs-on: ubuntu-latest
10+
steps:
11+
- uses: actions/checkout@v4
12+
- uses: actions/setup-dotnet@v4
13+
with:
14+
dotnet-version: '10.0.x'
15+
- name: Restore
16+
run: dotnet restore Mammoth.LiteMapper.sln
17+
- name: Build
18+
run: dotnet build Mammoth.LiteMapper.sln --no-restore
19+
- name: Test
20+
run: dotnet test Mammoth.LiteMapper.sln --no-build
21+
- name: Validate solution paths
22+
shell: pwsh
23+
run: |
24+
dotnet sln Mammoth.LiteMapper.sln list
25+
dotnet sln Mammoth.LiteMapper.slnx list

.github/workflows/ci-windows.yml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
name: ci-windows
2+
3+
on:
4+
push:
5+
pull_request:
6+
7+
jobs:
8+
build-test:
9+
runs-on: windows-latest
10+
steps:
11+
- uses: actions/checkout@v4
12+
- uses: actions/setup-dotnet@v4
13+
with:
14+
dotnet-version: '10.0.x'
15+
- name: Restore
16+
run: dotnet restore Mammoth.LiteMapper.sln
17+
- name: Build
18+
run: dotnet build Mammoth.LiteMapper.sln --no-restore
19+
- name: Test
20+
run: dotnet test Mammoth.LiteMapper.sln --no-build
21+
- name: Validate solution paths
22+
shell: pwsh
23+
run: |
24+
dotnet sln Mammoth.LiteMapper.sln list
25+
dotnet sln Mammoth.LiteMapper.slnx list

DECISIONS.md

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
# Mammoth.LiteMapper Decision Log
2+
3+
`SPECIFICATION.md` is authoritative. Accepted entries here are non-semantic implementation decisions unless explicitly stated otherwise.
4+
5+
## Accepted non-semantic implementation decisions
6+
7+
### DEC-0001
8+
9+
- Date: 2026-06-17
10+
- Milestone: 1
11+
- Status: Accepted
12+
- Context: The specification requires exact project names and both solution formats.
13+
- Decision: Use SDK-style projects under the exact section 4.6 paths and generate `Mammoth.LiteMapper.slnx` from `Mammoth.LiteMapper.sln` with `dotnet sln Mammoth.LiteMapper.sln migrate`.
14+
- Specification references: 4.6, 25.
15+
- Consequences: `.sln` remains the editable source solution; `.slnx` is regenerated after solution membership changes.
16+
17+
### DEC-0002
18+
19+
- Date: 2026-06-17
20+
- Milestone: 1
21+
- Status: Accepted
22+
- Context: The skeleton needs repeatable dependency versions and deterministic project settings.
23+
- Decision: Use central package management in `Directory.Packages.props` and shared deterministic defaults in `Directory.Build.props`.
24+
- Specification references: 3.4, 4.1, 4.2, 22.1, 22.7, 24.6.
25+
- Consequences: Package versions are controlled centrally; shipping assemblies target `netstandard2.0`.
26+
27+
### DEC-0003
28+
29+
- Date: 2026-06-17
30+
- Milestone: 1
31+
- Status: Accepted
32+
- Context: Milestone 1 must compile without implementing Milestone 2 public abstractions or Milestone 3 generator behavior.
33+
- Decision: Shipping assemblies contain internal marker types only. No public mapping or abstraction API is introduced.
34+
- Specification references: 4.6, 5, 25.
35+
- Consequences: Public API remains empty until Milestone 2.
36+
37+
### DEC-0004
38+
39+
- Date: 2026-06-17
40+
- Milestone: 1
41+
- Status: Accepted
42+
- Context: The generator must use the Roslyn 4.0.1 API baseline.
43+
- Decision: Pin `Microsoft.CodeAnalysis.CSharp` to `4.0.1` in central package management and reference it from the generator with `PrivateAssets="all"`.
44+
- Specification references: 4.1, 22.7.
45+
- Consequences: Generator code must avoid APIs introduced after Roslyn 4.0.1 unless a later approved specification change raises the baseline.
46+
47+
### DEC-0005
48+
49+
- Date: 2026-06-17
50+
- Milestone: 1
51+
- Status: Accepted
52+
- Context: Milestone 1 requires MSTest with built-in assertions.
53+
- Decision: Use `MSTest.TestFramework` `4.2.3`, `MSTest.TestAdapter` `4.2.3`, and `Microsoft.NET.Test.Sdk` `18.6.0`; do not add FluentAssertions, Shouldly, or another assertion library.
54+
- Specification references: 22.1.
55+
- Consequences: Tests use only MSTest assertion APIs.
56+
57+
### DEC-0006
58+
59+
- Date: 2026-06-17
60+
- Milestone: 1
61+
- Status: Accepted
62+
- Context: Milestone 1 requires initial Windows and Linux CI.
63+
- Decision: Add separate GitHub Actions workflows for Windows and Linux that restore, build, test, and list both solution formats.
64+
- Specification references: 22.8, 25.
65+
- Consequences: CI skeleton exists; release, trimming, AOT, package-consumer, and benchmark validation remain later milestones.
66+
67+
## Pending specification questions
68+
69+
None.
70+
71+
## Rejected alternatives
72+
73+
### DEC-0007
74+
75+
- Date: 2026-06-17
76+
- Milestone: 1
77+
- Status: Rejected
78+
- Context: Public marker APIs could make test code easier to write.
79+
- Decision or question: Do not expose public marker types in shipping assemblies during Milestone 1.
80+
- Specification references: 3.2, 5, 25.
81+
- Consequences: Tests load assemblies by name and validate that no public mapping API exists yet.
82+
83+
## Superseded decisions
84+
85+
None.

Directory.Build.props

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<Project>
2+
<PropertyGroup>
3+
<Deterministic>true</Deterministic>
4+
<ContinuousIntegrationBuild Condition="'$(CI)' == 'true'">true</ContinuousIntegrationBuild>
5+
<Nullable>enable</Nullable>
6+
<ImplicitUsings>disable</ImplicitUsings>
7+
<LangVersion>9.0</LangVersion>
8+
<AssemblyName Condition="'$(AssemblyName)' == ''">$(MSBuildProjectName)</AssemblyName>
9+
<RootNamespace Condition="'$(RootNamespace)' == ''">$(MSBuildProjectName)</RootNamespace>
10+
<PackageId Condition="'$(PackageId)' == ''">$(MSBuildProjectName)</PackageId>
11+
<IsPackable>false</IsPackable>
12+
</PropertyGroup>
13+
</Project>

Directory.Packages.props

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<Project>
2+
<PropertyGroup>
3+
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
4+
</PropertyGroup>
5+
<ItemGroup>
6+
<PackageVersion Include="BenchmarkDotNet" Version="0.15.8" />
7+
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="4.0.1" />
8+
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing.MSTest" Version="1.1.2" />
9+
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="18.6.0" />
10+
<PackageVersion Include="MSTest.TestAdapter" Version="4.2.3" />
11+
<PackageVersion Include="MSTest.TestFramework" Version="4.2.3" />
12+
</ItemGroup>
13+
</Project>

0 commit comments

Comments
 (0)