ACE Spec 0.9
GNOMON Field: Reactive Aesthetics + Drift Feedback
Purpose
Make calibration non-manual: the interface continuously expresses alignment state through subtle, reversible visual behavior (“shadow feedback”), without punishing or confusing first-time users.
Non-Goals
No horror/glitch aesthetics.
No accessibility violations (no unreadable text, no seizure-risk motion).
No “shaming” UI. Distortion signals state, not judgment.
1) State Model
AlignmentState (ordered):
NORTH_LOCKED (ideal)
NORTH_STABLE (good)
DRIFT_LOW (minor deviation)
DRIFT_MED (admissibility at risk)
DRIFT_HIGH (must correct before advancing)
BASECELL_HOLD (quarantine/arbitration holding state)
DriftScore: float 0.0–1.0
ShadowLength: derived scalar 0–100 (presentation only)
Mapping (example):
0.00–0.10 → NORTH_LOCKED
0.10–0.25 → NORTH_STABLE
0.25–0.45 → DRIFT_LOW
0.45–0.70 → DRIFT_MED
0.70–0.90 → DRIFT_HIGH
0.90–1.00 → BASECELL_HOLD
2) Visual Channels (Allowed Distortions)
Use at most 3 channels at once. The system should feel “calibrating,” not “breaking.”
Channel A — Focus Fidelity (primary)
NORTH: crisp edges, stable text rendering.
DRIFT: introduce micro-softening on non-text surfaces only (backgrounds, frames, images).
Never blur body text; instead adjust surrounding elements.
Implementation primitives:
background image blur radius (0 → small)
overlay diffusion / slight haze on panels
border crispness (stroke width jitter = 0 when aligned)
Channel B — Shadow Geometry (signature)
Shadow length and angle represent drift.
NORTH: shadows short, vertical/orthogonal, consistent across components.
DRIFT: shadows lengthen + skew slightly; inconsistency increases with score.
Rules:
Shadow angle deviation max: ±7° at DRIFT_HIGH
Shadow length multiplier: 1.0 → 1.8 across drift range
In BASECELL_HOLD: shadows “detach” subtly (offset increases), but still clean
Channel C — Contrast / Luminance (secondary)
NORTH: high-contrast readable.
DRIFT: reduce contrast slightly in non-critical areas (decor, secondary panels).
Keep WCAG contrast for text and controls.
3) Distortion Targets (What Can Change)
Allowed:
background layers
image frames
decorative glyphs
ambient light overlays
card/container shadows
Protected (never distort):
body text
form inputs
primary navigation labels
legal/transactional confirmations
error messages
4) Transition Behavior (How It Moves)
Changes must be slow: 250–600ms easing
No sudden pops.
Use hysteresis so state doesn’t oscillate around thresholds.
Hysteresis example:
must cross threshold by +0.03 to worsen
must improve by -0.05 to recover
5) Cross-Domain Consistency
Each domain expresses drift differently, but must share:
same DriftScore semantics
same protected elements
same state labels internally
Domain accents:
Micro: precision cues (grid alignment, stroke crispness)
Basis/Loom: tension cues (warp/spacing regularity)
Semaphore: pulse coherence (timing regularity, not flashing)
Sombra: admissibility cues (threshold/doorway clarity)
Mercantile: settlement cues (ledger “snap” and invariants)
6) Admissibility Integration (Sombra)
Gate rule: links to higher complexity render but do not activate unless admissible.
Avoid “invisible links” (feels broken). Use “uninstantiated” presentation:
show destination card in a muted “latent” state
on hover: “Requires North-stable alignment”
click: routes to correction surface (Basis/Semaphore) or BASECELL_HOLD explainer
7) BASECELL_HOLD Presentation
BASECELL is not punishment. It is safe harbor.
Visual signature:
maximum stability (no motion)
clean monochrome plane
explicit message: “State held for correction. Nothing is lost.”
8) Telemetry (Minimal, Constitutional)
Log only:
DriftScore time series (coarse)
AlignmentState transitions
phase completion markers
No content logging of user text by default. (If later needed, treat as opt-in.)
9) “Shadow Feedback” Reference Table (Design Tokens)