Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
---
id: TASK-13
title: 'Upgrade test projects from net8.0 to net10.0'
status: To Do
assignee: []
created_date: '2026-04-12'
labels:
- feature
dependencies: []
priority: low
---

## Description

<!-- SECTION:DESCRIPTION:BEGIN -->
Replace `net8.0` with `net10.0` in all four test projects. .NET 10 is LTS (supported until November 2028), making it the right long-term target. .NET 9 STS reaches end of support in May 2026 and is not worth targeting. .NET 8 LTS ends November 2026. Library projects already target `netstandard2.0`/`netstandard2.1` which covers all modern .NET versions — no change is needed there.

**Current state:**

- Library projects (Core, AutoMoq, AutoFakeItEasy, AutoNSubstitute): `netstandard2.0;netstandard2.1` + `net472;net48` on Windows
- Test projects (all four `*.Tests`): `net8.0` + `net472;net48` on Windows

**Proposed change:**

- Replace `net8.0` with `net10.0` in all four test projects
- Verify all dependencies support `net10.0` (AutoFixture, xUnit, Moq, FakeItEasy, NSubstitute, Microsoft.NET.Test.Sdk)
- Update CI (`windows-latest` runner already supports .NET 10)
- Update `AGENTS.md` Target Frameworks table
<!-- SECTION:DESCRIPTION:END -->

## Acceptance Criteria
<!-- AC:BEGIN -->
- [ ] #1 `net10.0` replaces `net8.0` in the `<TargetFrameworks>` in all four test `.csproj` files
- [ ] #2 All tests pass across `net10.0`, `net472`, and `net48`
- [ ] #3 CI pipeline passes without errors on all framework slices
- [ ] #4 `AGENTS.md` Target Frameworks table is updated to reflect `net10.0` for test projects
<!-- AC:END -->

## Files Affected

- `src/Objectivity.AutoFixture.XUnit2.Core.Tests/Objectivity.AutoFixture.XUnit2.Core.Tests.csproj`
- `src/Objectivity.AutoFixture.XUnit2.AutoMoq.Tests/Objectivity.AutoFixture.XUnit2.AutoMoq.Tests.csproj`
- `src/Objectivity.AutoFixture.XUnit2.AutoFakeItEasy.Tests/Objectivity.AutoFixture.XUnit2.AutoFakeItEasy.Tests.csproj`
- `src/Objectivity.AutoFixture.XUnit2.AutoNSubstitute.Tests/Objectivity.AutoFixture.XUnit2.AutoNSubstitute.Tests.csproj`
- `AGENTS.md` (Target Frameworks table)
65 changes: 65 additions & 0 deletions .backlog/tasks/task-14 - Prepare-documentation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
---
id: TASK-14
title: 'feat(docs): Migrate README into structured /docs site served via GitHub Pages'
status: To Do
assignee: []
created_date: '2026-04-12'
labels:
- doc
dependencies: []
priority: low
---

## Description

<!-- SECTION:DESCRIPTION:BEGIN -->
All documentation currently lives in `README.md` — a single flat file covering installation, all attributes, data filtering attributes, and tips & tricks. As the library grows this becomes hard to navigate and limits discoverability.

**Goal:** Migrate `README.md` content into a structured documentation site under a `/docs` folder, served via GitHub Pages with a dedicated GitHub Actions workflow.

**Phase 1 — Investigation (required before implementation):**
Evaluate and select a documentation tool. Candidates:

| Tool | Runtime | Notes |
| --- | --- | --- |
| [MkDocs + Material](https://squidfunk.github.io/mkdocs-material/) | Python | Markdown-native, mature, excellent search, widely used in OSS |
| [VitePress](https://vitepress.dev/) | Node.js | Vue-powered, fast, clean default theme |
| [Docusaurus](https://docusaurus.io/) | Node.js | React-powered, more opinionated, better for larger doc sets |

Selection criteria: Markdown-native, GitHub Pages compatible, minimal config, good built-in search, low maintenance burden, minimal CI runtime dependency.

**Phase 2 — Implementation:**

1. **Create `/docs` folder** — break `README.md` content into logical pages, e.g.:
- Getting started (installation, quick example)
- Attributes: `AutoMockData`, `InlineAutoMockData`, `MemberAutoMockData`
- Parameter attributes: `Frozen`, `IgnoreVirtualMembers`, `CustomizeWith`
- Data filtering attributes: `Except`, `PickFromRange`, `PickFromValues`, `PickNegative`
- Tips & tricks
2. **Add tool config** (e.g. `mkdocs.yml`, `vitepress.config.ts`) at the repo root or `/docs`.
3. **Add GitHub Actions workflow** under `.github/workflows/docs.yml` — build and deploy to GitHub Pages on push to `master` using `actions/upload-pages-artifact` + `actions/deploy-pages`. **Requires explicit approval before implementation** (per `AGENTS.md`).
4. **Slim down `README.md`** — keep project summary, badges, and a link to the full docs site.

**Constraints:**

- Docs build workflow can run on `ubuntu-latest` (CI currently runs on `windows-latest` for .NET Framework — docs are independent).
- Changes to `.github/workflows/` require explicit approval before implementation.

<!-- SECTION:DESCRIPTION:END -->

## Acceptance Criteria

<!-- AC:BEGIN -->
- [ ] #1 A documentation tool is selected and justified based on the evaluation criteria above
- [ ] #2 `/docs` folder exists with content migrated from `README.md` into logical pages
- [ ] #3 A GitHub Actions workflow builds and deploys the site to GitHub Pages on push to `master`
- [ ] #4 GitHub Pages is enabled on the repository and the site is publicly accessible
- [ ] #5 `README.md` is slimmed down to a project summary with a link to the docs site
<!-- AC:END -->

## Files Affected

- `/docs/` (new folder)
- `README.md` (slimmed down)
- `.github/workflows/docs.yml` (new — requires explicit approval)
- Tool-specific config file at repo root (e.g. `mkdocs.yml`, `vitepress.config.ts`)
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -441,7 +441,7 @@ These rules apply to all AI coding assistants working in this repository.
### Before Making Changes

- **Propose before acting** on any non-trivial change (new attribute, refactor, CI change). Describe the approach and wait for approval.
- **Suggest creating a backlog task** if one does not already exist before implementation begins. Search the backlog first to avoid duplicates.
- **Suggest creating a backlog task** if one does not already exist before implementation begins. Search the backlog first to avoid duplicates. Use short, plain-English titles (e.g. "Prepare documentation", "Upgrade test projects to net10.0") — do not apply Conventional Commits prefixes to task titles.
- **Suggest a branch checkout** for any non-trivial change before implementation begins. Use the Conventional Commits type as a prefix and a short kebab-case description, e.g. `git checkout -b fix/enumerable-extensions-allocation`. Common prefixes: `feat/`, `fix/`, `refactor/`, `chore/`, `ci/`, `docs/`.
- **Prefer `dotnet build` over reading files** to verify correctness — the analyser stack catches style and correctness issues that are hard to spot by inspection alone.

Expand Down