Aros HIG/Vol. III/PatternsPatterns
Volume III

Patterns

Components are vocabulary; patterns are grammar. This volume sets how elements compose into the screens operators actually use — and codifies the few canonical patterns that make Aros recognisably Aros, chief among them the status pattern.

3.1 · Patterns

App shell

Every authenticated screen shares one frame: a persistent left rail, a sticky top bar, and a single content well.

aros.ryanit.com/estate
AROS
Estate
Resources
Observe
Approvals
Audit
Settings
EstateAll systems operational
Hosts
3
Resources
37
Alerts
0
rail288px fixed · z-rail · off-canvas below lg
topbar54px sticky · z-sticky · blur backdrop
contentmax 1080px · page margin --s11
MUSTThe rail's active item uses the solid icon variant + tint. The shell is identical on every screen — never relocate the rail or restyle the topbar per page.
3.2 · Patterns

Dashboard

The landing screen answers one question first — "is everything OK?" — then lets the operator drill in.

Cluster health · 1h
Failure domains
Aros PG · Patroni3/3
MinIO · EC2/3 hosts
SHOULDOrder a dashboard by urgency, then rollup, then detail: the overall verdict on top, summary metrics next, drill-in tables last.
3.3 · Patterns · canonical

The status pattern

The defining pattern of Aros. Health is presented at three nested levels — estate, host, resource — and the same grammar (dot + colour + label + rollup) is used at every level so an operator reads it identically whether they're looking at the whole estate or one container.

Operational
3
Hosts up
37
Resources
1
At risk
0
Down
LevelVerdict shownRollup rule
EstateSingle worst-case verdict + countsWorst child wins: one host down → estate "degraded"
HostHost state + resource countsWorst resource wins
ResourceLive state + last-seenLeaf — reported directly
MUSTRoll status up by worst-case. A green estate badge over a failing node is a lie, and lying about state breaks P3 (Transparent) — the cardinal sin.
NEVERAverage or "mostly green" a rollup. Status is worst-case, not a mean.
3.4 · Patterns

Inventory & tree

The estate is a hierarchy: host → VM → container. The tree makes parentage and rollup visible at a glance.

pve12 VMs · 1 container
aros-pg-dev-1VM 231
patronileader
aros-minio-4VM 274 · SPOF
pve3RAM upgrade queued
SHOULDIndent each level by --s6 and lead with the resource's domain icon. A child with no resolvable parent surfaces at root with a "no parent" note — never silently hidden.
3.5 · Patterns

Approval flow

Aros proposes; a human approves; the system applies and records. The stepper makes the gate explicit.

Proposed
Review
3Applied
Sealed
Restart aros-worker-discovery-dev
Proposed by remediation engine · schedule stalled
MUSTEvery applied action lands in the audit log ("Sealed"). The flow is not complete until it's recorded — propose, approve, apply, seal.
3.6 · Patterns

Discovery flow

How found entities surface over time. Discovery is continuous; the timeline shows what changed each sweep.

Sweep complete — 37 entities
18:57:04 · pve1, pve2, pve3
New VM entity materialised — aros-pg-dev-3
18:57:03 · linked to pve3
Container nested under parent VM
18:57:03 · patroni → aros-pg-dev-3
SHOULDShow discovery as deltas over time, not just a current snapshot. An operator's question is usually "what changed?" — answer it without a diff in their head.
3.7 · Patterns

Notification pattern

Raw events are noisy. Aros dedups, correlates, and assigns severity before anything reaches a human or ntfy.

Event
Dedup
Correlate
Dispatch
P1 · Quorum lost
pve3 unreachable · correlated with 4 child alerts (suppressed)
P3 · MinIO read-only risk
dual-VM host · deduped ×3 in 5 min
MUSTSuppress correlated child alerts under their root cause. Paging an operator four times for one failed host trains them to ignore the pager.
3.8 · Patterns

Forms

Single column, labels above fields, related fields grouped, primary action bottom-right.

Enable object lock
SHOULDKeep forms single-column. Multi-column forms scatter the eye and break the top-to-bottom reading order; the only exception is short, obviously-paired fields (city / postcode).
MUSTPlace the primary action bottom-right, secondary to its left, separated from the fields by a divider. Destructive actions sit far from the primary.
3.9 · Patterns

Empty & error pages

Page-level versions of the component states — centred, calm, always with a way forward.

Nothing to observe yet

Connect a host to begin discovery. Aros will populate the estate automatically.

MUSTA page-level empty or error state stays on-brand and calm — obsidian, one glyph, one action. No full-bleed red, no apologetic paragraphs, no dead ends.
End of Volume III

Next: Content & voice

Screens are built. Volume IV — Content & voice → governs the words inside them.

Copied