[Canonical page](<https://docs.dhtmlx.com/planning-engine/net/api/core/overview/>)
[Full documentation index](<https://docs.dhtmlx.com/planning-engine/llms.txt>)


# Plen.Core

The `Plen.Core` package schedules, edits, levels and scores projects. Every call is synchronous and CPU-only, with no I/O, no clock, no `Task`-returning methods and no `CancellationToken` parameters. The package targets `net10.0` and has nullable reference types enabled.

```bash
dotnet add package Plen.Core
```

Every public type lives in the `Plen` namespace. The folders below group types by topic. They aren't namespaces.

```csharp
using Plen;
```

## JSON

The package has no optional features and no JSON support of its own. JSON decoding and encoding live in the separate `Plen.Wire` package; see [Exchange JSON with a client](<https://docs.dhtmlx.com/planning-engine/net/how-to/exchange-json-with-a-client.md>).

## Public types outside the contract

The static class `Inspect` is public but hidden from IntelliSense (`[EditorBrowsable(Never)]`). It holds diagnostic hooks for benchmarks. `Engine.ScheduleState` and the `StateDoc`, `StateTask`, `StateConflict` and `StateMeta` classes it returns are an internal comparison format without a stable shape. None of these are part of the API contract or documented here. Everything else in the assembly (calendar, graph, planner, resources, normalizer) is `internal`.

The enums `Basis`, `CalendarMode` and `TimeUnit` have their own pages under [data](<https://docs.dhtmlx.com/planning-engine/net/api/core/data/overview.md>). `ConstraintType` is documented on [`TaskData`](<https://docs.dhtmlx.com/planning-engine/net/api/core/data/task-data.md>), and `GapBehavior` on [`SchedulingConfig`](<https://docs.dhtmlx.com/planning-engine/net/api/core/data/scheduling-config.md>).
