Skip to content

Operational Registers source map ​

This page is the architectural reading map for NGB.OperationalRegisters.

Confirmed source anchors ​

text
NGB.OperationalRegisters/NGB.OperationalRegisters.csproj
NGB.Runtime/NGB.Runtime.csproj
NGB.Runtime/Documents/DocumentService.cs
NGB.PropertyManagement.Api/Program.cs

What the project boundary tells you first ​

NGB.OperationalRegisters/NGB.OperationalRegisters.csproj is another deliberately slim engine project.

It depends on:

  • NGB.Core
  • NGB.Tools

That means Operational Registers are modeled as a shared business engine, not as a runtime coordinator and not as provider code.

How Runtime proves the role of Operational Registers ​

NGB.Runtime/NGB.Runtime.csproj references NGB.OperationalRegisters, which tells you Runtime is expected to coordinate OR behavior.

NGB.Runtime/Documents/DocumentService.cs then shows where operational effects become part of the effective document surface exposed back to the caller.

So the intended direction is:

  • register semantics live in the OR engine;
  • Runtime invokes and exposes them;
  • provider modules persist them.

Why this matters for the platform ​

Operational Registers are one of the core reasons NGB is more than CRUD.

They let the platform model operational state transitions and balances using business-engine concepts rather than scattered table updates.

What to inspect next in your local checkout ​

After reading this boundary map, continue into the OR engine files that define:

  • movement records;
  • register metadata/contracts;
  • balance/finalization semantics;
  • dirty-month or period-finalization concepts where present.

Safe change rules for OR ​

Keep the engine provider-agnostic ​

Do not put SQL or host composition into NGB.OperationalRegisters.

Preserve append-only semantics ​

Operational register engines should remain compatible with the platform’s append-only/storno philosophy.

Keep vertical semantics above the shared engine ​

Warehouse inventory, receivables, occupancy, and other domain-specific meanings should be modeled through definitions/runtime usage, not by hard-coding a vertical into the shared OR core.

Released under the Apache License 2.0.