Skip to content

Create the v2 solution skeleton - #2437

Merged
pournasserian merged 1 commit into
v2from
2433-solution-skeleton
Oct 17, 2026
Merged

pournasserian merged 1 commit into
v2from
2433-solution-skeleton

Conversation

@pournasserian

Copy link
Copy Markdown
Member

Closes #2433

What

The solution and the projects from ADR-0004, as empty shells with the build rules enforced from day one.

  • FluentCMS.slnx with src/ and tests/ folders, Directory.Build.props (net10.0, nullable, implicit usings, warnings as errors, deterministic), Directory.Packages.props (central package versions), nuget.config (nuget.org only).
  • FluentCMS.Core, FluentCMS.Infrastructure, FluentCMS.Mcp, FluentCMS.Api, FluentCMS.Admin and FluentCMS.Host, each with only the references its ADR-0004 row permits and a composition seam (AddFluentCms*) for the epics to fill.
  • Host entry modes: fluentcms is the web host with JSON console logging and a /health endpoint, nothing else; fluentcms mcp is a generic host with the same composition, logs to standard error, binds no port, and stops when standard input closes.
  • Infrastructure: an empty FluentCmsDbContext, provider selection by configuration (SQLite by default, Npgsql when the connection string says Host= or Database:Provider is postgresql), and a startup migrator that is a no-op until the first migration exists.
  • Job queue stub: a hosted worker pool from ADR-0010 that idles on the polling interval and stops cleanly.
  • Tests: a reference-rule test that reads every src/*.csproj and fails on a direction ADR-0004 forbids; integration tests for the web host (health endpoint, job queue registered), the stdio host (no IServer, exits when input closes), SQLite, an unknown provider, and PostgreSQL when FLUENTCMS_TEST_POSTGRES is set (skipped otherwise).
  • CI: a build-and-test job beside the markdown lint, with a PostgreSQL 17 service container and the NuGet cache keyed on Directory.Packages.props.
  • CONTRIBUTING.md now documents build, test and run commands; .gitignore covers local SQLite files.

Why

Every M1 epic needs a place to put code and a build that keeps the dependency direction honest (#2433, ADR-0004). The two host modes and the database shell let the first epics start on the same composition the product will ship with.

Verified locally

dotnet build with warnings as errors, dotnet test (PostgreSQL test skipped), both host modes as real processes, and the rule test failing when a forbidden reference is added to the Admin project.

Checklist

  • Linked to an issue a maintainer has confirmed
  • Targets v2
  • Tests or docs updated where behaviour changed
  • No tool-generated co-author trailers or footers

Solution, the six projects from ADR-0004 with their reference rules, both Host entry modes, the empty DbContext with provider selection, the job queue stub, tests, and the build-and-test CI job.

Refs #2433
@pournasserian pournasserian added this to the M1 Governance core milestone Oct 17, 2026
@pournasserian pournasserian added v2 FluentCMS v2 (v2 branch) type:chore Repository, tooling or housekeeping area:infra Persistence, host, CI and build labels Oct 17, 2026
@pournasserian
pournasserian merged commit 5342c24 into v2 Oct 17, 2026
2 checks passed
@pournasserian
pournasserian deleted the 2433-solution-skeleton branch October 17, 2026 20:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:infra Persistence, host, CI and build type:chore Repository, tooling or housekeeping v2 FluentCMS v2 (v2 branch)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Create the v2 solution skeleton

1 participant