## Package Layout

The root package `/ORK/CORE` contains base runtime objects, exceptions, UUIDs, semantic version helpers, and package-level infrastructure.

Feature packages group larger domains: `/ork/json`, `/ork/date_time`, `/ork/io`, `/ork/formatting`, `/ork/collections`, and `/ork/dev`.

## Facades And Factories

The library favors small public facades with static creation methods.

JSON exposes singleton references through `/ork/cl_json=>new` and `/ork/cl_json=>parse`; date/time, duration, UUID, and SemVer APIs use similar `s_new`, `s_parse`, or `s_get` factory naming.

```abap
DATA(json_factory) = /ork/cl_json=>new.
DATA(version) = /ork/cl_semver=>s_parse( `1.2.3` ).
DATA(uuid) = /ork/cl_uuid=>s_new( ).
```

## Runtime Version

Use `/ork/core=>version` to inspect the ORK core version currently active in the ABAP system.

The value is a shared `/ork/cl_semver` instance, so you can render it as text or inspect its SemVer components.

```abap
DATA(version) = /ork/core=>version->to_string( ).
```

For release notes and migration context, read the [Changelog](https://eplamsi.org/docs/ork_core/changelog).

## Typed Interfaces

Most behavior is consumed through interfaces. Classes provide creation and infrastructure; interfaces describe the stable shape of the returned objects.

This keeps calling code focused on capabilities like `/ork/if_json_node`, `/ork/if_date_time`, `/ork/if_logger`, or `/ork/if_io_stream`.

## Fluent And Immutable APIs

Where it improves composition, methods return a new value or the current interface so calls can be chained.

Logger instances are immutable, so contextual methods return a logger with additional scope instead of mutating the existing logger.

## Exceptions

Library-specific failures use `/ork/cx_exception`.

Let those exceptions surface when the caller can handle the domain failure, and wrap them only when your application boundary needs a different error contract.