# fromwau/kern architecture

> Architecture diagram of the GitHub repository fromwau/kern, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/fromwau/kern
- Repository: https://github.com/fromwau/kern

## Overview

kern is a collection of independently consumable Kotlin Multiplatform utility modules, not one end-user application. A typical use starts when an application asks a module for a typed result, platform paths, terminal behavior, or logging; the module supplies that capability to the caller. The graph preserves the four documented module capabilities and their internal responsibilities. Several implementation files are unsampled, so their internal call relationships are omitted rather than inferred.

Main entry points: [`logger/src/commonMain/kotlin/com/fromwau/kern/logger/Logger.kt`](https://github.com/fromwau/kern/blob/master/logger/src/commonMain/kotlin/com/fromwau/kern/logger/Logger.kt) (Logger), [`logger/src/commonMain/kotlin/com/fromwau/kern/logger/Rendering.kt`](https://github.com/fromwau/kern/blob/master/logger/src/commonMain/kotlin/com/fromwau/kern/logger/Rendering.kt) (Entry rendering), [`result/src/commonMain/kotlin/com/fromwau/kern/result/Result.kt`](https://github.com/fromwau/kern/blob/master/result/src/commonMain/kotlin/com/fromwau/kern/result/Result.kt) (Result API), [`dirs/src/commonMain/kotlin/com/fromwau/kern/dirs/FileWrites.kt`](https://github.com/fromwau/kern/blob/master/dirs/src/commonMain/kotlin/com/fromwau/kern/dirs/FileWrites.kt) (File writes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_result["Typed results"]
  node_result_api["Result API<br/>[Result.kt]"]
  node_error_contract["Error contract<br/>[IError.kt]"]
  node_result_serializer["Result serializer"]
end

subgraph group_dirs["App directories and files"]
  node_base_dirs["Directory roots<br/>[BaseDirs.kt]"]
  node_dirs_factory["Platform root factory<br/>[BaseDirsFactory.kt]"]
  node_platform_dirs["Platform implementations"]
  node_file_reads["File reads<br/>[FileReads.kt]"]
  node_file_writes["File writes<br/>[FileWrites.kt]"]
  node_file_errors["File errors<br/>[FileError.kt]"]
  node_path_helpers["Path helpers<br/>[PathNames.kt]"]
  node_path_probe["Path probing<br/>[PathProbe.kt]"]
  node_directory_walk["Directory walking<br/>[Walk.kt]"]
end

subgraph group_terminal["Terminal I/O"]
  node_terminal_api["Terminal API<br/>[Terminal.kt]"]
  node_terminal_platform["Platform I/O<br/>[Platform.kt]"]
  node_terminal_style["ANSI styling<br/>[Style.kt]"]
end

subgraph group_logger["Logging"]
  node_logger_api["Logger<br/>[Logger.kt]"]
  node_logger_state["Runtime state"]
  node_log_entry["Log entry<br/>[LogEntry.kt]"]
  node_log_level["Severity levels<br/>[LogLevel.kt]"]
  node_log_format["Output formats<br/>[LogFormat.kt]"]
  node_rendering["Entry rendering<br/>[Rendering.kt]"]
  node_log_sink["Log sinks<br/>[LogSink.kt]"]
  node_console_writer["Console writer<br/>[ConsoleWriter.kt]"]
end

node_app(("Application caller"))

node_app -->|"uses"| node_result_api
node_result_api -->|"bounds errors"| node_error_contract
node_result_api -->|"serializes with"| node_result_serializer
node_app -->|"requests roots"| node_dirs_factory
node_dirs_factory -->|"creates"| node_base_dirs
node_app -->|"reads paths"| node_file_reads
node_app -->|"writes paths"| node_file_writes
node_file_writes -->|"returns typed results"| node_result_api
node_app -->|"probes paths"| node_path_probe
node_app -->|"walks paths"| node_directory_walk
node_app -->|"uses terminal"| node_terminal_api
node_terminal_platform -->|"implements platform I/O"| node_terminal_api
node_app -->|"logs events"| node_logger_api
node_logger_api -->|"reconfigures live"| node_logger_state
node_logger_api -->|"emits entries"| node_log_sink
node_logger_api -.->|"writes output"| node_console_writer
node_console_writer -->|"writes to console"| node_terminal_api
node_rendering -->|"renders"| node_log_entry
node_rendering -->|"selects format"| node_log_format
node_rendering -->|"uses styles"| node_terminal_style
node_log_entry -->|"carries severity"| node_log_level
node_logger_api -.->|"formats output"| node_rendering
node_file_reads -.->|"reports errors"| node_file_errors
node_file_writes -->|"reports errors"| node_file_errors
node_app -->|"uses paths"| node_path_helpers

click node_result_api "https://github.com/fromwau/kern/blob/master/result/src/commonMain/kotlin/com/fromwau/kern/result/Result.kt"
click node_error_contract "https://github.com/fromwau/kern/blob/master/result/src/commonMain/kotlin/com/fromwau/kern/result/IError.kt"
click node_result_serializer "https://github.com/fromwau/kern/blob/master/result/src/commonMain/kotlin/com/fromwau/kern/result/ResultSerializer.kt"
click node_base_dirs "https://github.com/fromwau/kern/blob/master/dirs/src/commonMain/kotlin/com/fromwau/kern/dirs/BaseDirs.kt"
click node_dirs_factory "https://github.com/fromwau/kern/blob/master/dirs/src/commonMain/kotlin/com/fromwau/kern/dirs/BaseDirsFactory.kt"
click node_platform_dirs "https://github.com/fromwau/kern/tree/master/dirs/src"
click node_file_reads "https://github.com/fromwau/kern/blob/master/dirs/src/commonMain/kotlin/com/fromwau/kern/dirs/FileReads.kt"
click node_file_writes "https://github.com/fromwau/kern/blob/master/dirs/src/commonMain/kotlin/com/fromwau/kern/dirs/FileWrites.kt"
click node_file_errors "https://github.com/fromwau/kern/blob/master/dirs/src/commonMain/kotlin/com/fromwau/kern/dirs/FileError.kt"
click node_path_helpers "https://github.com/fromwau/kern/blob/master/dirs/src/commonMain/kotlin/com/fromwau/kern/dirs/PathNames.kt"
click node_path_probe "https://github.com/fromwau/kern/blob/master/dirs/src/commonMain/kotlin/com/fromwau/kern/dirs/PathProbe.kt"
click node_directory_walk "https://github.com/fromwau/kern/blob/master/dirs/src/commonMain/kotlin/com/fromwau/kern/dirs/Walk.kt"
click node_terminal_api "https://github.com/fromwau/kern/blob/master/terminal/src/commonMain/kotlin/com/fromwau/kern/terminal/Terminal.kt"
click node_terminal_platform "https://github.com/fromwau/kern/blob/master/terminal/src/commonMain/kotlin/com/fromwau/kern/terminal/Platform.kt"
click node_terminal_style "https://github.com/fromwau/kern/blob/master/terminal/src/commonMain/kotlin/com/fromwau/kern/terminal/Style.kt"
click node_logger_api "https://github.com/fromwau/kern/blob/master/logger/src/commonMain/kotlin/com/fromwau/kern/logger/Logger.kt"
click node_logger_state "https://github.com/fromwau/kern/blob/master/logger/src/commonMain/kotlin/com/fromwau/kern/logger/LoggerRuntimeState.kt"
click node_log_entry "https://github.com/fromwau/kern/blob/master/logger/src/commonMain/kotlin/com/fromwau/kern/logger/LogEntry.kt"
click node_log_level "https://github.com/fromwau/kern/blob/master/logger/src/commonMain/kotlin/com/fromwau/kern/logger/LogLevel.kt"
click node_log_format "https://github.com/fromwau/kern/blob/master/logger/src/commonMain/kotlin/com/fromwau/kern/logger/LogFormat.kt"
click node_rendering "https://github.com/fromwau/kern/blob/master/logger/src/commonMain/kotlin/com/fromwau/kern/logger/Rendering.kt"
click node_log_sink "https://github.com/fromwau/kern/blob/master/logger/src/commonMain/kotlin/com/fromwau/kern/logger/LogSink.kt"
click node_console_writer "https://github.com/fromwau/kern/blob/master/logger/src/commonMain/kotlin/com/fromwau/kern/logger/ConsoleWriter.kt"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_result_api,node_error_contract,node_result_serializer toneBlue
class node_base_dirs,node_dirs_factory,node_platform_dirs,node_file_reads,node_file_writes,node_file_errors,node_path_helpers,node_path_probe,node_directory_walk toneAmber
class node_terminal_api,node_terminal_platform,node_terminal_style toneMint
class node_logger_api,node_logger_state,node_log_entry,node_log_level,node_log_format,node_rendering,node_log_sink,node_console_writer toneRose
class node_app toneIndigo
```

## Components

### Typed results

- [Result API](https://github.com/fromwau/kern/blob/master/result/src/commonMain/kotlin/com/fromwau/kern/result/Result.kt): `result/src/commonMain/kotlin/com/fromwau/kern/result/Result.kt`
- [Error contract](https://github.com/fromwau/kern/blob/master/result/src/commonMain/kotlin/com/fromwau/kern/result/IError.kt): `result/src/commonMain/kotlin/com/fromwau/kern/result/IError.kt`
- [Result serializer](https://github.com/fromwau/kern/blob/master/result/src/commonMain/kotlin/com/fromwau/kern/result/ResultSerializer.kt): `result/src/commonMain/kotlin/com/fromwau/kern/result/ResultSerializer.kt`

### App directories and files

- [Directory roots](https://github.com/fromwau/kern/blob/master/dirs/src/commonMain/kotlin/com/fromwau/kern/dirs/BaseDirs.kt): `dirs/src/commonMain/kotlin/com/fromwau/kern/dirs/BaseDirs.kt`
- [Platform root factory](https://github.com/fromwau/kern/blob/master/dirs/src/commonMain/kotlin/com/fromwau/kern/dirs/BaseDirsFactory.kt): `dirs/src/commonMain/kotlin/com/fromwau/kern/dirs/BaseDirsFactory.kt`
- [Platform implementations](https://github.com/fromwau/kern/tree/master/dirs/src): `dirs/src`
- [File reads](https://github.com/fromwau/kern/blob/master/dirs/src/commonMain/kotlin/com/fromwau/kern/dirs/FileReads.kt): `dirs/src/commonMain/kotlin/com/fromwau/kern/dirs/FileReads.kt`
- [File writes](https://github.com/fromwau/kern/blob/master/dirs/src/commonMain/kotlin/com/fromwau/kern/dirs/FileWrites.kt): `dirs/src/commonMain/kotlin/com/fromwau/kern/dirs/FileWrites.kt`
- [File errors](https://github.com/fromwau/kern/blob/master/dirs/src/commonMain/kotlin/com/fromwau/kern/dirs/FileError.kt): `dirs/src/commonMain/kotlin/com/fromwau/kern/dirs/FileError.kt`
- [Path helpers](https://github.com/fromwau/kern/blob/master/dirs/src/commonMain/kotlin/com/fromwau/kern/dirs/PathNames.kt): `dirs/src/commonMain/kotlin/com/fromwau/kern/dirs/PathNames.kt`
- [Path probing](https://github.com/fromwau/kern/blob/master/dirs/src/commonMain/kotlin/com/fromwau/kern/dirs/PathProbe.kt): `dirs/src/commonMain/kotlin/com/fromwau/kern/dirs/PathProbe.kt`
- [Directory walking](https://github.com/fromwau/kern/blob/master/dirs/src/commonMain/kotlin/com/fromwau/kern/dirs/Walk.kt): `dirs/src/commonMain/kotlin/com/fromwau/kern/dirs/Walk.kt`

### Terminal I/O

- [Terminal API](https://github.com/fromwau/kern/blob/master/terminal/src/commonMain/kotlin/com/fromwau/kern/terminal/Terminal.kt): `terminal/src/commonMain/kotlin/com/fromwau/kern/terminal/Terminal.kt`
- [Platform I/O](https://github.com/fromwau/kern/blob/master/terminal/src/commonMain/kotlin/com/fromwau/kern/terminal/Platform.kt): `terminal/src/commonMain/kotlin/com/fromwau/kern/terminal/Platform.kt`
- [ANSI styling](https://github.com/fromwau/kern/blob/master/terminal/src/commonMain/kotlin/com/fromwau/kern/terminal/Style.kt): `terminal/src/commonMain/kotlin/com/fromwau/kern/terminal/Style.kt`

### Logging

- [Logger](https://github.com/fromwau/kern/blob/master/logger/src/commonMain/kotlin/com/fromwau/kern/logger/Logger.kt): `logger/src/commonMain/kotlin/com/fromwau/kern/logger/Logger.kt`
- [Runtime state](https://github.com/fromwau/kern/blob/master/logger/src/commonMain/kotlin/com/fromwau/kern/logger/LoggerRuntimeState.kt): `logger/src/commonMain/kotlin/com/fromwau/kern/logger/LoggerRuntimeState.kt`
- [Log entry](https://github.com/fromwau/kern/blob/master/logger/src/commonMain/kotlin/com/fromwau/kern/logger/LogEntry.kt): `logger/src/commonMain/kotlin/com/fromwau/kern/logger/LogEntry.kt`
- [Severity levels](https://github.com/fromwau/kern/blob/master/logger/src/commonMain/kotlin/com/fromwau/kern/logger/LogLevel.kt): `logger/src/commonMain/kotlin/com/fromwau/kern/logger/LogLevel.kt`
- [Output formats](https://github.com/fromwau/kern/blob/master/logger/src/commonMain/kotlin/com/fromwau/kern/logger/LogFormat.kt): `logger/src/commonMain/kotlin/com/fromwau/kern/logger/LogFormat.kt`
- [Entry rendering](https://github.com/fromwau/kern/blob/master/logger/src/commonMain/kotlin/com/fromwau/kern/logger/Rendering.kt): `logger/src/commonMain/kotlin/com/fromwau/kern/logger/Rendering.kt`
- [Log sinks](https://github.com/fromwau/kern/blob/master/logger/src/commonMain/kotlin/com/fromwau/kern/logger/LogSink.kt): `logger/src/commonMain/kotlin/com/fromwau/kern/logger/LogSink.kt`
- [Console writer](https://github.com/fromwau/kern/blob/master/logger/src/commonMain/kotlin/com/fromwau/kern/logger/ConsoleWriter.kt): `logger/src/commonMain/kotlin/com/fromwau/kern/logger/ConsoleWriter.kt`

### Other components

- **Application caller**

## Connections

- Application caller → Result API: uses (evidence: `README.md`)
- Result API → Error contract: bounds errors (evidence: `result/src/commonMain/kotlin/com/fromwau/kern/result/Result.kt`)
- Result API → Result serializer: serializes with (evidence: `result/src/commonMain/kotlin/com/fromwau/kern/result/Result.kt`)
- Application caller → Platform root factory: requests roots
- Platform root factory → Directory roots: creates (evidence: `dirs/src/commonMain/kotlin/com/fromwau/kern/dirs/BaseDirsFactory.kt`)
- Application caller → File reads: reads paths (evidence: `README.md`)
- Application caller → File writes: writes paths (evidence: `README.md`)
- File writes → Result API: returns typed results (evidence: `dirs/src/commonMain/kotlin/com/fromwau/kern/dirs/FileWrites.kt`)
- Application caller → Path probing: probes paths (evidence: `README.md`)
- Application caller → Directory walking: walks paths (evidence: `README.md`)
- Application caller → Terminal API: uses terminal (evidence: `README.md`)
- Platform I/O → Terminal API: implements platform I/O (evidence: `terminal/src/commonMain/kotlin/com/fromwau/kern/terminal/Platform.kt`)
- Application caller → Logger: logs events (evidence: `README.md`)
- Logger → Runtime state: reconfigures live (evidence: `README.md`)
- Logger → Log sinks: emits entries
- Logger → Console writer: writes output
- Console writer → Terminal API: writes to console (evidence: `logger/src/commonMain/kotlin/com/fromwau/kern/logger/ConsoleWriter.kt`)
- Entry rendering → Log entry: renders (evidence: `logger/src/commonMain/kotlin/com/fromwau/kern/logger/Rendering.kt`)
- Entry rendering → Output formats: selects format (evidence: `logger/src/commonMain/kotlin/com/fromwau/kern/logger/Rendering.kt`)
- Entry rendering → ANSI styling: uses styles (evidence: `logger/src/commonMain/kotlin/com/fromwau/kern/logger/Rendering.kt`)
- Log entry → Severity levels: carries severity (evidence: `logger/src/commonMain/kotlin/com/fromwau/kern/logger/LogEntry.kt`)
- Logger → Entry rendering: formats output
- File reads → File errors: reports errors
- File writes → File errors: reports errors (evidence: `dirs/src/commonMain/kotlin/com/fromwau/kern/dirs/FileWrites.kt`)
- Application caller → Path helpers: uses paths (evidence: `README.md`)
