Odin/docs/gjallar.md

64 lines
2.9 KiB
Markdown
Raw Normal View History

2026-06-02 22:47:21 +01:00
# Gjallar
2026-08-24 20:40:19 +02:00
Gjallar is the Yggdrasil-resident aggregate compositor for Odin's domain.
2026-06-02 22:47:21 +01:00
2026-08-24 20:40:19 +02:00
Odin accepts Verse discovery and provider-owned Eve surfaces. Gjallar consumes
that accepted snapshot and publishes one typed `gjallar.overview` composition
containing every currently visible provider surface. EveCanvas, browsers, TUI
clients, and agent readers lower the same aggregate without becoming its owner.
2026-06-02 22:47:21 +01:00
## Authority Map
2026-08-24 20:40:19 +02:00
- Owner: Gjallar owns aggregate membership, tiling, marquee placement, layout
intent, visibility, and composition versioning.
- Inputs: Odin's accepted CultMesh/CultNet snapshot, provider-owned surface
graphs, Odin's canonical marquee tape, and display-independent layout hints.
- Outputs: `gjallar.overview`, its CultCache/CultMesh/CultNet publication, and
compact composition/freshness telemetry.
- Derived state: panel weights, ordering, tile layout, unavailable presentation,
and aggregate version are derived from Odin/provider state.
- Forbidden writers: Gjallar does not probe hosts, accept discovery truth,
mutate provider state, open `/dev/fb0` in daemon mode, capture client input,
or decide client pixels. Eve clients do not decide aggregate membership.
- Shared paths: iOS/UIKit, browser, optional TUI/framebuffer, and agent capture
lower the same published overview.
- Deletion line: Nightwing's `gjallar.service`, framebuffer lifecycle target,
and `nightwing-gjallar` Idunn actuator are obsolete authorities and must not
survive Yggdrasil admission.
2026-06-02 22:47:21 +01:00
## Body
2026-08-24 20:40:19 +02:00
- Runtime source: `F:\Projects\Gjallar` / `GameCult/Gjallar`.
- Daemon host: Yggdrasil beside `odin.service` and
`idunn-yggdrasil.service`.
- Unit: `gjallar-yggdrasil.service`.
- Runtime mode: `--headless`; no framebuffer, font atlas, or mouse device is
opened.
- Input: Yggdrasil-local Odin accepted snapshot over CultNet/RUDP.
- State: `/var/lib/gamecult/gjallar/gjallar.service.cc`.
- Deployment: immutable source/dependency pins, a digest-pinned .NET SDK image,
and Idunn's root-owned `gjallar` actuator manifest.
- Continuity: systemd restarts the admitted release. Until Gjallar publishes
authenticated C# health, Idunn observes its diagnostic health but does not
restart merely because authenticated publication is missing.
## Runtime Contract
```text
2026-08-24 20:40:19 +02:00
provider-owned Eve surfaces
-> Odin accepted discovery/provider snapshot
-> Gjallar aggregation and tiling
-> typed gjallar.overview Eve surface
-> EveCanvas / browser / TUI / agent lowerers
```
2026-06-02 22:47:21 +01:00
## Invariants
2026-08-24 20:40:19 +02:00
- Odin owns discovery and provider acceptance.
- Providers own their surface truth and command consequences.
- Gjallar owns composition, not discovery or pixel rendering.
- Eve clients own rendering and local input capture.
- Missing or invalid provider surfaces become explicit unavailable state or are
omitted; Gjallar never invents replacement truth.
- Daemon health follows accepted-snapshot and aggregate-publication freshness,
not rendered frames.