Skip to content

Framework scope scaffolding + move DevTools to tools/#115

Merged
antosubash merged 10 commits intomainfrom
feature/eloquent-torvalds-f3bb15
Apr 20, 2026
Merged

Framework scope scaffolding + move DevTools to tools/#115
antosubash merged 10 commits intomainfrom
feature/eloquent-torvalds-f3bb15

Conversation

@antosubash
Copy link
Copy Markdown
Owner

Summary

Phase 0 + Phase 1 of the framework scope minimization work (design, plan).

  • Adds framework/.allowed-projects + scripts/validate-framework-scope.mjs + Constitution §13 to enforce what may live under framework/. Four checks: allowlist, sub-project naming, sub-project no-[Module], and tools/ layering.
  • Wires validation into CI (lint job) and npm run check.
  • Moves SimpleModule.DevTools out of framework/ into a new tools/ directory — first application of the tools/ category.
  • Renames the existing tools/ (Node build scripts) → scripts/ to free up the name.

Framework allowlist shrinks from 19 → 17 permitted projects. Phases 2-4 (follow-up PRs) will absorb the remaining provider projects (Storage, Agents, Rag) into their owning modules and drain the allowlist to the final 4 foundational projects.

Test plan

  • CI lint job passes with the new Validate framework scope step
  • Docker build restores correctly through the new tools/SimpleModule.DevTools path
  • SimpleModule.DevTools.Tests (37 tests) still passes against the moved project
  • Note: pre-existing SM0025 failures on Agents, Rag, BackgroundJobs and MailKit NU1902 are not introduced by this PR — they exist on main and are flagged in the spec for Phases 2-4 to resolve

Design for shrinking framework/ to four projects (Core, Database,
Generator, Hosting) and moving provider packages into their owning
modules. Defines sub-project convention, new tools/ category for
non-module utilities, and CI-enforced allowlist to prevent regression.
Frees the tools/ directory for non-module .NET projects (per the
framework scope minimization design). The existing Node build scripts
are genuinely scripts, not tools.

- 11 .mjs files moved via git mv (history preserved)
- package.json npm scripts updated (9 entries)
- SimpleModule.Hosting.targets MSBuild paths updated
- CLAUDE.md, README.md, Dockerfile.worker, and frontend docs updated
- Script header comments updated
…move

Covers Phase 0 (allowlist file, validation script, CI wiring,
Constitution Section 13) and Phase 1 (DevTools -> tools/). Phases
2-4 (Storage, Agents, Rag absorptions) will get their own plans
once this lands.
Scaffolds the invariant that framework/ contains only foundational
plumbing. Script enforces four rules:
- framework/ directory allowlisted in framework/.allowed-projects
- sub-projects named SimpleModule.{Module}[.{Suffix}]
- sub-projects do not declare [Module]
- tools/ flat-layout, no [Module], not referenced from modules/

Allowlist starts permissive (all 18 current framework projects) and
shrinks as projects migrate to modules/ or tools/.

Grandfathers two known legacy sub-projects (SimpleModule.Agents.Module,
SimpleModule.Rag.Module) that predate this work. They will be removed
from the grandfather set by phases 3 and 4 of the migration.
Previously, a missing framework/.allowed-projects would die with a
Node ENOENT stack trace. Now it reports a clean script-level error
pointing to the fix. Matters for CI, where the stack trace would
be the first thing a reviewer sees.

Raised in code review of 8a08248.
Adds validate-framework-scope to the lint job and to the local
npm run check pipeline so violations fail fast before PR review.
Documents the framework allowlist, tools/ category, sub-project
convention, and validation mechanism that enforces them.
First application of the tools/ category. DevTools is a dev-time
utility (Vite dev middleware, live reload, file watchers), not
foundational plumbing, so it belongs in tools/ rather than framework/.

- git mv framework/SimpleModule.DevTools tools/SimpleModule.DevTools
- Updated ProjectReference paths in Hosting and DevTools.Tests
- Updated SimpleModule.slnx (moved under new /tools/ folder)
- Removed SimpleModule.DevTools from framework/.allowed-projects

Framework is now down to 17 allowlisted projects; phases 2-4 will
absorb the remaining provider projects into their owning modules.
The two Dockerfiles still COPY'd from framework/SimpleModule.DevTools
after the move to tools/. Restore-stage fails because the source glob
matches nothing AND because SimpleModule.Hosting's ProjectReference
to ..\..\tools\SimpleModule.DevTools can't resolve inside the Docker
build context.

Caught in code review of 666984c.
MailKit 4.15.1 has a known moderate severity vulnerability
(GHSA-9j88-vvj5-vhgr — STARTTLS Response Injection via unflushed
stream buffer that enables SASL mechanism downgrade). Fixed in
4.16.0.

MailKit 4.16.0 tightens nullability on MailService.AuthenticateAsync,
so the SMTP provider now also checks smtp.Password is non-empty
before authenticating (previously the method was called with a
potentially null password when only Username was configured).
@cloudflare-workers-and-pages
Copy link
Copy Markdown

Deploying simplemodule-website with  Cloudflare Pages  Cloudflare Pages

Latest commit: 7f717a2
Status: ✅  Deploy successful!
Preview URL: https://b16dee18.simplemodule-website.pages.dev
Branch Preview URL: https://feature-eloquent-torvalds-f3.simplemodule-website.pages.dev

View logs

@antosubash antosubash merged commit 713a098 into main Apr 20, 2026
5 checks passed
@antosubash antosubash deleted the feature/eloquent-torvalds-f3bb15 branch April 20, 2026 15:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant