The DAP Experience Layer — design depth

Date: 2026-06-09 Status: Design companion / direction-setting. Not a build spec. Feeds the §8 item-8 backlog item of the parent assessment. Audience: Operator (Mark), platform architects, anyone building the operator-facing surface of a long-running process. Parent: 2026-06-09-long-running-agentic-process-architecture.md — the parent establishes that the experience layer must be generalized (§3.2, §5 criteria 13–17, §6 layer 6, §8 item 8). This companion is how, grounded in the HCI literature and current agent-product practice (citations in §10). Scope: The UX design of “layer 6” — the operator-facing surface that renders the durable process of Decision A and feeds its HITL gates. Decisions A (orchestration) and B (model economics) are in the parent.


0. The thesis, stated once

The hard problem of a long-running autonomous process is not the progress bar. It is the human’s trust, attention, and situational awareness when they supervise something that runs for hours-to-days and only enters their attention at a gate. Get the engine of Decision A perfect and you can still ship a process that is ignored (notification fatigue) or babysat (defeating the autonomy you built). The experience layer is where the durable engine becomes either an asset or a liability for a non-technical operator who makes decisions but does not run the system (never-ask-user-to-run-commands).

The literature converges on one architecture: ambient by default, interrupt by exception, with honest uncertainty, and the human kept in the loop at the gate even though they were out of it during the run. The nine subsections below are that architecture; §8 is the concrete state→affordance spec; §9 is what to instrument so we know it works.

A reframe worth holding throughout: DPF already built ~80% of the mechanics (ProcessGraph, TruthSourceBadge, DecisionPerspectiveGatePanel, StallEventHistoryStrip, agent-event-bus, a notifications API — parent §3.2). What is missing is not widgets. It is the policy that decides what reaches the operator, when, at what altitude, and with what context — and the generalization of those widgets off FeatureBuild onto a kind-agnostic run.


1. Core reframe — ambient by default, interrupt by exception

Calm Technology (Weiser & Brown 1996; Case 2015) gives the spatial model: status lives in the periphery (what we are attuned to without attending — the engine-noise-while-driving example), and a thing moves to the center of attention only when it genuinely needs us, then recedes.

This sharpens parent criterion 15 (“notify, don’t poll”) into a two-sided contract:

DPF already has the ambient half (quiet-agent watchdog, ProcessGraph, truth-source badges). It is missing the escalation half — the notification transport is wired only for self-upgrade (parent §3.2). Building that half is not “add notifications”; it is “add notifications governed by §3’s policy,” or it becomes the alarm-fatigue failure below.


2. The supervisor is structurally out-of-the-loop — design the gate for awareness and calibrated trust

This is the subsection that most changes how the gate should look.

The out-of-the-loop problem is structural, not a UX nicety. Bainbridge’s Ironies of Automation (1983): humans are poor at passively monitoring a reliable automated system for rare failures, yet are asked to take over at precisely the hardest moments — and the skills to do so atrophy from disuse. An operator who checks in only at gates has near-zero retained context by design. So a bare “Approve?” is the wrong gate: it asks the least-informed person to make the most consequential call.

The gate must rebuild situational awareness across Endsley’s (1995) three levels:

SA level The gate must answer DPF substrate today Gap
L1 — Perception What is the decision; what is the current state DecisionPerspectiveGatePanel, ProcessGraph mostly present
L2 — Comprehension How this fits the run’s goal; what changed since you last looked UnifiedEvidenceTimeline (raw) needs a digest, not a replay (§6)
L3 — Projection What approving vs. rejecting will cause downstream (blast radius) explain_blast_radius exists as a tool not surfaced at the gate

This maps almost one-to-one onto Microsoft’s HAX guidelines (Amershi et al., CHI 2019): G11 make clear why; G16 convey the consequences of the user’s action; G1/G2 make clear what the system can do and how well; G10 scope/escalate when in doubt; G9 make correction efficient; G17 global controls (pause/abort); G18 notify about changes between check-ins.

Calibrated trust is the other half of the same gate. Lee & See (2004): the goal is appropriate reliance — trust calibrated to the system’s true competence — not maximal trust. Parasuraman & Riley (1997): the two failure modes are over-trust → complacency (the operator rubber-stamps) and false-alarm-driven disuse (the operator stops reading the gate). Two design moves keep trust calibrated:

  1. Show per-task-type reliability, not a generic “AI confidence.” The WWMD outcome (recommend / arbitrate / escalate / defer) + confidence already produces this; surface it at the gate with a track record (“design-review has caught N issues in the last M builds”). Generic confidence scores train complacency; competence-specific signals train calibration.
  2. Keep the cost of intervening below the cost of doing it yourself (Apple HIG for ML; Google PAIR “Feedback + Control”). If correcting the agent is harder than doing the work, the operator disengages. Approve / reject / correct must be one click; the plan must be editable in place (§5).

This is the operational meaning of the kernel’s governance approves evidence, not provenance: the gate ratifies evidence quality, and the UX’s whole job is to make that quality legible to a non-technical decider.


3. Attention economics — a notification policy, not a notification feed

The strongest evidence base in the entire review is alarm fatigue. In clinical monitoring, 72–99% of alarms are false or non-actionable; the documented result is clinician desensitization, missed actionable alarms, and patient deaths (AHRQ Making Healthcare Safer III; Sendelbach & Funk 2013; The Joint Commission made it a National Patient Safety Goal in 2014). The lesson transfers exactly: a platform that fires one alert per process per event will train a non-technical operator to ignore all of them — including the deploy approval and the financial sign-off that actually matter. Over-notifying is not “keeping the operator informed”; it actively destroys their response to the critical moment.

So the notification transport (§1, parent §8 item 8) must ship with a policy, not just a channel:

This is precisely the design behind the parent’s HitlNotificationEvent.riskClass field — riskClass is the IRC channel-selector, not a label. Wire it that way: riskClass determines push-vs-ambient and modal-vs-inbox, deterministically.

Integrity note for anyone citing this: the popular “it takes 23 minutes to recover from an interruption” figure has no peer-reviewed source (it traces to a 2006 interview). Cite the resumption-lag concept (Mark et al. 2008), not that number.


4. Progressive disclosure is the organizing principle

The experience layer renders a six-layer process (parent §6) to a non-technical operator. Progressive disclosure (Nielsen 2006) is the canonical resolution and should be named as the layer’s governing pattern: “initially show only the few most important options; offer the larger specialized set on request.” Its documented benefits — better learnability, lower error rate, and efficiency for experts — are exactly what a multi-layer process surface needs.

Concretely: surface only the decision and its rationale; defer the engine internals (the step journal, tool traces, intermediate artifacts, raw stdout/stderr) behind an on-demand drill-down. This is already the altitude split in parent criterion 16 (operator’s altitude vs. the engine’s step), and the substrate already embodies it (ProcessGraph node → inspector → raw dispatch; BuildDispatchHistoryCard shows the classified root cause first and tucks raw output behind a disclosure). The work is to make it the explicit, enforced pattern for every kind, because it simultaneously simplifies the operator’s view and preserves the expert override path — and it is the platform’s own design DNA.


5. The cross-process inbox is the real new information architecture

This is the single most important new surface the DAP generalization creates, and the parent only gestures at it (“cross-process inbox”).

Once build + campaign + close are all DAPs, the operator no longer supervises a process — they supervise N concurrent long-running processes, each occasionally needing them. The primary question stops being “how is this build doing?” and becomes “across everything running, what needs me right now?” That is a portfolio/triage problem, and current practice has converged on one answer: the inbox-of-interrupts.

A trap to design around, verified in the wild: Claude Code today fires the same notification for “an agent needs my input” and “all background work is idle” — it cannot disambiguate them (open issue #45781, requesting a distinct BackgroundTasksIdle event). For a multi-process operator this is the difference between “act now” and “nothing to do.” The HitlNotificationEvent must distinguish a blocking elicitation from a completion from an idle-fleet state. Bake the distinction in from day one.


6. Re-entry is a digest, not a replay; review is by evidence, not diff

Returning. When the operator comes back after hours, do not replay the activity stream. Context-aware computing (Dey & Abowd) and the returning-user digest pattern say: present a ranked “what changed / what needs you” summary — decision-first, importance-ordered, not chronological. The agent-event-bus + UnifiedEvidenceTimeline already hold the raw material; the missing piece is a summary projection — the same compaction discipline the parent cites for context engineering (§2.3), turned toward the human instead of the model. The re-entry digest is the agent’s model of “what you need to know to decide,” and it is what populates L2 (“what changed since you last looked”) at the gate (§2).

Reviewing. For the consequential terminal gate (ship / publish / sign-off), the review cost is the bottleneck on long runs. Current practice has moved from “read the diff” to evidence-first review — Cursor attaches video demos, screenshots, and logs (“demos over diffs”); Codex surfaces test results; Devin Review restructures large PRs into explained diffs. The human is shown evidence the change works, not merely what changed. DPF already has every piece — scoped verification, preview URLs, the dynamic-analysis report — and the platform already holds the principle that dynamic analysis is the evidence, not screenshots (structural-verification-is-not-functional). The experience layer should compose these into an evidence-first review surface at the gate, so approving is reviewing the behavior, not auditing a patch.


7. Adopt a shared vocabulary (and the accountability model)

Every DAP should narrate the same way, so the operator learns one language across build, campaign, and close. Standardize on Linear’s Agent Interaction model, which is the most mature formal vocabulary shipping:

Borrow the Agent Experience (AX) design language as scaffolding (Biilmann 2025; Nudelman, Secrets of Agentic UX, 2025): Autonomy Dial (how much to ask), Intent Preview (the editable plan), Action Audit (the timeline), Escalation Pathway (the inbox interrupt), Asynchronous Feedback Loop, and Graduated Evidence Presentation (≈ progressive disclosure, §4).

Keep Linear’s delegate-not-assignee accountability model: the operator stays the named owner; the agent acts on their behalf, never as the owner. This is the UX encoding of the kernel’s Propose → Acknowledge → Reassign principle — the human’s ownership is a visible, persistent fact in the UI, not an implicit assumption.


8. State → affordance map (the spec layer 6 must satisfy, for every kind)

The contract: each cross-domain status renders the same way regardless of kind, with the domain phase shown inside it. Channel column follows the §3 policy.

Status What the operator sees Channel Affordances
working ambient phase chip + side-rail progress; indeterminate but milestone-labeled (“Step 4 of ~7: analyzing scrape”) — never a fake % periphery only open · pause · abort (G17)
awaiting-input (elicitation) inbox item: the ask + L1/L2/L3 context (decision, what-changed, blast radius) + proposed action + competence signal push, riskClass-gated accept · edit-plan · respond · escalate · defer
error inbox item: what happened in plain language + what it cost + what-now; raw trace behind disclosure (§4) push iff blocking retry · abandon · escalate · edit-plan
stale inbox item: “quiet N min; last action was X” with deep-link to that action push after threshold resume · abandon · investigate
complete re-entry digest: what was done + evidence (demo/tests/preview) + the consequential gate push review-by-evidence · ship/publish/sign-off · reject

Honest-progress rule (Maister 1985; NN/g): perceived wait is driven by uncertainty and unexplained delay, not clock time. For the working state, reduce uncertainty, not just elapsed time — occupy the wait (show what the agent is doing now), explain it (phase name), and when the ETA is genuinely unknown show an indeterminate, informative state, never a fabricated countdown. A dishonest progress bar costs trust the first time it’s wrong (§2).


9. What to measure (UX acceptance criteria)

Do not ship the experience layer without instrumenting whether it actually calibrates attention and trust. Each metric ties to a failure mode above:

Metric Detects Healthy direction
Time-to-decision at gates (notify → operator acts) re-entry cost; out-of-the-loop (§2, §6) down over time
Gate dwell / read-rate (did they open the evidence before deciding?) complacency / rubber-stamping (§2) not near-zero
Notification precision = acted-on ÷ sent alarm fatigue (§3) high; alert if it falls
Override / correction rate + direction trust calibration (over- vs under-trust, §2) stable, low-but-nonzero
“Appeared dead” incidents (process running, operator believed it stalled) the visibility failure (§1) → zero
Re-entry digest sufficiency (did the operator drill past the digest to decide?) digest quality (§6) digest usually sufficient

These are also the eval signals the parent’s §8 item-7 (observability) should carry, so the experience layer is replayable and improvable like any other DAP surface.


10. References (verified 2026-06-09; UX/HCI — complements the parent §10)

Trust in automation / calibration

Situational awareness / out-of-the-loop

Human–AI interaction guidelines (industry)

Interruption science / attention management

Alarm / notification fatigue

Calm / ambient technology

Waiting psychology / progress

Progressive disclosure

Re-entry / context restoration

Agent-supervision product practice (2025–2026)


Design companion to the parent assessment. Nothing here authorizes feature code; it scopes the §8 item-8 backlog item — filed as BI-BC8F667E (epic EP-COWORKER-INTERACTIVITY, status: triaging) — the generalized, kind-agnostic experience layer + cross-process inbox + notification policy, and the UX acceptance criteria it must meet.