Parent
#76
What to build
Two kinds of clutter now actively mislead people reading the repo.
Template scaffolding: tests/SubVora.Mobile.Tests/UnitTest1.cs is an unmodified dotnet new xunit leftover. TestRunnerSmokeTest.cs exists in three test projects; those earned their place while CI was being stood up in #71, but all three projects now have substantial real suites and the smoke tests assert nothing about the product.
Documentation sprawl: three technical_requirements*.md files sit at the repository root (technical_requirements.md, technical_requirements.backend-hardening.md, technical_requirements.gaps.md) while docs/ holds the canonical set. CLAUDE.md directs readers to docs/ only, so the root files are invisible to anyone following the project's own instructions — including future agents.
This slice removes the scaffolding and gives the requirement documents one home.
Implementation Steps
- Delete the template test — remove
tests/SubVora.Mobile.Tests/UnitTest1.cs.
- Remove the smoke tests — delete
TestRunnerSmokeTest.cs from tests/SubVora.Api.Tests/, tests/SubVora.Application.Tests/, and tests/SubVora.Infrastructure.Tests/. Confirm afterwards that each project still discovers and runs tests in CI; the smoke tests existed to prove the runner worked, so their removal must be validated by a green CI run rather than assumed.
- Consolidate the requirement documents — move all three root
technical_requirements*.md files into docs/, keeping their content unchanged. Fix the cross-references between them and any references from README.md.
- Update CLAUDE.md — its "Project" section lists the three
docs/ files as the full set. Add the moved PRDs so the list is accurate, and update the "Current State" section, which still claims "No application code exists yet (no MAUI project, no ASP.NET Core project)" — badly out of date now that both exist, and actively misleading to any agent that reads it first.
- Add the real build and test commands — CLAUDE.md explicitly asks for this once the structure exists ("Update this file once that structure exists for real, including actual build/test/run commands"). Document the per-project
dotnet test invocations that CI uses, and the reason the solution is not built as a whole on Linux (the mobile test project's Windows-only TFM, per the comment in .github/workflows/ci.yml).
Agent Routing
agent_routing:
complexity_hint: quite-easy
required_capability: fast
parallel_safe: false
cost_preference: low
speed_preference: high
ownership_scope:
- tests
- docs
- CLAUDE.md
- README.md
verification:
- dotnet test tests/SubVora.Api.Tests/SubVora.Api.Tests.csproj -c Release
- dotnet test tests/SubVora.Application.Tests/SubVora.Application.Tests.csproj -c Release
- dotnet test tests/SubVora.Infrastructure.Tests/SubVora.Infrastructure.Tests.csproj -c Release
- dotnet test tests/SubVora.Mobile.Tests/SubVora.Mobile.Tests.csproj -c Release
Technical Context Snapshot
Current stack in scope
- UI framework and UI libraries currently used: none — this slice touches tests and documentation only.
- Backend framework/runtime currently used: ASP.NET Core on
net10.0; test projects use xUnit 2.9.3 with Microsoft.NET.Test.Sdk 17.14.1 and xunit.runner.visualstudio 3.1.4.
- Data layer tooling currently used: unaffected.
Dependencies in scope
- Existing packages/libraries this slice should reuse: n/a — deletions and documentation edits only.
- New dependency additions allowed for this slice: no.
- If yes, justification and alternatives considered: n/a.
Architecture alignment
- Existing module boundaries to respect: four test projects mirror the four source projects (
SubVora.Api.Tests, SubVora.Application.Tests, SubVora.Infrastructure.Tests, SubVora.Mobile.Tests). CI runs the first three on ubuntu-latest and the fourth on windows-latest.
- Existing patterns to follow:
docs/ holds TECHNICAL_REQUIREMENTS.md, NON_TECHNICAL_REQUIREMENTS.md, and Design.md. The PRD documents being moved follow a shared shape — decisions log, schema additions, API surface, implementation steps, open HITL items — which should be preserved as-is.
- Architectural constraints from CLAUDE.md: no code behaviour may change in this slice. If any file move or deletion alters test discovery or the CI matrix, stop and raise it rather than adjusting the workflow to compensate.
create-git-issue provides routing hints only; it must not assign concrete agent/model names.
run-with-it remains the final runtime routing authority.
Integration touchpoints
- APIs/events/contracts affected: none.
- Schemas/migrations/data contracts affected: none.
- Backward compatibility expectations: all four test projects must still be discovered and pass on both CI runners. Documentation links must not break.
Acceptance criteria
Blocked by
None - can start immediately. Best landed last, since it moves documents that the other slices in this PRD reference.
Parent
#76
What to build
Two kinds of clutter now actively mislead people reading the repo.
Template scaffolding:
tests/SubVora.Mobile.Tests/UnitTest1.csis an unmodifieddotnet new xunitleftover.TestRunnerSmokeTest.csexists in three test projects; those earned their place while CI was being stood up in #71, but all three projects now have substantial real suites and the smoke tests assert nothing about the product.Documentation sprawl: three
technical_requirements*.mdfiles sit at the repository root (technical_requirements.md,technical_requirements.backend-hardening.md,technical_requirements.gaps.md) whiledocs/holds the canonical set. CLAUDE.md directs readers todocs/only, so the root files are invisible to anyone following the project's own instructions — including future agents.This slice removes the scaffolding and gives the requirement documents one home.
Implementation Steps
tests/SubVora.Mobile.Tests/UnitTest1.cs.TestRunnerSmokeTest.csfromtests/SubVora.Api.Tests/,tests/SubVora.Application.Tests/, andtests/SubVora.Infrastructure.Tests/. Confirm afterwards that each project still discovers and runs tests in CI; the smoke tests existed to prove the runner worked, so their removal must be validated by a green CI run rather than assumed.technical_requirements*.mdfiles intodocs/, keeping their content unchanged. Fix the cross-references between them and any references fromREADME.md.docs/files as the full set. Add the moved PRDs so the list is accurate, and update the "Current State" section, which still claims "No application code exists yet (no MAUI project, no ASP.NET Core project)" — badly out of date now that both exist, and actively misleading to any agent that reads it first.dotnet testinvocations that CI uses, and the reason the solution is not built as a whole on Linux (the mobile test project's Windows-only TFM, per the comment in.github/workflows/ci.yml).Agent Routing
Technical Context Snapshot
Current stack in scope
net10.0; test projects use xUnit 2.9.3 withMicrosoft.NET.Test.Sdk17.14.1 andxunit.runner.visualstudio3.1.4.Dependencies in scope
Architecture alignment
SubVora.Api.Tests,SubVora.Application.Tests,SubVora.Infrastructure.Tests,SubVora.Mobile.Tests). CI runs the first three onubuntu-latestand the fourth onwindows-latest.docs/holdsTECHNICAL_REQUIREMENTS.md,NON_TECHNICAL_REQUIREMENTS.md, andDesign.md. The PRD documents being moved follow a shared shape — decisions log, schema additions, API surface, implementation steps, open HITL items — which should be preserved as-is.create-git-issueprovides routing hints only; it must not assign concrete agent/model names.run-with-itremains the final runtime routing authority.Integration touchpoints
Acceptance criteria
UnitTest1.csand all threeTestRunnerSmokeTest.csfiles are gone, and every test project still discovers and passes its real tests on both CI runners.docs/, with cross-references and README links intact.Blocked by
None - can start immediately. Best landed last, since it moves documents that the other slices in this PRD reference.