Home → Documentation → Architecture → Layers
The active repository should be understood as a small execution platform, not as a collection of transport-specific products.
| Project | Responsibility |
|---|---|
Foundgine.Abstractions |
stable platform contracts |
Foundgine.Foundation |
generic primitives and CQRS foundations |
Foundgine.Metadata |
entity, column, relationship and join metadata |
Foundgine.Diagnostics |
diagnostics infrastructure |
Foundgine.Builders |
logical query-plan structures |
Foundgine.Planning |
dynamic query and mutation planning |
Foundgine.Execution.Contracts |
execution context, rows, provider plans and provider contracts |
Foundgine.Providers |
provider compilation/execution |
Foundgine.Samples.Banking |
canonical end-to-end proof |
The product layer will add concepts without forcing them all into separate projects immediately:
Semantic Domain
↓
Resolution
↓
Policy
↓
Planning
↓
Execution
↓
Verification
↓
Evidence
The implementation should follow responsibility boundaries, not create projects prematurely.
These should remain outside the core:
MCP
GraphQL
REST
gRPC
Semantic Kernel
LLM providers
EF Core
Dapper
Temporal
Kafka
OpenTelemetry
They translate into or consume Foundgine contracts.
A future Roslyn compiler can generate semantic descriptors.
It should not become the runtime planner.
Roslyn
↓
Semantic descriptors
↓
Runtime planner
The runtime still needs dynamic planning because user intent is not known at compile time.
The former GraphQL/source-generator architecture remains documented under the older section names for historical context. It should not be treated as the current product boundary.
See archive/ for historical Graphgine implementation.